@deno/kv
Version:
A Deno KV client library optimized for Node.js.
50 lines (49 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.concat = void 0;
const index_js_1 = require("./index.js");
const varint_js_1 = require("./varint.js");
function serialize(wireMessage) {
const result = [];
wireMessage.forEach(([fieldNumber, field]) => {
result.push((0, varint_js_1.encode)((fieldNumber << 3) | field.type));
switch (field.type) {
case index_js_1.WireType.Varint:
result.push((0, varint_js_1.encode)(field.value));
break;
case index_js_1.WireType.Fixed64: {
const arr = new Uint8Array(8);
const dataview = new DataView(arr.buffer);
dataview.setUint32(0, field.value[0], true);
dataview.setUint32(4, field.value[1], true);
result.push(arr);
break;
}
case index_js_1.WireType.LengthDelimited:
result.push((0, varint_js_1.encode)(field.value.byteLength));
result.push(field.value);
break;
case index_js_1.WireType.Fixed32: {
const arr = new Uint8Array(4);
const dataview = new DataView(arr.buffer);
dataview.setUint32(0, field.value, true);
result.push(arr);
break;
}
}
});
return concat(result);
}
exports.default = serialize;
function concat(arrays) {
const totalLength = arrays.reduce((acc, value) => {
return acc + value.byteLength;
}, 0);
const result = new Uint8Array(totalLength);
arrays.reduce((acc, array) => {
result.set(array, acc);
return acc + array.byteLength;
}, 0);
return result;
}
exports.concat = concat;