UNPKG

@lcap/asl

Version:

NetEase Application Specific Language

187 lines 6.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.genUniqueQueryNameGroup = exports.genInterParam = exports.getFirstDisplayedProperty = exports.genVariable = exports.genGenericTypeSchema = exports.getParamFromResolver = exports.getSchemaOfStructure = exports.getStructureByName = exports.getExpression = exports.getFormatter = exports.filterProperty = void 0; const __1 = require("../.."); const filterProperty = (key) => (property) => { if (property.display) return property.display[key]; else return !['id', 'createdTime', 'updatedTime'].includes(property.name); }; exports.filterProperty = filterProperty; /** * 生成格式器的代码 * 后来没有用到 * @param property 实体属性 */ function getFormatter(property) { const typeKey = property.typeKey; if (typeKey === '#/basicTypes/DateTime') return ` formatter="date('YYYY-MM-DD HH:mm:ss')"`; else if (typeKey === '#/basicTypes/Date') return ` formatter="date('YYYY-MM-DD')"`; else if (typeKey === '#/basicTypes/Date') return ` formatter="date('HH:mm:ss')"`; else if (__1.dataTypesMap[typeKey].type === 'enum') { return ` :formatter="$utils['Enum']('${__1.dataTypesMap[typeKey].name}')"`; } return ''; } exports.getFormatter = getFormatter; /** * 生成表达式的代码 * @param property 实体属性 * @param expression 表达式 */ function getExpression(property, expression) { const typeKey = property.typeKey; if (typeKey === '#/basicTypes/DateTime') return `$utils['FormatDate'](${expression}, 'YYYY-MM-DD HH:mm:ss')`; else if (typeKey === '#/basicTypes/Date') return `$utils['FormatDate'](${expression}, 'YYYY-MM-DD')`; else if (typeKey === '#/basicTypes/Date') return `$utils['FormatDate'](${expression}, 'HH:mm:ss')`; if (__1.dataTypesMap[typeKey].type === 'enum') return `$utils['Enum']('${__1.dataTypesMap[typeKey].name}', ${expression})`; else return `${expression || "''"}`; } exports.getExpression = getExpression; /** * 根据数据结构名称获取数据结构实例 * @param structureName 数据结构名称 */ function getStructureByName(structureName) { return Object.values(__1.dataTypesMap).find((item) => item.name === structureName); } exports.getStructureByName = getStructureByName; /** * 获取数据结构的 schema * @param structureName 数据结构名称 */ function getSchemaOfStructure(structureName) { const structure = Object.values(__1.dataTypesMap).find((item) => item.name === structureName); return { $ref: structure?.schemaRef, typeKey: structure?.schemaRef, }; } exports.getSchemaOfStructure = getSchemaOfStructure; /** * 从 Resolver 中获取变量 * @param resolver * @param paramName */ function getParamFromResolver(resolver, paramName) { const params = resolver.interface.logic.params; return params.find((item) => item.name === paramName); } exports.getParamFromResolver = getParamFromResolver; /** * 生成泛型 Schema * @param {String} name 泛型名称,如 ScopeOf * @param {*} typeParamMap {'T': {$ref:'#/**'}} * @param {*} dataTypesMap * @returns 泛型 */ function genGenericTypeSchema(name, typeParamMap) { const scopeClass = __1.dataTypesMap[`#/genericTypes/${name}`]; let schema = {}; if (scopeClass) { schema = { type: 'genericType', typeKey: `#/genericTypes/${name}`, typeInstantiation: { typeName: name, typeParams: scopeClass.typeParams.map((typeParam) => ({ typeParamName: typeParam.typeParamName, typeParamValue: typeParamMap[typeParam.typeParamName], })), }, }; } return __1.convert2RefType(schema); } exports.genGenericTypeSchema = genGenericTypeSchema; function genVariable(name, schema, level) { schema = typeof schema === 'object' ? schema : { $ref: schema }; return { level, type: 'Identifier', name, schema, }; } exports.genVariable = genVariable; function getFirstDisplayedProperty(entity, display = 'inTable') { let property = entity.propertyList.find((property) => property.editable); if (!property) property = entity.propertyList[0]; return property; } exports.getFirstDisplayedProperty = getFirstDisplayedProperty; /** * 生成接口 Param * @param paramIdOrName 参数 id 或引用名称 * @param expression 表达式 * @param schemaChildren 数据结构 */ function genInterParam(paramIdOrName, expression, schemaRefs = []) { const arr = expression.split('.'); let expressionNode; arr.forEach((name, index) => { const currentNode = { level: __1.LEVEL_ENUM.expressionNode, type: 'Identifier', name, schemaRef: schemaRefs[index], }; if (expressionNode) { expressionNode = { level: __1.LEVEL_ENUM.expressionNode, type: 'MemberExpression', object: expressionNode, property: { level: __1.LEVEL_ENUM.expressionNode, type: 'Identifier', name, schemaRef: schemaRefs[index], code: schemaRefs[index] === '' ? '' : undefined, }, }; } else { expressionNode = currentNode; } }); expressionNode.parentAttr = 'CallInterParamValue'; return { parentAttr: 'params', level: __1.LEVEL_ENUM.param, type: 'CallInterParam', callInterParam: paramIdOrName, callInterParamValue: expressionNode, }; } exports.genInterParam = genInterParam; function capFirstLetter(word) { if (!word) return word; return word[0].toUpperCase() + word.slice(1); } /** * 生成数据查询唯一的命名组 * @param viewName 页面名称 * @param componentName 组件名称 * @param suffix 其它后缀,比如实体名等等 * @param defaultInView 是否在页面逻辑中用 load 简写 */ function genUniqueQueryNameGroup(existingNameSets, viewName, componentName = '', defaultInView = true, suffix = '') { const result = {}; result.load = __1.utils.unique(`load${defaultInView ? '' : capFirstLetter(componentName)}${suffix ? capFirstLetter(suffix) : ''}`, existingNameSets.viewLogic); result.interface = __1.utils.unique(`load${capFirstLetter(viewName)}${componentName ? capFirstLetter(componentName) : ''}${suffix ? capFirstLetter(suffix) : ''}`, existingNameSets.interface); result.structure = __1.utils.unique(__1.utils.firstUpperCase(result.interface + 'Structure'), existingNameSets.structure); return result; } exports.genUniqueQueryNameGroup = genUniqueQueryNameGroup; //# sourceMappingURL=utils.js.map