custom-automapper
Version:
A powerful, type-safe object mapping library for TypeScript and NestJS
54 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveValue = resolveValue;
exports.mapFrom = mapFrom;
exports.mapFromArray = mapFromArray;
exports.condition = condition;
exports.ignore = ignore;
exports.transform = transform;
exports.formatDate = formatDate;
exports.nullToDefault = nullToDefault;
exports.concat = concat;
exports.compute = compute;
const property_path_util_1 = require("./property-path.util");
const deep_clone_util_1 = require("./deep-clone.util");
function resolveValue(obj, path, deepCloneValue = false) {
const value = (0, property_path_util_1.getPropertyByPath)(obj, path);
return deepCloneValue ? (0, deep_clone_util_1.deepClone)(value) : value;
}
function mapFrom(sourcePath) {
return (source) => resolveValue(source, sourcePath);
}
function mapFromArray(sourcePath) {
return (source) => {
const arr = resolveValue(source, sourcePath);
return Array.isArray(arr) ? [...arr] : [];
};
}
function condition(predicate) {
return (source, value) => (predicate(source) ? value : undefined);
}
function ignore() {
return () => undefined;
}
function transform(transformFn) {
return (source, value) => transformFn(value, source);
}
function formatDate(format) {
return (value) => {
if (!value)
return value;
const date = value instanceof Date ? value : new Date(value);
return new Intl.DateTimeFormat(undefined, format).format(date);
};
}
function nullToDefault(defaultValue) {
return (value) => (value == null ? defaultValue : value);
}
function concat(...args) {
return () => args.join('');
}
function compute(computeFn) {
return (source) => computeFn(source);
}
//# sourceMappingURL=mapper-helpers.util.js.map