UNPKG

@whisklabs/grpc

Version:

gRPC generator and http library for typescript

219 lines 6.28 kB
import { Bytes, Fixed32, Fixed64, SHIFT_LEFT_32, SHIFT_RIGHT_32, Varint } from './constant'; import { write } from './ieee754'; import { writeUtf8 } from './utf8'; var BufWrite = /** @class */ (function () { function BufWrite() { // buf = new Uint8Array(); this.buf = []; } // len = 0; BufWrite.prototype.push = function (item) { // if (this.buf.length < this.len + 2) { // const b = new Uint8Array(this.len + 10); // b.set(this.buf, 0); // this.buf = b; // } // this.buf[this.len++] = item; this.buf.push(item); }; BufWrite.prototype.concat = function (buf) { // const b = new Uint8Array(this.buf.length + buf.length + 10); // b.set(this.buf, 0); // b.set(buf, this.len); // this.buf = b; // this.len += buf.length; for (var i = 0, l = buf.length; i < l; i++) { this.buf.push(buf[i]); } }; BufWrite.prototype.get = function () { // return this.buf.slice(0, this.len); // -> dataview var u = new Uint8Array(this.buf.length); u.set(this.buf); return u; }; return BufWrite; }()); export { BufWrite }; export var writeTag = function (buf, tag, type) { writeVarint(buf, (tag << 3) | type); }; export var writeVarint = function (buf, val, s) { if (s === void 0) { s = false; } if (val > 0xfffffff || val < 0 || s) { return writeBigVarint(buf, val, s); } while (val > 127) { buf.push((val & 127) | 128); val >>>= 7; } buf.push(val); }; var writeBigVarint = function (buf, val, s) { var low; var high; var sign = val < 0; if (sign) { val = -val; } low = val >>> 0; high = ((val - low) / SHIFT_LEFT_32) >>> 0; if (sign) { high = ~high >>> 0; low = ~low >>> 0; if (++low > 4294967295) { low = 0; if (++high > 4294967295) { high = 0; } } } if (s) { var mask = high >> 31; high = (((high << 1) | (low >>> 31)) ^ mask) >>> 0; low = ((low << 1) ^ mask) >>> 0; } while (high) { buf.push((low & 127) | 128); low = ((low >>> 7) | (high << 25)) >>> 0; high >>>= 7; } while (low > 127) { buf.push((low & 127) | 128); low = low >>> 7; } buf.push(low); }; function writeInt32(buf, val) { buf.push(val); buf.push(val >>> 8); buf.push(val >>> 16); buf.push(val >>> 24); } var writeFixed32 = writeInt32; var writeSFixed32 = writeInt32; var writeFixed64 = function (buf, val) { writeInt32(buf, val & -1); writeInt32(buf, Math.floor(val * SHIFT_RIGHT_32)); }; var writeSFixed64 = writeFixed64; var writeSVarint = function (buf, val) { writeVarint(buf, val, true); }; var writeBoolean = function (buf, val) { writeVarint(buf, Number(Boolean(val))); }; var writeString = function (buf, str) { var bufStr = writeUtf8(String(str)); writeVarint(buf, bufStr.length); buf.concat(bufStr); }; var writeFloat = function (buf, val) { write(buf.buf, val, buf.buf.length, true, 23, 4); }; var writeDouble = function (buf, val) { write(buf.buf, val, buf.buf.length, true, 52, 8); }; var writeBytes = function (buf, buffer) { var len = buffer.length; writeVarint(buf, len); // eslint-disable-next-line @typescript-eslint/prefer-for-of for (var i = 0; i < buffer.length; i++) { buf.push(buffer[i]); } }; // eslint-disable-next-line @typescript-eslint/no-explicit-any export var writePacked = function (fn, buf, tag, arr) { if (arr.length) { writeTag(buf, tag, Bytes); var bufRaw = new BufWrite(); for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) { var ar = arr_1[_i]; fn(bufRaw, ar); } writeVarint(buf, bufRaw.buf.length); buf.concat(bufRaw.buf); } }; var writeBytesField = function (buf, tag, buffer) { writeTag(buf, tag, Bytes); writeBytes(buf, buffer); }; var writeFixed32Field = function (buf, tag, val) { writeTag(buf, tag, Fixed32); writeFixed32(buf, val); }; var writeSFixed32Field = function (buf, tag, val) { writeTag(buf, tag, Fixed32); writeSFixed32(buf, val); }; var writeFixed64Field = function (buf, tag, val) { writeTag(buf, tag, Fixed64); writeFixed64(buf, val); }; var writeSFixed64Field = function (buf, tag, val) { writeTag(buf, tag, Fixed64); writeSFixed64(buf, val); }; var writeVarintField = function (buf, tag, val) { writeTag(buf, tag, Varint); writeVarint(buf, val); }; var writeSVarintField = function (buf, tag, val) { writeTag(buf, tag, Varint); writeSVarint(buf, val); }; var writeStringField = function (buf, tag, str) { writeTag(buf, tag, Bytes); writeString(buf, str); }; var writeFloatField = function (buf, tag, val) { writeTag(buf, tag, Fixed32); writeFloat(buf, val); }; var writeDoubleField = function (buf, tag, val) { writeTag(buf, tag, Fixed64); writeDouble(buf, val); }; var writeBooleanField = function (buf, tag, val) { writeVarintField(buf, tag, Number(val)); }; export var writeMapRaw = { // eslint-disable-next-line id-blacklist string: writeString, float: writeFloat, double: writeDouble, bool: writeBoolean, enum: writeVarint, uint32: writeVarint, uint64: writeVarint, int32: writeVarint, int64: writeVarint, sint32: writeSVarint, sint64: writeSVarint, fixed32: writeFixed32, fixed64: writeFixed64, sfixed32: writeSFixed32, sfixed64: writeSFixed64, bytes: writeBytes, }; export var writeMap = { // eslint-disable-next-line id-blacklist string: writeStringField, float: writeFloatField, double: writeDoubleField, bool: writeBooleanField, enum: writeVarintField, uint32: writeVarintField, uint64: writeVarintField, int32: writeVarintField, int64: writeVarintField, sint32: writeSVarintField, sint64: writeSVarintField, fixed32: writeFixed32Field, fixed64: writeFixed64Field, sfixed32: writeSFixed32Field, sfixed64: writeSFixed64Field, bytes: writeBytesField, }; //# sourceMappingURL=write.js.map