ts-randomizer
Version:
A tool to create random data by type parameters
49 lines • 1.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeTypeParamsMap = void 0;
const lodash_1 = require("lodash");
const utils_1 = require("../utils");
const mergeTypeParamsMap = (argumentsMap = {}, nodeTypeArguments = {}, typeArgumentsMap = {}) => {
const newArgumentsMap = (0, lodash_1.isEmpty)(argumentsMap)
? (0, lodash_1.isEmpty)(nodeTypeArguments) ||
Object.keys(nodeTypeArguments).some(k => typeArgumentsMap[k])
? typeArgumentsMap
: nodeTypeArguments
: argumentsMap;
Object.keys(newArgumentsMap).forEach(key => {
const item = newArgumentsMap[key];
const symbol = item.type.getSymbol();
if (!symbol) {
return;
}
const found = typeArgumentsMap[symbol.name] || nodeTypeArguments[symbol.name];
if (found) {
newArgumentsMap[key] = {
isArray: item.isArray || found.isArray,
type: found.type,
};
return;
}
(0, utils_1.getTypeArguments)(item.type).forEach(i => {
if (!i.symbol) {
return;
}
const arr = (0, utils_1.getFirstTypeParameter)(i);
const symbolName = (0, utils_1.isArrayType)(i)
? arr
? arr.symbol && arr.symbol.name
: i.symbol.name
: i.symbol.name;
if (!symbolName) {
return;
}
newArgumentsMap[symbolName] =
typeArgumentsMap[symbolName] ||
nodeTypeArguments[symbolName] ||
newArgumentsMap[symbolName];
});
});
return newArgumentsMap;
};
exports.mergeTypeParamsMap = mergeTypeParamsMap;
//# sourceMappingURL=marge-params-map.js.map
;