diff --git a/.github/generated/ast_changes_watch_list.yml b/.github/generated/ast_changes_watch_list.yml index 1313d008aefc5..b1b0d539bb7f2 100644 --- a/.github/generated/ast_changes_watch_list.yml +++ b/.github/generated/ast_changes_watch_list.yml @@ -9,7 +9,7 @@ src: - 'apps/oxlint/src-js/generated/keys.ts' - 'apps/oxlint/src-js/generated/type_ids.ts' - 'apps/oxlint/src-js/generated/types.d.ts' - - 'apps/oxlint/src-js/generated/visitor.d.ts' + - 'apps/oxlint/src-js/generated/visitor.ts' - 'apps/oxlint/src-js/generated/walk.js' - 'apps/oxlint/src/generated/raw_transfer_constants.rs' - 'crates/oxc_allocator/src/**' diff --git a/apps/oxlint/src-js/generated/visitor.d.ts b/apps/oxlint/src-js/generated/visitor.ts similarity index 99% rename from apps/oxlint/src-js/generated/visitor.d.ts rename to apps/oxlint/src-js/generated/visitor.ts index 4e41e2761d80c..9c70eaf221c6e 100644 --- a/apps/oxlint/src-js/generated/visitor.d.ts +++ b/apps/oxlint/src-js/generated/visitor.ts @@ -3,7 +3,7 @@ import type * as ESTree from "./types.d.ts"; -export interface VisitorObject { +type VisitorObjectBase = { DebuggerStatement?: (node: ESTree.DebuggerStatement) => void; "DebuggerStatement:exit"?: (node: ESTree.DebuggerStatement) => void; EmptyStatement?: (node: ESTree.EmptyStatement) => void; @@ -384,5 +384,8 @@ export interface VisitorObject { "TSTypeReference:exit"?: (node: ESTree.TSTypeReference) => void; TSUnionType?: (node: ESTree.TSUnionType) => void; "TSUnionType:exit"?: (node: ESTree.TSUnionType) => void; +}; + +export type VisitorObject = VisitorObjectBase & { [key: string]: (node: ESTree.Node) => void; -} +}; diff --git a/apps/oxlint/src-js/plugins/types.ts b/apps/oxlint/src-js/plugins/types.ts index d1f4abddc0254..6672f92baec8b 100644 --- a/apps/oxlint/src-js/plugins/types.ts +++ b/apps/oxlint/src-js/plugins/types.ts @@ -9,7 +9,7 @@ export interface Visitor { import type { Span } from "./location.ts"; import type { Token, CommentToken } from "./tokens.ts"; -import type { VisitorObject as Visitor } from "../generated/visitor.d.ts"; +import type { VisitorObject as Visitor } from "../generated/visitor.ts"; export type { Visitor }; // Hook function that runs before traversal. diff --git a/tasks/ast_tools/src/generators/estree_visit.rs b/tasks/ast_tools/src/generators/estree_visit.rs index 67e60e180c70a..94f6e3fcbf5ed 100644 --- a/tasks/ast_tools/src/generators/estree_visit.rs +++ b/tasks/ast_tools/src/generators/estree_visit.rs @@ -85,7 +85,7 @@ impl Generator for ESTreeVisitGenerator { code: type_ids_map_oxlint, }, Output::Javascript { - path: format!("{OXLINT_APP_PATH}/src-js/generated/visitor.d.ts"), + path: format!("{OXLINT_APP_PATH}/src-js/generated/visitor.ts"), code: visitor_type_oxlint, }, ] @@ -438,8 +438,12 @@ fn generate(codegen: &Codegen) -> Codes { let visitor_type_oxlint = format!(" import type * as ESTree from './types.d.ts'; - export interface VisitorObject {{ - {visitor_type} [key: string]: (node: ESTree.Node) => void; + type VisitorObjectBase = {{ + {visitor_type} + }}; + + export type VisitorObject = VisitorObjectBase & {{ + [key: string]: (node: ESTree.Node) => void; }} ");