Skip to content

feat(rsc): add transformModuleExportWrap and deprecate transformWrapExport (take 2) - #1381

Closed
hi-ogawa wants to merge 93 commits into
mainfrom
refactor/module-export-boundary
Closed

feat(rsc): add transformModuleExportWrap and deprecate transformWrapExport (take 2)#1381
hi-ogawa wants to merge 93 commits into
mainfrom
refactor/module-export-boundary

Conversation

@hi-ogawa

@hi-ogawa hi-ogawa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

This is an alternative direction of #1380.

transformModuleExportWrap has slightly simpler model than transformWrapExport where it doesn't try to reassign wrapped export. For example,

// input
'use cache'
export async function someFn() {}

// output: transformModuleExportWrap
async function someFn() {}
const $$module_binding_someFn = __WRAP__(someFn, ...)
export { $$module_binding_someFn as someFn }

// output: transformWrapExport
async function someFn() {}
someFn = __WRAP__(someFn, ...)  // 👈  local access of `someFn` has effect of __WRAP__
export { someFn }

This can technically differ how local export is perceived in above case, but this wasn't always the case, for example:

// input
'use cache'
const someFn = async () => {}
export { someFn }

// output: transformModuleExportWrap
const someFn = async () => {}
const $$module_binding_someFn = __WRAP__(someFn, ...)
export { $$module_binding_someFn as someFn }

// output: transformWrapExport
async function someFn() {}
const $$wrap_someFn = __WRAP__(someFn, ...)
export { $$wrap_someFn as someFn };

So, transformModuleExportWrap in general aligns the transform strategy to a simplified model. If this specific behavior is aimed to align with Next.js use cache, then we should aim for larger strategy rework as prototyped in #1380.

hi-ogawa and others added 30 commits July 30, 2026 14:57
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>

# Conflicts:
#	packages/plugin-rsc/src/transforms/server-action.ts
#	packages/plugin-rsc/src/transforms/source-map.test.ts
#	packages/plugin-rsc/src/transforms/test-utils.ts
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
…t-wrapper

Co-authored-by: OpenCode <noreply@opencode.ai>
…t-wrapper

Co-authored-by: OpenCode <noreply@opencode.ai>
hi-ogawa and others added 9 commits August 4, 2026 11:53
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
@hi-ogawa
hi-ogawa marked this pull request as ready for review August 4, 2026 03:43
hi-ogawa and others added 2 commits August 4, 2026 12:56
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
@hi-ogawa
hi-ogawa marked this pull request as draft August 4, 2026 04:10
hi-ogawa and others added 9 commits August 4, 2026 13:14
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>

# Conflicts:
#	packages/plugin-rsc/src/transforms/utils.test.ts
Co-authored-by: OpenCode <noreply@opencode.ai>
@hi-ogawa hi-ogawa changed the title refactor(rsc): add transformModuleExportWrap and deprecate transformWrapExport (take 2) feat(rsc): add transformModuleExportWrap and deprecate transformWrapExport (take 2) Aug 4, 2026
Co-authored-by: OpenCode <noreply@opencode.ai>
@hi-ogawa

hi-ogawa commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

@hi-ogawa hi-ogawa closed this Aug 4, 2026
@hi-ogawa
hi-ogawa deleted the refactor/module-export-boundary branch August 4, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants