UNPKG

@venly/venly-core-sdk

Version:

Javascrip/Typescript SDK for Venly's Web3 Services

67 lines 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JsonConverter = JsonConverter; exports.JsonObject = JsonObject; exports.JsonProperty = JsonProperty; const json_custom_convert_1 = require("./json-custom-convert"); const json_convert_options_1 = require("./json-convert-options"); function JsonConverter(target) { if (!(target.prototype instanceof json_custom_convert_1.JsonConverterBase)) { console.error(`The @JsonConverter decorater can only be used on classes that derive from JsonConverterBase. (converter class = ${target.name})`); return; } Reflect.defineMetadata(json_convert_options_1.JsonMetaKeys.ConverterKey, target.name, target); } function JsonObject(converter) { return function (target) { Reflect.defineMetadata(json_convert_options_1.JsonMetaKeys.ClassName, target.name, target); if (isValidConverter(converter, target)) Reflect.defineMetadata(json_convert_options_1.JsonMetaKeys.ConverterType, converter, target); }; } function getObjName(obj) { if (obj == null) return null; if (obj.name != null) return obj.name; if (obj.prototype != null) return obj.prototype.name; if (obj.constructor != null) return obj.constructor.name; return null; } function isValidConverter(converter, targetClass, targetPropName) { if (converter == null) return false; if (!Reflect.hasOwnMetadata(json_convert_options_1.JsonMetaKeys.ConverterKey, converter)) { var errMsg = `\'${getObjName(converter)}\' is not a valid converter! Make sure to mark the class with the @JsonConverter decorator.`; if (targetClass != null) errMsg += `\n >> Class: ${getObjName(targetClass)}`; if (targetPropName != null) errMsg += `\n >> Property: ${targetPropName}`; throw new Error(errMsg); } return true; } function mapPropertyToObject(targetObject, map) { var props = Reflect.getOwnMetadata(json_convert_options_1.JsonMetaKeys.ClassProps, targetObject); if (props == null) props = new Map(); props.set(map.propertyName, map); Reflect.defineMetadata(json_convert_options_1.JsonMetaKeys.ClassProps, props, targetObject); } function JsonProperty(propertyName, propertyType, converterType) { return function (target, propertyKey) { var map = new json_convert_options_1.JsonPropertyMap(); map.propertyName = propertyKey; map.propertyType = propertyType; map.jsonName = propertyName !== null && propertyName !== void 0 ? propertyName : propertyKey; map.converterType = converterType; mapPropertyToObject(target, map); // Reflect.defineMetadata(JsonMetaKeys.Include, true, target, propertyKey); // if(propertyName != null) Reflect.defineMetadata(JsonMetaKeys.PropName, propertyName, target, propertyKey); // if(propertyType != null) Reflect.defineMetadata(JsonMetaKeys.PropType, propertyType, target, propertyKey); // if(isValidConverter(converter, target, propertyKey)) Reflect.defineMetadata(JsonMetaKeys.ConverterType, converter, target, propertyKey); }; } //# sourceMappingURL=json-convert-decorators.js.map