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% + + +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