Skip to content

Commit d2b1ae4

Browse files
committed
refactor(utilities/ast): minor improvements
1 parent 30afcb0 commit d2b1ae4

File tree

2 files changed

+24
-69
lines changed

2 files changed

+24
-69
lines changed

packages/utilities/ast/src/function-init-path.ts

Lines changed: 21 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -104,75 +104,30 @@ export type FunctionInitPath =
104104
];
105105

106106
export function getFunctionInitPath(node: TSESTreeFunction): FunctionInitPath | _ {
107-
const { parent } = node;
108107
if (node.type === T.FunctionDeclaration) {
109108
return [node] as const;
110109
}
111-
if (parent.type === T.VariableDeclarator) {
112-
return [
113-
parent.parent,
114-
parent,
115-
node,
116-
] as const;
117-
}
118-
if (
119-
parent.type === T.CallExpression
120-
&& parent.parent.type === T.VariableDeclarator
121-
) {
122-
return [
123-
parent.parent.parent,
124-
parent.parent,
125-
parent,
126-
node,
127-
] as const;
128-
}
129-
if (
130-
parent.type === T.CallExpression
131-
&& parent.parent.type === T.CallExpression
132-
&& parent.parent.parent.type === T.VariableDeclarator
133-
) {
134-
return [
135-
parent.parent.parent.parent,
136-
parent.parent.parent,
137-
parent.parent,
138-
parent,
139-
node,
140-
] as const;
141-
}
142-
if (
143-
parent.type === T.Property
144-
&& parent.parent.type === T.ObjectExpression
145-
&& parent.parent.parent.type === T.VariableDeclarator
146-
) {
147-
return [
148-
parent.parent.parent.parent,
149-
parent.parent.parent,
150-
parent.parent,
151-
parent,
152-
node,
153-
] as const;
154-
}
155-
if (
156-
parent.type === T.MethodDefinition
157-
&& parent.parent.parent.type === T.ClassDeclaration
158-
) {
159-
return [
160-
parent.parent.parent,
161-
parent.parent,
162-
parent,
163-
node,
164-
] as const;
165-
}
166-
if (
167-
parent.type === T.PropertyDefinition
168-
&& parent.parent.parent.type === T.ClassDeclaration
169-
) {
170-
return [
171-
parent.parent.parent,
172-
parent.parent,
173-
parent,
174-
node,
175-
] as const;
110+
const { parent } = node;
111+
switch (true) {
112+
case parent.type === T.VariableDeclarator:
113+
return [parent.parent, parent, node] as const;
114+
case parent.type === T.CallExpression
115+
&& parent.parent.type === T.VariableDeclarator:
116+
return [parent.parent.parent, parent.parent, parent, node] as const;
117+
case parent.type === T.CallExpression
118+
&& parent.parent.type === T.CallExpression
119+
&& parent.parent.parent.type === T.VariableDeclarator:
120+
return [parent.parent.parent.parent, parent.parent.parent, parent.parent, parent, node] as const;
121+
case parent.type === T.Property
122+
&& parent.parent.type === T.ObjectExpression
123+
&& parent.parent.parent.type === T.VariableDeclarator:
124+
return [parent.parent.parent.parent, parent.parent.parent, parent.parent, parent, node] as const;
125+
case parent.type === T.MethodDefinition
126+
&& parent.parent.parent.type === T.ClassDeclaration:
127+
return [parent.parent.parent, parent.parent, parent, node] as const;
128+
case parent.type === T.PropertyDefinition
129+
&& parent.parent.parent.type === T.ClassDeclaration:
130+
return [parent.parent.parent, parent.parent, parent, node] as const;
176131
}
177132
return _;
178133
}

packages/utilities/ast/src/get-ecma-expression.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { isTsOnlyExpression } from "./is";
44
import type { TSESTreeTSOnlyExpression } from "./types";
55

66
/**
7-
* Gets the ECMAScript expression from a TS expression.
8-
* @param node The TS expression.
9-
* @returns The ECMAScript expression within the TS expression.
7+
* Recursively get the inner expression until it's not a TSOnlyExpression
8+
* @param node - The node to get the expression from
9+
* @returns The inner expression
1010
*/
1111
export function getEcmaExpression(node: TSESTree.Node): Exclude<
1212
TSESTree.Node,

0 commit comments

Comments
 (0)