msgpackr 1.5.6 → 1.6.1

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.js CHANGED
@@ -172,11 +172,9 @@
172
172
  referenceMap = null;
173
173
  } else if (position > srcEnd) {
174
174
  // over read
175
- let error = new Error('Unexpected end of MessagePack data');
176
- error.incomplete = true;
177
- throw error
175
+ throw new Error('Unexpected end of MessagePack data')
178
176
  } else if (!sequentialMode) {
179
- throw new Error('Data read, but end of buffer not reached')
177
+ throw new Error('Data read, but end of buffer not reached ' + JSON.stringify(result).slice(0, 100))
180
178
  }
181
179
  // else more to read, but we are reading sequentially, so don't clear source yet
182
180
  return result
@@ -184,7 +182,7 @@
184
182
  if (currentStructures.restoreStructures)
185
183
  restoreStructures();
186
184
  clearSource();
187
- if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {
185
+ if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer') || position > srcEnd) {
188
186
  error.incomplete = true;
189
187
  }
190
188
  throw error
@@ -269,7 +267,10 @@
269
267
  case 0xc3: return true
270
268
  case 0xc4:
271
269
  // bin 8
272
- return readBin(src[position++])
270
+ value = src[position++];
271
+ if (value === undefined)
272
+ throw new Error('Unexpected end of buffer')
273
+ return readBin(value)
273
274
  case 0xc5:
274
275
  // bin 16
275
276
  value = dataView.getUint16(position);
@@ -578,12 +579,12 @@
578
579
  for (let i = 0; i < length; i++) {
579
580
  const byte = src[position++];
580
581
  if ((byte & 0x80) > 0) {
581
- position = start;
582
- return
583
- }
584
- bytes[i] = byte;
585
- }
586
- return fromCharCode.apply(String, bytes)
582
+ position = start;
583
+ return
584
+ }
585
+ bytes[i] = byte;
586
+ }
587
+ return fromCharCode.apply(String, bytes)
587
588
  }
588
589
  function shortStringInJS(length) {
589
590
  if (length < 4) {
@@ -850,13 +851,12 @@
850
851
  structure.read = createStructureReader(structure, firstByte);
851
852
  return structure.read()
852
853
  };
853
- var glbl = typeof self == 'object' ? self : global;
854
854
  currentExtensions[0] = () => {}; // notepack defines extension 0 to mean undefined, so use that as the default here
855
855
  currentExtensions[0].noBuffer = true;
856
856
 
857
857
  currentExtensions[0x65] = () => {
858
858
  let data = read();
859
- return (glbl[data[0]] || Error)(data[1])
859
+ return (globalThis[data[0]] || Error)(data[1])
860
860
  };
861
861
 
862
862
  currentExtensions[0x69] = (data) => {
@@ -900,7 +900,7 @@
900
900
  if (!typedArrayName)
901
901
  throw new Error('Could not find typed array for code ' + typeCode)
902
902
  // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
903
- return new glbl[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)
903
+ return new globalThis[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)
904
904
  };
905
905
  currentExtensions[0x78] = () => {
906
906
  let data = read();
@@ -1011,7 +1011,8 @@
1011
1011
  } catch (error) {}
1012
1012
  let extensions, extensionClasses;
1013
1013
  const hasNodeBuffer = typeof Buffer !== 'undefined';
1014
- const ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array;
1014
+ const ByteArrayAllocate = hasNodeBuffer ?
1015
+ function(length) { return Buffer.allocUnsafeSlow(length) } : Uint8Array;
1015
1016
  const ByteArray = hasNodeBuffer ? Buffer : Uint8Array;
1016
1017
  const MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000;
1017
1018
  let target, keysTarget;
@@ -1031,8 +1032,8 @@
1031
1032
  let structures;
1032
1033
  let referenceMap;
1033
1034
  let lastSharedStructuresLength = 0;
1034
- let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {
1035
- return target.utf8Write(string, position, maxBytes)
1035
+ let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position) {
1036
+ return target.utf8Write(string, position, 0xffffffff)
1036
1037
  } : (textEncoder && textEncoder.encodeInto) ?
1037
1038
  function(string, position) {
1038
1039
  return textEncoder.encodeInto(string, target.subarray(position)).written
@@ -1261,7 +1262,7 @@
1261
1262
  }
1262
1263
  length = strPosition - position$1 - headerSize;
1263
1264
  } else {
1264
- length = encodeUtf8(value, position$1 + headerSize, maxBytes);
1265
+ length = encodeUtf8(value, position$1 + headerSize);
1265
1266
  }
1266
1267
 
1267
1268
  if (length < 0x20) {
@@ -1600,6 +1601,7 @@
1600
1601
  newSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12;
1601
1602
  let newBuffer = new ByteArrayAllocate(newSize);
1602
1603
  targetView = new DataView(newBuffer.buffer, 0, newSize);
1604
+ end = Math.min(end, target.length);
1603
1605
  if (target.copy)
1604
1606
  target.copy(newBuffer, 0, start, end);
1605
1607
  else
@@ -1712,7 +1714,7 @@
1712
1714
  target[position++] = 0xd6;
1713
1715
  target[position++] = 0xff;
1714
1716
  targetView.setUint32(position, seconds);
1715
- } else if (seconds > 0 && seconds < 0x400000000) {
1717
+ } else if (seconds > 0 && seconds < 0x100000000) {
1716
1718
  // Timestamp 64
1717
1719
  let { target, targetView, position} = allocateForWrite(10);
1718
1720
  target[position++] = 0xd7;
package/dist/index.min.js CHANGED
@@ -1,83 +1,82 @@
1
- (function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e=e||self,t(e.msgpackr={}))})(this,function(e){"use strict";var t=Math.floor;function n(){try{if(!D.trusted&&!Y){let e=M.sharedLength||0;e<M.length&&(M.length=e)}let e=r();if(B&&(// bundled strings to skip past
2
- P=B.postBundlePosition),P==E)M.restoreStructures&&s(),M=null,R=null,C&&(C=null);else if(P>E){// over read
3
- let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}else if(!Y)throw new Error("Data read, but end of buffer not reached");// else more to read, but we are reading sequentially, so don't clear source yet
4
- return e}catch(e){throw M.restoreStructures&&s(),m(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function s(){for(let e in M.restoreStructures)M[e]=M.restoreStructures[e];M.restoreStructures=null}function r(){let e=R[P++];if(160>e){if(!(128>e)){if(!(144>e)){e-=144;let t=Array(e);for(let n=0;n<e;n++)t[n]=r();return t}if(e-=128,D.mapsAsObjects){let t={};for(let n=0;n<e;n++)t[h()]=r();return t}else{let t=new Map;for(let n=0;n<e;n++)t.set(r(),r());return t}}else if(64>e)return e;else{let t=M[63&e]||D.getStructures&&o()[63&e];return t?(t.read||(t.read=i(t,63&e)),t.read()):e}}else if(192>e){// fixstr
5
- let t=e-160;if(j>=P)return _.slice(P-F,(P+=t)-F);if(0==j&&140>E){// for small blocks, avoiding the overhead of the extract call is helpful
1
+ (function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e=e||self,t(e.msgpackr={}))})(this,function(e){'use strict';var t=Math.floor;function n(){try{if(!D.trusted&&!Y){let e=M.sharedLength||0;e<M.length&&(M.length=e)}let e=r();if(B&&(// bundled strings to skip past
2
+ P=B.postBundlePosition),P==E)M.restoreStructures&&s(),M=null,R=null,C&&(C=null);else if(P>E)// over read
3
+ throw new Error("Unexpected end of MessagePack data");else if(!Y)throw new Error("Data read, but end of buffer not reached "+JSON.stringify(e).slice(0,100));// else more to read, but we are reading sequentially, so don't clear source yet
4
+ return e}catch(e){throw M.restoreStructures&&s(),m(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer")||P>E)&&(e.incomplete=!0),e}}function s(){for(let e in M.restoreStructures)M[e]=M.restoreStructures[e];M.restoreStructures=null}function r(){let e=R[P++];if(160>e){if(!(128>e)){if(!(144>e)){e-=144;let t=Array(e);for(let n=0;n<e;n++)t[n]=r();return t}if(e-=128,D.mapsAsObjects){let t={};for(let n=0;n<e;n++)t[h()]=r();return t}else{let t=new Map;for(let n=0;n<e;n++)t.set(r(),r());return t}}else if(64>e)return e;else{let t=M[63&e]||D.getStructures&&o()[63&e];return t?(t.read||(t.read=i(t,63&e)),t.read()):e}}else if(192>e){// fixstr
5
+ let t=e-160;if(v>=P)return _.slice(P-F,(P+=t)-F);if(0==v&&140>E){// for small blocks, avoiding the overhead of the extract call is helpful
6
6
  let e=16>t?g(t):c(t);if(null!=e)return e}return H(t)}else{let t;switch(e){case 192:return null;case 193:return B?(t=r(),0<t?B[1].slice(B.position1,B.position1+=t):B[0].slice(B.position0,B.position0-=t)):W;// "never-used", return special object to denote that
7
- case 194:return!1;case 195:return!0;case 196:// bin 8
8
- return l(R[P++]);case 197:return t=T.getUint16(P),P+=2,l(t);case 198:return t=T.getUint32(P),P+=4,l(t);case 199:// ext 8
7
+ case 194:return!1;case 195:return!0;case 196:if(t=R[P++],void 0===t)throw new Error("Unexpected end of buffer");return p(t);case 197:return t=T.getUint16(P),P+=2,p(t);case 198:return t=T.getUint32(P),P+=4,p(t);case 199:// ext 8
9
8
  return f(R[P++]);case 200:return t=T.getUint16(P),P+=2,f(t);case 201:return t=T.getUint32(P),P+=4,f(t);case 202:if(t=T.getFloat32(P),2<D.useFloat32){// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
10
- let e=re[(127&R[P])<<1|R[P+1]>>7];return P+=4,(e*t+(0<t?.5:-.5)>>0)/e}return P+=4,t;case 203:return t=T.getFloat64(P),P+=8,t;// uint handlers
9
+ let e=se[(127&R[P])<<1|R[P+1]>>7];return P+=4,(e*t+(0<t?.5:-.5)>>0)/e}return P+=4,t;case 203:return t=T.getFloat64(P),P+=8,t;// uint handlers
11
10
  case 204:return R[P++];case 205:return t=T.getUint16(P),P+=2,t;case 206:return t=T.getUint32(P),P+=4,t;case 207:return D.int64AsNumber?(t=4294967296*T.getUint32(P),t+=T.getUint32(P+4)):t=T.getBigUint64(P),P+=8,t;// int handlers
12
- case 208:return T.getInt8(P++);case 209:return t=T.getInt16(P),P+=2,t;case 210:return t=T.getInt32(P),P+=4,t;case 211:return D.int64AsNumber?(t=4294967296*T.getInt32(P),t+=T.getUint32(P+4)):t=T.getBigInt64(P),P+=8,t;case 212:if(t=R[P++],114==t)return ee(63&R[P++]);else{let e=v[t];if(e)return e.read?(P++,e.read(r())):e.noBuffer?(P++,e()):e(R.subarray(P,++P));throw new Error("Unknown extension "+t)}case 213:return t=R[P],114==t?(P++,ee(63&R[P++],R[P++])):f(2);case 214:// fixext 4
11
+ case 208:return T.getInt8(P++);case 209:return t=T.getInt16(P),P+=2,t;case 210:return t=T.getInt32(P),P+=4,t;case 211:return D.int64AsNumber?(t=4294967296*T.getInt32(P),t+=T.getUint32(P+4)):t=T.getBigInt64(P),P+=8,t;case 212:if(t=R[P++],114==t)return ee(63&R[P++]);else{let e=j[t];if(e)return e.read?(P++,e.read(r())):e.noBuffer?(P++,e()):e(R.subarray(P,++P));throw new Error("Unknown extension "+t)}case 213:return t=R[P],114==t?(P++,ee(63&R[P++],R[P++])):f(2);case 214:// fixext 4
13
12
  return f(4);case 215:// fixext 8
14
13
  return f(8);case 216:// fixext 16
15
- return f(16);case 217:return t=R[P++],j>=P?_.slice(P-F,(P+=t)-F):J(t);case 218:return t=T.getUint16(P),P+=2,j>=P?_.slice(P-F,(P+=t)-F):K(t);case 219:return t=T.getUint32(P),P+=4,j>=P?_.slice(P-F,(P+=t)-F):Q(t);case 220:return t=T.getUint16(P),P+=2,u(t);case 221:return t=T.getUint32(P),P+=4,u(t);case 222:return t=T.getUint16(P),P+=2,d(t);case 223:return t=T.getUint32(P),P+=4,d(t);default:// negative int
14
+ return f(16);case 217:return t=R[P++],v>=P?_.slice(P-F,(P+=t)-F):J(t);case 218:return t=T.getUint16(P),P+=2,v>=P?_.slice(P-F,(P+=t)-F):K(t);case 219:return t=T.getUint32(P),P+=4,v>=P?_.slice(P-F,(P+=t)-F):Q(t);case 220:return t=T.getUint16(P),P+=2,u(t);case 221:return t=T.getUint32(P),P+=4,u(t);case 222:return t=T.getUint16(P),P+=2,d(t);case 223:return t=T.getUint32(P),P+=4,d(t);default:// negative int
16
15
  if(224<=e)return e-256;if(void 0===e){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+e);}}}function i(e,t){function n(){// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function
17
16
  if(n.count++>z){let n=e.read=new Function("r","return function(){return {"+e.map(e=>q.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}}")(r);return 0===e.highByte&&(e.read=G(t,e.read)),n();// second byte is already read, if there is one so immediately read object
18
- }let s={};for(let t,n=0,i=e.length;n<i;n++)t=e[n],s[t]=r();return s}return n.count=0,0===e.highByte?G(t,n):n}function o(){let e=y(()=>(R=null,D.getStructures()));return M=D._mergeStructures(e,M)}function a(e){let t;if(16>e&&(t=g(e)))return t;if(64<e&&x)return x.decode(R.subarray(P,P+=e));const n=P+e,s=[];for(t="";P<n;){const e=R[P++];if(0==(128&e))s.push(e);else if(192==(224&e)){// 2 bytes
17
+ }let s={};for(let t,n=0,i=e.length;n<i;n++)t=e[n],s[t]=r();return s}return n.count=0,0===e.highByte?G(t,n):n}function o(){let e=y(()=>(R=null,D.getStructures()));return M=D._mergeStructures(e,M)}function a(e){let t;if(16>e&&(t=g(e)))return t;if(64<e&&L)return L.decode(R.subarray(P,P+=e));const n=P+e,s=[];for(t="";P<n;){const e=R[P++];if(0==(128&e))s.push(e);else if(192==(224&e)){// 2 bytes
19
18
  const t=63&R[P++];s.push((31&e)<<6|t)}else if(224==(240&e)){// 3 bytes
20
19
  const t=63&R[P++],n=63&R[P++];s.push((31&e)<<12|t<<6|n)}else if(240==(248&e)){// 4 bytes
21
- const t=63&R[P++],n=63&R[P++],r=63&R[P++];let i=(7&e)<<18|t<<12|n<<6|r;65535<i&&(i-=65536,s.push(55296|1023&i>>>10),i=56320|1023&i),s.push(i)}else s.push(e);4096<=s.length&&(t+=X.apply(String,s),s.length=0)}return 0<s.length&&(t+=X.apply(String,s)),t}function u(e){let t=Array(e);for(let n=0;n<e;n++)t[n]=r();return t}function d(e){if(D.mapsAsObjects){let t={};for(let n=0;n<e;n++)t[h()]=r();return t}else{let t=new Map;for(let n=0;n<e;n++)t.set(r(),r());return t}}function c(e){let t=P,n=Array(e);for(let s=0;s<e;s++){const e=R[P++];if(0<(128&e))return void(P=t);n[s]=e}return X.apply(String,n)}function g(t){if(4>t){if(!(2>t)){let e=R[P++],n=R[P++];if(0<(128&e)||0<(128&n))return void(P-=2);if(3>t)return X(e,n);let s=R[P++];return 0<(128&s)?void(P-=3):X(e,n,s)}if(0===t)return"";else{let e=R[P++];return 1<(128&e)?void(P-=1):X(e)}}else{let s=R[P++],r=R[P++],a=R[P++],u=R[P++];if(0<(128&s)||0<(128&r)||0<(128&a)||0<(128&u))return void(P-=4);if(6>t){if(4===t)return X(s,r,a,u);else{let t=R[P++];return 0<(128&t)?void(P-=5):X(s,r,a,u,t)}}else if(8>t){let n=R[P++],e=R[P++];if(0<(128&n)||0<(128&e))return void(P-=6);if(7>t)return X(s,r,a,u,n,e);let i=R[P++];return 0<(128&i)?void(P-=7):X(s,r,a,u,n,e,i)}else{let d=R[P++],e=R[P++],c=R[P++],g=R[P++];if(0<(128&d)||0<(128&e)||0<(128&c)||0<(128&g))return void(P-=8);if(10>t){if(8===t)return X(s,r,a,u,d,e,c,g);else{let t=R[P++];return 0<(128&t)?void(P-=9):X(s,r,a,u,d,e,c,g,t)}}else if(12>t){let n=R[P++],i=R[P++];if(0<(128&n)||0<(128&i))return void(P-=10);if(11>t)return X(s,r,a,u,d,e,c,g,n,i);let o=R[P++];return 0<(128&o)?void(P-=11):X(s,r,a,u,d,e,c,g,n,i,o)}else{let p=R[P++],i=R[P++],f=R[P++],h=R[P++];if(0<(128&p)||0<(128&i)||0<(128&f)||0<(128&h))return void(P-=12);if(!(14>t)){let l=R[P++],y=R[P++];if(0<(128&l)||0<(128&y))return void(P-=14);if(15>t)return X(s,r,a,u,d,e,c,g,p,i,f,h,l,y);let n=R[P++];return 0<(128&n)?void(P-=15):X(s,r,a,u,d,e,c,g,p,i,f,h,l,y,n)}if(12===t)return X(s,r,a,u,d,e,c,g,p,i,f,h);else{let t=R[P++];return 0<(128&t)?void(P-=13):X(s,r,a,u,d,e,c,g,p,i,f,h,t)}}}}}function p(){let e,t=R[P++];if(192>t)// fixstr
22
- e=t-160;else switch(t){case 217:e=R[P++];break;case 218:e=T.getUint16(P),P+=2;break;case 219:e=T.getUint32(P),P+=4;break;default:throw new Error("Expected string");}return a(e)}function l(e){return D.copyBuffers?// specifically use the copying slice (not the node one)
23
- Uint8Array.prototype.slice.call(R,P,P+=e):R.subarray(P,P+=e)}function f(e){let t=R[P++];if(v[t])return v[t](R.subarray(P,P+=e));throw new Error("Unknown extension type "+t)}function h(){let e=R[P++];if(160<=e&&192>e){if(e-=160,j>=P)// if it has been extracted, must use it (and faster anyway)
24
- return _.slice(P-F,(P+=e)-F);if(!(0==j&&180>E))return H(e)}else return P--,r();let t,n=4095&(e<<5^(1<e?T.getUint16(P):0<e?R[P]:0)),s=Z[n],o=P,a=P+e-3,u=0;if(s&&s.bytes==e){for(;o<a;){if(t=T.getUint32(o),t!=s[u++]){o=1879048192;break}o+=4}for(a+=3;o<a;)if(t=R[o++],t!=s[u++]){o=1879048192;break}if(o===a)return P=o,s.string;a-=3,o=P}for(s=[],Z[n]=s,s.bytes=e;o<a;)t=T.getUint32(o),s.push(t),o+=4;for(a+=3;o<a;)t=R[o++],s.push(t);// for small blocks, avoiding the overhead of the extract call is helpful
20
+ const t=63&R[P++],n=63&R[P++],r=63&R[P++];let i=(7&e)<<18|t<<12|n<<6|r;65535<i&&(i-=65536,s.push(55296|1023&i>>>10),i=56320|1023&i),s.push(i)}else s.push(e);4096<=s.length&&(t+=X.apply(String,s),s.length=0)}return 0<s.length&&(t+=X.apply(String,s)),t}function u(e){let t=Array(e);for(let n=0;n<e;n++)t[n]=r();return t}function d(e){if(D.mapsAsObjects){let t={};for(let n=0;n<e;n++)t[h()]=r();return t}else{let t=new Map;for(let n=0;n<e;n++)t.set(r(),r());return t}}function c(e){let t=P,n=Array(e);for(let s=0;s<e;s++){const e=R[P++];if(0<(128&e))return void(P=t);n[s]=e}return X.apply(String,n)}function g(t){if(4>t){if(!(2>t)){let e=R[P++],n=R[P++];if(0<(128&e)||0<(128&n))return void(P-=2);if(3>t)return X(e,n);let s=R[P++];return 0<(128&s)?void(P-=3):X(e,n,s)}if(0===t)return"";else{let e=R[P++];return 1<(128&e)?void(P-=1):X(e)}}else{let s=R[P++],r=R[P++],a=R[P++],u=R[P++];if(0<(128&s)||0<(128&r)||0<(128&a)||0<(128&u))return void(P-=4);if(6>t){if(4===t)return X(s,r,a,u);else{let t=R[P++];return 0<(128&t)?void(P-=5):X(s,r,a,u,t)}}else if(8>t){let n=R[P++],e=R[P++];if(0<(128&n)||0<(128&e))return void(P-=6);if(7>t)return X(s,r,a,u,n,e);let i=R[P++];return 0<(128&i)?void(P-=7):X(s,r,a,u,n,e,i)}else{let d=R[P++],e=R[P++],c=R[P++],g=R[P++];if(0<(128&d)||0<(128&e)||0<(128&c)||0<(128&g))return void(P-=8);if(10>t){if(8===t)return X(s,r,a,u,d,e,c,g);else{let t=R[P++];return 0<(128&t)?void(P-=9):X(s,r,a,u,d,e,c,g,t)}}else if(12>t){let n=R[P++],i=R[P++];if(0<(128&n)||0<(128&i))return void(P-=10);if(11>t)return X(s,r,a,u,d,e,c,g,n,i);let o=R[P++];return 0<(128&o)?void(P-=11):X(s,r,a,u,d,e,c,g,n,i,o)}else{let p=R[P++],i=R[P++],f=R[P++],h=R[P++];if(0<(128&p)||0<(128&i)||0<(128&f)||0<(128&h))return void(P-=12);if(!(14>t)){let l=R[P++],y=R[P++];if(0<(128&l)||0<(128&y))return void(P-=14);if(15>t)return X(s,r,a,u,d,e,c,g,p,i,f,h,l,y);let n=R[P++];return 0<(128&n)?void(P-=15):X(s,r,a,u,d,e,c,g,p,i,f,h,l,y,n)}if(12===t)return X(s,r,a,u,d,e,c,g,p,i,f,h);else{let t=R[P++];return 0<(128&t)?void(P-=13):X(s,r,a,u,d,e,c,g,p,i,f,h,t)}}}}}function l(){let e,t=R[P++];if(192>t)// fixstr
21
+ e=t-160;else switch(t){case 217:e=R[P++];break;case 218:e=T.getUint16(P),P+=2;break;case 219:e=T.getUint32(P),P+=4;break;default:throw new Error("Expected string");}return a(e)}function p(e){return D.copyBuffers?// specifically use the copying slice (not the node one)
22
+ Uint8Array.prototype.slice.call(R,P,P+=e):R.subarray(P,P+=e)}function f(e){let t=R[P++];if(j[t])return j[t](R.subarray(P,P+=e));throw new Error("Unknown extension type "+t)}function h(){let e=R[P++];if(160<=e&&192>e){if(e-=160,v>=P)// if it has been extracted, must use it (and faster anyway)
23
+ return _.slice(P-F,(P+=e)-F);if(!(0==v&&180>E))return H(e)}else return P--,r();let t,n=4095&(e<<5^(1<e?T.getUint16(P):0<e?R[P]:0)),s=Z[n],o=P,a=P+e-3,u=0;if(s&&s.bytes==e){for(;o<a;){if(t=T.getUint32(o),t!=s[u++]){o=1879048192;break}o+=4}for(a+=3;o<a;)if(t=R[o++],t!=s[u++]){o=1879048192;break}if(o===a)return P=o,s.string;a-=3,o=P}for(s=[],Z[n]=s,s.bytes=e;o<a;)t=T.getUint32(o),s.push(t),o+=4;for(a+=3;o<a;)t=R[o++],s.push(t);// for small blocks, avoiding the overhead of the extract call is helpful
25
24
  let d=16>e?g(e):c(e);return null==d?s.string=H(e):s.string=d}// the registration of the record definition extension (as "r")
26
25
  // notepack defines extension 0 to mean undefined, so use that as the default here
27
26
  // registration of bulk record definition?
28
27
  // currentExtensions[0x52] = () =>
29
- function y(e){let t=E,n=P,s=F,r=j,i=_,o=C,a=B,u=new Uint8Array(R.slice(0,E)),d=M,c=M.slice(0,M.length),g=D,p=Y,l=e();return E=t,P=n,F=s,j=r,_=i,C=o,B=a,R=u,Y=p,M=d,M.splice(0,M.length,...c),D=g,T=new DataView(R.buffer,R.byteOffset,R.byteLength),l}function m(){R=null,C=null,M=null}function b(e){v[e.type]=e.unpack?e.unpack:e}function k(e,t,n){let s=e.byteLength;if(256>s+1){var{target:r,position:i}=n(4+s);r[i++]=199,r[i++]=s+1}else if(65536>s+1){var{target:r,position:i}=n(5+s);r[i++]=200,r[i++]=s+1>>8,r[i++]=255&s+1}else{var{target:r,position:i,targetView:o}=n(7+s);// plus one for the type byte
28
+ function y(e){let t=E,n=P,s=F,r=v,i=_,o=C,a=B,u=new Uint8Array(R.slice(0,E)),d=M,c=M.slice(0,M.length),g=D,l=Y,p=e();return E=t,P=n,F=s,v=r,_=i,C=o,B=a,R=u,Y=l,M=d,M.splice(0,M.length,...c),D=g,T=new DataView(R.buffer,R.byteOffset,R.byteLength),p}function m(){R=null,C=null,M=null}function b(e){j[e.type]=e.unpack?e.unpack:e}function U(e,t,n){let s=e.byteLength;if(256>s+1){var{target:r,position:i}=n(4+s);r[i++]=199,r[i++]=s+1}else if(65536>s+1){var{target:r,position:i}=n(5+s);r[i++]=200,r[i++]=s+1>>8,r[i++]=255&s+1}else{var{target:r,position:i,targetView:o}=n(7+s);// plus one for the type byte
30
29
  r[i++]=201,o.setUint32(i,s+1),i+=4}// "t" for typed array
31
- r[i++]=116,r[i++]=t,r.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i)}function U(e,t){let n=e.byteLength;var s,r;if(256>n){var{target:s,position:r}=t(n+2);s[r++]=196,s[r++]=n}else if(65536>n){var{target:s,position:r}=t(n+3);s[r++]=197,s[r++]=n>>8,s[r++]=255&n}else{var{target:s,position:r,targetView:i}=t(n+5);s[r++]=198,i.setUint32(r,n),r+=4}s.set(e,r)}function I(e,t,n,s){let r=e.length;return 1===r?t[n++]=212:2===r?t[n++]=213:4===r?t[n++]=214:8===r?t[n++]=215:16===r?t[n++]=216:256>r?(t[n++]=199,t[n++]=r):65536>r?(t[n++]=200,t[n++]=r>>8,t[n++]=255&r):(t[n++]=201,t[n++]=r>>24,t[n++]=255&r>>16,t[n++]=255&r>>8,t[n++]=255&r),t[n++]=s,t.set(e,n),n+=r,n}function S(e,t){// insert the ids that need to be referenced for structured clones
30
+ r[i++]=116,r[i++]=t,r.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i)}function k(e,t){let n=e.byteLength;var s,r;if(256>n){var{target:s,position:r}=t(n+2);s[r++]=196,s[r++]=n}else if(65536>n){var{target:s,position:r}=t(n+3);s[r++]=197,s[r++]=n>>8,s[r++]=255&n}else{var{target:s,position:r,targetView:i}=t(n+5);s[r++]=198,i.setUint32(r,n),r+=4}s.set(e,r)}function I(e,t,n,s){let r=e.length;return 1===r?t[n++]=212:2===r?t[n++]=213:4===r?t[n++]=214:8===r?t[n++]=215:16===r?t[n++]=216:256>r?(t[n++]=199,t[n++]=r):65536>r?(t[n++]=200,t[n++]=r>>8,t[n++]=255&r):(t[n++]=201,t[n++]=r>>24,t[n++]=255&r>>16,t[n++]=255&r>>8,t[n++]=255&r),t[n++]=s,t.set(e,n),n+=r,n}function S(e,t){// insert the ids that need to be referenced for structured clones
32
31
  let n,s=6*t.length,r=e.length-s;for(t.sort((e,t)=>e.offset>t.offset?1:-1);n=t.pop();){let t=n.offset,i=n.id;e.copyWithin(t+s,t,r),s-=6;let o=t+s;// 'i'
33
- e[o++]=214,e[o++]=105,e[o++]=i>>24,e[o++]=255&i>>16,e[o++]=255&i>>8,e[o++]=255&i,r=t}return e}function O(e,t){Ie.setUint32(Ae.position+e,Oe-Ae.position-e);let n=Ae;Ae=null,t(n[0]),t(n[1])}function A(e){if(e.Class){if(!e.pack&&!e.write)throw new Error("Extension has no pack or write function");if(e.pack&&!e.type)throw new Error("Extension has no type (numeric code to identify the extension)");fe.unshift(e.Class),le.unshift(e)}b(e)}function*w(e,t){const n=new Le(t);for(const s of e)yield n.pack(s)}async function*L(e,t){const n=new Le(t);for await(const s of e)yield n.pack(s)}/**
32
+ e[o++]=214,e[o++]=105,e[o++]=i>>24,e[o++]=255&i>>16,e[o++]=255&i>>8,e[o++]=255&i,r=t}return e}function O(e,t){ke.setUint32(Oe.position+e,Se-Oe.position-e);let n=Oe;Oe=null,t(n[0]),t(n[1])}function A(e){if(e.Class){if(!e.pack&&!e.write)throw new Error("Extension has no pack or write function");if(e.pack&&!e.type)throw new Error("Extension has no type (numeric code to identify the extension)");pe.unshift(e.Class),le.unshift(e)}b(e)}function*w(e,t){const n=new we(t);for(const s of e)yield n.pack(s)}async function*x(e,t){const n=new we(t);for await(const s of e)yield n.pack(s)}/**
34
33
  * Given an Iterable/Iterator input which yields buffers, returns an IterableIterator which yields sync decoded objects
35
34
  * Or, given an Async Iterable/Iterator which yields promises resolving in buffers, returns an AsyncIterableIterator.
36
35
  * @param {Iterable|Iterator|AsyncIterable|AsyncIterableIterator} bufferIterator
37
36
  * @param {object} [options] - unpackr options
38
37
  * @returns {IterableIterator|Promise.<AsyncIterableIterator}
39
- */var x;try{x=new TextDecoder}catch(e){}var R,E,M,_,B,C,T,P=0,D={},F=0,j=0,v=[],N={useRecords:!1,mapsAsObjects:!0};class V{}const W=new V;W.name="MessagePack 0xC1";var Y=!1,z=2;try{new Function("")}catch(e){// if eval variants are not supported, do not create inline object readers ever
38
+ */var L;try{L=new TextDecoder}catch(e){}var R,E,M,_,B,C,T,P=0,D={},F=0,v=0,j=[],N={useRecords:!1,mapsAsObjects:!0};class V{}const W=new V;W.name="MessagePack 0xC1";var Y=!1,z=2;try{new Function("")}catch(e){// if eval variants are not supported, do not create inline object readers ever
40
39
  z=1/0}class ${constructor(e){e&&(!1===e.useRecords&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0)),Object.assign(this,e)}unpack(e,t){if(R)// re-entrant execution, save the state and restore it after we do this unpack
41
- return y(()=>(m(),this?this.unpack(e,t):$.prototype.unpack.call(N,e,t)));E=-1<t?t:e.length,P=0,j=0,_=null,B=null,R=e;// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend
40
+ return y(()=>(m(),this?this.unpack(e,t):$.prototype.unpack.call(N,e,t)));E=-1<t?t:e.length,P=0,v=0,_=null,B=null,R=e;// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend
42
41
  // technique for getting data from a database where it can be copied into an existing buffer instead of creating
43
42
  // new ones
44
- try{T=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(R=null,e instanceof Uint8Array)throw t;throw new Error("Source must be a Uint8Array or Buffer but was a "+(e&&"object"==typeof e?e.constructor.name:typeof e))}if(this instanceof $){if(D=this,this.structures)return M=this.structures,n();(!M||0<M.length)&&(M=[])}else D=N,(!M||0<M.length)&&(M=[]);return n()}unpackMultiple(e,t){let s,r=0;try{Y=!0;let i=e.length,o=this?this.unpack(e,i):ie.unpack(e,i);if(t){for(t(o);P<i;)if(r=P,!1===t(n()))return;}else{for(s=[o];P<i;)r=P,s.push(n());return s}}catch(e){throw e.lastPosition=r,e.values=s,e}finally{Y=!1,m()}}_mergeStructures(e,t){e=e||[];for(let n,s=0,r=e.length;s<r;s++)n=e[s],n&&(n.isShared=!0,32<=s&&(n.highByte=s-32>>5));for(let n in e.sharedLength=e.length,t||[])if(0<=n){let s=e[n],r=t[n];r&&(s&&((e.restoreStructures||(e.restoreStructures=[]))[n]=s),e[n]=r)}return this.structures=e}decode(e,t){return this.unpack(e,t)}}const q=/^[a-zA-Z_$][a-zA-Z\d_$]*$/,G=(e,t)=>function(){let n=R[P++];if(0===n)return t();let s=32>e?-(e+(n<<5)):e+(n<<5),r=M[s]||o()[s];if(!r)throw new Error("Record id is not defined for "+s);return r.read||(r.read=i(r,e)),r.read()};var H=a,J=a,K=a,Q=a;var X=String.fromCharCode,Z=Array(4096);const ee=(e,t)=>{var n=r();let s=e;void 0!==t&&(e=32>e?-((t<<5)+e):(t<<5)+e,n.highByte=t);let o=M[e];return o&&o.isShared&&((M.restoreStructures||(M.restoreStructures=[]))[e]=o),M[e]=n,n.read=i(n,s),n.read()};var te="object"==typeof self?self:global;v[0]=()=>{},v[0].noBuffer=!0,v[101]=()=>{let e=r();return(te[e[0]]||Error)(e[1])},v[105]=()=>{// id extension (for structured clones)
43
+ try{T=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(R=null,e instanceof Uint8Array)throw t;throw new Error("Source must be a Uint8Array or Buffer but was a "+(e&&"object"==typeof e?e.constructor.name:typeof e))}if(this instanceof $){if(D=this,this.structures)return M=this.structures,n();(!M||0<M.length)&&(M=[])}else D=N,(!M||0<M.length)&&(M=[]);return n()}unpackMultiple(e,t){let s,r=0;try{Y=!0;let i=e.length,o=this?this.unpack(e,i):re.unpack(e,i);if(t){for(t(o);P<i;)if(r=P,!1===t(n()))return;}else{for(s=[o];P<i;)r=P,s.push(n());return s}}catch(e){throw e.lastPosition=r,e.values=s,e}finally{Y=!1,m()}}_mergeStructures(e,t){e=e||[];for(let n,s=0,r=e.length;s<r;s++)n=e[s],n&&(n.isShared=!0,32<=s&&(n.highByte=s-32>>5));for(let n in e.sharedLength=e.length,t||[])if(0<=n){let s=e[n],r=t[n];r&&(s&&((e.restoreStructures||(e.restoreStructures=[]))[n]=s),e[n]=r)}return this.structures=e}decode(e,t){return this.unpack(e,t)}}const q=/^[a-zA-Z_$][a-zA-Z\d_$]*$/,G=(e,t)=>function(){let n=R[P++];if(0===n)return t();let s=32>e?-(e+(n<<5)):e+(n<<5),r=M[s]||o()[s];if(!r)throw new Error("Record id is not defined for "+s);return r.read||(r.read=i(r,e)),r.read()};var H=a,J=a,K=a,Q=a;var X=String.fromCharCode,Z=Array(4096);const ee=(e,t)=>{var n=r();let s=e;void 0!==t&&(e=32>e?-((t<<5)+e):(t<<5)+e,n.highByte=t);let o=M[e];return o&&o.isShared&&((M.restoreStructures||(M.restoreStructures=[]))[e]=o),M[e]=n,n.read=i(n,s),n.read()};j[0]=()=>{},j[0].noBuffer=!0,j[101]=()=>{let e=r();return(globalThis[e[0]]||Error)(e[1])},j[105]=()=>{// id extension (for structured clones)
45
44
  let e=T.getUint32(P-4);C||(C=new Map);let t,n=R[P];t=144<=n&&160>n||220==n||221==n?[]:{};let s={target:t};// a placeholder object
46
45
  C.set(e,s);let i=r();// read the next value as the target object to id
47
46
  return s.used?Object.assign(t,i):(s.target=i,i);// no cycle, can just use the returned read object
48
- },v[112]=()=>{// pointer extension (for structured clones)
49
- let e=T.getUint32(P-4),t=C.get(e);return t.used=!0,t.target},v[115]=()=>new Set(r());const ne=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(e=>e+"Array");v[116]=e=>{let t=e[0],n=ne[t];if(!n)throw new Error("Could not find typed array for code "+t);// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
50
- return new te[n](Uint8Array.prototype.slice.call(e,1).buffer)},v[120]=()=>{let e=r();return new RegExp(e[0],e[1])};const se=[];v[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],n=P;return P+=t-e.length,B=se,B=[p(),p()],B.position0=0,B.position1=0,B.postBundlePosition=P,P=n,r()},v[255]=e=>4==e.length?new Date(1e3*(16777216*e[0]+(e[1]<<16)+(e[2]<<8)+e[3])):8==e.length?new Date(((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+1e3*(4294967296*(3&e[3])+16777216*e[4]+(e[5]<<16)+(e[6]<<8)+e[7])):12==e.length?new Date(((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+1e3*((128&e[4]?-281474976710656:0)+1099511627776*e[6]+4294967296*e[7]+16777216*e[8]+(e[9]<<16)+(e[10]<<8)+e[11])):new Date("invalid");const re=Array(147);// this is a table matching binary exponents to the multiplier to determine significant digit rounding
51
- for(let n=0;256>n;n++)re[n]=+("1e"+t(45.15-.30103*n));var ie=new $({useRecords:!1});const oe=ie.unpack,ae=ie.unpackMultiple,ue=ie.unpack,de={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let ce,ge=new Float32Array(1),pe=new Uint8Array(ge.buffer,0,4);try{ce=new TextEncoder}catch(e){}let le,fe;const he="undefined"!=typeof Buffer,ye=he?Buffer.allocUnsafeSlow:Uint8Array,me=he?Buffer:Uint8Array,be=he?4294967296:2144337920;let ke,Ue,Ie,Se,Oe=0,Ae=null;const we=Symbol("record-id");class Le extends ${constructor(e){super(e),this.offset=0;let t,n,s,r,i=0,o=me.prototype.utf8Write?function(e,t,n){return ke.utf8Write(e,t,n)}:!!(ce&&ce.encodeInto)&&function(e,t){return ce.encodeInto(e,ke.subarray(t)).written},a=this;e||(e={});let u=e&&e.sequential,d=e.structures||e.saveStructures,c=e.maxSharedStructures;if(null==c&&(c=d?32:0),8160<c)throw new Error("Maximum maxSharedStructure is 8160");e.structuredClone&&null==e.moreTypes&&(e.moreTypes=!0);let g=e.maxOwnStructures;null==g&&(g=d?32:64),this.structures||!1==e.useRecords||(this.structures=[]);// two byte record ids for shared structures
52
- let p=32<c||64<g+c,l=c+64,f=c+g+64;if(8256<f)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let h=[],y=0,m=0;this.pack=this.encode=function(e,o){if(ke||(ke=new ye(8192),Ie=new DataView(ke.buffer,0,8192),Oe=0),Se=ke.length-10,2048>Se-Oe?(ke=new ye(ke.length),Ie=new DataView(ke.buffer,0,ke.length),Se=ke.length-10,Oe=0):Oe=2147483640&Oe+7,t=Oe,r=a.structuredClone?new Map:null,a.bundleStrings&&"string"!=typeof e?(Ae=[],Ae.size=1/0):Ae=null,s=a.structures,s){s.uninitialized&&(s=a._mergeStructures(a.getStructures()));let e=s.sharedLength||0;if(e>c)//if (maxSharedStructures <= 32 && structures.sharedLength > 32) // TODO: could support this, but would need to update the limit ids
53
- throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+s.sharedLength);if(!s.transitions){s.transitions=Object.create(null);for(let t,n=0;n<e;n++){if(t=s[n],!t)continue;let e,r=s.transitions;for(let n,s=0,i=t.length;s<i;s++)n=t[s],e=r[n],e||(e=r[n]=Object.create(null)),r=e;r[we]=n+64}i=e}u||(s.nextId=e+64)}n&&(n=!1);try{// update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially
54
- if(b(e),Ae&&O(t,b),a.offset=Oe,r&&r.idsToInsert){Oe+=6*r.idsToInsert.length,Oe>Se&&U(Oe),a.offset=Oe;let e=S(ke.subarray(t,Oe),r.idsToInsert);return r=null,e}return o&Te?(ke.start=t,ke.end=Oe,ke):ke.subarray(t,Oe);// position can change if we call pack again in saveStructures, so we get the buffer now
55
- }finally{if(s){10>m&&m++;let r=s.sharedLength||c;if(s.length>r&&(s.length=r),1e4<y)s.transitions=null,m=0,y=0,0<h.length&&(h=[]);else if(0<h.length&&!u){for(let e=0,t=h.length;e<t;e++)h[e][we]=0;h=[]}if(n&&a.saveStructures){// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save
56
- let n=ke.subarray(t,Oe);return!1===a.saveStructures(s,i)?(a._mergeStructures(a.getStructures()),a.pack(e)):(i=r,n)}}o&Pe&&(Oe=t)}};const b=e=>{Oe>Se&&(ke=U(Oe));var n,s=typeof e;if("string"==s){let s=e.length;if(Ae&&4<=s&&4096>s){if((Ae.size+=s)>61440){let e,n=(Ae[0]?3*Ae[0].length+Ae[1].length:0)+10;Oe+n>Se&&(ke=U(Oe+n)),Ae.position?(ke[Oe]=200,Oe+=3,ke[Oe++]=98,e=Oe-t,Oe+=4,O(t,b),Ie.setUint16(e+t-3,Oe-t-e)):(ke[Oe++]=214,ke[Oe++]=98,e=Oe-t,Oe+=4),Ae=["",""],Ae.size=0,Ae.position=e}let n=/[\u0080-\uFFFF]/.test(e);return Ae[n?0:1]+=e,ke[Oe++]=193,void b(n?-s:s)}let r=32>s?1:256>s?2:65536>s?3:5;// first we estimate the header size, so we can write to the correct location
57
- let i=3*s;if(Oe+i>Se&&(ke=U(Oe+i)),64>s||!o){let t,i,o,a=Oe+r;for(t=0;t<s;t++)i=e.charCodeAt(t),128>i?ke[a++]=i:2048>i?(ke[a++]=192|i>>6,ke[a++]=128|63&i):55296==(64512&i)&&56320==(64512&(o=e.charCodeAt(t+1)))?(i=65536+((1023&i)<<10)+(1023&o),t++,ke[a++]=240|i>>18,ke[a++]=128|63&i>>12,ke[a++]=128|63&i>>6,ke[a++]=128|63&i):(ke[a++]=224|i>>12,ke[a++]=128|63&i>>6,ke[a++]=128|63&i);n=a-Oe-r}else n=o(e,Oe+r,i);32>n?ke[Oe++]=160|n:256>n?(2>r&&ke.copyWithin(Oe+2,Oe+1,Oe+1+n),ke[Oe++]=217,ke[Oe++]=n):65536>n?(3>r&&ke.copyWithin(Oe+3,Oe+2,Oe+2+n),ke[Oe++]=218,ke[Oe++]=n>>8,ke[Oe++]=255&n):(5>r&&ke.copyWithin(Oe+5,Oe+3,Oe+3+n),ke[Oe++]=219,Ie.setUint32(Oe,n),Oe+=4),Oe+=n}else if("number"===s){if(e>>>0===e)64>e?ke[Oe++]=e:256>e?(ke[Oe++]=204,ke[Oe++]=e):65536>e?(ke[Oe++]=205,ke[Oe++]=e>>8,ke[Oe++]=255&e):(ke[Oe++]=206,Ie.setUint32(Oe,e),Oe+=4);else if(e>>0===e)-32<=e?ke[Oe++]=256+e:-128<=e?(ke[Oe++]=208,ke[Oe++]=e+256):-32768<=e?(ke[Oe++]=209,Ie.setInt16(Oe,e),Oe+=2):(ke[Oe++]=210,Ie.setInt32(Oe,e),Oe+=4);else{let t;if(0<(t=this.useFloat32)&&4294967296>e&&-2147483648<=e){ke[Oe++]=202,Ie.setFloat32(Oe,e);let n;if(4>t||// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
58
- (n=e*re[(127&ke[Oe])<<1|ke[Oe+1]>>7])>>0===n)return void(Oe+=4);// move back into position for writing a double
59
- Oe--}ke[Oe++]=203,Ie.setFloat64(Oe,e),Oe+=8}}else if("object"===s){if(!e)ke[Oe++]=192;else{if(r){let n=r.get(e);if(n){if(!n.id){let e=r.idsToInsert||(r.idsToInsert=[]);n.id=e.push(n)}return ke[Oe++]=214,ke[Oe++]=112,Ie.setUint32(Oe,n.id),void(Oe+=4)}r.set(e,{offset:Oe-t})}let s=e.constructor;if(s===Object)k(e,!0);else if(s===Array){n=e.length,16>n?ke[Oe++]=144|n:65536>n?(ke[Oe++]=220,ke[Oe++]=n>>8,ke[Oe++]=255&n):(ke[Oe++]=221,Ie.setUint32(Oe,n),Oe+=4);for(let t=0;t<n;t++)b(e[t])}else if(s===Map){n=e.size,16>n?ke[Oe++]=128|n:65536>n?(ke[Oe++]=222,ke[Oe++]=n>>8,ke[Oe++]=255&n):(ke[Oe++]=223,Ie.setUint32(Oe,n),Oe+=4);for(let[t,n]of e)b(t),b(n)}else{for(let t,n=0,s=le.length;n<s;n++)if(t=fe[n],e instanceof t){let t=le[n];if(t.write)return t.type&&(ke[Oe++]=212,ke[Oe++]=t.type,ke[Oe++]=0),void b(t.write.call(this,e));let s=ke,r=Ie,i=Oe;ke=null;let o;try{o=t.pack.call(this,e,e=>(ke=s,s=null,Oe+=e,Oe>Se&&U(Oe),{target:ke,targetView:Ie,position:Oe-e}),b)}finally{s&&(ke=s,Ie=r,Oe=i,Se=ke.length-10)}return void(o&&(o.length+Oe>Se&&U(o.length+Oe),Oe=I(o,ke,Oe,t.type)))}// no extension found, write as object
60
- k(e,!e.hasOwnProperty)}}}else if("boolean"===s)ke[Oe++]=e?195:194;else if("bigint"===s){if(e<BigInt(1)<<BigInt(63)&&e>=-(BigInt(1)<<BigInt(63)))ke[Oe++]=211,Ie.setBigInt64(Oe,e);else if(e<BigInt(1)<<BigInt(64)&&0<e)ke[Oe++]=207,Ie.setBigUint64(Oe,e);else// overflow
61
- if(this.largeBigIntToFloat)ke[Oe++]=203,Ie.setFloat64(Oe,+e);else throw new RangeError(e+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");Oe+=8}else if("undefined"===s)this.encodeUndefinedAsNil?ke[Oe++]=192:(ke[Oe++]=212,ke[Oe++]=0,ke[Oe++]=0);else if("function"===s)b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+s)},k=!1===this.useRecords?this.variableMapSize?e=>{// this method is slightly slower, but generates "preferred serialization" (optimally small for smaller objects)
62
- let t=Object.keys(e),n=t.length;16>n?ke[Oe++]=128|n:65536>n?(ke[Oe++]=222,ke[Oe++]=n>>8,ke[Oe++]=255&n):(ke[Oe++]=223,Ie.setUint32(Oe,n),Oe+=4);let s;for(let r=0;r<n;r++)b(s=t[r]),b(e[s])}:(e,n)=>{ke[Oe++]=222;// always using map 16, so we can preallocate and set the length afterwards
63
- let s=Oe-t;Oe+=2;let r=0;for(let t in e)(n||e.hasOwnProperty(t))&&(b(t),b(e[t]),r++);ke[s++ +t]=r>>8,ke[s+t]=255&r}:e.progressiveRecords&&!p?// this is about 2% faster for highly stable structures, since it only requires one for-in loop (but much more expensive when new structure needs to be written)
64
- (e,n)=>{let r,i,o=s.transitions||(s.transitions=Object.create(null)),a=Oe++-t;for(let u in e)if(n||e.hasOwnProperty(u)){if(r=o[u],r)o=r;else{// record doesn't exist, create full new record and insert it
65
- let n=Object.keys(e),d=o;o=s.transitions;let c=0;for(let e,t=0,s=n.length;t<s;t++)e=n[t],r=o[e],r||(r=o[e]=Object.create(null),c++),o=r;a+t+1==Oe?(Oe--,A(o,n,c)):// otherwise we need to insert the record, moving existing data after the record
66
- w(o,n,a,c),i=!0,o=d[u]}b(e[u])}if(!i){let n=o[we];n?ke[a+t]=n:w(o,Object.keys(e),a,0)}}:(e,t)=>{let n,r=s.transitions||(s.transitions=Object.create(null)),i=0;for(let s in e)(t||e.hasOwnProperty(s))&&(n=r[s],n||(n=r[s]=Object.create(null),i++),r=n);let o=r[we];// now write the values
67
- for(let n in o?96<=o&&p?(ke[Oe++]=(31&(o-=96))+96,ke[Oe++]=o>>5):ke[Oe++]=o:A(r,r.__keys__||Object.keys(e),i),e)(t||e.hasOwnProperty(n))&&b(e[n])},U=e=>{var n=Math.min,s=Math.round,r=Math.max;let i;if(16777216<e){// special handling for really large buffers
68
- if(e-t>be)throw new Error("Packed buffer would be larger than maximum buffer size");i=n(be,4096*s(r((e-t)*(67108864<e?1.25:2),4194304)/4096))}else// faster handling for smaller buffers
69
- i=(r(e-t<<2,ke.length-1)>>12)+1<<12;let o=new ye(i);return Ie=new DataView(o.buffer,0,i),ke.copy?ke.copy(o,0,t,e):o.set(ke.slice(t,e)),Oe-=t,t=0,Se=o.length-10,ke=o},A=(e,t,r)=>{let i=s.nextId;i||(i=64),i<l&&this.shouldShareStructure&&!this.shouldShareStructure(t)?(i=s.nextOwnId,!(i<f)&&(i=l),s.nextOwnId=i+1):(i>=f&&(// cycle back around
70
- i=l),s.nextId=i+1);let o=t.highByte=96<=i&&p?i-96>>5:-1;e[we]=i,e.__keys__=t,s[i-64]=t,i<l?(t.isShared=!0,s.sharedLength=i-63,n=!0,0<=o?(ke[Oe++]=(31&i)+96,ke[Oe++]=o):ke[Oe++]=i):(0<=o?(ke[Oe++]=213,ke[Oe++]=114,ke[Oe++]=(31&i)+96,ke[Oe++]=o):(ke[Oe++]=212,ke[Oe++]=114,ke[Oe++]=i),r&&(y+=m*r),h.length>=g&&(h.shift()[we]=0),h.push(e),b(t))},w=(e,n,s,r)=>{let i=ke,o=Oe,a=Se,u=t;ke=Ue,Oe=0,t=0,ke||(Ue=ke=new ye(8192)),Se=ke.length-10,A(e,n,r),Ue=ke;let d=Oe;if(ke=i,Oe=o,Se=a,t=u,1<d){let e=Oe+d-1;e>Se&&U(e);let n=s+t;ke.copyWithin(n+d,n+1,Oe),ke.set(Ue.slice(0,d),n),Oe=e}else ke[s+t]=Ue[0]}}useBuffer(e){// this means we are finished using our own buffer and we can write over it safely
71
- ke=e,Ie=new DataView(ke.buffer,ke.byteOffset,ke.byteLength),Oe=0}clearSharedData(){this.structures&&(this.structures=[])}}fe=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor/*TypedArray*/,V],le=[{pack(e,n,s){let r=e.getTime()/1e3;if((this.useTimestamp32||0===e.getMilliseconds())&&0<=r&&4294967296>r){// Timestamp 32
72
- let{target:e,targetView:t,position:s}=n(6);e[s++]=214,e[s++]=255,t.setUint32(s,r)}else if(0<r&&17179869184>r){// Timestamp 64
47
+ },j[112]=()=>{// pointer extension (for structured clones)
48
+ let e=T.getUint32(P-4),t=C.get(e);return t.used=!0,t.target},j[115]=()=>new Set(r());const te=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(e=>e+"Array");j[116]=e=>{let t=e[0],n=te[t];if(!n)throw new Error("Could not find typed array for code "+t);// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
49
+ return new globalThis[n](Uint8Array.prototype.slice.call(e,1).buffer)},j[120]=()=>{let e=r();return new RegExp(e[0],e[1])};const ne=[];j[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],n=P;return P+=t-e.length,B=ne,B=[l(),l()],B.position0=0,B.position1=0,B.postBundlePosition=P,P=n,r()},j[255]=e=>4==e.length?new Date(1e3*(16777216*e[0]+(e[1]<<16)+(e[2]<<8)+e[3])):8==e.length?new Date(((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+1e3*(4294967296*(3&e[3])+16777216*e[4]+(e[5]<<16)+(e[6]<<8)+e[7])):12==e.length?new Date(((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+1e3*((128&e[4]?-281474976710656:0)+1099511627776*e[6]+4294967296*e[7]+16777216*e[8]+(e[9]<<16)+(e[10]<<8)+e[11])):new Date("invalid");const se=Array(147);// this is a table matching binary exponents to the multiplier to determine significant digit rounding
50
+ for(let n=0;256>n;n++)se[n]=+("1e"+t(45.15-.30103*n));var re=new $({useRecords:!1});const ie=re.unpack,oe=re.unpackMultiple,ae=re.unpack,ue={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let de,ce=new Float32Array(1),ge=new Uint8Array(ce.buffer,0,4);try{de=new TextEncoder}catch(e){}let le,pe;const fe="undefined"!=typeof Buffer,he=fe?function(e){return Buffer.allocUnsafeSlow(e)}:Uint8Array,ye=fe?Buffer:Uint8Array,me=fe?4294967296:2144337920;let be,Ue,ke,Ie,Se=0,Oe=null;const Ae=Symbol("record-id");class we extends ${constructor(e){super(e),this.offset=0;let t,n,s,r,i=0,o=ye.prototype.utf8Write?function(e,t){return be.utf8Write(e,t,4294967295)}:!!(de&&de.encodeInto)&&function(e,t){return de.encodeInto(e,be.subarray(t)).written},a=this;e||(e={});let u=e&&e.sequential,d=e.structures||e.saveStructures,c=e.maxSharedStructures;if(null==c&&(c=d?32:0),8160<c)throw new Error("Maximum maxSharedStructure is 8160");e.structuredClone&&null==e.moreTypes&&(e.moreTypes=!0);let g=e.maxOwnStructures;null==g&&(g=d?32:64),this.structures||!1==e.useRecords||(this.structures=[]);// two byte record ids for shared structures
51
+ let l=32<c||64<g+c,p=c+64,f=c+g+64;if(8256<f)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let h=[],y=0,m=0;this.pack=this.encode=function(e,o){if(be||(be=new he(8192),ke=new DataView(be.buffer,0,8192),Se=0),Ie=be.length-10,2048>Ie-Se?(be=new he(be.length),ke=new DataView(be.buffer,0,be.length),Ie=be.length-10,Se=0):Se=2147483640&Se+7,t=Se,r=a.structuredClone?new Map:null,a.bundleStrings&&"string"!=typeof e?(Oe=[],Oe.size=1/0):Oe=null,s=a.structures,s){s.uninitialized&&(s=a._mergeStructures(a.getStructures()));let e=s.sharedLength||0;if(e>c)//if (maxSharedStructures <= 32 && structures.sharedLength > 32) // TODO: could support this, but would need to update the limit ids
52
+ throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+s.sharedLength);if(!s.transitions){s.transitions=Object.create(null);for(let t,n=0;n<e;n++){if(t=s[n],!t)continue;let e,r=s.transitions;for(let n,s=0,i=t.length;s<i;s++)n=t[s],e=r[n],e||(e=r[n]=Object.create(null)),r=e;r[Ae]=n+64}i=e}u||(s.nextId=e+64)}n&&(n=!1);try{// update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially
53
+ if(b(e),Oe&&O(t,b),a.offset=Se,r&&r.idsToInsert){Se+=6*r.idsToInsert.length,Se>Ie&&k(Se),a.offset=Se;let e=S(be.subarray(t,Se),r.idsToInsert);return r=null,e}return o&Ce?(be.start=t,be.end=Se,be):be.subarray(t,Se);// position can change if we call pack again in saveStructures, so we get the buffer now
54
+ }finally{if(s){10>m&&m++;let r=s.sharedLength||c;if(s.length>r&&(s.length=r),1e4<y)s.transitions=null,m=0,y=0,0<h.length&&(h=[]);else if(0<h.length&&!u){for(let e=0,t=h.length;e<t;e++)h[e][Ae]=0;h=[]}if(n&&a.saveStructures){// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save
55
+ let n=be.subarray(t,Se);return!1===a.saveStructures(s,i)?(a._mergeStructures(a.getStructures()),a.pack(e)):(i=r,n)}}o&Te&&(Se=t)}};const b=e=>{Se>Ie&&(be=k(Se));var n,s=typeof e;if("string"==s){let s=e.length;if(Oe&&4<=s&&4096>s){if((Oe.size+=s)>61440){let e,n=(Oe[0]?3*Oe[0].length+Oe[1].length:0)+10;Se+n>Ie&&(be=k(Se+n)),Oe.position?(be[Se]=200,Se+=3,be[Se++]=98,e=Se-t,Se+=4,O(t,b),ke.setUint16(e+t-3,Se-t-e)):(be[Se++]=214,be[Se++]=98,e=Se-t,Se+=4),Oe=["",""],Oe.size=0,Oe.position=e}let n=/[\u0080-\uFFFF]/.test(e);return Oe[n?0:1]+=e,be[Se++]=193,void b(n?-s:s)}let r=32>s?1:256>s?2:65536>s?3:5;// first we estimate the header size, so we can write to the correct location
56
+ let i=3*s;if(Se+i>Ie&&(be=k(Se+i)),64>s||!o){let t,i,o,a=Se+r;for(t=0;t<s;t++)i=e.charCodeAt(t),128>i?be[a++]=i:2048>i?(be[a++]=192|i>>6,be[a++]=128|63&i):55296==(64512&i)&&56320==(64512&(o=e.charCodeAt(t+1)))?(i=65536+((1023&i)<<10)+(1023&o),t++,be[a++]=240|i>>18,be[a++]=128|63&i>>12,be[a++]=128|63&i>>6,be[a++]=128|63&i):(be[a++]=224|i>>12,be[a++]=128|63&i>>6,be[a++]=128|63&i);n=a-Se-r}else n=o(e,Se+r);32>n?be[Se++]=160|n:256>n?(2>r&&be.copyWithin(Se+2,Se+1,Se+1+n),be[Se++]=217,be[Se++]=n):65536>n?(3>r&&be.copyWithin(Se+3,Se+2,Se+2+n),be[Se++]=218,be[Se++]=n>>8,be[Se++]=255&n):(5>r&&be.copyWithin(Se+5,Se+3,Se+3+n),be[Se++]=219,ke.setUint32(Se,n),Se+=4),Se+=n}else if("number"===s){if(e>>>0===e)64>e?be[Se++]=e:256>e?(be[Se++]=204,be[Se++]=e):65536>e?(be[Se++]=205,be[Se++]=e>>8,be[Se++]=255&e):(be[Se++]=206,ke.setUint32(Se,e),Se+=4);else if(e>>0===e)-32<=e?be[Se++]=256+e:-128<=e?(be[Se++]=208,be[Se++]=e+256):-32768<=e?(be[Se++]=209,ke.setInt16(Se,e),Se+=2):(be[Se++]=210,ke.setInt32(Se,e),Se+=4);else{let t;if(0<(t=this.useFloat32)&&4294967296>e&&-2147483648<=e){be[Se++]=202,ke.setFloat32(Se,e);let n;if(4>t||// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
57
+ (n=e*se[(127&be[Se])<<1|be[Se+1]>>7])>>0===n)return void(Se+=4);// move back into position for writing a double
58
+ Se--}be[Se++]=203,ke.setFloat64(Se,e),Se+=8}}else if("object"===s){if(!e)be[Se++]=192;else{if(r){let n=r.get(e);if(n){if(!n.id){let e=r.idsToInsert||(r.idsToInsert=[]);n.id=e.push(n)}return be[Se++]=214,be[Se++]=112,ke.setUint32(Se,n.id),void(Se+=4)}r.set(e,{offset:Se-t})}let s=e.constructor;if(s===Object)U(e,!0);else if(s===Array){n=e.length,16>n?be[Se++]=144|n:65536>n?(be[Se++]=220,be[Se++]=n>>8,be[Se++]=255&n):(be[Se++]=221,ke.setUint32(Se,n),Se+=4);for(let t=0;t<n;t++)b(e[t])}else if(s===Map){n=e.size,16>n?be[Se++]=128|n:65536>n?(be[Se++]=222,be[Se++]=n>>8,be[Se++]=255&n):(be[Se++]=223,ke.setUint32(Se,n),Se+=4);for(let[t,n]of e)b(t),b(n)}else{for(let t,n=0,s=le.length;n<s;n++)if(t=pe[n],e instanceof t){let t=le[n];if(t.write)return t.type&&(be[Se++]=212,be[Se++]=t.type,be[Se++]=0),void b(t.write.call(this,e));let s=be,r=ke,i=Se;be=null;let o;try{o=t.pack.call(this,e,e=>(be=s,s=null,Se+=e,Se>Ie&&k(Se),{target:be,targetView:ke,position:Se-e}),b)}finally{s&&(be=s,ke=r,Se=i,Ie=be.length-10)}return void(o&&(o.length+Se>Ie&&k(o.length+Se),Se=I(o,be,Se,t.type)))}// no extension found, write as object
59
+ U(e,!e.hasOwnProperty)}}}else if("boolean"===s)be[Se++]=e?195:194;else if("bigint"===s){if(e<BigInt(1)<<BigInt(63)&&e>=-(BigInt(1)<<BigInt(63)))be[Se++]=211,ke.setBigInt64(Se,e);else if(e<BigInt(1)<<BigInt(64)&&0<e)be[Se++]=207,ke.setBigUint64(Se,e);else// overflow
60
+ if(this.largeBigIntToFloat)be[Se++]=203,ke.setFloat64(Se,+e);else throw new RangeError(e+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");Se+=8}else if("undefined"===s)this.encodeUndefinedAsNil?be[Se++]=192:(be[Se++]=212,be[Se++]=0,be[Se++]=0);else if("function"===s)b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+s)},U=!1===this.useRecords?this.variableMapSize?e=>{// this method is slightly slower, but generates "preferred serialization" (optimally small for smaller objects)
61
+ let t=Object.keys(e),n=t.length;16>n?be[Se++]=128|n:65536>n?(be[Se++]=222,be[Se++]=n>>8,be[Se++]=255&n):(be[Se++]=223,ke.setUint32(Se,n),Se+=4);let s;for(let r=0;r<n;r++)b(s=t[r]),b(e[s])}:(e,n)=>{be[Se++]=222;// always using map 16, so we can preallocate and set the length afterwards
62
+ let s=Se-t;Se+=2;let r=0;for(let t in e)(n||e.hasOwnProperty(t))&&(b(t),b(e[t]),r++);be[s++ +t]=r>>8,be[s+t]=255&r}:e.progressiveRecords&&!l?// this is about 2% faster for highly stable structures, since it only requires one for-in loop (but much more expensive when new structure needs to be written)
63
+ (e,n)=>{let r,i,o=s.transitions||(s.transitions=Object.create(null)),a=Se++-t;for(let u in e)if(n||e.hasOwnProperty(u)){if(r=o[u],r)o=r;else{// record doesn't exist, create full new record and insert it
64
+ let n=Object.keys(e),d=o;o=s.transitions;let c=0;for(let e,t=0,s=n.length;t<s;t++)e=n[t],r=o[e],r||(r=o[e]=Object.create(null),c++),o=r;a+t+1==Se?(Se--,A(o,n,c)):// otherwise we need to insert the record, moving existing data after the record
65
+ w(o,n,a,c),i=!0,o=d[u]}b(e[u])}if(!i){let n=o[Ae];n?be[a+t]=n:w(o,Object.keys(e),a,0)}}:(e,t)=>{let n,r=s.transitions||(s.transitions=Object.create(null)),i=0;for(let s in e)(t||e.hasOwnProperty(s))&&(n=r[s],n||(n=r[s]=Object.create(null),i++),r=n);let o=r[Ae];// now write the values
66
+ for(let n in o?96<=o&&l?(be[Se++]=(31&(o-=96))+96,be[Se++]=o>>5):be[Se++]=o:A(r,r.__keys__||Object.keys(e),i),e)(t||e.hasOwnProperty(n))&&b(e[n])},k=e=>{var n=Math.min,s=Math.round,r=Math.max;let i;if(16777216<e){// special handling for really large buffers
67
+ if(e-t>me)throw new Error("Packed buffer would be larger than maximum buffer size");i=n(me,4096*s(r((e-t)*(67108864<e?1.25:2),4194304)/4096))}else// faster handling for smaller buffers
68
+ i=(r(e-t<<2,be.length-1)>>12)+1<<12;let o=new he(i);return ke=new DataView(o.buffer,0,i),e=n(e,be.length),be.copy?be.copy(o,0,t,e):o.set(be.slice(t,e)),Se-=t,t=0,Ie=o.length-10,be=o},A=(e,t,r)=>{let i=s.nextId;i||(i=64),i<p&&this.shouldShareStructure&&!this.shouldShareStructure(t)?(i=s.nextOwnId,!(i<f)&&(i=p),s.nextOwnId=i+1):(i>=f&&(// cycle back around
69
+ i=p),s.nextId=i+1);let o=t.highByte=96<=i&&l?i-96>>5:-1;e[Ae]=i,e.__keys__=t,s[i-64]=t,i<p?(t.isShared=!0,s.sharedLength=i-63,n=!0,0<=o?(be[Se++]=(31&i)+96,be[Se++]=o):be[Se++]=i):(0<=o?(be[Se++]=213,be[Se++]=114,be[Se++]=(31&i)+96,be[Se++]=o):(be[Se++]=212,be[Se++]=114,be[Se++]=i),r&&(y+=m*r),h.length>=g&&(h.shift()[Ae]=0),h.push(e),b(t))},w=(e,n,s,r)=>{let i=be,o=Se,a=Ie,u=t;be=Ue,Se=0,t=0,be||(Ue=be=new he(8192)),Ie=be.length-10,A(e,n,r),Ue=be;let d=Se;if(be=i,Se=o,Ie=a,t=u,1<d){let e=Se+d-1;e>Ie&&k(e);let n=s+t;be.copyWithin(n+d,n+1,Se),be.set(Ue.slice(0,d),n),Se=e}else be[s+t]=Ue[0]}}useBuffer(e){// this means we are finished using our own buffer and we can write over it safely
70
+ be=e,ke=new DataView(be.buffer,be.byteOffset,be.byteLength),Se=0}clearSharedData(){this.structures&&(this.structures=[])}}pe=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor/*TypedArray*/,V],le=[{pack(e,n,s){let r=e.getTime()/1e3;if((this.useTimestamp32||0===e.getMilliseconds())&&0<=r&&4294967296>r){// Timestamp 32
71
+ let{target:e,targetView:t,position:s}=n(6);e[s++]=214,e[s++]=255,t.setUint32(s,r)}else if(0<r&&4294967296>r){// Timestamp 64
73
72
  let{target:t,targetView:s,position:i}=n(10);t[i++]=215,t[i++]=255,s.setUint32(i,4e6*e.getMilliseconds()+(r/1e3/4294967296>>0)),s.setUint32(i+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return n(0),s(this.onInvalidDate());// Intentionally invalid timestamp
74
73
  let{target:e,targetView:t,position:r}=n(3);e[r++]=212,e[r++]=255,e[r++]=255}else{// Timestamp 96
75
- let{target:s,targetView:i,position:o}=n(15);s[o++]=199,s[o++]=12,s[o++]=255,i.setUint32(o,1e6*e.getMilliseconds()),i.setBigInt64(o+4,BigInt(t(r)))}}},{pack(e,t,n){let s=Array.from(e),{target:r,position:i}=t(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=115,r[i++]=0),n(s)}},{pack(e,t,n){let{target:s,position:r}=t(this.moreTypes?3:0);this.moreTypes&&(s[r++]=212,s[r++]=101,s[r++]=0),n([e.name,e.message])}},{pack(e,t,n){let{target:s,position:r}=t(this.moreTypes?3:0);this.moreTypes&&(s[r++]=212,s[r++]=120,s[r++]=0),n([e.source,e.flags])}},{pack(e,t){this.moreTypes?k(e,16,t):U(he?Buffer.from(e):new Uint8Array(e),t)}},{pack(e,t){let n=e.constructor;n!==me&&this.moreTypes?k(e,ne.indexOf(n.name),t):U(e,t)}},{pack(e,t){// specific 0xC1 object
76
- let{target:n,position:s}=t(1);n[s]=193}}];let xe=new Le({useRecords:!1});const Re=xe.pack,Ee=xe.pack,{NEVER:Me,ALWAYS:_e,DECIMAL_ROUND:Be,DECIMAL_FIT:Ce}=de,Te=512,Pe=1024;e.ALWAYS=_e,e.C1=W,e.DECIMAL_FIT=Ce,e.DECIMAL_ROUND=Be,e.Decoder=$,e.Encoder=Le,e.FLOAT32_OPTIONS=de,e.NEVER=Me,e.Packr=Le,e.REUSE_BUFFER_MODE=Te,e.Unpackr=$,e.addExtension=A,e.clearSource=m,e.decode=ue,e.decodeIter=function(e,t={}){if(!e||"object"!=typeof e)throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise");const n=new $(t);let s;const r=e=>{let t;// if there's incomplete data from previous chunk, concatinate and try again
77
- s&&(e=Buffer.concat([s,e]),s=void 0);try{t=n.unpackMultiple(e)}catch(n){if(n.incomplete)s=e.slice(n.lastPosition),t=n.values;else throw n}return t};if("function"==typeof e[Symbol.iterator])return function*(){for(const t of e)yield*r(t)}();return"function"==typeof e[Symbol.asyncIterator]?async function*(){for await(const t of e)yield*r(t)}():void 0},e.encode=Ee,e.encodeIter=/**
74
+ let{target:s,targetView:i,position:o}=n(15);s[o++]=199,s[o++]=12,s[o++]=255,i.setUint32(o,1e6*e.getMilliseconds()),i.setBigInt64(o+4,BigInt(t(r)))}}},{pack(e,t,n){let s=Array.from(e),{target:r,position:i}=t(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=115,r[i++]=0),n(s)}},{pack(e,t,n){let{target:s,position:r}=t(this.moreTypes?3:0);this.moreTypes&&(s[r++]=212,s[r++]=101,s[r++]=0),n([e.name,e.message])}},{pack(e,t,n){let{target:s,position:r}=t(this.moreTypes?3:0);this.moreTypes&&(s[r++]=212,s[r++]=120,s[r++]=0),n([e.source,e.flags])}},{pack(e,t){this.moreTypes?U(e,16,t):k(fe?Buffer.from(e):new Uint8Array(e),t)}},{pack(e,t){let n=e.constructor;n!==ye&&this.moreTypes?U(e,te.indexOf(n.name),t):k(e,t)}},{pack(e,t){// specific 0xC1 object
75
+ let{target:n,position:s}=t(1);n[s]=193}}];let xe=new we({useRecords:!1});const Le=xe.pack,Re=xe.pack,{NEVER:Ee,ALWAYS:Me,DECIMAL_ROUND:_e,DECIMAL_FIT:Be}=ue,Ce=512,Te=1024;e.ALWAYS=Me,e.C1=W,e.DECIMAL_FIT=Be,e.DECIMAL_ROUND=_e,e.Decoder=$,e.Encoder=we,e.FLOAT32_OPTIONS=ue,e.NEVER=Ee,e.Packr=we,e.REUSE_BUFFER_MODE=Ce,e.Unpackr=$,e.addExtension=A,e.clearSource=m,e.decode=ae,e.decodeIter=function(e,t={}){if(!e||"object"!=typeof e)throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise");const n=new $(t);let s;const r=e=>{let t;// if there's incomplete data from previous chunk, concatinate and try again
76
+ s&&(e=Buffer.concat([s,e]),s=void 0);try{t=n.unpackMultiple(e)}catch(n){if(n.incomplete)s=e.slice(n.lastPosition),t=n.values;else throw n}return t};if("function"==typeof e[Symbol.iterator])return function*(){for(const t of e)yield*r(t)}();return"function"==typeof e[Symbol.asyncIterator]?async function*(){for await(const t of e)yield*r(t)}():void 0},e.encode=Re,e.encodeIter=/**
78
77
  * Given an Iterable first argument, returns an Iterable where each value is packed as a Buffer
79
78
  * If the argument is only Async Iterable, the return value will be an Async Iterable.
80
79
  * @param {Iterable|Iterator|AsyncIterable|AsyncIterator} objectIterator - iterable source, like a Readable object stream, an array, Set, or custom object
81
80
  * @param {options} [options] - msgpackr pack options
82
81
  * @returns {IterableIterator|Promise.<AsyncIterableIterator>}
83
- */function(e,t={}){if(!e||"object"!=typeof e)throw new Error("first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable");else{if("function"==typeof e[Symbol.iterator])return w(e,t);if("function"==typeof e.then||"function"==typeof e[Symbol.asyncIterator])return L(e,t);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}},e.isNativeAccelerationEnabled=!1,e.mapsAsObjects=!0,e.pack=Re,e.roundFloat32=function(e){ge[0]=e;let t=re[(127&pe[3])<<1|pe[2]>>7];return(t*e+(0<e?.5:-.5)>>0)/t},e.unpack=oe,e.unpackMultiple=ae,e.useRecords=!1,Object.defineProperty(e,"__esModule",{value:!0})});
82
+ */function(e,t={}){if(!e||"object"!=typeof e)throw new Error("first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable");else{if("function"==typeof e[Symbol.iterator])return w(e,t);if("function"==typeof e.then||"function"==typeof e[Symbol.asyncIterator])return x(e,t);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}},e.isNativeAccelerationEnabled=!1,e.mapsAsObjects=!0,e.pack=Le,e.roundFloat32=function(e){ce[0]=e;let t=se[(127&ge[3])<<1|ge[2]>>7];return(t*e+(0<e?.5:-.5)>>0)/t},e.unpack=ie,e.unpackMultiple=oe,e.useRecords=!1,Object.defineProperty(e,"__esModule",{value:!0})});
package/dist/node.cjs CHANGED
@@ -178,11 +178,9 @@ function checkedRead() {
178
178
  referenceMap = null;
179
179
  } else if (position > srcEnd) {
180
180
  // over read
181
- let error = new Error('Unexpected end of MessagePack data');
182
- error.incomplete = true;
183
- throw error
181
+ throw new Error('Unexpected end of MessagePack data')
184
182
  } else if (!sequentialMode) {
185
- throw new Error('Data read, but end of buffer not reached')
183
+ throw new Error('Data read, but end of buffer not reached ' + JSON.stringify(result).slice(0, 100))
186
184
  }
187
185
  // else more to read, but we are reading sequentially, so don't clear source yet
188
186
  return result
@@ -190,7 +188,7 @@ function checkedRead() {
190
188
  if (currentStructures.restoreStructures)
191
189
  restoreStructures();
192
190
  clearSource();
193
- if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {
191
+ if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer') || position > srcEnd) {
194
192
  error.incomplete = true;
195
193
  }
196
194
  throw error
@@ -275,7 +273,10 @@ function read() {
275
273
  case 0xc3: return true
276
274
  case 0xc4:
277
275
  // bin 8
278
- return readBin(src[position++])
276
+ value = src[position++];
277
+ if (value === undefined)
278
+ throw new Error('Unexpected end of buffer')
279
+ return readBin(value)
279
280
  case 0xc5:
280
281
  // bin 16
281
282
  value = dataView.getUint16(position);
@@ -623,12 +624,12 @@ function longStringInJS(length) {
623
624
  for (let i = 0; i < length; i++) {
624
625
  const byte = src[position++];
625
626
  if ((byte & 0x80) > 0) {
626
- position = start;
627
- return
628
- }
629
- bytes[i] = byte;
630
- }
631
- return fromCharCode.apply(String, bytes)
627
+ position = start;
628
+ return
629
+ }
630
+ bytes[i] = byte;
631
+ }
632
+ return fromCharCode.apply(String, bytes)
632
633
  }
633
634
  function shortStringInJS(length) {
634
635
  if (length < 4) {
@@ -895,13 +896,12 @@ const recordDefinition = (id, highByte) => {
895
896
  structure.read = createStructureReader(structure, firstByte);
896
897
  return structure.read()
897
898
  };
898
- var glbl = typeof self == 'object' ? self : global;
899
899
  currentExtensions[0] = () => {}; // notepack defines extension 0 to mean undefined, so use that as the default here
900
900
  currentExtensions[0].noBuffer = true;
901
901
 
902
902
  currentExtensions[0x65] = () => {
903
903
  let data = read();
904
- return (glbl[data[0]] || Error)(data[1])
904
+ return (globalThis[data[0]] || Error)(data[1])
905
905
  };
906
906
 
907
907
  currentExtensions[0x69] = (data) => {
@@ -945,7 +945,7 @@ currentExtensions[0x74] = (data) => {
945
945
  if (!typedArrayName)
946
946
  throw new Error('Could not find typed array for code ' + typeCode)
947
947
  // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
948
- return new glbl[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)
948
+ return new globalThis[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)
949
949
  };
950
950
  currentExtensions[0x78] = () => {
951
951
  let data = read();
@@ -1060,7 +1060,8 @@ try {
1060
1060
  } catch (error) {}
1061
1061
  let extensions, extensionClasses;
1062
1062
  const hasNodeBuffer = typeof Buffer !== 'undefined';
1063
- const ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array;
1063
+ const ByteArrayAllocate = hasNodeBuffer ?
1064
+ function(length) { return Buffer.allocUnsafeSlow(length) } : Uint8Array;
1064
1065
  const ByteArray = hasNodeBuffer ? Buffer : Uint8Array;
1065
1066
  const MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000;
1066
1067
  let target, keysTarget;
@@ -1080,8 +1081,8 @@ class Packr extends Unpackr {
1080
1081
  let structures;
1081
1082
  let referenceMap;
1082
1083
  let lastSharedStructuresLength = 0;
1083
- let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {
1084
- return target.utf8Write(string, position, maxBytes)
1084
+ let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position) {
1085
+ return target.utf8Write(string, position, 0xffffffff)
1085
1086
  } : (textEncoder && textEncoder.encodeInto) ?
1086
1087
  function(string, position) {
1087
1088
  return textEncoder.encodeInto(string, target.subarray(position)).written
@@ -1310,7 +1311,7 @@ class Packr extends Unpackr {
1310
1311
  }
1311
1312
  length = strPosition - position$1 - headerSize;
1312
1313
  } else {
1313
- length = encodeUtf8(value, position$1 + headerSize, maxBytes);
1314
+ length = encodeUtf8(value, position$1 + headerSize);
1314
1315
  }
1315
1316
 
1316
1317
  if (length < 0x20) {
@@ -1649,6 +1650,7 @@ class Packr extends Unpackr {
1649
1650
  newSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12;
1650
1651
  let newBuffer = new ByteArrayAllocate(newSize);
1651
1652
  targetView = new DataView(newBuffer.buffer, 0, newSize);
1653
+ end = Math.min(end, target.length);
1652
1654
  if (target.copy)
1653
1655
  target.copy(newBuffer, 0, start, end);
1654
1656
  else
@@ -1761,7 +1763,7 @@ extensions = [{
1761
1763
  target[position++] = 0xd6;
1762
1764
  target[position++] = 0xff;
1763
1765
  targetView.setUint32(position, seconds);
1764
- } else if (seconds > 0 && seconds < 0x400000000) {
1766
+ } else if (seconds > 0 && seconds < 0x100000000) {
1765
1767
  // Timestamp 64
1766
1768
  let { target, targetView, position} = allocateForWrite(10);
1767
1769
  target[position++] = 0xd7;
@@ -2115,14 +2117,17 @@ const encodeIter = packIter;
2115
2117
  const useRecords = false;
2116
2118
  const mapsAsObjects = true;
2117
2119
 
2118
- const extractor = tryRequire('msgpackr-extract');
2119
- if (extractor)
2120
- setExtractor(extractor.extractStrings);
2120
+ const nativeAccelerationDisabled = process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED !== undefined && process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED.toLowerCase() === 'true';
2121
2121
 
2122
- function tryRequire(moduleId) {
2122
+ if (!nativeAccelerationDisabled) {
2123
+ let extractor;
2123
2124
  try {
2124
- let require$1 = module$1.createRequire((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node.cjs', document.baseURI).href)));
2125
- return require$1(moduleId)
2125
+ if (typeof require == 'function')
2126
+ extractor = require('msgpackr-extract');
2127
+ else
2128
+ extractor = module$1.createRequire((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node.cjs', document.baseURI).href)))('msgpackr-extract');
2129
+ if (extractor)
2130
+ setExtractor(extractor.extractStrings);
2126
2131
  } catch (error) {
2127
2132
  // native module is optional
2128
2133
  }
package/dist/test.js CHANGED
@@ -439,6 +439,7 @@
439
439
  map: map,
440
440
  date: new Date(1532219539733),
441
441
  farFutureDate: new Date(3532219539133),
442
+ fartherFutureDate: new Date('2106-08-05T18:48:20.323Z'),
442
443
  ancient: new Date(-3532219539133),
443
444
  invalidDate: new Date('invalid')
444
445
  };
@@ -449,6 +450,7 @@
449
450
  assert.equal(deserialized.map.get('three'), 3);
450
451
  assert.equal(deserialized.date.getTime(), 1532219539733);
451
452
  assert.equal(deserialized.farFutureDate.getTime(), 3532219539133);
453
+ assert.equal(deserialized.fartherFutureDate.toISOString(), '2106-08-05T18:48:20.323Z');
452
454
  assert.equal(deserialized.ancient.getTime(), -3532219539133);
453
455
  assert.equal(deserialized.invalidDate.toString(), 'Invalid Date');
454
456
  });
package/node-index.js CHANGED
@@ -7,14 +7,17 @@ export const mapsAsObjects = true
7
7
  import { setExtractor } from './unpack.js'
8
8
  import { createRequire } from 'module'
9
9
 
10
- const extractor = tryRequire('msgpackr-extract')
11
- if (extractor)
12
- setExtractor(extractor.extractStrings)
10
+ const nativeAccelerationDisabled = process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED !== undefined && process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED.toLowerCase() === 'true';
13
11
 
14
- function tryRequire(moduleId) {
12
+ if (!nativeAccelerationDisabled) {
13
+ let extractor
15
14
  try {
16
- let require = createRequire(import.meta.url)
17
- return require(moduleId)
15
+ if (typeof require == 'function')
16
+ extractor = require('msgpackr-extract')
17
+ else
18
+ extractor = createRequire(import.meta.url)('msgpackr-extract')
19
+ if (extractor)
20
+ setExtractor(extractor.extractStrings)
18
21
  } catch (error) {
19
22
  // native module is optional
20
23
  }
package/pack.js CHANGED
@@ -6,7 +6,8 @@ try {
6
6
  } catch (error) {}
7
7
  let extensions, extensionClasses
8
8
  const hasNodeBuffer = typeof Buffer !== 'undefined'
9
- const ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array
9
+ const ByteArrayAllocate = hasNodeBuffer ?
10
+ function(length) { return Buffer.allocUnsafeSlow(length) } : Uint8Array
10
11
  const ByteArray = hasNodeBuffer ? Buffer : Uint8Array
11
12
  const MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000
12
13
  let target, keysTarget
@@ -27,8 +28,8 @@ export class Packr extends Unpackr {
27
28
  let structures
28
29
  let referenceMap
29
30
  let lastSharedStructuresLength = 0
30
- let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {
31
- return target.utf8Write(string, position, maxBytes)
31
+ let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position) {
32
+ return target.utf8Write(string, position, 0xffffffff)
32
33
  } : (textEncoder && textEncoder.encodeInto) ?
33
34
  function(string, position) {
34
35
  return textEncoder.encodeInto(string, target.subarray(position)).written
@@ -257,7 +258,7 @@ export class Packr extends Unpackr {
257
258
  }
258
259
  length = strPosition - position - headerSize
259
260
  } else {
260
- length = encodeUtf8(value, position + headerSize, maxBytes)
261
+ length = encodeUtf8(value, position + headerSize)
261
262
  }
262
263
 
263
264
  if (length < 0x20) {
@@ -596,6 +597,7 @@ export class Packr extends Unpackr {
596
597
  newSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12
597
598
  let newBuffer = new ByteArrayAllocate(newSize)
598
599
  targetView = new DataView(newBuffer.buffer, 0, newSize)
600
+ end = Math.min(end, target.length)
599
601
  if (target.copy)
600
602
  target.copy(newBuffer, 0, start, end)
601
603
  else
@@ -714,7 +716,7 @@ extensions = [{
714
716
  target[position++] = 0xd6
715
717
  target[position++] = 0xff
716
718
  targetView.setUint32(position, seconds)
717
- } else if (seconds > 0 && seconds < 0x400000000) {
719
+ } else if (seconds > 0 && seconds < 0x100000000) {
718
720
  // Timestamp 64
719
721
  let { target, targetView, position} = allocateForWrite(10)
720
722
  target[position++] = 0xd7
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "msgpackr",
3
3
  "author": "Kris Zyp",
4
- "version": "1.5.6",
4
+ "version": "1.6.1",
5
5
  "description": "Ultra-fast MessagePack implementation with extensions for records and structured cloning",
6
6
  "license": "MIT",
7
7
  "types": "./index.d.ts",
@@ -32,6 +32,10 @@
32
32
  "require": "./dist/node.cjs",
33
33
  "import": "./node-index.js"
34
34
  },
35
+ "bun": {
36
+ "require": "./dist/node.cjs",
37
+ "import": "./node-index.js"
38
+ },
35
39
  "default": "./index.js"
36
40
  },
37
41
  "./pack": {
@@ -39,6 +43,10 @@
39
43
  "import": "./index.js",
40
44
  "require": "./dist/node.cjs"
41
45
  },
46
+ "bun": {
47
+ "import": "./index.js",
48
+ "require": "./dist/node.cjs"
49
+ },
42
50
  "default": "./pack.js"
43
51
  },
44
52
  "./unpack": {
@@ -46,6 +54,10 @@
46
54
  "import": "./index.js",
47
55
  "require": "./dist/node.cjs"
48
56
  },
57
+ "bun": {
58
+ "import": "./index.js",
59
+ "require": "./dist/node.cjs"
60
+ },
49
61
  "default": "./unpack.js"
50
62
  }
51
63
  },
@@ -56,7 +68,7 @@
56
68
  "/*.ts"
57
69
  ],
58
70
  "optionalDependencies": {
59
- "msgpackr-extract": "^1.1.4"
71
+ "msgpackr-extract": "^2.0.2"
60
72
  },
61
73
  "devDependencies": {
62
74
  "@rollup/plugin-json": "^4.1.0",
package/unpack.js CHANGED
@@ -176,11 +176,9 @@ export function checkedRead() {
176
176
  referenceMap = null
177
177
  } else if (position > srcEnd) {
178
178
  // over read
179
- let error = new Error('Unexpected end of MessagePack data')
180
- error.incomplete = true
181
- throw error
179
+ throw new Error('Unexpected end of MessagePack data')
182
180
  } else if (!sequentialMode) {
183
- throw new Error('Data read, but end of buffer not reached')
181
+ throw new Error('Data read, but end of buffer not reached ' + JSON.stringify(result).slice(0, 100))
184
182
  }
185
183
  // else more to read, but we are reading sequentially, so don't clear source yet
186
184
  return result
@@ -188,7 +186,7 @@ export function checkedRead() {
188
186
  if (currentStructures.restoreStructures)
189
187
  restoreStructures()
190
188
  clearSource()
191
- if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {
189
+ if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer') || position > srcEnd) {
192
190
  error.incomplete = true
193
191
  }
194
192
  throw error
@@ -273,7 +271,10 @@ export function read() {
273
271
  case 0xc3: return true
274
272
  case 0xc4:
275
273
  // bin 8
276
- return readBin(src[position++])
274
+ value = src[position++]
275
+ if (value === undefined)
276
+ throw new Error('Unexpected end of buffer')
277
+ return readBin(value)
277
278
  case 0xc5:
278
279
  // bin 16
279
280
  value = dataView.getUint16(position)
@@ -621,12 +622,12 @@ function longStringInJS(length) {
621
622
  for (let i = 0; i < length; i++) {
622
623
  const byte = src[position++];
623
624
  if ((byte & 0x80) > 0) {
624
- position = start
625
- return
626
- }
627
- bytes[i] = byte
628
- }
629
- return fromCharCode.apply(String, bytes)
625
+ position = start
626
+ return
627
+ }
628
+ bytes[i] = byte
629
+ }
630
+ return fromCharCode.apply(String, bytes)
630
631
  }
631
632
  function shortStringInJS(length) {
632
633
  if (length < 4) {
@@ -893,13 +894,12 @@ const recordDefinition = (id, highByte) => {
893
894
  structure.read = createStructureReader(structure, firstByte)
894
895
  return structure.read()
895
896
  }
896
- var glbl = typeof self == 'object' ? self : global
897
897
  currentExtensions[0] = () => {} // notepack defines extension 0 to mean undefined, so use that as the default here
898
898
  currentExtensions[0].noBuffer = true
899
899
 
900
900
  currentExtensions[0x65] = () => {
901
901
  let data = read()
902
- return (glbl[data[0]] || Error)(data[1])
902
+ return (globalThis[data[0]] || Error)(data[1])
903
903
  }
904
904
 
905
905
  currentExtensions[0x69] = (data) => {
@@ -943,7 +943,7 @@ currentExtensions[0x74] = (data) => {
943
943
  if (!typedArrayName)
944
944
  throw new Error('Could not find typed array for code ' + typeCode)
945
945
  // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
946
- return new glbl[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)
946
+ return new globalThis[typedArrayName](Uint8Array.prototype.slice.call(data, 1).buffer)
947
947
  }
948
948
  currentExtensions[0x78] = () => {
949
949
  let data = read()
package/dist/str.cjs DELETED
@@ -1,100 +0,0 @@
1
- let utfz = require('../../msgpack-benchmark/node_modules/utfz-lib')
2
-
3
- var safeEnd = 1000000;
4
- var b = new Uint8Array(32768)
5
- function writeString(value, target, position) {
6
- var length, strLength = value.length;
7
- let headerSize;
8
- // first we estimate the header size, so we can write to the correct location
9
- if (strLength < 0x20) {
10
- headerSize = 1;
11
- } else if (strLength < 0x100) {
12
- headerSize = 2;
13
- } else if (strLength < 0x10000) {
14
- headerSize = 3;
15
- } else {
16
- headerSize = 5;
17
- }
18
- let maxBytes = strLength * 3;
19
- //if (position + maxBytes > safeEnd)
20
- // target = makeRoom(position + maxBytes);
21
- for (let i = 0; i < 100; i++) {
22
- length = pack(value, strLength, target, position + headerSize);
23
- }
24
- if (strLength < 0x40 || !encodeUtf8) {
25
- var strPosition = position + headerSize;
26
- var c2 = 0;
27
- for (let i = 0; i < strLength; i++) {
28
- const c1 = value.charCodeAt(i);
29
- if (c1 < 0x80) {
30
- target[strPosition++] = c1;
31
- } else if (c1 < 0x800) {
32
- target[strPosition++] = c1 >> 6 | 0xc0;
33
- target[strPosition++] = c1 & 0x3f | 0x80;
34
- } else if (
35
- (c1 & 0xfc00) === 0xd800 &&
36
- ((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00
37
- ) {
38
- c1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff);
39
- i++;
40
- target[strPosition++] = c1 >> 18 | 0xf0;
41
- target[strPosition++] = c1 >> 12 & 0x3f | 0x80;
42
- target[strPosition++] = c1 >> 6 & 0x3f | 0x80;
43
- target[strPosition++] = c1 & 0x3f | 0x80;
44
- } else {
45
- target[strPosition++] = c1 >> 12 | 0xe0;
46
- target[strPosition++] = c1 >> 6 & 0x3f | 0x80;
47
- target[strPosition++] = c1 & 0x3f | 0x80;
48
- }
49
- }
50
- length = strPosition - position - headerSize;
51
- } else {
52
- length = encodeUtf8(value, position + headerSize, maxBytes);
53
- }
54
-
55
-
56
- if (length < 0x20) {
57
- target[position++] = 0xa0 | length;
58
- } else if (length < 0x100) {
59
- if (headerSize < 2) {
60
- target.copyWithin(position + 2, position + 1, position + 1 + length);
61
- }
62
- target[position++] = 0xd9;
63
- target[position++] = length;
64
- } else if (length < 0x10000) {
65
- if (headerSize < 3) {
66
- target.copyWithin(position + 3, position + 2, position + 2 + length);
67
- }
68
- target[position++] = 0xda;
69
- target[position++] = length >> 8;
70
- target[position++] = length & 0xff;
71
- } else {
72
- if (headerSize < 5) {
73
- target.copyWithin(position + 5, position + 3, position + 3 + length);
74
- }
75
- target[position++] = 0xdb;
76
- targetView.setUint32(position, length);
77
- position += 4;
78
- }
79
- return position + length
80
- };
81
- const pack = (str, length, buf, offset) => {
82
- const start = offset;
83
- let currHigh = 0;
84
- for (let i = 0; i < length; i++) {
85
- const code = str.charCodeAt(i);
86
- const high = code >> 8;
87
- if (high !== currHigh) {
88
- buf[i + offset++] = 0;
89
- buf[i + offset++] = high;
90
- currHigh = high;
91
- }
92
- const low = code & 0xff;
93
- buf[i + offset] = low;
94
- if (!low) {
95
- buf[i + ++offset] = currHigh;
96
- }
97
- }
98
- return length + offset - start;
99
- };
100
- module.exports = writeString;