UNPKG

@deno/kv

Version:

A Deno KV client library optimized for Node.js.

62 lines (61 loc) 2.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Long_js_1 = __importDefault(require("../Long.js")); const index_js_1 = require("./index.js"); const varint_js_1 = require("./varint.js"); function deserialize(uint8array) { let idx = 0; const offset = uint8array.byteOffset; const result = []; const dataview = new DataView(uint8array.buffer, offset); while (idx < uint8array.length) { const decodeResult = (0, varint_js_1.decode)(new DataView(uint8array.buffer, offset + idx)); const key = decodeResult[1][0]; idx += decodeResult[0]; const type = (key & 0b111); const fieldNumber = key >>> 3; switch (type) { default: throw new Error(`Unknown wire type ${type}`); case index_js_1.WireType.Varint: { const [len, value] = (0, varint_js_1.decode)(new DataView(uint8array.buffer, offset + idx)); result.push([fieldNumber, { type, value }]); idx += len; break; } case index_js_1.WireType.Fixed64: const lo = dataview.getUint32(idx, true); const hi = dataview.getUint32(idx += 4, true); idx += 4; result.push([fieldNumber, { type, value: new Long_js_1.default(lo, hi), }]); break; case index_js_1.WireType.LengthDelimited: { const [len, value] = (0, varint_js_1.decode)(new DataView(uint8array.buffer, offset + idx)); result.push([fieldNumber, { type, value: uint8array.subarray(idx += len, idx += value[0]), }]); break; } case index_js_1.WireType.StartGroup: case index_js_1.WireType.EndGroup: result.push([fieldNumber, { type }]); break; case index_js_1.WireType.Fixed32: result.push([fieldNumber, { type, value: dataview.getUint32(idx, true), }]); idx += 4; break; } } return result; } exports.default = deserialize;