@fox-hound-tools/refine-library
Version:
Refine sdk library
44 lines • 1.81 kB
JavaScript
import { createMainErrorFromDiscriminatorValue } from './error';
/**
* metadataを探索し、uriTemplateの{?value}を{?value*}に変換する
*/
export function metadataUriTemplateConverter(metadata, convertTarget) {
Object.values(metadata).forEach((data) => {
if (data.navigationMetadata) {
metadataUriTemplateConverter(data.navigationMetadata, convertTarget);
}
if (data.requestsMetadata) {
Object.values(data.requestsMetadata).forEach((request) => {
convertTarget.forEach((target) => {
// queryの中にあるかどうかを確認
if (new RegExp(`.*{?.*${target}.*}`).test(request.uriTemplate)) {
const split = request.uriTemplate.split('{?');
const replace = split[1].replace(target, `${target}*`);
request.uriTemplate = `${split[0]}{?${replace}`;
}
});
});
}
});
}
/**
* metadataを探索し、errorMapsが未設定の場合に`{XXX: createMainErrorFromDiscriminatorValue}`を設定する
*/
export function metadataErrorMapConverter(metadata) {
Object.values(metadata).forEach((data) => {
if (data.navigationMetadata) {
metadataErrorMapConverter(data.navigationMetadata);
}
if (data.requestsMetadata) {
Object.values(data.requestsMetadata).forEach((request) => {
if (!request.errorMappings) {
request.errorMappings = {};
}
if (!request.errorMappings['XXX']) {
request.errorMappings['XXX'] = createMainErrorFromDiscriminatorValue;
}
});
}
});
}
//# sourceMappingURL=utils.js.map