UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

35 lines 1.49 kB
export class CircularReferenceHandler { define(serializerContext, referenceKey, referenceValueGetter) { const referenceMap = serializerContext.referenceMap; const referenceValue = referenceMap.get(referenceKey); if (referenceValue === undefined) { referenceMap.set(referenceKey, referenceKey); const value = referenceValueGetter(); referenceMap.set(referenceKey, value); serializerContext.resolveReferenceCallbacks(referenceKey); return value; } if (referenceValue === referenceKey) { serializerContext.registerReferenceCallback(referenceKey); return undefined; } return referenceValue; } restore(serializerContext, referenceKey, referenceValueGetter) { const referenceMap = serializerContext.referenceMap; const referenceValue = referenceMap.get(referenceKey); if (referenceValue === undefined) { referenceMap.set(referenceKey, referenceKey); const value = referenceValueGetter(); referenceMap.set(referenceKey, value); serializerContext.resolveReferenceCallbacks(referenceKey); return value; } if (referenceValue === referenceKey) { serializerContext.registerReferenceCallback(referenceKey); return undefined; } return referenceValue; } } //# sourceMappingURL=circular-reference-handler.js.map