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
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;
|
|
} |