1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.needsParens = needsParens;
|
7 | exports.needsWhitespace = needsWhitespace;
|
8 | exports.needsWhitespaceAfter = needsWhitespaceAfter;
|
9 | exports.needsWhitespaceBefore = needsWhitespaceBefore;
|
10 | var whitespace = require("./whitespace.js");
|
11 | var parens = require("./parentheses.js");
|
12 | var _t = require("@babel/types");
|
13 | const {
|
14 | FLIPPED_ALIAS_KEYS,
|
15 | isCallExpression,
|
16 | isExpressionStatement,
|
17 | isMemberExpression,
|
18 | isNewExpression
|
19 | } = _t;
|
20 | function expandAliases(obj) {
|
21 | const map = new Map();
|
22 | function add(type, func) {
|
23 | const fn = map.get(type);
|
24 | map.set(type, fn ? function (node, parent, stack) {
|
25 | var _fn;
|
26 | return (_fn = fn(node, parent, stack)) != null ? _fn : func(node, parent, stack);
|
27 | } : func);
|
28 | }
|
29 | for (const type of Object.keys(obj)) {
|
30 | const aliases = FLIPPED_ALIAS_KEYS[type];
|
31 | if (aliases) {
|
32 | for (const alias of aliases) {
|
33 | add(alias, obj[type]);
|
34 | }
|
35 | } else {
|
36 | add(type, obj[type]);
|
37 | }
|
38 | }
|
39 | return map;
|
40 | }
|
41 | const expandedParens = expandAliases(parens);
|
42 | const expandedWhitespaceNodes = expandAliases(whitespace.nodes);
|
43 | function isOrHasCallExpression(node) {
|
44 | if (isCallExpression(node)) {
|
45 | return true;
|
46 | }
|
47 | return isMemberExpression(node) && isOrHasCallExpression(node.object);
|
48 | }
|
49 | function needsWhitespace(node, parent, type) {
|
50 | var _expandedWhitespaceNo;
|
51 | if (!node) return false;
|
52 | if (isExpressionStatement(node)) {
|
53 | node = node.expression;
|
54 | }
|
55 | const flag = (_expandedWhitespaceNo = expandedWhitespaceNodes.get(node.type)) == null ? void 0 : _expandedWhitespaceNo(node, parent);
|
56 | if (typeof flag === "number") {
|
57 | return (flag & type) !== 0;
|
58 | }
|
59 | return false;
|
60 | }
|
61 | function needsWhitespaceBefore(node, parent) {
|
62 | return needsWhitespace(node, parent, 1);
|
63 | }
|
64 | function needsWhitespaceAfter(node, parent) {
|
65 | return needsWhitespace(node, parent, 2);
|
66 | }
|
67 | function needsParens(node, parent, printStack) {
|
68 | var _expandedParens$get;
|
69 | if (!parent) return false;
|
70 | if (isNewExpression(parent) && parent.callee === node) {
|
71 | if (isOrHasCallExpression(node)) return true;
|
72 | }
|
73 | return (_expandedParens$get = expandedParens.get(node.type)) == null ? void 0 : _expandedParens$get(node, parent, printStack);
|
74 | }
|
75 |
|
76 | //# sourceMappingURL=index.js.map
|