@vzeta/zeebe-node-test
Version:
The Node.js client library for the Zeebe Workflow Automation Engine.
73 lines • 2.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normaliseAPI1 = exports.transformAPI0ReqToAPI1 = exports.makeAPI1ResAPI0Compatible = void 0;
const ZeroToOneMapping = [
['workflows', 'processes'],
['workflow', 'process'],
['Workflows', 'Processes'],
['Workflow', 'Process']
];
const OneToZeroMapping = [
['processes', 'workflows'],
['Processes', 'Workflows'],
['process', 'workflow'],
['Process', 'Workflow'],
];
const NormaliseOneMapping = [
['processes', 'processes'],
['Processes', 'processes']
];
const IgnoreDuringTransform = ['bpmnProcessId'];
function makeAPI1ResAPI0Compatible(api1Res) {
const extend = (key, value) => {
var _a;
return (_a = OneToZeroMapping.reduce((curr, m) => curr === undefined && key.includes(m[0]) && !IgnoreDuringTransform.includes(key) ?
{ [key.replace(m[0], m[1])]: value, [key]: value } :
curr, undefined)) !== null && _a !== void 0 ? _a : { [key]: value };
};
return typeof api1Res === 'object'
? Object.keys(api1Res).reduce((acc, key) => {
if (!Array.isArray(api1Res[key])) {
return { ...acc, ...extend(key, api1Res[key]) };
}
else {
// recursively transform
const api0Key = Object.keys(extend(key, api1Res[key]))[0];
return { ...acc, [key]: api1Res[key], [api0Key]: api1Res[key].map(makeAPI1ResAPI0Compatible) };
}
}, {})
: api1Res;
}
exports.makeAPI1ResAPI0Compatible = makeAPI1ResAPI0Compatible;
function transformAPI0ReqToAPI1(api0Object) {
const replace = (key) => {
var _a;
return (_a = ZeroToOneMapping.reduce((curr, m) => curr === undefined && key.includes(m[0]) && !IgnoreDuringTransform.includes(key) ?
key.replace(m[0], m[1]) :
curr, undefined)) !== null && _a !== void 0 ? _a : key;
};
return typeof api0Object === 'object'
? Object.keys(api0Object).reduce((acc, key) => {
if (!Array.isArray(api0Object[key])) {
return { ...acc, [replace(key)]: api0Object[key] };
}
else {
// recursively transform
const newKey = replace(key);
return { ...acc, [newKey]: api0Object[key].map(transformAPI0ReqToAPI1) };
}
}, {})
: api0Object;
}
exports.transformAPI0ReqToAPI1 = transformAPI0ReqToAPI1;
// Deals with the misspelling of 'processes' in the gRPC API
function normaliseAPI1(thing) {
const replace = key => NormaliseOneMapping.reduce((curr, m) => key.includes(m[0]) ?
key.replace(m[0], m[1]) :
curr, key);
return typeof thing === 'object'
? Object.keys(thing).reduce((acc, key) => ({ ...acc, [replace(key)]: thing[key] }), {})
: thing;
}
exports.normaliseAPI1 = normaliseAPI1;
//# sourceMappingURL=transform-API.js.map