summaryrefslogtreecommitdiff
path: root/@linaria/packages/babel/src/utils/getVisitorKeys.ts
diff options
context:
space:
mode:
Diffstat (limited to '@linaria/packages/babel/src/utils/getVisitorKeys.ts')
-rw-r--r--@linaria/packages/babel/src/utils/getVisitorKeys.ts10
1 files changed, 10 insertions, 0 deletions
diff --git a/@linaria/packages/babel/src/utils/getVisitorKeys.ts b/@linaria/packages/babel/src/utils/getVisitorKeys.ts
new file mode 100644
index 0000000..72f11f8
--- /dev/null
+++ b/@linaria/packages/babel/src/utils/getVisitorKeys.ts
@@ -0,0 +1,10 @@
+import { types as t } from '@babel/core';
+import type { Node, VisitorKeys } from '@babel/types';
+
+type Keys<T extends Node> = (VisitorKeys[T['type']] & keyof T)[];
+
+export default function getVisitorKeys<TNode extends Node>(
+ node: TNode
+): Keys<TNode> {
+ return t.VISITOR_KEYS[node.type] as Keys<TNode>;
+}