Skip to content

fix(magic-string): throw TypeError for non-string content args#8905

Merged
graphite-app[bot] merged 1 commit intomainfrom
03-25-fix_magicstring_incorrect_type_error
Mar 25, 2026
Merged

fix(magic-string): throw TypeError for non-string content args#8905
graphite-app[bot] merged 1 commit intomainfrom
03-25-fix_magicstring_incorrect_type_error

Conversation

@IWANABETHATGUY
Copy link
Copy Markdown
Member

@IWANABETHATGUY IWANABETHATGUY commented Mar 25, 2026

Summary

  • Add JS-side type validation wrappers for all MagicString methods that accept content (append, prepend, appendLeft, appendRight, prependLeft, prependRight, overwrite, update)
  • Throws TypeError with messages matching the JS magic-string library instead of napi-rs's generic Error
  • Un-skips 3 related "should throw when given non-string content" tests

Test plan

  • just test-node magic-string/MagicString -- all 915 tests pass, 0 failed
  • just test-node magic-string/rolldown-magic-string -- all 33 JS tests pass
  • Un-skipped non-string content tests for append, overwrite, and update all pass

Copy link
Copy Markdown
Member Author

IWANABETHATGUY commented Mar 25, 2026


How to use the Graphite Merge Queue

Add the label graphite: merge-when-ready to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@graphite-app graphite-app bot changed the base branch from 03-25-fix_magicstring_update_issue to graphite-base/8905 March 25, 2026 15:31
@graphite-app graphite-app bot force-pushed the graphite-base/8905 branch from e0fa188 to f6cb29d Compare March 25, 2026 15:35
@graphite-app graphite-app bot force-pushed the 03-25-fix_magicstring_incorrect_type_error branch from 0e1e0ae to 7dc23a2 Compare March 25, 2026 15:35
@graphite-app graphite-app bot changed the base branch from graphite-base/8905 to main March 25, 2026 15:36
@graphite-app graphite-app bot force-pushed the 03-25-fix_magicstring_incorrect_type_error branch from 7dc23a2 to d46c736 Compare March 25, 2026 15:36
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 25, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit dd77c52
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69c40b33635d3f0008e1ec9b

@IWANABETHATGUY IWANABETHATGUY changed the title fix: magicstring incorrect type error fix(magic-string): throw TypeError for non-string content args Mar 25, 2026
@IWANABETHATGUY IWANABETHATGUY marked this pull request as ready for review March 25, 2026 15:51
@IWANABETHATGUY IWANABETHATGUY requested review from hyf0 and shulaoda March 25, 2026 15:52
@graphite-app
Copy link
Copy Markdown
Contributor

graphite-app bot commented Mar 25, 2026

Merge activity

## Summary
- Add JS-side type validation wrappers for all MagicString methods that accept content (append, prepend, appendLeft, appendRight, prependLeft, prependRight, overwrite, update)
- Throws TypeError with messages matching the JS magic-string library instead of napi-rs's generic Error
- Un-skips 3 related "should throw when given non-string content" tests

## Test plan
- [x] just test-node magic-string/MagicString -- all 915 tests pass, 0 failed
- [x] just test-node magic-string/rolldown-magic-string -- all 33 JS tests pass
- [x] Un-skipped non-string content tests for append, overwrite, and update all pass
@graphite-app graphite-app bot force-pushed the 03-25-fix_magicstring_incorrect_type_error branch from d46c736 to dd77c52 Compare March 25, 2026 16:20
@graphite-app graphite-app bot merged commit dd77c52 into main Mar 25, 2026
30 checks passed
@graphite-app graphite-app bot deleted the 03-25-fix_magicstring_incorrect_type_error branch March 25, 2026 16:24
This was referenced Apr 1, 2026
shulaoda added a commit that referenced this pull request Apr 1, 2026
## [1.0.0-rc.13] - 2026-04-01

### 🚀 Features

- add friendly error for unloadable virtual modules (#8955) by @sapphi-red
- better error message for unsupported CSS error (#8911) by @sapphi-red

### 🐛 Bug Fixes

- prevent chunk merging from leaking entry side effects (#8979) by @IWANABETHATGUY
- correct inlining based on module's def format and esModule flag (#8975) by @h-a-n-a
- generate init calls for excluded re-exports in strict execution order (#8858) by @IWANABETHATGUY
- consistent order for `meta.chunks` in `renderChunk` hook (#8956) by @sapphi-red
- subpath imports in glob imports failing to find files (#8885) by @kalvenschraut
- browser: bundle binding types in dts output (#8930) by @nyan-left
- ci: guard artifact download step in `vite-test-ubuntu` when build is skipped (#8934) by @Copilot
- track CJS re-export import records to fix inline const and tree-shaking (#8925) by @h-a-n-a
- use ImportKind::Import for common-chunk root computation (#8899) by @IWANABETHATGUY
- watch: clear emitted_filenames between rebuilds (#8914) by @IWANABETHATGUY
- ci: cache esbuild snapshots to avoid 429 rate limiting (#8921) by @IWANABETHATGUY
- always check circular deps in chunk optimizer (#8915) by @IWANABETHATGUY
- don't mark calls to reassigned bindings as pure (#8917) by @IWANABETHATGUY
- magic-string: throw TypeError for non-string content args (#8905) by @IWANABETHATGUY
- magic-string: add split-point validation and overwrite/update options (#8904) by @IWANABETHATGUY

### 🚜 Refactor

- pre-compute has_side_effects on ChunkCandidate (#8981) by @IWANABETHATGUY
- cleanup and simplify in dynamic_import.rs (#8927) by @ulrichstark
- rename came_from_cjs to came_from_commonjs for consistency (#8938) by @IWANABETHATGUY
- inline `create_ecma_view` return destructuring and remove redundant binding (#8932) by @shulaoda

### 📚 Documentation

- document ensure_lazy_module_initialization_order in code-splitting design doc (#8931) by @IWANABETHATGUY

### 🧪 Testing

- add regression test for runtime helper circular dependency (#8958) by @h-a-n-a
- enable 8 previously-skipped MagicString remove tests (#8945) by @IWANABETHATGUY
- add test for why PureAnnotation is needed in execution order check (#8933) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- add `@emnapi/runtime` and `@emnapi/core` as direct deps of `@rolldown/browser` (#8978) by @Copilot
- deps: update dependency vite-plus to v0.1.15 (#8970) by @renovate[bot]
- deps: update dependency oxfmt to ^0.43.0 (#8969) by @renovate[bot]
- deps: upgrade oxc to 0.123.0 (#8967) by @shulaoda
- justfile: deduplicate update-submodule as alias of setup-submodule (#8968) by @shulaoda
- deps: update rollup submodule for tests to v4.60.1 (#8965) by @sapphi-red
- deps: update test262 submodule for tests (#8966) by @sapphi-red
- remove unused `type-check` scripts (#8957) by @sapphi-red
- deps: update actions/cache action to v5 (#8953) by @renovate[bot]
- deps: update npm packages to v6 (major) (#8954) by @renovate[bot]
- deps: update npm packages (#8948) by @renovate[bot]
- deps: update rust crates (#8949) by @renovate[bot]
- deps: update github-actions (#8947) by @renovate[bot]
- deps: update napi (#8943) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to ^0.23.0 (#8944) by @renovate[bot]
- regenerate testing snapshots (#8928) by @ulrichstark
- deps: update dependency rust to v1.94.1 (#8923) by @renovate[bot]

### ❤️ New Contributors

* @kalvenschraut made their first contribution in [#8885](#8885)
* @nyan-left made their first contribution in [#8930](#8930)

Co-authored-by: shulaoda <[email protected]>
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