# Changelog All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project does not adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) until v1.0.0. ## [0.39.0] - 2024-12-04 - c2ced15 parser,linter: [**BREAKING**] Use a different `ModuleRecord` for linter (#7554) (Boshen) - 8a788b8 parser: [**BREAKING**] Build `ModuleRecord` directly in parser (#7546) (Boshen) ### Features - 7c62a33 napi/parser: Return esm info (#7602) (Boshen) - 33e5a49 syntax: Add statement span to `ImportEntry` and `ExportEntry` (#7583) (Boshen) ### Performance - 4a98230 syntax: Use `FxDashMap` for exported bindings (#7525) (overlookmotel) ### Refactor - 169b8bf linter, syntax: Introduce type alias `FxDashMap` (#7520) (overlookmotel) - f0e7acc syntax: Change `ModuleRecord::not_esm` to `has_module_syntax` (#7579) (Boshen) - 18519de syntax: Remove `ModuleRecord::export_default` (#7578) (Boshen) - d476660 syntax: Remove `ModuleRecord::exported_bindings_duplicated` because it is a syntax error (#7577) (Boshen) - 17663f5 syntax: Remove `ModuleRecord::export_default_duplicated` because it is a syntax error (#7576) (Boshen) - 79014ff syntax: Clean up `ModuleRecord` (#7568) (Boshen) ## [0.38.0] - 2024-11-26 - 27b2268 semantic: [**BREAKING**] Remove `SymbolFlags::Export` (#7414) (Dunqing) - 6f0fe38 semantic: [**BREAKING**] Correct all `ReferenceFlags::Write` according to the spec (#7388) (Dunqing) ### Bug Fixes ### Refactor - d7d0735 semantic: Remove `SymbolFlags::TypeLiteral` (#7415) (Dunqing) ## [0.37.0] - 2024-11-21 ### Features - 2534cde syntax: Add `AssignmentOperator::to_logical_operator` and `to_binary_operator` methods (#7350) (overlookmotel) ### Performance - c335f92 syntax: Reorder operator enum variants (#7351) (overlookmotel) ### Documentation - 9b9d020 semantic: Document the meaning of `ReferenceFlags::Read` and `Write` (#7368) (Boshen) - b3d5802 syntax: More comments for `ReferenceFlags` (#7392) (overlookmotel) ### Styling - b5a2027 syntax: Improve formatting (#7349) (overlookmotel) ## [0.36.0] - 2024-11-09 ### Features - dc0215c ast_tools: Add #[estree(append_to)], remove some custom serialization code (#7149) (ottomated) ## [0.35.0] - 2024-11-04 ### Features - 169fa22 ast_tools: Default enums to rename_all = "camelCase" (#6933) (ottomated) ## [0.34.0] - 2024-10-26 ### Features - 1145341 ast_tools: Output typescript to a separate package (#6755) (ottomated) ### Refactor - 423d54c rust: Remove the annoying `clippy::wildcard_imports` (#6860) (Boshen) ## [0.33.0] - 2024-10-24 ### Refactor - 85e69a1 ast_tools: Add line breaks to generated code for `ESTree` derive (#6680) (overlookmotel) - ad8e293 ast_tools: Shorten generated code for `impl Serialize` (#6684) (overlookmotel) - 9ba2b0e ast_tools: Move `#[allow]` attrs to top of generated files (#6679) (overlookmotel) ## [0.32.0] - 2024-10-19 ### Features - e310e52 parser: Generate `Serialize` impls in ast_tools (#6404) (ottomated) ### Bug Fixes - 2ce3e5f identifier: Add `ZWSP` to `is_irregular_whitespace` (#6662) (Boshen) - 1d3d256 transformer: Correctly trim JSX (#6639) (magic-akari) ### Documentation - 335b7f2 syntax: Enable lint warnings on missing docs, and add a lot of documentation (#6611) (DonIsaac) ### Refactor - 856cab5 ecmascript: Move ToInt32 from `oxc_syntax` to `oxc_ecmascript` (#6471) (Boshen) ## [0.31.0] - 2024-10-08 ### Refactor - 03bc041 syntax: Remove some unsafe code creating IDs (#6324) (overlookmotel) ## [0.30.3] - 2024-09-27 ### Bug Fixes - 933a743 semantic: Add interfaces and functions to `SymbolFlags::ClassExcludes` (#6057) (DonIsaac) ## [0.30.2] - 2024-09-27 ### Bug Fixes - e0a8959 minifier: Compute `void number` as `undefined` (#6028) (Boshen) ## [0.30.0] - 2024-09-23 - c96b712 syntax: [**BREAKING**] Remove `SymbolFlags::ArrowFunction` (#5857) (overlookmotel) ### Documentation - 1ccf290 semantic: Document `AstNode` and `AstNodes` (#5872) (DonIsaac) - e04841c syntax: Add ModuleRecord documentation (#5818) (DonIsaac) ### Refactor ## [0.29.0] - 2024-09-13 ### Bug Fixes - 042afa9 syntax: Correctly check for valid `RedeclarationId`s (#5759) (overlookmotel) ### Refactor - cc0408b semantic: S/AstNodeId/NodeId (#5740) (Boshen) ## [0.27.0] - 2024-09-06 ### Features - 90facd3 ast: Add `ContentHash` trait; remove noop `Hash` implementation from `Span` (#5451) (rzvxa) - 23285f4 ast: Add `ContentEq` trait. (#5427) (rzvxa) ### Performance - bfabd8f syntax: Further optimize `is_identifier_name` (#5426) (overlookmotel) - aeda84f syntax: Optimize `is_identifier_name` (#5425) (overlookmotel) ### Refactor - ccc8a27 ast, ast_tools: Use full method path for generated derives trait calls. (#5462) (rzvxa) - e4ed41d semantic: Change the reference flag to `ReferenceFlags::Type` if it is used within a `TSTypeQuery` (#5444) (Dunqing) - b47aca0 syntax: Use `generate_derive` for `CloneIn` in types outside of `oxc_ast` crate. (#5280) (rzvxa) ## [0.25.0] - 2024-08-23 - d262a58 syntax: [**BREAKING**] Rename `ReferenceFlag` to `ReferenceFlags` (#5023) (overlookmotel) ### Refactor ## [0.24.3] - 2024-08-18 ### Features - 48821c0 semantic,syntax: Add SymbolFlags::ArrowFunction (#4946) (DonIsaac) ### Documentation - 0a01a47 semantic: Improve documentation (#4850) (DonIsaac) ### Refactor - 48a1c32 syntax: Inline trivial bitflags methods (#4877) (overlookmotel) ## [0.24.0] - 2024-08-08 ### Features - 82e2f6b ast_codegen: Process AST-related `syntax` types. (#4694) (rzvxa) - 6a36616 syntax: Derive `CloneIn` for the AST-related items. (#4730) (rzvxa) ### Bug Fixes - 9f8f299 syntax: Prevent creating invalid u32 IDs (#4675) (overlookmotel) ### Refactor - e24fb5b syntax: Add explicit enum discriminants to AST related types. (#4691) (rzvxa) - 3f3cb62 syntax, span: Reduce #[cfg_attr] boilerplate in type defs (#4698) (overlookmotel) ## [0.23.1] - 2024-08-06 ### Bug Fixes - 9f8f299 syntax: Prevent creating invalid u32 IDs (#4675) (overlookmotel) ## [0.23.0] - 2024-08-01 ### Features - a558492 codegen: Implement `BinaryExpressionVisitor` (#4548) (Boshen) - 35654e6 codegen: Align operator precedence with esbuild (#4509) (Boshen) - b952942 linter: Add eslint/no-unused-vars (⭐ attempt 3.2) (#4445) (DonIsaac) ## [0.22.1] - 2024-07-27 ### Bug Fixes - 1667491 syntax: Correct `is_reserved_keyword_or_global_object`'s incorrect function calling. (#4484) (Ethan Goh) - 82ba2a0 syntax: Fix unsound use of `NonZeroU32` (#4466) (overlookmotel) ### Performance - 24beaeb semantic: Give `AstNodeId` a niche (#4469) (overlookmotel) - 6a9f4db semantic: Reduce storage size for symbol redeclarations (#4463) (overlookmotel) ### Refactor - c99b3eb syntax: Give `ScopeId` a niche (#4468) (overlookmotel) - 96fc94f syntax: Use `NonMaxU32` for IDs (#4467) (overlookmotel) ## [0.22.0] - 2024-07-23 ### Bug Fixes - f8565ae transformer/typescript: Unexpectedly removed class binding from ExportNamedDeclaration (#4351) (Dunqing) ## [0.21.0] - 2024-07-18 ### Features - 92ee774 semantic: Add `ScopeFlags::CatchClause` for use in CatchClause (#4205) (Dunqing) ### Bug Fixes - 95e15b6 semantic: Incorrect resolve references for `ExportSpecifier` (#4320) (Dunqing) - 1108f2a semantic: Resolve references to the incorrect symbol (#4280) (Dunqing) ### Performance - 8fad7db semantic: Reduce `AstNodeId` to `u32` (#4264) (overlookmotel) ### Refactor - fc0b17d syntax: Turn the `AstNodeId::dummy` into a constant field. (#4308) (rzvxa) ## [0.16.3] - 2024-07-02 ### Bug Fixes - d995f94 semantic: Resolve reference incorrectly when a parameter references a parameter that hasn't been defined yet (#4004) (Dunqing) ## [0.16.2] - 2024-06-30 ### Performance - 0c81fbe syntax: Use `NonZeroU32` for `SymbolId` and `ReferenceId` (#3970) (Boshen) ## [0.16.0] - 2024-06-26 ### Bug Fixes - 99a40ce semantic: `export default foo` should have `ExportLocalName::Default(NameSpan)` entry (#3823) (Boshen) ## [0.13.4] - 2024-06-07 ### Bug Fixes - c00598b transformer: JSX set `reference_id` on refs to imports (#3524) (overlookmotel) ## [0.13.1] - 2024-05-22 ### Features - e2dd8ac syntax: Export `is_reserved_keyword` and `is_global_object` method (#3384) (Boshen) ### Bug Fixes - b4fa27a transformer: Do no add __self when the jsx is inside constructor (#3258) (Dunqing) ## [0.13.0] - 2024-05-14 ### Features - f1ccbd4 syntax: Add `ToInt32` trait for f64 (#3132) (Boshen) - 870d11f syntax: Add `ToJsString` trait for f64 (#3131) (Boshen) - 46c02ae traverse: Add scope flags to `TraverseCtx` (#3229) (overlookmotel) ### Bug Fixes - 4e20b04 traverse: Create scope for function nested in class method (#3234) (overlookmotel) ### Refactor - a8af5de syntax: Move number related functions to number module (#3130) (Boshen) - ae65613 syntax: Use `FxHashMap` for `ModuleRecord::request_modules` (#3124) (Boshen) ## [0.12.5] - 2024-04-22 ### Features - e6d11c6 syntax: Module graph visitor. (#3062) (Ali Rezvani) ### Bug Fixes - 1f7033e semantic: Correctly resolve identifiers inside parameter initializers (#3046) (Boshen) ### Refactor - 1249c6c ast: Implement same traits on all fieldless enums (#3031) (overlookmotel) ## [0.12.2] - 2024-04-08 ### Bug Fixes - 1ea24ea semantic: Symbols inside functions and classes incorrectly flagged as exported (#2896) (Don Isaac) ## [0.12.1] - 2024-04-03 ### Features - 7710d8c transformer: Add compiler assumptions (#2872) (Boshen) ## [0.11.0] - 2024-03-30 ### Features - 712b3d2 semantic: Distinguish type imports in ModuleRecord (#2785) (Dunqing) ### Bug Fixes - df62828 linter/import: Ignore export declaration in no-duplicates (#2863) (Dunqing) ### Refactor - 1b5e544 semantic: Distinguish whether requested_modules is type imports/exports (#2848) (Dunqing) ## [0.10.0] - 2024-03-14 ### Features - 366a879 linter: Resolve ESM star exports (#2682) (Boshen)- 697b6b7 Merge features `serde` and `wasm` to `serialize` (#2716) (Boshen) ### Refactor - cba1e2f ast: Import `Tsify` to shorten code (#2665) (overlookmotel) - 6b5723c ast: Shorten manual TS defs (#2638) (overlookmotel)- 89e8d15 Derive `SerAttrs` on all AST types (#2698) (overlookmotel)- 3c1e0db Reduce `cfg_attr` boilerplate with `SerAttrs` derive (#2669) (overlookmotel)- d76ee6b "wasm" feature enable "serde" feature (#2639) (overlookmotel)- 0646bf3 Rename `CompactString` to `CompactStr` (#2619) (overlookmotel) ## [0.9.0] - 2024-03-05 ### Features - d41dcc3 linter: Remove all commonjs logic for import plugin (#2537) (Boshen) ## [0.8.0] - 2024-02-26 ### Features - 6b3b260 Codegen: Improve codegen (#2460) (Andrew McClenaghan) - f64c7e0 linter: Handle cjs `module.exports.foo = bar` and `exports.foo = bar` (#2492) (Boshen) - 950298d semantic: Add static property, ElementKind::Getter, ElementKind::Setter in ClassTable (#2445) (Dunqing) - 3e1794d syntax: Implement `Debug` for `ModuleRecord` (#2488) (Boshen) ### Bug Fixes - fba66dc linter: Improve import/no-named-as-default (#2494) (Boshen) ### Refactor - 67d7a46 linter: Get arrow expression by scope_id in no_render_return_value (#2424) (Dunqing) ## [0.7.0] - 2024-02-09 ### Bug Fixes - 540b2a0 semantic: Remove unnecessary SymbolFlags::Import (#2311) (Dunqing) ## [0.6.0] - 2024-02-03 ### Features - f673e41 ast: Remove serde skip for symbol_id and reference_id (#2220) (Dunqing) - cd5026c ast: TypeScript definition for wasm target (#2158) (Nicholas Roberts) - ead4e8d transformer/typescript: Remove import if only have type reference (#2001) (Dunqing) ### Bug Fixes - 29dc5e6 codegen: Add parenthesis in binary expression by precedence (#2067) (Wenzhe Wang) ### Refactor - bc7ea0b parser: Make `is_identifier` methods consistent (overlookmotel) - 0dc1804 syntax: Don't re-export `unicode_id_start` (overlookmotel) - 27aaff2 syntax: ASCII tables static not const (#2128) (overlookmotel) - 4f59c4f syntax: Reformat identifier byte tables (#2111) (overlookmotel) ## [0.5.0] - 2024-01-12 ### Features - 90524c8 linter: Add eslint-plugin-import(export) rule (#1654) (Wenzhe Wang) - f1b433b playground: Visualize symbol (#1886) (Dunqing) - 3b4fe0e semantic: Allow reserved keyword defined in ts module block (#1907) (Dunqing) - b9bdf36 semantic: Improve check super implementation, reduce access nodes (#1827) (Dunqing) - ca04312 semantic: Add ClassTable (#1793) (Dunqing) ### Refactor - 6c5b22f semantic: Improve ClassTable implmention and merge properties and methods to elements (#1902) (Dunqing) ## [0.4.0] - 2023-12-08 ### Features - da87b9b prettier: Binaryish expressions with parens (#1597) (Boshen) - 1bd1c5b prettier: Check parens for `(let)[a] = 1` (#1585) (Boshen) - f19032e prettier: Support quoteProps option in PropertyKey (#1578) (Dunqing) ### Refactor - 1a576f6 rust: Move to workspace lint table (#1444) (Boshen) ## [0.3.0] - 2023-11-06 ### Features - 55b2f03 minifier: Partially re-enable minifier (#963) (Boshen) - 1661385 semantic: Check non-simple lhs expression of assignment expression (#994) (Boshen) - 5863f8f transformer: Logical assignment operators (#923) (Boshen) - 1051f15 transformer/jsx: Escape xhtml in jsx attributes (#1088) (Boshen) - 1b3b100 transformer_conformance: Read plugins options from babel `options.json` (#1006) (Boshen) ## [0.2.0] - 2023-09-14 ### Features - e7c2313 ast: Add `SymbolId` and `ReferenceId` (#755) (Yunfei He) - e090b56 minifier: Initialize conditions folding (#658) (阿良仔) - 75d928a syntax: Add loaded_modules to ModuleRecord (Boshen) ### Performance - 6628fc8 linter: Reduce mallocs (#654) (Don Isaac) ### Refactor - 12798e0 Improve code coverage a little bit (Boshen)- fdf288c Improve code coverage in various places (#721) (Boshen)