first commit
This commit is contained in:
49
json-mapper-class/dist/to-plain.js
vendored
Normal file
49
json-mapper-class/dist/to-plain.js
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.toPlain = exports.toPlains = exports.arrayItemToObject = void 0;
|
||||
const isarray_1 = __importDefault(require("isarray"));
|
||||
const utils_1 = require("./utils");
|
||||
exports.arrayItemToObject = (arrayVal, Clazz, options) => {
|
||||
return arrayVal.map((v) => isarray_1.default(v) ? exports.arrayItemToObject(v, Clazz, options) : classToObject(v, Clazz, options));
|
||||
};
|
||||
const classToObject = (instance, Clazz, options) => {
|
||||
const obj = {};
|
||||
const keyStore = utils_1.getKeyStore(Clazz);
|
||||
keyStore.forEach((propertiesOption, key) => {
|
||||
const isValueNotExist = options.distinguishNullAndUndefined ? utils_1.isUndefined : utils_1.isNullOrUndefined;
|
||||
const instanceValue = isValueNotExist(instance[key]) ? propertiesOption.default : instance[key];
|
||||
const { originalKey, afterSerializer, serializer, targetClass, optional } = propertiesOption;
|
||||
const disallowIgnoreSerializer = propertiesOption.disallowIgnoreSerializer || !options.ignoreSerializer;
|
||||
const disallowIgnoreAfterSerializer = propertiesOption.disallowIgnoreAfterSerializer || !options.ignoreAfterSerializer;
|
||||
if (isValueNotExist(instanceValue)) {
|
||||
if (!optional) {
|
||||
throw new Error(`Property '${Clazz.name}.${key}' not found`);
|
||||
}
|
||||
return;
|
||||
}
|
||||
let value = serializer && disallowIgnoreSerializer ? serializer(instanceValue, instance, obj, options) : instanceValue;
|
||||
if (value && targetClass) {
|
||||
if (isarray_1.default(value)) {
|
||||
value = exports.arrayItemToObject(value, targetClass, options);
|
||||
}
|
||||
else {
|
||||
value = exports.toPlain(value, targetClass, options);
|
||||
}
|
||||
}
|
||||
obj[originalKey] =
|
||||
afterSerializer && disallowIgnoreAfterSerializer ? afterSerializer(value, instance, obj, options) : value;
|
||||
});
|
||||
return obj;
|
||||
};
|
||||
exports.toPlains = (instances, Clazz, options = {}) => {
|
||||
if (!isarray_1.default(instances)) {
|
||||
throw new Error(`${Clazz} instances must be an array`);
|
||||
}
|
||||
return instances.map((item) => classToObject(item, Clazz, options));
|
||||
};
|
||||
exports.toPlain = (instance, Clazz, options = {}) => {
|
||||
return classToObject(instance, Clazz, options);
|
||||
};
|
||||
Reference in New Issue
Block a user