Skip to content

chore: bump esrap #16240

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 30, 2025
Merged

chore: bump esrap #16240

merged 2 commits into from
Jun 30, 2025

Conversation

Rich-Harris
Copy link
Member

this is #16188 without the new print API, just updating the dependency on esrap. makes the other PR smaller and more focused

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.
  • If this PR changes code within packages/svelte/src, add a changeset (npx changeset).

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Copy link

changeset-bot bot commented Jun 25, 2025

⚠️ No Changeset found

Latest commit: ff806c2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

Playground

pnpm add https://pkg.pr.new/svelte@16240

@svelte-docs-bot
Copy link

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

// @ts-expect-error
(ast.trailingComments ||= []).push(...comments);
}
const body = /** @type {ESTree.Program} */ (ast).body;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the body cast to Node above and Program here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APIs like esrap.print and zimmerframe.walk infer the type of node from the first argument. If they infer narrowly, they will complain about the second (or third in zimmerframe's case) argument because it contains visitors for other types of node. In a .ts file we'd just do print<Node>(ast, visitors) but that's very cumbersome in JSDoc, so casting ast is the pragmatic approach

Though now that I think about it, perhaps esrap and zimmerframe could NoInfer the first argument, so that the types come from the visitors instead... huh. I should try this

@@ -398,10 +398,13 @@ export function merge_with_preprocessor_map(result, options, source_name) {
// map may contain a different file name. Patch our map beforehand to align sources so merging
// with the preprocessor map works correctly.
result.map.sources = [file_basename];
result.map = apply_preprocessor_sourcemap(
file_basename,
Object.assign(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why the change here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

result.map is now readonly (it is generated lazily in a getter). technically a breaking change but vanishingly unlikely to affect anyone in practice

@@ -111,9 +117,12 @@ export function derived_references_self() {
*/
export function each_key_duplicate(a, b, value) {
if (DEV) {
const error = new Error(`each_key_duplicate\n${value ? `Keyed each block has duplicate key \`${value}\` at indexes ${a} and ${b}` : `Keyed each block has duplicate key at indexes ${a} and ${b}`}\nhttps://svelte.dev/e/each_key_duplicate`);
const error = new Error(`each_key_duplicate\n${value

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did prettier ship a breaking change or something? this stuff was happening to me too

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait no I am truly idiotic, this is changes in formatting due to the new print interface right?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct

@Rich-Harris Rich-Harris merged commit e896c55 into main Jun 30, 2025
14 checks passed
@Rich-Harris Rich-Harris deleted the esrap-2 branch June 30, 2025 12:59
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