Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 21x 329x 329x 329x 329x 1x 328x 327x | import { DecodeContext } from '../decode'; import { ValueType } from '../types'; import { decodeArray } from './array'; import { decodeArrayBuffer } from './array-buffer'; import { decodeBigint } from './bigint'; import { decodeFalse, decodeTrue } from './boolean'; import { decodeDate } from './date'; import { decodeFunction } from './function'; import { decodeLinkIndex, decodeLinkIndexLast } from './link'; import { decodeMap } from './map'; import { decodeNull } from './null'; import { decodeFloat, decodeInt, decodeNaN, decodeNegativeInfinity, decodePositiveInfinity, } from './number'; import { decodeObject } from './object'; import { decodeRegExp } from './regexp'; import { decodeSet } from './set'; import { decodeString } from './string'; import { decodeSymbol } from './symbol'; import { decodeDataView, decodeFloat32Array, decodeFloat64Array, decodeInt16Array, decodeInt32Array, decodeInt8Array, decodeUint16Array, decodeUint32Array, decodeUint8Array, decodeUint8ClampedArray, } from './typed-array'; import { decodeUndefined } from './undefined'; import { decodeValueIndex, decodeValueIndexLast } from './value'; export type DecodeMethod = (context: DecodeContext) => any; export const DECODERS = new Map<ValueType, DecodeMethod>([ // eslint-disable-next-line no-use-before-define [ValueType.ANY, decodeValue], [ValueType.VALUE_INDEX, decodeValueIndex], [ValueType.VALUE_INDEX_LAST, decodeValueIndexLast], [ValueType.LINK_INDEX, decodeLinkIndex], [ValueType.LINK_INDEX_LAST, decodeLinkIndexLast], [ValueType.NULL, decodeNull], [ValueType.UNDEFINED, decodeUndefined], [ValueType.TRUE, decodeTrue], [ValueType.FALSE, decodeFalse], [ValueType.NAN, decodeNaN], [ValueType.POSITIVE_INFINITY, decodePositiveInfinity], [ValueType.NEGATIVE_INFINITY, decodeNegativeInfinity], [ValueType.INT, decodeInt], [ValueType.FLOAT, decodeFloat], [ValueType.BIGINT, decodeBigint], [ValueType.STRING, decodeString], [ValueType.ARRAY, decodeArray], [ValueType.OBJECT, decodeObject], [ValueType.SYMBOL, decodeSymbol], [ValueType.FUNCTION, decodeFunction], [ValueType.SET, decodeSet], [ValueType.MAP, decodeMap], [ValueType.ARRAY_BUFFER, decodeArrayBuffer], [ValueType.UINT8_CLAMPED_ARRAY, decodeUint8ClampedArray], [ValueType.UINT8_ARRAY, decodeUint8Array], [ValueType.UINT16_ARRAY, decodeUint16Array], [ValueType.UINT32_ARRAY, decodeUint32Array], [ValueType.INT8_ARRAY, decodeInt8Array], [ValueType.INT16_ARRAY, decodeInt16Array], [ValueType.INT32_ARRAY, decodeInt32Array], [ValueType.FLOAT32_ARRAY, decodeFloat32Array], [ValueType.FLOAT64_ARRAY, decodeFloat64Array], [ValueType.DATA_VIEW, decodeDataView], [ValueType.DATE, decodeDate], [ValueType.REG_EXP, decodeRegExp], ]); export function decodeValue(context: DecodeContext): any { const { reader, decoders, replacer } = context; const type: ValueType = reader.readUintVar(); const decodeMethod = decoders.get(type); if (!decodeMethod) { throw `Decoder method not found for type: ${type}`; } const value = decodeMethod(context); return replacer(value); } |