@typestrong/ts-mockito
Version:
Mocking library for TypeScript
32 lines • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectPropertyCodeRetriever = void 0;
var ObjectPropertyCodeRetriever = (function () {
function ObjectPropertyCodeRetriever() {
}
ObjectPropertyCodeRetriever.getObject = function (object) {
if (object.constructor.name === 'Object')
return '';
var props = Object.getOwnPropertyNames(object);
return "\n const ".concat(object.constructor.name, " = {\n ").concat(props.flatMap(function (prop) {
var descriptor = Object.getOwnPropertyDescriptor(object, prop);
if ((descriptor === null || descriptor === void 0 ? void 0 : descriptor.get) || (descriptor === null || descriptor === void 0 ? void 0 : descriptor.set)) {
return [
(descriptor === null || descriptor === void 0 ? void 0 : descriptor.get) ? descriptor === null || descriptor === void 0 ? void 0 : descriptor.get.toString() : '',
(descriptor === null || descriptor === void 0 ? void 0 : descriptor.set) ? descriptor === null || descriptor === void 0 ? void 0 : descriptor.set.toString() : '',
];
}
else if (typeof object[prop] === 'function') {
var fnStr = String(object[prop]);
fnStr = fnStr.replace(/\[native code]/, '');
var gx = new RegExp("^(async)?\\s{0,}\\*?".concat(prop));
var isMethod = gx.test(fnStr);
return "\n ".concat(isMethod ? fnStr : "\"".concat(prop, "\": ").concat(fnStr), "\n ");
}
return '';
}).filter(Boolean).join(',\n'), "\n }\n ");
};
return ObjectPropertyCodeRetriever;
}());
exports.ObjectPropertyCodeRetriever = ObjectPropertyCodeRetriever;
//# sourceMappingURL=ObjectPropertyCodeRetriever.js.map