UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

251 lines 11.4 kB
var SerializerContext = (function () { function SerializerContext($, referenceMap, referenceCallbackMap, parentSerializerContext, jsonPathKey, typeState, genericMetadatas, propertyState, referenceValueSetter) { this.$ = $; this.referenceMap = referenceMap, this.referenceCallbackMap = referenceCallbackMap; this.parentSerializerContext = parentSerializerContext; this.jsonPathKey = jsonPathKey; this.typeState = typeState; this.genericMetadatas = genericMetadatas; this.propertyState = propertyState; this.referenceValueSetter = referenceValueSetter; return; } Object.defineProperty(SerializerContext.prototype, "jsonPath", { get: function () { var jsonPathKey = this.jsonPathKey; var parentSerializerContext = this.parentSerializerContext; if (parentSerializerContext === undefined) { return "".concat(jsonPathKey); } if (typeof jsonPathKey === 'number') { return "".concat(parentSerializerContext.jsonPath, "[").concat(jsonPathKey, "]"); } return "".concat(parentSerializerContext.jsonPath, "['").concat(jsonPathKey, "']"); }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "serializedNullValue", { get: function () { if (this.preserveNull) { return null; } return this.serializedDefaultValue; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "serializedDefaultValue", { get: function () { var _a, _b; if (this.useDefaultValue) { return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.serializedDefaultValueResolver()) !== null && _b !== void 0 ? _b : this.typeState.serializedDefaultValueResolver(); } return undefined; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "deserializedNullValue", { get: function () { if (this.preserveNull) { return null; } return this.deserializedDefaultValue; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "deserializedDefaultValue", { get: function () { var _a, _b; if (this.useDefaultValue) { return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.deserializedDefaultValueResolver()) !== null && _b !== void 0 ? _b : this.typeState.deserializedDefaultValueResolver(); } return undefined; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "discriminant", { get: function () { return this.typeState.discriminant; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "discriminator", { get: function () { return this.typeState.discriminator; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "factory", { get: function () { return this.typeState.factory; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "injector", { get: function () { return this.typeState.injector; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "logger", { get: function () { return this.typeState.logger; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "polymorphic", { get: function () { return this.typeState.polymorphic; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "preserveDiscriminator", { get: function () { return this.typeState.preserveDiscriminator; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "referenceHandler", { get: function () { var _a, _b; return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.referenceHandler) !== null && _b !== void 0 ? _b : this.typeState.referenceHandler; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "serializer", { get: function () { var _a, _b; return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.serializer) !== null && _b !== void 0 ? _b : this.typeState.serializer; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "typeMetadata", { get: function () { return this.typeState.typeMetadata; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "preserveNull", { get: function () { var _a, _b; return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.preserveNull) !== null && _b !== void 0 ? _b : this.typeState.preserveNull; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "useDefaultValue", { get: function () { var _a, _b; return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.useDefaultValue) !== null && _b !== void 0 ? _b : this.typeState.useDefaultValue; }, enumerable: false, configurable: true }); Object.defineProperty(SerializerContext.prototype, "useImplicitConversion", { get: function () { var _a, _b; return (_b = (_a = this.propertyState) === null || _a === void 0 ? void 0 : _a.useImplicitConversion) !== null && _b !== void 0 ? _b : this.typeState.useImplicitConversion; }, enumerable: false, configurable: true }); SerializerContext.prototype.serialize = function (x) { return this.serializer.serialize(x, this); }; SerializerContext.prototype.deserialize = function (x) { return this.serializer.deserialize(x, this); }; SerializerContext.prototype.defineReference = function (referenceKey, referenceValueGetter) { return this.referenceHandler.define(this, referenceKey, referenceValueGetter); }; SerializerContext.prototype.restoreReference = function (referenceKey, referenceValueGetter) { return this.referenceHandler.restore(this, referenceKey, referenceValueGetter); }; SerializerContext.prototype.registerReferenceCallback = function (referenceKey) { var _this = this; var referenceValueSetter = this.referenceValueSetter; if (referenceValueSetter === undefined) { return; } var jsonPathKey = this.jsonPathKey; this.pushReferenceCallback(referenceKey, function () { var referenceValue = _this.referenceMap.get(referenceKey); referenceValueSetter(referenceValue, jsonPathKey); }); return; }; SerializerContext.prototype.pushReferenceCallback = function (referenceKey, referenceCallback) { var referenceCallbacks = this.referenceCallbackMap.get(referenceKey); if (referenceCallbacks === undefined) { referenceCallbacks = new Array(); this.referenceCallbackMap.set(referenceKey, referenceCallbacks); } referenceCallbacks.push(referenceCallback); return; }; SerializerContext.prototype.resolveReferenceCallbacks = function (referenceKey) { var referenceCallbacks = this.referenceCallbackMap.get(referenceKey); if (referenceCallbacks === undefined) { return; } for (var i = 0; i < referenceCallbacks.length; i++) { referenceCallbacks[i](); } return; }; SerializerContext.prototype.defineChildSerializerContext = function () { return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, this, this.jsonPathKey, this.typeState, this.genericMetadatas, this.propertyState, this.referenceValueSetter); }; SerializerContext.prototype.defineGenericSerializerContext = function (genericIndex) { var genericMetadata = this.genericMetadatas[genericIndex]; if (genericMetadata === undefined) { throw new Error("".concat(this.jsonPath, ": cannot define generic metadata for index ").concat(genericIndex, ". This is usually caused by invalid configuration.")); } var typeMetadata = genericMetadata[0]; var genericMetadatas = genericMetadata[1]; return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, this.parentSerializerContext, this.jsonPath, typeMetadata.typeState, genericMetadatas, undefined, this.referenceValueSetter); }; SerializerContext.prototype.definePolymorphicSerializerContext = function (x) { if (typeof x === 'function') { return this.definePolymorphicSerializerContextByTypeFn(x); } return this.definePolymorphicSerializerContextByDiscriminant(x); }; SerializerContext.prototype.definePolymorphicSerializerContextByTypeFn = function (x) { var typeFn = x; var typeMetadata = this.typeState.typeMetadataMap.get(typeFn); if (typeMetadata === undefined) { throw new Error("".concat(this.jsonPath, ": cannot define discriminant of polymorphic type. This is usually caused by invalid configuration.")); } return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, this.parentSerializerContext, this.jsonPathKey, typeMetadata.typeState, this.genericMetadatas, this.propertyState, this.referenceValueSetter); }; SerializerContext.prototype.definePolymorphicSerializerContextByDiscriminant = function (x) { var record = x; var childTypeMetadatas = this.typeState.childTypeMetadatas; for (var i = 0; i < childTypeMetadatas.length; i++) { var childTypeState = childTypeMetadatas[i].typeState; if (record[childTypeState.discriminator] === childTypeState.discriminant) { return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, this.parentSerializerContext, this.jsonPathKey, childTypeState, this.genericMetadatas, this.propertyState, this.referenceValueSetter); } } throw new Error("".concat(this.jsonPath, ": cannot define discriminant of polymorphic type. This is usually caused by invalid configuration.")); }; return SerializerContext; }()); export { SerializerContext }; //# sourceMappingURL=serializer-context.js.map