UNPKG

egg-ts-helper

Version:
130 lines 10 kB
"use strict"; 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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