@lcap/asl
Version:
NetEase Application Specific Language
55 lines (48 loc) • 1.67 kB
JavaScript
import * as utils from '../../types/utils';
export const ServiceType = {
web: 'WEB',
service: 'MICROSERVICE',
micro: 'MICROSERVICE',
external: 'EXTERNAL',
export: 'EXPORT',
entity: 'ENTITY',
};
export const ReverseServiceType = {};
Object.keys(ServiceType).forEach((key) => ReverseServiceType[ServiceType[key]] = key);
Object.keys(ServiceType).forEach((key) => ReverseServiceType[key] = key);
export const createPreServiceType = (inWhich) => (info) => {
const params = info.url[inWhich];
if (ServiceType[params?.serviceType])
params.serviceType = ServiceType[params.serviceType];
return info;
};
/* 兼容接口的小写 */
export const postServiceType = (item) => {
if (item.serviceType === 'microservice') {
return item.serviceType = 'micro';
}
return item.serviceType = ReverseServiceType[item.serviceType];
};
export const prePosIndex = (info) => {
const body = info.url.body;
utils.traverse((current) => {
if (!current.node)
return;
if (current.node.level === 'element' && current.index !== undefined) {
current.node._posIndex = current.index || 0;
}
}, { node: body }, { mode: 'anyObject' });
return info;
};
export const preParentAttr = (info) => {
const body = info.url.body;
utils.traverse((current) => {
if (!current.node)
return;
if (current.node.level === 'logicNode' || current.node.level === 'expressionNode') {
if (!current.node.parentAttr)
current.node.parentAttr = current.key;
}
}, { node: body }, { mode: 'anyObject' });
return info;
};