Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions packages/plugin-rsc/e2e/source-map.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,59 @@
})
})

test.describe('source map build', () => {
const f = useFixture({
root: 'examples/source-map',
mode: 'build',
buildCommand: 'pnpm build --sourcemap',
})

test('omits Server Reference sources on /server-reference-from-client', async ({
page,
}) => {
await page.goto(f.url('/server-reference-from-client'))
await waitForHydration(page)

const sources = await loadClientSources(page)
const clientSource = [...sources].find(([source]) =>
source.endsWith('/server-reference-from-client/client.tsx'),
)?.[1]
expect(clientSource).toContain('clientImportedAction')
const serverSources = [...sources]
.filter(([, content]) => content?.includes('use server'))
.map(([source]) => source)
expect(serverSources).toEqual([])

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium) (react-canary)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

2) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium) (react-canary)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

2) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium) (react-canary)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

2) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium) (react-experimental)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium) (react-experimental)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / chromium) (react-experimental)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (macos-latest / chromium)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /Users/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (macos-latest / chromium)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /Users/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (macos-latest / chromium)

[chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [chromium] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /Users/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / firefox)

[firefox] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [firefox] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / firefox)

[firefox] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [firefox] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (ubuntu-latest / firefox)

[firefox] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [firefox] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /home/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (macos-latest / webkit)

[webkit] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [webkit] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /Users/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (macos-latest / webkit)

[webkit] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [webkit] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /Users/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27

Check failure on line 246 in packages/plugin-rsc/e2e/source-map.test.ts

View workflow job for this annotation

GitHub Actions / test-rsc (macos-latest / webkit)

[webkit] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client

1) [webkit] › e2e/source-map.test.ts:232:3 › source map build › omits Server Reference sources on /server-reference-from-client Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "../../../src/features/server-reference-from-client/action.ts", + ] 244 | .filter(([, content]) => content?.includes('use server')) 245 | .map(([source]) => source) > 246 | expect(serverSources).toEqual([]) | ^ 247 | }) 248 | }) 249 | at /Users/runner/work/vite-plugin-react/vite-plugin-react/packages/plugin-rsc/e2e/source-map.test.ts:246:27
})
})

// Collect `sourcesContent` from the source maps of every script the page loaded.
async function loadClientSources(page: Page) {
const scriptURLs = await page.evaluate(() =>
performance
.getEntriesByType('resource')
.map((entry) => entry.name)
.filter((url) => new URL(url).pathname.endsWith('.js')),
)
const sources = new Map<string, string | null>()
for (const scriptURL of scriptURLs) {
const script = await page.request.get(scriptURL)
const sourceMappingURL = /\/\/# sourceMappingURL=(\S+)\s*$/.exec(
await script.text(),
)?.[1]
if (!sourceMappingURL) continue
const response = await page.request.get(
new URL(sourceMappingURL, scriptURL).href,
)
expect(response.ok()).toBe(true)
const payload = (await response.json()) as Partial<SourceMapPayload>
payload.sources!.forEach((source, i) => {
sources.set(source, payload.sourcesContent?.[i] ?? null)
})
}
expect(sources.size).toBeGreaterThan(0)
return sources
}

async function createFunctionSourceMapResolver(page: Page, baseURL: string) {
const session = await page.context().newCDPSession(page)
const scripts = new Map<string, { sourceMapURL?: string }>()
Expand Down
9 changes: 8 additions & 1 deletion packages/plugin-rsc/src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2156,7 +2156,14 @@ function vitePluginUseServer(
)
return {
code: output.toString(),
map: output.generateMap({ hires: 'boundary' }),
// The proxy must not map back to the server module in browser
// builds, or its source ships in the client sourcemap's
// `sourcesContent`.
map:
this.environment.mode === 'build' &&
this.environment.name === browserEnvironmentName
? { mappings: '' }
: output.generateMap({ hires: 'boundary' }),
}
}
},
Expand Down
Loading