egg-ts-helper
Version:
egg typescript helper
130 lines • 10 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = ClassGenerator;
const node_util_1 = require("node:util");
const node_path_1 = __importDefault(require("node:path"));
const utils = __importStar(require("../utils"));
const debug = (0, node_util_1.debuglog)('egg-ts-helper#generators_class');
function ClassGenerator(config, baseConfig) {
const fileList = config.fileList;
const dist = node_path_1.default.resolve(config.dtsDir, config.distName);
debug('file list : %o', fileList);
if (!fileList.length) {
return { dist };
}
// using to compose import code
let importStr = '';
// using to create interface mapping
const interfaceMap = {};
fileList.forEach(f => {
const { props, moduleName: sModuleName } = utils.getModuleObjByPath(f);
const moduleName = `Export${sModuleName}`;
const importContext = utils.getImportStr(config.dtsDir, node_path_1.default.join(config.dir, f), moduleName);
importStr += `${importContext}\n`;
// create mapping
let collector = interfaceMap;
while (props.length) {
const name = utils.camelProp(props.shift(), config.caseStyle || baseConfig.caseStyle);
if (!props.length) {
collector[name] = moduleName;
}
else {
collector = collector[name] = typeof collector[name] === 'object' ? collector[name] : Object.create(Object.prototype, {
parentModuleName: {
value: typeof collector[name] === 'string' ? collector[name] : undefined,
},
});
}
}
});
// interface name
const interfaceName = config.interface || `T_${config.name.replace(/[\.\-]/g, '_')}`;
// add mount interface
let declareInterface;
if (config.declareTo) {
const interfaceList = config.declareTo.split('.');
declareInterface = composeInterface(interfaceList.slice(1).concat(interfaceName), interfaceList[0], undefined, ' ');
}
return {
dist,
content: `${importStr}\n` +
`declare module '${config.framework || baseConfig.framework}' {\n` +
(declareInterface ? `${declareInterface}\n` : '') +
composeInterface(interfaceMap, interfaceName, utils.strToFn(config.interfaceHandle), ' ') +
'}\n',
};
}
ClassGenerator.defaultConfig = {
distName: 'index.d.ts',
};
// composing all the interface
function composeInterface(obj, wrapInterface, preHandle, indent) {
let prev = '';
let mid = '';
let after = '';
indent = indent || '';
if (wrapInterface) {
prev = `${indent}interface ${wrapInterface} {\n`;
after = `${indent}}\n`;
indent += ' ';
}
// compose array to object
// ['abc', 'bbc', 'ccc'] => { abc: { bbc: 'ccc' } }
if (Array.isArray(obj)) {
let curr = obj.pop();
while (obj.length) {
curr = { [obj.pop()]: curr };
}
obj = curr;
}
Object.keys(obj).forEach(key => {
const val = obj[key];
if (typeof val === 'string') {
mid += `${indent + key}: ${preHandle ? preHandle(val) : val};\n`;
}
else {
const newVal = composeInterface(val, undefined, preHandle, indent + ' ');
if (newVal) {
mid += `${indent + key}: ${val.parentModuleName ? `${val.parentModuleName} & ` : ''}{\n${newVal + indent}}\n`;
}
}
});
return `${prev}${mid}${after}`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9ycy9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLGlDQTBFQztBQWpGRCx5Q0FBcUM7QUFDckMsMERBQTZCO0FBRTdCLGdEQUFrQztBQUVsQyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUV6RCxTQUF3QixjQUFjLENBQUMsTUFBbUIsRUFBRSxVQUEwQjtJQUNwRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLG1CQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTFELEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsK0JBQStCO0lBQy9CLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixvQ0FBb0M7SUFDcEMsTUFBTSxZQUFZLEdBQWdCLEVBQUUsQ0FBQztJQUVyQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ25CLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLFVBQVUsR0FBRyxTQUFTLFdBQVcsRUFBRSxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQ3RDLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsbUJBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFD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