@whisklabs/grpc
Version:
gRPC generator and http library for typescript
219 lines • 6.28 kB
JavaScript
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