From 44120037c746188c34c27a9c8fb5508a65fe547e Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Thu, 30 Jul 2026 14:57:50 +0900 Subject: [PATCH 01/23] feat(rsc): add module export transform Co-authored-by: OpenCode --- packages/plugin-rsc/src/transforms/index.ts | 1 + .../src/transforms/module-export.test.ts | 144 +++++++ .../src/transforms/module-export.ts | 377 ++++++++++++++++++ 3 files changed, 522 insertions(+) create mode 100644 packages/plugin-rsc/src/transforms/module-export.test.ts create mode 100644 packages/plugin-rsc/src/transforms/module-export.ts diff --git a/packages/plugin-rsc/src/transforms/index.ts b/packages/plugin-rsc/src/transforms/index.ts index b37480dae..1f1520681 100644 --- a/packages/plugin-rsc/src/transforms/index.ts +++ b/packages/plugin-rsc/src/transforms/index.ts @@ -1,4 +1,5 @@ export * from './hoist' +export * from './module-export' export * from './wrap-export' export * from './proxy-export' export * from './utils' diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts new file mode 100644 index 000000000..0ac507881 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -0,0 +1,144 @@ +import { parseAstAsync } from 'vite' +import { describe, expect, test } from 'vitest' +import { + transformModuleExport, + type TransformModuleExportOptions, +} from './module-export' + +async function transform( + input: string, + options: Omit = {}, +) { + const ast = await parseAstAsync(input) + return transformModuleExport(input, ast, { + ...options, + generate: ({ implementation, binding, exportName }) => + `const ${binding} = wrap(${implementation}, ${JSON.stringify(exportName)});\n` + + `export { ${binding} as ${exportName} };`, + }) +} + +describe(transformModuleExport, () => { + test('extracts direct and default declarations', async () => { + const result = await transform(` +export async function action() {} +export const loader = async () => {}, value = 1 +export default async function Page() {} +`) + + expect(result.referenceNames).toEqual([ + 'action', + 'loader', + 'value', + 'default', + ]) + expect(result.output.toString()).toMatchInlineSnapshot(` + " + async function action$$impl() {} + const action = wrap(action$$impl, \"action\"); + export { action as action }; + + const loader$$impl = async () => {}, value$$impl = 1 + const loader = wrap(loader$$impl, \"loader\"); + export { loader as loader }; + const value = wrap(value$$impl, \"value\"); + export { value as value }; + + async function Page$$impl() {} + const Page = wrap(Page$$impl, \"default\"); + export { Page as default }; + + " + `) + }) + + test('handles aliases, re-exports, filtering, and name collisions', async () => { + const result = await transform( + ` +const value = async () => {} +const exposed = 0 +export { value as action, exposed as skipped } +export { remote as action2 } from './dep' +export * from './other' +`, + { + exportAll: 'preserve', + filter: (name) => name !== 'skipped', + }, + ) + + expect(result.referenceNames).toEqual(['action', 'action2']) + expect(result.output.toString()).toMatchInlineSnapshot(` + " + const value = async () => {} + const exposed = 0 + + const $$module_action = wrap(value, "action"); + export { $$module_action as action }; + export { exposed as skipped }; + + + import { remote as $$import_remote } from './dep'; + const $$module_action2 = wrap($$import_remote, "action2"); + export { $$module_action2 as action2 }; + + export * from './other' + " + `) + }) + + test('reports metadata and preserves filtered declarations', async () => { + const contexts: unknown[] = [] + const input = `export const Page = () => {}, value = 1; export default Page;` + const ast = await parseAstAsync(input) + const result = transformModuleExport(input, ast, { + filter: (_name, meta) => meta.isFunction !== false, + exportAll: 'preserve', + generate: (context) => { + contexts.push(context) + return `const ${context.binding} = wrap(${context.implementation}); export { ${context.binding} as ${context.exportName} };` + }, + }) + + expect(contexts).toEqual([ + { + implementation: 'Page$$impl', + binding: 'Page', + exportName: 'Page', + meta: { + localName: 'Page', + declarationKind: 'const', + isFunction: true, + }, + }, + { + implementation: 'Page', + binding: '$$default', + exportName: 'default', + meta: { + defaultExportIdentifierName: 'Page', + isFunction: undefined, + }, + }, + ]) + expect(result.output.toString()).toContain('value = 1;') + expect(result.output.toString()).toContain('export { value };') + }) + + test('validates selected exports and export-all policy', async () => { + await expect( + transform(`export function action() {}`, { + rejectNonAsyncFunction: true, + }), + ).rejects.toThrow('unsupported non async function') + await expect(transform(`export * from './dep'`)).rejects.toThrow( + 'unsupported ExportAllDeclaration', + ) + await expect(transform(`export const { action } = value`)).rejects.toThrow( + 'unsupported destructured export declaration', + ) + await expect( + transform(`export var action = async () => {}; var action;`), + ).rejects.toThrow('unsupported duplicate export binding') + }) +}) diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts new file mode 100644 index 000000000..fc70ff5d7 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -0,0 +1,377 @@ +import { tinyassert } from '@hiogawa/utils' +import type { + ExportDefaultDeclaration, + Identifier, + Node, + Program, + VariableDeclaration, +} from 'estree' +import MagicString from 'magic-string' +import type { ESTree } from 'vite' +import { buildScopeTree } from './scope' +import { extractIdentifiers, validateNonAsyncFunction } from './utils' + +export type ModuleExportMeta = { + localName?: string + declarationKind?: 'function' | 'class' | VariableDeclaration['kind'] + isFunction?: boolean + defaultExportIdentifierName?: string +} + +export type ModuleExportGenerateContext = { + implementation: string + binding: string + exportName: string + meta: ModuleExportMeta +} + +export type TransformModuleExportOptions = { + generate: (context: ModuleExportGenerateContext) => string + filter?: (name: string, meta: ModuleExportMeta) => boolean + rejectNonAsyncFunction?: boolean + exportAll?: 'error' | 'preserve' +} + +export function transformModuleExport( + input: string, + viteAst: ESTree.Program, + options: TransformModuleExportOptions, +): { + output: MagicString + referenceNames: string[] +} { + const ast = viteAst as unknown as Program + const output = new MagicString(input) + const referenceNames: string[] = [] + const emissions = new Map() + const filter = options.filter ?? (() => true) + const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) + const declarationCounts = getModuleDeclarationCounts(ast) + + function allocateName(base: string): string { + let name = base + for (let i = 2; usedNames.has(name); i++) { + name = `${base}_${i}` + } + usedNames.add(name) + return name + } + + function extractDeclaration( + identifier: Identifier, + exportName: string, + meta: ModuleExportMeta, + position: number, + ): void { + const localName = identifier.name + if (declarationCounts.get(localName) !== 1) { + throw Object.assign(new Error('unsupported duplicate export binding'), { + pos: identifier.start, + }) + } + const implementation = allocateName(`${localName}$$impl`) + output.update(identifier.start, identifier.end, implementation) + + // The source name is available for the generated canonical binding after + // its declaration is renamed to the private implementation. + usedNames.delete(localName) + const binding = allocateName(localName) + generate({ implementation, binding, exportName, meta }, position) + } + + function emit(position: number, code: string): void { + const codes = emissions.get(position) ?? [] + codes.push(code) + emissions.set(position, codes) + } + + function generate( + context: ModuleExportGenerateContext, + position: number, + ): void { + referenceNames.push(context.exportName) + emit(position, options.generate(context)) + } + + function preserveExport( + localName: string, + exportName: string, + position: number, + ): void { + emit( + position, + localName === exportName + ? `export { ${localName} };` + : `export { ${localName} as ${exportName} };`, + ) + } + + for (const node of ast.body) { + if (node.type === 'ExportNamedDeclaration') { + if (node.declaration) { + if ( + node.declaration.type === 'FunctionDeclaration' || + node.declaration.type === 'ClassDeclaration' + ) { + tinyassert(node.declaration.id) + const identifier = node.declaration.id + const meta: ModuleExportMeta = { + localName: identifier.name, + declarationKind: + node.declaration.type === 'FunctionDeclaration' + ? 'function' + : 'class', + isFunction: getIsFunction(node.declaration), + } + if (!filter(identifier.name, meta)) continue + + validateNonAsyncFunction(options, node.declaration) + output.remove(node.start, node.declaration.start) + extractDeclaration(identifier, identifier.name, meta, node.end) + } else if (node.declaration.type === 'VariableDeclaration') { + const variableDeclaration = node.declaration + const selected: Array<{ + identifier: Identifier + meta: ModuleExportMeta + }> = [] + const preserved: string[] = [] + + for (const declaration of node.declaration.declarations) { + const identifiers = extractIdentifiers(declaration.id) + if ( + declaration.id.type !== 'Identifier' && + identifiers.some((identifier) => + filter(identifier.name, { + localName: identifier.name, + declarationKind: variableDeclaration.kind, + }), + ) + ) { + throw Object.assign( + new Error('unsupported destructured export declaration'), + { pos: declaration.id.start }, + ) + } + const isFunction = + declaration.id.type === 'Identifier' && declaration.init + ? getIsFunction(declaration.init) + : undefined + let validate = false + for (const identifier of identifiers) { + const meta: ModuleExportMeta = { + localName: identifier.name, + declarationKind: variableDeclaration.kind, + isFunction, + } + if (filter(identifier.name, meta)) { + selected.push({ identifier, meta }) + validate = true + } else { + preserved.push(identifier.name) + } + } + if (validate && declaration.init) { + validateNonAsyncFunction(options, declaration.init) + } + } + + if (selected.length === 0) continue + output.remove(node.start, variableDeclaration.start) + for (const { identifier, meta } of selected) { + extractDeclaration(identifier, identifier.name, meta, node.end) + } + for (const name of preserved) preserveExport(name, name, node.end) + } else { + node.declaration satisfies never + } + } else if (node.specifiers.length > 0) { + const selected = node.specifiers.map((specifier) => { + tinyassert(specifier.local.type === 'Identifier') + if (specifier.exported.type !== 'Identifier') { + throw Object.assign( + new Error('unsupported string literal export name'), + { pos: specifier.exported.start }, + ) + } + const meta: ModuleExportMeta = {} + return { + localName: specifier.local.name, + exportName: specifier.exported.name, + meta, + selected: filter(specifier.exported.name, meta), + } + }) + if (!selected.some((item) => item.selected)) continue + + output.remove(node.start, node.end) + const sourceTail = node.source + ? input.slice(node.source.end, node.end).replace(/;?\s*$/, ';') + : undefined + for (const item of selected) { + if (!item.selected) { + if (node.source) { + emit( + node.end, + `export { ${item.localName} as ${item.exportName} } from ${node.source.raw}${sourceTail}`, + ) + } else { + preserveExport(item.localName, item.exportName, node.end) + } + continue + } + + let implementation = item.localName + if (node.source) { + implementation = allocateName(`$$import_${item.localName}`) + emit( + node.end, + `import { ${item.localName} as ${implementation} } from ${node.source.raw}${sourceTail}`, + ) + } + const binding = allocateName(`$$module_${item.exportName}`) + generate( + { + implementation, + binding, + exportName: item.exportName, + meta: item.meta, + }, + node.end, + ) + } + } + } else if (node.type === 'ExportAllDeclaration') { + if (options.exportAll !== 'preserve') { + throw Object.assign(new Error('unsupported ExportAllDeclaration'), { + pos: node.start, + }) + } + } else if (node.type === 'ExportDefaultDeclaration') { + let implementation: string + let bindingBase = '$$default' + let meta: ModuleExportMeta + + if ( + (node.declaration.type === 'FunctionDeclaration' || + node.declaration.type === 'ClassDeclaration') && + node.declaration.id + ) { + const identifier = node.declaration.id + meta = { + localName: identifier.name, + declarationKind: + node.declaration.type === 'FunctionDeclaration' + ? 'function' + : 'class', + isFunction: getIsFunction(node.declaration), + } + if (!filter('default', meta)) continue + + validateNonAsyncFunction(options, node.declaration) + output.remove(node.start, node.declaration.start) + if (declarationCounts.get(identifier.name) !== 1) { + throw Object.assign( + new Error('unsupported duplicate export binding'), + { + pos: identifier.start, + }, + ) + } + implementation = allocateName(`${identifier.name}$$impl`) + output.update(identifier.start, identifier.end, implementation) + usedNames.delete(identifier.name) + bindingBase = identifier.name + } else { + meta = { + defaultExportIdentifierName: + node.declaration.type === 'Identifier' + ? node.declaration.name + : undefined, + isFunction: getIsFunction(node.declaration), + } + if (!filter('default', meta)) continue + + validateNonAsyncFunction(options, node.declaration) + if (node.declaration.type === 'Identifier') { + implementation = node.declaration.name + output.remove(node.start, node.end) + } else { + implementation = allocateName('$$default$$impl') + output.update( + node.start, + node.declaration.start, + `const ${implementation} = `, + ) + } + } + + const binding = allocateName(bindingBase) + generate( + { implementation, binding, exportName: 'default', meta }, + node.end, + ) + } + } + + for (const [position, codes] of emissions) { + output.appendLeft(position, `\n${codes.join('\n')}\n`) + } + + return { output, referenceNames } +} + +function getModuleDeclarationCounts(ast: Program): Map { + const counts = new Map() + const add = (name: string) => counts.set(name, (counts.get(name) ?? 0) + 1) + + for (const statement of ast.body) { + if (statement.type === 'ImportDeclaration') { + for (const specifier of statement.specifiers) add(specifier.local.name) + continue + } + + const declaration = + statement.type === 'ExportNamedDeclaration' || + statement.type === 'ExportDefaultDeclaration' + ? statement.declaration + : statement + if (!declaration) continue + + if (declaration.type === 'VariableDeclaration') { + for (const declarator of declaration.declarations) { + for (const identifier of extractIdentifiers(declarator.id)) { + add(identifier.name) + } + } + } else if ( + (declaration.type === 'FunctionDeclaration' || + declaration.type === 'ClassDeclaration') && + declaration.id + ) { + add(declaration.id.name) + } + } + + return counts +} + +function getIsFunction( + node: Node | ExportDefaultDeclaration['declaration'], +): boolean | undefined { + if ( + node.type === 'FunctionDeclaration' || + node.type === 'ArrowFunctionExpression' || + node.type === 'FunctionExpression' + ) { + return true + } + if ( + node.type === 'ClassDeclaration' || + node.type === 'Literal' || + node.type === 'ObjectExpression' || + node.type === 'ArrayExpression' || + node.type === 'ClassExpression' + ) { + return false + } +} From e18a148cd0caf12327019e6bdaa7134b46157f50 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:06:54 +0900 Subject: [PATCH 02/23] refactor(rsc): migrate module export transforms Co-authored-by: OpenCode --- .../custom-server-function-plugin.ts | 15 ++- .../callable-cache-plugin.ts | 15 ++- packages/plugin-rsc/src/plugin.ts | 28 +++--- .../src/transforms/module-export.test.ts | 29 +++--- .../src/transforms/module-export.ts | 92 +++++++++++++++++-- .../src/transforms/server-action.test.ts | 3 + .../src/transforms/server-action.ts | 16 +++- .../plugin-rsc/src/transforms/waku.test.ts | 34 +++---- .../plugin-rsc/src/transforms/wrap-export.ts | 1 + 9 files changed, 172 insertions(+), 61 deletions(-) diff --git a/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts b/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts index 03a9510f6..8e8b5d4ee 100644 --- a/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts +++ b/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts @@ -3,7 +3,7 @@ import { hasDirective, transformDirectiveProxyExport, transformHoistInlineDirective, - transformWrapExport, + transformModuleExport, } from '@vitejs/plugin-rsc/transforms' import { parseAstAsync, type Plugin } from 'vite' @@ -37,9 +37,16 @@ export function customServerFunctionPlugin(): Plugin { const runtime = (value: string, name: string) => `$$CustomReactServer.registerServerReference(${value}, ${JSON.stringify(reference.referenceKey)}, ${JSON.stringify(name)})` const result = hasDirective(ast.body, directive) - ? transformWrapExport(code, ast, { - runtime, + ? transformModuleExport(code, ast, { rejectNonAsyncFunction: true, + generate: ({ implementation, binding, exportName }) => { + const declaration = + `const ${binding} = /* #__PURE__ */ ` + + `${runtime(implementation, exportName)};` + return binding === exportName + ? `export ${declaration}` + : `${declaration}\nexport { ${binding} as ${exportName} };` + }, }) : transformHoistInlineDirective(code, ast, { directive, @@ -53,7 +60,7 @@ export function customServerFunctionPlugin(): Plugin { manager.serverReferences.replaceClaim(pluginName, id, { ...reference, - exportNames: 'names' in result ? result.names : result.exportNames, + exportNames: 'names' in result ? result.names : result.referenceNames, }) result.output.prepend( `import * as $$CustomReactServer from "@vitejs/plugin-rsc/react/rsc/server";\n`, diff --git a/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts b/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts index f84717491..e249d80cd 100644 --- a/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts +++ b/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts @@ -3,7 +3,7 @@ import { hasDirective, transformDirectiveProxyExport, transformHoistInlineDirective, - transformWrapExport, + transformModuleExport, } from '@vitejs/plugin-rsc/transforms' import { parseAstAsync, type Plugin } from 'vite' @@ -35,9 +35,16 @@ export function callableCachePlugin(): Plugin { `${JSON.stringify(reference.referenceKey)},` + `${JSON.stringify(name)})` const result = hasDirective(ast.body, directive) - ? transformWrapExport(code, ast, { - runtime, + ? transformModuleExport(code, ast, { rejectNonAsyncFunction: true, + generate: ({ implementation, binding, exportName }) => { + const declaration = + `const ${binding} = /* #__PURE__ */ ` + + `${runtime(implementation, exportName)};` + return binding === exportName + ? `export ${declaration}` + : `${declaration}\nexport { ${binding} as ${exportName} };` + }, }) : transformHoistInlineDirective(code, ast, { directive, @@ -52,7 +59,7 @@ export function callableCachePlugin(): Plugin { manager.serverReferences.replaceClaim(pluginName, id, { ...reference, - exportNames: 'names' in result ? result.names : result.exportNames, + exportNames: 'names' in result ? result.names : result.referenceNames, }) result.output.prepend( `import $$cacheWrapper from "/src/framework/use-cache-runtime";\n` + diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 965e7eaaf..89202dc2c 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -70,12 +70,12 @@ import { slash, } from './plugins/vite-utils' import { - type TransformWrapExportFilter, + type ModuleExportMeta, hasDirective, transformDirectiveProxyExport, transformExpandExportAll, + transformModuleExport, transformServerActionServer, - transformWrapExport, findDirectives, type TransformExpandExportAllContext, } from './transforms' @@ -2430,7 +2430,7 @@ function vitePluginRscCss( }: { id: string code: string - }): false | TransformWrapExportFilter { + }): false | ((name: string, meta: ModuleExportMeta) => boolean) { const { filename, query } = parseIdQuery(id) if ('vite-rsc-css-export' in query) { const value = query['vite-rsc-css-export'] @@ -2462,7 +2462,7 @@ function vitePluginRscCss( // export const Page = () => {} return (_name: string, meta) => !!( - (meta.isFunction && meta.declName && /^[A-Z]/.test(meta.declName)) || + (meta.isFunction && meta.localName && /^[A-Z]/.test(meta.localName)) || (meta.defaultExportIdentifierName && /^[A-Z]/.test(meta.defaultExportIdentifierName)) ) @@ -2764,19 +2764,25 @@ export async function transformRscCssExport(options: { ast: Awaited> code: string id?: string - filter: TransformWrapExportFilter + filter: (name: string, meta: ModuleExportMeta) => boolean }): Promise<{ output: MagicString } | undefined> { if (hasDirective(options.ast.body, 'use client')) { return } - const result = transformWrapExport(options.code, options.ast, { - runtime: (value, name, meta) => - `__vite_rsc_wrap_css__(${value}, ${JSON.stringify( - meta.defaultExportIdentifierName ?? name, - )})`, + const result = transformModuleExport(options.code, options.ast, { + generate: ({ implementation, binding, exportName, meta }) => { + const declaration = + `const ${binding} = /* #__PURE__ */ ` + + `__vite_rsc_wrap_css__(${implementation}, ${JSON.stringify( + meta.defaultExportIdentifierName ?? exportName, + )});` + return binding === exportName + ? `export ${declaration}` + : `${declaration}\nexport { ${binding} as ${exportName} };` + }, filter: options.filter, - ignoreExportAllDeclaration: true, + exportAll: 'preserve', }) if (result.output.hasChanged()) { if (!options.code.includes('__vite_rsc_react__')) { diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts index 0ac507881..cd0cca8f2 100644 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -22,7 +22,7 @@ describe(transformModuleExport, () => { test('extracts direct and default declarations', async () => { const result = await transform(` export async function action() {} -export const loader = async () => {}, value = 1 +export const loader = async () => {} /* comma, here */, value = loader export default async function Page() {} `) @@ -35,17 +35,18 @@ export default async function Page() {} expect(result.output.toString()).toMatchInlineSnapshot(` " async function action$$impl() {} - const action = wrap(action$$impl, \"action\"); + const action = wrap(action$$impl, "action"); export { action as action }; - const loader$$impl = async () => {}, value$$impl = 1 - const loader = wrap(loader$$impl, \"loader\"); + const loader$$impl = async () => {} /* comma, here */; + const loader = wrap(loader$$impl, "loader"); export { loader as loader }; - const value = wrap(value$$impl, \"value\"); + const value$$impl = loader + const value = wrap(value$$impl, "value"); export { value as value }; async function Page$$impl() {} - const Page = wrap(Page$$impl, \"default\"); + const Page = wrap(Page$$impl, "default"); export { Page as default }; " @@ -55,9 +56,9 @@ export default async function Page() {} test('handles aliases, re-exports, filtering, and name collisions', async () => { const result = await transform( ` +export { value as action, exposed as skipped } const value = async () => {} const exposed = 0 -export { value as action, exposed as skipped } export { remote as action2 } from './dep' export * from './other' `, @@ -70,19 +71,20 @@ export * from './other' expect(result.referenceNames).toEqual(['action', 'action2']) expect(result.output.toString()).toMatchInlineSnapshot(` " - const value = async () => {} - const exposed = 0 - const $$module_action = wrap(value, "action"); - export { $$module_action as action }; export { exposed as skipped }; + const value = async () => {} + const exposed = 0 import { remote as $$import_remote } from './dep'; const $$module_action2 = wrap($$import_remote, "action2"); export { $$module_action2 as action2 }; export * from './other' + + const $$module_action = wrap(value, "action"); + export { $$module_action as action }; " `) }) @@ -139,6 +141,9 @@ export * from './other' ) await expect( transform(`export var action = async () => {}; var action;`), - ).rejects.toThrow('unsupported duplicate export binding') + ).rejects.toThrow('unsupported mutable export declaration') + await expect( + transform(`export let action = async () => {}`), + ).rejects.toThrow('unsupported mutable export declaration') }) }) diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index fc70ff5d7..4e99e5eef 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -130,13 +130,16 @@ export function transformModuleExport( extractDeclaration(identifier, identifier.name, meta, node.end) } else if (node.declaration.type === 'VariableDeclaration') { const variableDeclaration = node.declaration - const selected: Array<{ - identifier: Identifier - meta: ModuleExportMeta + const declarations: Array<{ + node: (typeof variableDeclaration.declarations)[number] + selected: Array<{ + identifier: Identifier + meta: ModuleExportMeta + }> + preserved: string[] }> = [] - const preserved: string[] = [] - for (const declaration of node.declaration.declarations) { + for (const declaration of variableDeclaration.declarations) { const identifiers = extractIdentifiers(declaration.id) if ( declaration.id.type !== 'Identifier' && @@ -156,6 +159,8 @@ export function transformModuleExport( declaration.id.type === 'Identifier' && declaration.init ? getIsFunction(declaration.init) : undefined + const selected: (typeof declarations)[number]['selected'] = [] + const preserved: string[] = [] let validate = false for (const identifier of identifiers) { const meta: ModuleExportMeta = { @@ -173,14 +178,54 @@ export function transformModuleExport( if (validate && declaration.init) { validateNonAsyncFunction(options, declaration.init) } + declarations.push({ + node: declaration, + selected, + preserved, + }) + } + + if ( + !declarations.some((declaration) => declaration.selected.length) + ) { + continue + } + if (variableDeclaration.kind !== 'const') { + throw Object.assign( + new Error('unsupported mutable export declaration'), + { pos: variableDeclaration.start }, + ) } - if (selected.length === 0) continue output.remove(node.start, variableDeclaration.start) - for (const { identifier, meta } of selected) { - extractDeclaration(identifier, identifier.name, meta, node.end) + for (const [index, declaration] of declarations.entries()) { + const position = + index === declarations.length - 1 + ? node.end + : declaration.node.end + for (const { identifier, meta } of declaration.selected) { + extractDeclaration(identifier, identifier.name, meta, position) + } + for (const name of declaration.preserved) { + preserveExport(name, name, position) + } + } + for (let i = 1; i < declarations.length; i++) { + const previous = declarations[i - 1]!.node + const current = declarations[i]!.node + const separator = input.slice(previous.end, current.start) + const comma = findSeparatorComma(separator) + const prefix = separator.slice(0, comma) + const rest = separator.slice(comma + 1) + const codes = emissions.get(previous.end) + tinyassert(codes) + emissions.delete(previous.end) + output.update( + previous.end, + current.start, + `${prefix};\n${codes.join('\n')}\n${variableDeclaration.kind}${/^\s/.test(rest) ? '' : ' '}${rest}`, + ) } - for (const name of preserved) preserveExport(name, name, node.end) } else { node.declaration satisfies never } @@ -221,6 +266,7 @@ export function transformModuleExport( } let implementation = item.localName + const position = node.source ? node.end : input.length if (node.source) { implementation = allocateName(`$$import_${item.localName}`) emit( @@ -236,7 +282,7 @@ export function transformModuleExport( exportName: item.exportName, meta: item.meta, }, - node.end, + position, ) } } @@ -320,6 +366,32 @@ export function transformModuleExport( return { output, referenceNames } } +function findSeparatorComma(separator: string): number { + let inLineComment = false + let inBlockComment = false + for (let i = 0; i < separator.length; i++) { + const char = separator[i] + const next = separator[i + 1] + if (inLineComment) { + if (char === '\n' || char === '\r') inLineComment = false + } else if (inBlockComment) { + if (char === '*' && next === '/') { + inBlockComment = false + i++ + } + } else if (char === '/' && next === '/') { + inLineComment = true + i++ + } else if (char === '/' && next === '*') { + inBlockComment = true + i++ + } else if (char === ',') { + return i + } + } + throw new Error('missing variable declarator separator') +} + function getModuleDeclarationCounts(ast: Program): Map { const counts = new Map() const add = (name: string) => counts.set(name, (counts.get(name) ?? 0) + 1) diff --git a/packages/plugin-rsc/src/transforms/server-action.test.ts b/packages/plugin-rsc/src/transforms/server-action.test.ts index ff6b343cb..4b7270619 100644 --- a/packages/plugin-rsc/src/transforms/server-action.test.ts +++ b/packages/plugin-rsc/src/transforms/server-action.test.ts @@ -18,6 +18,9 @@ test('normalizes top-level server reference names', async () => { exportNames: ['action'], referenceNames: ['action'], }) + expect(result.output.toString()).toMatchInlineSnapshot( + `"'use server'; async function action$$impl() {}\nexport const action = /* #__PURE__ */ action$$impl;\n"`, + ) }) test('normalizes inline server reference names', async () => { diff --git a/packages/plugin-rsc/src/transforms/server-action.ts b/packages/plugin-rsc/src/transforms/server-action.ts index ed3efe606..ae6518fe6 100644 --- a/packages/plugin-rsc/src/transforms/server-action.ts +++ b/packages/plugin-rsc/src/transforms/server-action.ts @@ -1,8 +1,8 @@ import type MagicString from 'magic-string' import type { ESTree } from 'vite' import { transformHoistInlineDirective } from './hoist' +import { transformModuleExport } from './module-export' import { hasDirective } from './utils' -import { transformWrapExport } from './wrap-export' export function transformServerActionServer( input: string, @@ -26,8 +26,18 @@ export function transformServerActionServer( } { // TODO: unify (generalize transformHoistInlineDirective to support top-level directive cases) if (hasDirective(ast.body, 'use server')) { - const result = transformWrapExport(input, ast, options) - return { ...result, referenceNames: result.exportNames } + const result = transformModuleExport(input, ast, { + rejectNonAsyncFunction: options.rejectNonAsyncFunction, + generate: ({ implementation, binding, exportName }) => { + const declaration = + `const ${binding} = /* #__PURE__ */ ` + + `${options.runtime(implementation, exportName)};` + return binding === exportName + ? `export ${declaration}` + : `${declaration}\nexport { ${binding} as ${exportName} };` + }, + }) + return { ...result, exportNames: result.referenceNames } } const result = transformHoistInlineDirective(input, ast, { ...options, diff --git a/packages/plugin-rsc/src/transforms/waku.test.ts b/packages/plugin-rsc/src/transforms/waku.test.ts index a89d6bbda..4e9cd3e63 100644 --- a/packages/plugin-rsc/src/transforms/waku.test.ts +++ b/packages/plugin-rsc/src/transforms/waku.test.ts @@ -169,24 +169,24 @@ export default async function() { const privateFunction = () => 'Secret'; - let log = async (mesg) => { + const log$$impl = async (mesg) => { console.log(mesg); }; + export const log = /* #__PURE__ */ $runtime(log$$impl, "", "log"); - async function greet(name) { + + async function greet$$impl(name) { return 'Hello ' + name; } + export const greet = /* #__PURE__ */ $runtime(greet$$impl, "", "greet"); + - const $$default = async function() { + const $$default$$impl = async function() { return Date.now(); } - log = /* #__PURE__ */ $runtime(log, "", "log"); - export { log }; - greet = /* #__PURE__ */ $runtime(greet, "", "greet"); - export { greet }; - ; - const $$wrap_$$default = /* #__PURE__ */ $runtime($$default, "", "default"); - export { $$wrap_$$default as default }; + const $$default = /* #__PURE__ */ $runtime($$default$$impl, "", "default"); + export { $$default as default }; + " `) }) @@ -260,17 +260,17 @@ export default async () => null; return innerAction.bind(null, action); } - async function exportedAction() { + async function exportedAction$$impl() { 'use server'; return null; } + export const exportedAction = /* #__PURE__ */ $runtime(exportedAction$$impl, "", "exportedAction"); + + + const $$default$$impl = async () => null; + const $$default = /* #__PURE__ */ $runtime($$default$$impl, "", "default"); + export { $$default as default }; - const $$default = async () => null; - exportedAction = /* #__PURE__ */ $runtime(exportedAction, "", "exportedAction"); - export { exportedAction }; - ; - const $$wrap_$$default = /* #__PURE__ */ $runtime($$default, "", "default"); - export { $$wrap_$$default as default }; " `) }) diff --git a/packages/plugin-rsc/src/transforms/wrap-export.ts b/packages/plugin-rsc/src/transforms/wrap-export.ts index 07f0f1c30..bad3c9ed5 100644 --- a/packages/plugin-rsc/src/transforms/wrap-export.ts +++ b/packages/plugin-rsc/src/transforms/wrap-export.ts @@ -49,6 +49,7 @@ export type TransformWrapExportOptions = { filter?: TransformWrapExportFilter } +/** @deprecated Use `transformModuleExport` instead. */ export function transformWrapExport( input: string, viteAst: ESTree.Program, From 63603519bc0062ccdf3c784a28971368ffccba53 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Thu, 30 Jul 2026 16:38:45 +0900 Subject: [PATCH 03/23] refactor(rsc): clarify module export transform types Co-authored-by: OpenCode --- packages/plugin-rsc/src/plugin.ts | 6 +- .../src/transforms/module-export.test.ts | 63 ++++++++++++------- .../src/transforms/module-export.ts | 39 +++++++----- 3 files changed, 65 insertions(+), 43 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 89202dc2c..beee21822 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -70,7 +70,7 @@ import { slash, } from './plugins/vite-utils' import { - type ModuleExportMeta, + type TransformModuleExportFilter, hasDirective, transformDirectiveProxyExport, transformExpandExportAll, @@ -2430,7 +2430,7 @@ function vitePluginRscCss( }: { id: string code: string - }): false | ((name: string, meta: ModuleExportMeta) => boolean) { + }): false | TransformModuleExportFilter { const { filename, query } = parseIdQuery(id) if ('vite-rsc-css-export' in query) { const value = query['vite-rsc-css-export'] @@ -2764,7 +2764,7 @@ export async function transformRscCssExport(options: { ast: Awaited> code: string id?: string - filter: (name: string, meta: ModuleExportMeta) => boolean + filter: TransformModuleExportFilter }): Promise<{ output: MagicString } | undefined> { if (hasDirective(options.ast.body, 'use client')) { return diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts index cd0cca8f2..9287919a6 100644 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -2,6 +2,7 @@ import { parseAstAsync } from 'vite' import { describe, expect, test } from 'vitest' import { transformModuleExport, + type TransformModuleExportGenerateContext, type TransformModuleExportOptions, } from './module-export' @@ -90,8 +91,9 @@ export * from './other' }) test('reports metadata and preserves filtered declarations', async () => { - const contexts: unknown[] = [] - const input = `export const Page = () => {}, value = 1; export default Page;` + const contexts: TransformModuleExportGenerateContext[] = [] + const input = `export const Page = () => {}, value = 1; +export default Page;` const ast = await parseAstAsync(input) const result = transformModuleExport(input, ast, { filter: (_name, meta) => meta.isFunction !== false, @@ -102,29 +104,42 @@ export * from './other' }, }) - expect(contexts).toEqual([ + expect({ + contexts, + output: result.output.toString(), + }).toMatchInlineSnapshot(` { - implementation: 'Page$$impl', - binding: 'Page', - exportName: 'Page', - meta: { - localName: 'Page', - declarationKind: 'const', - isFunction: true, - }, - }, - { - implementation: 'Page', - binding: '$$default', - exportName: 'default', - meta: { - defaultExportIdentifierName: 'Page', - isFunction: undefined, - }, - }, - ]) - expect(result.output.toString()).toContain('value = 1;') - expect(result.output.toString()).toContain('export { value };') + "contexts": [ + { + "binding": "Page", + "exportName": "Page", + "implementation": "Page$$impl", + "meta": { + "declarationKind": "const", + "isFunction": true, + "localName": "Page", + }, + }, + { + "binding": "$$default", + "exportName": "default", + "implementation": "Page", + "meta": { + "defaultExportIdentifierName": "Page", + "isFunction": undefined, + }, + }, + ], + "output": "const Page$$impl = () => {}; + const Page = wrap(Page$$impl); export { Page as Page }; + const value = 1; + export { value }; + + + const $$default = wrap(Page); export { $$default as default }; + ", + } + `) }) test('validates selected exports and export-all policy', async () => { diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index 4e99e5eef..6a2a72037 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -11,35 +11,42 @@ import type { ESTree } from 'vite' import { buildScopeTree } from './scope' import { extractIdentifiers, validateNonAsyncFunction } from './utils' -export type ModuleExportMeta = { +export type TransformModuleExportMeta = { localName?: string declarationKind?: 'function' | 'class' | VariableDeclaration['kind'] isFunction?: boolean defaultExportIdentifierName?: string } -export type ModuleExportGenerateContext = { +export type TransformModuleExportGenerateContext = { implementation: string binding: string exportName: string - meta: ModuleExportMeta + meta: TransformModuleExportMeta } +export type TransformModuleExportFilter = ( + name: string, + meta: TransformModuleExportMeta, +) => boolean + export type TransformModuleExportOptions = { - generate: (context: ModuleExportGenerateContext) => string - filter?: (name: string, meta: ModuleExportMeta) => boolean + generate: (context: TransformModuleExportGenerateContext) => string + filter?: TransformModuleExportFilter rejectNonAsyncFunction?: boolean exportAll?: 'error' | 'preserve' } +export type TransformModuleExportResult = { + output: MagicString + referenceNames: string[] +} + export function transformModuleExport( input: string, viteAst: ESTree.Program, options: TransformModuleExportOptions, -): { - output: MagicString - referenceNames: string[] -} { +): TransformModuleExportResult { const ast = viteAst as unknown as Program const output = new MagicString(input) const referenceNames: string[] = [] @@ -60,7 +67,7 @@ export function transformModuleExport( function extractDeclaration( identifier: Identifier, exportName: string, - meta: ModuleExportMeta, + meta: TransformModuleExportMeta, position: number, ): void { const localName = identifier.name @@ -86,7 +93,7 @@ export function transformModuleExport( } function generate( - context: ModuleExportGenerateContext, + context: TransformModuleExportGenerateContext, position: number, ): void { referenceNames.push(context.exportName) @@ -115,7 +122,7 @@ export function transformModuleExport( ) { tinyassert(node.declaration.id) const identifier = node.declaration.id - const meta: ModuleExportMeta = { + const meta: TransformModuleExportMeta = { localName: identifier.name, declarationKind: node.declaration.type === 'FunctionDeclaration' @@ -134,7 +141,7 @@ export function transformModuleExport( node: (typeof variableDeclaration.declarations)[number] selected: Array<{ identifier: Identifier - meta: ModuleExportMeta + meta: TransformModuleExportMeta }> preserved: string[] }> = [] @@ -163,7 +170,7 @@ export function transformModuleExport( const preserved: string[] = [] let validate = false for (const identifier of identifiers) { - const meta: ModuleExportMeta = { + const meta: TransformModuleExportMeta = { localName: identifier.name, declarationKind: variableDeclaration.kind, isFunction, @@ -238,7 +245,7 @@ export function transformModuleExport( { pos: specifier.exported.start }, ) } - const meta: ModuleExportMeta = {} + const meta: TransformModuleExportMeta = {} return { localName: specifier.local.name, exportName: specifier.exported.name, @@ -295,7 +302,7 @@ export function transformModuleExport( } else if (node.type === 'ExportDefaultDeclaration') { let implementation: string let bindingBase = '$$default' - let meta: ModuleExportMeta + let meta: TransformModuleExportMeta if ( (node.declaration.type === 'FunctionDeclaration' || From 7c52056724ecd8aa5806c2084fa5fdc0de578ae1 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Thu, 30 Jul 2026 16:41:26 +0900 Subject: [PATCH 04/23] docs(rsc): explain module export transform Co-authored-by: OpenCode --- .../src/transforms/module-export.ts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index 6a2a72037..efe4dead4 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -12,15 +12,20 @@ import { buildScopeTree } from './scope' import { extractIdentifiers, validateNonAsyncFunction } from './utils' export type TransformModuleExportMeta = { + /** Source-local declaration name when one is statically available. */ localName?: string declarationKind?: 'function' | 'class' | VariableDeclaration['kind'] isFunction?: boolean + /** Identifier referenced by `export default Identifier`. */ defaultExportIdentifierName?: string } export type TransformModuleExportGenerateContext = { + /** Private source implementation or imported/local value being transformed. */ implementation: string + /** Collision-free local name reserved for the canonical runtime result. */ binding: string + /** Public module export name, including `default`. */ exportName: string meta: TransformModuleExportMeta } @@ -39,9 +44,45 @@ export type TransformModuleExportOptions = { export type TransformModuleExportResult = { output: MagicString + /** Selected public export names in source order. */ referenceNames: string[] } +/** + * Extracts selected module exports into implementation bindings and delegates + * complete canonical binding and export generation to the consumer. + * + * Conceptually: + * + * ```js + * export async function action(value) { + * return value + * } + * ``` + * + * becomes: + * + * ```js + * async function action$$impl(value) { + * return value + * } + * export const action = __RUNTIME__(action$$impl, 'action') + * ``` + * + * `generate` owns the complete generated declaration and export code represented + * by `export const ...` above. The transform does not classify or rewrite that + * code, so consumers also own effects and purity annotations. + * + * Generated code for direct declarations is placed immediately after each + * implementation. Local export specifiers are generated at module end so their + * values have initialized, while re-exports are converted to local imports at + * the original export position. + * + * This canonical-binding model intentionally does not preserve source function + * hoisting under the exported name. Selected mutable, destructured, and duplicate + * declaration bindings are rejected instead of receiving implicit reassignment + * semantics from the deprecated `transformWrapExport` transform. + */ export function transformModuleExport( input: string, viteAst: ESTree.Program, @@ -205,6 +246,8 @@ export function transformModuleExport( } output.remove(node.start, variableDeclaration.start) + // Split declarators so each generated canonical binding is initialized + // before a later declarator can reference its source export name. for (const [index, declaration] of declarations.entries()) { const position = index === declarations.length - 1 @@ -273,6 +316,8 @@ export function transformModuleExport( } let implementation = item.localName + // Local specifiers can appear before their declarations, unlike + // re-exports whose imported implementation is available immediately. const position = node.source ? node.end : input.length if (node.source) { implementation = allocateName(`$$import_${item.localName}`) From 4d0b8747a22d391894f8339c815340c336f3ca39 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Thu, 30 Jul 2026 16:46:27 +0900 Subject: [PATCH 05/23] feat(rsc): return module export contexts Co-authored-by: OpenCode --- .../src/transforms/module-export.test.ts | 28 ++++++++----------- .../src/transforms/module-export.ts | 12 ++++++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts index 9287919a6..3fcde8f4d 100644 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -2,7 +2,6 @@ import { parseAstAsync } from 'vite' import { describe, expect, test } from 'vitest' import { transformModuleExport, - type TransformModuleExportGenerateContext, type TransformModuleExportOptions, } from './module-export' @@ -91,25 +90,30 @@ export * from './other' }) test('reports metadata and preserves filtered declarations', async () => { - const contexts: TransformModuleExportGenerateContext[] = [] const input = `export const Page = () => {}, value = 1; export default Page;` const ast = await parseAstAsync(input) const result = transformModuleExport(input, ast, { filter: (_name, meta) => meta.isFunction !== false, exportAll: 'preserve', - generate: (context) => { - contexts.push(context) - return `const ${context.binding} = wrap(${context.implementation}); export { ${context.binding} as ${context.exportName} };` - }, + generate: (context) => + `const ${context.binding} = wrap(${context.implementation}); export { ${context.binding} as ${context.exportName} };`, }) expect({ - contexts, + references: result.references, output: result.output.toString(), }).toMatchInlineSnapshot(` { - "contexts": [ + "output": "const Page$$impl = () => {}; + const Page = wrap(Page$$impl); export { Page as Page }; + const value = 1; + export { value }; + + + const $$default = wrap(Page); export { $$default as default }; + ", + "references": [ { "binding": "Page", "exportName": "Page", @@ -130,14 +134,6 @@ export default Page;` }, }, ], - "output": "const Page$$impl = () => {}; - const Page = wrap(Page$$impl); export { Page as Page }; - const value = 1; - export { value }; - - - const $$default = wrap(Page); export { $$default as default }; - ", } `) }) diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index efe4dead4..807ea3c16 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -44,6 +44,8 @@ export type TransformModuleExportOptions = { export type TransformModuleExportResult = { output: MagicString + /** Full generation contexts for selected exports in source order. */ + references: TransformModuleExportGenerateContext[] /** Selected public export names in source order. */ referenceNames: string[] } @@ -90,7 +92,7 @@ export function transformModuleExport( ): TransformModuleExportResult { const ast = viteAst as unknown as Program const output = new MagicString(input) - const referenceNames: string[] = [] + const references: TransformModuleExportGenerateContext[] = [] const emissions = new Map() const filter = options.filter ?? (() => true) const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) @@ -137,7 +139,7 @@ export function transformModuleExport( context: TransformModuleExportGenerateContext, position: number, ): void { - referenceNames.push(context.exportName) + references.push(context) emit(position, options.generate(context)) } @@ -415,7 +417,11 @@ export function transformModuleExport( output.appendLeft(position, `\n${codes.join('\n')}\n`) } - return { output, referenceNames } + return { + output, + references, + referenceNames: references.map((reference) => reference.exportName), + } } function findSeparatorComma(separator: string): number { From 1ad2fae1acbee30e16ed3a0aa97d6cd60ad4a6cb Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Thu, 30 Jul 2026 19:44:33 +0900 Subject: [PATCH 06/23] refactor(rsc): simplify multi-declarator exports Co-authored-by: OpenCode --- .../src/transforms/module-export.test.ts | 25 ++++++-- .../src/transforms/module-export.ts | 62 +++---------------- 2 files changed, 27 insertions(+), 60 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts index 3fcde8f4d..e76878d9a 100644 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -22,7 +22,7 @@ describe(transformModuleExport, () => { test('extracts direct and default declarations', async () => { const result = await transform(` export async function action() {} -export const loader = async () => {} /* comma, here */, value = loader +export const loader = async () => {}, value = 1 export default async function Page() {} `) @@ -38,10 +38,9 @@ export default async function Page() {} const action = wrap(action$$impl, "action"); export { action as action }; - const loader$$impl = async () => {} /* comma, here */; + const loader$$impl = async () => {}, value$$impl = 1 const loader = wrap(loader$$impl, "loader"); export { loader as loader }; - const value$$impl = loader const value = wrap(value$$impl, "value"); export { value as value }; @@ -53,6 +52,23 @@ export default async function Page() {} `) }) + test('documents dependent multi-declarator TDZ', async () => { + const result = await transform( + `export const first = async () => {}, second = first`, + ) + + // `first` is a later generated const in this output. Supporting this + // uncommon dependency would require splitting the source declaration. + expect(result.output.toString()).toMatchInlineSnapshot(` + "const first$$impl = async () => {}, second$$impl = first + const first = wrap(first$$impl, \"first\"); + export { first as first }; + const second = wrap(second$$impl, \"second\"); + export { second as second }; + " + `) + }) + test('handles aliases, re-exports, filtering, and name collisions', async () => { const result = await transform( ` @@ -105,9 +121,8 @@ export default Page;` output: result.output.toString(), }).toMatchInlineSnapshot(` { - "output": "const Page$$impl = () => {}; + "output": "const Page$$impl = () => {}, value = 1; const Page = wrap(Page$$impl); export { Page as Page }; - const value = 1; export { value }; diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index 807ea3c16..8bb2fea1c 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -75,10 +75,10 @@ export type TransformModuleExportResult = { * by `export const ...` above. The transform does not classify or rewrite that * code, so consumers also own effects and purity annotations. * - * Generated code for direct declarations is placed immediately after each - * implementation. Local export specifiers are generated at module end so their - * values have initialized, while re-exports are converted to local imports at - * the original export position. + * Generated code for direct declarations is placed immediately after the source + * declaration. Local export specifiers are generated at module end so their values + * have initialized, while re-exports are converted to local imports at the original + * export position. * * This canonical-binding model intentionally does not preserve source function * hoisting under the exported name. Selected mutable, destructured, and duplicate @@ -248,36 +248,14 @@ export function transformModuleExport( } output.remove(node.start, variableDeclaration.start) - // Split declarators so each generated canonical binding is initialized - // before a later declarator can reference its source export name. - for (const [index, declaration] of declarations.entries()) { - const position = - index === declarations.length - 1 - ? node.end - : declaration.node.end + for (const declaration of declarations) { for (const { identifier, meta } of declaration.selected) { - extractDeclaration(identifier, identifier.name, meta, position) + extractDeclaration(identifier, identifier.name, meta, node.end) } for (const name of declaration.preserved) { - preserveExport(name, name, position) + preserveExport(name, name, node.end) } } - for (let i = 1; i < declarations.length; i++) { - const previous = declarations[i - 1]!.node - const current = declarations[i]!.node - const separator = input.slice(previous.end, current.start) - const comma = findSeparatorComma(separator) - const prefix = separator.slice(0, comma) - const rest = separator.slice(comma + 1) - const codes = emissions.get(previous.end) - tinyassert(codes) - emissions.delete(previous.end) - output.update( - previous.end, - current.start, - `${prefix};\n${codes.join('\n')}\n${variableDeclaration.kind}${/^\s/.test(rest) ? '' : ' '}${rest}`, - ) - } } else { node.declaration satisfies never } @@ -424,32 +402,6 @@ export function transformModuleExport( } } -function findSeparatorComma(separator: string): number { - let inLineComment = false - let inBlockComment = false - for (let i = 0; i < separator.length; i++) { - const char = separator[i] - const next = separator[i + 1] - if (inLineComment) { - if (char === '\n' || char === '\r') inLineComment = false - } else if (inBlockComment) { - if (char === '*' && next === '/') { - inBlockComment = false - i++ - } - } else if (char === '/' && next === '/') { - inLineComment = true - i++ - } else if (char === '/' && next === '*') { - inBlockComment = true - i++ - } else if (char === ',') { - return i - } - } - throw new Error('missing variable declarator separator') -} - function getModuleDeclarationCounts(ast: Program): Map { const counts = new Map() const add = (name: string) => counts.set(name, (counts.get(name) ?? 0) + 1) From ec8275e85d9538fcf383b63ebc9ca5372eeb0c39 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:36:06 +0900 Subject: [PATCH 07/23] refactor(rsc): split module export models Co-authored-by: OpenCode --- packages/plugin-rsc/src/transforms/index.ts | 2 + .../src/transforms/module-export-effect.ts | 204 +++++++++++++++++ .../src/transforms/module-export-hoist.ts | 214 ++++++++++++++++++ .../transforms/module-export-models.test.ts | 151 ++++++++++++ 4 files changed, 571 insertions(+) create mode 100644 packages/plugin-rsc/src/transforms/module-export-effect.ts create mode 100644 packages/plugin-rsc/src/transforms/module-export-hoist.ts create mode 100644 packages/plugin-rsc/src/transforms/module-export-models.test.ts diff --git a/packages/plugin-rsc/src/transforms/index.ts b/packages/plugin-rsc/src/transforms/index.ts index 1f1520681..fabdc36aa 100644 --- a/packages/plugin-rsc/src/transforms/index.ts +++ b/packages/plugin-rsc/src/transforms/index.ts @@ -1,5 +1,7 @@ export * from './hoist' export * from './module-export' +export * from './module-export-effect' +export * from './module-export-hoist' export * from './wrap-export' export * from './proxy-export' export * from './utils' diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.ts b/packages/plugin-rsc/src/transforms/module-export-effect.ts new file mode 100644 index 000000000..eaadb568c --- /dev/null +++ b/packages/plugin-rsc/src/transforms/module-export-effect.ts @@ -0,0 +1,204 @@ +import { tinyassert } from '@hiogawa/utils' +import type { ExportDefaultDeclaration, Node, Program } from 'estree' +import MagicString from 'magic-string' +import type { ESTree } from 'vite' +import type { + TransformModuleExportFilter, + TransformModuleExportMeta, +} from './module-export' +import { buildScopeTree } from './scope' +import { extractNames, validateNonAsyncFunction } from './utils' + +export type TransformModuleExportEffectContext = { + binding: string + exportName: string + meta: TransformModuleExportMeta +} + +export type TransformModuleExportEffectOptions = { + generate: (context: TransformModuleExportEffectContext) => string + filter?: TransformModuleExportFilter + rejectNonAsyncFunction?: boolean + exportAll?: 'error' | 'preserve' +} + +/** + * Preserves selected source exports and appends one generated module effect for + * each exported value. This models Next.js-style module Server Action lowering. + */ +export function transformModuleExportEffect( + input: string, + viteAst: ESTree.Program, + options: TransformModuleExportEffectOptions, +): { + output: MagicString + references: TransformModuleExportEffectContext[] + referenceNames: string[] +} { + const ast = viteAst as unknown as Program + const output = new MagicString(input) + const filter = options.filter ?? (() => true) + const references: TransformModuleExportEffectContext[] = [] + const effects: string[] = [] + const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) + + function allocateName(base: string): string { + let name = base + for (let i = 2; usedNames.has(name); i++) name = `${base}_${i}` + usedNames.add(name) + return name + } + + function generate(context: TransformModuleExportEffectContext): void { + references.push(context) + effects.push(options.generate(context)) + } + + for (const node of ast.body) { + if (node.type === 'ExportNamedDeclaration') { + if (node.declaration) { + if ( + node.declaration.type === 'FunctionDeclaration' || + node.declaration.type === 'ClassDeclaration' + ) { + tinyassert(node.declaration.id) + const binding = node.declaration.id.name + const meta: TransformModuleExportMeta = { + localName: binding, + declarationKind: + node.declaration.type === 'FunctionDeclaration' + ? 'function' + : 'class', + isFunction: + node.declaration.type === 'FunctionDeclaration' ? true : false, + } + if (!filter(binding, meta)) continue + validateNonAsyncFunction(options, node.declaration) + generate({ binding, exportName: binding, meta }) + } else if (node.declaration.type === 'VariableDeclaration') { + for (const declaration of node.declaration.declarations) { + const names = extractNames(declaration.id) + const isFunction = + declaration.id.type === 'Identifier' && declaration.init + ? getIsFunction(declaration.init) + : undefined + let validate = false + for (const binding of names) { + const meta: TransformModuleExportMeta = { + localName: binding, + declarationKind: node.declaration.kind, + isFunction, + } + if (filter(binding, meta)) { + validate = true + generate({ binding, exportName: binding, meta }) + } + } + if (validate && declaration.init) { + validateNonAsyncFunction(options, declaration.init) + } + } + } + } else { + for (const specifier of node.specifiers) { + tinyassert(specifier.local.type === 'Identifier') + if (specifier.exported.type !== 'Identifier') { + throw Object.assign( + new Error('unsupported string literal export name'), + { pos: specifier.exported.start }, + ) + } + const exportName = specifier.exported.name + const meta: TransformModuleExportMeta = {} + if (!filter(exportName, meta)) continue + + let binding = specifier.local.name + if (node.source) { + binding = allocateName(`$$effect_import_${binding}`) + const sourceTail = input + .slice(node.source.end, node.end) + .replace(/;?\s*$/, ';') + output.append( + `\nimport { ${specifier.local.name} as ${binding} } from ${node.source.raw}${sourceTail}`, + ) + } + generate({ binding, exportName, meta }) + } + } + } else if (node.type === 'ExportAllDeclaration') { + if (options.exportAll !== 'preserve') { + throw Object.assign(new Error('unsupported ExportAllDeclaration'), { + pos: node.start, + }) + } + } else if (node.type === 'ExportDefaultDeclaration') { + let binding: string + let meta: TransformModuleExportMeta + if ( + (node.declaration.type === 'FunctionDeclaration' || + node.declaration.type === 'ClassDeclaration') && + node.declaration.id + ) { + binding = node.declaration.id.name + meta = { + localName: binding, + declarationKind: + node.declaration.type === 'FunctionDeclaration' + ? 'function' + : 'class', + isFunction: + node.declaration.type === 'FunctionDeclaration' ? true : false, + } + } else if (node.declaration.type === 'Identifier') { + binding = node.declaration.name + meta = { defaultExportIdentifierName: binding } + } else { + binding = allocateName('$$effect_default') + meta = { isFunction: getIsFunction(node.declaration) } + } + if (!filter('default', meta)) continue + validateNonAsyncFunction(options, node.declaration) + + if ( + node.declaration.type !== 'Identifier' && + !( + (node.declaration.type === 'FunctionDeclaration' || + node.declaration.type === 'ClassDeclaration') && + node.declaration.id + ) + ) { + output.update(node.start, node.declaration.start, `const ${binding} = `) + output.appendLeft(node.end, `\nexport default ${binding};`) + } + generate({ binding, exportName: 'default', meta }) + } + } + + if (effects.length > 0) output.append(`\n${effects.join('\n')}\n`) + return { + output, + references, + referenceNames: references.map((reference) => reference.exportName), + } +} + +function getIsFunction( + node: Node | ExportDefaultDeclaration['declaration'], +): boolean | undefined { + if ( + node.type === 'FunctionDeclaration' || + node.type === 'FunctionExpression' || + node.type === 'ArrowFunctionExpression' + ) { + return true + } + if ( + node.type === 'ClassDeclaration' || + node.type === 'Literal' || + node.type === 'ObjectExpression' || + node.type === 'ArrayExpression' || + node.type === 'ClassExpression' + ) { + return false + } +} diff --git a/packages/plugin-rsc/src/transforms/module-export-hoist.ts b/packages/plugin-rsc/src/transforms/module-export-hoist.ts new file mode 100644 index 000000000..b13314fd7 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/module-export-hoist.ts @@ -0,0 +1,214 @@ +import type { + ArrowFunctionExpression, + ExportDefaultDeclaration, + ExportNamedDeclaration, + FunctionExpression, + Node, + Program, + VariableDeclarator, +} from 'estree' +import MagicString from 'magic-string' +import type { ESTree } from 'vite' +import type { + TransformModuleExportFilter, + TransformModuleExportMeta, +} from './module-export' +import { buildScopeTree } from './scope' +import { hasDirective, validateNonAsyncFunction } from './utils' + +type DefaultFunctionDeclaration = Extract< + ExportDefaultDeclaration['declaration'], + { type: 'FunctionDeclaration' } +> + +type ModuleFunction = + | DefaultFunctionDeclaration + | FunctionExpression + | ArrowFunctionExpression + +type HoistCandidate = { + node: ModuleFunction + parent: ExportDefaultDeclaration | ExportNamedDeclaration | VariableDeclarator + exportName: string + sourceName: string + meta: TransformModuleExportMeta +} + +export type TransformModuleExportHoistContext = { + implementation: string + exportName: string + meta: TransformModuleExportMeta +} + +export type TransformModuleExportHoistOptions = { + directive: string + runtime: (context: TransformModuleExportHoistContext) => string + filter?: TransformModuleExportFilter + rejectNonAsyncFunction?: boolean +} + +/** + * Treats a module directive as though it were attached to each directly exported + * function, then applies inline-style implementation hoisting and expression-site + * runtime replacement. Local export specifiers and re-exports are left unchanged. + */ +export function transformModuleExportHoist( + source: string, + viteAst: ESTree.Program, + options: TransformModuleExportHoistOptions, +): { + output: MagicString + references: TransformModuleExportHoistContext[] + referenceNames: string[] +} { + const ast = viteAst as unknown as Program + let input = source + if (!input.endsWith('\n')) input += '\n' + const output = new MagicString(input) + const references: TransformModuleExportHoistContext[] = [] + const filter = options.filter ?? (() => true) + if (!hasDirective(viteAst.body, options.directive)) { + return { output, references, referenceNames: [] } + } + + const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) + const candidates: HoistCandidate[] = [] + + for (const statement of ast.body) { + if (statement.type === 'ExportNamedDeclaration' && statement.declaration) { + if (statement.declaration.type === 'FunctionDeclaration') { + const name = statement.declaration.id.name + candidates.push({ + node: statement.declaration, + parent: statement, + exportName: name, + sourceName: name, + meta: { + localName: name, + declarationKind: 'function', + isFunction: true, + }, + }) + } else if (statement.declaration.type === 'VariableDeclaration') { + for (const declaration of statement.declaration.declarations) { + if ( + declaration.id.type === 'Identifier' && + declaration.init && + isFunctionNode(declaration.init) + ) { + candidates.push({ + node: declaration.init, + parent: declaration, + exportName: declaration.id.name, + sourceName: declaration.id.name, + meta: { + localName: declaration.id.name, + declarationKind: statement.declaration.kind, + isFunction: true, + }, + }) + } + } + } + } else if ( + statement.type === 'ExportDefaultDeclaration' && + isFunctionNode(statement.declaration) + ) { + const sourceName = + statement.declaration.type !== 'ArrowFunctionExpression' && + statement.declaration.id + ? statement.declaration.id.name + : 'anonymous_default' + candidates.push({ + node: statement.declaration, + parent: statement, + exportName: 'default', + sourceName, + meta: { + localName: + sourceName === 'anonymous_default' ? undefined : sourceName, + declarationKind: + statement.declaration.type === 'FunctionDeclaration' + ? 'function' + : undefined, + isFunction: true, + }, + }) + } + } + + function allocateName(base: string): string { + let name = base + for (let i = 2; usedNames.has(name); i++) name = `${base}_${i}` + usedNames.add(name) + return name + } + + for (const candidate of candidates) { + if (!filter(candidate.exportName, candidate.meta)) continue + const node = candidate.node + if (node.type === 'FunctionExpression' && node.id) { + throw Object.assign( + new Error('unsupported named function expression export'), + { pos: node.start }, + ) + } + validateNonAsyncFunction(options, node) + + const implementation = allocateName( + `$$module_hoist_${references.length}_${candidate.sourceName}`, + ) + const params = node.params + .map((parameter) => input.slice(parameter.start, parameter.end)) + .join(', ') + const prefix = `\n;${node.async ? 'async ' : ''}function${node.generator ? '*' : ''} ${implementation}(${params}) ` + if (node.body.type === 'BlockStatement') { + output.update(node.start, node.body.start, prefix) + output.appendLeft(node.end, ';') + } else { + output.update(node.start, node.body.start, `${prefix}{ return `) + output.appendLeft(node.end, ' };') + } + output.appendLeft( + node.end, + `\n/* #__PURE__ */ Object.defineProperty(${implementation}, "name", { value: ${JSON.stringify(candidate.sourceName)} });\n`, + ) + output.move(node.start, node.end, input.length) + + const context: TransformModuleExportHoistContext = { + implementation, + exportName: candidate.exportName, + meta: candidate.meta, + } + references.push(context) + const runtime = `/* #__PURE__ */ ${options.runtime(context)}` + + if (node.type === 'FunctionDeclaration' && node.id) { + const sourceName = node.id.name + let replacement = `const ${sourceName} = ${runtime};` + if (candidate.parent.type === 'ExportDefaultDeclaration') { + output.remove(candidate.parent.start, node.start) + replacement += `\nexport default ${sourceName};` + } + output.appendLeft(node.start, replacement) + } else { + output.appendLeft(node.start, runtime) + } + } + + return { + output, + references, + referenceNames: references.map((reference) => reference.exportName), + } +} + +function isFunctionNode( + node: Node | ExportDefaultDeclaration['declaration'], +): node is ModuleFunction { + return ( + node.type === 'FunctionDeclaration' || + node.type === 'FunctionExpression' || + node.type === 'ArrowFunctionExpression' + ) +} diff --git a/packages/plugin-rsc/src/transforms/module-export-models.test.ts b/packages/plugin-rsc/src/transforms/module-export-models.test.ts new file mode 100644 index 000000000..af644169d --- /dev/null +++ b/packages/plugin-rsc/src/transforms/module-export-models.test.ts @@ -0,0 +1,151 @@ +import { parseAstAsync } from 'vite' +import { describe, expect, test } from 'vitest' +import { transformModuleExport } from './module-export' +import { transformModuleExportEffect } from './module-export-effect' +import { transformModuleExportHoist } from './module-export-hoist' + +describe('module export transform models', () => { + test('compares canonical bindings, export effects, and hoisted expressions', async () => { + const input = `"use cache"; +export async function action(value) { + return value +} +export const loader = async () => "loaded" +export default async function Page() { + return "page" +} +` + const ast = await parseAstAsync(input) + const canonical = transformModuleExport(input, ast, { + generate: ({ implementation, binding, exportName }) => + `const ${binding} = wrap(${implementation}, ${JSON.stringify(exportName)}); export { ${binding} as ${exportName} };`, + }) + const effect = transformModuleExportEffect(input, ast, { + generate: ({ binding, exportName }) => + `register(${binding}, ${JSON.stringify(exportName)});`, + }) + const hoist = transformModuleExportHoist(input, ast, { + directive: 'use cache', + runtime: ({ implementation, exportName }) => + `wrap(${implementation}, ${JSON.stringify(exportName)})`, + }) + + const outputs = { + canonical: canonical.output.toString(), + effect: effect.output.toString(), + hoist: hoist.output.toString(), + } + await Promise.all( + Object.values(outputs).map((output) => parseAstAsync(output)), + ) + + expect({ + referenceNames: { + canonical: canonical.referenceNames, + effect: effect.referenceNames, + hoist: hoist.referenceNames, + }, + outputs, + }).toMatchInlineSnapshot(` + { + "outputs": { + "canonical": ""use cache"; + async function action$$impl(value) { + return value + } + const action = wrap(action$$impl, "action"); export { action as action }; + + const loader$$impl = async () => "loaded" + const loader = wrap(loader$$impl, "loader"); export { loader as loader }; + + async function Page$$impl() { + return "page" + } + const Page = wrap(Page$$impl, "default"); export { Page as default }; + + ", + "effect": ""use cache"; + export async function action(value) { + return value + } + export const loader = async () => "loaded" + export default async function Page() { + return "page" + } + + register(action, "action"); + register(loader, "loader"); + register(Page, "default"); + ", + "hoist": ""use cache"; + export const action = /* #__PURE__ */ wrap($$module_hoist_0_action, "action"); + export const loader = /* #__PURE__ */ wrap($$module_hoist_1_loader, "loader") + const Page = /* #__PURE__ */ wrap($$module_hoist_2_Page, "default"); + export default Page; + + ;async function $$module_hoist_0_action(value) { + return value + }; + /* #__PURE__ */ Object.defineProperty($$module_hoist_0_action, "name", { value: "action" }); + + ;async function $$module_hoist_1_loader() { return "loaded" }; + /* #__PURE__ */ Object.defineProperty($$module_hoist_1_loader, "name", { value: "loader" }); + + ;async function $$module_hoist_2_Page() { + return "page" + }; + /* #__PURE__ */ Object.defineProperty($$module_hoist_2_Page, "name", { value: "Page" }); + ", + }, + "referenceNames": { + "canonical": [ + "action", + "loader", + "default", + ], + "effect": [ + "action", + "loader", + "default", + ], + "hoist": [ + "action", + "loader", + "default", + ], + }, + } + `) + }) + + test('supports anonymous default functions', async () => { + const input = `"use cache"; export default async function () {}` + const ast = await parseAstAsync(input) + const effect = transformModuleExportEffect(input, ast, { + generate: ({ binding }) => `register(${binding});`, + }) + const hoist = transformModuleExportHoist(input, ast, { + directive: 'use cache', + runtime: ({ implementation }) => `wrap(${implementation})`, + }) + + await expect(parseAstAsync(effect.output.toString())).resolves.toBeDefined() + await expect(parseAstAsync(hoist.output.toString())).resolves.toBeDefined() + expect({ + effect: effect.output.toString(), + hoist: hoist.output.toString(), + }).toMatchInlineSnapshot(` + { + "effect": ""use cache"; const $$effect_default = async function () {} + export default $$effect_default; + register($$effect_default); + ", + "hoist": ""use cache"; export default /* #__PURE__ */ wrap($$module_hoist_0_anonymous_default) + + ;async function $$module_hoist_0_anonymous_default() {}; + /* #__PURE__ */ Object.defineProperty($$module_hoist_0_anonymous_default, "name", { value: "anonymous_default" }); + ", + } + `) + }) +}) From 50ecb7d08457a88ca6c3e4c376aac3d27df703c8 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:55:14 +0900 Subject: [PATCH 08/23] test(rsc): compare module export source maps Co-authored-by: OpenCode --- ...-anonymous.js.module-export-effect.snap.js | 14 +++++ ...t-anonymous.js.module-export-hoist.snap.js | 14 +++++ ...default-anonymous.js.module-export.snap.js | 14 +++++ ... default-anonymous.js.wrap-export.snap.js} | 0 ...identifier.js.module-export-effect.snap.js | 15 +++++ ...-identifier.js.module-export-hoist.snap.js | 13 +++++ ...efault-identifier.js.module-export.snap.js | 16 ++++++ ...default-identifier.js.wrap-export.snap.js} | 0 ...ault-named.js.module-export-effect.snap.js | 13 +++++ ...fault-named.js.module-export-hoist.snap.js | 15 +++++ .../default-named.js.module-export.snap.js | 14 +++++ ...s => default-named.js.wrap-export.snap.js} | 0 ...ocal-alias.js.module-export-effect.snap.js | 15 +++++ ...local-alias.js.module-export-hoist.snap.js | 13 +++++ .../local-alias.js.module-export.snap.js | 16 ++++++ ....js => local-alias.js.wrap-export.snap.js} | 0 ...le-exports.js.module-export-effect.snap.js | 18 ++++++ ...ple-exports.js.module-export-hoist.snap.js | 21 +++++++ .../multiple-exports.js.module-export.snap.js | 21 +++++++ ...> multiple-exports.js.wrap-export.snap.js} | 0 ...d-function.js.module-export-effect.snap.js | 13 +++++ ...ed-function.js.module-export-hoist.snap.js | 14 +++++ .../named-function.js.module-export.snap.js | 14 +++++ ... => named-function.js.wrap-export.snap.js} | 0 .../reexport.js.module-export-effect.snap.js | 12 ++++ .../reexport.js.module-export-hoist.snap.js | 9 +++ .../reexport.js.module-export.snap.js | 13 +++++ ...nap.js => reexport.js.wrap-export.snap.js} | 0 .../variables.js.module-export-effect.snap.js | 16 ++++++ .../variables.js.module-export-hoist.snap.js | 19 +++++++ .../variables.js.module-export.snap.js | 19 +++++++ ...ap.js => variables.js.wrap-export.snap.js} | 0 .../src/transforms/source-map.test.ts | 56 +++++++++++++++---- 33 files changed, 405 insertions(+), 12 deletions(-) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{default-anonymous.js.snap.js => default-anonymous.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{default-identifier.js.snap.js => default-identifier.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{default-named.js.snap.js => default-named.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{local-alias.js.snap.js => local-alias.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{multiple-exports.js.snap.js => multiple-exports.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{named-function.js.snap.js => named-function.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{reexport.js.snap.js => reexport.js.wrap-export.snap.js} (100%) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js rename packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/{variables.js.snap.js => variables.js.wrap-export.snap.js} (100%) diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js new file mode 100644 index 000000000..f9c8eb700 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCx5QkFBZSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzs7OyJ9 +*/ + +'use server' + +const $$effect_default = async function () { + return 'default anonymous function called' +} +export default $$effect_default; + +registerServerReference($$effect_default, "default"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js new file mode 100644 index 000000000..9fd8d9714 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MzM1ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJkZWZhdWx0IikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fub255bW91c19kZWZhdWx0KCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJuYW1lIiwgeyB2YWx1ZTogImFub255bW91c19kZWZhdWx0IiB9KTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsT0FBTztBQUFDO0FBQUEscURBQWtCO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzsifQ== +*/ + +'use server' + +export default /* #__PURE__ */ registerServerReference($$module_hoist_0_anonymous_default, "default") + +;async function $$module_hoist_0_anonymous_default() { + return 'default anonymous function called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_anonymous_default, "name", { value: "anonymous_default" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js new file mode 100644 index 000000000..03cf36fa7 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjEwACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0JCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CmNvbnN0ICQkZGVmYXVsdCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZGVmYXVsdCQkaW1wbCwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKCjMyMwB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsd0JBQWUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUMzQzs7OzsifQ== +*/ + +'use server' + +const $$default$$impl = async function () { + return 'default anonymous function called' +} +const $$default = registerServerReference($$default$$impl, "default"); +export { $$default as default }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js new file mode 100644 index 000000000..ac3810316 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js @@ -0,0 +1,15 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CjM2OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0SWRlbnRpZmllcigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNuQzs7QUFFQSxNQUFNLENBQUMsT0FBTyxDQUFDOzs7In0= +*/ + +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +export default defaultIdentifier + +registerServerReference(defaultIdentifier, "default"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js new file mode 100644 index 000000000..6d2d91d5b --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTI0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgozNjcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRUEsTUFBTSxDQUFDLE9BQU8sQ0FBQzsifQ== +*/ + +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +export default defaultIdentifier diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js new file mode 100644 index 000000000..bb580aa1a --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js @@ -0,0 +1,16 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTk5ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgoKY29uc3QgJCRkZWZhdWx0ID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkZGVmYXVsdCBhcyBkZWZhdWx0IH07CgozNDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7Ozs7OzsifQ== +*/ + +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + + +const $$default = registerServerReference(defaultIdentifier, "default"); +export { $$default as default }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js new file mode 100644 index 000000000..7e778f877 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CjM1OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBkZWZhdWx0TmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7OzsifQ== +*/ + +'use server' + +export default async function defaultNamedFunction() { + return 'default named function called' +} + +registerServerReference(defaultNamedFunction, "default"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js new file mode 100644 index 000000000..2646d81f9 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js @@ -0,0 +1,15 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#Mzk1ACd1c2Ugc2VydmVyJwoKY29uc3QgZGVmYXVsdE5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgZGVmYXVsdE5hbWVkRnVuY3Rpb247Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImRlZmF1bHROYW1lZEZ1bmN0aW9uIiB9KTsKMzEwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07Ozs7QUFFSTtBQUFBLHdEQUFzQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7In0= +*/ + +'use server' + +const defaultNamedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_defaultNamedFunction, "default"); +export default defaultNamedFunction; + +;async function $$module_hoist_0_defaultNamedFunction() { + return 'default named function called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_defaultNamedFunction, "name", { value: "defaultNamedFunction" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js new file mode 100644 index 000000000..eaa62a1a2 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjQxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBkZWZhdWx0TmFtZWRGdW5jdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGRlZmF1bHROYW1lZEZ1bmN0aW9uJCRpbXBsLCAiZGVmYXVsdCIpOwpleHBvcnQgeyBkZWZhdWx0TmFtZWRGdW5jdGlvbiBhcyBkZWZhdWx0IH07CgozNDAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLDBCQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7OzsifQ== +*/ + +'use server' + +async function defaultNamedFunction$$impl() { + return 'default named function called' +} +const defaultNamedFunction = registerServerReference(defaultNamedFunction$$impl, "default"); +export { defaultNamedFunction as default }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js new file mode 100644 index 000000000..240204610 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js @@ -0,0 +1,15 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGxvY2FsQWxpYXMsICJhbGlhc2VkQWN0aW9uIik7CjM4OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOztBQUVBLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7OzsifQ== +*/ + +'use server' + +async function localAlias() { + return 'local alias called' +} + +export { localAlias as aliasedAction } + +registerServerReference(localAlias, "aliasedAction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js new file mode 100644 index 000000000..e963a40eb --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsQWxpYXMoKSB7XG4gIHJldHVybiAnbG9jYWwgYWxpYXMgY2FsbGVkJ1xufVxuXG5leHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDNUI7O0FBRUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQzsifQ== +*/ + +'use server' + +async function localAlias() { + return 'local alias called' +} + +export { localAlias as aliasedAction } diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js new file mode 100644 index 000000000..8db29c5a3 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js @@ -0,0 +1,16 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpjb25zdCAkJG1vZHVsZV9hbGlhc2VkQWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCRtb2R1bGVfYWxpYXNlZEFjdGlvbiBhcyBhbGlhc2VkQWN0aW9uIH07CjMzNgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOzs7Ozs7In0= +*/ + +'use server' + +async function localAlias() { + return 'local alias called' +} + + + +const $$module_aliasedAction = registerServerReference(localAlias, "aliasedAction"); +export { $$module_aliasedAction as aliasedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js new file mode 100644 index 000000000..caae66e9a --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js @@ -0,0 +1,18 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjY4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkgewogIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwo1MDcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7O0FBRUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9 +*/ + +'use server' + +export async function firstAction() { + return 'first action called' +} + +export async function secondAction() { + return 'second action called' +} + +registerServerReference(firstAction, "firstAction"); +registerServerReference(secondAction, "secondAction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js new file mode 100644 index 000000000..1286692a1 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js @@ -0,0 +1,21 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#NjIyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0QWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwoKZXhwb3J0IGNvbnN0IHNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0QWN0aW9uIiB9KTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzFfc2Vjb25kQWN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJzZWNvbmRBY3Rpb24iIH0pOwo0NTAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNOztBQUlOLE1BQU07QUFKQztBQUFBLCtDQUE2QjtBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPO0FBQUEsZ0RBQThCO0FBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDOUI7OyJ9 +*/ + +'use server' + +export const firstAction = /* #__PURE__ */ registerServerReference($$module_hoist_0_firstAction, "firstAction"); + +export const secondAction = /* #__PURE__ */ registerServerReference($$module_hoist_1_secondAction, "secondAction"); + +;async function $$module_hoist_0_firstAction() { + return 'first action called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_firstAction, "name", { value: "firstAction" }); + +;async function $$module_hoist_1_secondAction() { + return 'second action called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_1_secondAction, "name", { value: "secondAction" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js new file mode 100644 index 000000000..4a85a4665 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js @@ -0,0 +1,21 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#NDAwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IGZpcnN0QWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24kJGltcGwsICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiBhcyBmaXJzdEFjdGlvbiB9OwoKCmFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IHNlY29uZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiQkaW1wbCwgInNlY29uZEFjdGlvbiIpOwpleHBvcnQgeyBzZWNvbmRBY3Rpb24gYXMgc2Vjb25kQWN0aW9uIH07Cgo0OTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7Ozs7O0FBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxrQkFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9 +*/ + +'use server' + +async function firstAction$$impl() { + return 'first action called' +} +const firstAction = registerServerReference(firstAction$$impl, "firstAction"); +export { firstAction as firstAction }; + + +async function secondAction$$impl() { + return 'second action called' +} +const secondAction = registerServerReference(secondAction$$impl, "secondAction"); +export { secondAction as secondAction }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js new file mode 100644 index 000000000..9ac5214b0 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTQ3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CjMxNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OzsifQ== +*/ + +'use server' + +export async function namedFunction() { + return 'named function called' +} + +registerServerReference(namedFunction, "namedFunction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js new file mode 100644 index 000000000..72c1949d1 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MzI4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IG5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9uYW1lZEZ1bmN0aW9uLCAibmFtZWRGdW5jdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8wX25hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogIm5hbWVkRnVuY3Rpb24iIH0pOwoyODUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTTtBQUFDO0FBQUEsaURBQStCO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OyJ9 +*/ + +'use server' + +export const namedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_namedFunction, "namedFunction"); + +;async function $$module_hoist_0_namedFunction() { + return 'named function called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_namedFunction, "name", { value: "namedFunction" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js new file mode 100644 index 000000000..367bb1bf9 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjE3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBuYW1lZEZ1bmN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiQkaW1wbCwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiBhcyBuYW1lZEZ1bmN0aW9uIH07CgozMDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9COzs7OyJ9 +*/ + +'use server' + +async function namedFunction$$impl() { + return 'named function called' +} +const namedFunction = registerServerReference(namedFunction$$impl, "namedFunction"); +export { namedFunction as namedFunction }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js new file mode 100644 index 000000000..f9b0e07f5 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js @@ -0,0 +1,12 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjM3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CjI2MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7In0= +*/ + +'use server' + +export { reexportedAction } from './reexport-source' + +import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source'; +registerServerReference($$effect_import_reexportedAction, "reexportedAction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js new file mode 100644 index 000000000..3f2baec49 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js @@ -0,0 +1,9 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#NjcAJ3VzZSBzZXJ2ZXInCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCjI1OAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07In0= +*/ + +'use server' + +export { reexportedAction } from './reexport-source' diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js new file mode 100644 index 000000000..afb0bdf19 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjYzACd1c2Ugc2VydmVyJwoKCmltcG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gYXMgJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKY29uc3QgJCRtb2R1bGVfcmVleHBvcnRlZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CmV4cG9ydCB7ICQkbW9kdWxlX3JlZXhwb3J0ZWRBY3Rpb24gYXMgcmVleHBvcnRlZEFjdGlvbiB9OwoKMTc2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gfSBmcm9tICcuL3JlZXhwb3J0LXNvdXJjZSdcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOzs7Ozs7OyJ9 +*/ + +'use server' + + +import { reexportedAction as $$import_reexportedAction } from './reexport-source'; +const $$module_reexportedAction = registerServerReference($$import_reexportedAction, "reexportedAction"); +export { $$module_reexportedAction as reexportedAction }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js new file mode 100644 index 000000000..5ee0ce693 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js @@ -0,0 +1,16 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#Mjk5ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpOwpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24sICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKNTQ2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRS9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQzs7OzsifQ== +*/ + +'use server' + +export const arrowFunction = async () => 'arrow function called' + +export const functionExpression = async function () { + return 'function expression called' +} + +registerServerReference(arrowFunction, "arrowFunction"); +registerServerReference(functionExpression, "functionExpression"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js new file mode 100644 index 000000000..c4b958ccc --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js @@ -0,0 +1,19 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#Njc0ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpCgpleHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzFfZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fycm93RnVuY3Rpb24oKSB7IHJldHVybiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYXJyb3dGdW5jdGlvbiwgIm5hbWUiLCB7IHZhbHVlOiAiYXJyb3dGdW5jdGlvbiIgfSk7Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMV9mdW5jdGlvbkV4cHJlc3Npb24oKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8xX2Z1bmN0aW9uRXhwcmVzc2lvbiwgIm5hbWUiLCB7IHZhbHVlOiAiZnVuY3Rpb25FeHByZXNzaW9uIiB9KTsKNDk0AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUZKO0FBQUEsMERBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRTdCO0FBQUEsc0RBQWtCO0FBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDcEM7OyJ9 +*/ + +'use server' + +export const arrowFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_arrowFunction, "arrowFunction") + +export const functionExpression = /* #__PURE__ */ registerServerReference($$module_hoist_1_functionExpression, "functionExpression") + +;async function $$module_hoist_0_arrowFunction() { return 'arrow function called' }; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_arrowFunction, "name", { value: "arrowFunction" }); + +;async function $$module_hoist_1_functionExpression() { + return 'function expression called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_1_functionExpression, "name", { value: "functionExpression" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js new file mode 100644 index 000000000..6b0fd15ee --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js @@ -0,0 +1,19 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#NDU1ACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiQkaW1wbCA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCmNvbnN0IGFycm93RnVuY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uJCRpbXBsLCAiYXJyb3dGdW5jdGlvbiIpOwpleHBvcnQgeyBhcnJvd0Z1bmN0aW9uIGFzIGFycm93RnVuY3Rpb24gfTsKCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwgPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwsICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKZXhwb3J0IHsgZnVuY3Rpb25FeHByZXNzaW9uIGFzIGZ1bmN0aW9uRXhwcmVzc2lvbiB9OwoKNTMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7O0FBRXhELEtBQUssQ0FBQyx3QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ3BDOzs7OyJ9 +*/ + +'use server' + +const arrowFunction$$impl = async () => 'arrow function called' +const arrowFunction = registerServerReference(arrowFunction$$impl, "arrowFunction"); +export { arrowFunction as arrowFunction }; + + +const functionExpression$$impl = async function () { + return 'function expression called' +} +const functionExpression = registerServerReference(functionExpression$$impl, "functionExpression"); +export { functionExpression as functionExpression }; + diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.wrap-export.snap.js similarity index 100% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js rename to packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index 2f6a79ad4..b5151d09d 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -2,27 +2,59 @@ import path from 'node:path' import { parseAstAsync } from 'vite' import { describe, expect, test } from 'vitest' import { transformHoistInlineDirective } from './hoist' +import { transformModuleExport } from './module-export' +import { transformModuleExportEffect } from './module-export-effect' +import { transformModuleExportHoist } from './module-export-hoist' import { formatSourceMapFixture } from './test-utils' import { transformWrapExport } from './wrap-export' describe('source map fixtures', () => { - const wrapExportFixtures = import.meta.glob( + const moduleExportFixtures = import.meta.glob( ['./fixtures/source-map/wrap-export/**/*.js', '!**/*.snap.*'], { query: 'raw' }, ) - for (const [file, load] of Object.entries(wrapExportFixtures)) { - test(`wrap-export/${path.basename(file)}`, async () => { - const input = ((await load()) as any).default as string - const ast = await parseAstAsync(input) - const result = transformWrapExport(input, ast, { - runtime: (value, name) => - `registerServerReference(${value}, ${JSON.stringify(name)})`, + const moduleExportModels = [ + 'wrap-export', + 'module-export', + 'module-export-effect', + 'module-export-hoist', + ] as const + + for (const model of moduleExportModels) { + for (const [file, load] of Object.entries(moduleExportFixtures)) { + test(`${model}/${path.basename(file)}`, async () => { + const input = ((await load()) as any).default as string + const ast = await parseAstAsync(input) + let output + if (model === 'wrap-export') { + output = transformWrapExport(input, ast, { + runtime: (value, name) => + `registerServerReference(${value}, ${JSON.stringify(name)})`, + }).output + } else if (model === 'module-export') { + output = transformModuleExport(input, ast, { + generate: ({ implementation, binding, exportName }) => + `const ${binding} = registerServerReference(${implementation}, ${JSON.stringify(exportName)});\n` + + `export { ${binding} as ${exportName} };`, + }).output + } else if (model === 'module-export-effect') { + output = transformModuleExportEffect(input, ast, { + generate: ({ binding, exportName }) => + `registerServerReference(${binding}, ${JSON.stringify(exportName)});`, + }).output + } else { + output = transformModuleExportHoist(input, ast, { + directive: 'use server', + runtime: ({ implementation, exportName }) => + `registerServerReference(${implementation}, ${JSON.stringify(exportName)})`, + }).output + } + await expect(formatSourceMapFixture(output)).toMatchFileSnapshot( + `${file}.${model}.snap.js`, + ) }) - await expect(formatSourceMapFixture(result.output)).toMatchFileSnapshot( - file + '.snap.js', - ) - }) + } } const hoistFixtures = import.meta.glob( From 62ab0cc94af942c551fb9c09be83aebc695b670e Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:12:57 +0900 Subject: [PATCH 09/23] refactor(rsc): simplify module export names Co-authored-by: OpenCode --- .../src/transforms/module-export-effect.ts | 13 +-- .../src/transforms/module-export-hoist.ts | 13 +-- .../src/transforms/module-export.test.ts | 6 +- .../src/transforms/module-export.ts | 86 +++---------------- 4 files changed, 16 insertions(+), 102 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.ts b/packages/plugin-rsc/src/transforms/module-export-effect.ts index eaadb568c..7eab5ee18 100644 --- a/packages/plugin-rsc/src/transforms/module-export-effect.ts +++ b/packages/plugin-rsc/src/transforms/module-export-effect.ts @@ -6,7 +6,6 @@ import type { TransformModuleExportFilter, TransformModuleExportMeta, } from './module-export' -import { buildScopeTree } from './scope' import { extractNames, validateNonAsyncFunction } from './utils' export type TransformModuleExportEffectContext = { @@ -40,14 +39,6 @@ export function transformModuleExportEffect( const filter = options.filter ?? (() => true) const references: TransformModuleExportEffectContext[] = [] const effects: string[] = [] - const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) - - function allocateName(base: string): string { - let name = base - for (let i = 2; usedNames.has(name); i++) name = `${base}_${i}` - usedNames.add(name) - return name - } function generate(context: TransformModuleExportEffectContext): void { references.push(context) @@ -114,7 +105,7 @@ export function transformModuleExportEffect( let binding = specifier.local.name if (node.source) { - binding = allocateName(`$$effect_import_${binding}`) + binding = `$$effect_import_${exportName}` const sourceTail = input .slice(node.source.end, node.end) .replace(/;?\s*$/, ';') @@ -153,7 +144,7 @@ export function transformModuleExportEffect( binding = node.declaration.name meta = { defaultExportIdentifierName: binding } } else { - binding = allocateName('$$effect_default') + binding = '$$effect_default' meta = { isFunction: getIsFunction(node.declaration) } } if (!filter('default', meta)) continue diff --git a/packages/plugin-rsc/src/transforms/module-export-hoist.ts b/packages/plugin-rsc/src/transforms/module-export-hoist.ts index b13314fd7..bcb94d113 100644 --- a/packages/plugin-rsc/src/transforms/module-export-hoist.ts +++ b/packages/plugin-rsc/src/transforms/module-export-hoist.ts @@ -13,7 +13,6 @@ import type { TransformModuleExportFilter, TransformModuleExportMeta, } from './module-export' -import { buildScopeTree } from './scope' import { hasDirective, validateNonAsyncFunction } from './utils' type DefaultFunctionDeclaration = Extract< @@ -71,7 +70,6 @@ export function transformModuleExportHoist( return { output, references, referenceNames: [] } } - const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) const candidates: HoistCandidate[] = [] for (const statement of ast.body) { @@ -137,13 +135,6 @@ export function transformModuleExportHoist( } } - function allocateName(base: string): string { - let name = base - for (let i = 2; usedNames.has(name); i++) name = `${base}_${i}` - usedNames.add(name) - return name - } - for (const candidate of candidates) { if (!filter(candidate.exportName, candidate.meta)) continue const node = candidate.node @@ -155,9 +146,7 @@ export function transformModuleExportHoist( } validateNonAsyncFunction(options, node) - const implementation = allocateName( - `$$module_hoist_${references.length}_${candidate.sourceName}`, - ) + const implementation = `$$module_hoist_${references.length}_${candidate.sourceName}` const params = node.params .map((parameter) => input.slice(parameter.start, parameter.end)) .join(', ') diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts index e76878d9a..e426decc6 100644 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -69,7 +69,7 @@ export default async function Page() {} `) }) - test('handles aliases, re-exports, filtering, and name collisions', async () => { + test('handles aliases, re-exports, and filtering', async () => { const result = await transform( ` export { value as action, exposed as skipped } @@ -93,8 +93,8 @@ export * from './other' const value = async () => {} const exposed = 0 - import { remote as $$import_remote } from './dep'; - const $$module_action2 = wrap($$import_remote, "action2"); + import { remote as $$import_action2 } from './dep'; + const $$module_action2 = wrap($$import_action2, "action2"); export { $$module_action2 as action2 }; export * from './other' diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index 8bb2fea1c..14af64283 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -8,7 +8,6 @@ import type { } from 'estree' import MagicString from 'magic-string' import type { ESTree } from 'vite' -import { buildScopeTree } from './scope' import { extractIdentifiers, validateNonAsyncFunction } from './utils' export type TransformModuleExportMeta = { @@ -23,7 +22,7 @@ export type TransformModuleExportMeta = { export type TransformModuleExportGenerateContext = { /** Private source implementation or imported/local value being transformed. */ implementation: string - /** Collision-free local name reserved for the canonical runtime result. */ + /** Generated local name reserved for the canonical runtime result. */ binding: string /** Public module export name, including `default`. */ exportName: string @@ -81,8 +80,8 @@ export type TransformModuleExportResult = { * export position. * * This canonical-binding model intentionally does not preserve source function - * hoisting under the exported name. Selected mutable, destructured, and duplicate - * declaration bindings are rejected instead of receiving implicit reassignment + * hoisting under the exported name. Selected mutable and destructured declaration + * bindings are rejected instead of receiving implicit reassignment * semantics from the deprecated `transformWrapExport` transform. */ export function transformModuleExport( @@ -95,17 +94,6 @@ export function transformModuleExport( const references: TransformModuleExportGenerateContext[] = [] const emissions = new Map() const filter = options.filter ?? (() => true) - const usedNames = new Set(buildScopeTree(ast).moduleScope.declarations) - const declarationCounts = getModuleDeclarationCounts(ast) - - function allocateName(base: string): string { - let name = base - for (let i = 2; usedNames.has(name); i++) { - name = `${base}_${i}` - } - usedNames.add(name) - return name - } function extractDeclaration( identifier: Identifier, @@ -114,19 +102,9 @@ export function transformModuleExport( position: number, ): void { const localName = identifier.name - if (declarationCounts.get(localName) !== 1) { - throw Object.assign(new Error('unsupported duplicate export binding'), { - pos: identifier.start, - }) - } - const implementation = allocateName(`${localName}$$impl`) + const implementation = `${localName}$$impl` output.update(identifier.start, identifier.end, implementation) - - // The source name is available for the generated canonical binding after - // its declaration is renamed to the private implementation. - usedNames.delete(localName) - const binding = allocateName(localName) - generate({ implementation, binding, exportName, meta }, position) + generate({ implementation, binding: localName, exportName, meta }, position) } function emit(position: number, code: string): void { @@ -300,13 +278,13 @@ export function transformModuleExport( // re-exports whose imported implementation is available immediately. const position = node.source ? node.end : input.length if (node.source) { - implementation = allocateName(`$$import_${item.localName}`) + implementation = `$$import_${item.exportName}` emit( node.end, `import { ${item.localName} as ${implementation} } from ${node.source.raw}${sourceTail}`, ) } - const binding = allocateName(`$$module_${item.exportName}`) + const binding = `$$module_${item.exportName}` generate( { implementation, @@ -347,17 +325,8 @@ export function transformModuleExport( validateNonAsyncFunction(options, node.declaration) output.remove(node.start, node.declaration.start) - if (declarationCounts.get(identifier.name) !== 1) { - throw Object.assign( - new Error('unsupported duplicate export binding'), - { - pos: identifier.start, - }, - ) - } - implementation = allocateName(`${identifier.name}$$impl`) + implementation = `${identifier.name}$$impl` output.update(identifier.start, identifier.end, implementation) - usedNames.delete(identifier.name) bindingBase = identifier.name } else { meta = { @@ -374,7 +343,7 @@ export function transformModuleExport( implementation = node.declaration.name output.remove(node.start, node.end) } else { - implementation = allocateName('$$default$$impl') + implementation = '$$default$$impl' output.update( node.start, node.declaration.start, @@ -383,7 +352,7 @@ export function transformModuleExport( } } - const binding = allocateName(bindingBase) + const binding = bindingBase generate( { implementation, binding, exportName: 'default', meta }, node.end, @@ -402,41 +371,6 @@ export function transformModuleExport( } } -function getModuleDeclarationCounts(ast: Program): Map { - const counts = new Map() - const add = (name: string) => counts.set(name, (counts.get(name) ?? 0) + 1) - - for (const statement of ast.body) { - if (statement.type === 'ImportDeclaration') { - for (const specifier of statement.specifiers) add(specifier.local.name) - continue - } - - const declaration = - statement.type === 'ExportNamedDeclaration' || - statement.type === 'ExportDefaultDeclaration' - ? statement.declaration - : statement - if (!declaration) continue - - if (declaration.type === 'VariableDeclaration') { - for (const declarator of declaration.declarations) { - for (const identifier of extractIdentifiers(declarator.id)) { - add(identifier.name) - } - } - } else if ( - (declaration.type === 'FunctionDeclaration' || - declaration.type === 'ClassDeclaration') && - declaration.id - ) { - add(declaration.id.name) - } - } - - return counts -} - function getIsFunction( node: Node | ExportDefaultDeclaration['declaration'], ): boolean | undefined { From d9049478420c772d01f9074464f6926eb9dec4ec Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:25:37 +0900 Subject: [PATCH 10/23] test(rsc): group module export source maps Co-authored-by: OpenCode --- ...-anonymous.js.module-export-effect.snap.js | 14 --- ...t-anonymous.js.module-export-hoist.snap.js | 14 --- ...default-anonymous.js.module-export.snap.js | 14 --- .../wrap-export/default-anonymous.js.snap.md | 69 +++++++++++++ .../default-anonymous.js.wrap-export.snap.js | 14 --- ...identifier.js.module-export-effect.snap.js | 15 --- ...-identifier.js.module-export-hoist.snap.js | 13 --- ...efault-identifier.js.module-export.snap.js | 16 ---- .../wrap-export/default-identifier.js.snap.md | 75 +++++++++++++++ .../default-identifier.js.wrap-export.snap.js | 16 ---- ...ault-named.js.module-export-effect.snap.js | 13 --- ...fault-named.js.module-export-hoist.snap.js | 15 --- .../default-named.js.module-export.snap.js | 14 --- .../wrap-export/default-named.js.snap.md | 69 +++++++++++++ .../default-named.js.wrap-export.snap.js | 14 --- ...ocal-alias.js.module-export-effect.snap.js | 15 --- ...local-alias.js.module-export-hoist.snap.js | 13 --- .../local-alias.js.module-export.snap.js | 16 ---- .../wrap-export/local-alias.js.snap.md | 75 +++++++++++++++ .../local-alias.js.wrap-export.snap.js | 16 ---- ...le-exports.js.module-export-effect.snap.js | 18 ---- ...ple-exports.js.module-export-hoist.snap.js | 21 ---- .../multiple-exports.js.module-export.snap.js | 21 ---- .../wrap-export/multiple-exports.js.snap.md | 96 +++++++++++++++++++ .../multiple-exports.js.wrap-export.snap.js | 19 ---- ...d-function.js.module-export-effect.snap.js | 13 --- ...ed-function.js.module-export-hoist.snap.js | 14 --- .../named-function.js.module-export.snap.js | 14 --- .../wrap-export/named-function.js.snap.md | 67 +++++++++++++ .../named-function.js.wrap-export.snap.js | 13 --- .../reexport.js.module-export-effect.snap.js | 12 --- .../reexport.js.module-export-hoist.snap.js | 9 -- .../reexport.js.module-export.snap.js | 13 --- .../wrap-export/reexport.js.snap.md | 58 +++++++++++ .../reexport.js.wrap-export.snap.js | 13 --- .../variables.js.module-export-effect.snap.js | 16 ---- .../variables.js.module-export-hoist.snap.js | 19 ---- .../variables.js.module-export.snap.js | 19 ---- .../wrap-export/variables.js.snap.md | 86 +++++++++++++++++ .../variables.js.wrap-export.snap.js | 17 ---- .../src/transforms/source-map.test.ts | 24 +++-- .../plugin-rsc/src/transforms/test-utils.ts | 20 ++++ 42 files changed, 629 insertions(+), 493 deletions(-) delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.wrap-export.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.wrap-export.snap.js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js deleted file mode 100644 index f9c8eb700..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-effect.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCx5QkFBZSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzs7OyJ9 -*/ - -'use server' - -const $$effect_default = async function () { - return 'default anonymous function called' -} -export default $$effect_default; - -registerServerReference($$effect_default, "default"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js deleted file mode 100644 index 9fd8d9714..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export-hoist.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MzM1ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJkZWZhdWx0IikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fub255bW91c19kZWZhdWx0KCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJuYW1lIiwgeyB2YWx1ZTogImFub255bW91c19kZWZhdWx0IiB9KTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsT0FBTztBQUFDO0FBQUEscURBQWtCO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzsifQ== -*/ - -'use server' - -export default /* #__PURE__ */ registerServerReference($$module_hoist_0_anonymous_default, "default") - -;async function $$module_hoist_0_anonymous_default() { - return 'default anonymous function called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_anonymous_default, "name", { value: "anonymous_default" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js deleted file mode 100644 index 03cf36fa7..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.module-export.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjEwACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0JCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CmNvbnN0ICQkZGVmYXVsdCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZGVmYXVsdCQkaW1wbCwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKCjMyMwB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsd0JBQWUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUMzQzs7OzsifQ== -*/ - -'use server' - -const $$default$$impl = async function () { - return 'default anonymous function called' -} -const $$default = registerServerReference($$default$$impl, "default"); -export { $$default as default }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md new file mode 100644 index 000000000..4ad95ddfd --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md @@ -0,0 +1,69 @@ +## Input + +```js +'use server' + +export default async function () { + return 'default anonymous function called' +} +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0=) + +```js +'use server' + +const $$default = async function () { + return 'default anonymous function called' +} +; +const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); +export { $$wrap_$$default as default }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjEwACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0JCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CmNvbnN0ICQkZGVmYXVsdCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZGVmYXVsdCQkaW1wbCwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKCjMyMwB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsd0JBQWUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUMzQzs7OzsifQ==) + +```js +'use server' + +const $$default$$impl = async function () { + return 'default anonymous function called' +} +const $$default = registerServerReference($$default$$impl, "default"); +export { $$default as default }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCx5QkFBZSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzs7OyJ9) + +```js +'use server' + +const $$effect_default = async function () { + return 'default anonymous function called' +} +export default $$effect_default; + +registerServerReference($$effect_default, "default"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzM1ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJkZWZhdWx0IikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fub255bW91c19kZWZhdWx0KCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJuYW1lIiwgeyB2YWx1ZTogImFub255bW91c19kZWZhdWx0IiB9KTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsT0FBTztBQUFDO0FBQUEscURBQWtCO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzsifQ==) + +```js +'use server' + +export default /* #__PURE__ */ registerServerReference($$module_hoist_0_anonymous_default, "default") + +;async function $$module_hoist_0_anonymous_default() { + return 'default anonymous function called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_anonymous_default, "name", { value: "anonymous_default" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.wrap-export.snap.js deleted file mode 100644 index d1fd45515..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.wrap-export.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0= -*/ - -'use server' - -const $$default = async function () { - return 'default anonymous function called' -} -; -const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); -export { $$wrap_$$default as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js deleted file mode 100644 index ac3810316..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-effect.snap.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CjM2OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0SWRlbnRpZmllcigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNuQzs7QUFFQSxNQUFNLENBQUMsT0FBTyxDQUFDOzs7In0= -*/ - -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -export default defaultIdentifier - -registerServerReference(defaultIdentifier, "default"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js deleted file mode 100644 index 6d2d91d5b..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export-hoist.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTI0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgozNjcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRUEsTUFBTSxDQUFDLE9BQU8sQ0FBQzsifQ== -*/ - -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -export default defaultIdentifier diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js deleted file mode 100644 index bb580aa1a..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.module-export.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTk5ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgoKY29uc3QgJCRkZWZhdWx0ID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkZGVmYXVsdCBhcyBkZWZhdWx0IH07CgozNDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7Ozs7OzsifQ== -*/ - -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - - -const $$default = registerServerReference(defaultIdentifier, "default"); -export { $$default as default }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md new file mode 100644 index 000000000..5531766b9 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md @@ -0,0 +1,75 @@ +## Input + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +export default defaultIdentifier +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9) + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +const $$default = defaultIdentifier +; +const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); +export { $$wrap_$$default as default }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk5ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgoKY29uc3QgJCRkZWZhdWx0ID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkZGVmYXVsdCBhcyBkZWZhdWx0IH07CgozNDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7Ozs7OzsifQ==) + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + + +const $$default = registerServerReference(defaultIdentifier, "default"); +export { $$default as default }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CjM2OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0SWRlbnRpZmllcigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNuQzs7QUFFQSxNQUFNLENBQUMsT0FBTyxDQUFDOzs7In0=) + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +export default defaultIdentifier + +registerServerReference(defaultIdentifier, "default"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTI0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgozNjcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRUEsTUFBTSxDQUFDLE9BQU8sQ0FBQzsifQ==) + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +export default defaultIdentifier +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.wrap-export.snap.js deleted file mode 100644 index 8f8865f1e..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.wrap-export.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9 -*/ - -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -const $$default = defaultIdentifier -; -const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); -export { $$wrap_$$default as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js deleted file mode 100644 index 7e778f877..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-effect.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CjM1OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBkZWZhdWx0TmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7OzsifQ== -*/ - -'use server' - -export default async function defaultNamedFunction() { - return 'default named function called' -} - -registerServerReference(defaultNamedFunction, "default"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js deleted file mode 100644 index 2646d81f9..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export-hoist.snap.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#Mzk1ACd1c2Ugc2VydmVyJwoKY29uc3QgZGVmYXVsdE5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgZGVmYXVsdE5hbWVkRnVuY3Rpb247Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImRlZmF1bHROYW1lZEZ1bmN0aW9uIiB9KTsKMzEwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07Ozs7QUFFSTtBQUFBLHdEQUFzQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7In0= -*/ - -'use server' - -const defaultNamedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_defaultNamedFunction, "default"); -export default defaultNamedFunction; - -;async function $$module_hoist_0_defaultNamedFunction() { - return 'default named function called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_defaultNamedFunction, "name", { value: "defaultNamedFunction" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js deleted file mode 100644 index eaa62a1a2..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.module-export.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjQxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBkZWZhdWx0TmFtZWRGdW5jdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGRlZmF1bHROYW1lZEZ1bmN0aW9uJCRpbXBsLCAiZGVmYXVsdCIpOwpleHBvcnQgeyBkZWZhdWx0TmFtZWRGdW5jdGlvbiBhcyBkZWZhdWx0IH07CgozNDAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLDBCQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7OzsifQ== -*/ - -'use server' - -async function defaultNamedFunction$$impl() { - return 'default named function called' -} -const defaultNamedFunction = registerServerReference(defaultNamedFunction$$impl, "default"); -export { defaultNamedFunction as default }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md new file mode 100644 index 000000000..754dcbbe3 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md @@ -0,0 +1,69 @@ +## Input + +```js +'use server' + +export default async function defaultNamedFunction() { + return 'default named function called' +} +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0=) + +```js +'use server' + +async function defaultNamedFunction() { + return 'default named function called' +} +; +const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, "default"); +export { $$wrap_defaultNamedFunction as default }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjQxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBkZWZhdWx0TmFtZWRGdW5jdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGRlZmF1bHROYW1lZEZ1bmN0aW9uJCRpbXBsLCAiZGVmYXVsdCIpOwpleHBvcnQgeyBkZWZhdWx0TmFtZWRGdW5jdGlvbiBhcyBkZWZhdWx0IH07CgozNDAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLDBCQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7OzsifQ==) + +```js +'use server' + +async function defaultNamedFunction$$impl() { + return 'default named function called' +} +const defaultNamedFunction = registerServerReference(defaultNamedFunction$$impl, "default"); +export { defaultNamedFunction as default }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CjM1OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBkZWZhdWx0TmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7OzsifQ==) + +```js +'use server' + +export default async function defaultNamedFunction() { + return 'default named function called' +} + +registerServerReference(defaultNamedFunction, "default"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#Mzk1ACd1c2Ugc2VydmVyJwoKY29uc3QgZGVmYXVsdE5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgZGVmYXVsdE5hbWVkRnVuY3Rpb247Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImRlZmF1bHROYW1lZEZ1bmN0aW9uIiB9KTsKMzEwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07Ozs7QUFFSTtBQUFBLHdEQUFzQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7In0=) + +```js +'use server' + +const defaultNamedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_defaultNamedFunction, "default"); +export default defaultNamedFunction; + +;async function $$module_hoist_0_defaultNamedFunction() { + return 'default named function called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_defaultNamedFunction, "name", { value: "defaultNamedFunction" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.wrap-export.snap.js deleted file mode 100644 index 6480fb172..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.wrap-export.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0= -*/ - -'use server' - -async function defaultNamedFunction() { - return 'default named function called' -} -; -const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, "default"); -export { $$wrap_defaultNamedFunction as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js deleted file mode 100644 index 240204610..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-effect.snap.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGxvY2FsQWxpYXMsICJhbGlhc2VkQWN0aW9uIik7CjM4OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOztBQUVBLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7OzsifQ== -*/ - -'use server' - -async function localAlias() { - return 'local alias called' -} - -export { localAlias as aliasedAction } - -registerServerReference(localAlias, "aliasedAction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js deleted file mode 100644 index e963a40eb..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export-hoist.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsQWxpYXMoKSB7XG4gIHJldHVybiAnbG9jYWwgYWxpYXMgY2FsbGVkJ1xufVxuXG5leHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDNUI7O0FBRUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQzsifQ== -*/ - -'use server' - -async function localAlias() { - return 'local alias called' -} - -export { localAlias as aliasedAction } diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js deleted file mode 100644 index 8db29c5a3..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.module-export.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpjb25zdCAkJG1vZHVsZV9hbGlhc2VkQWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCRtb2R1bGVfYWxpYXNlZEFjdGlvbiBhcyBhbGlhc2VkQWN0aW9uIH07CjMzNgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOzs7Ozs7In0= -*/ - -'use server' - -async function localAlias() { - return 'local alias called' -} - - - -const $$module_aliasedAction = registerServerReference(localAlias, "aliasedAction"); -export { $$module_aliasedAction as aliasedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md new file mode 100644 index 000000000..9a35395c4 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md @@ -0,0 +1,75 @@ +## Input + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + +export { localAlias as aliasedAction } +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9) + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + + +; +const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, "aliasedAction"); +export { $$wrap_localAlias as aliasedAction }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpjb25zdCAkJG1vZHVsZV9hbGlhc2VkQWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCRtb2R1bGVfYWxpYXNlZEFjdGlvbiBhcyBhbGlhc2VkQWN0aW9uIH07CjMzNgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOzs7Ozs7In0=) + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + + + +const $$module_aliasedAction = registerServerReference(localAlias, "aliasedAction"); +export { $$module_aliasedAction as aliasedAction }; +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGxvY2FsQWxpYXMsICJhbGlhc2VkQWN0aW9uIik7CjM4OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOztBQUVBLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7OzsifQ==) + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + +export { localAlias as aliasedAction } + +registerServerReference(localAlias, "aliasedAction"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsQWxpYXMoKSB7XG4gIHJldHVybiAnbG9jYWwgYWxpYXMgY2FsbGVkJ1xufVxuXG5leHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDNUI7O0FBRUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQzsifQ==) + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + +export { localAlias as aliasedAction } +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.wrap-export.snap.js deleted file mode 100644 index ec5c2b8f0..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.wrap-export.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9 -*/ - -'use server' - -async function localAlias() { - return 'local alias called' -} - - -; -const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, "aliasedAction"); -export { $$wrap_localAlias as aliasedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js deleted file mode 100644 index caae66e9a..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-effect.snap.js +++ /dev/null @@ -1,18 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjY4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkgewogIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwo1MDcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7O0FBRUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9 -*/ - -'use server' - -export async function firstAction() { - return 'first action called' -} - -export async function secondAction() { - return 'second action called' -} - -registerServerReference(firstAction, "firstAction"); -registerServerReference(secondAction, "secondAction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js deleted file mode 100644 index 1286692a1..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export-hoist.snap.js +++ /dev/null @@ -1,21 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#NjIyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0QWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwoKZXhwb3J0IGNvbnN0IHNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0QWN0aW9uIiB9KTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzFfc2Vjb25kQWN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJzZWNvbmRBY3Rpb24iIH0pOwo0NTAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNOztBQUlOLE1BQU07QUFKQztBQUFBLCtDQUE2QjtBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPO0FBQUEsZ0RBQThCO0FBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDOUI7OyJ9 -*/ - -'use server' - -export const firstAction = /* #__PURE__ */ registerServerReference($$module_hoist_0_firstAction, "firstAction"); - -export const secondAction = /* #__PURE__ */ registerServerReference($$module_hoist_1_secondAction, "secondAction"); - -;async function $$module_hoist_0_firstAction() { - return 'first action called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_firstAction, "name", { value: "firstAction" }); - -;async function $$module_hoist_1_secondAction() { - return 'second action called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_1_secondAction, "name", { value: "secondAction" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js deleted file mode 100644 index 4a85a4665..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.module-export.snap.js +++ /dev/null @@ -1,21 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#NDAwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IGZpcnN0QWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24kJGltcGwsICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiBhcyBmaXJzdEFjdGlvbiB9OwoKCmFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IHNlY29uZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiQkaW1wbCwgInNlY29uZEFjdGlvbiIpOwpleHBvcnQgeyBzZWNvbmRBY3Rpb24gYXMgc2Vjb25kQWN0aW9uIH07Cgo0OTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7Ozs7O0FBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxrQkFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9 -*/ - -'use server' - -async function firstAction$$impl() { - return 'first action called' -} -const firstAction = registerServerReference(firstAction$$impl, "firstAction"); -export { firstAction as firstAction }; - - -async function secondAction$$impl() { - return 'second action called' -} -const secondAction = registerServerReference(secondAction$$impl, "secondAction"); -export { secondAction as secondAction }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md new file mode 100644 index 000000000..dd12ab3ea --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md @@ -0,0 +1,96 @@ +## Input + +```js +'use server' + +export async function firstAction() { + return 'first action called' +} + +export async function secondAction() { + return 'second action called' +} +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0=) + +```js +'use server' + +async function firstAction() { + return 'first action called' +} + +async function secondAction() { + return 'second action called' +} +firstAction = /* #__PURE__ */ registerServerReference(firstAction, "firstAction"); +export { firstAction }; +secondAction = /* #__PURE__ */ registerServerReference(secondAction, "secondAction"); +export { secondAction }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#NDAwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IGZpcnN0QWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24kJGltcGwsICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiBhcyBmaXJzdEFjdGlvbiB9OwoKCmFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IHNlY29uZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiQkaW1wbCwgInNlY29uZEFjdGlvbiIpOwpleHBvcnQgeyBzZWNvbmRBY3Rpb24gYXMgc2Vjb25kQWN0aW9uIH07Cgo0OTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7Ozs7O0FBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxrQkFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9) + +```js +'use server' + +async function firstAction$$impl() { + return 'first action called' +} +const firstAction = registerServerReference(firstAction$$impl, "firstAction"); +export { firstAction as firstAction }; + + +async function secondAction$$impl() { + return 'second action called' +} +const secondAction = registerServerReference(secondAction$$impl, "secondAction"); +export { secondAction as secondAction }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjY4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkgewogIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwo1MDcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7O0FBRUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9) + +```js +'use server' + +export async function firstAction() { + return 'first action called' +} + +export async function secondAction() { + return 'second action called' +} + +registerServerReference(firstAction, "firstAction"); +registerServerReference(secondAction, "secondAction"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#NjIyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0QWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwoKZXhwb3J0IGNvbnN0IHNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0QWN0aW9uIiB9KTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzFfc2Vjb25kQWN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJzZWNvbmRBY3Rpb24iIH0pOwo0NTAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNOztBQUlOLE1BQU07QUFKQztBQUFBLCtDQUE2QjtBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPO0FBQUEsZ0RBQThCO0FBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDOUI7OyJ9) + +```js +'use server' + +export const firstAction = /* #__PURE__ */ registerServerReference($$module_hoist_0_firstAction, "firstAction"); + +export const secondAction = /* #__PURE__ */ registerServerReference($$module_hoist_1_secondAction, "secondAction"); + +;async function $$module_hoist_0_firstAction() { + return 'first action called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_firstAction, "name", { value: "firstAction" }); + +;async function $$module_hoist_1_secondAction() { + return 'second action called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_1_secondAction, "name", { value: "secondAction" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.wrap-export.snap.js deleted file mode 100644 index 4cdb47bf3..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.wrap-export.snap.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0= -*/ - -'use server' - -async function firstAction() { - return 'first action called' -} - -async function secondAction() { - return 'second action called' -} -firstAction = /* #__PURE__ */ registerServerReference(firstAction, "firstAction"); -export { firstAction }; -secondAction = /* #__PURE__ */ registerServerReference(secondAction, "secondAction"); -export { secondAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js deleted file mode 100644 index 9ac5214b0..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-effect.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTQ3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CjMxNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OzsifQ== -*/ - -'use server' - -export async function namedFunction() { - return 'named function called' -} - -registerServerReference(namedFunction, "namedFunction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js deleted file mode 100644 index 72c1949d1..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export-hoist.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MzI4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IG5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9uYW1lZEZ1bmN0aW9uLCAibmFtZWRGdW5jdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8wX25hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogIm5hbWVkRnVuY3Rpb24iIH0pOwoyODUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTTtBQUFDO0FBQUEsaURBQStCO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OyJ9 -*/ - -'use server' - -export const namedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_namedFunction, "namedFunction"); - -;async function $$module_hoist_0_namedFunction() { - return 'named function called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_namedFunction, "name", { value: "namedFunction" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js deleted file mode 100644 index 367bb1bf9..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.module-export.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjE3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBuYW1lZEZ1bmN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiQkaW1wbCwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiBhcyBuYW1lZEZ1bmN0aW9uIH07CgozMDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9COzs7OyJ9 -*/ - -'use server' - -async function namedFunction$$impl() { - return 'named function called' -} -const namedFunction = registerServerReference(namedFunction$$impl, "namedFunction"); -export { namedFunction as namedFunction }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md new file mode 100644 index 000000000..7d7bca214 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md @@ -0,0 +1,67 @@ +## Input + +```js +'use server' + +export async function namedFunction() { + return 'named function called' +} +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ==) + +```js +'use server' + +async function namedFunction() { + return 'named function called' +} +namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, "namedFunction"); +export { namedFunction }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjE3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBuYW1lZEZ1bmN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiQkaW1wbCwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiBhcyBuYW1lZEZ1bmN0aW9uIH07CgozMDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9COzs7OyJ9) + +```js +'use server' + +async function namedFunction$$impl() { + return 'named function called' +} +const namedFunction = registerServerReference(namedFunction$$impl, "namedFunction"); +export { namedFunction as namedFunction }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTQ3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CjMxNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OzsifQ==) + +```js +'use server' + +export async function namedFunction() { + return 'named function called' +} + +registerServerReference(namedFunction, "namedFunction"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzI4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IG5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9uYW1lZEZ1bmN0aW9uLCAibmFtZWRGdW5jdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8wX25hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogIm5hbWVkRnVuY3Rpb24iIH0pOwoyODUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTTtBQUFDO0FBQUEsaURBQStCO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OyJ9) + +```js +'use server' + +export const namedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_namedFunction, "namedFunction"); + +;async function $$module_hoist_0_namedFunction() { + return 'named function called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_namedFunction, "name", { value: "namedFunction" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.wrap-export.snap.js deleted file mode 100644 index 3f597bb58..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.wrap-export.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ== -*/ - -'use server' - -async function namedFunction() { - return 'named function called' -} -namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, "namedFunction"); -export { namedFunction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js deleted file mode 100644 index f9b0e07f5..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-effect.snap.js +++ /dev/null @@ -1,12 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjM3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CjI2MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7In0= -*/ - -'use server' - -export { reexportedAction } from './reexport-source' - -import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source'; -registerServerReference($$effect_import_reexportedAction, "reexportedAction"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js deleted file mode 100644 index 3f2baec49..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export-hoist.snap.js +++ /dev/null @@ -1,9 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#NjcAJ3VzZSBzZXJ2ZXInCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCjI1OAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07In0= -*/ - -'use server' - -export { reexportedAction } from './reexport-source' diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js deleted file mode 100644 index afb0bdf19..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.module-export.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjYzACd1c2Ugc2VydmVyJwoKCmltcG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gYXMgJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKY29uc3QgJCRtb2R1bGVfcmVleHBvcnRlZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CmV4cG9ydCB7ICQkbW9kdWxlX3JlZXhwb3J0ZWRBY3Rpb24gYXMgcmVleHBvcnRlZEFjdGlvbiB9OwoKMTc2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gfSBmcm9tICcuL3JlZXhwb3J0LXNvdXJjZSdcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOzs7Ozs7OyJ9 -*/ - -'use server' - - -import { reexportedAction as $$import_reexportedAction } from './reexport-source'; -const $$module_reexportedAction = registerServerReference($$import_reexportedAction, "reexportedAction"); -export { $$module_reexportedAction as reexportedAction }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md new file mode 100644 index 000000000..a74cbd673 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md @@ -0,0 +1,58 @@ +## Input + +```js +'use server' + +export { reexportedAction } from './reexport-source' +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ==) + +```js +'use server' + + +; +import { reexportedAction as $$import_reexportedAction } from './reexport-source'; +const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, "reexportedAction"); +export { $$wrap_$$import_reexportedAction as reexportedAction }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjYzACd1c2Ugc2VydmVyJwoKCmltcG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gYXMgJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKY29uc3QgJCRtb2R1bGVfcmVleHBvcnRlZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CmV4cG9ydCB7ICQkbW9kdWxlX3JlZXhwb3J0ZWRBY3Rpb24gYXMgcmVleHBvcnRlZEFjdGlvbiB9OwoKMTc2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gfSBmcm9tICcuL3JlZXhwb3J0LXNvdXJjZSdcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOzs7Ozs7OyJ9) + +```js +'use server' + + +import { reexportedAction as $$import_reexportedAction } from './reexport-source'; +const $$module_reexportedAction = registerServerReference($$import_reexportedAction, "reexportedAction"); +export { $$module_reexportedAction as reexportedAction }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjM3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CjI2MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7In0=) + +```js +'use server' + +export { reexportedAction } from './reexport-source' + +import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source'; +registerServerReference($$effect_import_reexportedAction, "reexportedAction"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#NjcAJ3VzZSBzZXJ2ZXInCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCjI1OAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07In0=) + +```js +'use server' + +export { reexportedAction } from './reexport-source' +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.wrap-export.snap.js deleted file mode 100644 index f8c3429ef..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.wrap-export.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ== -*/ - -'use server' - - -; -import { reexportedAction as $$import_reexportedAction } from './reexport-source'; -const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, "reexportedAction"); -export { $$wrap_$$import_reexportedAction as reexportedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js deleted file mode 100644 index 5ee0ce693..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-effect.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#Mjk5ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpOwpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24sICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKNTQ2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRS9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQzs7OzsifQ== -*/ - -'use server' - -export const arrowFunction = async () => 'arrow function called' - -export const functionExpression = async function () { - return 'function expression called' -} - -registerServerReference(arrowFunction, "arrowFunction"); -registerServerReference(functionExpression, "functionExpression"); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js deleted file mode 100644 index c4b958ccc..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export-hoist.snap.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#Njc0ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpCgpleHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzFfZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fycm93RnVuY3Rpb24oKSB7IHJldHVybiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYXJyb3dGdW5jdGlvbiwgIm5hbWUiLCB7IHZhbHVlOiAiYXJyb3dGdW5jdGlvbiIgfSk7Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMV9mdW5jdGlvbkV4cHJlc3Npb24oKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8xX2Z1bmN0aW9uRXhwcmVzc2lvbiwgIm5hbWUiLCB7IHZhbHVlOiAiZnVuY3Rpb25FeHByZXNzaW9uIiB9KTsKNDk0AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUZKO0FBQUEsMERBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRTdCO0FBQUEsc0RBQWtCO0FBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDcEM7OyJ9 -*/ - -'use server' - -export const arrowFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_arrowFunction, "arrowFunction") - -export const functionExpression = /* #__PURE__ */ registerServerReference($$module_hoist_1_functionExpression, "functionExpression") - -;async function $$module_hoist_0_arrowFunction() { return 'arrow function called' }; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_arrowFunction, "name", { value: "arrowFunction" }); - -;async function $$module_hoist_1_functionExpression() { - return 'function expression called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_1_functionExpression, "name", { value: "functionExpression" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js deleted file mode 100644 index 6b0fd15ee..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.module-export.snap.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#NDU1ACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiQkaW1wbCA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCmNvbnN0IGFycm93RnVuY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uJCRpbXBsLCAiYXJyb3dGdW5jdGlvbiIpOwpleHBvcnQgeyBhcnJvd0Z1bmN0aW9uIGFzIGFycm93RnVuY3Rpb24gfTsKCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwgPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwsICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKZXhwb3J0IHsgZnVuY3Rpb25FeHByZXNzaW9uIGFzIGZ1bmN0aW9uRXhwcmVzc2lvbiB9OwoKNTMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7O0FBRXhELEtBQUssQ0FBQyx3QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ3BDOzs7OyJ9 -*/ - -'use server' - -const arrowFunction$$impl = async () => 'arrow function called' -const arrowFunction = registerServerReference(arrowFunction$$impl, "arrowFunction"); -export { arrowFunction as arrowFunction }; - - -const functionExpression$$impl = async function () { - return 'function expression called' -} -const functionExpression = registerServerReference(functionExpression$$impl, "functionExpression"); -export { functionExpression as functionExpression }; - diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md new file mode 100644 index 000000000..ca192da54 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md @@ -0,0 +1,86 @@ +## Input + +```js +'use server' + +export const arrowFunction = async () => 'arrow function called' + +export const functionExpression = async function () { + return 'function expression called' +} +``` + +## wrap-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9) + +```js +'use server' + +let arrowFunction = async () => 'arrow function called' + +let functionExpression = async function () { + return 'function expression called' +} +arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, "arrowFunction"); +export { arrowFunction }; +functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, "functionExpression"); +export { functionExpression }; +``` + +## module-export + +[Source map visualization](https://evanw.github.io/source-map-visualization/#NDU1ACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiQkaW1wbCA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCmNvbnN0IGFycm93RnVuY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uJCRpbXBsLCAiYXJyb3dGdW5jdGlvbiIpOwpleHBvcnQgeyBhcnJvd0Z1bmN0aW9uIGFzIGFycm93RnVuY3Rpb24gfTsKCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwgPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwsICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKZXhwb3J0IHsgZnVuY3Rpb25FeHByZXNzaW9uIGFzIGZ1bmN0aW9uRXhwcmVzc2lvbiB9OwoKNTMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7O0FBRXhELEtBQUssQ0FBQyx3QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ3BDOzs7OyJ9) + +```js +'use server' + +const arrowFunction$$impl = async () => 'arrow function called' +const arrowFunction = registerServerReference(arrowFunction$$impl, "arrowFunction"); +export { arrowFunction as arrowFunction }; + + +const functionExpression$$impl = async function () { + return 'function expression called' +} +const functionExpression = registerServerReference(functionExpression$$impl, "functionExpression"); +export { functionExpression as functionExpression }; + +``` + +## module-export-effect + +[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk5ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpOwpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24sICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKNTQ2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRS9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQzs7OzsifQ==) + +```js +'use server' + +export const arrowFunction = async () => 'arrow function called' + +export const functionExpression = async function () { + return 'function expression called' +} + +registerServerReference(arrowFunction, "arrowFunction"); +registerServerReference(functionExpression, "functionExpression"); +``` + +## module-export-hoist + +[Source map visualization](https://evanw.github.io/source-map-visualization/#Njc0ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpCgpleHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzFfZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fycm93RnVuY3Rpb24oKSB7IHJldHVybiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYXJyb3dGdW5jdGlvbiwgIm5hbWUiLCB7IHZhbHVlOiAiYXJyb3dGdW5jdGlvbiIgfSk7Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMV9mdW5jdGlvbkV4cHJlc3Npb24oKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8xX2Z1bmN0aW9uRXhwcmVzc2lvbiwgIm5hbWUiLCB7IHZhbHVlOiAiZnVuY3Rpb25FeHByZXNzaW9uIiB9KTsKNDk0AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUZKO0FBQUEsMERBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRTdCO0FBQUEsc0RBQWtCO0FBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDcEM7OyJ9) + +```js +'use server' + +export const arrowFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_arrowFunction, "arrowFunction") + +export const functionExpression = /* #__PURE__ */ registerServerReference($$module_hoist_1_functionExpression, "functionExpression") + +;async function $$module_hoist_0_arrowFunction() { return 'arrow function called' }; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_arrowFunction, "name", { value: "arrowFunction" }); + +;async function $$module_hoist_1_functionExpression() { + return 'function expression called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_1_functionExpression, "name", { value: "functionExpression" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.wrap-export.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.wrap-export.snap.js deleted file mode 100644 index 0c9760023..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.wrap-export.snap.js +++ /dev/null @@ -1,17 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9 -*/ - -'use server' - -let arrowFunction = async () => 'arrow function called' - -let functionExpression = async function () { - return 'function expression called' -} -arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, "arrowFunction"); -export { arrowFunction }; -functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, "functionExpression"); -export { functionExpression }; diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index b5151d09d..bc8bb5f84 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -5,7 +5,10 @@ import { transformHoistInlineDirective } from './hoist' import { transformModuleExport } from './module-export' import { transformModuleExportEffect } from './module-export-effect' import { transformModuleExportHoist } from './module-export-hoist' -import { formatSourceMapFixture } from './test-utils' +import { + formatSourceMapFixture, + formatSourceMapMarkdownFixture, +} from './test-utils' import { transformWrapExport } from './wrap-export' describe('source map fixtures', () => { @@ -21,11 +24,11 @@ describe('source map fixtures', () => { 'module-export-hoist', ] as const - for (const model of moduleExportModels) { - for (const [file, load] of Object.entries(moduleExportFixtures)) { - test(`${model}/${path.basename(file)}`, async () => { - const input = ((await load()) as any).default as string - const ast = await parseAstAsync(input) + for (const [file, load] of Object.entries(moduleExportFixtures)) { + test(`module-export-models/${path.basename(file)}`, async () => { + const input = ((await load()) as any).default as string + const ast = await parseAstAsync(input) + const outputs = moduleExportModels.map((model) => { let output if (model === 'wrap-export') { output = transformWrapExport(input, ast, { @@ -50,11 +53,12 @@ describe('source map fixtures', () => { `registerServerReference(${implementation}, ${JSON.stringify(exportName)})`, }).output } - await expect(formatSourceMapFixture(output)).toMatchFileSnapshot( - `${file}.${model}.snap.js`, - ) + return { name: model, output } }) - } + await expect( + formatSourceMapMarkdownFixture(input, outputs), + ).toMatchFileSnapshot(`${file}.snap.md`) + }) } const hoistFixtures = import.meta.glob( diff --git a/packages/plugin-rsc/src/transforms/test-utils.ts b/packages/plugin-rsc/src/transforms/test-utils.ts index 3a7bb0d58..2dd9ef027 100644 --- a/packages/plugin-rsc/src/transforms/test-utils.ts +++ b/packages/plugin-rsc/src/transforms/test-utils.ts @@ -13,6 +13,26 @@ ${visualization} ${code}` } +export function formatSourceMapMarkdownFixture( + input: string, + outputs: readonly { name: string; output: MagicString }[], +): string { + const sections = [`## Input\n\n${formatJavaScriptBlock(input)}`] + for (const { name, output } of outputs) { + const code = output.toString() + const map = output.generateMap({ includeContent: true, hires: 'boundary' }) + const visualization = generateVisualizationLink(code, map.toString()) + sections.push( + `## ${name}\n\n[Source map visualization](${visualization})\n\n${formatJavaScriptBlock(code)}`, + ) + } + return sections.join('\n\n') + '\n' +} + +function formatJavaScriptBlock(code: string): string { + return `\`\`\`js\n${code}${code.endsWith('\n') ? '' : '\n'}\`\`\`` +} + function generateVisualizationLink(code: string, map: string): string { const codeBuffer = Buffer.from(code) const mapBuffer = Buffer.from(map) From 3c7641e396f9bf9cb78dd77a1531fd31e50584c6 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:43:16 +0900 Subject: [PATCH 11/23] refactor(rsc): allow mutable module exports Co-authored-by: OpenCode --- .../src/transforms/module-export.test.ts | 26 ++++++++++++++----- .../src/transforms/module-export.ts | 13 +++------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts index e426decc6..f782b1257 100644 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export.test.ts @@ -69,6 +69,26 @@ export default async function Page() {} `) }) + test('canonicalizes mutable declaration initial values', async () => { + const result = await transform(` +export var action = async () => {} +export let loader = async () => {} +`) + + expect(result.output.toString()).toMatchInlineSnapshot(` + " + var action$$impl = async () => {} + const action = wrap(action$$impl, \"action\"); + export { action as action }; + + let loader$$impl = async () => {} + const loader = wrap(loader$$impl, \"loader\"); + export { loader as loader }; + + " + `) + }) + test('handles aliases, re-exports, and filtering', async () => { const result = await transform( ` @@ -165,11 +185,5 @@ export default Page;` await expect(transform(`export const { action } = value`)).rejects.toThrow( 'unsupported destructured export declaration', ) - await expect( - transform(`export var action = async () => {}; var action;`), - ).rejects.toThrow('unsupported mutable export declaration') - await expect( - transform(`export let action = async () => {}`), - ).rejects.toThrow('unsupported mutable export declaration') }) }) diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts index 14af64283..ba9a227d9 100644 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ b/packages/plugin-rsc/src/transforms/module-export.ts @@ -80,9 +80,9 @@ export type TransformModuleExportResult = { * export position. * * This canonical-binding model intentionally does not preserve source function - * hoisting under the exported name. Selected mutable and destructured declaration - * bindings are rejected instead of receiving implicit reassignment - * semantics from the deprecated `transformWrapExport` transform. + * hoisting or mutable reassignment under the exported name. Consumers can reject + * mutable declarations through `meta.declarationKind` when required. Selected + * destructured declaration bindings remain unsupported. */ export function transformModuleExport( input: string, @@ -218,13 +218,6 @@ export function transformModuleExport( ) { continue } - if (variableDeclaration.kind !== 'const') { - throw Object.assign( - new Error('unsupported mutable export declaration'), - { pos: variableDeclaration.start }, - ) - } - output.remove(node.start, variableDeclaration.start) for (const declaration of declarations) { for (const { identifier, meta } of declaration.selected) { From 9bb4d9556666465c8b0bd269ce3c56834121a85e Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:57:32 +0900 Subject: [PATCH 12/23] test(rsc): compare module export coverage Co-authored-by: OpenCode --- .../wrap-export/default-anonymous.js.snap.md | 16 ++++ .../wrap-export/default-identifier.js.snap.md | 16 ++++ .../wrap-export/default-named.js.snap.md | 16 ++++ .../wrap-export/dependent-declarators.js | 4 + .../dependent-declarators.js.snap.md | 83 +++++++++++++++++ .../wrap-export/destructured-export.js | 5 + .../destructured-export.js.snap.md | 69 ++++++++++++++ .../wrap-export/local-alias.js.snap.md | 16 ++++ .../wrap-export/multiple-exports.js.snap.md | 16 ++++ .../wrap-export/named-function-expression.js | 5 + .../named-function-expression.js.snap.md | 72 ++++++++++++++ .../wrap-export/named-function.js.snap.md | 16 ++++ .../wrap-export/pre-declaration-reference.js | 7 ++ .../pre-declaration-reference.js.snap.md | 93 +++++++++++++++++++ .../wrap-export/reexport.js.snap.md | 16 ++++ .../wrap-export/variables.js.snap.md | 16 ++++ .../src/transforms/source-map.test.ts | 64 ++++++++----- .../plugin-rsc/src/transforms/test-utils.ts | 18 +++- 18 files changed, 521 insertions(+), 27 deletions(-) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md index 4ad95ddfd..39fe6b4d2 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md @@ -10,6 +10,10 @@ export default async function () { ## wrap-export +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0=) ```js @@ -25,6 +29,10 @@ export { $$wrap_$$default as default }; ## module-export +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjEwACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0JCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CmNvbnN0ICQkZGVmYXVsdCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZGVmYXVsdCQkaW1wbCwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKCjMyMwB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsd0JBQWUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUMzQzs7OzsifQ==) ```js @@ -40,6 +48,10 @@ export { $$default as default }; ## module-export-effect +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCx5QkFBZSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzs7OyJ9) ```js @@ -55,6 +67,10 @@ registerServerReference($$effect_default, "default"); ## module-export-hoist +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MzM1ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJkZWZhdWx0IikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fub255bW91c19kZWZhdWx0KCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJuYW1lIiwgeyB2YWx1ZTogImFub255bW91c19kZWZhdWx0IiB9KTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsT0FBTztBQUFDO0FBQUEscURBQWtCO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzsifQ==) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md index 5531766b9..95f4a90fd 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md @@ -12,6 +12,10 @@ export default defaultIdentifier ## wrap-export +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9) ```js @@ -29,6 +33,10 @@ export { $$wrap_$$default as default }; ## module-export +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTk5ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgoKY29uc3QgJCRkZWZhdWx0ID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkZGVmYXVsdCBhcyBkZWZhdWx0IH07CgozNDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7Ozs7OzsifQ==) ```js @@ -46,6 +54,10 @@ export { $$default as default }; ## module-export-effect +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CjM2OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0SWRlbnRpZmllcigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNuQzs7QUFFQSxNQUFNLENBQUMsT0FBTyxDQUFDOzs7In0=) ```js @@ -62,6 +74,10 @@ registerServerReference(defaultIdentifier, "default"); ## module-export-hoist +**Status:** unchanged + +**References:** (none) + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTI0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgozNjcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRUEsTUFBTSxDQUFDLE9BQU8sQ0FBQzsifQ==) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md index 754dcbbe3..5b8e37110 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md @@ -10,6 +10,10 @@ export default async function defaultNamedFunction() { ## wrap-export +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0=) ```js @@ -25,6 +29,10 @@ export { $$wrap_defaultNamedFunction as default }; ## module-export +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjQxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBkZWZhdWx0TmFtZWRGdW5jdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGRlZmF1bHROYW1lZEZ1bmN0aW9uJCRpbXBsLCAiZGVmYXVsdCIpOwpleHBvcnQgeyBkZWZhdWx0TmFtZWRGdW5jdGlvbiBhcyBkZWZhdWx0IH07CgozNDAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLDBCQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7OzsifQ==) ```js @@ -40,6 +48,10 @@ export { defaultNamedFunction as default }; ## module-export-effect +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CjM1OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBkZWZhdWx0TmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7OzsifQ==) ```js @@ -54,6 +66,10 @@ registerServerReference(defaultNamedFunction, "default"); ## module-export-hoist +**Status:** transformed + +**References:** default + [Source map visualization](https://evanw.github.io/source-map-visualization/#Mzk1ACd1c2Ugc2VydmVyJwoKY29uc3QgZGVmYXVsdE5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgZGVmYXVsdE5hbWVkRnVuY3Rpb247Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImRlZmF1bHROYW1lZEZ1bmN0aW9uIiB9KTsKMzEwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07Ozs7QUFFSTtBQUFBLHdEQUFzQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7In0=) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js new file mode 100644 index 000000000..95a50e601 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js @@ -0,0 +1,4 @@ +'use server' + +export const first = async () => 'first action called', + second = first diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md new file mode 100644 index 000000000..4693f0337 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md @@ -0,0 +1,83 @@ +## Input + +```js +'use server' + +export const first = async () => 'first action called', + second = first +``` + +## wrap-export + +**Status:** transformed + +**References:** first, second + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjQ4ACd1c2Ugc2VydmVyJwoKbGV0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLAogIHNlY29uZCA9IGZpcnN0CmZpcnN0ID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGZpcnN0LCAiZmlyc3QiKTsKZXhwb3J0IHsgZmlyc3QgfTsKc2Vjb25kID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCwgInNlY29uZCIpOwpleHBvcnQgeyBzZWNvbmQgfTsKMzU4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEdBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFg7QUFBQTtBQUFBO0FBQUE7In0=) + +```js +'use server' + +let first = async () => 'first action called', + second = first +first = /* #__PURE__ */ registerServerReference(first, "first"); +export { first }; +second = /* #__PURE__ */ registerServerReference(second, "second"); +export { second }; +``` + +## module-export + +**Status:** transformed + +**References:** first, second + +[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjc0ACd1c2Ugc2VydmVyJwoKY29uc3QgZmlyc3QkJGltcGwgPSBhc3luYyAoKSA9PiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcsCiAgc2Vjb25kJCRpbXBsID0gZmlyc3QKY29uc3QgZmlyc3QgPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdCQkaW1wbCwgImZpcnN0Iik7CmV4cG9ydCB7IGZpcnN0IGFzIGZpcnN0IH07CmNvbnN0IHNlY29uZCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCQkaW1wbCwgInNlY29uZCIpOwpleHBvcnQgeyBzZWNvbmQgYXMgc2Vjb25kIH07CgozNDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLFxuICBzZWNvbmQgPSBmaXJzdFxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFdBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDdEQsQ0FBQyxDQUFDLFlBQU0sQ0FBQyxDQUFDLENBQUM7Ozs7OzsifQ==) + +```js +'use server' + +const first$$impl = async () => 'first action called', + second$$impl = first +const first = registerServerReference(first$$impl, "first"); +export { first as first }; +const second = registerServerReference(second$$impl, "second"); +export { second as second }; + +``` + +## module-export-effect + +**Status:** transformed + +**References:** first, second + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLAogIHNlY29uZCA9IGZpcnN0CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdCwgImZpcnN0Iik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCwgInNlY29uZCIpOwozNTEAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLFxuICBzZWNvbmQgPSBmaXJzdFxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzs7OyJ9) + +```js +'use server' + +export const first = async () => 'first action called', + second = first + +registerServerReference(first, "first"); +registerServerReference(second, "second"); +``` + +## module-export-hoist + +**Status:** transformed + +**References:** first + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjkzACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0ID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3QsICJmaXJzdCIpLAogIHNlY29uZCA9IGZpcnN0Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9maXJzdCgpIHsgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3QsICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0IiB9KTsKMzIyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMseUVBQWtDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFU7QUFBQSxrREFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTTs7In0=) + +```js +'use server' + +export const first = /* #__PURE__ */ registerServerReference($$module_hoist_0_first, "first"), + second = first + +;async function $$module_hoist_0_first() { return 'first action called' }; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_first, "name", { value: "first" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js new file mode 100644 index 000000000..488a76ef3 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js @@ -0,0 +1,5 @@ +'use server' + +const source = async () => 'destructured export called' + +export const { action } = { action: source } diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md new file mode 100644 index 000000000..9cf12a82a --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md @@ -0,0 +1,69 @@ +## Input + +```js +'use server' + +const source = async () => 'destructured export called' + +export const { action } = { action: source } +``` + +## wrap-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKbGV0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKNDMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmNvbnN0IHNvdXJjZSA9IGFzeW5jICgpID0+ICdkZXN0cnVjdHVyZWQgZXhwb3J0IGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTTs7QUFFL0MsR0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQTNDO0FBQUE7In0=) + +```js +'use server' + +const source = async () => 'destructured export called' + +let { action } = { action: source } +action = /* #__PURE__ */ registerServerReference(action, "action"); +export { action }; +``` + +## module-export + +**Status:** error + +```text +unsupported destructured export declaration +``` + +## module-export-effect + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTYwACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwo0MzEAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNOztBQUV0RCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDOzs7In0=) + +```js +'use server' + +const source = async () => 'destructured export called' + +export const { action } = { action: source } + +registerServerReference(action, "action"); +``` + +## module-export-hoist + +**Status:** unchanged + +**References:** (none) + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KNDI5AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmNvbnN0IHNvdXJjZSA9IGFzeW5jICgpID0+ICdkZXN0cnVjdHVyZWQgZXhwb3J0IGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTTs7QUFFdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQzsifQ==) + +```js +'use server' + +const source = async () => 'destructured export called' + +export const { action } = { action: source } +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md index 9a35395c4..4228063dd 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md @@ -12,6 +12,10 @@ export { localAlias as aliasedAction } ## wrap-export +**Status:** transformed + +**References:** aliasedAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9) ```js @@ -29,6 +33,10 @@ export { $$wrap_localAlias as aliasedAction }; ## module-export +**Status:** transformed + +**References:** aliasedAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpjb25zdCAkJG1vZHVsZV9hbGlhc2VkQWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCRtb2R1bGVfYWxpYXNlZEFjdGlvbiBhcyBhbGlhc2VkQWN0aW9uIH07CjMzNgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOzs7Ozs7In0=) ```js @@ -46,6 +54,10 @@ export { $$module_aliasedAction as aliasedAction }; ## module-export-effect +**Status:** transformed + +**References:** aliasedAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGxvY2FsQWxpYXMsICJhbGlhc2VkQWN0aW9uIik7CjM4OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOztBQUVBLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7OzsifQ==) ```js @@ -62,6 +74,10 @@ registerServerReference(localAlias, "aliasedAction"); ## module-export-hoist +**Status:** unchanged + +**References:** (none) + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsQWxpYXMoKSB7XG4gIHJldHVybiAnbG9jYWwgYWxpYXMgY2FsbGVkJ1xufVxuXG5leHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDNUI7O0FBRUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQzsifQ==) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md index dd12ab3ea..117dbec01 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md @@ -14,6 +14,10 @@ export async function secondAction() { ## wrap-export +**Status:** transformed + +**References:** firstAction, secondAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0=) ```js @@ -34,6 +38,10 @@ export { secondAction }; ## module-export +**Status:** transformed + +**References:** firstAction, secondAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#NDAwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IGZpcnN0QWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24kJGltcGwsICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiBhcyBmaXJzdEFjdGlvbiB9OwoKCmFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IHNlY29uZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiQkaW1wbCwgInNlY29uZEFjdGlvbiIpOwpleHBvcnQgeyBzZWNvbmRBY3Rpb24gYXMgc2Vjb25kQWN0aW9uIH07Cgo0OTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7Ozs7O0FBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxrQkFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9) ```js @@ -56,6 +64,10 @@ export { secondAction as secondAction }; ## module-export-effect +**Status:** transformed + +**References:** firstAction, secondAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjY4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkgewogIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwo1MDcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7O0FBRUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9) ```js @@ -75,6 +87,10 @@ registerServerReference(secondAction, "secondAction"); ## module-export-hoist +**Status:** transformed + +**References:** firstAction, secondAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#NjIyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0QWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwoKZXhwb3J0IGNvbnN0IHNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0QWN0aW9uIiB9KTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzFfc2Vjb25kQWN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJzZWNvbmRBY3Rpb24iIH0pOwo0NTAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNOztBQUlOLE1BQU07QUFKQztBQUFBLCtDQUE2QjtBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPO0FBQUEsZ0RBQThCO0FBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDOUI7OyJ9) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js new file mode 100644 index 000000000..169221675 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js @@ -0,0 +1,5 @@ +'use server' + +export const action = async function actionImplementation() { + return 'named function expression called' +} diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md new file mode 100644 index 000000000..6eeb5420d --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md @@ -0,0 +1,72 @@ +## Input + +```js +'use server' + +export const action = async function actionImplementation() { + return 'named function expression called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjAwACd1c2Ugc2VydmVyJwoKbGV0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkgewogIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gZXhwcmVzc2lvbiBjYWxsZWQnCn0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBhY3Rpb25JbXBsZW1lbnRhdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEdBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDO0FBRkE7QUFBQTsifQ==) + +```js +'use server' + +let action = async function actionImplementation() { + return 'named function expression called' +} +action = /* #__PURE__ */ registerServerReference(action, "action"); +export { action }; +``` + +## module-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjE1ACd1c2Ugc2VydmVyJwoKY29uc3QgYWN0aW9uJCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gYWN0aW9uSW1wbGVtZW50YXRpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBhY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhY3Rpb24kJGltcGwsICJhY3Rpb24iKTsKZXhwb3J0IHsgYWN0aW9uIGFzIGFjdGlvbiB9OwoKMzgwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBhY3Rpb25JbXBsZW1lbnRhdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxZQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDOzs7OyJ9) + +```js +'use server' + +const action$$impl = async function actionImplementation() { + return 'named function expression called' +} +const action = registerServerReference(action$$impl, "action"); +export { action as action }; + +``` + +## module-export-effect + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY2ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkgewogIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gZXhwcmVzc2lvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwozODkAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDOzs7In0=) + +```js +'use server' + +export const action = async function actionImplementation() { + return 'named function expression called' +} + +registerServerReference(action, "action"); +``` + +## module-export-hoist + +**Status:** error + +```text +unsupported named function expression export +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md index 7d7bca214..acd0f4724 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md @@ -10,6 +10,10 @@ export async function namedFunction() { ## wrap-export +**Status:** transformed + +**References:** namedFunction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ==) ```js @@ -24,6 +28,10 @@ export { namedFunction }; ## module-export +**Status:** transformed + +**References:** namedFunction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjE3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBuYW1lZEZ1bmN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiQkaW1wbCwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiBhcyBuYW1lZEZ1bmN0aW9uIH07CgozMDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9COzs7OyJ9) ```js @@ -39,6 +47,10 @@ export { namedFunction as namedFunction }; ## module-export-effect +**Status:** transformed + +**References:** namedFunction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MTQ3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CjMxNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OzsifQ==) ```js @@ -53,6 +65,10 @@ registerServerReference(namedFunction, "namedFunction"); ## module-export-hoist +**Status:** transformed + +**References:** namedFunction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MzI4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IG5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9uYW1lZEZ1bmN0aW9uLCAibmFtZWRGdW5jdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8wX25hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogIm5hbWVkRnVuY3Rpb24iIH0pOwoyODUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTTtBQUFDO0FBQUEsaURBQStCO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OyJ9) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js new file mode 100644 index 000000000..151114097 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js @@ -0,0 +1,7 @@ +'use server' + +void action + +export async function action() { + return 'action called' +} diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md new file mode 100644 index 000000000..2f7b023ea --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md @@ -0,0 +1,93 @@ +## Input + +```js +'use server' + +void action + +export async function action() { + return 'action called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY3ACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzE4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3ZCO0FBRkE7QUFBQTsifQ==) + +```js +'use server' + +void action + +async function action() { + return 'action called' +} +action = /* #__PURE__ */ registerServerReference(action, "action"); +export { action }; +``` + +## module-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KY29uc3QgYWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uJCRpbXBsLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiBhcyBhY3Rpb24gfTsKCjMxMQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG52b2lkIGFjdGlvblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uKCkge1xuICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxJQUFJLENBQUM7O0FBRUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2Qjs7OzsifQ==) + +```js +'use server' + +void action + +async function action$$impl() { + return 'action called' +} +const action = registerServerReference(action$$impl, "action"); +export { action as action }; + +``` + +## module-export-effect + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTMxACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7CiAgcmV0dXJuICdhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhY3Rpb24sICJhY3Rpb24iKTsKMzIwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFTCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2Qjs7OyJ9) + +```js +'use server' + +void action + +export async function action() { + return 'action called' +} + +registerServerReference(action, "action"); +``` + +## module-export-hoist + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjkxACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmV4cG9ydCBjb25zdCBhY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hY3Rpb24sICJhY3Rpb24iKTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2FjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn07Ci8qICNfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoJCRtb2R1bGVfaG9pc3RfMF9hY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImFjdGlvbiIgfSk7CjI5MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG52b2lkIGFjdGlvblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uKCkge1xuICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxJQUFJLENBQUM7O0FBRUwsTUFBTTtBQUFDO0FBQUEsMENBQXdCO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2Qjs7In0=) + +```js +'use server' + +void action + +export const action = /* #__PURE__ */ registerServerReference($$module_hoist_0_action, "action"); + +;async function $$module_hoist_0_action() { + return 'action called' +}; +/* #__PURE__ */ Object.defineProperty($$module_hoist_0_action, "name", { value: "action" }); +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md index a74cbd673..c9c6d6c21 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md @@ -8,6 +8,10 @@ export { reexportedAction } from './reexport-source' ## wrap-export +**Status:** transformed + +**References:** reexportedAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ==) ```js @@ -22,6 +26,10 @@ export { $$wrap_$$import_reexportedAction as reexportedAction }; ## module-export +**Status:** transformed + +**References:** reexportedAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjYzACd1c2Ugc2VydmVyJwoKCmltcG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gYXMgJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKY29uc3QgJCRtb2R1bGVfcmVleHBvcnRlZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CmV4cG9ydCB7ICQkbW9kdWxlX3JlZXhwb3J0ZWRBY3Rpb24gYXMgcmVleHBvcnRlZEFjdGlvbiB9OwoKMTc2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gfSBmcm9tICcuL3JlZXhwb3J0LXNvdXJjZSdcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOzs7Ozs7OyJ9) ```js @@ -36,6 +44,10 @@ export { $$module_reexportedAction as reexportedAction }; ## module-export-effect +**Status:** transformed + +**References:** reexportedAction + [Source map visualization](https://evanw.github.io/source-map-visualization/#MjM3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CjI2MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7In0=) ```js @@ -49,6 +61,10 @@ registerServerReference($$effect_import_reexportedAction, "reexportedAction"); ## module-export-hoist +**Status:** unchanged + +**References:** (none) + [Source map visualization](https://evanw.github.io/source-map-visualization/#NjcAJ3VzZSBzZXJ2ZXInCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCjI1OAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07In0=) ```js diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md index ca192da54..fc4feeb87 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md @@ -12,6 +12,10 @@ export const functionExpression = async function () { ## wrap-export +**Status:** transformed + +**References:** arrowFunction, functionExpression + [Source map visualization](https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9) ```js @@ -30,6 +34,10 @@ export { functionExpression }; ## module-export +**Status:** transformed + +**References:** arrowFunction, functionExpression + [Source map visualization](https://evanw.github.io/source-map-visualization/#NDU1ACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiQkaW1wbCA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCmNvbnN0IGFycm93RnVuY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uJCRpbXBsLCAiYXJyb3dGdW5jdGlvbiIpOwpleHBvcnQgeyBhcnJvd0Z1bmN0aW9uIGFzIGFycm93RnVuY3Rpb24gfTsKCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwgPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwsICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKZXhwb3J0IHsgZnVuY3Rpb25FeHByZXNzaW9uIGFzIGZ1bmN0aW9uRXhwcmVzc2lvbiB9OwoKNTMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7O0FBRXhELEtBQUssQ0FBQyx3QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ3BDOzs7OyJ9) ```js @@ -50,6 +58,10 @@ export { functionExpression as functionExpression }; ## module-export-effect +**Status:** transformed + +**References:** arrowFunction, functionExpression + [Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk5ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpOwpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24sICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKNTQ2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRS9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQzs7OzsifQ==) ```js @@ -67,6 +79,10 @@ registerServerReference(functionExpression, "functionExpression"); ## module-export-hoist +**Status:** transformed + +**References:** arrowFunction, functionExpression + [Source map visualization](https://evanw.github.io/source-map-visualization/#Njc0ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpCgpleHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzFfZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fycm93RnVuY3Rpb24oKSB7IHJldHVybiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYXJyb3dGdW5jdGlvbiwgIm5hbWUiLCB7IHZhbHVlOiAiYXJyb3dGdW5jdGlvbiIgfSk7Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMV9mdW5jdGlvbkV4cHJlc3Npb24oKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8xX2Z1bmN0aW9uRXhwcmVzc2lvbiwgIm5hbWUiLCB7IHZhbHVlOiAiZnVuY3Rpb25FeHByZXNzaW9uIiB9KTsKNDk0AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUZKO0FBQUEsMERBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRTdCO0FBQUEsc0RBQWtCO0FBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDcEM7OyJ9) ```js diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index bc8bb5f84..b218f8f32 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -29,31 +29,47 @@ describe('source map fixtures', () => { const input = ((await load()) as any).default as string const ast = await parseAstAsync(input) const outputs = moduleExportModels.map((model) => { - let output - if (model === 'wrap-export') { - output = transformWrapExport(input, ast, { - runtime: (value, name) => - `registerServerReference(${value}, ${JSON.stringify(name)})`, - }).output - } else if (model === 'module-export') { - output = transformModuleExport(input, ast, { - generate: ({ implementation, binding, exportName }) => - `const ${binding} = registerServerReference(${implementation}, ${JSON.stringify(exportName)});\n` + - `export { ${binding} as ${exportName} };`, - }).output - } else if (model === 'module-export-effect') { - output = transformModuleExportEffect(input, ast, { - generate: ({ binding, exportName }) => - `registerServerReference(${binding}, ${JSON.stringify(exportName)});`, - }).output - } else { - output = transformModuleExportHoist(input, ast, { - directive: 'use server', - runtime: ({ implementation, exportName }) => - `registerServerReference(${implementation}, ${JSON.stringify(exportName)})`, - }).output + try { + let output + let references: string[] + if (model === 'wrap-export') { + const result = transformWrapExport(input, ast, { + runtime: (value, name) => + `registerServerReference(${value}, ${JSON.stringify(name)})`, + }) + output = result.output + references = result.exportNames + } else if (model === 'module-export') { + const result = transformModuleExport(input, ast, { + generate: ({ implementation, binding, exportName }) => + `const ${binding} = registerServerReference(${implementation}, ${JSON.stringify(exportName)});\n` + + `export { ${binding} as ${exportName} };`, + }) + output = result.output + references = result.referenceNames + } else if (model === 'module-export-effect') { + const result = transformModuleExportEffect(input, ast, { + generate: ({ binding, exportName }) => + `registerServerReference(${binding}, ${JSON.stringify(exportName)});`, + }) + output = result.output + references = result.referenceNames + } else { + const result = transformModuleExportHoist(input, ast, { + directive: 'use server', + runtime: ({ implementation, exportName }) => + `registerServerReference(${implementation}, ${JSON.stringify(exportName)})`, + }) + output = result.output + references = result.referenceNames + } + return { name: model, output, references } + } catch (error) { + return { + name: model, + error: error instanceof Error ? error.message : String(error), + } } - return { name: model, output } }) await expect( formatSourceMapMarkdownFixture(input, outputs), diff --git a/packages/plugin-rsc/src/transforms/test-utils.ts b/packages/plugin-rsc/src/transforms/test-utils.ts index 2dd9ef027..50e8a2ac2 100644 --- a/packages/plugin-rsc/src/transforms/test-utils.ts +++ b/packages/plugin-rsc/src/transforms/test-utils.ts @@ -15,15 +15,27 @@ ${code}` export function formatSourceMapMarkdownFixture( input: string, - outputs: readonly { name: string; output: MagicString }[], + outputs: readonly { + name: string + output?: MagicString + error?: string + references?: readonly string[] + }[], ): string { const sections = [`## Input\n\n${formatJavaScriptBlock(input)}`] - for (const { name, output } of outputs) { + for (const { name, output, error, references } of outputs) { + if (error !== undefined) { + sections.push( + `## ${name}\n\n**Status:** error\n\n\`\`\`text\n${error}\n\`\`\``, + ) + continue + } + if (!output) throw new Error(`missing output for ${name}`) const code = output.toString() const map = output.generateMap({ includeContent: true, hires: 'boundary' }) const visualization = generateVisualizationLink(code, map.toString()) sections.push( - `## ${name}\n\n[Source map visualization](${visualization})\n\n${formatJavaScriptBlock(code)}`, + `## ${name}\n\n**Status:** ${output.hasChanged() ? 'transformed' : 'unchanged'}\n\n**References:** ${references?.join(', ') || '(none)'}\n\n[Source map visualization](${visualization})\n\n${formatJavaScriptBlock(code)}`, ) } return sections.join('\n\n') + '\n' From 18c328fb20485107a56fbf339690aa2ff9b8af03 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 16:37:29 +0900 Subject: [PATCH 13/23] fix(rsc): preserve module export effect mappings Co-authored-by: OpenCode --- packages/plugin-rsc/e2e/source-map.test.ts | 17 +-- .../wrap-export/default-anonymous.js.snap.md | 4 +- .../wrap-export/default-identifier.js.snap.md | 7 +- .../wrap-export/default-named.js.snap.md | 5 +- .../dependent-declarators.js.snap.md | 5 +- .../destructured-export.js.snap.md | 5 +- .../wrap-export/local-alias.js.snap.md | 5 +- .../wrap-export/multiple-exports.js.snap.md | 9 +- .../named-function-expression.js.snap.md | 5 +- .../wrap-export/named-function.js.snap.md | 5 +- .../pre-declaration-reference.js.snap.md | 5 +- .../wrap-export/reexport.js.snap.md | 6 +- .../wrap-export/variables.js.snap.md | 9 +- .../src/transforms/module-export-effect.ts | 115 ++++++++++++++---- .../transforms/module-export-models.test.ts | 41 +++++-- .../src/transforms/server-action.test.ts | 9 +- .../src/transforms/server-action.ts | 17 +-- .../src/transforms/source-map.test.ts | 4 +- .../plugin-rsc/src/transforms/waku.test.ts | 31 ++--- 19 files changed, 209 insertions(+), 95 deletions(-) diff --git a/packages/plugin-rsc/e2e/source-map.test.ts b/packages/plugin-rsc/e2e/source-map.test.ts index 9ad059dc7..739e560c1 100644 --- a/packages/plugin-rsc/e2e/source-map.test.ts +++ b/packages/plugin-rsc/e2e/source-map.test.ts @@ -49,18 +49,16 @@ const serverReferenceCases: { route: '/defaults', references: [ { - // Currently resolves to the end of the declaration. name: 'default-named-function', - rolldown: '/src/features/defaults/named.ts:4:0', + rolldown: '/src/features/defaults/named.ts:2:0', }, { - // Currently resolves to the end of the declaration. name: 'default-anonymous-function', - rolldown: '/src/features/defaults/anonymous.ts:4:0', + rolldown: '/src/features/defaults/anonymous.ts:2:0', }, { name: 'default-identifier', - rolldown: '/src/features/defaults/identifier.ts:6:15', + rolldown: '/src/features/defaults/identifier.ts:6:0', }, ], }, @@ -68,20 +66,17 @@ const serverReferenceCases: { route: '/specifiers', references: [ { - // Currently resolves to the end of the local declaration. name: 'local-alias', - rolldown: '/src/features/specifiers/local-alias.ts:4:0', + rolldown: '/src/features/specifiers/local-alias.ts:6:0', }, { - // Rolldown resolves to the directive while Rollup has no mapping. name: 're-export', - rolldown: '/src/features/specifiers/reexport.ts:0:0', + rolldown: '/src/features/specifiers/reexport.ts:2:0', rollup: null, }, { - // Rolldown resolves to the directive while Rollup has no mapping. name: 'export-all', - rolldown: '/src/features/specifiers/export-all.ts:0:0', + rolldown: '/src/features/specifiers/export-all.ts:2:0', rollup: null, }, ], diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md index 39fe6b4d2..ef362e98d 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md @@ -52,7 +52,7 @@ export { $$default as default }; **References:** default -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCx5QkFBZSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzs7OyJ9) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgJCRlZmZlY3RfZGVmYXVsdDsKMzM1AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFTCx5QkFBUyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDO0FBRkE7QUFBQTtBQUFBOyJ9) ```js 'use server' @@ -60,9 +60,9 @@ export { $$default as default }; const $$effect_default = async function () { return 'default anonymous function called' } -export default $$effect_default; registerServerReference($$effect_default, "default"); +export default $$effect_default; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md index 95f4a90fd..933a4bef7 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md @@ -58,7 +58,7 @@ export { $$default as default }; **References:** default -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CjM2OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0SWRlbnRpZmllcigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNuQzs7QUFFQSxNQUFNLENBQUMsT0FBTyxDQUFDOzs7In0=) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGVmZmVjdF9kZWZhdWx0ID0gZGVmYXVsdElkZW50aWZpZXI7CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGVmZmVjdF9kZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwozNjIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRU07QUFBTjtBQUFBO0FBQUE7In0=) ```js 'use server' @@ -67,9 +67,10 @@ async function defaultIdentifier() { return 'default identifier called' } -export default defaultIdentifier +const $$effect_default = defaultIdentifier; -registerServerReference(defaultIdentifier, "default"); +registerServerReference($$effect_default, "default"); +export default $$effect_default; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md index 5b8e37110..23ac408d0 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md @@ -52,16 +52,17 @@ export { defaultNamedFunction as default }; **References:** default -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CjM1OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBkZWZhdWx0TmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7OzsifQ==) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTkzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CmV4cG9ydCBkZWZhdWx0IGRlZmF1bHROYW1lZEZ1bmN0aW9uOwozNTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2QztBQUZBO0FBQUE7QUFBQTsifQ==) ```js 'use server' -export default async function defaultNamedFunction() { +async function defaultNamedFunction() { return 'default named function called' } registerServerReference(defaultNamedFunction, "default"); +export default defaultNamedFunction; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md index 4693f0337..e34634781 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md @@ -52,16 +52,17 @@ export { second as second }; **References:** first, second -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLAogIHNlY29uZCA9IGZpcnN0CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdCwgImZpcnN0Iik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCwgInNlY29uZCIpOwozNTEAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLFxuICBzZWNvbmQgPSBmaXJzdFxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzs7OyJ9) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTkxACd1c2Ugc2VydmVyJwoKY29uc3QgZmlyc3QgPSBhc3luYyAoKSA9PiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcsCiAgc2Vjb25kID0gZmlyc3QKCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGZpcnN0LCAiZmlyc3QiKTsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2Uoc2Vjb25kLCAic2Vjb25kIik7CmV4cG9ydCB7IGZpcnN0LCBzZWNvbmQgfTsKMzU4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFg7QUFBQTtBQUFBO0FBQUE7In0=) ```js 'use server' -export const first = async () => 'first action called', +const first = async () => 'first action called', second = first registerServerReference(first, "first"); registerServerReference(second, "second"); +export { first, second }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md index 9cf12a82a..bf210bba1 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md @@ -40,16 +40,17 @@ unsupported destructured export declaration **References:** action -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTYwACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwo0MzEAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNOztBQUV0RCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDOzs7In0=) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiB9Owo0MzUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNOztBQUUvQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFBM0M7QUFBQTtBQUFBOyJ9) ```js 'use server' const source = async () => 'destructured export called' -export const { action } = { action: source } +const { action } = { action: source } registerServerReference(action, "action"); +export { action }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md index 4228063dd..8fdffc3da 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md @@ -58,7 +58,7 @@ export { $$module_aliasedAction as aliasedAction }; **References:** aliasedAction -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGxvY2FsQWxpYXMsICJhbGlhc2VkQWN0aW9uIik7CjM4OQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOztBQUVBLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7OzsifQ==) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShsb2NhbEFsaWFzLCAiYWxpYXNlZEFjdGlvbiIpOwpleHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfQozNDgAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7O0FBRUE7QUFBQTtBQUFBOyJ9) ```js 'use server' @@ -67,9 +67,10 @@ async function localAlias() { return 'local alias called' } -export { localAlias as aliasedAction } + registerServerReference(localAlias, "aliasedAction"); +export { localAlias as aliasedAction } ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md index 117dbec01..eecedac9b 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md @@ -68,21 +68,24 @@ export { secondAction as secondAction }; **References:** firstAction, secondAction -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjY4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkgewogIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwo1MDcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7O0FBRUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzA0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiB9OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2Uoc2Vjb25kQWN0aW9uLCAic2Vjb25kQWN0aW9uIik7CmV4cG9ydCB7IHNlY29uZEFjdGlvbiB9Owo1MTQAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUM3Qjs7QUFFTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUM5QjtBQU5BO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTsifQ==) ```js 'use server' -export async function firstAction() { +async function firstAction() { return 'first action called' } -export async function secondAction() { +async function secondAction() { return 'second action called' } registerServerReference(firstAction, "firstAction"); +export { firstAction }; + registerServerReference(secondAction, "secondAction"); +export { secondAction }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md index 6eeb5420d..1554a5411 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md @@ -51,16 +51,17 @@ export { action as action }; **References:** action -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY2ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkgewogIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gZXhwcmVzc2lvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwozODkAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDOzs7In0=) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTc4ACd1c2Ugc2VydmVyJwoKY29uc3QgYWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gYWN0aW9uSW1wbGVtZW50YXRpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiB9OwozOTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDMUM7QUFGQTtBQUFBO0FBQUE7In0=) ```js 'use server' -export const action = async function actionImplementation() { +const action = async function actionImplementation() { return 'named function expression called' } registerServerReference(action, "action"); +export { action }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md index acd0f4724..8ed876491 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md @@ -51,16 +51,17 @@ export { namedFunction as namedFunction }; **References:** namedFunction -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTQ3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CjMxNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OzsifQ==) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiB9OwozMTcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7QUFGQTtBQUFBO0FBQUE7In0=) ```js 'use server' -export async function namedFunction() { +async function namedFunction() { return 'named function called' } registerServerReference(namedFunction, "namedFunction"); +export { namedFunction }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md index 2f7b023ea..d0222a26c 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md @@ -57,18 +57,19 @@ export { action as action }; **References:** action -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTMxACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7CiAgcmV0dXJuICdhY3Rpb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhY3Rpb24sICJhY3Rpb24iKTsKMzIwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFTCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2Qjs7OyJ9) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTQzACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3ZCO0FBRkE7QUFBQTtBQUFBOyJ9) ```js 'use server' void action -export async function action() { +async function action() { return 'action called' } registerServerReference(action, "action"); +export { action }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md index c9c6d6c21..10aa2ceb7 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md @@ -48,15 +48,17 @@ export { $$module_reexportedAction as reexportedAction }; **References:** reexportedAction -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjM3ACd1c2Ugc2VydmVyJwoKZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CjI2MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7In0=) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjM4ACd1c2Ugc2VydmVyJwoKCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZWZmZWN0X2ltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsxODgAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJ1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07OztBQUVYO0FBQUE7QUFBQTs7In0=) ```js 'use server' + + export { reexportedAction } from './reexport-source' +registerServerReference($$effect_import_reexportedAction, "reexportedAction"); import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source'; -registerServerReference($$effect_import_reexportedAction, "reexportedAction"); ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md index fc4feeb87..35515bddf 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md @@ -62,19 +62,22 @@ export { functionExpression as functionExpression }; **References:** arrowFunction, functionExpression -[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk5ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpOwpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24sICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKNTQ2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRS9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQzs7OzsifQ==) +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzQzACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NTMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTsifQ==) ```js 'use server' -export const arrowFunction = async () => 'arrow function called' +const arrowFunction = async () => 'arrow function called' -export const functionExpression = async function () { +const functionExpression = async function () { return 'function expression called' } registerServerReference(arrowFunction, "arrowFunction"); +export { arrowFunction }; + registerServerReference(functionExpression, "functionExpression"); +export { functionExpression }; ``` ## module-export-hoist diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.ts b/packages/plugin-rsc/src/transforms/module-export-effect.ts index 7eab5ee18..a17d95be9 100644 --- a/packages/plugin-rsc/src/transforms/module-export-effect.ts +++ b/packages/plugin-rsc/src/transforms/module-export-effect.ts @@ -15,15 +15,15 @@ export type TransformModuleExportEffectContext = { } export type TransformModuleExportEffectOptions = { - generate: (context: TransformModuleExportEffectContext) => string + runtime: (context: TransformModuleExportEffectContext) => string filter?: TransformModuleExportFilter rejectNonAsyncFunction?: boolean exportAll?: 'error' | 'preserve' } /** - * Preserves selected source exports and appends one generated module effect for - * each exported value. This models Next.js-style module Server Action lowering. + * Preserves selected source bindings and emits one mapped module effect for each + * exported value. This models Next.js-style module Server Action lowering. */ export function transformModuleExportEffect( input: string, @@ -38,11 +38,23 @@ export function transformModuleExportEffect( const output = new MagicString(input) const filter = options.filter ?? (() => true) const references: TransformModuleExportEffectContext[] = [] - const effects: string[] = [] - function generate(context: TransformModuleExportEffectContext): void { + // Generated-name collision detection is intentionally out of scope, matching + // the other module export transforms. + + function generate(context: TransformModuleExportEffectContext): string { references.push(context) - effects.push(options.generate(context)) + return `${options.runtime(context)};` + } + + function replaceAndMove( + start: number, + end: number, + destination: number, + code: string, + ): void { + output.update(start, end, `\n${code}\n`) + if (end !== destination) output.move(start, end, destination) } for (const node of ast.body) { @@ -65,10 +77,18 @@ export function transformModuleExportEffect( } if (!filter(binding, meta)) continue validateNonAsyncFunction(options, node.declaration) - generate({ binding, exportName: binding, meta }) + replaceAndMove( + node.start, + node.declaration.start, + input.length, + `${generate({ binding, exportName: binding, meta })}\nexport { ${binding} };`, + ) } else if (node.declaration.type === 'VariableDeclaration') { + const exportNames: string[] = [] + const effects: string[] = [] for (const declaration of node.declaration.declarations) { const names = extractNames(declaration.id) + exportNames.push(...names) const isFunction = declaration.id.type === 'Identifier' && declaration.init ? getIsFunction(declaration.init) @@ -82,15 +102,24 @@ export function transformModuleExportEffect( } if (filter(binding, meta)) { validate = true - generate({ binding, exportName: binding, meta }) + effects.push(generate({ binding, exportName: binding, meta })) } } if (validate && declaration.init) { validateNonAsyncFunction(options, declaration.init) } } + if (effects.length > 0) { + replaceAndMove( + node.start, + node.declaration.start, + input.length, + `${effects.join('\n')}\nexport { ${exportNames.join(', ')} };`, + ) + } } } else { + const effects: string[] = [] for (const specifier of node.specifiers) { tinyassert(specifier.local.type === 'Identifier') if (specifier.exported.type !== 'Identifier') { @@ -113,7 +142,25 @@ export function transformModuleExportEffect( `\nimport { ${specifier.local.name} as ${binding} } from ${node.source.raw}${sourceTail}`, ) } - generate({ binding, exportName, meta }) + effects.push(generate({ binding, exportName, meta })) + } + if (effects.length > 0) { + const originalExport = input.slice(node.start, node.end) + if (node.source) { + replaceAndMove( + node.start, + node.end, + input.length, + `${originalExport}\n${effects.join('\n')}`, + ) + } else { + replaceAndMove( + node.start, + node.end, + input.length, + `${effects.join('\n')}\n${originalExport}`, + ) + } } } } else if (node.type === 'ExportAllDeclaration') { @@ -141,31 +188,57 @@ export function transformModuleExportEffect( node.declaration.type === 'FunctionDeclaration' ? true : false, } } else if (node.declaration.type === 'Identifier') { - binding = node.declaration.name - meta = { defaultExportIdentifierName: binding } + binding = '$$effect_default' + meta = { defaultExportIdentifierName: node.declaration.name } } else { binding = '$$effect_default' meta = { isFunction: getIsFunction(node.declaration) } } if (!filter('default', meta)) continue validateNonAsyncFunction(options, node.declaration) + const effect = generate({ binding, exportName: 'default', meta }) - if ( - node.declaration.type !== 'Identifier' && - !( - (node.declaration.type === 'FunctionDeclaration' || - node.declaration.type === 'ClassDeclaration') && - node.declaration.id + if (node.declaration.type === 'Identifier') { + const exportTokenEnd = node.start + 'export'.length + output.update( + exportTokenEnd, + node.end, + `const ${binding} = ${node.declaration.name};`, + ) + replaceAndMove( + node.start, + exportTokenEnd, + input.length, + `${effect}\nexport default ${binding};`, ) + } else if ( + (node.declaration.type === 'FunctionDeclaration' || + node.declaration.type === 'ClassDeclaration') && + node.declaration.id ) { - output.update(node.start, node.declaration.start, `const ${binding} = `) - output.appendLeft(node.end, `\nexport default ${binding};`) + replaceAndMove( + node.start, + node.declaration.start, + input.length, + `${effect}\nexport default ${binding};`, + ) + } else { + const exportTokenEnd = node.start + 'export'.length + output.update( + exportTokenEnd, + node.declaration.start, + `const ${binding} = `, + ) + replaceAndMove( + node.start, + exportTokenEnd, + input.length, + `${effect}\nexport default ${binding};`, + ) } - generate({ binding, exportName: 'default', meta }) } } - if (effects.length > 0) output.append(`\n${effects.join('\n')}\n`) return { output, references, diff --git a/packages/plugin-rsc/src/transforms/module-export-models.test.ts b/packages/plugin-rsc/src/transforms/module-export-models.test.ts index af644169d..db6cfefd7 100644 --- a/packages/plugin-rsc/src/transforms/module-export-models.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export-models.test.ts @@ -21,8 +21,8 @@ export default async function Page() { `const ${binding} = wrap(${implementation}, ${JSON.stringify(exportName)}); export { ${binding} as ${exportName} };`, }) const effect = transformModuleExportEffect(input, ast, { - generate: ({ binding, exportName }) => - `register(${binding}, ${JSON.stringify(exportName)});`, + runtime: ({ binding, exportName }) => + `register(${binding}, ${JSON.stringify(exportName)})`, }) const hoist = transformModuleExportHoist(input, ast, { directive: 'use cache', @@ -65,17 +65,22 @@ export default async function Page() { ", "effect": ""use cache"; - export async function action(value) { + async function action(value) { return value } - export const loader = async () => "loaded" - export default async function Page() { + const loader = async () => "loaded" + async function Page() { return "page" } register(action, "action"); + export { action }; + register(loader, "loader"); + export { loader }; + register(Page, "default"); + export default Page; ", "hoist": ""use cache"; export const action = /* #__PURE__ */ wrap($$module_hoist_0_action, "action"); @@ -122,7 +127,7 @@ export default async function Page() { const input = `"use cache"; export default async function () {}` const ast = await parseAstAsync(input) const effect = transformModuleExportEffect(input, ast, { - generate: ({ binding }) => `register(${binding});`, + runtime: ({ binding }) => `register(${binding})`, }) const hoist = transformModuleExportHoist(input, ast, { directive: 'use cache', @@ -137,8 +142,8 @@ export default async function Page() { }).toMatchInlineSnapshot(` { "effect": ""use cache"; const $$effect_default = async function () {} - export default $$effect_default; register($$effect_default); + export default $$effect_default; ", "hoist": ""use cache"; export default /* #__PURE__ */ wrap($$module_hoist_0_anonymous_default) @@ -148,4 +153,26 @@ export default async function Page() { } `) }) + + test('captures default identifiers before later reassignment', async () => { + const input = `let action = async () => 'first' +export default action +action = async () => 'second' +` + const ast = await parseAstAsync(input) + const effect = transformModuleExportEffect(input, ast, { + runtime: ({ binding }) => `register(${binding})`, + }) + + await expect(parseAstAsync(effect.output.toString())).resolves.toBeDefined() + expect(effect.output.toString()).toMatchInlineSnapshot(` + "let action = async () => 'first' + const $$effect_default = action; + action = async () => 'second' + + register($$effect_default); + export default $$effect_default; + " + `) + }) }) diff --git a/packages/plugin-rsc/src/transforms/server-action.test.ts b/packages/plugin-rsc/src/transforms/server-action.test.ts index 4b7270619..9d7e90a8d 100644 --- a/packages/plugin-rsc/src/transforms/server-action.test.ts +++ b/packages/plugin-rsc/src/transforms/server-action.test.ts @@ -5,7 +5,7 @@ import { transformServerActionServer } from './server-action' async function transform(input: string) { const ast = await parseAstAsync(input) return transformServerActionServer(input, ast, { - runtime: (value) => value, + runtime: (value) => `register(${value})`, }) } @@ -19,7 +19,12 @@ test('normalizes top-level server reference names', async () => { referenceNames: ['action'], }) expect(result.output.toString()).toMatchInlineSnapshot( - `"'use server'; async function action$$impl() {}\nexport const action = /* #__PURE__ */ action$$impl;\n"`, + ` + "'use server'; async function action() {} + register(action); + export { action }; + " + `, ) }) diff --git a/packages/plugin-rsc/src/transforms/server-action.ts b/packages/plugin-rsc/src/transforms/server-action.ts index 8477e36f4..c93f013ef 100644 --- a/packages/plugin-rsc/src/transforms/server-action.ts +++ b/packages/plugin-rsc/src/transforms/server-action.ts @@ -1,16 +1,17 @@ import type MagicString from 'magic-string' import type { ESTree } from 'vite' import { transformHoistInlineDirective } from './hoist' -import { transformModuleExport } from './module-export' +import { transformModuleExportEffect } from './module-export-effect' import { hasDirective } from './utils' // TODO: Preserve the `runtime` call's original Server Function position for -// every module export and inline directive shape. +// every inline directive shape. // https://github.com/vitejs/vite-plugin-react/issues/1361 export function transformServerActionServer( input: string, ast: ESTree.Program, options: { + /** Must register the supplied function operationally for module directives. */ runtime: (value: string, name: string) => string rejectNonAsyncFunction?: boolean encode?: (value: string) => string @@ -29,16 +30,10 @@ export function transformServerActionServer( } { // TODO: unify (generalize transformHoistInlineDirective to support top-level directive cases) if (hasDirective(ast.body, 'use server')) { - const result = transformModuleExport(input, ast, { + const result = transformModuleExportEffect(input, ast, { rejectNonAsyncFunction: options.rejectNonAsyncFunction, - generate: ({ implementation, binding, exportName }) => { - const declaration = - `const ${binding} = /* #__PURE__ */ ` + - `${options.runtime(implementation, exportName)};` - return binding === exportName - ? `export ${declaration}` - : `${declaration}\nexport { ${binding} as ${exportName} };` - }, + runtime: ({ binding, exportName }) => + options.runtime(binding, exportName), }) return { ...result, exportNames: result.referenceNames } } diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index b218f8f32..4449b9267 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -49,8 +49,8 @@ describe('source map fixtures', () => { references = result.referenceNames } else if (model === 'module-export-effect') { const result = transformModuleExportEffect(input, ast, { - generate: ({ binding, exportName }) => - `registerServerReference(${binding}, ${JSON.stringify(exportName)});`, + runtime: ({ binding, exportName }) => + `registerServerReference(${binding}, ${JSON.stringify(exportName)})`, }) output = result.output references = result.referenceNames diff --git a/packages/plugin-rsc/src/transforms/waku.test.ts b/packages/plugin-rsc/src/transforms/waku.test.ts index 1fe526127..37e30e410 100644 --- a/packages/plugin-rsc/src/transforms/waku.test.ts +++ b/packages/plugin-rsc/src/transforms/waku.test.ts @@ -160,24 +160,26 @@ export default async function() { const privateFunction = () => 'Secret'; - const log$$impl = async (mesg) => { + const log = async (mesg) => { console.log(mesg); }; - export const log = /* #__PURE__ */ $runtime(log$$impl, "", "log"); - - async function greet$$impl(name) { + async function greet(name) { return 'Hello ' + name; } - export const greet = /* #__PURE__ */ $runtime(greet$$impl, "", "greet"); - - const $$default$$impl = async function() { + const $$effect_default = async function() { return Date.now(); } - const $$default = /* #__PURE__ */ $runtime($$default$$impl, "", "default"); - export { $$default as default }; + $runtime(log, "", "log"); + export { log }; + + $runtime(greet, "", "greet"); + export { greet }; + + $runtime($$effect_default, "", "default"); + export default $$effect_default; " `) }) @@ -251,17 +253,18 @@ export default async () => null; return innerAction.bind(null, action); } - async function exportedAction$$impl() { + async function exportedAction() { 'use server'; return null; } - export const exportedAction = /* #__PURE__ */ $runtime(exportedAction$$impl, "", "exportedAction"); + const $$effect_default = async () => null; - const $$default$$impl = async () => null; - const $$default = /* #__PURE__ */ $runtime($$default$$impl, "", "default"); - export { $$default as default }; + $runtime(exportedAction, "", "exportedAction"); + export { exportedAction }; + $runtime($$effect_default, "", "default"); + export default $$effect_default; " `) }) From 406ae5221bcc1d1ff3f9aee7ccf89c798b1d8a19 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:14:00 +0900 Subject: [PATCH 14/23] refactor(rsc): narrow module export transform Co-authored-by: OpenCode --- .../custom-server-function-plugin.ts | 14 +- .../callable-cache-plugin.ts | 15 +- packages/plugin-rsc/src/plugin.ts | 28 +- .../wrap-export/default-anonymous.js.snap.js | 14 + .../wrap-export/default-anonymous.js.snap.md | 85 ---- .../wrap-export/default-identifier.js.snap.js | 16 + .../wrap-export/default-identifier.js.snap.md | 92 ----- .../wrap-export/default-named.js.snap.js | 14 + .../wrap-export/default-named.js.snap.md | 86 ---- .../wrap-export/dependent-declarators.js | 4 - .../dependent-declarators.js.snap.md | 84 ---- .../wrap-export/destructured-export.js | 5 - .../destructured-export.js.snap.md | 70 ---- .../wrap-export/local-alias.js.snap.js | 16 + .../wrap-export/local-alias.js.snap.md | 92 ----- .../wrap-export/multiple-exports.js.snap.js | 19 + .../wrap-export/multiple-exports.js.snap.md | 115 ------ .../wrap-export/named-function-expression.js | 5 - .../named-function-expression.js.snap.md | 73 ---- .../wrap-export/named-function.js.snap.js | 13 + .../wrap-export/named-function.js.snap.md | 84 ---- .../wrap-export/pre-declaration-reference.js | 7 - .../pre-declaration-reference.js.snap.md | 94 ----- .../wrap-export/reexport.js.snap.js | 13 + .../wrap-export/reexport.js.snap.md | 76 ---- .../wrap-export/variables.js.snap.js | 17 + .../wrap-export/variables.js.snap.md | 105 ----- packages/plugin-rsc/src/transforms/index.ts | 2 - .../transforms/module-export-effect.test.ts | 89 ++++ .../src/transforms/module-export-effect.ts | 37 +- .../src/transforms/module-export-hoist.ts | 203 --------- .../transforms/module-export-models.test.ts | 178 -------- .../src/transforms/module-export.test.ts | 189 --------- .../src/transforms/module-export.ts | 386 ------------------ .../plugin-rsc/src/transforms/wrap-export.ts | 1 - 35 files changed, 255 insertions(+), 2086 deletions(-) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/module-export-effect.test.ts delete mode 100644 packages/plugin-rsc/src/transforms/module-export-hoist.ts delete mode 100644 packages/plugin-rsc/src/transforms/module-export-models.test.ts delete mode 100644 packages/plugin-rsc/src/transforms/module-export.test.ts delete mode 100644 packages/plugin-rsc/src/transforms/module-export.ts diff --git a/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts b/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts index 8e8b5d4ee..84db95ae1 100644 --- a/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts +++ b/packages/plugin-rsc/examples/custom-server-function/custom-server-function-plugin.ts @@ -3,7 +3,7 @@ import { hasDirective, transformDirectiveProxyExport, transformHoistInlineDirective, - transformModuleExport, + transformModuleExportEffect, } from '@vitejs/plugin-rsc/transforms' import { parseAstAsync, type Plugin } from 'vite' @@ -37,16 +37,10 @@ export function customServerFunctionPlugin(): Plugin { const runtime = (value: string, name: string) => `$$CustomReactServer.registerServerReference(${value}, ${JSON.stringify(reference.referenceKey)}, ${JSON.stringify(name)})` const result = hasDirective(ast.body, directive) - ? transformModuleExport(code, ast, { + ? transformModuleExportEffect(code, ast, { rejectNonAsyncFunction: true, - generate: ({ implementation, binding, exportName }) => { - const declaration = - `const ${binding} = /* #__PURE__ */ ` + - `${runtime(implementation, exportName)};` - return binding === exportName - ? `export ${declaration}` - : `${declaration}\nexport { ${binding} as ${exportName} };` - }, + runtime: ({ binding, exportName }) => + runtime(binding, exportName), }) : transformHoistInlineDirective(code, ast, { directive, diff --git a/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts b/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts index e249d80cd..f84717491 100644 --- a/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts +++ b/packages/plugin-rsc/examples/use-cache-callable/callable-cache-plugin.ts @@ -3,7 +3,7 @@ import { hasDirective, transformDirectiveProxyExport, transformHoistInlineDirective, - transformModuleExport, + transformWrapExport, } from '@vitejs/plugin-rsc/transforms' import { parseAstAsync, type Plugin } from 'vite' @@ -35,16 +35,9 @@ export function callableCachePlugin(): Plugin { `${JSON.stringify(reference.referenceKey)},` + `${JSON.stringify(name)})` const result = hasDirective(ast.body, directive) - ? transformModuleExport(code, ast, { + ? transformWrapExport(code, ast, { + runtime, rejectNonAsyncFunction: true, - generate: ({ implementation, binding, exportName }) => { - const declaration = - `const ${binding} = /* #__PURE__ */ ` + - `${runtime(implementation, exportName)};` - return binding === exportName - ? `export ${declaration}` - : `${declaration}\nexport { ${binding} as ${exportName} };` - }, }) : transformHoistInlineDirective(code, ast, { directive, @@ -59,7 +52,7 @@ export function callableCachePlugin(): Plugin { manager.serverReferences.replaceClaim(pluginName, id, { ...reference, - exportNames: 'names' in result ? result.names : result.referenceNames, + exportNames: 'names' in result ? result.names : result.exportNames, }) result.output.prepend( `import $$cacheWrapper from "/src/framework/use-cache-runtime";\n` + diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 697cda35b..b29404cbc 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -70,12 +70,12 @@ import { slash, } from './plugins/vite-utils' import { - type TransformModuleExportFilter, + type TransformWrapExportFilter, hasDirective, transformDirectiveProxyExport, transformExpandExportAll, - transformModuleExport, transformServerActionServer, + transformWrapExport, findDirectives, type TransformExpandExportAllContext, } from './transforms' @@ -2419,7 +2419,7 @@ function vitePluginRscCss( }: { id: string code: string - }): false | TransformModuleExportFilter { + }): false | TransformWrapExportFilter { const { filename, query } = parseIdQuery(id) if ('vite-rsc-css-export' in query) { const value = query['vite-rsc-css-export'] @@ -2451,7 +2451,7 @@ function vitePluginRscCss( // export const Page = () => {} return (_name: string, meta) => !!( - (meta.isFunction && meta.localName && /^[A-Z]/.test(meta.localName)) || + (meta.isFunction && meta.declName && /^[A-Z]/.test(meta.declName)) || (meta.defaultExportIdentifierName && /^[A-Z]/.test(meta.defaultExportIdentifierName)) ) @@ -2753,25 +2753,19 @@ export async function transformRscCssExport(options: { ast: Awaited> code: string id?: string - filter: TransformModuleExportFilter + filter: TransformWrapExportFilter }): Promise<{ output: MagicString } | undefined> { if (hasDirective(options.ast.body, 'use client')) { return } - const result = transformModuleExport(options.code, options.ast, { - generate: ({ implementation, binding, exportName, meta }) => { - const declaration = - `const ${binding} = /* #__PURE__ */ ` + - `__vite_rsc_wrap_css__(${implementation}, ${JSON.stringify( - meta.defaultExportIdentifierName ?? exportName, - )});` - return binding === exportName - ? `export ${declaration}` - : `${declaration}\nexport { ${binding} as ${exportName} };` - }, + const result = transformWrapExport(options.code, options.ast, { + runtime: (value, name, meta) => + `__vite_rsc_wrap_css__(${value}, ${JSON.stringify( + meta.defaultExportIdentifierName ?? name, + )})`, filter: options.filter, - exportAll: 'preserve', + ignoreExportAllDeclaration: true, }) if (result.output.hasChanged()) { if (!options.code.includes('__vite_rsc_react__')) { diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js new file mode 100644 index 000000000..d1fd45515 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0= +*/ + +'use server' + +const $$default = async function () { + return 'default anonymous function called' +} +; +const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); +export { $$wrap_$$default as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md deleted file mode 100644 index ef362e98d..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md +++ /dev/null @@ -1,85 +0,0 @@ -## Input - -```js -'use server' - -export default async function () { - return 'default anonymous function called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0=) - -```js -'use server' - -const $$default = async function () { - return 'default anonymous function called' -} -; -const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); -export { $$wrap_$$default as default }; -``` - -## module-export - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjEwACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0JCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CmNvbnN0ICQkZGVmYXVsdCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZGVmYXVsdCQkaW1wbCwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKCjMyMwB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsd0JBQWUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUMzQzs7OzsifQ==) - -```js -'use server' - -const $$default$$impl = async function () { - return 'default anonymous function called' -} -const $$default = registerServerReference($$default$$impl, "default"); -export { $$default as default }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgJCRlZmZlY3RfZGVmYXVsdDsKMzM1AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFTCx5QkFBUyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDO0FBRkE7QUFBQTtBQUFBOyJ9) - -```js -'use server' - -const $$effect_default = async function () { - return 'default anonymous function called' -} - -registerServerReference($$effect_default, "default"); -export default $$effect_default; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MzM1ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGRlZmF1bHQgLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJkZWZhdWx0IikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fub255bW91c19kZWZhdWx0KCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYW5vbnltb3VzX2RlZmF1bHQsICJuYW1lIiwgeyB2YWx1ZTogImFub255bW91c19kZWZhdWx0IiB9KTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsT0FBTztBQUFDO0FBQUEscURBQWtCO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDOzsifQ==) - -```js -'use server' - -export default /* #__PURE__ */ registerServerReference($$module_hoist_0_anonymous_default, "default") - -;async function $$module_hoist_0_anonymous_default() { - return 'default anonymous function called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_anonymous_default, "name", { value: "anonymous_default" }); -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js new file mode 100644 index 000000000..8f8865f1e --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js @@ -0,0 +1,16 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9 +*/ + +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +const $$default = defaultIdentifier +; +const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); +export { $$wrap_$$default as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md deleted file mode 100644 index 933a4bef7..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md +++ /dev/null @@ -1,92 +0,0 @@ -## Input - -```js -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -export default defaultIdentifier -``` - -## wrap-export - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9) - -```js -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -const $$default = defaultIdentifier -; -const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); -export { $$wrap_$$default as default }; -``` - -## module-export - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk5ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgoKY29uc3QgJCRkZWZhdWx0ID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdElkZW50aWZpZXIsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkZGVmYXVsdCBhcyBkZWZhdWx0IH07CgozNDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7Ozs7OzsifQ==) - -```js -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - - -const $$default = registerServerReference(defaultIdentifier, "default"); -export { $$default as default }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGVmZmVjdF9kZWZhdWx0ID0gZGVmYXVsdElkZW50aWZpZXI7CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGVmZmVjdF9kZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwozNjIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRU07QUFBTjtBQUFBO0FBQUE7In0=) - -```js -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -const $$effect_default = defaultIdentifier; - -registerServerReference($$effect_default, "default"); -export default $$effect_default; -``` - -## module-export-hoist - -**Status:** unchanged - -**References:** (none) - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTI0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9CgpleHBvcnQgZGVmYXVsdCBkZWZhdWx0SWRlbnRpZmllcgozNjcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRUEsTUFBTSxDQUFDLE9BQU8sQ0FBQzsifQ==) - -```js -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -export default defaultIdentifier -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js new file mode 100644 index 000000000..6480fb172 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js @@ -0,0 +1,14 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0= +*/ + +'use server' + +async function defaultNamedFunction() { + return 'default named function called' +} +; +const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, "default"); +export { $$wrap_defaultNamedFunction as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md deleted file mode 100644 index 23ac408d0..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md +++ /dev/null @@ -1,86 +0,0 @@ -## Input - -```js -'use server' - -export default async function defaultNamedFunction() { - return 'default named function called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0=) - -```js -'use server' - -async function defaultNamedFunction() { - return 'default named function called' -} -; -const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, "default"); -export { $$wrap_defaultNamedFunction as default }; -``` - -## module-export - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjQxACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBkZWZhdWx0TmFtZWRGdW5jdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGRlZmF1bHROYW1lZEZ1bmN0aW9uJCRpbXBsLCAiZGVmYXVsdCIpOwpleHBvcnQgeyBkZWZhdWx0TmFtZWRGdW5jdGlvbiBhcyBkZWZhdWx0IH07CgozNDAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLDBCQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7OzsifQ==) - -```js -'use server' - -async function defaultNamedFunction$$impl() { - return 'default named function called' -} -const defaultNamedFunction = registerServerReference(defaultNamedFunction$$impl, "default"); -export { defaultNamedFunction as default }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTkzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CmV4cG9ydCBkZWZhdWx0IGRlZmF1bHROYW1lZEZ1bmN0aW9uOwozNTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2QztBQUZBO0FBQUE7QUFBQTsifQ==) - -```js -'use server' - -async function defaultNamedFunction() { - return 'default named function called' -} - -registerServerReference(defaultNamedFunction, "default"); -export default defaultNamedFunction; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** default - -[Source map visualization](https://evanw.github.io/source-map-visualization/#Mzk1ACd1c2Ugc2VydmVyJwoKY29uc3QgZGVmYXVsdE5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgZGVmYXVsdE5hbWVkRnVuY3Rpb247Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9kZWZhdWx0TmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImRlZmF1bHROYW1lZEZ1bmN0aW9uIiB9KTsKMzEwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07Ozs7QUFFSTtBQUFBLHdEQUFzQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2Qzs7In0=) - -```js -'use server' - -const defaultNamedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_defaultNamedFunction, "default"); -export default defaultNamedFunction; - -;async function $$module_hoist_0_defaultNamedFunction() { - return 'default named function called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_defaultNamedFunction, "name", { value: "defaultNamedFunction" }); -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js deleted file mode 100644 index 95a50e601..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js +++ /dev/null @@ -1,4 +0,0 @@ -'use server' - -export const first = async () => 'first action called', - second = first diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md deleted file mode 100644 index e34634781..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md +++ /dev/null @@ -1,84 +0,0 @@ -## Input - -```js -'use server' - -export const first = async () => 'first action called', - second = first -``` - -## wrap-export - -**Status:** transformed - -**References:** first, second - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjQ4ACd1c2Ugc2VydmVyJwoKbGV0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLAogIHNlY29uZCA9IGZpcnN0CmZpcnN0ID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGZpcnN0LCAiZmlyc3QiKTsKZXhwb3J0IHsgZmlyc3QgfTsKc2Vjb25kID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCwgInNlY29uZCIpOwpleHBvcnQgeyBzZWNvbmQgfTsKMzU4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEdBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFg7QUFBQTtBQUFBO0FBQUE7In0=) - -```js -'use server' - -let first = async () => 'first action called', - second = first -first = /* #__PURE__ */ registerServerReference(first, "first"); -export { first }; -second = /* #__PURE__ */ registerServerReference(second, "second"); -export { second }; -``` - -## module-export - -**Status:** transformed - -**References:** first, second - -[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjc0ACd1c2Ugc2VydmVyJwoKY29uc3QgZmlyc3QkJGltcGwgPSBhc3luYyAoKSA9PiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcsCiAgc2Vjb25kJCRpbXBsID0gZmlyc3QKY29uc3QgZmlyc3QgPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdCQkaW1wbCwgImZpcnN0Iik7CmV4cG9ydCB7IGZpcnN0IGFzIGZpcnN0IH07CmNvbnN0IHNlY29uZCA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCQkaW1wbCwgInNlY29uZCIpOwpleHBvcnQgeyBzZWNvbmQgYXMgc2Vjb25kIH07CgozNDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLFxuICBzZWNvbmQgPSBmaXJzdFxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFdBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDdEQsQ0FBQyxDQUFDLFlBQU0sQ0FBQyxDQUFDLENBQUM7Ozs7OzsifQ==) - -```js -'use server' - -const first$$impl = async () => 'first action called', - second$$impl = first -const first = registerServerReference(first$$impl, "first"); -export { first as first }; -const second = registerServerReference(second$$impl, "second"); -export { second as second }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** first, second - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTkxACd1c2Ugc2VydmVyJwoKY29uc3QgZmlyc3QgPSBhc3luYyAoKSA9PiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcsCiAgc2Vjb25kID0gZmlyc3QKCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGZpcnN0LCAiZmlyc3QiKTsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2Uoc2Vjb25kLCAic2Vjb25kIik7CmV4cG9ydCB7IGZpcnN0LCBzZWNvbmQgfTsKMzU4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFg7QUFBQTtBQUFBO0FBQUE7In0=) - -```js -'use server' - -const first = async () => 'first action called', - second = first - -registerServerReference(first, "first"); -registerServerReference(second, "second"); -export { first, second }; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** first - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjkzACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0ID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3QsICJmaXJzdCIpLAogIHNlY29uZCA9IGZpcnN0Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMF9maXJzdCgpIHsgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3QsICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0IiB9KTsKMzIyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMseUVBQWtDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFU7QUFBQSxrREFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTTs7In0=) - -```js -'use server' - -export const first = /* #__PURE__ */ registerServerReference($$module_hoist_0_first, "first"), - second = first - -;async function $$module_hoist_0_first() { return 'first action called' }; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_first, "name", { value: "first" }); -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js deleted file mode 100644 index 488a76ef3..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js +++ /dev/null @@ -1,5 +0,0 @@ -'use server' - -const source = async () => 'destructured export called' - -export const { action } = { action: source } diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md deleted file mode 100644 index bf210bba1..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md +++ /dev/null @@ -1,70 +0,0 @@ -## Input - -```js -'use server' - -const source = async () => 'destructured export called' - -export const { action } = { action: source } -``` - -## wrap-export - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKbGV0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKNDMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmNvbnN0IHNvdXJjZSA9IGFzeW5jICgpID0+ICdkZXN0cnVjdHVyZWQgZXhwb3J0IGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTTs7QUFFL0MsR0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQTNDO0FBQUE7In0=) - -```js -'use server' - -const source = async () => 'destructured export called' - -let { action } = { action: source } -action = /* #__PURE__ */ registerServerReference(action, "action"); -export { action }; -``` - -## module-export - -**Status:** error - -```text -unsupported destructured export declaration -``` - -## module-export-effect - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiB9Owo0MzUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNOztBQUUvQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFBM0M7QUFBQTtBQUFBOyJ9) - -```js -'use server' - -const source = async () => 'destructured export called' - -const { action } = { action: source } - -registerServerReference(action, "action"); -export { action }; -``` - -## module-export-hoist - -**Status:** unchanged - -**References:** (none) - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KNDI5AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmNvbnN0IHNvdXJjZSA9IGFzeW5jICgpID0+ICdkZXN0cnVjdHVyZWQgZXhwb3J0IGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTTs7QUFFdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQzsifQ==) - -```js -'use server' - -const source = async () => 'destructured export called' - -export const { action } = { action: source } -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js new file mode 100644 index 000000000..ec5c2b8f0 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js @@ -0,0 +1,16 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9 +*/ + +'use server' + +async function localAlias() { + return 'local alias called' +} + + +; +const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, "aliasedAction"); +export { $$wrap_localAlias as aliasedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md deleted file mode 100644 index 8fdffc3da..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md +++ /dev/null @@ -1,92 +0,0 @@ -## Input - -```js -'use server' - -async function localAlias() { - return 'local alias called' -} - -export { localAlias as aliasedAction } -``` - -## wrap-export - -**Status:** transformed - -**References:** aliasedAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9) - -```js -'use server' - -async function localAlias() { - return 'local alias called' -} - - -; -const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, "aliasedAction"); -export { $$wrap_localAlias as aliasedAction }; -``` - -## module-export - -**Status:** transformed - -**References:** aliasedAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpjb25zdCAkJG1vZHVsZV9hbGlhc2VkQWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCRtb2R1bGVfYWxpYXNlZEFjdGlvbiBhcyBhbGlhc2VkQWN0aW9uIH07CjMzNgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5hc3luYyBmdW5jdGlvbiBsb2NhbEFsaWFzKCkge1xuICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCdcbn1cblxuZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzVCOzs7Ozs7In0=) - -```js -'use server' - -async function localAlias() { - return 'local alias called' -} - - - -const $$module_aliasedAction = registerServerReference(localAlias, "aliasedAction"); -export { $$module_aliasedAction as aliasedAction }; -``` - -## module-export-effect - -**Status:** transformed - -**References:** aliasedAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShsb2NhbEFsaWFzLCAiYWxpYXNlZEFjdGlvbiIpOwpleHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfQozNDgAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7O0FBRUE7QUFBQTtBQUFBOyJ9) - -```js -'use server' - -async function localAlias() { - return 'local alias called' -} - - - -registerServerReference(localAlias, "aliasedAction"); -export { localAlias as aliasedAction } -``` - -## module-export-hoist - -**Status:** unchanged - -**References:** (none) - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTE2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKZXhwb3J0IHsgbG9jYWxBbGlhcyBhcyBhbGlhc2VkQWN0aW9uIH0KMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsQWxpYXMoKSB7XG4gIHJldHVybiAnbG9jYWwgYWxpYXMgY2FsbGVkJ1xufVxuXG5leHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDNUI7O0FBRUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQzsifQ==) - -```js -'use server' - -async function localAlias() { - return 'local alias called' -} - -export { localAlias as aliasedAction } -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js new file mode 100644 index 000000000..4cdb47bf3 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js @@ -0,0 +1,19 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0= +*/ + +'use server' + +async function firstAction() { + return 'first action called' +} + +async function secondAction() { + return 'second action called' +} +firstAction = /* #__PURE__ */ registerServerReference(firstAction, "firstAction"); +export { firstAction }; +secondAction = /* #__PURE__ */ registerServerReference(secondAction, "secondAction"); +export { secondAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md deleted file mode 100644 index eecedac9b..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md +++ /dev/null @@ -1,115 +0,0 @@ -## Input - -```js -'use server' - -export async function firstAction() { - return 'first action called' -} - -export async function secondAction() { - return 'second action called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** firstAction, secondAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0=) - -```js -'use server' - -async function firstAction() { - return 'first action called' -} - -async function secondAction() { - return 'second action called' -} -firstAction = /* #__PURE__ */ registerServerReference(firstAction, "firstAction"); -export { firstAction }; -secondAction = /* #__PURE__ */ registerServerReference(secondAction, "secondAction"); -export { secondAction }; -``` - -## module-export - -**Status:** transformed - -**References:** firstAction, secondAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#NDAwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24kJGltcGwoKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IGZpcnN0QWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24kJGltcGwsICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiBhcyBmaXJzdEFjdGlvbiB9OwoKCmFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9CmNvbnN0IHNlY29uZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZEFjdGlvbiQkaW1wbCwgInNlY29uZEFjdGlvbiIpOwpleHBvcnQgeyBzZWNvbmRBY3Rpb24gYXMgc2Vjb25kQWN0aW9uIH07Cgo0OTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDN0I7Ozs7O0FBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxrQkFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCOzs7OyJ9) - -```js -'use server' - -async function firstAction$$impl() { - return 'first action called' -} -const firstAction = registerServerReference(firstAction$$impl, "firstAction"); -export { firstAction as firstAction }; - - -async function secondAction$$impl() { - return 'second action called' -} -const secondAction = registerServerReference(secondAction$$impl, "secondAction"); -export { secondAction as secondAction }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** firstAction, secondAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MzA0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiB9OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2Uoc2Vjb25kQWN0aW9uLCAic2Vjb25kQWN0aW9uIik7CmV4cG9ydCB7IHNlY29uZEFjdGlvbiB9Owo1MTQAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUM3Qjs7QUFFTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUM5QjtBQU5BO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTsifQ==) - -```js -'use server' - -async function firstAction() { - return 'first action called' -} - -async function secondAction() { - return 'second action called' -} - -registerServerReference(firstAction, "firstAction"); -export { firstAction }; - -registerServerReference(secondAction, "secondAction"); -export { secondAction }; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** firstAction, secondAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#NjIyACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGZpcnN0QWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwoKZXhwb3J0IGNvbnN0IHNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbiwgInNlY29uZEFjdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfZmlyc3RBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImZpcnN0QWN0aW9uIiB9KTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8xX3NlY29uZEFjdGlvbigpIHsKICByZXR1cm4gJ3NlY29uZCBhY3Rpb24gY2FsbGVkJwp9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzFfc2Vjb25kQWN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJzZWNvbmRBY3Rpb24iIH0pOwo0NTAAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNOztBQUlOLE1BQU07QUFKQztBQUFBLCtDQUE2QjtBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPO0FBQUEsZ0RBQThCO0FBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDOUI7OyJ9) - -```js -'use server' - -export const firstAction = /* #__PURE__ */ registerServerReference($$module_hoist_0_firstAction, "firstAction"); - -export const secondAction = /* #__PURE__ */ registerServerReference($$module_hoist_1_secondAction, "secondAction"); - -;async function $$module_hoist_0_firstAction() { - return 'first action called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_firstAction, "name", { value: "firstAction" }); - -;async function $$module_hoist_1_secondAction() { - return 'second action called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_1_secondAction, "name", { value: "secondAction" }); -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js deleted file mode 100644 index 169221675..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js +++ /dev/null @@ -1,5 +0,0 @@ -'use server' - -export const action = async function actionImplementation() { - return 'named function expression called' -} diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md deleted file mode 100644 index 1554a5411..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md +++ /dev/null @@ -1,73 +0,0 @@ -## Input - -```js -'use server' - -export const action = async function actionImplementation() { - return 'named function expression called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjAwACd1c2Ugc2VydmVyJwoKbGV0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkgewogIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gZXhwcmVzc2lvbiBjYWxsZWQnCn0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBhY3Rpb25JbXBsZW1lbnRhdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEdBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDO0FBRkE7QUFBQTsifQ==) - -```js -'use server' - -let action = async function actionImplementation() { - return 'named function expression called' -} -action = /* #__PURE__ */ registerServerReference(action, "action"); -export { action }; -``` - -## module-export - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjE1ACd1c2Ugc2VydmVyJwoKY29uc3QgYWN0aW9uJCRpbXBsID0gYXN5bmMgZnVuY3Rpb24gYWN0aW9uSW1wbGVtZW50YXRpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBhY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhY3Rpb24kJGltcGwsICJhY3Rpb24iKTsKZXhwb3J0IHsgYWN0aW9uIGFzIGFjdGlvbiB9OwoKMzgwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBhY3Rpb25JbXBsZW1lbnRhdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxZQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDOzs7OyJ9) - -```js -'use server' - -const action$$impl = async function actionImplementation() { - return 'named function expression called' -} -const action = registerServerReference(action$$impl, "action"); -export { action as action }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTc4ACd1c2Ugc2VydmVyJwoKY29uc3QgYWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gYWN0aW9uSW1wbGVtZW50YXRpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiB9OwozOTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDMUM7QUFGQTtBQUFBO0FBQUE7In0=) - -```js -'use server' - -const action = async function actionImplementation() { - return 'named function expression called' -} - -registerServerReference(action, "action"); -export { action }; -``` - -## module-export-hoist - -**Status:** error - -```text -unsupported named function expression export -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js new file mode 100644 index 000000000..3f597bb58 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ== +*/ + +'use server' + +async function namedFunction() { + return 'named function called' +} +namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, "namedFunction"); +export { namedFunction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md deleted file mode 100644 index 8ed876491..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md +++ /dev/null @@ -1,84 +0,0 @@ -## Input - -```js -'use server' - -export async function namedFunction() { - return 'named function called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** namedFunction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ==) - -```js -'use server' - -async function namedFunction() { - return 'named function called' -} -namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, "namedFunction"); -export { namedFunction }; -``` - -## module-export - -**Status:** transformed - -**References:** namedFunction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjE3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpjb25zdCBuYW1lZEZ1bmN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiQkaW1wbCwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiBhcyBuYW1lZEZ1bmN0aW9uIH07CgozMDYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9COzs7OyJ9) - -```js -'use server' - -async function namedFunction$$impl() { - return 'named function called' -} -const namedFunction = registerServerReference(namedFunction$$impl, "namedFunction"); -export { namedFunction as namedFunction }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** namedFunction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiB9OwozMTcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7QUFGQTtBQUFBO0FBQUE7In0=) - -```js -'use server' - -async function namedFunction() { - return 'named function called' -} - -registerServerReference(namedFunction, "namedFunction"); -export { namedFunction }; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** namedFunction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MzI4ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IG5hbWVkRnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9uYW1lZEZ1bmN0aW9uLCAibmFtZWRGdW5jdGlvbiIpOwoKO2FzeW5jIGZ1bmN0aW9uICQkbW9kdWxlX2hvaXN0XzBfbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8wX25hbWVkRnVuY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogIm5hbWVkRnVuY3Rpb24iIH0pOwoyODUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsTUFBTTtBQUFDO0FBQUEsaURBQStCO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7OyJ9) - -```js -'use server' - -export const namedFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_namedFunction, "namedFunction"); - -;async function $$module_hoist_0_namedFunction() { - return 'named function called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_namedFunction, "name", { value: "namedFunction" }); -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js deleted file mode 100644 index 151114097..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js +++ /dev/null @@ -1,7 +0,0 @@ -'use server' - -void action - -export async function action() { - return 'action called' -} diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md deleted file mode 100644 index d0222a26c..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md +++ /dev/null @@ -1,94 +0,0 @@ -## Input - -```js -'use server' - -void action - -export async function action() { - return 'action called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY3ACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzE4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3ZCO0FBRkE7QUFBQTsifQ==) - -```js -'use server' - -void action - -async function action() { - return 'action called' -} -action = /* #__PURE__ */ registerServerReference(action, "action"); -export { action }; -``` - -## module-export - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTgwACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbiQkaW1wbCgpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KY29uc3QgYWN0aW9uID0gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uJCRpbXBsLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiBhcyBhY3Rpb24gfTsKCjMxMQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG52b2lkIGFjdGlvblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uKCkge1xuICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxJQUFJLENBQUM7O0FBRUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2Qjs7OzsifQ==) - -```js -'use server' - -void action - -async function action$$impl() { - return 'action called' -} -const action = registerServerReference(action$$impl, "action"); -export { action as action }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MTQzACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3ZCO0FBRkE7QUFBQTtBQUFBOyJ9) - -```js -'use server' - -void action - -async function action() { - return 'action called' -} - -registerServerReference(action, "action"); -export { action }; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** action - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjkxACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmV4cG9ydCBjb25zdCBhY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hY3Rpb24sICJhY3Rpb24iKTsKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2FjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn07Ci8qICNfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoJCRtb2R1bGVfaG9pc3RfMF9hY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImFjdGlvbiIgfSk7CjI5MQB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG52b2lkIGFjdGlvblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uKCkge1xuICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxJQUFJLENBQUM7O0FBRUwsTUFBTTtBQUFDO0FBQUEsMENBQXdCO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2Qjs7In0=) - -```js -'use server' - -void action - -export const action = /* #__PURE__ */ registerServerReference($$module_hoist_0_action, "action"); - -;async function $$module_hoist_0_action() { - return 'action called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_action, "name", { value: "action" }); -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js new file mode 100644 index 000000000..f8c3429ef --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js @@ -0,0 +1,13 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ== +*/ + +'use server' + + +; +import { reexportedAction as $$import_reexportedAction } from './reexport-source'; +const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, "reexportedAction"); +export { $$wrap_$$import_reexportedAction as reexportedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md deleted file mode 100644 index 10aa2ceb7..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md +++ /dev/null @@ -1,76 +0,0 @@ -## Input - -```js -'use server' - -export { reexportedAction } from './reexport-source' -``` - -## wrap-export - -**Status:** transformed - -**References:** reexportedAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ==) - -```js -'use server' - - -; -import { reexportedAction as $$import_reexportedAction } from './reexport-source'; -const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, "reexportedAction"); -export { $$wrap_$$import_reexportedAction as reexportedAction }; -``` - -## module-export - -**Status:** transformed - -**References:** reexportedAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjYzACd1c2Ugc2VydmVyJwoKCmltcG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gYXMgJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsKY29uc3QgJCRtb2R1bGVfcmVleHBvcnRlZEFjdGlvbiA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkaW1wb3J0X3JlZXhwb3J0ZWRBY3Rpb24sICJyZWV4cG9ydGVkQWN0aW9uIik7CmV4cG9ydCB7ICQkbW9kdWxlX3JlZXhwb3J0ZWRBY3Rpb24gYXMgcmVleHBvcnRlZEFjdGlvbiB9OwoKMTc2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCB7IHJlZXhwb3J0ZWRBY3Rpb24gfSBmcm9tICcuL3JlZXhwb3J0LXNvdXJjZSdcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOzs7Ozs7OyJ9) - -```js -'use server' - - -import { reexportedAction as $$import_reexportedAction } from './reexport-source'; -const $$module_reexportedAction = registerServerReference($$import_reexportedAction, "reexportedAction"); -export { $$module_reexportedAction as reexportedAction }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** reexportedAction - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MjM4ACd1c2Ugc2VydmVyJwoKCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZWZmZWN0X2ltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsxODgAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJ1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07OztBQUVYO0FBQUE7QUFBQTs7In0=) - -```js -'use server' - - - -export { reexportedAction } from './reexport-source' -registerServerReference($$effect_import_reexportedAction, "reexportedAction"); - -import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source'; -``` - -## module-export-hoist - -**Status:** unchanged - -**References:** (none) - -[Source map visualization](https://evanw.github.io/source-map-visualization/#NjcAJ3VzZSBzZXJ2ZXInCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCjI1OAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07In0=) - -```js -'use server' - -export { reexportedAction } from './reexport-source' -``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js new file mode 100644 index 000000000..0c9760023 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js @@ -0,0 +1,17 @@ +/* +Source map visualization: + +https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9 +*/ + +'use server' + +let arrowFunction = async () => 'arrow function called' + +let functionExpression = async function () { + return 'function expression called' +} +arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, "arrowFunction"); +export { arrowFunction }; +functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, "functionExpression"); +export { functionExpression }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md deleted file mode 100644 index 35515bddf..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md +++ /dev/null @@ -1,105 +0,0 @@ -## Input - -```js -'use server' - -export const arrowFunction = async () => 'arrow function called' - -export const functionExpression = async function () { - return 'function expression called' -} -``` - -## wrap-export - -**Status:** transformed - -**References:** arrowFunction, functionExpression - -[Source map visualization](https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9) - -```js -'use server' - -let arrowFunction = async () => 'arrow function called' - -let functionExpression = async function () { - return 'function expression called' -} -arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, "arrowFunction"); -export { arrowFunction }; -functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, "functionExpression"); -export { functionExpression }; -``` - -## module-export - -**Status:** transformed - -**References:** arrowFunction, functionExpression - -[Source map visualization](https://evanw.github.io/source-map-visualization/#NDU1ACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiQkaW1wbCA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCmNvbnN0IGFycm93RnVuY3Rpb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShhcnJvd0Z1bmN0aW9uJCRpbXBsLCAiYXJyb3dGdW5jdGlvbiIpOwpleHBvcnQgeyBhcnJvd0Z1bmN0aW9uIGFzIGFycm93RnVuY3Rpb24gfTsKCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwgPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmdW5jdGlvbkV4cHJlc3Npb24kJGltcGwsICJmdW5jdGlvbkV4cHJlc3Npb24iKTsKZXhwb3J0IHsgZnVuY3Rpb25FeHByZXNzaW9uIGFzIGZ1bmN0aW9uRXhwcmVzc2lvbiB9OwoKNTMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxtQkFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7O0FBRXhELEtBQUssQ0FBQyx3QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ3BDOzs7OyJ9) - -```js -'use server' - -const arrowFunction$$impl = async () => 'arrow function called' -const arrowFunction = registerServerReference(arrowFunction$$impl, "arrowFunction"); -export { arrowFunction as arrowFunction }; - - -const functionExpression$$impl = async function () { - return 'function expression called' -} -const functionExpression = registerServerReference(functionExpression$$impl, "functionExpression"); -export { functionExpression as functionExpression }; - -``` - -## module-export-effect - -**Status:** transformed - -**References:** arrowFunction, functionExpression - -[Source map visualization](https://evanw.github.io/source-map-visualization/#MzQzACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NTMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTsifQ==) - -```js -'use server' - -const arrowFunction = async () => 'arrow function called' - -const functionExpression = async function () { - return 'function expression called' -} - -registerServerReference(arrowFunction, "arrowFunction"); -export { arrowFunction }; - -registerServerReference(functionExpression, "functionExpression"); -export { functionExpression }; -``` - -## module-export-hoist - -**Status:** transformed - -**References:** arrowFunction, functionExpression - -[Source map visualization](https://evanw.github.io/source-map-visualization/#Njc0ACd1c2Ugc2VydmVyJwoKZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRtb2R1bGVfaG9pc3RfMF9hcnJvd0Z1bmN0aW9uLCAiYXJyb3dGdW5jdGlvbiIpCgpleHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkbW9kdWxlX2hvaXN0XzFfZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIikKCjthc3luYyBmdW5jdGlvbiAkJG1vZHVsZV9ob2lzdF8wX2Fycm93RnVuY3Rpb24oKSB7IHJldHVybiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJyB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkbW9kdWxlX2hvaXN0XzBfYXJyb3dGdW5jdGlvbiwgIm5hbWUiLCB7IHZhbHVlOiAiYXJyb3dGdW5jdGlvbiIgfSk7Cgo7YXN5bmMgZnVuY3Rpb24gJCRtb2R1bGVfaG9pc3RfMV9mdW5jdGlvbkV4cHJlc3Npb24oKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfTsKLyogI19fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkJG1vZHVsZV9ob2lzdF8xX2Z1bmN0aW9uRXhwcmVzc2lvbiwgIm5hbWUiLCB7IHZhbHVlOiAiZnVuY3Rpb25FeHByZXNzaW9uIiB9KTsKNDk0AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhcnJvd0Z1bmN0aW9uID0gYXN5bmMgKCkgPT4gJ2Fycm93IGZ1bmN0aW9uIGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUZKO0FBQUEsMERBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07O0FBRTdCO0FBQUEsc0RBQWtCO0FBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDcEM7OyJ9) - -```js -'use server' - -export const arrowFunction = /* #__PURE__ */ registerServerReference($$module_hoist_0_arrowFunction, "arrowFunction") - -export const functionExpression = /* #__PURE__ */ registerServerReference($$module_hoist_1_functionExpression, "functionExpression") - -;async function $$module_hoist_0_arrowFunction() { return 'arrow function called' }; -/* #__PURE__ */ Object.defineProperty($$module_hoist_0_arrowFunction, "name", { value: "arrowFunction" }); - -;async function $$module_hoist_1_functionExpression() { - return 'function expression called' -}; -/* #__PURE__ */ Object.defineProperty($$module_hoist_1_functionExpression, "name", { value: "functionExpression" }); -``` diff --git a/packages/plugin-rsc/src/transforms/index.ts b/packages/plugin-rsc/src/transforms/index.ts index fabdc36aa..6147430da 100644 --- a/packages/plugin-rsc/src/transforms/index.ts +++ b/packages/plugin-rsc/src/transforms/index.ts @@ -1,7 +1,5 @@ export * from './hoist' -export * from './module-export' export * from './module-export-effect' -export * from './module-export-hoist' export * from './wrap-export' export * from './proxy-export' export * from './utils' diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.test.ts b/packages/plugin-rsc/src/transforms/module-export-effect.test.ts new file mode 100644 index 000000000..8bdfc8e17 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/module-export-effect.test.ts @@ -0,0 +1,89 @@ +import { parseAstAsync } from 'vite' +import { describe, expect, test } from 'vitest' +import { + transformModuleExportEffect, + type TransformModuleExportEffectOptions, +} from './module-export-effect' + +async function transform( + input: string, + options: Omit = {}, +) { + const ast = await parseAstAsync(input) + return transformModuleExportEffect(input, ast, { + ...options, + runtime: ({ binding, exportName }) => + `register(${binding}, ${JSON.stringify(exportName)})`, + }) +} + +describe(transformModuleExportEffect, () => { + test('preserves declarations and emits effects after initialization', async () => { + const result = await transform(` +export async function action() {} +export const loader = async () => {}, value = 1 +export default async function Page() {} +`) + + expect(result.referenceNames).toEqual([ + 'action', + 'loader', + 'value', + 'default', + ]) + expect(result.output.toString()).toMatchInlineSnapshot(` + " + async function action() {} + const loader = async () => {}, value = 1 + async function Page() {} + + register(action, \"action\"); + export { action }; + + register(loader, \"loader\"); + register(value, \"value\"); + export { loader, value }; + + register(Page, \"default\"); + export default Page; + " + `) + }) + + test('preserves mutable bindings and local export aliases', async () => { + const result = await transform(` +export { action as renamed } +let action = async () => 'first' +action = async () => 'second' +`) + + expect(result.referenceNames).toEqual(['renamed']) + expect(result.output.toString()).toMatchInlineSnapshot(` + " + + let action = async () => 'first' + action = async () => 'second' + + register(action, \"renamed\"); + export { action as renamed } + " + `) + }) + + test('captures a default identifier before later reassignment', async () => { + const result = await transform(`let action = async () => 'first' +export default action +action = async () => 'second' +`) + + expect(result.output.toString()).toMatchInlineSnapshot(` + "let action = async () => 'first' + const $$effect_default = action; + action = async () => 'second' + + register($$effect_default, \"default\"); + export default $$effect_default; + " + `) + }) +}) diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.ts b/packages/plugin-rsc/src/transforms/module-export-effect.ts index a17d95be9..17396c7a2 100644 --- a/packages/plugin-rsc/src/transforms/module-export-effect.ts +++ b/packages/plugin-rsc/src/transforms/module-export-effect.ts @@ -1,22 +1,35 @@ import { tinyassert } from '@hiogawa/utils' -import type { ExportDefaultDeclaration, Node, Program } from 'estree' +import type { + ExportDefaultDeclaration, + Node, + Program, + VariableDeclaration, +} from 'estree' import MagicString from 'magic-string' import type { ESTree } from 'vite' -import type { - TransformModuleExportFilter, - TransformModuleExportMeta, -} from './module-export' import { extractNames, validateNonAsyncFunction } from './utils' +export type TransformModuleExportEffectMeta = { + localName?: string + declarationKind?: 'function' | 'class' | VariableDeclaration['kind'] + isFunction?: boolean + defaultExportIdentifierName?: string +} + +export type TransformModuleExportEffectFilter = ( + name: string, + meta: TransformModuleExportEffectMeta, +) => boolean + export type TransformModuleExportEffectContext = { binding: string exportName: string - meta: TransformModuleExportMeta + meta: TransformModuleExportEffectMeta } export type TransformModuleExportEffectOptions = { runtime: (context: TransformModuleExportEffectContext) => string - filter?: TransformModuleExportFilter + filter?: TransformModuleExportEffectFilter rejectNonAsyncFunction?: boolean exportAll?: 'error' | 'preserve' } @@ -40,7 +53,7 @@ export function transformModuleExportEffect( const references: TransformModuleExportEffectContext[] = [] // Generated-name collision detection is intentionally out of scope, matching - // the other module export transforms. + // the other transform helpers. function generate(context: TransformModuleExportEffectContext): string { references.push(context) @@ -66,7 +79,7 @@ export function transformModuleExportEffect( ) { tinyassert(node.declaration.id) const binding = node.declaration.id.name - const meta: TransformModuleExportMeta = { + const meta: TransformModuleExportEffectMeta = { localName: binding, declarationKind: node.declaration.type === 'FunctionDeclaration' @@ -95,7 +108,7 @@ export function transformModuleExportEffect( : undefined let validate = false for (const binding of names) { - const meta: TransformModuleExportMeta = { + const meta: TransformModuleExportEffectMeta = { localName: binding, declarationKind: node.declaration.kind, isFunction, @@ -129,7 +142,7 @@ export function transformModuleExportEffect( ) } const exportName = specifier.exported.name - const meta: TransformModuleExportMeta = {} + const meta: TransformModuleExportEffectMeta = {} if (!filter(exportName, meta)) continue let binding = specifier.local.name @@ -171,7 +184,7 @@ export function transformModuleExportEffect( } } else if (node.type === 'ExportDefaultDeclaration') { let binding: string - let meta: TransformModuleExportMeta + let meta: TransformModuleExportEffectMeta if ( (node.declaration.type === 'FunctionDeclaration' || node.declaration.type === 'ClassDeclaration') && diff --git a/packages/plugin-rsc/src/transforms/module-export-hoist.ts b/packages/plugin-rsc/src/transforms/module-export-hoist.ts deleted file mode 100644 index bcb94d113..000000000 --- a/packages/plugin-rsc/src/transforms/module-export-hoist.ts +++ /dev/null @@ -1,203 +0,0 @@ -import type { - ArrowFunctionExpression, - ExportDefaultDeclaration, - ExportNamedDeclaration, - FunctionExpression, - Node, - Program, - VariableDeclarator, -} from 'estree' -import MagicString from 'magic-string' -import type { ESTree } from 'vite' -import type { - TransformModuleExportFilter, - TransformModuleExportMeta, -} from './module-export' -import { hasDirective, validateNonAsyncFunction } from './utils' - -type DefaultFunctionDeclaration = Extract< - ExportDefaultDeclaration['declaration'], - { type: 'FunctionDeclaration' } -> - -type ModuleFunction = - | DefaultFunctionDeclaration - | FunctionExpression - | ArrowFunctionExpression - -type HoistCandidate = { - node: ModuleFunction - parent: ExportDefaultDeclaration | ExportNamedDeclaration | VariableDeclarator - exportName: string - sourceName: string - meta: TransformModuleExportMeta -} - -export type TransformModuleExportHoistContext = { - implementation: string - exportName: string - meta: TransformModuleExportMeta -} - -export type TransformModuleExportHoistOptions = { - directive: string - runtime: (context: TransformModuleExportHoistContext) => string - filter?: TransformModuleExportFilter - rejectNonAsyncFunction?: boolean -} - -/** - * Treats a module directive as though it were attached to each directly exported - * function, then applies inline-style implementation hoisting and expression-site - * runtime replacement. Local export specifiers and re-exports are left unchanged. - */ -export function transformModuleExportHoist( - source: string, - viteAst: ESTree.Program, - options: TransformModuleExportHoistOptions, -): { - output: MagicString - references: TransformModuleExportHoistContext[] - referenceNames: string[] -} { - const ast = viteAst as unknown as Program - let input = source - if (!input.endsWith('\n')) input += '\n' - const output = new MagicString(input) - const references: TransformModuleExportHoistContext[] = [] - const filter = options.filter ?? (() => true) - if (!hasDirective(viteAst.body, options.directive)) { - return { output, references, referenceNames: [] } - } - - const candidates: HoistCandidate[] = [] - - for (const statement of ast.body) { - if (statement.type === 'ExportNamedDeclaration' && statement.declaration) { - if (statement.declaration.type === 'FunctionDeclaration') { - const name = statement.declaration.id.name - candidates.push({ - node: statement.declaration, - parent: statement, - exportName: name, - sourceName: name, - meta: { - localName: name, - declarationKind: 'function', - isFunction: true, - }, - }) - } else if (statement.declaration.type === 'VariableDeclaration') { - for (const declaration of statement.declaration.declarations) { - if ( - declaration.id.type === 'Identifier' && - declaration.init && - isFunctionNode(declaration.init) - ) { - candidates.push({ - node: declaration.init, - parent: declaration, - exportName: declaration.id.name, - sourceName: declaration.id.name, - meta: { - localName: declaration.id.name, - declarationKind: statement.declaration.kind, - isFunction: true, - }, - }) - } - } - } - } else if ( - statement.type === 'ExportDefaultDeclaration' && - isFunctionNode(statement.declaration) - ) { - const sourceName = - statement.declaration.type !== 'ArrowFunctionExpression' && - statement.declaration.id - ? statement.declaration.id.name - : 'anonymous_default' - candidates.push({ - node: statement.declaration, - parent: statement, - exportName: 'default', - sourceName, - meta: { - localName: - sourceName === 'anonymous_default' ? undefined : sourceName, - declarationKind: - statement.declaration.type === 'FunctionDeclaration' - ? 'function' - : undefined, - isFunction: true, - }, - }) - } - } - - for (const candidate of candidates) { - if (!filter(candidate.exportName, candidate.meta)) continue - const node = candidate.node - if (node.type === 'FunctionExpression' && node.id) { - throw Object.assign( - new Error('unsupported named function expression export'), - { pos: node.start }, - ) - } - validateNonAsyncFunction(options, node) - - const implementation = `$$module_hoist_${references.length}_${candidate.sourceName}` - const params = node.params - .map((parameter) => input.slice(parameter.start, parameter.end)) - .join(', ') - const prefix = `\n;${node.async ? 'async ' : ''}function${node.generator ? '*' : ''} ${implementation}(${params}) ` - if (node.body.type === 'BlockStatement') { - output.update(node.start, node.body.start, prefix) - output.appendLeft(node.end, ';') - } else { - output.update(node.start, node.body.start, `${prefix}{ return `) - output.appendLeft(node.end, ' };') - } - output.appendLeft( - node.end, - `\n/* #__PURE__ */ Object.defineProperty(${implementation}, "name", { value: ${JSON.stringify(candidate.sourceName)} });\n`, - ) - output.move(node.start, node.end, input.length) - - const context: TransformModuleExportHoistContext = { - implementation, - exportName: candidate.exportName, - meta: candidate.meta, - } - references.push(context) - const runtime = `/* #__PURE__ */ ${options.runtime(context)}` - - if (node.type === 'FunctionDeclaration' && node.id) { - const sourceName = node.id.name - let replacement = `const ${sourceName} = ${runtime};` - if (candidate.parent.type === 'ExportDefaultDeclaration') { - output.remove(candidate.parent.start, node.start) - replacement += `\nexport default ${sourceName};` - } - output.appendLeft(node.start, replacement) - } else { - output.appendLeft(node.start, runtime) - } - } - - return { - output, - references, - referenceNames: references.map((reference) => reference.exportName), - } -} - -function isFunctionNode( - node: Node | ExportDefaultDeclaration['declaration'], -): node is ModuleFunction { - return ( - node.type === 'FunctionDeclaration' || - node.type === 'FunctionExpression' || - node.type === 'ArrowFunctionExpression' - ) -} diff --git a/packages/plugin-rsc/src/transforms/module-export-models.test.ts b/packages/plugin-rsc/src/transforms/module-export-models.test.ts deleted file mode 100644 index db6cfefd7..000000000 --- a/packages/plugin-rsc/src/transforms/module-export-models.test.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { parseAstAsync } from 'vite' -import { describe, expect, test } from 'vitest' -import { transformModuleExport } from './module-export' -import { transformModuleExportEffect } from './module-export-effect' -import { transformModuleExportHoist } from './module-export-hoist' - -describe('module export transform models', () => { - test('compares canonical bindings, export effects, and hoisted expressions', async () => { - const input = `"use cache"; -export async function action(value) { - return value -} -export const loader = async () => "loaded" -export default async function Page() { - return "page" -} -` - const ast = await parseAstAsync(input) - const canonical = transformModuleExport(input, ast, { - generate: ({ implementation, binding, exportName }) => - `const ${binding} = wrap(${implementation}, ${JSON.stringify(exportName)}); export { ${binding} as ${exportName} };`, - }) - const effect = transformModuleExportEffect(input, ast, { - runtime: ({ binding, exportName }) => - `register(${binding}, ${JSON.stringify(exportName)})`, - }) - const hoist = transformModuleExportHoist(input, ast, { - directive: 'use cache', - runtime: ({ implementation, exportName }) => - `wrap(${implementation}, ${JSON.stringify(exportName)})`, - }) - - const outputs = { - canonical: canonical.output.toString(), - effect: effect.output.toString(), - hoist: hoist.output.toString(), - } - await Promise.all( - Object.values(outputs).map((output) => parseAstAsync(output)), - ) - - expect({ - referenceNames: { - canonical: canonical.referenceNames, - effect: effect.referenceNames, - hoist: hoist.referenceNames, - }, - outputs, - }).toMatchInlineSnapshot(` - { - "outputs": { - "canonical": ""use cache"; - async function action$$impl(value) { - return value - } - const action = wrap(action$$impl, "action"); export { action as action }; - - const loader$$impl = async () => "loaded" - const loader = wrap(loader$$impl, "loader"); export { loader as loader }; - - async function Page$$impl() { - return "page" - } - const Page = wrap(Page$$impl, "default"); export { Page as default }; - - ", - "effect": ""use cache"; - async function action(value) { - return value - } - const loader = async () => "loaded" - async function Page() { - return "page" - } - - register(action, "action"); - export { action }; - - register(loader, "loader"); - export { loader }; - - register(Page, "default"); - export default Page; - ", - "hoist": ""use cache"; - export const action = /* #__PURE__ */ wrap($$module_hoist_0_action, "action"); - export const loader = /* #__PURE__ */ wrap($$module_hoist_1_loader, "loader") - const Page = /* #__PURE__ */ wrap($$module_hoist_2_Page, "default"); - export default Page; - - ;async function $$module_hoist_0_action(value) { - return value - }; - /* #__PURE__ */ Object.defineProperty($$module_hoist_0_action, "name", { value: "action" }); - - ;async function $$module_hoist_1_loader() { return "loaded" }; - /* #__PURE__ */ Object.defineProperty($$module_hoist_1_loader, "name", { value: "loader" }); - - ;async function $$module_hoist_2_Page() { - return "page" - }; - /* #__PURE__ */ Object.defineProperty($$module_hoist_2_Page, "name", { value: "Page" }); - ", - }, - "referenceNames": { - "canonical": [ - "action", - "loader", - "default", - ], - "effect": [ - "action", - "loader", - "default", - ], - "hoist": [ - "action", - "loader", - "default", - ], - }, - } - `) - }) - - test('supports anonymous default functions', async () => { - const input = `"use cache"; export default async function () {}` - const ast = await parseAstAsync(input) - const effect = transformModuleExportEffect(input, ast, { - runtime: ({ binding }) => `register(${binding})`, - }) - const hoist = transformModuleExportHoist(input, ast, { - directive: 'use cache', - runtime: ({ implementation }) => `wrap(${implementation})`, - }) - - await expect(parseAstAsync(effect.output.toString())).resolves.toBeDefined() - await expect(parseAstAsync(hoist.output.toString())).resolves.toBeDefined() - expect({ - effect: effect.output.toString(), - hoist: hoist.output.toString(), - }).toMatchInlineSnapshot(` - { - "effect": ""use cache"; const $$effect_default = async function () {} - register($$effect_default); - export default $$effect_default; - ", - "hoist": ""use cache"; export default /* #__PURE__ */ wrap($$module_hoist_0_anonymous_default) - - ;async function $$module_hoist_0_anonymous_default() {}; - /* #__PURE__ */ Object.defineProperty($$module_hoist_0_anonymous_default, "name", { value: "anonymous_default" }); - ", - } - `) - }) - - test('captures default identifiers before later reassignment', async () => { - const input = `let action = async () => 'first' -export default action -action = async () => 'second' -` - const ast = await parseAstAsync(input) - const effect = transformModuleExportEffect(input, ast, { - runtime: ({ binding }) => `register(${binding})`, - }) - - await expect(parseAstAsync(effect.output.toString())).resolves.toBeDefined() - expect(effect.output.toString()).toMatchInlineSnapshot(` - "let action = async () => 'first' - const $$effect_default = action; - action = async () => 'second' - - register($$effect_default); - export default $$effect_default; - " - `) - }) -}) diff --git a/packages/plugin-rsc/src/transforms/module-export.test.ts b/packages/plugin-rsc/src/transforms/module-export.test.ts deleted file mode 100644 index f782b1257..000000000 --- a/packages/plugin-rsc/src/transforms/module-export.test.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { parseAstAsync } from 'vite' -import { describe, expect, test } from 'vitest' -import { - transformModuleExport, - type TransformModuleExportOptions, -} from './module-export' - -async function transform( - input: string, - options: Omit = {}, -) { - const ast = await parseAstAsync(input) - return transformModuleExport(input, ast, { - ...options, - generate: ({ implementation, binding, exportName }) => - `const ${binding} = wrap(${implementation}, ${JSON.stringify(exportName)});\n` + - `export { ${binding} as ${exportName} };`, - }) -} - -describe(transformModuleExport, () => { - test('extracts direct and default declarations', async () => { - const result = await transform(` -export async function action() {} -export const loader = async () => {}, value = 1 -export default async function Page() {} -`) - - expect(result.referenceNames).toEqual([ - 'action', - 'loader', - 'value', - 'default', - ]) - expect(result.output.toString()).toMatchInlineSnapshot(` - " - async function action$$impl() {} - const action = wrap(action$$impl, "action"); - export { action as action }; - - const loader$$impl = async () => {}, value$$impl = 1 - const loader = wrap(loader$$impl, "loader"); - export { loader as loader }; - const value = wrap(value$$impl, "value"); - export { value as value }; - - async function Page$$impl() {} - const Page = wrap(Page$$impl, "default"); - export { Page as default }; - - " - `) - }) - - test('documents dependent multi-declarator TDZ', async () => { - const result = await transform( - `export const first = async () => {}, second = first`, - ) - - // `first` is a later generated const in this output. Supporting this - // uncommon dependency would require splitting the source declaration. - expect(result.output.toString()).toMatchInlineSnapshot(` - "const first$$impl = async () => {}, second$$impl = first - const first = wrap(first$$impl, \"first\"); - export { first as first }; - const second = wrap(second$$impl, \"second\"); - export { second as second }; - " - `) - }) - - test('canonicalizes mutable declaration initial values', async () => { - const result = await transform(` -export var action = async () => {} -export let loader = async () => {} -`) - - expect(result.output.toString()).toMatchInlineSnapshot(` - " - var action$$impl = async () => {} - const action = wrap(action$$impl, \"action\"); - export { action as action }; - - let loader$$impl = async () => {} - const loader = wrap(loader$$impl, \"loader\"); - export { loader as loader }; - - " - `) - }) - - test('handles aliases, re-exports, and filtering', async () => { - const result = await transform( - ` -export { value as action, exposed as skipped } -const value = async () => {} -const exposed = 0 -export { remote as action2 } from './dep' -export * from './other' -`, - { - exportAll: 'preserve', - filter: (name) => name !== 'skipped', - }, - ) - - expect(result.referenceNames).toEqual(['action', 'action2']) - expect(result.output.toString()).toMatchInlineSnapshot(` - " - - export { exposed as skipped }; - - const value = async () => {} - const exposed = 0 - - import { remote as $$import_action2 } from './dep'; - const $$module_action2 = wrap($$import_action2, "action2"); - export { $$module_action2 as action2 }; - - export * from './other' - - const $$module_action = wrap(value, "action"); - export { $$module_action as action }; - " - `) - }) - - test('reports metadata and preserves filtered declarations', async () => { - const input = `export const Page = () => {}, value = 1; -export default Page;` - const ast = await parseAstAsync(input) - const result = transformModuleExport(input, ast, { - filter: (_name, meta) => meta.isFunction !== false, - exportAll: 'preserve', - generate: (context) => - `const ${context.binding} = wrap(${context.implementation}); export { ${context.binding} as ${context.exportName} };`, - }) - - expect({ - references: result.references, - output: result.output.toString(), - }).toMatchInlineSnapshot(` - { - "output": "const Page$$impl = () => {}, value = 1; - const Page = wrap(Page$$impl); export { Page as Page }; - export { value }; - - - const $$default = wrap(Page); export { $$default as default }; - ", - "references": [ - { - "binding": "Page", - "exportName": "Page", - "implementation": "Page$$impl", - "meta": { - "declarationKind": "const", - "isFunction": true, - "localName": "Page", - }, - }, - { - "binding": "$$default", - "exportName": "default", - "implementation": "Page", - "meta": { - "defaultExportIdentifierName": "Page", - "isFunction": undefined, - }, - }, - ], - } - `) - }) - - test('validates selected exports and export-all policy', async () => { - await expect( - transform(`export function action() {}`, { - rejectNonAsyncFunction: true, - }), - ).rejects.toThrow('unsupported non async function') - await expect(transform(`export * from './dep'`)).rejects.toThrow( - 'unsupported ExportAllDeclaration', - ) - await expect(transform(`export const { action } = value`)).rejects.toThrow( - 'unsupported destructured export declaration', - ) - }) -}) diff --git a/packages/plugin-rsc/src/transforms/module-export.ts b/packages/plugin-rsc/src/transforms/module-export.ts deleted file mode 100644 index ba9a227d9..000000000 --- a/packages/plugin-rsc/src/transforms/module-export.ts +++ /dev/null @@ -1,386 +0,0 @@ -import { tinyassert } from '@hiogawa/utils' -import type { - ExportDefaultDeclaration, - Identifier, - Node, - Program, - VariableDeclaration, -} from 'estree' -import MagicString from 'magic-string' -import type { ESTree } from 'vite' -import { extractIdentifiers, validateNonAsyncFunction } from './utils' - -export type TransformModuleExportMeta = { - /** Source-local declaration name when one is statically available. */ - localName?: string - declarationKind?: 'function' | 'class' | VariableDeclaration['kind'] - isFunction?: boolean - /** Identifier referenced by `export default Identifier`. */ - defaultExportIdentifierName?: string -} - -export type TransformModuleExportGenerateContext = { - /** Private source implementation or imported/local value being transformed. */ - implementation: string - /** Generated local name reserved for the canonical runtime result. */ - binding: string - /** Public module export name, including `default`. */ - exportName: string - meta: TransformModuleExportMeta -} - -export type TransformModuleExportFilter = ( - name: string, - meta: TransformModuleExportMeta, -) => boolean - -export type TransformModuleExportOptions = { - generate: (context: TransformModuleExportGenerateContext) => string - filter?: TransformModuleExportFilter - rejectNonAsyncFunction?: boolean - exportAll?: 'error' | 'preserve' -} - -export type TransformModuleExportResult = { - output: MagicString - /** Full generation contexts for selected exports in source order. */ - references: TransformModuleExportGenerateContext[] - /** Selected public export names in source order. */ - referenceNames: string[] -} - -/** - * Extracts selected module exports into implementation bindings and delegates - * complete canonical binding and export generation to the consumer. - * - * Conceptually: - * - * ```js - * export async function action(value) { - * return value - * } - * ``` - * - * becomes: - * - * ```js - * async function action$$impl(value) { - * return value - * } - * export const action = __RUNTIME__(action$$impl, 'action') - * ``` - * - * `generate` owns the complete generated declaration and export code represented - * by `export const ...` above. The transform does not classify or rewrite that - * code, so consumers also own effects and purity annotations. - * - * Generated code for direct declarations is placed immediately after the source - * declaration. Local export specifiers are generated at module end so their values - * have initialized, while re-exports are converted to local imports at the original - * export position. - * - * This canonical-binding model intentionally does not preserve source function - * hoisting or mutable reassignment under the exported name. Consumers can reject - * mutable declarations through `meta.declarationKind` when required. Selected - * destructured declaration bindings remain unsupported. - */ -export function transformModuleExport( - input: string, - viteAst: ESTree.Program, - options: TransformModuleExportOptions, -): TransformModuleExportResult { - const ast = viteAst as unknown as Program - const output = new MagicString(input) - const references: TransformModuleExportGenerateContext[] = [] - const emissions = new Map() - const filter = options.filter ?? (() => true) - - function extractDeclaration( - identifier: Identifier, - exportName: string, - meta: TransformModuleExportMeta, - position: number, - ): void { - const localName = identifier.name - const implementation = `${localName}$$impl` - output.update(identifier.start, identifier.end, implementation) - generate({ implementation, binding: localName, exportName, meta }, position) - } - - function emit(position: number, code: string): void { - const codes = emissions.get(position) ?? [] - codes.push(code) - emissions.set(position, codes) - } - - function generate( - context: TransformModuleExportGenerateContext, - position: number, - ): void { - references.push(context) - emit(position, options.generate(context)) - } - - function preserveExport( - localName: string, - exportName: string, - position: number, - ): void { - emit( - position, - localName === exportName - ? `export { ${localName} };` - : `export { ${localName} as ${exportName} };`, - ) - } - - for (const node of ast.body) { - if (node.type === 'ExportNamedDeclaration') { - if (node.declaration) { - if ( - node.declaration.type === 'FunctionDeclaration' || - node.declaration.type === 'ClassDeclaration' - ) { - tinyassert(node.declaration.id) - const identifier = node.declaration.id - const meta: TransformModuleExportMeta = { - localName: identifier.name, - declarationKind: - node.declaration.type === 'FunctionDeclaration' - ? 'function' - : 'class', - isFunction: getIsFunction(node.declaration), - } - if (!filter(identifier.name, meta)) continue - - validateNonAsyncFunction(options, node.declaration) - output.remove(node.start, node.declaration.start) - extractDeclaration(identifier, identifier.name, meta, node.end) - } else if (node.declaration.type === 'VariableDeclaration') { - const variableDeclaration = node.declaration - const declarations: Array<{ - node: (typeof variableDeclaration.declarations)[number] - selected: Array<{ - identifier: Identifier - meta: TransformModuleExportMeta - }> - preserved: string[] - }> = [] - - for (const declaration of variableDeclaration.declarations) { - const identifiers = extractIdentifiers(declaration.id) - if ( - declaration.id.type !== 'Identifier' && - identifiers.some((identifier) => - filter(identifier.name, { - localName: identifier.name, - declarationKind: variableDeclaration.kind, - }), - ) - ) { - throw Object.assign( - new Error('unsupported destructured export declaration'), - { pos: declaration.id.start }, - ) - } - const isFunction = - declaration.id.type === 'Identifier' && declaration.init - ? getIsFunction(declaration.init) - : undefined - const selected: (typeof declarations)[number]['selected'] = [] - const preserved: string[] = [] - let validate = false - for (const identifier of identifiers) { - const meta: TransformModuleExportMeta = { - localName: identifier.name, - declarationKind: variableDeclaration.kind, - isFunction, - } - if (filter(identifier.name, meta)) { - selected.push({ identifier, meta }) - validate = true - } else { - preserved.push(identifier.name) - } - } - if (validate && declaration.init) { - validateNonAsyncFunction(options, declaration.init) - } - declarations.push({ - node: declaration, - selected, - preserved, - }) - } - - if ( - !declarations.some((declaration) => declaration.selected.length) - ) { - continue - } - output.remove(node.start, variableDeclaration.start) - for (const declaration of declarations) { - for (const { identifier, meta } of declaration.selected) { - extractDeclaration(identifier, identifier.name, meta, node.end) - } - for (const name of declaration.preserved) { - preserveExport(name, name, node.end) - } - } - } else { - node.declaration satisfies never - } - } else if (node.specifiers.length > 0) { - const selected = node.specifiers.map((specifier) => { - tinyassert(specifier.local.type === 'Identifier') - if (specifier.exported.type !== 'Identifier') { - throw Object.assign( - new Error('unsupported string literal export name'), - { pos: specifier.exported.start }, - ) - } - const meta: TransformModuleExportMeta = {} - return { - localName: specifier.local.name, - exportName: specifier.exported.name, - meta, - selected: filter(specifier.exported.name, meta), - } - }) - if (!selected.some((item) => item.selected)) continue - - output.remove(node.start, node.end) - const sourceTail = node.source - ? input.slice(node.source.end, node.end).replace(/;?\s*$/, ';') - : undefined - for (const item of selected) { - if (!item.selected) { - if (node.source) { - emit( - node.end, - `export { ${item.localName} as ${item.exportName} } from ${node.source.raw}${sourceTail}`, - ) - } else { - preserveExport(item.localName, item.exportName, node.end) - } - continue - } - - let implementation = item.localName - // Local specifiers can appear before their declarations, unlike - // re-exports whose imported implementation is available immediately. - const position = node.source ? node.end : input.length - if (node.source) { - implementation = `$$import_${item.exportName}` - emit( - node.end, - `import { ${item.localName} as ${implementation} } from ${node.source.raw}${sourceTail}`, - ) - } - const binding = `$$module_${item.exportName}` - generate( - { - implementation, - binding, - exportName: item.exportName, - meta: item.meta, - }, - position, - ) - } - } - } else if (node.type === 'ExportAllDeclaration') { - if (options.exportAll !== 'preserve') { - throw Object.assign(new Error('unsupported ExportAllDeclaration'), { - pos: node.start, - }) - } - } else if (node.type === 'ExportDefaultDeclaration') { - let implementation: string - let bindingBase = '$$default' - let meta: TransformModuleExportMeta - - if ( - (node.declaration.type === 'FunctionDeclaration' || - node.declaration.type === 'ClassDeclaration') && - node.declaration.id - ) { - const identifier = node.declaration.id - meta = { - localName: identifier.name, - declarationKind: - node.declaration.type === 'FunctionDeclaration' - ? 'function' - : 'class', - isFunction: getIsFunction(node.declaration), - } - if (!filter('default', meta)) continue - - validateNonAsyncFunction(options, node.declaration) - output.remove(node.start, node.declaration.start) - implementation = `${identifier.name}$$impl` - output.update(identifier.start, identifier.end, implementation) - bindingBase = identifier.name - } else { - meta = { - defaultExportIdentifierName: - node.declaration.type === 'Identifier' - ? node.declaration.name - : undefined, - isFunction: getIsFunction(node.declaration), - } - if (!filter('default', meta)) continue - - validateNonAsyncFunction(options, node.declaration) - if (node.declaration.type === 'Identifier') { - implementation = node.declaration.name - output.remove(node.start, node.end) - } else { - implementation = '$$default$$impl' - output.update( - node.start, - node.declaration.start, - `const ${implementation} = `, - ) - } - } - - const binding = bindingBase - generate( - { implementation, binding, exportName: 'default', meta }, - node.end, - ) - } - } - - for (const [position, codes] of emissions) { - output.appendLeft(position, `\n${codes.join('\n')}\n`) - } - - return { - output, - references, - referenceNames: references.map((reference) => reference.exportName), - } -} - -function getIsFunction( - node: Node | ExportDefaultDeclaration['declaration'], -): boolean | undefined { - if ( - node.type === 'FunctionDeclaration' || - node.type === 'ArrowFunctionExpression' || - node.type === 'FunctionExpression' - ) { - return true - } - if ( - node.type === 'ClassDeclaration' || - node.type === 'Literal' || - node.type === 'ObjectExpression' || - node.type === 'ArrayExpression' || - node.type === 'ClassExpression' - ) { - return false - } -} diff --git a/packages/plugin-rsc/src/transforms/wrap-export.ts b/packages/plugin-rsc/src/transforms/wrap-export.ts index bad3c9ed5..07f0f1c30 100644 --- a/packages/plugin-rsc/src/transforms/wrap-export.ts +++ b/packages/plugin-rsc/src/transforms/wrap-export.ts @@ -49,7 +49,6 @@ export type TransformWrapExportOptions = { filter?: TransformWrapExportFilter } -/** @deprecated Use `transformModuleExport` instead. */ export function transformWrapExport( input: string, viteAst: ESTree.Program, From 714d08ae93ddf0a243aa5a9acd138c693acd10ed Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:25:37 +0900 Subject: [PATCH 15/23] test(rsc): compare module export mappings Co-authored-by: OpenCode --- .../default-anonymous.js.map.snap.md | 25 ++++++++ .../default-anonymous.js.map.snap.txt | 8 --- .../wrap-export/default-anonymous.js.snap.js | 14 ----- .../wrap-export/default-anonymous.js.snap.md | 47 ++++++++++++++ .../default-identifier.js.map.snap.md | 26 ++++++++ .../wrap-export/default-identifier.js.snap.js | 16 ----- .../wrap-export/default-identifier.js.snap.md | 53 ++++++++++++++++ .../wrap-export/default-named.js.map.snap.md | 23 +++++++ .../wrap-export/default-named.js.map.snap.txt | 7 --- .../wrap-export/default-named.js.snap.js | 14 ----- .../wrap-export/default-named.js.snap.md | 47 ++++++++++++++ .../wrap-export/local-alias.js.map.snap.md | 23 +++++++ .../wrap-export/local-alias.js.map.snap.txt | 7 --- .../wrap-export/local-alias.js.snap.js | 16 ----- .../wrap-export/local-alias.js.snap.md | 53 ++++++++++++++++ .../multiple-exports.js.map.snap.md | 33 ++++++++++ .../wrap-export/multiple-exports.js.snap.js | 19 ------ .../wrap-export/multiple-exports.js.snap.md | 63 +++++++++++++++++++ .../wrap-export/named-function.js.map.snap.md | 22 +++++++ .../named-function.js.map.snap.txt | 6 -- .../wrap-export/named-function.js.snap.js | 13 ---- .../wrap-export/named-function.js.snap.md | 46 ++++++++++++++ .../wrap-export/reexport.js.map.snap.md | 19 ++++++ .../wrap-export/reexport.js.map.snap.txt | 5 -- .../wrap-export/reexport.js.snap.js | 13 ---- .../wrap-export/reexport.js.snap.md | 44 +++++++++++++ .../wrap-export/variables.js.map.snap.md | 31 +++++++++ .../wrap-export/variables.js.map.snap.txt | 11 ---- .../wrap-export/variables.js.snap.js | 17 ----- .../wrap-export/variables.js.snap.md | 57 +++++++++++++++++ .../src/transforms/source-map.test.ts | 54 +++++++++------- .../plugin-rsc/src/transforms/test-utils.ts | 39 ++++++++++++ 32 files changed, 681 insertions(+), 190 deletions(-) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.txt delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.txt delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.txt delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.txt delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.txt delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.md delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.txt delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.md new file mode 100644 index 000000000..392988413 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.md @@ -0,0 +1,25 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "export default " --> (2:0) "const $$default = " +(2:15) "async function () {\n" --> (2:18) "async function () {\n" +(3:0) " return 'default anonymous function called'\n" --> (3:0) " return 'default anonymous function called'\n" +(4:0) "}\n" --> (4:0) "}\n" +[unmapped] --> (5:0) ";\n" +[unmapped] --> (6:0) "const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, \"default\");\n" +[unmapped] --> (7:0) "export { $$wrap_$$default as default };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:6) " default " --> (2:0) "const $$effect_default = " +(2:15) "async function () {\n" --> (2:25) "async function () {\n" +(3:0) " return 'default anonymous function called'\n" --> (3:0) " return 'default anonymous function called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(2:0) "export default async function () {\n" --> (5:0) "\n" +(2:0) "export default async function () {\n" --> (6:0) "registerServerReference($$effect_default, \"default\");\n" +(2:0) "export default async function () {\n" --> (7:0) "export default $$effect_default;\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.txt deleted file mode 100644 index 6d29f5d87..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.map.snap.txt +++ /dev/null @@ -1,8 +0,0 @@ -(0:0) "'use server'\n" --> (0:0) "'use server'\n" -(2:0) "export default " --> (2:0) "const $$default = " -(2:15) "async function () {\n" --> (2:18) "async function () {\n" -(3:0) " return 'default anonymous function called'\n" --> (3:0) " return 'default anonymous function called'\n" -(4:0) "}\n" --> (4:0) "}\n" -[unmapped] --> (5:0) ";\n" -[unmapped] --> (6:0) "const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, \"default\");\n" -[unmapped] --> (7:0) "export { $$wrap_$$default as default };\n" diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js deleted file mode 100644 index d1fd45515..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0= -*/ - -'use server' - -const $$default = async function () { - return 'default anonymous function called' -} -; -const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); -export { $$wrap_$$default as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md new file mode 100644 index 000000000..2c88b1a97 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-anonymous.js.snap.md @@ -0,0 +1,47 @@ +## Input + +```js +'use server' + +export default async function () { + return 'default anonymous function called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** default + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjI5ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRkZWZhdWx0ID0gYXN5bmMgZnVuY3Rpb24gKCkgewogIHJldHVybiAnZGVmYXVsdCBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkJwp9CjsKY29uc3QgJCR3cmFwXyQkZGVmYXVsdCA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGRlZmF1bHQsICJkZWZhdWx0Iik7CmV4cG9ydCB7ICQkd3JhcF8kJGRlZmF1bHQgYXMgZGVmYXVsdCB9OwozMjMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLGtCQUFlLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDM0M7Ozs7In0=) + +```js +'use server' + +const $$default = async function () { + return 'default anonymous function called' +} +; +const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); +export { $$wrap_$$default as default }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** default + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3QgJCRlZmZlY3RfZGVmYXVsdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2RlZmF1bHQgYW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRlZmZlY3RfZGVmYXVsdCwgImRlZmF1bHQiKTsKZXhwb3J0IGRlZmF1bHQgJCRlZmZlY3RfZGVmYXVsdDsKMzM1AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdkZWZhdWx0IGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFTCx5QkFBUyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQzNDO0FBRkE7QUFBQTtBQUFBOyJ9) + +```js +'use server' + +const $$effect_default = async function () { + return 'default anonymous function called' +} + +registerServerReference($$effect_default, "default"); +export default $$effect_default; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.map.snap.md new file mode 100644 index 000000000..a7c2a494c --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.map.snap.md @@ -0,0 +1,26 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "async function defaultIdentifier() {\n" --> (2:0) "async function defaultIdentifier() {\n" +(3:0) " return 'default identifier called'\n" --> (3:0) " return 'default identifier called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(6:0) "export default " --> (6:0) "const $$default = " +(6:15) "defaultIdentifier\n" --> (6:18) "defaultIdentifier\n" +[unmapped] --> (7:0) ";\n" +[unmapped] --> (8:0) "const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, \"default\");\n" +[unmapped] --> (9:0) "export { $$wrap_$$default as default };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "async function defaultIdentifier() {\n" --> (2:0) "async function defaultIdentifier() {\n" +(3:0) " return 'default identifier called'\n" --> (3:0) " return 'default identifier called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(6:6) " default defaultIdentifier\n" --> (6:0) "const $$effect_default = defaultIdentifier;\n" +(6:0) "export default defaultIdentifier\n" --> (7:0) "\n" +(6:0) "export default defaultIdentifier\n" --> (8:0) "registerServerReference($$effect_default, \"default\");\n" +(6:0) "export default defaultIdentifier\n" --> (9:0) "export default $$effect_default;\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js deleted file mode 100644 index 8f8865f1e..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9 -*/ - -'use server' - -async function defaultIdentifier() { - return 'default identifier called' -} - -const $$default = defaultIdentifier -; -const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); -export { $$wrap_$$default as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md new file mode 100644 index 000000000..d8039095b --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-identifier.js.snap.md @@ -0,0 +1,53 @@ +## Input + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +export default defaultIdentifier +``` + +## wrap-export + +**Status:** transformed + +**References:** default + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjU3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGRlZmF1bHQgPSBkZWZhdWx0SWRlbnRpZmllcgo7CmNvbnN0ICQkd3JhcF8kJGRlZmF1bHQgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRkZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgeyAkJHdyYXBfJCRkZWZhdWx0IGFzIGRlZmF1bHQgfTsKMzU2AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRJZGVudGlmaWVyKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgaWRlbnRpZmllciBjYWxsZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRJZGVudGlmaWVyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQ25DOztBQUVBLGtCQUFlOzs7OyJ9) + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +const $$default = defaultIdentifier +; +const $$wrap_$$default = /* #__PURE__ */ registerServerReference($$default, "default"); +export { $$wrap_$$default as default }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** default + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7CiAgcmV0dXJuICdkZWZhdWx0IGlkZW50aWZpZXIgY2FsbGVkJwp9Cgpjb25zdCAkJGVmZmVjdF9kZWZhdWx0ID0gZGVmYXVsdElkZW50aWZpZXI7CgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGVmZmVjdF9kZWZhdWx0LCAiZGVmYXVsdCIpOwpleHBvcnQgZGVmYXVsdCAkJGVmZmVjdF9kZWZhdWx0OwozNjIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gZGVmYXVsdElkZW50aWZpZXIoKSB7XG4gIHJldHVybiAnZGVmYXVsdCBpZGVudGlmaWVyIGNhbGxlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdElkZW50aWZpZXJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDbkM7O0FBRU07QUFBTjtBQUFBO0FBQUE7In0=) + +```js +'use server' + +async function defaultIdentifier() { + return 'default identifier called' +} + +const $$effect_default = defaultIdentifier; + +registerServerReference($$effect_default, "default"); +export default $$effect_default; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.md new file mode 100644 index 000000000..86fa79fd2 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.md @@ -0,0 +1,23 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:15) "async function defaultNamedFunction() {\n" --> (2:0) "async function defaultNamedFunction() {\n" +(3:0) " return 'default named function called'\n" --> (3:0) " return 'default named function called'\n" +(4:0) "}\n" --> (4:0) "}\n" +[unmapped] --> (5:0) ";\n" +[unmapped] --> (6:0) "const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, \"default\");\n" +[unmapped] --> (7:0) "export { $$wrap_defaultNamedFunction as default };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:15) "async function defaultNamedFunction() {\n" --> (2:0) "async function defaultNamedFunction() {\n" +(3:0) " return 'default named function called'\n" --> (3:0) " return 'default named function called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(2:0) "export default async function defaultNamedFunction() {\n" --> (5:0) "\n" +(2:0) "export default async function defaultNamedFunction() {\n" --> (6:0) "registerServerReference(defaultNamedFunction, \"default\");\n" +(2:0) "export default async function defaultNamedFunction() {\n" --> (7:0) "export default defaultNamedFunction;\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.txt deleted file mode 100644 index c54867b2f..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.map.snap.txt +++ /dev/null @@ -1,7 +0,0 @@ -(0:0) "'use server'\n" --> (0:0) "'use server'\n" -(2:15) "async function defaultNamedFunction() {\n" --> (2:0) "async function defaultNamedFunction() {\n" -(3:0) " return 'default named function called'\n" --> (3:0) " return 'default named function called'\n" -(4:0) "}\n" --> (4:0) "}\n" -[unmapped] --> (5:0) ";\n" -[unmapped] --> (6:0) "const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, \"default\");\n" -[unmapped] --> (7:0) "export { $$wrap_defaultNamedFunction as default };\n" diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js deleted file mode 100644 index 6480fb172..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0= -*/ - -'use server' - -async function defaultNamedFunction() { - return 'default named function called' -} -; -const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, "default"); -export { $$wrap_defaultNamedFunction as default }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md new file mode 100644 index 000000000..b31b20bea --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/default-named.js.snap.md @@ -0,0 +1,47 @@ +## Input + +```js +'use server' + +export default async function defaultNamedFunction() { + return 'default named function called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** default + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjYwACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQo7CmNvbnN0ICQkd3JhcF9kZWZhdWx0TmFtZWRGdW5jdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShkZWZhdWx0TmFtZWRGdW5jdGlvbiwgImRlZmF1bHQiKTsKZXhwb3J0IHsgJCR3cmFwX2RlZmF1bHROYW1lZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTsKMzQwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGRlZmF1bHROYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ2RlZmF1bHQgbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDdkM7Ozs7In0=) + +```js +'use server' + +async function defaultNamedFunction() { + return 'default named function called' +} +; +const $$wrap_defaultNamedFunction = /* #__PURE__ */ registerServerReference(defaultNamedFunction, "default"); +export { $$wrap_defaultNamedFunction as default }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** default + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTkzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7CiAgcmV0dXJuICdkZWZhdWx0IG5hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZGVmYXVsdE5hbWVkRnVuY3Rpb24sICJkZWZhdWx0Iik7CmV4cG9ydCBkZWZhdWx0IGRlZmF1bHROYW1lZEZ1bmN0aW9uOwozNTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZGVmYXVsdE5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnZGVmYXVsdCBuYW1lZCBmdW5jdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSSxLQUFLLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUN2QztBQUZBO0FBQUE7QUFBQTsifQ==) + +```js +'use server' + +async function defaultNamedFunction() { + return 'default named function called' +} + +registerServerReference(defaultNamedFunction, "default"); +export default defaultNamedFunction; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.md new file mode 100644 index 000000000..c3ac63ed7 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.md @@ -0,0 +1,23 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "async function localAlias() {\n" --> (2:0) "async function localAlias() {\n" +(3:0) " return 'local alias called'\n" --> (3:0) " return 'local alias called'\n" +(4:0) "}\n" --> (4:0) "}\n" +[unmapped] --> (7:0) ";\n" +[unmapped] --> (8:0) "const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, \"aliasedAction\");\n" +[unmapped] --> (9:0) "export { $$wrap_localAlias as aliasedAction };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "async function localAlias() {\n" --> (2:0) "async function localAlias() {\n" +(3:0) " return 'local alias called'\n" --> (3:0) " return 'local alias called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(6:0) "export { localAlias as aliasedAction }\n" --> (7:0) "\n" +(6:0) "export { localAlias as aliasedAction }\n" --> (8:0) "registerServerReference(localAlias, \"aliasedAction\");\n" +(6:0) "export { localAlias as aliasedAction }\n" --> (9:0) "export { localAlias as aliasedAction }\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.txt deleted file mode 100644 index 423001662..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.map.snap.txt +++ /dev/null @@ -1,7 +0,0 @@ -(0:0) "'use server'\n" --> (0:0) "'use server'\n" -(2:0) "async function localAlias() {\n" --> (2:0) "async function localAlias() {\n" -(3:0) " return 'local alias called'\n" --> (3:0) " return 'local alias called'\n" -(4:0) "}\n" --> (4:0) "}\n" -[unmapped] --> (7:0) ";\n" -[unmapped] --> (8:0) "const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, \"aliasedAction\");\n" -[unmapped] --> (9:0) "export { $$wrap_localAlias as aliasedAction };\n" diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js deleted file mode 100644 index ec5c2b8f0..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9 -*/ - -'use server' - -async function localAlias() { - return 'local alias called' -} - - -; -const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, "aliasedAction"); -export { $$wrap_localAlias as aliasedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md new file mode 100644 index 000000000..3f4054e24 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/local-alias.js.snap.md @@ -0,0 +1,53 @@ +## Input + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + +export { localAlias as aliasedAction } +``` + +## wrap-export + +**Status:** transformed + +**References:** aliasedAction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjIzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCjsKY29uc3QgJCR3cmFwX2xvY2FsQWxpYXMgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobG9jYWxBbGlhcywgImFsaWFzZWRBY3Rpb24iKTsKZXhwb3J0IHsgJCR3cmFwX2xvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9OwozMzYAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7Ozs7OyJ9) + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + + +; +const $$wrap_localAlias = /* #__PURE__ */ registerServerReference(localAlias, "aliasedAction"); +export { $$wrap_localAlias as aliasedAction }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** aliasedAction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHsKICByZXR1cm4gJ2xvY2FsIGFsaWFzIGNhbGxlZCcKfQoKCgpyZWdpc3RlclNlcnZlclJlZmVyZW5jZShsb2NhbEFsaWFzLCAiYWxpYXNlZEFjdGlvbiIpOwpleHBvcnQgeyBsb2NhbEFsaWFzIGFzIGFsaWFzZWRBY3Rpb24gfQozNDgAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuYXN5bmMgZnVuY3Rpb24gbG9jYWxBbGlhcygpIHtcbiAgcmV0dXJuICdsb2NhbCBhbGlhcyBjYWxsZWQnXG59XG5cbmV4cG9ydCB7IGxvY2FsQWxpYXMgYXMgYWxpYXNlZEFjdGlvbiB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFWCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM1Qjs7O0FBRUE7QUFBQTtBQUFBOyJ9) + +```js +'use server' + +async function localAlias() { + return 'local alias called' +} + + + +registerServerReference(localAlias, "aliasedAction"); +export { localAlias as aliasedAction } +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.map.snap.md new file mode 100644 index 000000000..72485f5a2 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.map.snap.md @@ -0,0 +1,33 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "async function firstAction() {\n" --> (2:0) "async function firstAction() {\n" +(3:0) " return 'first action called'\n" --> (3:0) " return 'first action called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(6:7) "async function secondAction() {\n" --> (6:0) "async function secondAction() {\n" +(7:0) " return 'second action called'\n" --> (7:0) " return 'second action called'\n" +(8:0) "}\n" --> (8:0) "}\n" +(2:0) "export async function firstAction() {\n" --> (9:0) "firstAction = /* #__PURE__ */ registerServerReference(firstAction, \"firstAction\");\n" +(2:0) "export async function firstAction() {\n" --> (10:0) "export { firstAction };\n" +(6:0) "export async function secondAction() {\n" --> (11:0) "secondAction = /* #__PURE__ */ registerServerReference(secondAction, \"secondAction\");\n" +(6:0) "export async function secondAction() {\n" --> (12:0) "export { secondAction };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "async function firstAction() {\n" --> (2:0) "async function firstAction() {\n" +(3:0) " return 'first action called'\n" --> (3:0) " return 'first action called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(6:7) "async function secondAction() {\n" --> (6:0) "async function secondAction() {\n" +(7:0) " return 'second action called'\n" --> (7:0) " return 'second action called'\n" +(8:0) "}\n" --> (8:0) "}\n" +(2:0) "export async function firstAction() {\n" --> (9:0) "\n" +(2:0) "export async function firstAction() {\n" --> (10:0) "registerServerReference(firstAction, \"firstAction\");\n" +(2:0) "export async function firstAction() {\n" --> (11:0) "export { firstAction };\n" +(6:0) "export async function secondAction() {\n" --> (12:0) "\n" +(6:0) "export async function secondAction() {\n" --> (13:0) "registerServerReference(secondAction, \"secondAction\");\n" +(6:0) "export async function secondAction() {\n" --> (14:0) "export { secondAction };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js deleted file mode 100644 index 4cdb47bf3..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0= -*/ - -'use server' - -async function firstAction() { - return 'first action called' -} - -async function secondAction() { - return 'second action called' -} -firstAction = /* #__PURE__ */ registerServerReference(firstAction, "firstAction"); -export { firstAction }; -secondAction = /* #__PURE__ */ registerServerReference(secondAction, "secondAction"); -export { secondAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md new file mode 100644 index 000000000..20e24de54 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/multiple-exports.js.snap.md @@ -0,0 +1,63 @@ +## Input + +```js +'use server' + +export async function firstAction() { + return 'first action called' +} + +export async function secondAction() { + return 'second action called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** firstAction, secondAction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzYzACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQpmaXJzdEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShmaXJzdEFjdGlvbiwgImZpcnN0QWN0aW9uIik7CmV4cG9ydCB7IGZpcnN0QWN0aW9uIH07CnNlY29uZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZShzZWNvbmRBY3Rpb24sICJzZWNvbmRBY3Rpb24iKTsKZXhwb3J0IHsgc2Vjb25kQWN0aW9uIH07CjUwNAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7XG4gIHJldHVybiAnZmlyc3QgYWN0aW9uIGNhbGxlZCdcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY29uZEFjdGlvbigpIHtcbiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzdCOztBQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzlCO0FBTkE7QUFBQTtBQUlBO0FBQUE7In0=) + +```js +'use server' + +async function firstAction() { + return 'first action called' +} + +async function secondAction() { + return 'second action called' +} +firstAction = /* #__PURE__ */ registerServerReference(firstAction, "firstAction"); +export { firstAction }; +secondAction = /* #__PURE__ */ registerServerReference(secondAction, "secondAction"); +export { secondAction }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** firstAction, secondAction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzA0ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gZmlyc3RBY3Rpb24oKSB7CiAgcmV0dXJuICdmaXJzdCBhY3Rpb24gY2FsbGVkJwp9Cgphc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7CiAgcmV0dXJuICdzZWNvbmQgYWN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZmlyc3RBY3Rpb24sICJmaXJzdEFjdGlvbiIpOwpleHBvcnQgeyBmaXJzdEFjdGlvbiB9OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2Uoc2Vjb25kQWN0aW9uLCAic2Vjb25kQWN0aW9uIik7CmV4cG9ydCB7IHNlY29uZEFjdGlvbiB9Owo1MTQAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcnN0QWN0aW9uKCkge1xuICByZXR1cm4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWNvbmRBY3Rpb24oKSB7XG4gIHJldHVybiAnc2Vjb25kIGFjdGlvbiBjYWxsZWQnXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7QUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUM3Qjs7QUFFTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUM5QjtBQU5BO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTsifQ==) + +```js +'use server' + +async function firstAction() { + return 'first action called' +} + +async function secondAction() { + return 'second action called' +} + +registerServerReference(firstAction, "firstAction"); +export { firstAction }; + +registerServerReference(secondAction, "secondAction"); +export { secondAction }; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.md new file mode 100644 index 000000000..291d2b0c3 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.md @@ -0,0 +1,22 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "async function namedFunction() {\n" --> (2:0) "async function namedFunction() {\n" +(3:0) " return 'named function called'\n" --> (3:0) " return 'named function called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(2:0) "export async function namedFunction() {\n" --> (5:0) "namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, \"namedFunction\");\n" +(2:0) "export async function namedFunction() {\n" --> (6:0) "export { namedFunction };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "async function namedFunction() {\n" --> (2:0) "async function namedFunction() {\n" +(3:0) " return 'named function called'\n" --> (3:0) " return 'named function called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(2:0) "export async function namedFunction() {\n" --> (5:0) "\n" +(2:0) "export async function namedFunction() {\n" --> (6:0) "registerServerReference(namedFunction, \"namedFunction\");\n" +(2:0) "export async function namedFunction() {\n" --> (7:0) "export { namedFunction };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.txt deleted file mode 100644 index 55aaef07d..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.map.snap.txt +++ /dev/null @@ -1,6 +0,0 @@ -(0:0) "'use server'\n" --> (0:0) "'use server'\n" -(2:7) "async function namedFunction() {\n" --> (2:0) "async function namedFunction() {\n" -(3:0) " return 'named function called'\n" --> (3:0) " return 'named function called'\n" -(4:0) "}\n" --> (4:0) "}\n" -(2:0) "export async function namedFunction() {\n" --> (5:0) "namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, \"namedFunction\");\n" -(2:0) "export async function namedFunction() {\n" --> (6:0) "export { namedFunction };\n" diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js deleted file mode 100644 index 3f597bb58..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ== -*/ - -'use server' - -async function namedFunction() { - return 'named function called' -} -namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, "namedFunction"); -export { namedFunction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md new file mode 100644 index 000000000..e6fb50e56 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function.js.snap.md @@ -0,0 +1,46 @@ +## Input + +```js +'use server' + +export async function namedFunction() { + return 'named function called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** namedFunction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk3ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQpuYW1lZEZ1bmN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKG5hbWVkRnVuY3Rpb24sICJuYW1lZEZ1bmN0aW9uIik7CmV4cG9ydCB7IG5hbWVkRnVuY3Rpb24gfTsKMzEyAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuYW1lZEZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0FBQy9CO0FBRkE7QUFBQTsifQ==) + +```js +'use server' + +async function namedFunction() { + return 'named function called' +} +namedFunction = /* #__PURE__ */ registerServerReference(namedFunction, "namedFunction"); +export { namedFunction }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** namedFunction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY2ACd1c2Ugc2VydmVyJwoKYXN5bmMgZnVuY3Rpb24gbmFtZWRGdW5jdGlvbigpIHsKICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UobmFtZWRGdW5jdGlvbiwgIm5hbWVkRnVuY3Rpb24iKTsKZXhwb3J0IHsgbmFtZWRGdW5jdGlvbiB9OwozMTcAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5hbWVkRnVuY3Rpb24oKSB7XG4gIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDL0I7QUFGQTtBQUFBO0FBQUE7In0=) + +```js +'use server' + +async function namedFunction() { + return 'named function called' +} + +registerServerReference(namedFunction, "namedFunction"); +export { namedFunction }; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.md new file mode 100644 index 000000000..62a46b8fe --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.md @@ -0,0 +1,19 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +[unmapped] --> (3:0) ";\n" +[unmapped] --> (4:0) "import { reexportedAction as $$import_reexportedAction } from './reexport-source';\n" +[unmapped] --> (5:0) "const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, \"reexportedAction\");\n" +[unmapped] --> (6:0) "export { $$wrap_$$import_reexportedAction as reexportedAction };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "export { reexportedAction } from './reexport-source'\n" --> (3:0) "\n" +(2:0) "export { reexportedAction } from './reexport-source'\n" --> (4:0) "export { reexportedAction } from './reexport-source'\n" +(2:0) "export { reexportedAction } from './reexport-source'\n" --> (5:0) "registerServerReference($$effect_import_reexportedAction, \"reexportedAction\");\n" +[unmapped] --> (7:0) "import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source';" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.txt deleted file mode 100644 index 3d792327d..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.map.snap.txt +++ /dev/null @@ -1,5 +0,0 @@ -(0:0) "'use server'\n" --> (0:0) "'use server'\n" -[unmapped] --> (3:0) ";\n" -[unmapped] --> (4:0) "import { reexportedAction as $$import_reexportedAction } from './reexport-source';\n" -[unmapped] --> (5:0) "const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, \"reexportedAction\");\n" -[unmapped] --> (6:0) "export { $$wrap_$$import_reexportedAction as reexportedAction };\n" diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js deleted file mode 100644 index f8c3429ef..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ== -*/ - -'use server' - - -; -import { reexportedAction as $$import_reexportedAction } from './reexport-source'; -const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, "reexportedAction"); -export { $$wrap_$$import_reexportedAction as reexportedAction }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md new file mode 100644 index 000000000..84a29982d --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/reexport.js.snap.md @@ -0,0 +1,44 @@ +## Input + +```js +'use server' + +export { reexportedAction } from './reexport-source' +``` + +## wrap-export + +**Status:** transformed + +**References:** reexportedAction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#Mjk0ACd1c2Ugc2VydmVyJwoKCjsKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnOwpjb25zdCAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiA9IC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwpleHBvcnQgeyAkJHdyYXBfJCRpbXBvcnRfcmVleHBvcnRlZEFjdGlvbiBhcyByZWV4cG9ydGVkQWN0aW9uIH07CjE3NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc2VydmVyJ1xuXG5leHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQyxHQUFHLENBQUMsTUFBTTs7Ozs7OzsifQ==) + +```js +'use server' + + +; +import { reexportedAction as $$import_reexportedAction } from './reexport-source'; +const $$wrap_$$import_reexportedAction = /* #__PURE__ */ registerServerReference($$import_reexportedAction, "reexportedAction"); +export { $$wrap_$$import_reexportedAction as reexportedAction }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** reexportedAction + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjM4ACd1c2Ugc2VydmVyJwoKCgpleHBvcnQgeyByZWV4cG9ydGVkQWN0aW9uIH0gZnJvbSAnLi9yZWV4cG9ydC1zb3VyY2UnCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKCQkZWZmZWN0X2ltcG9ydF9yZWV4cG9ydGVkQWN0aW9uLCAicmVleHBvcnRlZEFjdGlvbiIpOwoKaW1wb3J0IHsgcmVleHBvcnRlZEFjdGlvbiBhcyAkJGVmZmVjdF9pbXBvcnRfcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJzsxODgAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IHsgcmVleHBvcnRlZEFjdGlvbiB9IGZyb20gJy4vcmVleHBvcnQtc291cmNlJ1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07OztBQUVYO0FBQUE7QUFBQTs7In0=) + +```js +'use server' + + + +export { reexportedAction } from './reexport-source' +registerServerReference($$effect_import_reexportedAction, "reexportedAction"); + +import { reexportedAction as $$effect_import_reexportedAction } from './reexport-source'; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.md new file mode 100644 index 000000000..d9a0477ce --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.md @@ -0,0 +1,31 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "const" --> (2:0) "let" +(2:12) " arrowFunction = async () => 'arrow function called'\n" --> (2:3) " arrowFunction = async () => 'arrow function called'\n" +(4:7) "const" --> (4:0) "let" +(4:12) " functionExpression = async function () {\n" --> (4:3) " functionExpression = async function () {\n" +(5:0) " return 'function expression called'\n" --> (5:0) " return 'function expression called'\n" +(6:0) "}\n" --> (6:0) "}\n" +(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (7:0) "arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, \"arrowFunction\");\n" +(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (8:0) "export { arrowFunction };\n" +(4:0) "export const functionExpression = async function () {\n" --> (9:0) "functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, \"functionExpression\");\n" +(4:0) "export const functionExpression = async function () {\n" --> (10:0) "export { functionExpression };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "const arrowFunction = async () => 'arrow function called'\n" --> (2:0) "const arrowFunction = async () => 'arrow function called'\n" +(4:7) "const functionExpression = async function () {\n" --> (4:0) "const functionExpression = async function () {\n" +(5:0) " return 'function expression called'\n" --> (5:0) " return 'function expression called'\n" +(6:0) "}\n" --> (6:0) "}\n" +(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (7:0) "\n" +(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (8:0) "registerServerReference(arrowFunction, \"arrowFunction\");\n" +(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (9:0) "export { arrowFunction };\n" +(4:0) "export const functionExpression = async function () {\n" --> (10:0) "\n" +(4:0) "export const functionExpression = async function () {\n" --> (11:0) "registerServerReference(functionExpression, \"functionExpression\");\n" +(4:0) "export const functionExpression = async function () {\n" --> (12:0) "export { functionExpression };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.txt deleted file mode 100644 index 4ae4a9a12..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.map.snap.txt +++ /dev/null @@ -1,11 +0,0 @@ -(0:0) "'use server'\n" --> (0:0) "'use server'\n" -(2:7) "const" --> (2:0) "let" -(2:12) " arrowFunction = async () => 'arrow function called'\n" --> (2:3) " arrowFunction = async () => 'arrow function called'\n" -(4:7) "const" --> (4:0) "let" -(4:12) " functionExpression = async function () {\n" --> (4:3) " functionExpression = async function () {\n" -(5:0) " return 'function expression called'\n" --> (5:0) " return 'function expression called'\n" -(6:0) "}\n" --> (6:0) "}\n" -(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (7:0) "arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, \"arrowFunction\");\n" -(2:0) "export const arrowFunction = async () => 'arrow function called'\n" --> (8:0) "export { arrowFunction };\n" -(4:0) "export const functionExpression = async function () {\n" --> (9:0) "functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, \"functionExpression\");\n" -(4:0) "export const functionExpression = async function () {\n" --> (10:0) "export { functionExpression };\n" diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js deleted file mode 100644 index 0c9760023..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.js +++ /dev/null @@ -1,17 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9 -*/ - -'use server' - -let arrowFunction = async () => 'arrow function called' - -let functionExpression = async function () { - return 'function expression called' -} -arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, "arrowFunction"); -export { arrowFunction }; -functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, "functionExpression"); -export { functionExpression }; diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md new file mode 100644 index 000000000..b806e656f --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/variables.js.snap.md @@ -0,0 +1,57 @@ +## Input + +```js +'use server' + +export const arrowFunction = async () => 'arrow function called' + +export const functionExpression = async function () { + return 'function expression called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** arrowFunction, functionExpression + +[Source map visualization](https://evanw.github.io/source-map-visualization/#NDA2ACd1c2Ugc2VydmVyJwoKbGV0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJwoKbGV0IGZ1bmN0aW9uRXhwcmVzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJwp9CmFycm93RnVuY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwpmdW5jdGlvbkV4cHJlc3Npb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NDMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosR0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxHQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFFQTtBQUFBOyJ9) + +```js +'use server' + +let arrowFunction = async () => 'arrow function called' + +let functionExpression = async function () { + return 'function expression called' +} +arrowFunction = /* #__PURE__ */ registerServerReference(arrowFunction, "arrowFunction"); +export { arrowFunction }; +functionExpression = /* #__PURE__ */ registerServerReference(functionExpression, "functionExpression"); +export { functionExpression }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** arrowFunction, functionExpression + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MzQzACd1c2Ugc2VydmVyJwoKY29uc3QgYXJyb3dGdW5jdGlvbiA9IGFzeW5jICgpID0+ICdhcnJvdyBmdW5jdGlvbiBjYWxsZWQnCgpjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7CiAgcmV0dXJuICdmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYXJyb3dGdW5jdGlvbiwgImFycm93RnVuY3Rpb24iKTsKZXhwb3J0IHsgYXJyb3dGdW5jdGlvbiB9OwoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoZnVuY3Rpb25FeHByZXNzaW9uLCAiZnVuY3Rpb25FeHByZXNzaW9uIik7CmV4cG9ydCB7IGZ1bmN0aW9uRXhwcmVzc2lvbiB9Owo1NTMAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFycm93RnVuY3Rpb24gPSBhc3luYyAoKSA9PiAnYXJyb3cgZnVuY3Rpb24gY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgZnVuY3Rpb25FeHByZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2Z1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNOztBQUV4RCxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUNwQztBQUpBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTsifQ==) + +```js +'use server' + +const arrowFunction = async () => 'arrow function called' + +const functionExpression = async function () { + return 'function expression called' +} + +registerServerReference(arrowFunction, "arrowFunction"); +export { arrowFunction }; + +registerServerReference(functionExpression, "functionExpression"); +export { functionExpression }; +``` diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index 56c03c3af..23f7d42b8 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -2,7 +2,13 @@ import path from 'node:path' import { parseAstAsync } from 'vite' import { describe, expect, test } from 'vitest' import { transformHoistInlineDirective } from './hoist' -import { formatDecodedSourceMap, formatSourceMapFixture } from './test-utils' +import { transformModuleExportEffect } from './module-export-effect' +import { + formatDecodedSourceMap, + formatDecodedSourceMapMarkdown, + formatSourceMapFixture, + formatSourceMapMarkdownFixture, +} from './test-utils' import { transformWrapExport } from './wrap-export' describe('source map fixtures', () => { @@ -10,36 +16,36 @@ describe('source map fixtures', () => { ['./fixtures/source-map/wrap-export/**/*.js', '!**/*.snap.*'], { query: 'raw' }, ) - // Generated `registerServerReference(...)` calls should map to the original - // Server Function definition, or to the export statement for re-exports. - const textualMapFixtures = new Set([ - './fixtures/source-map/wrap-export/named-function.js', - './fixtures/source-map/wrap-export/variables.js', - - // TODO: These registrations are currently unmapped. - // https://github.com/vitejs/vite-plugin-react/issues/1361 - './fixtures/source-map/wrap-export/default-anonymous.js', - './fixtures/source-map/wrap-export/default-named.js', - './fixtures/source-map/wrap-export/local-alias.js', - './fixtures/source-map/wrap-export/reexport.js', - ]) - for (const [file, load] of Object.entries(wrapExportFixtures)) { - test(`wrap-export/${path.basename(file)}`, async () => { + test(`module-export/${path.basename(file)}`, async () => { const input = ((await load()) as any).default as string const ast = await parseAstAsync(input) - const result = transformWrapExport(input, ast, { + const wrapResult = transformWrapExport(input, ast, { runtime: (value, name) => `registerServerReference(${value}, ${JSON.stringify(name)})`, }) - await expect(formatSourceMapFixture(result.output)).toMatchFileSnapshot( - file + '.snap.js', + const effectResult = transformModuleExportEffect(input, ast, { + runtime: ({ binding, exportName }) => + `registerServerReference(${binding}, ${JSON.stringify(exportName)})`, + }) + const outputs = [ + { + name: 'wrap-export', + output: wrapResult.output, + references: wrapResult.exportNames, + }, + { + name: 'module-export-effect', + output: effectResult.output, + references: effectResult.referenceNames, + }, + ] + await expect( + formatSourceMapMarkdownFixture(input, outputs), + ).toMatchFileSnapshot(file + '.snap.md') + await expect(formatDecodedSourceMapMarkdown(outputs)).toMatchFileSnapshot( + file + '.map.snap.md', ) - if (textualMapFixtures.has(file)) { - await expect(formatDecodedSourceMap(result.output)).toMatchFileSnapshot( - file + '.map.snap.txt', - ) - } }) } diff --git a/packages/plugin-rsc/src/transforms/test-utils.ts b/packages/plugin-rsc/src/transforms/test-utils.ts index ce090da88..eb511bb64 100644 --- a/packages/plugin-rsc/src/transforms/test-utils.ts +++ b/packages/plugin-rsc/src/transforms/test-utils.ts @@ -13,6 +13,41 @@ ${visualization} ${code}` } +type SourceMapFixtureOutput = { + name: string + output: MagicString + references?: readonly string[] +} + +export function formatSourceMapMarkdownFixture( + input: string, + outputs: readonly SourceMapFixtureOutput[], +): string { + const sections = [`## Input\n\n${formatCodeBlock('js', input)}`] + for (const { name, output, references } of outputs) { + const code = output.toString() + const map = output.generateMap({ includeContent: true, hires: 'boundary' }) + const visualization = generateVisualizationLink(code, map.toString()) + sections.push( + `## ${name}\n\n**Status:** ${output.hasChanged() ? 'transformed' : 'unchanged'}\n\n**References:** ${references?.join(', ') || '(none)'}\n\n[Source map visualization](${visualization})\n\n${formatCodeBlock('js', code)}`, + ) + } + return sections.join('\n\n') + '\n' +} + +export function formatDecodedSourceMapMarkdown( + outputs: readonly SourceMapFixtureOutput[], +): string { + return ( + outputs + .map( + ({ name, output }) => + `## ${name}\n\n${formatCodeBlock('txt', formatDecodedSourceMap(output))}`, + ) + .join('\n\n') + '\n' + ) +} + /** * Formats decoded mapping ranges as compact original-to-generated text pairs. * This test-local formatter is inspired by Oxc's source map visualizer output: @@ -125,6 +160,10 @@ function sliceLine( return end === undefined && line < lines.length - 1 ? result + '\n' : result } +function formatCodeBlock(language: string, code: string): string { + return `\`\`\`${language}\n${code}${code.endsWith('\n') ? '' : '\n'}\`\`\`` +} + function generateVisualizationLink(code: string, map: string): string { const codeBuffer = Buffer.from(code) const mapBuffer = Buffer.from(map) From be2b47da056c24a367e25c74027ea7b52715f727 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:42:07 +0900 Subject: [PATCH 16/23] docs(rsc): explain module export source mapping Co-authored-by: OpenCode --- .../plugin-rsc/src/transforms/module-export-effect.ts | 10 ++++++++-- packages/plugin-rsc/src/transforms/server-action.ts | 4 ++-- packages/plugin-rsc/src/transforms/source-map.test.ts | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.ts b/packages/plugin-rsc/src/transforms/module-export-effect.ts index 17396c7a2..b25ef97cd 100644 --- a/packages/plugin-rsc/src/transforms/module-export-effect.ts +++ b/packages/plugin-rsc/src/transforms/module-export-effect.ts @@ -35,8 +35,12 @@ export type TransformModuleExportEffectOptions = { } /** - * Preserves selected source bindings and emits one mapped module effect for each - * exported value. This models Next.js-style module Server Action lowering. + * Preserves source bindings and emits registration effects at module end. + * + * The start of each generated runtime expression remains mapped to its original + * Server Function export site. React captures the `registerServerReference` + * caller as the reference source location, so unmapped generated code can fall + * back to an adjacent location. Re-exports map to their export statement. */ export function transformModuleExportEffect( input: string, @@ -60,6 +64,8 @@ export function transformModuleExportEffect( return `${options.runtime(context)};` } + // Rewrite and move an existing source range so the generated runtime + // expression retains that range's original mapping at module end. function replaceAndMove( start: number, end: number, diff --git a/packages/plugin-rsc/src/transforms/server-action.ts b/packages/plugin-rsc/src/transforms/server-action.ts index c93f013ef..ec46a9f11 100644 --- a/packages/plugin-rsc/src/transforms/server-action.ts +++ b/packages/plugin-rsc/src/transforms/server-action.ts @@ -4,8 +4,8 @@ import { transformHoistInlineDirective } from './hoist' import { transformModuleExportEffect } from './module-export-effect' import { hasDirective } from './utils' -// TODO: Preserve the `runtime` call's original Server Function position for -// every inline directive shape. +// TODO: Apply the same runtime-callsite mapping contract to every inline +// directive shape. // https://github.com/vitejs/vite-plugin-react/issues/1361 export function transformServerActionServer( input: string, diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index 23f7d42b8..f03b04850 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -16,6 +16,9 @@ describe('source map fixtures', () => { ['./fixtures/source-map/wrap-export/**/*.js', '!**/*.snap.*'], { query: 'raw' }, ) + // Generated runtime expressions should map to the original Server Function + // export site, or to the export statement for re-exports. React uses the + // `registerServerReference` caller as the reference's source location. for (const [file, load] of Object.entries(wrapExportFixtures)) { test(`module-export/${path.basename(file)}`, async () => { const input = ((await load()) as any).default as string From d894c624ae8be9012e9eea7590bab224f27ff3e3 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:49:12 +0900 Subject: [PATCH 17/23] test(rsc): cover module export semantics Co-authored-by: OpenCode --- .../wrap-export/dependent-declarators.js | 4 ++ .../dependent-declarators.js.map.snap.md | 24 +++++++++ .../dependent-declarators.js.snap.md | 46 ++++++++++++++++ .../wrap-export/destructured-export.js | 5 ++ .../destructured-export.js.map.snap.md | 21 ++++++++ .../destructured-export.js.snap.md | 46 ++++++++++++++++ .../wrap-export/named-function-expression.js | 5 ++ .../named-function-expression.js.map.snap.md | 23 ++++++++ .../named-function-expression.js.snap.md | 46 ++++++++++++++++ .../wrap-export/pre-declaration-reference.js | 7 +++ .../pre-declaration-reference.js.map.snap.md | 24 +++++++++ .../pre-declaration-reference.js.snap.md | 52 +++++++++++++++++++ 12 files changed, 303 insertions(+) create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.map.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.map.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.map.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.map.snap.md create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js new file mode 100644 index 000000000..95a50e601 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js @@ -0,0 +1,4 @@ +'use server' + +export const first = async () => 'first action called', + second = first diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.map.snap.md new file mode 100644 index 000000000..eef48cd07 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.map.snap.md @@ -0,0 +1,24 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "const" --> (2:0) "let" +(2:12) " first = async () => 'first action called',\n" --> (2:3) " first = async () => 'first action called',\n" +(3:0) " second = first\n" --> (3:0) " second = first\n" +(2:0) "export const first = async () => 'first action called',\n" --> (4:0) "first = /* #__PURE__ */ registerServerReference(first, \"first\");\n" +(2:0) "export const first = async () => 'first action called',\n" --> (5:0) "export { first };\n" +(2:0) "export const first = async () => 'first action called',\n" --> (6:0) "second = /* #__PURE__ */ registerServerReference(second, \"second\");\n" +(2:0) "export const first = async () => 'first action called',\n" --> (7:0) "export { second };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "const first = async () => 'first action called',\n" --> (2:0) "const first = async () => 'first action called',\n" +(3:0) " second = first\n" --> (3:0) " second = first\n" +(2:0) "export const first = async () => 'first action called',\n" --> (4:0) "\n" +(2:0) "export const first = async () => 'first action called',\n" --> (5:0) "registerServerReference(first, \"first\");\n" +(2:0) "export const first = async () => 'first action called',\n" --> (6:0) "registerServerReference(second, \"second\");\n" +(2:0) "export const first = async () => 'first action called',\n" --> (7:0) "export { first, second };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md new file mode 100644 index 000000000..e7a106b22 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/dependent-declarators.js.snap.md @@ -0,0 +1,46 @@ +## Input + +```js +'use server' + +export const first = async () => 'first action called', + second = first +``` + +## wrap-export + +**Status:** transformed + +**References:** first, second + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjQ4ACd1c2Ugc2VydmVyJwoKbGV0IGZpcnN0ID0gYXN5bmMgKCkgPT4gJ2ZpcnN0IGFjdGlvbiBjYWxsZWQnLAogIHNlY29uZCA9IGZpcnN0CmZpcnN0ID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGZpcnN0LCAiZmlyc3QiKTsKZXhwb3J0IHsgZmlyc3QgfTsKc2Vjb25kID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHNlY29uZCwgInNlY29uZCIpOwpleHBvcnQgeyBzZWNvbmQgfTsKMzU4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEdBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFg7QUFBQTtBQUFBO0FBQUE7In0=) + +```js +'use server' + +let first = async () => 'first action called', + second = first +first = /* #__PURE__ */ registerServerReference(first, "first"); +export { first }; +second = /* #__PURE__ */ registerServerReference(second, "second"); +export { second }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** first, second + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTkxACd1c2Ugc2VydmVyJwoKY29uc3QgZmlyc3QgPSBhc3luYyAoKSA9PiAnZmlyc3QgYWN0aW9uIGNhbGxlZCcsCiAgc2Vjb25kID0gZmlyc3QKCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGZpcnN0LCAiZmlyc3QiKTsKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2Uoc2Vjb25kLCAic2Vjb25kIik7CmV4cG9ydCB7IGZpcnN0LCBzZWNvbmQgfTsKMzU4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBmaXJzdCA9IGFzeW5jICgpID0+ICdmaXJzdCBhY3Rpb24gY2FsbGVkJyxcbiAgc2Vjb25kID0gZmlyc3RcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRFg7QUFBQTtBQUFBO0FBQUE7In0=) + +```js +'use server' + +const first = async () => 'first action called', + second = first + +registerServerReference(first, "first"); +registerServerReference(second, "second"); +export { first, second }; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js new file mode 100644 index 000000000..488a76ef3 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js @@ -0,0 +1,5 @@ +'use server' + +const source = async () => 'destructured export called' + +export const { action } = { action: source } diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.map.snap.md new file mode 100644 index 000000000..045aecee0 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.map.snap.md @@ -0,0 +1,21 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "const source = async () => 'destructured export called'\n" --> (2:0) "const source = async () => 'destructured export called'\n" +(4:7) "const" --> (4:0) "let" +(4:12) " { action } = { action: source }\n" --> (4:3) " { action } = { action: source }\n" +(4:0) "export const { action } = { action: source }\n" --> (5:0) "action = /* #__PURE__ */ registerServerReference(action, \"action\");\n" +(4:0) "export const { action } = { action: source }\n" --> (6:0) "export { action };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "const source = async () => 'destructured export called'\n" --> (2:0) "const source = async () => 'destructured export called'\n" +(4:7) "const { action } = { action: source }\n" --> (4:0) "const { action } = { action: source }\n" +(4:0) "export const { action } = { action: source }\n" --> (5:0) "\n" +(4:0) "export const { action } = { action: source }\n" --> (6:0) "registerServerReference(action, \"action\");\n" +(4:0) "export const { action } = { action: source }\n" --> (7:0) "export { action };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md new file mode 100644 index 000000000..87aabfcc0 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/destructured-export.js.snap.md @@ -0,0 +1,46 @@ +## Input + +```js +'use server' + +const source = async () => 'destructured export called' + +export const { action } = { action: source } +``` + +## wrap-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTk0ACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKbGV0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKNDMwAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmNvbnN0IHNvdXJjZSA9IGFzeW5jICgpID0+ICdkZXN0cnVjdHVyZWQgZXhwb3J0IGNhbGxlZCdcblxuZXhwb3J0IGNvbnN0IHsgYWN0aW9uIH0gPSB7IGFjdGlvbjogc291cmNlIH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTTs7QUFFL0MsR0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQTNDO0FBQUE7In0=) + +```js +'use server' + +const source = async () => 'destructured export called' + +let { action } = { action: source } +action = /* #__PURE__ */ registerServerReference(action, "action"); +export { action }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTcyACd1c2Ugc2VydmVyJwoKY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJwoKY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiB9Owo0MzUAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuY29uc3Qgc291cmNlID0gYXN5bmMgKCkgPT4gJ2Rlc3RydWN0dXJlZCBleHBvcnQgY2FsbGVkJ1xuXG5leHBvcnQgY29uc3QgeyBhY3Rpb24gfSA9IHsgYWN0aW9uOiBzb3VyY2UgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRVgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNOztBQUUvQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFBM0M7QUFBQTtBQUFBOyJ9) + +```js +'use server' + +const source = async () => 'destructured export called' + +const { action } = { action: source } + +registerServerReference(action, "action"); +export { action }; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js new file mode 100644 index 000000000..169221675 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js @@ -0,0 +1,5 @@ +'use server' + +export const action = async function actionImplementation() { + return 'named function expression called' +} diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.map.snap.md new file mode 100644 index 000000000..930094923 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.map.snap.md @@ -0,0 +1,23 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "const" --> (2:0) "let" +(2:12) " action = async function actionImplementation() {\n" --> (2:3) " action = async function actionImplementation() {\n" +(3:0) " return 'named function expression called'\n" --> (3:0) " return 'named function expression called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(2:0) "export const action = async function actionImplementation() {\n" --> (5:0) "action = /* #__PURE__ */ registerServerReference(action, \"action\");\n" +(2:0) "export const action = async function actionImplementation() {\n" --> (6:0) "export { action };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:7) "const action = async function actionImplementation() {\n" --> (2:0) "const action = async function actionImplementation() {\n" +(3:0) " return 'named function expression called'\n" --> (3:0) " return 'named function expression called'\n" +(4:0) "}\n" --> (4:0) "}\n" +(2:0) "export const action = async function actionImplementation() {\n" --> (5:0) "\n" +(2:0) "export const action = async function actionImplementation() {\n" --> (6:0) "registerServerReference(action, \"action\");\n" +(2:0) "export const action = async function actionImplementation() {\n" --> (7:0) "export { action };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md new file mode 100644 index 000000000..585c9c147 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/named-function-expression.js.snap.md @@ -0,0 +1,46 @@ +## Input + +```js +'use server' + +export const action = async function actionImplementation() { + return 'named function expression called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MjAwACd1c2Ugc2VydmVyJwoKbGV0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkgewogIHJldHVybiAnbmFtZWQgZnVuY3Rpb24gZXhwcmVzc2lvbiBjYWxsZWQnCn0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzg3AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbmV4cG9ydCBjb25zdCBhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBhY3Rpb25JbXBsZW1lbnRhdGlvbigpIHtcbiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVKLEdBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0FBQzFDO0FBRkE7QUFBQTsifQ==) + +```js +'use server' + +let action = async function actionImplementation() { + return 'named function expression called' +} +action = /* #__PURE__ */ registerServerReference(action, "action"); +export { action }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTc4ACd1c2Ugc2VydmVyJwoKY29uc3QgYWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gYWN0aW9uSW1wbGVtZW50YXRpb24oKSB7CiAgcmV0dXJuICduYW1lZCBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKfQoKcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoYWN0aW9uLCAiYWN0aW9uIik7CmV4cG9ydCB7IGFjdGlvbiB9OwozOTIAeyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcidcblxuZXhwb3J0IGNvbnN0IGFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkltcGxlbWVudGF0aW9uKCkge1xuICByZXR1cm4gJ25hbWVkIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsR0FBRyxDQUFDLE1BQU07O0FBRUosS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU07QUFDMUM7QUFGQTtBQUFBO0FBQUE7In0=) + +```js +'use server' + +const action = async function actionImplementation() { + return 'named function expression called' +} + +registerServerReference(action, "action"); +export { action }; +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js new file mode 100644 index 000000000..151114097 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js @@ -0,0 +1,7 @@ +'use server' + +void action + +export async function action() { + return 'action called' +} diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.map.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.map.snap.md new file mode 100644 index 000000000..8ac8287a0 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.map.snap.md @@ -0,0 +1,24 @@ +## wrap-export + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "void action\n" --> (2:0) "void action\n" +(4:7) "async function action() {\n" --> (4:0) "async function action() {\n" +(5:0) " return 'action called'\n" --> (5:0) " return 'action called'\n" +(6:0) "}\n" --> (6:0) "}\n" +(4:0) "export async function action() {\n" --> (7:0) "action = /* #__PURE__ */ registerServerReference(action, \"action\");\n" +(4:0) "export async function action() {\n" --> (8:0) "export { action };\n" +``` + +## module-export-effect + +```txt +(0:0) "'use server'\n" --> (0:0) "'use server'\n" +(2:0) "void action\n" --> (2:0) "void action\n" +(4:7) "async function action() {\n" --> (4:0) "async function action() {\n" +(5:0) " return 'action called'\n" --> (5:0) " return 'action called'\n" +(6:0) "}\n" --> (6:0) "}\n" +(4:0) "export async function action() {\n" --> (7:0) "\n" +(4:0) "export async function action() {\n" --> (8:0) "registerServerReference(action, \"action\");\n" +(4:0) "export async function action() {\n" --> (9:0) "export { action };\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md new file mode 100644 index 000000000..1229c1c36 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/wrap-export/pre-declaration-reference.js.snap.md @@ -0,0 +1,52 @@ +## Input + +```js +'use server' + +void action + +export async function action() { + return 'action called' +} +``` + +## wrap-export + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTY3ACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KYWN0aW9uID0gLyogI19fUFVSRV9fICovIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzE4AHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3ZCO0FBRkE7QUFBQTsifQ==) + +```js +'use server' + +void action + +async function action() { + return 'action called' +} +action = /* #__PURE__ */ registerServerReference(action, "action"); +export { action }; +``` + +## module-export-effect + +**Status:** transformed + +**References:** action + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTQzACd1c2Ugc2VydmVyJwoKdm9pZCBhY3Rpb24KCmFzeW5jIGZ1bmN0aW9uIGFjdGlvbigpIHsKICByZXR1cm4gJ2FjdGlvbiBjYWxsZWQnCn0KCnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgImFjdGlvbiIpOwpleHBvcnQgeyBhY3Rpb24gfTsKMzIzAHsidmVyc2lvbiI6Mywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInXG5cbnZvaWQgYWN0aW9uXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb24oKSB7XG4gIHJldHVybiAnYWN0aW9uIGNhbGxlZCdcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLEdBQUcsQ0FBQyxNQUFNOztBQUVYLElBQUksQ0FBQzs7QUFFRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3ZCO0FBRkE7QUFBQTtBQUFBOyJ9) + +```js +'use server' + +void action + +async function action() { + return 'action called' +} + +registerServerReference(action, "action"); +export { action }; +``` From 16e44fa735e18ef88415e3aaf96c4257155ce2b2 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:50:24 +0900 Subject: [PATCH 18/23] test(rsc): migrate hoist source map snapshots Co-authored-by: OpenCode --- ....js.map.snap.txt => inline.js.map.snap.md} | 4 ++ .../source-map/hoist/inline.js.snap.js | 34 ----------- .../source-map/hoist/inline.js.snap.md | 61 +++++++++++++++++++ .../src/transforms/source-map.test.ts | 19 +++--- .../plugin-rsc/src/transforms/test-utils.ts | 15 +---- 5 files changed, 78 insertions(+), 55 deletions(-) rename packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/{inline.js.map.snap.txt => inline.js.map.snap.md} (99%) delete mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.js create mode 100644 packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.md diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.map.snap.txt b/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.map.snap.md similarity index 99% rename from packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.map.snap.txt rename to packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.map.snap.md index ea6ef1f51..b4ff152db 100644 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.map.snap.txt +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.map.snap.md @@ -1,3 +1,6 @@ +## hoist + +```txt (0:0) "export function InlineDirective() {\n" --> (0:0) "export function InlineDirective() {\n" (1:0) " const captured = 'captured'\n" --> (1:0) " const captured = 'captured'\n" (3:0) " async function inlineAction() {\n" --> (3:0) " const inlineAction = /* #__PURE__ */ registerServerReference($$hoist_0_inlineAction, \"$$hoist_0_inlineAction\");\n" @@ -27,3 +30,4 @@ (15:0) " return 'inline function expression called'\n" --> (25:0) " return 'inline function expression called'\n" (16:0) " })\n" --> (26:0) " };\n" [unmapped] --> (27:0) "/* #__PURE__ */ Object.defineProperty($$hoist_2_anonymous_server_function, \"name\", { value: \"anonymous_server_function\" });\n" +``` diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.js b/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.js deleted file mode 100644 index 117fb2135..000000000 --- a/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.js +++ /dev/null @@ -1,34 +0,0 @@ -/* -Source map visualization: - -https://evanw.github.io/source-map-visualization/#MTI0MABleHBvcnQgZnVuY3Rpb24gSW5saW5lRGlyZWN0aXZlKCkgewogIGNvbnN0IGNhcHR1cmVkID0gJ2NhcHR1cmVkJwoKICBjb25zdCBpbmxpbmVBY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRob2lzdF8wX2lubGluZUFjdGlvbiwgIiQkaG9pc3RfMF9pbmxpbmVBY3Rpb24iKTsKCiAgY29uc3QgaW5saW5lQXJyb3cgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRob2lzdF8xX2lubGluZUFycm93LCAiJCRob2lzdF8xX2lubGluZUFycm93IikuYmluZChudWxsLCBlbmNyeXB0KFtjYXB0dXJlZF0pKQoKICBjb25zdW1lKGlubGluZUFjdGlvbiwgaW5saW5lQXJyb3csIC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGhvaXN0XzJfYW5vbnltb3VzX3NlcnZlcl9mdW5jdGlvbiwgIiQkaG9pc3RfMl9hbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uIikpCn0KCjtleHBvcnQgYXN5bmMgZnVuY3Rpb24gJCRob2lzdF8wX2lubGluZUFjdGlvbigpIHsKICAgICd1c2Ugc2VydmVyJwogICAgcmV0dXJuICdpbmxpbmUgZGlyZWN0aXZlIGNhbGxlZCcKICB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkaG9pc3RfMF9pbmxpbmVBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImlubGluZUFjdGlvbiIgfSk7Cgo7ZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICQkaG9pc3RfMV9pbmxpbmVBcnJvdygkJGhvaXN0X2VuY29kZWQsIHN1ZmZpeCA9ICdhcnJvdycpIHsKICAgIGNvbnN0IFtjYXB0dXJlZF0gPSBhd2FpdCBkZWNyeXB0KCQkaG9pc3RfZW5jb2RlZCk7Cid1c2Ugc2VydmVyJwogICAgcmV0dXJuIGAke2NhcHR1cmVkfSAke3N1ZmZpeH0gY2FsbGVkYAogIH07Ci8qICNfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoJCRob2lzdF8xX2lubGluZUFycm93LCAibmFtZSIsIHsgdmFsdWU6ICJpbmxpbmVBcnJvdyIgfSk7Cgo7ZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICQkaG9pc3RfMl9hbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uKCkgewogICAgJ3VzZSBzZXJ2ZXInCiAgICByZXR1cm4gJ2lubGluZSBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKICB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkaG9pc3RfMl9hbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJhbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uIiB9KTsKMTE5MgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBJbmxpbmVEaXJlY3RpdmUoKSB7XG4gIGNvbnN0IGNhcHR1cmVkID0gJ2NhcHR1cmVkJ1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGlubGluZUFjdGlvbigpIHtcbiAgICAndXNlIHNlcnZlcidcbiAgICByZXR1cm4gJ2lubGluZSBkaXJlY3RpdmUgY2FsbGVkJ1xuICB9XG5cbiAgY29uc3QgaW5saW5lQXJyb3cgPSBhc3luYyAoc3VmZml4ID0gJ2Fycm93JykgPT4ge1xuICAgICd1c2Ugc2VydmVyJ1xuICAgIHJldHVybiBgJHtjYXB0dXJlZH0gJHtzdWZmaXh9IGNhbGxlZGBcbiAgfVxuXG4gIGNvbnN1bWUoaW5saW5lQWN0aW9uLCBpbmxpbmVBcnJvdywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc2VydmVyJ1xuICAgIHJldHVybiAnaW5saW5lIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFROztBQUU1QixDQUFDOztBQUtELENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7O0FBS3JCLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLG9IQUdqQztBQUNIO0FBZEU7QUFBQSxnREFBOEI7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDbkMsQ0FBQyxDQUFDOztBQUVvQjtBQUFBLGdGQUE0QjtBQUNsRCxDQUFDLENBQUMsQ0FBQztBQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07QUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTTtBQUN4QyxDQUFDLENBQUM7O0FBRW1DO0FBQUEsNkRBQWtCO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUM3QyxDQUFDLENBQUM7OyJ9 -*/ - -export function InlineDirective() { - const captured = 'captured' - - const inlineAction = /* #__PURE__ */ registerServerReference($$hoist_0_inlineAction, "$$hoist_0_inlineAction"); - - const inlineArrow = /* #__PURE__ */ registerServerReference($$hoist_1_inlineArrow, "$$hoist_1_inlineArrow").bind(null, encrypt([captured])) - - consume(inlineAction, inlineArrow, /* #__PURE__ */ registerServerReference($$hoist_2_anonymous_server_function, "$$hoist_2_anonymous_server_function")) -} - -;export async function $$hoist_0_inlineAction() { - 'use server' - return 'inline directive called' - }; -/* #__PURE__ */ Object.defineProperty($$hoist_0_inlineAction, "name", { value: "inlineAction" }); - -;export async function $$hoist_1_inlineArrow($$hoist_encoded, suffix = 'arrow') { - const [captured] = await decrypt($$hoist_encoded); -'use server' - return `${captured} ${suffix} called` - }; -/* #__PURE__ */ Object.defineProperty($$hoist_1_inlineArrow, "name", { value: "inlineArrow" }); - -;export async function $$hoist_2_anonymous_server_function() { - 'use server' - return 'inline function expression called' - }; -/* #__PURE__ */ Object.defineProperty($$hoist_2_anonymous_server_function, "name", { value: "anonymous_server_function" }); diff --git a/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.md b/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.md new file mode 100644 index 000000000..608b835c8 --- /dev/null +++ b/packages/plugin-rsc/src/transforms/fixtures/source-map/hoist/inline.js.snap.md @@ -0,0 +1,61 @@ +## Input + +```js +export function InlineDirective() { + const captured = 'captured' + + async function inlineAction() { + 'use server' + return 'inline directive called' + } + + const inlineArrow = async (suffix = 'arrow') => { + 'use server' + return `${captured} ${suffix} called` + } + + consume(inlineAction, inlineArrow, async function () { + 'use server' + return 'inline function expression called' + }) +} +``` + +## hoist + +**Status:** transformed + +**References:** $$hoist_0_inlineAction, $$hoist_1_inlineArrow, $$hoist_2_anonymous_server_function + +[Source map visualization](https://evanw.github.io/source-map-visualization/#MTI0MABleHBvcnQgZnVuY3Rpb24gSW5saW5lRGlyZWN0aXZlKCkgewogIGNvbnN0IGNhcHR1cmVkID0gJ2NhcHR1cmVkJwoKICBjb25zdCBpbmxpbmVBY3Rpb24gPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRob2lzdF8wX2lubGluZUFjdGlvbiwgIiQkaG9pc3RfMF9pbmxpbmVBY3Rpb24iKTsKCiAgY29uc3QgaW5saW5lQXJyb3cgPSAvKiAjX19QVVJFX18gKi8gcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UoJCRob2lzdF8xX2lubGluZUFycm93LCAiJCRob2lzdF8xX2lubGluZUFycm93IikuYmluZChudWxsLCBlbmNyeXB0KFtjYXB0dXJlZF0pKQoKICBjb25zdW1lKGlubGluZUFjdGlvbiwgaW5saW5lQXJyb3csIC8qICNfX1BVUkVfXyAqLyByZWdpc3RlclNlcnZlclJlZmVyZW5jZSgkJGhvaXN0XzJfYW5vbnltb3VzX3NlcnZlcl9mdW5jdGlvbiwgIiQkaG9pc3RfMl9hbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uIikpCn0KCjtleHBvcnQgYXN5bmMgZnVuY3Rpb24gJCRob2lzdF8wX2lubGluZUFjdGlvbigpIHsKICAgICd1c2Ugc2VydmVyJwogICAgcmV0dXJuICdpbmxpbmUgZGlyZWN0aXZlIGNhbGxlZCcKICB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkaG9pc3RfMF9pbmxpbmVBY3Rpb24sICJuYW1lIiwgeyB2YWx1ZTogImlubGluZUFjdGlvbiIgfSk7Cgo7ZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICQkaG9pc3RfMV9pbmxpbmVBcnJvdygkJGhvaXN0X2VuY29kZWQsIHN1ZmZpeCA9ICdhcnJvdycpIHsKICAgIGNvbnN0IFtjYXB0dXJlZF0gPSBhd2FpdCBkZWNyeXB0KCQkaG9pc3RfZW5jb2RlZCk7Cid1c2Ugc2VydmVyJwogICAgcmV0dXJuIGAke2NhcHR1cmVkfSAke3N1ZmZpeH0gY2FsbGVkYAogIH07Ci8qICNfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoJCRob2lzdF8xX2lubGluZUFycm93LCAibmFtZSIsIHsgdmFsdWU6ICJpbmxpbmVBcnJvdyIgfSk7Cgo7ZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICQkaG9pc3RfMl9hbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uKCkgewogICAgJ3VzZSBzZXJ2ZXInCiAgICByZXR1cm4gJ2lubGluZSBmdW5jdGlvbiBleHByZXNzaW9uIGNhbGxlZCcKICB9OwovKiAjX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KCQkaG9pc3RfMl9hbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uLCAibmFtZSIsIHsgdmFsdWU6ICJhbm9ueW1vdXNfc2VydmVyX2Z1bmN0aW9uIiB9KTsKMTE5MgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBJbmxpbmVEaXJlY3RpdmUoKSB7XG4gIGNvbnN0IGNhcHR1cmVkID0gJ2NhcHR1cmVkJ1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGlubGluZUFjdGlvbigpIHtcbiAgICAndXNlIHNlcnZlcidcbiAgICByZXR1cm4gJ2lubGluZSBkaXJlY3RpdmUgY2FsbGVkJ1xuICB9XG5cbiAgY29uc3QgaW5saW5lQXJyb3cgPSBhc3luYyAoc3VmZml4ID0gJ2Fycm93JykgPT4ge1xuICAgICd1c2Ugc2VydmVyJ1xuICAgIHJldHVybiBgJHtjYXB0dXJlZH0gJHtzdWZmaXh9IGNhbGxlZGBcbiAgfVxuXG4gIGNvbnN1bWUoaW5saW5lQWN0aW9uLCBpbmxpbmVBcnJvdywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc2VydmVyJ1xuICAgIHJldHVybiAnaW5saW5lIGZ1bmN0aW9uIGV4cHJlc3Npb24gY2FsbGVkJ1xuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFROztBQUU1QixDQUFDOztBQUtELENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7O0FBS3JCLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLG9IQUdqQztBQUNIO0FBZEU7QUFBQSxnREFBOEI7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDbkMsQ0FBQyxDQUFDOztBQUVvQjtBQUFBLGdGQUE0QjtBQUNsRCxDQUFDLENBQUMsQ0FBQztBQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07QUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTTtBQUN4QyxDQUFDLENBQUM7O0FBRW1DO0FBQUEsNkRBQWtCO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtBQUM3QyxDQUFDLENBQUM7OyJ9) + +```js +export function InlineDirective() { + const captured = 'captured' + + const inlineAction = /* #__PURE__ */ registerServerReference($$hoist_0_inlineAction, "$$hoist_0_inlineAction"); + + const inlineArrow = /* #__PURE__ */ registerServerReference($$hoist_1_inlineArrow, "$$hoist_1_inlineArrow").bind(null, encrypt([captured])) + + consume(inlineAction, inlineArrow, /* #__PURE__ */ registerServerReference($$hoist_2_anonymous_server_function, "$$hoist_2_anonymous_server_function")) +} + +;export async function $$hoist_0_inlineAction() { + 'use server' + return 'inline directive called' + }; +/* #__PURE__ */ Object.defineProperty($$hoist_0_inlineAction, "name", { value: "inlineAction" }); + +;export async function $$hoist_1_inlineArrow($$hoist_encoded, suffix = 'arrow') { + const [captured] = await decrypt($$hoist_encoded); +'use server' + return `${captured} ${suffix} called` + }; +/* #__PURE__ */ Object.defineProperty($$hoist_1_inlineArrow, "name", { value: "inlineArrow" }); + +;export async function $$hoist_2_anonymous_server_function() { + 'use server' + return 'inline function expression called' + }; +/* #__PURE__ */ Object.defineProperty($$hoist_2_anonymous_server_function, "name", { value: "anonymous_server_function" }); +``` diff --git a/packages/plugin-rsc/src/transforms/source-map.test.ts b/packages/plugin-rsc/src/transforms/source-map.test.ts index f03b04850..683b91b50 100644 --- a/packages/plugin-rsc/src/transforms/source-map.test.ts +++ b/packages/plugin-rsc/src/transforms/source-map.test.ts @@ -4,9 +4,7 @@ import { describe, expect, test } from 'vitest' import { transformHoistInlineDirective } from './hoist' import { transformModuleExportEffect } from './module-export-effect' import { - formatDecodedSourceMap, formatDecodedSourceMapMarkdown, - formatSourceMapFixture, formatSourceMapMarkdownFixture, } from './test-utils' import { transformWrapExport } from './wrap-export' @@ -68,11 +66,18 @@ describe('source map fixtures', () => { encode: (value) => `encrypt(${value})`, decode: (value) => `await decrypt(${value})`, }) - await expect(formatSourceMapFixture(result.output)).toMatchFileSnapshot( - file + '.snap.js', - ) - await expect(formatDecodedSourceMap(result.output)).toMatchFileSnapshot( - file + '.map.snap.txt', + const outputs = [ + { + name: 'hoist', + output: result.output, + references: result.names, + }, + ] + await expect( + formatSourceMapMarkdownFixture(input, outputs), + ).toMatchFileSnapshot(file + '.snap.md') + await expect(formatDecodedSourceMapMarkdown(outputs)).toMatchFileSnapshot( + file + '.map.snap.md', ) }) } diff --git a/packages/plugin-rsc/src/transforms/test-utils.ts b/packages/plugin-rsc/src/transforms/test-utils.ts index eb511bb64..8ecced64a 100644 --- a/packages/plugin-rsc/src/transforms/test-utils.ts +++ b/packages/plugin-rsc/src/transforms/test-utils.ts @@ -1,18 +1,5 @@ import type MagicString from 'magic-string' -export function formatSourceMapFixture(output: MagicString): string { - const code = output.toString() - const map = output.generateMap({ includeContent: true, hires: 'boundary' }) - const visualization = generateVisualizationLink(code, map.toString()) - return `/* -Source map visualization: - -${visualization} -*/ - -${code}` -} - type SourceMapFixtureOutput = { name: string output: MagicString @@ -53,7 +40,7 @@ export function formatDecodedSourceMapMarkdown( * This test-local formatter is inspired by Oxc's source map visualizer output: * https://github.com/oxc-project/oxc-sourcemap/blob/main/src/sourcemap_visualizer.rs */ -export function formatDecodedSourceMap(output: MagicString): string { +function formatDecodedSourceMap(output: MagicString): string { const generatedLines = output.toString().split('\n') const map = output.generateDecodedMap({ includeContent: true, From 235da5d8c4b122ba0ab0b6758a321276ee81f35a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:50:54 +0900 Subject: [PATCH 19/23] docs(rsc): remove stale inline mapping todo Co-authored-by: OpenCode --- packages/plugin-rsc/src/transforms/server-action.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/server-action.ts b/packages/plugin-rsc/src/transforms/server-action.ts index ec46a9f11..b4b5de74b 100644 --- a/packages/plugin-rsc/src/transforms/server-action.ts +++ b/packages/plugin-rsc/src/transforms/server-action.ts @@ -4,9 +4,6 @@ import { transformHoistInlineDirective } from './hoist' import { transformModuleExportEffect } from './module-export-effect' import { hasDirective } from './utils' -// TODO: Apply the same runtime-callsite mapping contract to every inline -// directive shape. -// https://github.com/vitejs/vite-plugin-react/issues/1361 export function transformServerActionServer( input: string, ast: ESTree.Program, From 1ccaa5b21f21928eb9734dda97d0c56f0f662bce Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:55:15 +0900 Subject: [PATCH 20/23] test(rsc): update Vite 7 source map expectations Co-authored-by: OpenCode --- packages/plugin-rsc/e2e/source-map.test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/plugin-rsc/e2e/source-map.test.ts b/packages/plugin-rsc/e2e/source-map.test.ts index 739e560c1..6e10af98e 100644 --- a/packages/plugin-rsc/e2e/source-map.test.ts +++ b/packages/plugin-rsc/e2e/source-map.test.ts @@ -72,12 +72,10 @@ const serverReferenceCases: { { name: 're-export', rolldown: '/src/features/specifiers/reexport.ts:2:0', - rollup: null, }, { name: 'export-all', rolldown: '/src/features/specifiers/export-all.ts:2:0', - rollup: null, }, ], }, From 3711be3a3e392900621220b4356af537b6edf43c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 19:33:14 +0900 Subject: [PATCH 21/23] nit --- .../transforms/module-export-effect.test.ts | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/module-export-effect.test.ts b/packages/plugin-rsc/src/transforms/module-export-effect.test.ts index 8bdfc8e17..7ec711fc8 100644 --- a/packages/plugin-rsc/src/transforms/module-export-effect.test.ts +++ b/packages/plugin-rsc/src/transforms/module-export-effect.test.ts @@ -17,9 +17,11 @@ async function transform( }) } +// TODO: port wrap-export unit test like options to exercise TransformModuleExportEffectOptions + describe(transformModuleExportEffect, () => { test('preserves declarations and emits effects after initialization', async () => { - const result = await transform(` + const result = await transform(`\ export async function action() {} export const loader = async () => {}, value = 1 export default async function Page() {} @@ -32,26 +34,25 @@ export default async function Page() {} 'default', ]) expect(result.output.toString()).toMatchInlineSnapshot(` - " - async function action() {} + "async function action() {} const loader = async () => {}, value = 1 async function Page() {} - register(action, \"action\"); + register(action, "action"); export { action }; - register(loader, \"loader\"); - register(value, \"value\"); + register(loader, "loader"); + register(value, "value"); export { loader, value }; - register(Page, \"default\"); + register(Page, "default"); export default Page; " `) }) test('preserves mutable bindings and local export aliases', async () => { - const result = await transform(` + const result = await transform(`\ export { action as renamed } let action = async () => 'first' action = async () => 'second' @@ -60,18 +61,18 @@ action = async () => 'second' expect(result.referenceNames).toEqual(['renamed']) expect(result.output.toString()).toMatchInlineSnapshot(` " - let action = async () => 'first' action = async () => 'second' - register(action, \"renamed\"); + register(action, "renamed"); export { action as renamed } " `) }) test('captures a default identifier before later reassignment', async () => { - const result = await transform(`let action = async () => 'first' + const result = await transform(`\ +let action = async () => 'first' export default action action = async () => 'second' `) @@ -81,7 +82,7 @@ action = async () => 'second' const $$effect_default = action; action = async () => 'second' - register($$effect_default, \"default\"); + register($$effect_default, "default"); export default $$effect_default; " `) From 5ea878d86bc4c02a15e2845ac358486b4cda012e Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 19:35:15 +0900 Subject: [PATCH 22/23] nit --- .../plugin-rsc/src/transforms/server-action.test.ts | 10 +--------- packages/plugin-rsc/src/transforms/server-action.ts | 1 - 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/server-action.test.ts b/packages/plugin-rsc/src/transforms/server-action.test.ts index 9d7e90a8d..ff6b343cb 100644 --- a/packages/plugin-rsc/src/transforms/server-action.test.ts +++ b/packages/plugin-rsc/src/transforms/server-action.test.ts @@ -5,7 +5,7 @@ import { transformServerActionServer } from './server-action' async function transform(input: string) { const ast = await parseAstAsync(input) return transformServerActionServer(input, ast, { - runtime: (value) => `register(${value})`, + runtime: (value) => value, }) } @@ -18,14 +18,6 @@ test('normalizes top-level server reference names', async () => { exportNames: ['action'], referenceNames: ['action'], }) - expect(result.output.toString()).toMatchInlineSnapshot( - ` - "'use server'; async function action() {} - register(action); - export { action }; - " - `, - ) }) test('normalizes inline server reference names', async () => { diff --git a/packages/plugin-rsc/src/transforms/server-action.ts b/packages/plugin-rsc/src/transforms/server-action.ts index b4b5de74b..19e650ad3 100644 --- a/packages/plugin-rsc/src/transforms/server-action.ts +++ b/packages/plugin-rsc/src/transforms/server-action.ts @@ -8,7 +8,6 @@ export function transformServerActionServer( input: string, ast: ESTree.Program, options: { - /** Must register the supplied function operationally for module directives. */ runtime: (value: string, name: string) => string rejectNonAsyncFunction?: boolean encode?: (value: string) => string From f923975634e573e3b0309481a929e3a327ae0be1 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Date: Fri, 31 Jul 2026 19:36:44 +0900 Subject: [PATCH 23/23] nit --- .../plugin-rsc/src/transforms/test-utils.ts | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/plugin-rsc/src/transforms/test-utils.ts b/packages/plugin-rsc/src/transforms/test-utils.ts index 8ecced64a..78783fbd8 100644 --- a/packages/plugin-rsc/src/transforms/test-utils.ts +++ b/packages/plugin-rsc/src/transforms/test-utils.ts @@ -10,14 +10,25 @@ export function formatSourceMapMarkdownFixture( input: string, outputs: readonly SourceMapFixtureOutput[], ): string { - const sections = [`## Input\n\n${formatCodeBlock('js', input)}`] + const sections = [] + sections.push(`\ +## Input + +${formatCodeBlock('js', input)}`) for (const { name, output, references } of outputs) { const code = output.toString() const map = output.generateMap({ includeContent: true, hires: 'boundary' }) const visualization = generateVisualizationLink(code, map.toString()) - sections.push( - `## ${name}\n\n**Status:** ${output.hasChanged() ? 'transformed' : 'unchanged'}\n\n**References:** ${references?.join(', ') || '(none)'}\n\n[Source map visualization](${visualization})\n\n${formatCodeBlock('js', code)}`, - ) + sections.push(`\ +## ${name} + +**Status:** ${output.hasChanged() ? 'transformed' : 'unchanged'} + +**References:** ${references?.join(', ') || '(none)'} + +[Source map visualization](${visualization}) + +${formatCodeBlock('js', code)}`) } return sections.join('\n\n') + '\n' } @@ -29,7 +40,10 @@ export function formatDecodedSourceMapMarkdown( outputs .map( ({ name, output }) => - `## ${name}\n\n${formatCodeBlock('txt', formatDecodedSourceMap(output))}`, + `\ +## ${name} + +${formatCodeBlock('txt', formatDecodedSourceMap(output))}`, ) .join('\n\n') + '\n' )