@mos-connection/helper
Version:
Helper functions for the MOS-connection library
62 lines • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.stringifyMosObject = void 0;
const model_1 = require("@mos-connection/model");
/**
* Converts a MOS data object,
* replacing Mos-centric types with their stringified equivalents
*/
function stringifyMosObject(o, strict) {
const mosTypes = (0, model_1.getMosTypes)(strict);
const stringified = stringifyMosObjectInner(o, mosTypes);
if (stringified.modified)
return stringified.value;
else
return o;
}
exports.stringifyMosObject = stringifyMosObject;
function stringifyMosObjectInner(o, mosTypes) {
{
const stringified = (0, model_1.stringifyMosType)(o, mosTypes);
if (stringified.isMosType)
return { modified: true, value: stringified.stringValue };
}
if (Array.isArray(o)) {
let anythingModified = false;
const stringifiedArray = o.map((value) => {
const stringified = stringifyMosObjectInner(value, mosTypes);
if (stringified.modified) {
anythingModified = true;
return stringified.value;
}
else
return value;
});
if (anythingModified)
return { modified: true, value: stringifiedArray };
return { modified: false };
}
else if (o === null) {
return { modified: false };
}
else if (typeof o === 'object') {
let anythingModified = false;
const o2 = {};
for (const [key, value] of Object.entries(o)) {
const stringified = stringifyMosObjectInner(value, mosTypes);
if (stringified.modified) {
anythingModified = true;
o2[key] = stringified.value;
}
else if (value !== undefined)
o2[key] = value; // Omit undefined values
}
if (anythingModified)
return { modified: true, value: o2 };
return { modified: false };
}
else {
return { modified: false };
}
}
//# sourceMappingURL=stringifyMosObject.js.map