UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

36 lines 1.48 kB
export class DataViewSerializer { serialize(x, serializerContext) { if (x === undefined) { return serializerContext.serializedDefaultValue; } if (x === null) { return serializerContext.serializedNullValue; } if (x instanceof DataView) { const arrayBufferView = new Uint16Array(x.buffer); const charCodeArray = Array.from(arrayBufferView); return charCodeArray.map(c => String.fromCharCode(c)).join(''); } serializerContext.logger.error('DataViewSerializer', `${serializerContext.jsonPath}: cannot serialize value as data view.`, x); return undefined; } deserialize(x, serializerContext) { if (x === undefined) { return serializerContext.deserializedDefaultValue; } if (x === null) { return serializerContext.deserializedNullValue; } if (typeof x === 'string') { const arrayBuffer = new ArrayBuffer(x.length * 2); const arrayBufferView = new Uint16Array(arrayBuffer); for (let i = 0; i < x.length; i++) { arrayBufferView[i] = x.charCodeAt(i); } return new DataView(arrayBuffer); } serializerContext.logger.error('DataViewSerializer', `${serializerContext.jsonPath}: cannot deserialize value as data view.`, x); return undefined; } } //# sourceMappingURL=data-view-serializer.js.map