@bemedev/types
Version:
Type definitions for Bemedev projects
62 lines (58 loc) • 1.85 kB
JavaScript
;
var transform_constants = require('./constants.cjs');
/* eslint-disable @typescript-eslint/no-unused-vars */
const _transform = (object) => {
let out;
const isArray = Array.isArray(object);
if (isArray) {
out = object.map(_transform);
return out;
}
const isObject = typeof object === 'object';
if (isObject) {
out = {};
const entries = Object.entries(object).filter(([key]) => key !== transform_constants.PARTIAL);
if (entries.length === 0)
return out;
const isCustom = Object.keys(object).every(key => key === transform_constants.CUSTOM);
if (isCustom)
return out;
entries.forEach(([key, value]) => {
out[key] = _transform(value);
});
return out;
}
for (const primitive of transform_constants.PRIMITIVES) {
if (object === primitive)
return out;
}
for (const primitive of transform_constants.PRIMITIVE_OBJECTS.filter(value => value !== 'date')) {
if (object === primitive) {
out = {};
return out;
}
}
return out;
};
const transform = (object) => _transform(object);
transform.const = (object) => {
return _transform(object);
};
transform.custom = (_) => {
const out = {};
out[transform_constants.CUSTOM] = undefined;
return out;
};
transform.partial = (value) => {
const entries = Object.entries(value).filter(([key]) => key !== transform_constants.PARTIAL);
const out = {};
entries.forEach(([key, value]) => {
out[key] = value;
});
out[transform_constants.PARTIAL] = undefined;
return out;
};
transform.tuple = (...els) => transform(els);
transform.union = (..._) => transform.custom();
exports.transform = transform;
//# sourceMappingURL=functions.cjs.map