Files
JsonTool/json-mapper-class/dist/decorators.js
2024-09-27 01:15:47 +08:00

97 lines
2.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultVal = exports.optional = exports.typed = exports.property = exports.serializeTarget = exports.afterSerialize = exports.beforeDeserialize = exports.deserialize = exports.serialize = void 0;
const store_1 = require("./store");
function serialize(serializer, disallowIgnore = false) {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
serializer,
disallowIgnoreSerializer: disallowIgnore,
});
};
}
exports.serialize = serialize;
function deserialize(deserializer, disallowIgnore = false) {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
deserializer,
disallowIgnoreDeserializer: disallowIgnore,
});
};
}
exports.deserialize = deserialize;
function beforeDeserialize(beforeDeserializer, disallowIgnore = false) {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
beforeDeserializer,
disallowIgnoreBeforeDeserializer: disallowIgnore,
});
};
}
exports.beforeDeserialize = beforeDeserialize;
function afterSerialize(afterSerializer, disallowIgnore = false) {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
afterSerializer,
disallowIgnoreAfterSerializer: disallowIgnore,
});
};
}
exports.afterSerialize = afterSerialize;
function serializeTarget() {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
serializeTarget: true,
});
};
}
exports.serializeTarget = serializeTarget;
function property(originalKey, targetClass, isOptional = false) {
return (target, propertyKey) => {
const config = {
originalKey: originalKey || propertyKey,
key: propertyKey,
};
if (targetClass) {
config.targetClass = targetClass.prototype.constructor;
}
if (isOptional) {
config.optional = isOptional;
}
store_1.setStore(target, config);
};
}
exports.property = property;
function typed(targetClass) {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
targetClass,
});
};
}
exports.typed = typed;
function optional() {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
optional: true,
});
};
}
exports.optional = optional;
function defaultVal(value) {
return (target, propertyKey) => {
store_1.setStore(target, {
key: propertyKey,
default: value,
});
};
}
exports.defaultVal = defaultVal;