diff --git a/.github/workflows/platform-tests-vercel.yml b/.github/workflows/platform-tests-vercel.yml index a0a4d0c4a826..13411077f5d0 100644 --- a/.github/workflows/platform-tests-vercel.yml +++ b/.github/workflows/platform-tests-vercel.yml @@ -28,9 +28,10 @@ jobs: timeout-minutes: 15 environment: '@sveltejs/adapter-vercel platform tests' steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: ref: ${{ inputs.sha || github.sha }} + persist-credentials: false - uses: ./.github/actions/vercel-deploy id: deploy @@ -43,3 +44,26 @@ jobs: with: test-app-dir: packages/adapter-vercel/test/apps/basic deployment-url: ${{ steps.deploy.outputs.deployment-url }} + + test-split: + if: github.repository == 'sveltejs/kit' + runs-on: ubuntu-latest + timeout-minutes: 15 + environment: '@sveltejs/adapter-vercel platform tests' + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: ${{ inputs.sha || github.sha }} + persist-credentials: false + + - uses: ./.github/actions/vercel-deploy + id: deploy + with: + vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID_SPLIT }} + vercel-token: ${{ secrets.VERCEL_TOKEN }} + vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} + + - uses: ./.github/actions/platform-test + with: + test-app-dir: packages/adapter-vercel/test/apps/split + deployment-url: ${{ steps.deploy.outputs.deployment-url }} diff --git a/packages/adapter-vercel/test/apps/split/package.json b/packages/adapter-vercel/test/apps/split/package.json new file mode 100644 index 000000000000..130925759762 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/package.json @@ -0,0 +1,20 @@ +{ + "name": "test-vercel-split", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "preview": "vite preview", + "build": "vite build", + "prepare": "svelte-kit sync || echo ''", + "test:platform": "playwright test" + }, + "devDependencies": { + "@sveltejs/kit": "workspace:*", + "@sveltejs/vite-plugin-svelte": "catalog:", + "svelte": "catalog:", + "typescript": "catalog:", + "vite": "catalog:" + }, + "type": "module" +} diff --git a/packages/adapter-vercel/test/apps/split/playwright.config.js b/packages/adapter-vercel/test/apps/split/playwright.config.js new file mode 100644 index 000000000000..33d36b651014 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/playwright.config.js @@ -0,0 +1 @@ +export { config as default } from '../../utils.js'; diff --git a/packages/adapter-vercel/test/apps/split/src/app.d.ts b/packages/adapter-vercel/test/apps/split/src/app.d.ts new file mode 100644 index 000000000000..da08e6da592d --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/packages/adapter-vercel/test/apps/split/src/app.html b/packages/adapter-vercel/test/apps/split/src/app.html new file mode 100644 index 000000000000..f273cc58f7eb --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/app.html @@ -0,0 +1,11 @@ + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte new file mode 100644 index 000000000000..a54cfdcb7efa --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + +{@render children()} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte new file mode 100644 index 000000000000..57d50b6f11b3 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte @@ -0,0 +1,5 @@ +

Hello from SvelteKit on Vercel

+ + diff --git a/packages/adapter-vercel/test/apps/split/src/routes/a/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/a/+page.svelte new file mode 100644 index 000000000000..445d9a0d621b --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/a/+page.svelte @@ -0,0 +1 @@ +

This route will be served by a different function because we use the split config

diff --git a/packages/adapter-vercel/test/apps/split/test/test.ts b/packages/adapter-vercel/test/apps/split/test/test.ts new file mode 100644 index 000000000000..95250e9e1d71 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/test/test.ts @@ -0,0 +1,8 @@ +import { expect, test } from '@playwright/test'; + +test('split functions work', async ({ page }) => { + await page.goto('/'); + await expect(page.locator('h1')).toContainText('Hello from SvelteKit on Vercel'); + await page.goto('/a'); + await expect(page.locator('p')).toContainText(/split config/); +}); diff --git a/packages/adapter-vercel/test/apps/split/tsconfig.json b/packages/adapter-vercel/test/apps/split/tsconfig.json new file mode 100644 index 000000000000..619fe2dd9d72 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "$app/tsconfig", + "compilerOptions": { + "rewriteRelativeImportExtensions": true, + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "moduleResolution": "bundler" + }, + "include": ["src", "test", "playwright.config.js", "vite.config.ts"] +} diff --git a/packages/adapter-vercel/test/apps/split/vite.config.ts b/packages/adapter-vercel/test/apps/split/vite.config.ts new file mode 100644 index 000000000000..0b40b6378475 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/vite.config.ts @@ -0,0 +1,13 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; +import adapter from '../../../index.js'; + +export default defineConfig({ + plugins: [ + sveltekit({ + adapter: adapter({ + split: true + }) + }) + ] +}); diff --git a/packages/kit/src/exports/env/index.js b/packages/kit/src/exports/env/index.js index 1f3e591e4b20..04e3ea2e0792 100644 --- a/packages/kit/src/exports/env/index.js +++ b/packages/kit/src/exports/env/index.js @@ -1,9 +1,7 @@ -/** @import { EnvVarConfig } from '@sveltejs/kit' */ - /** * Utility for defining [environment variables](https://svelte.dev/docs/kit/environment-variables), * which are made available via `$app/env/public` and `$app/env/private`. - * @template {Record>} T + * @template {Record>} T * @param {T} variables * @returns {T} */ diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 23f2d730e9b6..34252a7e66d0 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -3026,7 +3026,7 @@ declare module '@sveltejs/kit' { }>; export const VERSION: string; class HttpError_1 { - + constructor(status: number, body: { message: string; } extends App.Error ? (App.Error | string | undefined) : App.Error); @@ -3035,7 +3035,7 @@ declare module '@sveltejs/kit' { toString(): string; } class Redirect_1 { - + constructor(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, location: string); status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308; location: string; @@ -3046,12 +3046,11 @@ declare module '@sveltejs/kit' { } declare module '@sveltejs/kit/env' { - import type { EnvVarConfig } from '@sveltejs/kit'; /** * Utility for defining [environment variables](https://svelte.dev/docs/kit/environment-variables), * which are made available via `$app/env/public` and `$app/env/private`. * */ - export function defineEnvVars>>(variables: T): T; + export function defineEnvVars>>(variables: T): T; export {}; } @@ -3668,9 +3667,9 @@ declare module '$app/server' { * * */ function live(fn: (arg: void) => RemoteLiveQueryUserFunctionReturnType): RemoteLiveQueryFunction; - + function live(validate: "unchecked", fn: (arg: Input) => RemoteLiveQueryUserFunctionReturnType): RemoteLiveQueryFunction; - + function live(schema: Schema, fn: (arg: StandardSchemaV1.InferOutput) => RemoteLiveQueryUserFunctionReturnType): RemoteLiveQueryFunction, Output, StandardSchemaV1.InferOutput>; } /** @@ -3837,11 +3836,11 @@ declare module '$app/state' { declare module '$app/stores' { export function getStores(): { - + page: typeof page; - + navigating: typeof navigating; - + updated: typeof updated; }; /** @@ -4025,4 +4024,4 @@ declare module '$app/types' { export type Asset = ReturnType; } -//# sourceMappingURL=index.d.ts.map +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afae32924842..bd8e015f1da0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -475,6 +475,24 @@ importers: specifier: 'catalog:' version: 6.4.3(@types/node@18.19.130)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.9.0) + packages/adapter-vercel/test/apps/split: + devDependencies: + '@sveltejs/kit': + specifier: workspace:* + version: link:../../../../kit + '@sveltejs/vite-plugin-svelte': + specifier: 'catalog:' + version: 6.2.4(svelte@5.56.3(@typescript-eslint/types@8.61.1))(vite@6.4.3(@types/node@18.19.130)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.9.0)) + svelte: + specifier: 'catalog:' + version: 5.56.3(@typescript-eslint/types@8.61.1) + typescript: + specifier: 'catalog:' + version: 6.0.2 + vite: + specifier: 'catalog:' + version: 6.4.3(@types/node@18.19.130)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.9.0) + packages/amp: devDependencies: '@sveltejs/kit':