You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
4.8 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findObjectLiteralProperties = findObjectLiteralProperties;
exports.findObjectMembers = findObjectMembers;
exports.findClassStaticProperty = findClassStaticProperty;
exports.findArrayLiteralElements = findArrayLiteralElements;
exports.findArrayElements = findArrayElements;
exports.NODE_RESOLVERS = exports.LITERAL_NODE_RESOLVERS = void 0;
function _react() {
const data = _interopRequireDefault(require("react"));
_react = function _react() {
return data;
};
return data;
}
function _utils() {
const data = require("@umijs/utils");
_utils = function _utils() {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const StringResolver = {
is(src) {
return _utils().t.isStringLiteral(src);
},
get(src) {
return src.value;
}
};
const NumberResolver = {
is(src) {
return _utils().t.isNumericLiteral(src);
},
get(src) {
return src.value;
}
};
const BooleanResolver = {
is(src) {
return _utils().t.isBooleanLiteral(src);
},
get(src) {
return src.value;
}
};
const NullResolver = {
is(src) {
return _utils().t.isNullLiteral(src);
},
get(src) {
return null;
}
};
const UndefinedResolver = {
is(src) {
return _utils().t.isIdentifier(src) && src.name === 'undefined';
},
get(src) {
return undefined;
}
};
const ObjectLiteralResolver = {
is(src) {
return _utils().t.isObjectExpression(src);
},
get(src) {
return findObjectLiteralProperties(src);
}
};
const ObjectResolver = {
is(src) {
return _utils().t.isObjectExpression(src);
},
get(src) {
return findObjectMembers(src);
}
};
const ClassResolver = {
is(src) {
return _utils().t.isClass(src);
},
get(src) {
return findClassStaticProperty(src);
}
};
const ArrayLiteralResolver = {
is(src) {
return _utils().t.isArrayExpression(src);
},
get(src) {
return findArrayLiteralElements(src);
}
};
const ArrayResolver = {
is(src) {
return _utils().t.isArrayExpression(src);
},
get(src) {
return findArrayElements(src);
}
};
const FunctionResolver = {
is(src) {
return _utils().t.isFunctionExpression(src);
},
get(src) {
return function () {};
}
};
const ArrowFunctionResolver = {
is(src) {
return _utils().t.isArrowFunctionExpression(src);
},
get(src) {
return () => {};
}
};
const LITERAL_NODE_RESOLVERS = [StringResolver, NumberResolver, BooleanResolver, NullResolver, UndefinedResolver, ObjectLiteralResolver, ArrayLiteralResolver];
exports.LITERAL_NODE_RESOLVERS = LITERAL_NODE_RESOLVERS;
const NODE_RESOLVERS = [StringResolver, NumberResolver, BooleanResolver, NullResolver, UndefinedResolver, ObjectResolver, ArrayResolver, ClassResolver, FunctionResolver, ArrowFunctionResolver];
exports.NODE_RESOLVERS = NODE_RESOLVERS;
function findObjectLiteralProperties(node) {
const target = {};
node.properties.forEach(p => {
if (_utils().t.isObjectProperty(p) && _utils().t.isIdentifier(p.key)) {
const resolver = LITERAL_NODE_RESOLVERS.find(resolver => resolver.is(p.value));
if (resolver) {
target[p.key.name] = resolver.get(p.value);
}
}
});
return target;
}
function findObjectMembers(node) {
const target = {};
node.properties.forEach(p => {
if (_utils().t.isObjectMember(p) && _utils().t.isIdentifier(p.key)) {
if (_utils().t.isObjectMethod(p)) {
target[p.key.name] = () => {};
} else {
const resolver = NODE_RESOLVERS.find(resolver => resolver.is(p.value));
if (resolver) {
target[p.key.name] = resolver.get(p.value);
}
}
}
});
return target;
}
function findClassStaticProperty(node) {
function isStaticNode(p) {
return 'static' in p && p.static === true;
}
let body = node.body;
if (!_utils().t.isClassBody(body)) return;
const target = {};
body.body.forEach(p => {
if (isStaticNode(p) && _utils().t.isIdentifier(p.key)) {
if (_utils().t.isMethod(p) || _utils().t.isTSDeclareMethod(p)) {
target[p.key.name] = () => {};
} else {
const resolver = NODE_RESOLVERS.find(resolver => resolver.is(p.value));
if (resolver) {
target[p.key.name] = resolver.get(p.value);
}
}
}
});
return target;
}
function findArrayLiteralElements(node) {
const target = [];
node.elements.forEach(p => {
const resolver = LITERAL_NODE_RESOLVERS.find(resolver => resolver.is(p));
if (resolver) {
target.push(resolver.get(p));
}
});
return target;
}
function findArrayElements(node) {
const target = [];
node.elements.forEach(p => {
const resolver = NODE_RESOLVERS.find(resolver => resolver.is(p));
if (resolver) {
target.push(resolver.get(p));
}
});
return target;
}