forked from babel/babel
/
index.ts
31 lines (26 loc) 路 943 Bytes
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { declare } from "@babel/helper-plugin-utils";
import syntaxOptionalChaining from "@babel/plugin-syntax-optional-chaining";
import { transform } from "./transform";
import type { NodePath } from "@babel/traverse";
import type * as t from "@babel/types";
export interface Options {
loose?: boolean;
}
export default declare((api, options: Options) => {
api.assertVersion(7);
const { loose = false } = options;
const noDocumentAll = (api.assumption("noDocumentAll") ?? loose) as boolean;
const pureGetters = (api.assumption("pureGetters") ?? loose) as boolean;
return {
name: "proposal-optional-chaining",
inherits: syntaxOptionalChaining.default,
visitor: {
"OptionalCallExpression|OptionalMemberExpression"(
path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,
) {
transform(path, { noDocumentAll, pureGetters });
},
},
};
});
export { transform };