* Deserializes provided value. * * @param {TypeLike } x Some value. * @param {SerializerContext >} serializerContext Serializer context. * * @returns {TypeLike >} Deserialized value.
(x: TypeLike<any>, serializerContext: SerializerContext<Set<any>>)
| 70 | * @returns {TypeLike<Set<any>>} Deserialized value. |
| 71 | */ |
| 72 | public deserialize(x: TypeLike<any>, serializerContext: SerializerContext<Set<any>>): TypeLike<Set<any>> |
| 73 | { |
| 74 | if (x === undefined) |
| 75 | { |
| 76 | return serializerContext.deserializedDefaultValue; |
| 77 | } |
| 78 | |
| 79 | if (x === null) |
| 80 | { |
| 81 | return serializerContext.deserializedNullValue; |
| 82 | } |
| 83 | |
| 84 | if (Array.isArray(x)) |
| 85 | { |
| 86 | return serializerContext.restoreReference(x, () => |
| 87 | { |
| 88 | const array = x; |
| 89 | const set = new Set<any>(); |
| 90 | const genericSerializerContext = serializerContext.defineGenericSerializerContext(0); |
| 91 | const valueSerializerContext = genericSerializerContext.defineChildSerializerContext(); |
| 92 | const serializer = valueSerializerContext.serializer; |
| 93 | |
| 94 | valueSerializerContext.referenceValueSetter = v => set.add(v); |
| 95 | |
| 96 | for (let i = 0; i < array.length; i++) |
| 97 | { |
| 98 | valueSerializerContext.jsonPathKey = i; |
| 99 | |
| 100 | set.add(serializer.deserialize(array[i], valueSerializerContext)); |
| 101 | } |
| 102 | |
| 103 | return set; |
| 104 | }); |
| 105 | } |
| 106 | |
| 107 | serializerContext.logger.error('SetSerializer', `${serializerContext.jsonPath}: cannot deserialize value as set.`, x); |
| 108 | |
| 109 | return undefined; |
| 110 | } |
| 111 | } |
nothing calls this directly
no test coverage detected