diff --git a/README.md b/README.md index 8b25abb..9b12c59 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,13 @@ Walk an AST from SWC and visit each node type. ## Requirements +- Node.js 22.x or 24.x. - AST is as defined by [`@swc/types`](https://github.com/swc-project/swc/tree/main/packages/types). +## Version Notes + +- For v1 to v2 breaking changes, see [`docs/v1-v2-migration.md`](./docs/v1-v2-migration.md). + ## Example `swc-walk` wraps [`acorn-walk`](https://github.com/acornjs/acorn/blob/master/acorn-walk/README.md) walkers. diff --git a/docs/v1-v2-migration.md b/docs/v1-v2-migration.md new file mode 100644 index 0000000..b47a2dc --- /dev/null +++ b/docs/v1-v2-migration.md @@ -0,0 +1,46 @@ +# v1 to v2 Migration + +This guide summarizes breaking changes introduced in v2. + +## Breaking changes + +1. `Span` typing changed. +2. Node.js 20 support was removed. + +## Span typing changes + +In v2, node span typing was aligned with runtime behavior: + +- Nodes that usually have a `span` still expose `span`, but it is typed as `Span | undefined`. +- Some node kinds may still omit `span` at runtime. + +Update code that assumes `span` is always defined. + +Before (v1): + +```ts +function handle(node: Node) { + return node.span.start +} +``` + +After (v2): + +```ts +function handle(node: Node) { + if (node.span) { + return node.span.start + } + + return undefined +} +``` + +## Node.js version support + +v2 supports: + +- Node.js 22.x +- Node.js 24.x + +If you are on Node.js 20, upgrade your runtime before adopting v2. diff --git a/package-lock.json b/package-lock.json index e3f5e52..9ad598d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "swc-walk", - "version": "2.0.0-rc.1", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "swc-walk", - "version": "2.0.0-rc.1", + "version": "2.0.0", "license": "MIT", "dependencies": { "acorn-walk": "^8.3.5" diff --git a/package.json b/package.json index 8dfb0d4..c09c3bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "swc-walk", - "version": "2.0.0-rc.1", + "version": "2.0.0", "description": "Walk an AST from SWC and visit each node type.", "main": "dist/esm/walk.js", "type": "module", @@ -22,7 +22,7 @@ "default": "./dist/esm/baseVisitor.js" }, "require": { - "types": "./dist/cjs/baseVisistor.d.cts", + "types": "./dist/cjs/baseVisitor.d.cts", "default": "./dist/cjs/baseVisitor.cjs" }, "default": "./dist/esm/baseVisitor.js"