typed-jd-union-cpsapi
Version:
京东联盟 NodeJS cps API
70 lines (69 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function parseElement(data) {
return {
type: data.type,
name: data.webPamer,
desc: data.desc,
required: data.required,
elements: data.elements != null && data.elements.length > 0
? data.elements.map((e) => parseElement(e))
: null
};
}
function formatElement(element) {
const typeMap = {
String: 'string',
Number: 'number',
Boolean: 'boolean',
'String[]': 'string[]',
'Number[]': 'number[]',
'Boolean[]': 'boolean[]'
};
return `
/** ${element.desc}*/
${element.name}${!element.required ? '?' : ''}:${element.elements != null
? `{
${element.elements.map((e) => formatElement(e)).join('')}
}${element.type.endsWith('[]') ? '[]' : ''}`
: typeMap[element.type]}
`;
}
function jdDefinitionToTS(jsonDef) {
var _a;
const apiInfo = {
apiName: jsonDef.data.apiInfoDTO.apiName,
znName: jsonDef.data.apiInfoDTO.znName,
apiDesc: jsonDef.data.apiInfoDTO.apiDesc,
params: parseElement(jsonDef.data.method.elements[1]),
result: jsonDef.data.method.josResult.elements.map((e) => parseElement(e)),
successCode: ((_a = jsonDef.data.apiErrorsDTOS.find((d) => d.solution == '调用成功')) === null || _a === void 0 ? void 0 : _a.code) ||
'200'
};
const firstUppercase = (str) => str.substring(0, 1).toUpperCase() + str.substring(1);
const firstLowercase = (str) => str.substring(0, 1).toLowerCase() + str.substring(1);
const apiKey = jsonDef.data.apiInfoDTO.apiName
.split('.')
.slice(3)
.reverse()
.map((k) => firstUppercase(k))
.join('');
const paramsTSD = `export type ${apiKey}Params = {
${formatElement(apiInfo.params)}
}`;
const resultTSD = `export type ${apiKey}Result = {
${apiInfo.result[0].elements.map((e) => formatElement(e)).join('')}
}`;
return `
import { JdUnionBase } from '../api-base'
${paramsTSD}
${resultTSD}
export class ${apiKey}API extends JdUnionBase {
async ${firstLowercase(apiKey)}(params:${apiKey}Params){
return this.execute<${apiKey}Result>('${apiInfo.apiName}', params)
}
}
`;
}
exports.default = jdDefinitionToTS;
//# sourceMappingURL=jd-def-tool.js.map