MCPcopy Create free account
hub / github.com/dipscope/TypeManager.TS / deserialize

Method deserialize

src/serializers/array-serializer.ts:68–106  ·  view source on GitHub ↗

* Deserializes provided value. * * @param {TypeLike } x Some value. * @param {SerializerContext >} serializerContext Serializer context. * * @returns {TypeLike >} Deserialized value.

(x: TypeLike<any>, serializerContext: SerializerContext<Array<any>>)

Source from the content-addressed store, hash-verified

66 * @returns {TypeLike<Array<any>>} Deserialized value.
67 */
68 public deserialize(x: TypeLike<any>, serializerContext: SerializerContext<Array<any>>): TypeLike<Array<any>>
69 {
70 if (x === undefined)
71 {
72 return serializerContext.deserializedDefaultValue;
73 }
74
75 if (x === null)
76 {
77 return serializerContext.deserializedNullValue;
78 }
79
80 if (Array.isArray(x))
81 {
82 return serializerContext.restoreReference(x, () =>
83 {
84 const arrayInput = x;
85 const arrayOutput = new Array<any>(x.length);
86 const genericSerializerContext = serializerContext.defineGenericSerializerContext(0);
87 const valueSerializerContext = genericSerializerContext.defineChildSerializerContext();
88 const serializer = valueSerializerContext.serializer;
89
90 valueSerializerContext.referenceValueSetter = (v, k) => arrayOutput[k] = v;
91
92 for (let i = 0; i < arrayInput.length; i++)
93 {
94 valueSerializerContext.jsonPathKey = i;
95
96 arrayOutput[i] = serializer.deserialize(arrayInput[i], valueSerializerContext);
97 }
98
99 return arrayOutput;
100 });
101 }
102
103 serializerContext.logger.error('ArraySerializer', `${serializerContext.jsonPath}: cannot deserialize value as array.`, x);
104
105 return undefined;
106 }
107}

Callers

nothing calls this directly

Calls 5

restoreReferenceMethod · 0.80
errorMethod · 0.80
deserializeMethod · 0.65

Tested by

no test coverage detected