@heybox/hb-sdk 0.7.4 → 0.7.5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -672,7 +672,7 @@ function createMessageId() {
672
672
  /** 构建时替换为当前发布包的实际版本。 */
673
673
  const HB_SDK_VERSION = typeof undefined === 'string'
674
674
  ? undefined
675
- : '0.7.4';
675
+ : '0.7.5-alpha.0';
676
676
 
677
677
  const DEFAULT_TIMEOUT = 10000;
678
678
  const HANDSHAKE_RETRY_INTERVAL = 250;
@@ -1061,42 +1061,71 @@ function copyLink(requester, options) {
1061
1061
  return requester.request(SHARE_COPY_LINK_METHOD, options);
1062
1062
  }
1063
1063
 
1064
- // TextEncoder and TextDecoder are standardized in whatwg encoding:
1065
- // https://encoding.spec.whatwg.org/
1066
- // and available in all the modern browsers:
1067
- // https://caniuse.com/textencoder
1068
- // They are available in Node.js since v12 LTS as well:
1069
- // https://nodejs.org/api/globals.html#textencoder
1070
- new TextEncoder();
1071
- const CHUNK_SIZE = 4096;
1064
+ // Integer Utility
1065
+ var UINT32_MAX = 4294967295;
1066
+ function setInt64(view, offset, value) {
1067
+ var high = Math.floor(value / 4294967296);
1068
+ var low = value; // high bits are truncated by DataView
1069
+ view.setUint32(offset, high);
1070
+ view.setUint32(offset + 4, low);
1071
+ }
1072
+ function getInt64(view, offset) {
1073
+ var high = view.getInt32(offset);
1074
+ var low = view.getUint32(offset + 4);
1075
+ return high * 4294967296 + low;
1076
+ }
1077
+ function getUint64(view, offset) {
1078
+ var high = view.getUint32(offset);
1079
+ var low = view.getUint32(offset + 4);
1080
+ return high * 4294967296 + low;
1081
+ }
1082
+
1083
+ var _a, _b, _c;
1084
+ var TEXT_ENCODING_AVAILABLE = (typeof process === "undefined" || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a["TEXT_ENCODING"]) !== "never") &&
1085
+ typeof TextEncoder !== "undefined" &&
1086
+ typeof TextDecoder !== "undefined";
1087
+ var sharedTextEncoder = TEXT_ENCODING_AVAILABLE ? new TextEncoder() : undefined;
1088
+ !TEXT_ENCODING_AVAILABLE
1089
+ ? UINT32_MAX
1090
+ : typeof process !== "undefined" && ((_b = process === null || process === void 0 ? void 0 : process.env) === null || _b === void 0 ? void 0 : _b["TEXT_ENCODING"]) !== "force"
1091
+ ? 200
1092
+ : 0;
1093
+ function utf8EncodeTEencode(str, output, outputOffset) {
1094
+ output.set(sharedTextEncoder.encode(str), outputOffset);
1095
+ }
1096
+ function utf8EncodeTEencodeInto(str, output, outputOffset) {
1097
+ sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));
1098
+ }
1099
+ (sharedTextEncoder === null || sharedTextEncoder === void 0 ? void 0 : sharedTextEncoder.encodeInto) ? utf8EncodeTEencodeInto : utf8EncodeTEencode;
1100
+ var CHUNK_SIZE = 4096;
1072
1101
  function utf8DecodeJs(bytes, inputOffset, byteLength) {
1073
- let offset = inputOffset;
1074
- const end = offset + byteLength;
1075
- const units = [];
1076
- let result = "";
1102
+ var offset = inputOffset;
1103
+ var end = offset + byteLength;
1104
+ var units = [];
1105
+ var result = "";
1077
1106
  while (offset < end) {
1078
- const byte1 = bytes[offset++];
1107
+ var byte1 = bytes[offset++];
1079
1108
  if ((byte1 & 0x80) === 0) {
1080
1109
  // 1 byte
1081
1110
  units.push(byte1);
1082
1111
  }
1083
1112
  else if ((byte1 & 0xe0) === 0xc0) {
1084
1113
  // 2 bytes
1085
- const byte2 = bytes[offset++] & 0x3f;
1114
+ var byte2 = bytes[offset++] & 0x3f;
1086
1115
  units.push(((byte1 & 0x1f) << 6) | byte2);
1087
1116
  }
1088
1117
  else if ((byte1 & 0xf0) === 0xe0) {
1089
1118
  // 3 bytes
1090
- const byte2 = bytes[offset++] & 0x3f;
1091
- const byte3 = bytes[offset++] & 0x3f;
1119
+ var byte2 = bytes[offset++] & 0x3f;
1120
+ var byte3 = bytes[offset++] & 0x3f;
1092
1121
  units.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);
1093
1122
  }
1094
1123
  else if ((byte1 & 0xf8) === 0xf0) {
1095
1124
  // 4 bytes
1096
- const byte2 = bytes[offset++] & 0x3f;
1097
- const byte3 = bytes[offset++] & 0x3f;
1098
- const byte4 = bytes[offset++] & 0x3f;
1099
- let unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;
1125
+ var byte2 = bytes[offset++] & 0x3f;
1126
+ var byte3 = bytes[offset++] & 0x3f;
1127
+ var byte4 = bytes[offset++] & 0x3f;
1128
+ var unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;
1100
1129
  if (unit > 0xffff) {
1101
1130
  unit -= 0x10000;
1102
1131
  units.push(((unit >>> 10) & 0x3ff) | 0xd800);
@@ -1108,97 +1137,90 @@ function utf8DecodeJs(bytes, inputOffset, byteLength) {
1108
1137
  units.push(byte1);
1109
1138
  }
1110
1139
  if (units.length >= CHUNK_SIZE) {
1111
- result += String.fromCharCode(...units);
1140
+ result += String.fromCharCode.apply(String, units);
1112
1141
  units.length = 0;
1113
1142
  }
1114
1143
  }
1115
1144
  if (units.length > 0) {
1116
- result += String.fromCharCode(...units);
1145
+ result += String.fromCharCode.apply(String, units);
1117
1146
  }
1118
1147
  return result;
1119
1148
  }
1120
- const sharedTextDecoder = new TextDecoder();
1121
- // This threshold should be determined by benchmarking, which might vary in engines and input data.
1122
- // Run `npx ts-node benchmark/decode-string.ts` for details.
1123
- const TEXT_DECODER_THRESHOLD = 200;
1149
+ var sharedTextDecoder = TEXT_ENCODING_AVAILABLE ? new TextDecoder() : null;
1150
+ var TEXT_DECODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE
1151
+ ? UINT32_MAX
1152
+ : typeof process !== "undefined" && ((_c = process === null || process === void 0 ? void 0 : process.env) === null || _c === void 0 ? void 0 : _c["TEXT_DECODER"]) !== "force"
1153
+ ? 200
1154
+ : 0;
1124
1155
  function utf8DecodeTD(bytes, inputOffset, byteLength) {
1125
- const stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);
1156
+ var stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);
1126
1157
  return sharedTextDecoder.decode(stringBytes);
1127
1158
  }
1128
- function utf8Decode(bytes, inputOffset, byteLength) {
1129
- if (byteLength > TEXT_DECODER_THRESHOLD) {
1130
- return utf8DecodeTD(bytes, inputOffset, byteLength);
1131
- }
1132
- else {
1133
- return utf8DecodeJs(bytes, inputOffset, byteLength);
1134
- }
1135
- }
1136
1159
 
1137
1160
  /**
1138
1161
  * ExtData is used to handle Extension Types that are not registered to ExtensionCodec.
1139
1162
  */
1140
- class ExtData {
1141
- type;
1142
- data;
1143
- constructor(type, data) {
1163
+ var ExtData = /** @class */ (function () {
1164
+ function ExtData(type, data) {
1144
1165
  this.type = type;
1145
1166
  this.data = data;
1146
1167
  }
1147
- }
1168
+ return ExtData;
1169
+ }());
1148
1170
 
1149
- class DecodeError extends Error {
1150
- constructor(message) {
1151
- super(message);
1171
+ var __extends = (undefined && undefined.__extends) || (function () {
1172
+ var extendStatics = function (d, b) {
1173
+ extendStatics = Object.setPrototypeOf ||
1174
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1175
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
1176
+ return extendStatics(d, b);
1177
+ };
1178
+ return function (d, b) {
1179
+ if (typeof b !== "function" && b !== null)
1180
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1181
+ extendStatics(d, b);
1182
+ function __() { this.constructor = d; }
1183
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1184
+ };
1185
+ })();
1186
+ var DecodeError = /** @class */ (function (_super) {
1187
+ __extends(DecodeError, _super);
1188
+ function DecodeError(message) {
1189
+ var _this = _super.call(this, message) || this;
1152
1190
  // fix the prototype chain in a cross-platform way
1153
- const proto = Object.create(DecodeError.prototype);
1154
- Object.setPrototypeOf(this, proto);
1155
- Object.defineProperty(this, "name", {
1191
+ var proto = Object.create(DecodeError.prototype);
1192
+ Object.setPrototypeOf(_this, proto);
1193
+ Object.defineProperty(_this, "name", {
1156
1194
  configurable: true,
1157
1195
  enumerable: false,
1158
1196
  value: DecodeError.name,
1159
1197
  });
1198
+ return _this;
1160
1199
  }
1161
- }
1162
-
1163
- // Integer Utility
1164
- const UINT32_MAX = 4294967295;
1165
- function setInt64(view, offset, value) {
1166
- const high = Math.floor(value / 4294967296);
1167
- const low = value; // high bits are truncated by DataView
1168
- view.setUint32(offset, high);
1169
- view.setUint32(offset + 4, low);
1170
- }
1171
- function getInt64(view, offset) {
1172
- const high = view.getInt32(offset);
1173
- const low = view.getUint32(offset + 4);
1174
- return high * 4294967296 + low;
1175
- }
1176
- function getUint64(view, offset) {
1177
- const high = view.getUint32(offset);
1178
- const low = view.getUint32(offset + 4);
1179
- return high * 4294967296 + low;
1180
- }
1200
+ return DecodeError;
1201
+ }(Error));
1181
1202
 
1182
1203
  // https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type
1183
- const EXT_TIMESTAMP = -1;
1184
- const TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int
1185
- const TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int
1186
- function encodeTimeSpecToTimestamp({ sec, nsec }) {
1204
+ var EXT_TIMESTAMP = -1;
1205
+ var TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int
1206
+ var TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int
1207
+ function encodeTimeSpecToTimestamp(_a) {
1208
+ var sec = _a.sec, nsec = _a.nsec;
1187
1209
  if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {
1188
1210
  // Here sec >= 0 && nsec >= 0
1189
1211
  if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {
1190
1212
  // timestamp 32 = { sec32 (unsigned) }
1191
- const rv = new Uint8Array(4);
1192
- const view = new DataView(rv.buffer);
1213
+ var rv = new Uint8Array(4);
1214
+ var view = new DataView(rv.buffer);
1193
1215
  view.setUint32(0, sec);
1194
1216
  return rv;
1195
1217
  }
1196
1218
  else {
1197
1219
  // timestamp 64 = { nsec30 (unsigned), sec34 (unsigned) }
1198
- const secHigh = sec / 0x100000000;
1199
- const secLow = sec & 0xffffffff;
1200
- const rv = new Uint8Array(8);
1201
- const view = new DataView(rv.buffer);
1220
+ var secHigh = sec / 0x100000000;
1221
+ var secLow = sec & 0xffffffff;
1222
+ var rv = new Uint8Array(8);
1223
+ var view = new DataView(rv.buffer);
1202
1224
  // nsec30 | secHigh2
1203
1225
  view.setUint32(0, (nsec << 2) | (secHigh & 0x3));
1204
1226
  // secLow32
@@ -1208,19 +1230,19 @@ function encodeTimeSpecToTimestamp({ sec, nsec }) {
1208
1230
  }
1209
1231
  else {
1210
1232
  // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }
1211
- const rv = new Uint8Array(12);
1212
- const view = new DataView(rv.buffer);
1233
+ var rv = new Uint8Array(12);
1234
+ var view = new DataView(rv.buffer);
1213
1235
  view.setUint32(0, nsec);
1214
1236
  setInt64(view, 4, sec);
1215
1237
  return rv;
1216
1238
  }
1217
1239
  }
1218
1240
  function encodeDateToTimeSpec(date) {
1219
- const msec = date.getTime();
1220
- const sec = Math.floor(msec / 1e3);
1221
- const nsec = (msec - sec * 1e3) * 1e6;
1241
+ var msec = date.getTime();
1242
+ var sec = Math.floor(msec / 1e3);
1243
+ var nsec = (msec - sec * 1e3) * 1e6;
1222
1244
  // Normalizes { sec, nsec } to ensure nsec is unsigned.
1223
- const nsecInSec = Math.floor(nsec / 1e9);
1245
+ var nsecInSec = Math.floor(nsec / 1e9);
1224
1246
  return {
1225
1247
  sec: sec + nsecInSec,
1226
1248
  nsec: nsec - nsecInSec * 1e9,
@@ -1228,7 +1250,7 @@ function encodeDateToTimeSpec(date) {
1228
1250
  }
1229
1251
  function encodeTimestampExtension(object) {
1230
1252
  if (object instanceof Date) {
1231
- const timeSpec = encodeDateToTimeSpec(object);
1253
+ var timeSpec = encodeDateToTimeSpec(object);
1232
1254
  return encodeTimeSpecToTimestamp(timeSpec);
1233
1255
  }
1234
1256
  else {
@@ -1236,60 +1258,56 @@ function encodeTimestampExtension(object) {
1236
1258
  }
1237
1259
  }
1238
1260
  function decodeTimestampToTimeSpec(data) {
1239
- const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
1261
+ var view = new DataView(data.buffer, data.byteOffset, data.byteLength);
1240
1262
  // data may be 32, 64, or 96 bits
1241
1263
  switch (data.byteLength) {
1242
1264
  case 4: {
1243
1265
  // timestamp 32 = { sec32 }
1244
- const sec = view.getUint32(0);
1245
- const nsec = 0;
1246
- return { sec, nsec };
1266
+ var sec = view.getUint32(0);
1267
+ var nsec = 0;
1268
+ return { sec: sec, nsec: nsec };
1247
1269
  }
1248
1270
  case 8: {
1249
1271
  // timestamp 64 = { nsec30, sec34 }
1250
- const nsec30AndSecHigh2 = view.getUint32(0);
1251
- const secLow32 = view.getUint32(4);
1252
- const sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;
1253
- const nsec = nsec30AndSecHigh2 >>> 2;
1254
- return { sec, nsec };
1272
+ var nsec30AndSecHigh2 = view.getUint32(0);
1273
+ var secLow32 = view.getUint32(4);
1274
+ var sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;
1275
+ var nsec = nsec30AndSecHigh2 >>> 2;
1276
+ return { sec: sec, nsec: nsec };
1255
1277
  }
1256
1278
  case 12: {
1257
1279
  // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }
1258
- const sec = getInt64(view, 4);
1259
- const nsec = view.getUint32(0);
1260
- return { sec, nsec };
1280
+ var sec = getInt64(view, 4);
1281
+ var nsec = view.getUint32(0);
1282
+ return { sec: sec, nsec: nsec };
1261
1283
  }
1262
1284
  default:
1263
- throw new DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${data.length}`);
1285
+ throw new DecodeError("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(data.length));
1264
1286
  }
1265
1287
  }
1266
1288
  function decodeTimestampExtension(data) {
1267
- const timeSpec = decodeTimestampToTimeSpec(data);
1289
+ var timeSpec = decodeTimestampToTimeSpec(data);
1268
1290
  return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);
1269
1291
  }
1270
- const timestampExtension = {
1292
+ var timestampExtension = {
1271
1293
  type: EXT_TIMESTAMP,
1272
1294
  encode: encodeTimestampExtension,
1273
1295
  decode: decodeTimestampExtension,
1274
1296
  };
1275
1297
 
1276
1298
  // ExtensionCodec to handle MessagePack extensions
1277
- class ExtensionCodec {
1278
- static defaultCodec = new ExtensionCodec();
1279
- // ensures ExtensionCodecType<X> matches ExtensionCodec<X>
1280
- // this will make type errors a lot more clear
1281
- // eslint-disable-next-line @typescript-eslint/naming-convention
1282
- __brand;
1283
- // built-in extensions
1284
- builtInEncoders = [];
1285
- builtInDecoders = [];
1286
- // custom extensions
1287
- encoders = [];
1288
- decoders = [];
1289
- constructor() {
1299
+ var ExtensionCodec = /** @class */ (function () {
1300
+ function ExtensionCodec() {
1301
+ // built-in extensions
1302
+ this.builtInEncoders = [];
1303
+ this.builtInDecoders = [];
1304
+ // custom extensions
1305
+ this.encoders = [];
1306
+ this.decoders = [];
1290
1307
  this.register(timestampExtension);
1291
1308
  }
1292
- register({ type, encode, decode, }) {
1309
+ ExtensionCodec.prototype.register = function (_a) {
1310
+ var type = _a.type, encode = _a.encode, decode = _a.decode;
1293
1311
  if (type >= 0) {
1294
1312
  // custom extensions
1295
1313
  this.encoders[type] = encode;
@@ -1297,30 +1315,30 @@ class ExtensionCodec {
1297
1315
  }
1298
1316
  else {
1299
1317
  // built-in extensions
1300
- const index = -1 - type;
1318
+ var index = 1 + type;
1301
1319
  this.builtInEncoders[index] = encode;
1302
1320
  this.builtInDecoders[index] = decode;
1303
1321
  }
1304
- }
1305
- tryToEncode(object, context) {
1322
+ };
1323
+ ExtensionCodec.prototype.tryToEncode = function (object, context) {
1306
1324
  // built-in extensions
1307
- for (let i = 0; i < this.builtInEncoders.length; i++) {
1308
- const encodeExt = this.builtInEncoders[i];
1325
+ for (var i = 0; i < this.builtInEncoders.length; i++) {
1326
+ var encodeExt = this.builtInEncoders[i];
1309
1327
  if (encodeExt != null) {
1310
- const data = encodeExt(object, context);
1328
+ var data = encodeExt(object, context);
1311
1329
  if (data != null) {
1312
- const type = -1 - i;
1330
+ var type = -1 - i;
1313
1331
  return new ExtData(type, data);
1314
1332
  }
1315
1333
  }
1316
1334
  }
1317
1335
  // custom extensions
1318
- for (let i = 0; i < this.encoders.length; i++) {
1319
- const encodeExt = this.encoders[i];
1336
+ for (var i = 0; i < this.encoders.length; i++) {
1337
+ var encodeExt = this.encoders[i];
1320
1338
  if (encodeExt != null) {
1321
- const data = encodeExt(object, context);
1339
+ var data = encodeExt(object, context);
1322
1340
  if (data != null) {
1323
- const type = i;
1341
+ var type = i;
1324
1342
  return new ExtData(type, data);
1325
1343
  }
1326
1344
  }
@@ -1330,9 +1348,9 @@ class ExtensionCodec {
1330
1348
  return object;
1331
1349
  }
1332
1350
  return null;
1333
- }
1334
- decode(data, type, context) {
1335
- const decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];
1351
+ };
1352
+ ExtensionCodec.prototype.decode = function (data, type, context) {
1353
+ var decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];
1336
1354
  if (decodeExt) {
1337
1355
  return decodeExt(data, type, context);
1338
1356
  }
@@ -1340,12 +1358,11 @@ class ExtensionCodec {
1340
1358
  // decode() does not fail, returns ExtData instead.
1341
1359
  return new ExtData(type, data);
1342
1360
  }
1343
- }
1344
- }
1361
+ };
1362
+ ExtensionCodec.defaultCodec = new ExtensionCodec();
1363
+ return ExtensionCodec;
1364
+ }());
1345
1365
 
1346
- function isArrayBufferLike(buffer) {
1347
- return (buffer instanceof ArrayBuffer || (typeof SharedArrayBuffer !== "undefined" && buffer instanceof SharedArrayBuffer));
1348
- }
1349
1366
  function ensureUint8Array(buffer) {
1350
1367
  if (buffer instanceof Uint8Array) {
1351
1368
  return buffer;
@@ -1353,7 +1370,7 @@ function ensureUint8Array(buffer) {
1353
1370
  else if (ArrayBuffer.isView(buffer)) {
1354
1371
  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
1355
1372
  }
1356
- else if (isArrayBufferLike(buffer)) {
1373
+ else if (buffer instanceof ArrayBuffer) {
1357
1374
  return new Uint8Array(buffer);
1358
1375
  }
1359
1376
  else {
@@ -1361,37 +1378,44 @@ function ensureUint8Array(buffer) {
1361
1378
  return Uint8Array.from(buffer);
1362
1379
  }
1363
1380
  }
1381
+ function createDataView(buffer) {
1382
+ if (buffer instanceof ArrayBuffer) {
1383
+ return new DataView(buffer);
1384
+ }
1385
+ var bufferView = ensureUint8Array(buffer);
1386
+ return new DataView(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);
1387
+ }
1364
1388
 
1365
1389
  function prettyByte(byte) {
1366
- return `${byte < 0 ? "-" : ""}0x${Math.abs(byte).toString(16).padStart(2, "0")}`;
1390
+ return "".concat(byte < 0 ? "-" : "", "0x").concat(Math.abs(byte).toString(16).padStart(2, "0"));
1367
1391
  }
1368
1392
 
1369
- const DEFAULT_MAX_KEY_LENGTH = 16;
1370
- const DEFAULT_MAX_LENGTH_PER_KEY = 16;
1371
- class CachedKeyDecoder {
1372
- hit = 0;
1373
- miss = 0;
1374
- caches;
1375
- maxKeyLength;
1376
- maxLengthPerKey;
1377
- constructor(maxKeyLength = DEFAULT_MAX_KEY_LENGTH, maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY) {
1393
+ var DEFAULT_MAX_KEY_LENGTH = 16;
1394
+ var DEFAULT_MAX_LENGTH_PER_KEY = 16;
1395
+ var CachedKeyDecoder = /** @class */ (function () {
1396
+ function CachedKeyDecoder(maxKeyLength, maxLengthPerKey) {
1397
+ if (maxKeyLength === void 0) { maxKeyLength = DEFAULT_MAX_KEY_LENGTH; }
1398
+ if (maxLengthPerKey === void 0) { maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY; }
1378
1399
  this.maxKeyLength = maxKeyLength;
1379
1400
  this.maxLengthPerKey = maxLengthPerKey;
1401
+ this.hit = 0;
1402
+ this.miss = 0;
1380
1403
  // avoid `new Array(N)`, which makes a sparse array,
1381
1404
  // because a sparse array is typically slower than a non-sparse array.
1382
1405
  this.caches = [];
1383
- for (let i = 0; i < this.maxKeyLength; i++) {
1406
+ for (var i = 0; i < this.maxKeyLength; i++) {
1384
1407
  this.caches.push([]);
1385
1408
  }
1386
1409
  }
1387
- canBeCached(byteLength) {
1410
+ CachedKeyDecoder.prototype.canBeCached = function (byteLength) {
1388
1411
  return byteLength > 0 && byteLength <= this.maxKeyLength;
1389
- }
1390
- find(bytes, inputOffset, byteLength) {
1391
- const records = this.caches[byteLength - 1];
1392
- FIND_CHUNK: for (const record of records) {
1393
- const recordBytes = record.bytes;
1394
- for (let j = 0; j < byteLength; j++) {
1412
+ };
1413
+ CachedKeyDecoder.prototype.find = function (bytes, inputOffset, byteLength) {
1414
+ var records = this.caches[byteLength - 1];
1415
+ FIND_CHUNK: for (var _i = 0, records_1 = records; _i < records_1.length; _i++) {
1416
+ var record = records_1[_i];
1417
+ var recordBytes = record.bytes;
1418
+ for (var j = 0; j < byteLength; j++) {
1395
1419
  if (recordBytes[j] !== bytes[inputOffset + j]) {
1396
1420
  continue FIND_CHUNK;
1397
1421
  }
@@ -1399,10 +1423,10 @@ class CachedKeyDecoder {
1399
1423
  return record.str;
1400
1424
  }
1401
1425
  return null;
1402
- }
1403
- store(bytes, value) {
1404
- const records = this.caches[bytes.length - 1];
1405
- const record = { bytes, str: value };
1426
+ };
1427
+ CachedKeyDecoder.prototype.store = function (bytes, value) {
1428
+ var records = this.caches[bytes.length - 1];
1429
+ var record = { bytes: bytes, str: value };
1406
1430
  if (records.length >= this.maxLengthPerKey) {
1407
1431
  // `records` are full!
1408
1432
  // Set `record` to an arbitrary position.
@@ -1411,323 +1435,335 @@ class CachedKeyDecoder {
1411
1435
  else {
1412
1436
  records.push(record);
1413
1437
  }
1414
- }
1415
- decode(bytes, inputOffset, byteLength) {
1416
- const cachedValue = this.find(bytes, inputOffset, byteLength);
1438
+ };
1439
+ CachedKeyDecoder.prototype.decode = function (bytes, inputOffset, byteLength) {
1440
+ var cachedValue = this.find(bytes, inputOffset, byteLength);
1417
1441
  if (cachedValue != null) {
1418
1442
  this.hit++;
1419
1443
  return cachedValue;
1420
1444
  }
1421
1445
  this.miss++;
1422
- const str = utf8DecodeJs(bytes, inputOffset, byteLength);
1423
- // Ensure to copy a slice of bytes because the bytes may be a NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.
1424
- const slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);
1446
+ var str = utf8DecodeJs(bytes, inputOffset, byteLength);
1447
+ // Ensure to copy a slice of bytes because the byte may be NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.
1448
+ var slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);
1425
1449
  this.store(slicedCopyOfBytes, str);
1426
1450
  return str;
1427
- }
1428
- }
1451
+ };
1452
+ return CachedKeyDecoder;
1453
+ }());
1429
1454
 
1430
- const STATE_ARRAY = "array";
1431
- const STATE_MAP_KEY = "map_key";
1432
- const STATE_MAP_VALUE = "map_value";
1433
- const mapKeyConverter = (key) => {
1434
- if (typeof key === "string" || typeof key === "number") {
1435
- return key;
1436
- }
1437
- throw new DecodeError("The type of key must be string or number but " + typeof key);
1455
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1456
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1457
+ return new (P || (P = Promise))(function (resolve, reject) {
1458
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1459
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1460
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1461
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1462
+ });
1438
1463
  };
1439
- class StackPool {
1440
- stack = [];
1441
- stackHeadPosition = -1;
1442
- get length() {
1443
- return this.stackHeadPosition + 1;
1444
- }
1445
- top() {
1446
- return this.stack[this.stackHeadPosition];
1447
- }
1448
- pushArrayState(size) {
1449
- const state = this.getUninitializedStateFromPool();
1450
- state.type = STATE_ARRAY;
1451
- state.position = 0;
1452
- state.size = size;
1453
- state.array = new Array(size);
1454
- }
1455
- pushMapState(size) {
1456
- const state = this.getUninitializedStateFromPool();
1457
- state.type = STATE_MAP_KEY;
1458
- state.readCount = 0;
1459
- state.size = size;
1460
- state.map = {};
1461
- }
1462
- getUninitializedStateFromPool() {
1463
- this.stackHeadPosition++;
1464
- if (this.stackHeadPosition === this.stack.length) {
1465
- const partialState = {
1466
- type: undefined,
1467
- size: 0,
1468
- array: undefined,
1469
- position: 0,
1470
- readCount: 0,
1471
- map: undefined,
1472
- key: null,
1473
- };
1474
- this.stack.push(partialState);
1475
- }
1476
- return this.stack[this.stackHeadPosition];
1477
- }
1478
- release(state) {
1479
- const topStackState = this.stack[this.stackHeadPosition];
1480
- if (topStackState !== state) {
1481
- throw new Error("Invalid stack state. Released state is not on top of the stack.");
1482
- }
1483
- if (state.type === STATE_ARRAY) {
1484
- const partialState = state;
1485
- partialState.size = 0;
1486
- partialState.array = undefined;
1487
- partialState.position = 0;
1488
- partialState.type = undefined;
1489
- }
1490
- if (state.type === STATE_MAP_KEY || state.type === STATE_MAP_VALUE) {
1491
- const partialState = state;
1492
- partialState.size = 0;
1493
- partialState.map = undefined;
1494
- partialState.readCount = 0;
1495
- partialState.type = undefined;
1496
- }
1497
- this.stackHeadPosition--;
1498
- }
1499
- reset() {
1500
- this.stack.length = 0;
1501
- this.stackHeadPosition = -1;
1502
- }
1503
- }
1504
- const HEAD_BYTE_REQUIRED = -1;
1505
- const EMPTY_VIEW = new DataView(new ArrayBuffer(0));
1506
- const EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);
1507
- try {
1508
- // IE11: The spec says it should throw RangeError,
1509
- // IE11: but in IE11 it throws TypeError.
1510
- EMPTY_VIEW.getInt8(0);
1511
- }
1512
- catch (e) {
1513
- if (!(e instanceof RangeError)) {
1514
- throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access");
1515
- }
1516
- }
1517
- const MORE_DATA = new RangeError("Insufficient data");
1518
- const sharedCachedKeyDecoder = new CachedKeyDecoder();
1519
- class Decoder {
1520
- extensionCodec;
1521
- context;
1522
- useBigInt64;
1523
- rawStrings;
1524
- maxStrLength;
1525
- maxBinLength;
1526
- maxArrayLength;
1527
- maxMapLength;
1528
- maxExtLength;
1529
- keyDecoder;
1530
- mapKeyConverter;
1531
- totalPos = 0;
1532
- pos = 0;
1533
- view = EMPTY_VIEW;
1534
- bytes = EMPTY_BYTES;
1535
- headByte = HEAD_BYTE_REQUIRED;
1536
- stack = new StackPool();
1537
- entered = false;
1538
- constructor(options) {
1539
- this.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;
1540
- this.context = options?.context; // needs a type assertion because EncoderOptions has no context property when ContextType is undefined
1541
- this.useBigInt64 = options?.useBigInt64 ?? false;
1542
- this.rawStrings = options?.rawStrings ?? false;
1543
- this.maxStrLength = options?.maxStrLength ?? UINT32_MAX;
1544
- this.maxBinLength = options?.maxBinLength ?? UINT32_MAX;
1545
- this.maxArrayLength = options?.maxArrayLength ?? UINT32_MAX;
1546
- this.maxMapLength = options?.maxMapLength ?? UINT32_MAX;
1547
- this.maxExtLength = options?.maxExtLength ?? UINT32_MAX;
1548
- this.keyDecoder = options?.keyDecoder !== undefined ? options.keyDecoder : sharedCachedKeyDecoder;
1549
- this.mapKeyConverter = options?.mapKeyConverter ?? mapKeyConverter;
1550
- }
1551
- clone() {
1552
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
1553
- return new Decoder({
1554
- extensionCodec: this.extensionCodec,
1555
- context: this.context,
1556
- useBigInt64: this.useBigInt64,
1557
- rawStrings: this.rawStrings,
1558
- maxStrLength: this.maxStrLength,
1559
- maxBinLength: this.maxBinLength,
1560
- maxArrayLength: this.maxArrayLength,
1561
- maxMapLength: this.maxMapLength,
1562
- maxExtLength: this.maxExtLength,
1563
- keyDecoder: this.keyDecoder,
1564
- });
1464
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
1465
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
1466
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1467
+ function verb(n) { return function (v) { return step([n, v]); }; }
1468
+ function step(op) {
1469
+ if (f) throw new TypeError("Generator is already executing.");
1470
+ while (_) try {
1471
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
1472
+ if (y = 0, t) op = [op[0] & 2, t.value];
1473
+ switch (op[0]) {
1474
+ case 0: case 1: t = op; break;
1475
+ case 4: _.label++; return { value: op[1], done: false };
1476
+ case 5: _.label++; y = op[1]; op = [0]; continue;
1477
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
1478
+ default:
1479
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1480
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1481
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1482
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1483
+ if (t[2]) _.ops.pop();
1484
+ _.trys.pop(); continue;
1485
+ }
1486
+ op = body.call(thisArg, _);
1487
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1488
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1565
1489
  }
1566
- reinitializeState() {
1490
+ };
1491
+ var __asyncValues = (undefined && undefined.__asyncValues) || function (o) {
1492
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
1493
+ var m = o[Symbol.asyncIterator], i;
1494
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
1495
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
1496
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
1497
+ };
1498
+ var __await = (undefined && undefined.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); };
1499
+ var __asyncGenerator = (undefined && undefined.__asyncGenerator) || function (thisArg, _arguments, generator) {
1500
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
1501
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
1502
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
1503
+ function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
1504
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
1505
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
1506
+ function fulfill(value) { resume("next", value); }
1507
+ function reject(value) { resume("throw", value); }
1508
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
1509
+ };
1510
+ var isValidMapKeyType = function (key) {
1511
+ var keyType = typeof key;
1512
+ return keyType === "string" || keyType === "number";
1513
+ };
1514
+ var HEAD_BYTE_REQUIRED = -1;
1515
+ var EMPTY_VIEW = new DataView(new ArrayBuffer(0));
1516
+ var EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);
1517
+ // IE11: Hack to support IE11.
1518
+ // IE11: Drop this hack and just use RangeError when IE11 is obsolete.
1519
+ var DataViewIndexOutOfBoundsError = (function () {
1520
+ try {
1521
+ // IE11: The spec says it should throw RangeError,
1522
+ // IE11: but in IE11 it throws TypeError.
1523
+ EMPTY_VIEW.getInt8(0);
1524
+ }
1525
+ catch (e) {
1526
+ return e.constructor;
1527
+ }
1528
+ throw new Error("never reached");
1529
+ })();
1530
+ var MORE_DATA = new DataViewIndexOutOfBoundsError("Insufficient data");
1531
+ var sharedCachedKeyDecoder = new CachedKeyDecoder();
1532
+ var Decoder = /** @class */ (function () {
1533
+ function Decoder(extensionCodec, context, maxStrLength, maxBinLength, maxArrayLength, maxMapLength, maxExtLength, keyDecoder) {
1534
+ if (extensionCodec === void 0) { extensionCodec = ExtensionCodec.defaultCodec; }
1535
+ if (context === void 0) { context = undefined; }
1536
+ if (maxStrLength === void 0) { maxStrLength = UINT32_MAX; }
1537
+ if (maxBinLength === void 0) { maxBinLength = UINT32_MAX; }
1538
+ if (maxArrayLength === void 0) { maxArrayLength = UINT32_MAX; }
1539
+ if (maxMapLength === void 0) { maxMapLength = UINT32_MAX; }
1540
+ if (maxExtLength === void 0) { maxExtLength = UINT32_MAX; }
1541
+ if (keyDecoder === void 0) { keyDecoder = sharedCachedKeyDecoder; }
1542
+ this.extensionCodec = extensionCodec;
1543
+ this.context = context;
1544
+ this.maxStrLength = maxStrLength;
1545
+ this.maxBinLength = maxBinLength;
1546
+ this.maxArrayLength = maxArrayLength;
1547
+ this.maxMapLength = maxMapLength;
1548
+ this.maxExtLength = maxExtLength;
1549
+ this.keyDecoder = keyDecoder;
1567
1550
  this.totalPos = 0;
1551
+ this.pos = 0;
1552
+ this.view = EMPTY_VIEW;
1553
+ this.bytes = EMPTY_BYTES;
1568
1554
  this.headByte = HEAD_BYTE_REQUIRED;
1569
- this.stack.reset();
1570
- // view, bytes, and pos will be re-initialized in setBuffer()
1555
+ this.stack = [];
1571
1556
  }
1572
- setBuffer(buffer) {
1573
- const bytes = ensureUint8Array(buffer);
1574
- this.bytes = bytes;
1575
- this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
1557
+ Decoder.prototype.reinitializeState = function () {
1558
+ this.totalPos = 0;
1559
+ this.headByte = HEAD_BYTE_REQUIRED;
1560
+ this.stack.length = 0;
1561
+ // view, bytes, and pos will be re-initialized in setBuffer()
1562
+ };
1563
+ Decoder.prototype.setBuffer = function (buffer) {
1564
+ this.bytes = ensureUint8Array(buffer);
1565
+ this.view = createDataView(this.bytes);
1576
1566
  this.pos = 0;
1577
- }
1578
- appendBuffer(buffer) {
1567
+ };
1568
+ Decoder.prototype.appendBuffer = function (buffer) {
1579
1569
  if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining(1)) {
1580
1570
  this.setBuffer(buffer);
1581
1571
  }
1582
1572
  else {
1583
- const remainingData = this.bytes.subarray(this.pos);
1584
- const newData = ensureUint8Array(buffer);
1573
+ var remainingData = this.bytes.subarray(this.pos);
1574
+ var newData = ensureUint8Array(buffer);
1585
1575
  // concat remainingData + newData
1586
- const newBuffer = new Uint8Array(remainingData.length + newData.length);
1576
+ var newBuffer = new Uint8Array(remainingData.length + newData.length);
1587
1577
  newBuffer.set(remainingData);
1588
1578
  newBuffer.set(newData, remainingData.length);
1589
1579
  this.setBuffer(newBuffer);
1590
1580
  }
1591
- }
1592
- hasRemaining(size) {
1581
+ };
1582
+ Decoder.prototype.hasRemaining = function (size) {
1593
1583
  return this.view.byteLength - this.pos >= size;
1594
- }
1595
- createExtraByteError(posToShow) {
1596
- const { view, pos } = this;
1597
- return new RangeError(`Extra ${view.byteLength - pos} of ${view.byteLength} byte(s) found at buffer[${posToShow}]`);
1598
- }
1584
+ };
1585
+ Decoder.prototype.createExtraByteError = function (posToShow) {
1586
+ var _a = this, view = _a.view, pos = _a.pos;
1587
+ return new RangeError("Extra ".concat(view.byteLength - pos, " of ").concat(view.byteLength, " byte(s) found at buffer[").concat(posToShow, "]"));
1588
+ };
1599
1589
  /**
1600
1590
  * @throws {@link DecodeError}
1601
1591
  * @throws {@link RangeError}
1602
1592
  */
1603
- decode(buffer) {
1604
- if (this.entered) {
1605
- const instance = this.clone();
1606
- return instance.decode(buffer);
1593
+ Decoder.prototype.decode = function (buffer) {
1594
+ this.reinitializeState();
1595
+ this.setBuffer(buffer);
1596
+ var object = this.doDecodeSync();
1597
+ if (this.hasRemaining(1)) {
1598
+ throw this.createExtraByteError(this.pos);
1607
1599
  }
1608
- try {
1609
- this.entered = true;
1610
- this.reinitializeState();
1611
- this.setBuffer(buffer);
1612
- const object = this.doDecodeSync();
1613
- if (this.hasRemaining(1)) {
1614
- throw this.createExtraByteError(this.pos);
1615
- }
1616
- return object;
1617
- }
1618
- finally {
1619
- this.entered = false;
1620
- }
1621
- }
1622
- *decodeMulti(buffer) {
1623
- if (this.entered) {
1624
- const instance = this.clone();
1625
- yield* instance.decodeMulti(buffer);
1626
- return;
1627
- }
1628
- try {
1629
- this.entered = true;
1630
- this.reinitializeState();
1631
- this.setBuffer(buffer);
1632
- while (this.hasRemaining(1)) {
1633
- yield this.doDecodeSync();
1634
- }
1635
- }
1636
- finally {
1637
- this.entered = false;
1638
- }
1639
- }
1640
- async decodeAsync(stream) {
1641
- if (this.entered) {
1642
- const instance = this.clone();
1643
- return instance.decodeAsync(stream);
1644
- }
1645
- try {
1646
- this.entered = true;
1647
- let decoded = false;
1648
- let object;
1649
- for await (const buffer of stream) {
1650
- if (decoded) {
1651
- this.entered = false;
1652
- throw this.createExtraByteError(this.totalPos);
1653
- }
1654
- this.appendBuffer(buffer);
1655
- try {
1656
- object = this.doDecodeSync();
1657
- decoded = true;
1658
- }
1659
- catch (e) {
1660
- if (!(e instanceof RangeError)) {
1661
- throw e; // rethrow
1662
- }
1663
- // fallthrough
1664
- }
1665
- this.totalPos += this.pos;
1600
+ return object;
1601
+ };
1602
+ Decoder.prototype.decodeMulti = function (buffer) {
1603
+ return __generator(this, function (_a) {
1604
+ switch (_a.label) {
1605
+ case 0:
1606
+ this.reinitializeState();
1607
+ this.setBuffer(buffer);
1608
+ _a.label = 1;
1609
+ case 1:
1610
+ if (!this.hasRemaining(1)) return [3 /*break*/, 3];
1611
+ return [4 /*yield*/, this.doDecodeSync()];
1612
+ case 2:
1613
+ _a.sent();
1614
+ return [3 /*break*/, 1];
1615
+ case 3: return [2 /*return*/];
1666
1616
  }
1667
- if (decoded) {
1668
- if (this.hasRemaining(1)) {
1669
- throw this.createExtraByteError(this.totalPos);
1617
+ });
1618
+ };
1619
+ Decoder.prototype.decodeAsync = function (stream) {
1620
+ var stream_1, stream_1_1;
1621
+ var e_1, _a;
1622
+ return __awaiter(this, void 0, void 0, function () {
1623
+ var decoded, object, buffer, e_1_1, _b, headByte, pos, totalPos;
1624
+ return __generator(this, function (_c) {
1625
+ switch (_c.label) {
1626
+ case 0:
1627
+ decoded = false;
1628
+ _c.label = 1;
1629
+ case 1:
1630
+ _c.trys.push([1, 6, 7, 12]);
1631
+ stream_1 = __asyncValues(stream);
1632
+ _c.label = 2;
1633
+ case 2: return [4 /*yield*/, stream_1.next()];
1634
+ case 3:
1635
+ if (!(stream_1_1 = _c.sent(), !stream_1_1.done)) return [3 /*break*/, 5];
1636
+ buffer = stream_1_1.value;
1637
+ if (decoded) {
1638
+ throw this.createExtraByteError(this.totalPos);
1639
+ }
1640
+ this.appendBuffer(buffer);
1641
+ try {
1642
+ object = this.doDecodeSync();
1643
+ decoded = true;
1644
+ }
1645
+ catch (e) {
1646
+ if (!(e instanceof DataViewIndexOutOfBoundsError)) {
1647
+ throw e; // rethrow
1648
+ }
1649
+ // fallthrough
1650
+ }
1651
+ this.totalPos += this.pos;
1652
+ _c.label = 4;
1653
+ case 4: return [3 /*break*/, 2];
1654
+ case 5: return [3 /*break*/, 12];
1655
+ case 6:
1656
+ e_1_1 = _c.sent();
1657
+ e_1 = { error: e_1_1 };
1658
+ return [3 /*break*/, 12];
1659
+ case 7:
1660
+ _c.trys.push([7, , 10, 11]);
1661
+ if (!(stream_1_1 && !stream_1_1.done && (_a = stream_1.return))) return [3 /*break*/, 9];
1662
+ return [4 /*yield*/, _a.call(stream_1)];
1663
+ case 8:
1664
+ _c.sent();
1665
+ _c.label = 9;
1666
+ case 9: return [3 /*break*/, 11];
1667
+ case 10:
1668
+ if (e_1) throw e_1.error;
1669
+ return [7 /*endfinally*/];
1670
+ case 11: return [7 /*endfinally*/];
1671
+ case 12:
1672
+ if (decoded) {
1673
+ if (this.hasRemaining(1)) {
1674
+ throw this.createExtraByteError(this.totalPos);
1675
+ }
1676
+ return [2 /*return*/, object];
1677
+ }
1678
+ _b = this, headByte = _b.headByte, pos = _b.pos, totalPos = _b.totalPos;
1679
+ throw new RangeError("Insufficient data in parsing ".concat(prettyByte(headByte), " at ").concat(totalPos, " (").concat(pos, " in the current buffer)"));
1670
1680
  }
1671
- return object;
1672
- }
1673
- const { headByte, pos, totalPos } = this;
1674
- throw new RangeError(`Insufficient data in parsing ${prettyByte(headByte)} at ${totalPos} (${pos} in the current buffer)`);
1675
- }
1676
- finally {
1677
- this.entered = false;
1678
- }
1679
- }
1680
- decodeArrayStream(stream) {
1681
+ });
1682
+ });
1683
+ };
1684
+ Decoder.prototype.decodeArrayStream = function (stream) {
1681
1685
  return this.decodeMultiAsync(stream, true);
1682
- }
1683
- decodeStream(stream) {
1686
+ };
1687
+ Decoder.prototype.decodeStream = function (stream) {
1684
1688
  return this.decodeMultiAsync(stream, false);
1685
- }
1686
- async *decodeMultiAsync(stream, isArray) {
1687
- if (this.entered) {
1688
- const instance = this.clone();
1689
- yield* instance.decodeMultiAsync(stream, isArray);
1690
- return;
1691
- }
1692
- try {
1693
- this.entered = true;
1694
- let isArrayHeaderRequired = isArray;
1695
- let arrayItemsLeft = -1;
1696
- for await (const buffer of stream) {
1697
- if (isArray && arrayItemsLeft === 0) {
1698
- throw this.createExtraByteError(this.totalPos);
1699
- }
1700
- this.appendBuffer(buffer);
1701
- if (isArrayHeaderRequired) {
1702
- arrayItemsLeft = this.readArraySize();
1703
- isArrayHeaderRequired = false;
1704
- this.complete();
1705
- }
1706
- try {
1707
- while (true) {
1708
- yield this.doDecodeSync();
1689
+ };
1690
+ Decoder.prototype.decodeMultiAsync = function (stream, isArray) {
1691
+ return __asyncGenerator(this, arguments, function decodeMultiAsync_1() {
1692
+ var isArrayHeaderRequired, arrayItemsLeft, stream_2, stream_2_1, buffer, e_2, e_3_1;
1693
+ var e_3, _a;
1694
+ return __generator(this, function (_b) {
1695
+ switch (_b.label) {
1696
+ case 0:
1697
+ isArrayHeaderRequired = isArray;
1698
+ arrayItemsLeft = -1;
1699
+ _b.label = 1;
1700
+ case 1:
1701
+ _b.trys.push([1, 13, 14, 19]);
1702
+ stream_2 = __asyncValues(stream);
1703
+ _b.label = 2;
1704
+ case 2: return [4 /*yield*/, __await(stream_2.next())];
1705
+ case 3:
1706
+ if (!(stream_2_1 = _b.sent(), !stream_2_1.done)) return [3 /*break*/, 12];
1707
+ buffer = stream_2_1.value;
1708
+ if (isArray && arrayItemsLeft === 0) {
1709
+ throw this.createExtraByteError(this.totalPos);
1710
+ }
1711
+ this.appendBuffer(buffer);
1712
+ if (isArrayHeaderRequired) {
1713
+ arrayItemsLeft = this.readArraySize();
1714
+ isArrayHeaderRequired = false;
1715
+ this.complete();
1716
+ }
1717
+ _b.label = 4;
1718
+ case 4:
1719
+ _b.trys.push([4, 9, , 10]);
1720
+ _b.label = 5;
1721
+ case 5:
1722
+ return [4 /*yield*/, __await(this.doDecodeSync())];
1723
+ case 6: return [4 /*yield*/, _b.sent()];
1724
+ case 7:
1725
+ _b.sent();
1709
1726
  if (--arrayItemsLeft === 0) {
1710
- break;
1727
+ return [3 /*break*/, 8];
1711
1728
  }
1712
- }
1713
- }
1714
- catch (e) {
1715
- if (!(e instanceof RangeError)) {
1716
- throw e; // rethrow
1717
- }
1718
- // fallthrough
1729
+ return [3 /*break*/, 5];
1730
+ case 8: return [3 /*break*/, 10];
1731
+ case 9:
1732
+ e_2 = _b.sent();
1733
+ if (!(e_2 instanceof DataViewIndexOutOfBoundsError)) {
1734
+ throw e_2; // rethrow
1735
+ }
1736
+ return [3 /*break*/, 10];
1737
+ case 10:
1738
+ this.totalPos += this.pos;
1739
+ _b.label = 11;
1740
+ case 11: return [3 /*break*/, 2];
1741
+ case 12: return [3 /*break*/, 19];
1742
+ case 13:
1743
+ e_3_1 = _b.sent();
1744
+ e_3 = { error: e_3_1 };
1745
+ return [3 /*break*/, 19];
1746
+ case 14:
1747
+ _b.trys.push([14, , 17, 18]);
1748
+ if (!(stream_2_1 && !stream_2_1.done && (_a = stream_2.return))) return [3 /*break*/, 16];
1749
+ return [4 /*yield*/, __await(_a.call(stream_2))];
1750
+ case 15:
1751
+ _b.sent();
1752
+ _b.label = 16;
1753
+ case 16: return [3 /*break*/, 18];
1754
+ case 17:
1755
+ if (e_3) throw e_3.error;
1756
+ return [7 /*endfinally*/];
1757
+ case 18: return [7 /*endfinally*/];
1758
+ case 19: return [2 /*return*/];
1719
1759
  }
1720
- this.totalPos += this.pos;
1721
- }
1722
- }
1723
- finally {
1724
- this.entered = false;
1725
- }
1726
- }
1727
- doDecodeSync() {
1760
+ });
1761
+ });
1762
+ };
1763
+ Decoder.prototype.doDecodeSync = function () {
1728
1764
  DECODE: while (true) {
1729
- const headByte = this.readHeadByte();
1730
- let object;
1765
+ var headByte = this.readHeadByte();
1766
+ var object = void 0;
1731
1767
  if (headByte >= 0xe0) {
1732
1768
  // negative fixint (111x xxxx) 0xe0 - 0xff
1733
1769
  object = headByte - 0x100;
@@ -1739,7 +1775,7 @@ class Decoder {
1739
1775
  }
1740
1776
  else if (headByte < 0x90) {
1741
1777
  // fixmap (1000 xxxx) 0x80 - 0x8f
1742
- const size = headByte - 0x80;
1778
+ var size = headByte - 0x80;
1743
1779
  if (size !== 0) {
1744
1780
  this.pushMapState(size);
1745
1781
  this.complete();
@@ -1751,7 +1787,7 @@ class Decoder {
1751
1787
  }
1752
1788
  else if (headByte < 0xa0) {
1753
1789
  // fixarray (1001 xxxx) 0x90 - 0x9f
1754
- const size = headByte - 0x90;
1790
+ var size = headByte - 0x90;
1755
1791
  if (size !== 0) {
1756
1792
  this.pushArrayState(size);
1757
1793
  this.complete();
@@ -1763,8 +1799,8 @@ class Decoder {
1763
1799
  }
1764
1800
  else {
1765
1801
  // fixstr (101x xxxx) 0xa0 - 0xbf
1766
- const byteLength = headByte - 0xa0;
1767
- object = this.decodeString(byteLength, 0);
1802
+ var byteLength = headByte - 0xa0;
1803
+ object = this.decodeUtf8String(byteLength, 0);
1768
1804
  }
1769
1805
  }
1770
1806
  else if (headByte === 0xc0) {
@@ -1801,12 +1837,7 @@ class Decoder {
1801
1837
  }
1802
1838
  else if (headByte === 0xcf) {
1803
1839
  // uint 64
1804
- if (this.useBigInt64) {
1805
- object = this.readU64AsBigInt();
1806
- }
1807
- else {
1808
- object = this.readU64();
1809
- }
1840
+ object = this.readU64();
1810
1841
  }
1811
1842
  else if (headByte === 0xd0) {
1812
1843
  // int 8
@@ -1822,31 +1853,26 @@ class Decoder {
1822
1853
  }
1823
1854
  else if (headByte === 0xd3) {
1824
1855
  // int 64
1825
- if (this.useBigInt64) {
1826
- object = this.readI64AsBigInt();
1827
- }
1828
- else {
1829
- object = this.readI64();
1830
- }
1856
+ object = this.readI64();
1831
1857
  }
1832
1858
  else if (headByte === 0xd9) {
1833
1859
  // str 8
1834
- const byteLength = this.lookU8();
1835
- object = this.decodeString(byteLength, 1);
1860
+ var byteLength = this.lookU8();
1861
+ object = this.decodeUtf8String(byteLength, 1);
1836
1862
  }
1837
1863
  else if (headByte === 0xda) {
1838
1864
  // str 16
1839
- const byteLength = this.lookU16();
1840
- object = this.decodeString(byteLength, 2);
1865
+ var byteLength = this.lookU16();
1866
+ object = this.decodeUtf8String(byteLength, 2);
1841
1867
  }
1842
1868
  else if (headByte === 0xdb) {
1843
1869
  // str 32
1844
- const byteLength = this.lookU32();
1845
- object = this.decodeString(byteLength, 4);
1870
+ var byteLength = this.lookU32();
1871
+ object = this.decodeUtf8String(byteLength, 4);
1846
1872
  }
1847
1873
  else if (headByte === 0xdc) {
1848
1874
  // array 16
1849
- const size = this.readU16();
1875
+ var size = this.readU16();
1850
1876
  if (size !== 0) {
1851
1877
  this.pushArrayState(size);
1852
1878
  this.complete();
@@ -1858,7 +1884,7 @@ class Decoder {
1858
1884
  }
1859
1885
  else if (headByte === 0xdd) {
1860
1886
  // array 32
1861
- const size = this.readU32();
1887
+ var size = this.readU32();
1862
1888
  if (size !== 0) {
1863
1889
  this.pushArrayState(size);
1864
1890
  this.complete();
@@ -1870,7 +1896,7 @@ class Decoder {
1870
1896
  }
1871
1897
  else if (headByte === 0xde) {
1872
1898
  // map 16
1873
- const size = this.readU16();
1899
+ var size = this.readU16();
1874
1900
  if (size !== 0) {
1875
1901
  this.pushMapState(size);
1876
1902
  this.complete();
@@ -1882,7 +1908,7 @@ class Decoder {
1882
1908
  }
1883
1909
  else if (headByte === 0xdf) {
1884
1910
  // map 32
1885
- const size = this.readU32();
1911
+ var size = this.readU32();
1886
1912
  if (size !== 0) {
1887
1913
  this.pushMapState(size);
1888
1914
  this.complete();
@@ -1894,17 +1920,17 @@ class Decoder {
1894
1920
  }
1895
1921
  else if (headByte === 0xc4) {
1896
1922
  // bin 8
1897
- const size = this.lookU8();
1923
+ var size = this.lookU8();
1898
1924
  object = this.decodeBinary(size, 1);
1899
1925
  }
1900
1926
  else if (headByte === 0xc5) {
1901
1927
  // bin 16
1902
- const size = this.lookU16();
1928
+ var size = this.lookU16();
1903
1929
  object = this.decodeBinary(size, 2);
1904
1930
  }
1905
1931
  else if (headByte === 0xc6) {
1906
1932
  // bin 32
1907
- const size = this.lookU32();
1933
+ var size = this.lookU32();
1908
1934
  object = this.decodeBinary(size, 4);
1909
1935
  }
1910
1936
  else if (headByte === 0xd4) {
@@ -1929,44 +1955,47 @@ class Decoder {
1929
1955
  }
1930
1956
  else if (headByte === 0xc7) {
1931
1957
  // ext 8
1932
- const size = this.lookU8();
1958
+ var size = this.lookU8();
1933
1959
  object = this.decodeExtension(size, 1);
1934
1960
  }
1935
1961
  else if (headByte === 0xc8) {
1936
1962
  // ext 16
1937
- const size = this.lookU16();
1963
+ var size = this.lookU16();
1938
1964
  object = this.decodeExtension(size, 2);
1939
1965
  }
1940
1966
  else if (headByte === 0xc9) {
1941
1967
  // ext 32
1942
- const size = this.lookU32();
1968
+ var size = this.lookU32();
1943
1969
  object = this.decodeExtension(size, 4);
1944
1970
  }
1945
1971
  else {
1946
- throw new DecodeError(`Unrecognized type byte: ${prettyByte(headByte)}`);
1972
+ throw new DecodeError("Unrecognized type byte: ".concat(prettyByte(headByte)));
1947
1973
  }
1948
1974
  this.complete();
1949
- const stack = this.stack;
1975
+ var stack = this.stack;
1950
1976
  while (stack.length > 0) {
1951
1977
  // arrays and maps
1952
- const state = stack.top();
1953
- if (state.type === STATE_ARRAY) {
1978
+ var state = stack[stack.length - 1];
1979
+ if (state.type === 0 /* State.ARRAY */) {
1954
1980
  state.array[state.position] = object;
1955
1981
  state.position++;
1956
1982
  if (state.position === state.size) {
1983
+ stack.pop();
1957
1984
  object = state.array;
1958
- stack.release(state);
1959
1985
  }
1960
1986
  else {
1961
1987
  continue DECODE;
1962
1988
  }
1963
1989
  }
1964
- else if (state.type === STATE_MAP_KEY) {
1990
+ else if (state.type === 1 /* State.MAP_KEY */) {
1991
+ if (!isValidMapKeyType(object)) {
1992
+ throw new DecodeError("The type of key must be string or number but " + typeof object);
1993
+ }
1965
1994
  if (object === "__proto__") {
1966
1995
  throw new DecodeError("The key __proto__ is not allowed");
1967
1996
  }
1968
- state.key = this.mapKeyConverter(object);
1969
- state.type = STATE_MAP_VALUE;
1997
+ state.key = object;
1998
+ state.type = 2 /* State.MAP_VALUE */;
1970
1999
  continue DECODE;
1971
2000
  }
1972
2001
  else {
@@ -1974,31 +2003,31 @@ class Decoder {
1974
2003
  state.map[state.key] = object;
1975
2004
  state.readCount++;
1976
2005
  if (state.readCount === state.size) {
2006
+ stack.pop();
1977
2007
  object = state.map;
1978
- stack.release(state);
1979
2008
  }
1980
2009
  else {
1981
2010
  state.key = null;
1982
- state.type = STATE_MAP_KEY;
2011
+ state.type = 1 /* State.MAP_KEY */;
1983
2012
  continue DECODE;
1984
2013
  }
1985
2014
  }
1986
2015
  }
1987
2016
  return object;
1988
2017
  }
1989
- }
1990
- readHeadByte() {
2018
+ };
2019
+ Decoder.prototype.readHeadByte = function () {
1991
2020
  if (this.headByte === HEAD_BYTE_REQUIRED) {
1992
2021
  this.headByte = this.readU8();
1993
2022
  // console.log("headByte", prettyByte(this.headByte));
1994
2023
  }
1995
2024
  return this.headByte;
1996
- }
1997
- complete() {
2025
+ };
2026
+ Decoder.prototype.complete = function () {
1998
2027
  this.headByte = HEAD_BYTE_REQUIRED;
1999
- }
2000
- readArraySize() {
2001
- const headByte = this.readHeadByte();
2028
+ };
2029
+ Decoder.prototype.readArraySize = function () {
2030
+ var headByte = this.readHeadByte();
2002
2031
  switch (headByte) {
2003
2032
  case 0xdc:
2004
2033
  return this.readU16();
@@ -2009,162 +2038,158 @@ class Decoder {
2009
2038
  return headByte - 0x90;
2010
2039
  }
2011
2040
  else {
2012
- throw new DecodeError(`Unrecognized array type byte: ${prettyByte(headByte)}`);
2041
+ throw new DecodeError("Unrecognized array type byte: ".concat(prettyByte(headByte)));
2013
2042
  }
2014
2043
  }
2015
2044
  }
2016
- }
2017
- pushMapState(size) {
2045
+ };
2046
+ Decoder.prototype.pushMapState = function (size) {
2018
2047
  if (size > this.maxMapLength) {
2019
- throw new DecodeError(`Max length exceeded: map length (${size}) > maxMapLengthLength (${this.maxMapLength})`);
2020
- }
2021
- this.stack.pushMapState(size);
2022
- }
2023
- pushArrayState(size) {
2048
+ throw new DecodeError("Max length exceeded: map length (".concat(size, ") > maxMapLengthLength (").concat(this.maxMapLength, ")"));
2049
+ }
2050
+ this.stack.push({
2051
+ type: 1 /* State.MAP_KEY */,
2052
+ size: size,
2053
+ key: null,
2054
+ readCount: 0,
2055
+ map: {},
2056
+ });
2057
+ };
2058
+ Decoder.prototype.pushArrayState = function (size) {
2024
2059
  if (size > this.maxArrayLength) {
2025
- throw new DecodeError(`Max length exceeded: array length (${size}) > maxArrayLength (${this.maxArrayLength})`);
2060
+ throw new DecodeError("Max length exceeded: array length (".concat(size, ") > maxArrayLength (").concat(this.maxArrayLength, ")"));
2026
2061
  }
2027
- this.stack.pushArrayState(size);
2028
- }
2029
- decodeString(byteLength, headerOffset) {
2030
- if (!this.rawStrings || this.stateIsMapKey()) {
2031
- return this.decodeUtf8String(byteLength, headerOffset);
2032
- }
2033
- return this.decodeBinary(byteLength, headerOffset);
2034
- }
2035
- /**
2036
- * @throws {@link RangeError}
2037
- */
2038
- decodeUtf8String(byteLength, headerOffset) {
2062
+ this.stack.push({
2063
+ type: 0 /* State.ARRAY */,
2064
+ size: size,
2065
+ array: new Array(size),
2066
+ position: 0,
2067
+ });
2068
+ };
2069
+ Decoder.prototype.decodeUtf8String = function (byteLength, headerOffset) {
2070
+ var _a;
2039
2071
  if (byteLength > this.maxStrLength) {
2040
- throw new DecodeError(`Max length exceeded: UTF-8 byte length (${byteLength}) > maxStrLength (${this.maxStrLength})`);
2072
+ throw new DecodeError("Max length exceeded: UTF-8 byte length (".concat(byteLength, ") > maxStrLength (").concat(this.maxStrLength, ")"));
2041
2073
  }
2042
2074
  if (this.bytes.byteLength < this.pos + headerOffset + byteLength) {
2043
2075
  throw MORE_DATA;
2044
2076
  }
2045
- const offset = this.pos + headerOffset;
2046
- let object;
2047
- if (this.stateIsMapKey() && this.keyDecoder?.canBeCached(byteLength)) {
2077
+ var offset = this.pos + headerOffset;
2078
+ var object;
2079
+ if (this.stateIsMapKey() && ((_a = this.keyDecoder) === null || _a === void 0 ? void 0 : _a.canBeCached(byteLength))) {
2048
2080
  object = this.keyDecoder.decode(this.bytes, offset, byteLength);
2049
2081
  }
2082
+ else if (byteLength > TEXT_DECODER_THRESHOLD) {
2083
+ object = utf8DecodeTD(this.bytes, offset, byteLength);
2084
+ }
2050
2085
  else {
2051
- object = utf8Decode(this.bytes, offset, byteLength);
2086
+ object = utf8DecodeJs(this.bytes, offset, byteLength);
2052
2087
  }
2053
2088
  this.pos += headerOffset + byteLength;
2054
2089
  return object;
2055
- }
2056
- stateIsMapKey() {
2090
+ };
2091
+ Decoder.prototype.stateIsMapKey = function () {
2057
2092
  if (this.stack.length > 0) {
2058
- const state = this.stack.top();
2059
- return state.type === STATE_MAP_KEY;
2093
+ var state = this.stack[this.stack.length - 1];
2094
+ return state.type === 1 /* State.MAP_KEY */;
2060
2095
  }
2061
2096
  return false;
2062
- }
2063
- /**
2064
- * @throws {@link RangeError}
2065
- */
2066
- decodeBinary(byteLength, headOffset) {
2097
+ };
2098
+ Decoder.prototype.decodeBinary = function (byteLength, headOffset) {
2067
2099
  if (byteLength > this.maxBinLength) {
2068
- throw new DecodeError(`Max length exceeded: bin length (${byteLength}) > maxBinLength (${this.maxBinLength})`);
2100
+ throw new DecodeError("Max length exceeded: bin length (".concat(byteLength, ") > maxBinLength (").concat(this.maxBinLength, ")"));
2069
2101
  }
2070
2102
  if (!this.hasRemaining(byteLength + headOffset)) {
2071
2103
  throw MORE_DATA;
2072
2104
  }
2073
- const offset = this.pos + headOffset;
2074
- const object = this.bytes.subarray(offset, offset + byteLength);
2105
+ var offset = this.pos + headOffset;
2106
+ var object = this.bytes.subarray(offset, offset + byteLength);
2075
2107
  this.pos += headOffset + byteLength;
2076
2108
  return object;
2077
- }
2078
- decodeExtension(size, headOffset) {
2109
+ };
2110
+ Decoder.prototype.decodeExtension = function (size, headOffset) {
2079
2111
  if (size > this.maxExtLength) {
2080
- throw new DecodeError(`Max length exceeded: ext length (${size}) > maxExtLength (${this.maxExtLength})`);
2112
+ throw new DecodeError("Max length exceeded: ext length (".concat(size, ") > maxExtLength (").concat(this.maxExtLength, ")"));
2081
2113
  }
2082
- const extType = this.view.getInt8(this.pos + headOffset);
2083
- const data = this.decodeBinary(size, headOffset + 1 /* extType */);
2114
+ var extType = this.view.getInt8(this.pos + headOffset);
2115
+ var data = this.decodeBinary(size, headOffset + 1 /* extType */);
2084
2116
  return this.extensionCodec.decode(data, extType, this.context);
2085
- }
2086
- lookU8() {
2117
+ };
2118
+ Decoder.prototype.lookU8 = function () {
2087
2119
  return this.view.getUint8(this.pos);
2088
- }
2089
- lookU16() {
2120
+ };
2121
+ Decoder.prototype.lookU16 = function () {
2090
2122
  return this.view.getUint16(this.pos);
2091
- }
2092
- lookU32() {
2123
+ };
2124
+ Decoder.prototype.lookU32 = function () {
2093
2125
  return this.view.getUint32(this.pos);
2094
- }
2095
- readU8() {
2096
- const value = this.view.getUint8(this.pos);
2126
+ };
2127
+ Decoder.prototype.readU8 = function () {
2128
+ var value = this.view.getUint8(this.pos);
2097
2129
  this.pos++;
2098
2130
  return value;
2099
- }
2100
- readI8() {
2101
- const value = this.view.getInt8(this.pos);
2131
+ };
2132
+ Decoder.prototype.readI8 = function () {
2133
+ var value = this.view.getInt8(this.pos);
2102
2134
  this.pos++;
2103
2135
  return value;
2104
- }
2105
- readU16() {
2106
- const value = this.view.getUint16(this.pos);
2136
+ };
2137
+ Decoder.prototype.readU16 = function () {
2138
+ var value = this.view.getUint16(this.pos);
2107
2139
  this.pos += 2;
2108
2140
  return value;
2109
- }
2110
- readI16() {
2111
- const value = this.view.getInt16(this.pos);
2141
+ };
2142
+ Decoder.prototype.readI16 = function () {
2143
+ var value = this.view.getInt16(this.pos);
2112
2144
  this.pos += 2;
2113
2145
  return value;
2114
- }
2115
- readU32() {
2116
- const value = this.view.getUint32(this.pos);
2146
+ };
2147
+ Decoder.prototype.readU32 = function () {
2148
+ var value = this.view.getUint32(this.pos);
2117
2149
  this.pos += 4;
2118
2150
  return value;
2119
- }
2120
- readI32() {
2121
- const value = this.view.getInt32(this.pos);
2151
+ };
2152
+ Decoder.prototype.readI32 = function () {
2153
+ var value = this.view.getInt32(this.pos);
2122
2154
  this.pos += 4;
2123
2155
  return value;
2124
- }
2125
- readU64() {
2126
- const value = getUint64(this.view, this.pos);
2127
- this.pos += 8;
2128
- return value;
2129
- }
2130
- readI64() {
2131
- const value = getInt64(this.view, this.pos);
2132
- this.pos += 8;
2133
- return value;
2134
- }
2135
- readU64AsBigInt() {
2136
- const value = this.view.getBigUint64(this.pos);
2156
+ };
2157
+ Decoder.prototype.readU64 = function () {
2158
+ var value = getUint64(this.view, this.pos);
2137
2159
  this.pos += 8;
2138
2160
  return value;
2139
- }
2140
- readI64AsBigInt() {
2141
- const value = this.view.getBigInt64(this.pos);
2161
+ };
2162
+ Decoder.prototype.readI64 = function () {
2163
+ var value = getInt64(this.view, this.pos);
2142
2164
  this.pos += 8;
2143
2165
  return value;
2144
- }
2145
- readF32() {
2146
- const value = this.view.getFloat32(this.pos);
2166
+ };
2167
+ Decoder.prototype.readF32 = function () {
2168
+ var value = this.view.getFloat32(this.pos);
2147
2169
  this.pos += 4;
2148
2170
  return value;
2149
- }
2150
- readF64() {
2151
- const value = this.view.getFloat64(this.pos);
2171
+ };
2172
+ Decoder.prototype.readF64 = function () {
2173
+ var value = this.view.getFloat64(this.pos);
2152
2174
  this.pos += 8;
2153
2175
  return value;
2154
- }
2155
- }
2176
+ };
2177
+ return Decoder;
2178
+ }());
2156
2179
 
2180
+ var defaultDecodeOptions = {};
2157
2181
  /**
2158
2182
  * It decodes a single MessagePack object in a buffer.
2159
2183
  *
2160
2184
  * This is a synchronous decoding function.
2161
- * See other variants for asynchronous decoding: {@link decodeAsync}, {@link decodeMultiStream}, or {@link decodeArrayStream}.
2185
+ * See other variants for asynchronous decoding: {@link decodeAsync()}, {@link decodeStream()}, or {@link decodeArrayStream()}.
2162
2186
  *
2163
2187
  * @throws {@link RangeError} if the buffer is incomplete, including the case where the buffer is empty.
2164
2188
  * @throws {@link DecodeError} if the buffer contains invalid data.
2165
2189
  */
2166
2190
  function decode(buffer, options) {
2167
- const decoder = new Decoder(options);
2191
+ if (options === void 0) { options = defaultDecodeOptions; }
2192
+ var decoder = new Decoder(options.extensionCodec, options.context, options.maxStrLength, options.maxBinLength, options.maxArrayLength, options.maxMapLength, options.maxExtLength);
2168
2193
  return decoder.decode(buffer);
2169
2194
  }
2170
2195