@whisklabs/grpc
Version:
gRPC generator and http library for typescript
225 lines • 6.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.writeMap = exports.writeMapRaw = exports.writePacked = exports.writeVarint = exports.writeTag = exports.BufWrite = void 0;
var constant_1 = require("./constant");
var ieee754_1 = require("./ieee754");
var utf8_1 = require("./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;
}());
exports.BufWrite = BufWrite;
var writeTag = function (buf, tag, type) {
(0, exports.writeVarint)(buf, (tag << 3) | type);
};
exports.writeTag = writeTag;
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);
};
exports.writeVarint = writeVarint;
var writeBigVarint = function (buf, val, s) {
var low;
var high;
var sign = val < 0;
if (sign) {
val = -val;
}
low = val >>> 0;
high = ((val - low) / constant_1.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 * constant_1.SHIFT_RIGHT_32));
};
var writeSFixed64 = writeFixed64;
var writeSVarint = function (buf, val) {
(0, exports.writeVarint)(buf, val, true);
};
var writeBoolean = function (buf, val) {
(0, exports.writeVarint)(buf, Number(Boolean(val)));
};
var writeString = function (buf, str) {
var bufStr = (0, utf8_1.writeUtf8)(String(str));
(0, exports.writeVarint)(buf, bufStr.length);
buf.concat(bufStr);
};
var writeFloat = function (buf, val) {
(0, ieee754_1.write)(buf.buf, val, buf.buf.length, true, 23, 4);
};
var writeDouble = function (buf, val) {
(0, ieee754_1.write)(buf.buf, val, buf.buf.length, true, 52, 8);
};
var writeBytes = function (buf, buffer) {
var len = buffer.length;
(0, exports.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
var writePacked = function (fn, buf, tag, arr) {
if (arr.length) {
(0, exports.writeTag)(buf, tag, constant_1.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);
}
(0, exports.writeVarint)(buf, bufRaw.buf.length);
buf.concat(bufRaw.buf);
}
};
exports.writePacked = writePacked;
var writeBytesField = function (buf, tag, buffer) {
(0, exports.writeTag)(buf, tag, constant_1.Bytes);
writeBytes(buf, buffer);
};
var writeFixed32Field = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Fixed32);
writeFixed32(buf, val);
};
var writeSFixed32Field = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Fixed32);
writeSFixed32(buf, val);
};
var writeFixed64Field = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Fixed64);
writeFixed64(buf, val);
};
var writeSFixed64Field = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Fixed64);
writeSFixed64(buf, val);
};
var writeVarintField = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Varint);
(0, exports.writeVarint)(buf, val);
};
var writeSVarintField = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Varint);
writeSVarint(buf, val);
};
var writeStringField = function (buf, tag, str) {
(0, exports.writeTag)(buf, tag, constant_1.Bytes);
writeString(buf, str);
};
var writeFloatField = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Fixed32);
writeFloat(buf, val);
};
var writeDoubleField = function (buf, tag, val) {
(0, exports.writeTag)(buf, tag, constant_1.Fixed64);
writeDouble(buf, val);
};
var writeBooleanField = function (buf, tag, val) {
writeVarintField(buf, tag, Number(val));
};
exports.writeMapRaw = {
// eslint-disable-next-line id-blacklist
string: writeString,
float: writeFloat,
double: writeDouble,
bool: writeBoolean,
enum: exports.writeVarint,
uint32: exports.writeVarint,
uint64: exports.writeVarint,
int32: exports.writeVarint,
int64: exports.writeVarint,
sint32: writeSVarint,
sint64: writeSVarint,
fixed32: writeFixed32,
fixed64: writeFixed64,
sfixed32: writeSFixed32,
sfixed64: writeSFixed64,
bytes: writeBytes,
};
exports.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