@dipscope/type-manager
Version:
Transform JSON strings or plain objects into JS class instances.
39 lines • 1.71 kB
JavaScript
var CircularReferenceHandler = (function () {
function CircularReferenceHandler() {
}
CircularReferenceHandler.prototype.define = function (serializerContext, referenceKey, referenceValueGetter) {
var referenceMap = serializerContext.referenceMap;
var referenceValue = referenceMap.get(referenceKey);
if (referenceValue === undefined) {
referenceMap.set(referenceKey, referenceKey);
var value = referenceValueGetter();
referenceMap.set(referenceKey, value);
serializerContext.resolveReferenceCallbacks(referenceKey);
return value;
}
if (referenceValue === referenceKey) {
serializerContext.registerReferenceCallback(referenceKey);
return undefined;
}
return referenceValue;
};
CircularReferenceHandler.prototype.restore = function (serializerContext, referenceKey, referenceValueGetter) {
var referenceMap = serializerContext.referenceMap;
var referenceValue = referenceMap.get(referenceKey);
if (referenceValue === undefined) {
referenceMap.set(referenceKey, referenceKey);
var value = referenceValueGetter();
referenceMap.set(referenceKey, value);
serializerContext.resolveReferenceCallbacks(referenceKey);
return value;
}
if (referenceValue === referenceKey) {
serializerContext.registerReferenceCallback(referenceKey);
return undefined;
}
return referenceValue;
};
return CircularReferenceHandler;
}());
export { CircularReferenceHandler };
//# sourceMappingURL=circular-reference-handler.js.map