dts-generate
Version:
Generate TypeScript definitions for anything
33 lines • 3.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generate = void 0;
const deepmerge = require("deepmerge");
const isPlainObj = require("is-plain-obj");
const dts_gen_1 = require("dts-gen");
const pascal_case_1 = require("pascal-case");
function combine(value) {
if (Array.isArray(value) && value.find((v) => isPlainObj(v))) {
return [deepmerge.all([{}, ...value.map((v) => combine(v))])];
}
if (isPlainObj(value) && !Array.isArray(value)) {
return Object.entries(value).reduce((target, [key, value], index) => {
if (value === undefined) {
return target;
}
if (value === null) {
value = '';
}
return Object.assign(target, { [key]: combine(value) });
}, {});
}
return value;
}
function generate(value, identifier = '') {
let output = dts_gen_1.generateIdentifierDeclarationFile(identifier ? pascal_case_1.pascalCase(identifier) : '____', combine(value));
output = output.replace(/[;]/g, '');
output = output.replace(/\015\n\015\n+/g, '\n');
output = output.replace(/ /g, '\t');
return output.trim();
}
exports.generate = generate;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQXNDO0FBQ3RDLDJDQUEyQztBQUMzQyxxQ0FBMkQ7QUFDM0QsNkNBQXdDO0FBRXhDLFNBQVMsT0FBTyxDQUFDLEtBQVU7SUFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzdELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDN0Q7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDL0MsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNuRSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7Z0JBQ3hCLE9BQU8sTUFBTSxDQUFBO2FBQ2I7WUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7Z0JBQ25CLEtBQUssR0FBRyxFQUFFLENBQUE7YUFDVjtZQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEQsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0tBQ047SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLFVBQVUsR0FBRyxFQUFFO0lBQ25ELElBQUksTUFBTSxHQUFHLDJDQUFpQyxDQUM3QyxVQUFVLENBQUMsQ0FBQyxDQUFDLHdCQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNKLENBQUE7SUFDWCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDL0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RDLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ3JCLENBQUM7QUFURCw0QkFTQyJ9