cbor-x 1.1.0 → 1.3.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/decode.js CHANGED
@@ -824,7 +824,7 @@ currentExtensions[0] = (dateString) => {
824
824
 
825
825
  currentExtensions[1] = (epochSec) => {
826
826
  // numeric date extension
827
- return new Date(epochSec * 1000)
827
+ return new Date(Math.round(epochSec * 1000))
828
828
  }
829
829
 
830
830
  currentExtensions[2] = (buffer) => {
@@ -1007,17 +1007,36 @@ currentExtensionRanges.push((tag, input) => {
1007
1007
  return input
1008
1008
  })
1009
1009
 
1010
- export const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'].map(type => type + 'Array')
1011
- const typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 81, 82]
1010
+ const isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1
1011
+ export const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64']
1012
+ const typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 85, 86]
1012
1013
  for (let i = 0; i < typedArrays.length; i++) {
1013
1014
  registerTypedArray(typedArrays[i], typedArrayTags[i])
1014
1015
  }
1015
- function registerTypedArray(typedArrayName, tag) {
1016
- currentExtensions[tag] = (buffer) => {
1017
- if (!typedArrayName)
1018
- throw new Error('Could not find typed array for code ' + typeCode)
1019
- // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
1020
- return new glbl[typedArrayName](Uint8Array.prototype.slice.call(buffer, 0).buffer)
1016
+ function registerTypedArray(typedArrayId, tag, littleEndian) {
1017
+ let TypedArray = glbl[typedArrayId + 'Array']
1018
+ let bytesPerElement = TypedArray.BYTES_PER_ELEMENT
1019
+ for (let littleEndian = 0; littleEndian < 2; littleEndian++) {
1020
+ if (!littleEndian && bytesPerElement == 1)
1021
+ continue
1022
+ let sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3
1023
+ currentExtensions[littleEndian ? tag : (tag - 4)] = (bytesPerElement == 1 || littleEndian == isLittleEndianMachine) ? (buffer) => {
1024
+ if (!TypedArray)
1025
+ throw new Error('Could not find typed array for code ' + tag)
1026
+ // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
1027
+ return new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer)
1028
+ } : buffer => {
1029
+ if (!TypedArray)
1030
+ throw new Error('Could not find typed array for code ' + tag)
1031
+ let dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
1032
+ let elements = buffer.length >> sizeShift
1033
+ let ta = new TypedArray(elements)
1034
+ let method = dv['get' + typedArrayId]
1035
+ for (let i = 0; i < elements; i++) {
1036
+ ta[i] = method.call(dv, i << sizeShift, littleEndian)
1037
+ }
1038
+ return ta
1039
+ }
1021
1040
  }
1022
1041
  }
1023
1042
 
package/dist/index.js CHANGED
@@ -709,7 +709,7 @@
709
709
 
710
710
  currentExtensions[1] = (epochSec) => {
711
711
  // numeric date extension
712
- return new Date(epochSec * 1000)
712
+ return new Date(Math.round(epochSec * 1000))
713
713
  };
714
714
 
715
715
  currentExtensions[2] = (buffer) => {
@@ -892,18 +892,37 @@
892
892
  return input
893
893
  });
894
894
 
895
- const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'].map(type => type + 'Array');
896
- const typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 81, 82];
895
+ const isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1;
896
+ const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'];
897
+ const typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 85, 86];
897
898
  for (let i = 0; i < typedArrays.length; i++) {
898
899
  registerTypedArray(typedArrays[i], typedArrayTags[i]);
899
900
  }
900
- function registerTypedArray(typedArrayName, tag) {
901
- currentExtensions[tag] = (buffer) => {
902
- if (!typedArrayName)
903
- throw new Error('Could not find typed array for code ' + typeCode)
904
- // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
905
- return new glbl[typedArrayName](Uint8Array.prototype.slice.call(buffer, 0).buffer)
906
- };
901
+ function registerTypedArray(typedArrayId, tag, littleEndian) {
902
+ let TypedArray = glbl[typedArrayId + 'Array'];
903
+ let bytesPerElement = TypedArray.BYTES_PER_ELEMENT;
904
+ for (let littleEndian = 0; littleEndian < 2; littleEndian++) {
905
+ if (!littleEndian && bytesPerElement == 1)
906
+ continue
907
+ let sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3;
908
+ currentExtensions[littleEndian ? tag : (tag - 4)] = (bytesPerElement == 1 || littleEndian == isLittleEndianMachine) ? (buffer) => {
909
+ if (!TypedArray)
910
+ throw new Error('Could not find typed array for code ' + tag)
911
+ // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
912
+ return new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer)
913
+ } : buffer => {
914
+ if (!TypedArray)
915
+ throw new Error('Could not find typed array for code ' + tag)
916
+ let dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
917
+ let elements = buffer.length >> sizeShift;
918
+ let ta = new TypedArray(elements);
919
+ let method = dv['get' + typedArrayId];
920
+ for (let i = 0; i < elements; i++) {
921
+ ta[i] = method.call(dv, i << sizeShift, littleEndian);
922
+ }
923
+ return ta
924
+ };
925
+ }
907
926
  }
908
927
 
909
928
  function readBundleExt() {
@@ -1533,7 +1552,9 @@
1533
1552
  let extensionClass = extensionClasses[i];
1534
1553
  if (value instanceof extensionClass) {
1535
1554
  let extension = extensions[i];
1536
- let tag = extension.tag || extension.getTag && extension.getTag(value);
1555
+ let tag = extension.tag;
1556
+ if (tag == undefined)
1557
+ tag = extension.getTag && extension.getTag(value);
1537
1558
  if (tag < 0x18) {
1538
1559
  target[position$1++] = 0xc0 | tag;
1539
1560
  } else if (tag < 0x100) {
@@ -1866,7 +1887,7 @@
1866
1887
  case 'function': console.log(value);
1867
1888
  }
1868
1889
  }
1869
-
1890
+ const isLittleEndianMachine$1 = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1;
1870
1891
  extensionClasses = [ Date, Set, Error, RegExp, Tag, ArrayBuffer, ByteArray,
1871
1892
  Uint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,
1872
1893
  typeof BigUint64Array == 'undefined' ? function() {} : BigUint64Array, Int8Array, Int16Array, Int32Array,
@@ -1921,17 +1942,17 @@
1921
1942
  encode(arrayBuffer, encode, makeRoom) {
1922
1943
  writeBuffer(arrayBuffer, makeRoom);
1923
1944
  }
1924
- }, typedArrayEncoder(64),
1925
- typedArrayEncoder(68),
1926
- typedArrayEncoder(69),
1927
- typedArrayEncoder(70),
1928
- typedArrayEncoder(71),
1929
- typedArrayEncoder(72),
1930
- typedArrayEncoder(77),
1931
- typedArrayEncoder(78),
1932
- typedArrayEncoder(79),
1933
- typedArrayEncoder(81),
1934
- typedArrayEncoder(82),
1945
+ }, typedArrayEncoder(64, 1),
1946
+ typedArrayEncoder(68, 1),
1947
+ typedArrayEncoder(69, 2),
1948
+ typedArrayEncoder(70, 4),
1949
+ typedArrayEncoder(71, 8),
1950
+ typedArrayEncoder(72, 1),
1951
+ typedArrayEncoder(77, 2),
1952
+ typedArrayEncoder(78, 4),
1953
+ typedArrayEncoder(79, 8),
1954
+ typedArrayEncoder(85, 4),
1955
+ typedArrayEncoder(86, 8),
1935
1956
  {
1936
1957
  encode(sharedData, encode) { // write SharedData
1937
1958
  let packedValues = sharedData.packedValues || [];
@@ -1960,8 +1981,9 @@
1960
1981
  encode(new Tag(sharedData.version, 0x53687264));
1961
1982
  }
1962
1983
  }];
1963
-
1964
- function typedArrayEncoder(tag) {
1984
+ function typedArrayEncoder(tag, size) {
1985
+ if (!isLittleEndianMachine$1 && size > 1)
1986
+ tag -= 4; // the big endian equivalents are 4 less
1965
1987
  return {
1966
1988
  tag: tag,
1967
1989
  encode: function writeExtBuffer(typedArray, encode) {
package/dist/index.min.js CHANGED
@@ -1,52 +1,53 @@
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.CBOR={}))})(this,function(e){'use strict';var t=Math.log,s=Math.exp;function n(){try{let e=a();if(K&&(// bundled strings to skip past
2
- x=K.postBundlePosition),x==V)w=null,C=null,T&&(T=null);else if(x>V){// over read
3
- let e=new Error("Unexpected end of CBOR data");throw e.incomplete=!0,e}else if(!Q)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 b(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function a(){let e=C[x++],t=e>>5;if(e&=31,23<e)switch(e){case 24:e=C[x++];break;case 25:if(7==t)return c();e=N.getUint16(x),x+=2;break;case 26:if(7==t){let e=N.getFloat32(x);if(2<z.useFloat32){// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
5
- let t=ue[(127&C[x])<<1|C[x+1]>>7];return x+=4,(t*e+(0<e?.5:-.5)>>0)/t}return x+=4,e}e=N.getUint32(x),x+=4;break;case 27:if(7==t){let e=N.getFloat64(x);return x+=8,e}if(1<t){if(0<N.getUint32(x))throw new Error("JavaScript does not support arrays, maps, or strings with length over 4294967295");e=N.getUint32(x+4)}else z.int64AsNumber?(e=4294967296*N.getUint32(x),e+=N.getUint32(x+4)):e=N.getBigUint64(x);x+=8;break;case 31:// indefinite length
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.CBOR={}))})(this,function(e){'use strict';var t=Math.log,s=Math.round,n=Math.exp;function a(){try{let e=r();if(K&&(// bundled strings to skip past
2
+ B=K.postBundlePosition),B==x)T=null,V=null,Y&&(Y=null);else if(B>x){// over read
3
+ let e=new Error("Unexpected end of CBOR data");throw e.incomplete=!0,e}else if(!X)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 k(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function r(){let e=V[B++],t=e>>5;if(e&=31,23<e)switch(e){case 24:e=V[B++];break;case 25:if(7==t)return l();e=W.getUint16(B),B+=2;break;case 26:if(7==t){let e=W.getFloat32(B);if(2<q.useFloat32){// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
5
+ let t=le[(127&V[B])<<1|V[B+1]>>7];return B+=4,(t*e+(0<e?.5:-.5)>>0)/t}return B+=4,e}e=W.getUint32(B),B+=4;break;case 27:if(7==t){let e=W.getFloat64(B);return B+=8,e}if(1<t){if(0<W.getUint32(B))throw new Error("JavaScript does not support arrays, maps, or strings with length over 4294967295");e=W.getUint32(B+4)}else q.int64AsNumber?(e=4294967296*W.getUint32(B),e+=W.getUint32(B+4)):e=W.getBigUint64(B);B+=8;break;case 31:// indefinite length
6
6
  switch(t){case 2:// byte string
7
7
  case 3:// text string
8
8
  throw new Error("Indefinite length not supported for byte or text strings");case 4:// array
9
- let e,s=[],n=0;for(;(e=a())!=j;)s[n++]=e;return 4==t?s:3==t?s.join(""):Buffer.concat(s);case 5:// map
10
- let r;if(z.mapsAsObjects){let e={};if(z.keyMap)for(;(r=a())!=j;)e[z.decodeKey(r)]=a();else for(;(r=a())!=j;)e[r]=a();return e}else{W&&(z.mapsAsObjects=!0,W=!1);let e=new Map;if(z.keyMap)for(;(r=a())!=j;)e.set(z.decodeKey(r),a());else for(;(r=a())!=j;)e.set(r,a());return e}case 7:return j;default:throw new Error("Invalid major type for indefinite length "+t);}default:throw new Error("Unknown token "+e);}switch(t){case 0:// positive int
9
+ let e,s=[],n=0;for(;(e=r())!=w;)s[n++]=e;return 4==t?s:3==t?s.join(""):Buffer.concat(s);case 5:// map
10
+ let a;if(q.mapsAsObjects){let e={};if(q.keyMap)for(;(a=r())!=w;)e[q.decodeKey(a)]=r();else for(;(a=r())!=w;)e[a]=r();return e}else{z&&(q.mapsAsObjects=!0,z=!1);let e=new Map;if(q.keyMap)for(;(a=r())!=w;)e.set(q.decodeKey(a),r());else for(;(a=r())!=w;)e.set(a,r());return e}case 7:return w;default:throw new Error("Invalid major type for indefinite length "+t);}default:throw new Error("Unknown token "+e);}switch(t){case 0:// positive int
11
11
  return e;case 1:// negative int
12
12
  return~e;case 2:// buffer
13
- return u(e);case 3:// string
14
- if(G>=x)return F.slice(x-q,(x+=e)-q);if(0==G&&140>V&&32>e){// for small blocks, avoiding the overhead of the extract call is helpful
15
- let t=16>e?d(e):o(e);if(null!=t)return t}return ee(e);case 4:// array
13
+ return c(e);case 3:// string
14
+ if(H>=B)return F.slice(B-G,(B+=e)-G);if(0==H&&140>x&&32>e){// for small blocks, avoiding the overhead of the extract call is helpful
15
+ let t=16>e?u(e):d(e);if(null!=t)return t}return te(e);case 4:// array
16
16
  let s=Array(e);//if (currentDecoder.keyMap) for (let i = 0; i < token; i++) array[i] = currentDecoder.decodeKey(read())
17
17
  //else
18
- for(let t=0;t<e;t++)s[t]=a();return s;case 5:// map
19
- if(z.mapsAsObjects){let t={};if(z.keyMap)for(let s=0;s<e;s++)t[z.decodeKey(a())]=a();else for(let s=0;s<e;s++)t[a()]=a();return t}else{W&&(z.mapsAsObjects=!0,W=!1);let t=new Map;if(z.keyMap)for(let s=0;s<e;s++)t.set(z.decodeKey(a()),a());else for(let s=0;s<e;s++)t.set(a(),a());return t}case 6:// extension
20
- if(e>=L){let t=w[8191&e];// check record structures first
18
+ for(let t=0;t<e;t++)s[t]=r();return s;case 5:// map
19
+ if(q.mapsAsObjects){let t={};if(q.keyMap)for(let s=0;s<e;s++)t[q.decodeKey(r())]=r();else for(let s=0;s<e;s++)t[r()]=r();return t}else{z&&(q.mapsAsObjects=!0,z=!1);let t=new Map;if(q.keyMap)for(let s=0;s<e;s++)t.set(q.decodeKey(r()),r());else for(let s=0;s<e;s++)t.set(r(),r());return t}case 6:// extension
20
+ if(e>=P){let t=T[8191&e];// check record structures first
21
21
  // At some point we may provide an option for dynamic tag assignment with a range like token >= 8 && (token < 16 || (token > 0x80 && token < 0xc0) || (token > 0x130 && token < 0x4000))
22
- if(t)return t.read||(t.read=r(t)),t.read();if(65536>e){if(e==D)// we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)
23
- return re(a());if(e==B){let e=h(),t=a();for(let s=2;s<e;s++)re([t++,a()]);return a()}if(e==L)return f();if(z.getShared&&(y(),t=w[8191&e],t))return t.read||(t.read=r(t)),t.read()}}let n=H[e];if(n)return n.handlesRead?n(a):n(a());else{let t=a();for(let s,n=0;n<J.length;n++)if(s=J[n](e,t),void 0!==s)return s;return new ne(t,e)}case 7:// fixed value
22
+ if(t)return t.read||(t.read=i(t)),t.read();if(65536>e){if(e==D)// we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)
23
+ return ie(r());if(e==L){let e=y(),t=r();for(let s=2;s<e;s++)ie([t++,r()]);return r()}if(e==P)return h();if(q.getShared&&(m(),t=T[8191&e],t))return t.read||(t.read=i(t)),t.read()}}let n=J[e];if(n)return n.handlesRead?n(r):n(r());else{let t=r();for(let s,n=0;n<$.length;n++)if(s=$[n](e,t),void 0!==s)return s;return new ae(t,e)}case 7:// fixed value
24
24
  switch(e){case 20:return!1;case 21:return!0;case 22:return null;case 23:return;// undefined
25
- case 31:default:let t=(Y||p())[e];if(void 0!==t)return t;throw new Error("Unknown token "+e);}default:// negative int
26
- if(isNaN(e)){let e=new Error("Unexpected end of CBOR data");throw e.incomplete=!0,e}throw new Error("Unknown CBOR token "+e);}}function r(e){function t(){// get the array size from the header
27
- let e=C[x++];//let majorType = token >> 5
28
- if(e&=31,23<e)switch(e){case 24:e=C[x++];break;case 25:e=N.getUint16(x),x+=2;break;case 26:e=N.getUint32(x),x+=4;break;default:throw new Error("Expected array header, but got "+C[x-1]);}// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function
25
+ case 31:default:let t=(N||f())[e];if(void 0!==t)return t;throw new Error("Unknown token "+e);}default:// negative int
26
+ if(isNaN(e)){let e=new Error("Unexpected end of CBOR data");throw e.incomplete=!0,e}throw new Error("Unknown CBOR token "+e);}}function i(e){function t(){// get the array size from the header
27
+ let e=V[B++];//let majorType = token >> 5
28
+ if(e&=31,23<e)switch(e){case 24:e=V[B++];break;case 25:e=W.getUint16(B),B+=2;break;case 26:e=W.getUint32(B),B+=4;break;default:throw new Error("Expected array header, but got "+V[B-1]);}// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function
29
29
  let t=this.compiledReader;// first look to see if we have the fast compiled function
30
30
  for(;t;){// we have a fast compiled object literal reader
31
- if(t.propertyCount===e)return t(a);// with the right length, so we use it
31
+ if(t.propertyCount===e)return t(r);// with the right length, so we use it
32
32
  t=t.next}if(3<=this.slowReads++){// create a fast compiled reader
33
- let s=this.length==e?this:this.slice(0,e);return t=z.keyMap?new Function("r","return {"+s.map(e=>z.decodeKey(e)).map(e=>Z.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}"):new Function("r","return {"+s.map(e=>Z.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}"),this.compiledReader&&(t.next=this.compiledReader),t.propertyCount=e,this.compiledReader=t,t(a)}let s={};if(z.keyMap)for(let t=0;t<e;t++)s[z.decodeKey(this[t])]=a();else for(let t=0;t<e;t++)s[this[t]]=a();return s}return e.slowReads=0,t}function i(e){let t;if(16>e&&(t=d(e)))return t;if(64<e&&A)return A.decode(C.subarray(x,x+=e));const s=x+e,n=[];for(t="";x<s;){const e=C[x++];if(0==(128&e))n.push(e);else if(192==(224&e)){// 2 bytes
34
- const t=63&C[x++];n.push((31&e)<<6|t)}else if(224==(240&e)){// 3 bytes
35
- const t=63&C[x++],s=63&C[x++];n.push((31&e)<<12|t<<6|s)}else if(240==(248&e)){// 4 bytes
36
- const t=63&C[x++],s=63&C[x++],a=63&C[x++];let r=(7&e)<<18|t<<12|s<<6|a;65535<r&&(r-=65536,n.push(55296|1023&r>>>10),r=56320|1023&r),n.push(r)}else n.push(e);4096<=n.length&&(t+=te.apply(String,n),n.length=0)}return 0<n.length&&(t+=te.apply(String,n)),t}function o(e){let t=x,s=Array(e);for(let n=0;n<e;n++){const e=C[x++];if(0<(128&e))return void(x=t);s[n]=e}return te.apply(String,s)}function d(t){if(4>t){if(!(2>t)){let e=C[x++],s=C[x++];if(0<(128&e)||0<(128&s))return void(x-=2);if(3>t)return te(e,s);let n=C[x++];return 0<(128&n)?void(x-=3):te(e,s,n)}if(0===t)return"";else{let e=C[x++];return 1<(128&e)?void(x-=1):te(e)}}else{let s=C[x++],a=C[x++],r=C[x++],u=C[x++];if(0<(128&s)||0<(128&a)||0<(128&r)||0<(128&u))return void(x-=4);if(6>t){if(4===t)return te(s,a,r,u);else{let t=C[x++];return 0<(128&t)?void(x-=5):te(s,a,r,u,t)}}else if(8>t){let n=C[x++],e=C[x++];if(0<(128&n)||0<(128&e))return void(x-=6);if(7>t)return te(s,a,r,u,n,e);let i=C[x++];return 0<(128&i)?void(x-=7):te(s,a,r,u,n,e,i)}else{let d=C[x++],e=C[x++],c=C[x++],p=C[x++];if(0<(128&d)||0<(128&e)||0<(128&c)||0<(128&p))return void(x-=8);if(10>t){if(8===t)return te(s,a,r,u,d,e,c,p);else{let t=C[x++];return 0<(128&t)?void(x-=9):te(s,a,r,u,d,e,c,p,t)}}else if(12>t){let n=C[x++],i=C[x++];if(0<(128&n)||0<(128&i))return void(x-=10);if(11>t)return te(s,a,r,u,d,e,c,p,n,i);let o=C[x++];return 0<(128&o)?void(x-=11):te(s,a,r,u,d,e,c,p,n,i,o)}else{let g=C[x++],i=C[x++],f=C[x++],h=C[x++];if(0<(128&g)||0<(128&i)||0<(128&f)||0<(128&h))return void(x-=12);if(!(14>t)){let l=C[x++],y=C[x++];if(0<(128&l)||0<(128&y))return void(x-=14);if(15>t)return te(s,a,r,u,d,e,c,p,g,i,f,h,l,y);let n=C[x++];return 0<(128&n)?void(x-=15):te(s,a,r,u,d,e,c,p,g,i,f,h,l,y,n)}if(12===t)return te(s,a,r,u,d,e,c,p,g,i,f,h);else{let t=C[x++];return 0<(128&t)?void(x-=13):te(s,a,r,u,d,e,c,p,g,i,f,h,t)}}}}}function u(e){return z.copyBuffers?// specifically use the copying slice (not the node one)
37
- Uint8Array.prototype.slice.call(C,x,x+=e):C.subarray(x,x+=e)}function c(){let e,t=C[x++],n=C[x++],a=(t<<8)+n,r=31&a>>10,i=1023&a;return e=0==r?s(i,-24):31==r?0==i?1/0:NaN:s(i+1024,r-25),32768&a?-e:e}function l(e,t){return"string"==typeof e?e+t:e instanceof Array?e.concat(t):Object.assign({},e,t)}function p(){if(!Y)if(z.getShared)y();else throw new Error("No packed values available");return Y}function g(e,t){H[t]=t=>{if(!e)throw new Error("Could not find typed array for code "+typeCode);// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
38
- return new ae[e](Uint8Array.prototype.slice.call(t,0).buffer)}}function f(){let e=h(),t=x+a();for(let t,s=2;s<e;s++)// skip past bundles that were already read
33
+ let s=this.length==e?this:this.slice(0,e);return t=q.keyMap?new Function("r","return {"+s.map(e=>q.decodeKey(e)).map(e=>ee.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}"):new Function("r","return {"+s.map(e=>ee.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}"),this.compiledReader&&(t.next=this.compiledReader),t.propertyCount=e,this.compiledReader=t,t(r)}let s={};if(q.keyMap)for(let t=0;t<e;t++)s[q.decodeKey(this[t])]=r();else for(let t=0;t<e;t++)s[this[t]]=r();return s}return e.slowReads=0,t}function o(e){let t;if(16>e&&(t=u(e)))return t;if(64<e&&C)return C.decode(V.subarray(B,B+=e));const s=B+e,n=[];for(t="";B<s;){const e=V[B++];if(0==(128&e))n.push(e);else if(192==(224&e)){// 2 bytes
34
+ const t=63&V[B++];n.push((31&e)<<6|t)}else if(224==(240&e)){// 3 bytes
35
+ const t=63&V[B++],s=63&V[B++];n.push((31&e)<<12|t<<6|s)}else if(240==(248&e)){// 4 bytes
36
+ const t=63&V[B++],s=63&V[B++],a=63&V[B++];let r=(7&e)<<18|t<<12|s<<6|a;65535<r&&(r-=65536,n.push(55296|1023&r>>>10),r=56320|1023&r),n.push(r)}else n.push(e);4096<=n.length&&(t+=se.apply(String,n),n.length=0)}return 0<n.length&&(t+=se.apply(String,n)),t}function d(e){let t=B,s=Array(e);for(let n=0;n<e;n++){const e=V[B++];if(0<(128&e))return void(B=t);s[n]=e}return se.apply(String,s)}function u(t){if(4>t){if(!(2>t)){let e=V[B++],s=V[B++];if(0<(128&e)||0<(128&s))return void(B-=2);if(3>t)return se(e,s);let n=V[B++];return 0<(128&n)?void(B-=3):se(e,s,n)}if(0===t)return"";else{let e=V[B++];return 1<(128&e)?void(B-=1):se(e)}}else{let s=V[B++],a=V[B++],r=V[B++],u=V[B++];if(0<(128&s)||0<(128&a)||0<(128&r)||0<(128&u))return void(B-=4);if(6>t){if(4===t)return se(s,a,r,u);else{let t=V[B++];return 0<(128&t)?void(B-=5):se(s,a,r,u,t)}}else if(8>t){let n=V[B++],e=V[B++];if(0<(128&n)||0<(128&e))return void(B-=6);if(7>t)return se(s,a,r,u,n,e);let i=V[B++];return 0<(128&i)?void(B-=7):se(s,a,r,u,n,e,i)}else{let d=V[B++],e=V[B++],c=V[B++],p=V[B++];if(0<(128&d)||0<(128&e)||0<(128&c)||0<(128&p))return void(B-=8);if(10>t){if(8===t)return se(s,a,r,u,d,e,c,p);else{let t=V[B++];return 0<(128&t)?void(B-=9):se(s,a,r,u,d,e,c,p,t)}}else if(12>t){let n=V[B++],i=V[B++];if(0<(128&n)||0<(128&i))return void(B-=10);if(11>t)return se(s,a,r,u,d,e,c,p,n,i);let o=V[B++];return 0<(128&o)?void(B-=11):se(s,a,r,u,d,e,c,p,n,i,o)}else{let f=V[B++],i=V[B++],g=V[B++],h=V[B++];if(0<(128&f)||0<(128&i)||0<(128&g)||0<(128&h))return void(B-=12);if(!(14>t)){let l=V[B++],y=V[B++];if(0<(128&l)||0<(128&y))return void(B-=14);if(15>t)return se(s,a,r,u,d,e,c,p,f,i,g,h,l,y);let n=V[B++];return 0<(128&n)?void(B-=15):se(s,a,r,u,d,e,c,p,f,i,g,h,l,y,n)}if(12===t)return se(s,a,r,u,d,e,c,p,f,i,g,h);else{let t=V[B++];return 0<(128&t)?void(B-=13):se(s,a,r,u,d,e,c,p,f,i,g,h,t)}}}}}function c(e){return q.copyBuffers?// specifically use the copying slice (not the node one)
37
+ Uint8Array.prototype.slice.call(V,B,B+=e):V.subarray(B,B+=e)}function l(){let e,t=V[B++],s=V[B++],a=(t<<8)+s,r=31&a>>10,i=1023&a;return e=0==r?n(i,-24):31==r?0==i?1/0:NaN:n(i+1024,r-25),32768&a?-e:e}function p(e,t){return"string"==typeof e?e+t:e instanceof Array?e.concat(t):Object.assign({},e,t)}function f(){if(!N)if(q.getShared)m();else throw new Error("No packed values available");return N}function g(e,t){let s=re[e+"Array"],n=s.BYTES_PER_ELEMENT;for(let a=0;2>a;a++){if(!a&&1==n)continue;let r=2==n?1:4==n?2:3;J[a?t:t-4]=1==n||a==de?e=>{if(!s)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
38
+ return new s(Uint8Array.prototype.slice.call(e,0).buffer)}:n=>{if(!s)throw new Error("Could not find typed array for code "+t);let o=new DataView(n.buffer,n.byteOffset,n.byteLength),d=n.length>>r,u=new s(d),c=o["get"+e];for(let e=0;e<d;e++)u[e]=c.call(o,e<<r,a);return u}}}function h(){let e=y(),t=B+r();for(let t,s=2;s<e;s++)// skip past bundles that were already read
39
39
  // this will increment position, so must add to position afterwards
40
- t=h(),x+=t;let s=x;return x=t,K=[i(h()),i(h())],K.position0=0,K.position1=0,K.postBundlePosition=x,x=s,a()}function h(){let e=31&C[x++];return 23<e&&(24===e?e=C[x++]:25===e?(e=N.getUint16(x),x+=2):26===e?(e=N.getUint32(x),x+=4):void 0),e}function y(){if(z.getShared){let e=m(()=>(C=null,z.getShared()))||{},t=e.structures||[];z.sharedVersion=e.version,Y=z.sharedValues=e.packedValues,!0===w?z.structures=w=t:w.splice.apply(w,[0,t.length].concat(t))}}function m(e){let t=V,s=x,n=q,a=G,r=F,i=T,o=K,d=new Uint8Array(C.slice(0,V)),u=w,c=z,l=Q,p=e();return V=t,x=s,q=n,G=a,F=r,T=i,K=o,C=d,Q=l,w=u,z=c,N=new DataView(C.buffer,C.byteOffset,C.byteLength),p}function b(){C=null,T=null,w=null}function k(e){H[e.tag]=e.decode}function O(e){24>e?_e[Ee++]=128|e:256>e?(_e[Ee++]=152,_e[Ee++]=e):65536>e?(_e[Ee++]=153,_e[Ee++]=e>>8,_e[Ee++]=255&e):(_e[Ee++]=154,Ie.setUint32(Ee,e),Ee+=4)}function R(e,t){switch(typeof e){case"string":if(3<e.length){if(-1<t.objectMap[e]||t.values.length>=t.maxValues)return;let s=t.get(e);if(s)2==++s.count&&t.values.push(e);else if(t.set(e,{count:1}),t.samplingPackedValues){let s=t.samplingPackedValues.get(e);s?s.count++:t.samplingPackedValues.set(e,{count:1})}}break;case"object":if(e)if(e instanceof Array)for(let s=0,n=e.length;s<n;s++)R(e[s],t);else{let n=!t.encoder.useRecords;for(var s in e)e.hasOwnProperty(s)&&(n&&R(s,t),R(e[s],t))}break;case"function":console.log(e);}}function M(e){return{tag:e,encode:function(e,t){let s=e.byteLength,n=e.byteOffset||0,a=e.buffer||e;t(ke?Buffer.from(a,n,s):new Uint8Array(a,n,s))}}}function S(e,t){let s=e.byteLength;24>s?_e[Ee++]=64+s:256>s?(_e[Ee++]=88,_e[Ee++]=s):65536>s?(_e[Ee++]=89,_e[Ee++]=s>>8,_e[Ee++]=255&s):(_e[Ee++]=90,Ie.setUint32(Ee,s),Ee+=4),Ee+s>=_e.length&&t(Ee+s),_e.set(e,Ee),Ee+=s}function _(e,t){// insert the ids that need to be referenced for structured clones
40
+ t=y(),B+=t;let s=B;return B=t,K=[o(y()),o(y())],K.position0=0,K.position1=0,K.postBundlePosition=B,B=s,r()}function y(){let e=31&V[B++];return 23<e&&(24===e?e=V[B++]:25===e?(e=W.getUint16(B),B+=2):26===e?(e=W.getUint32(B),B+=4):void 0),e}function m(){if(q.getShared){let e=b(()=>(V=null,q.getShared()))||{},t=e.structures||[];q.sharedVersion=e.version,N=q.sharedValues=e.packedValues,!0===T?q.structures=T=t:T.splice.apply(T,[0,t.length].concat(t))}}function b(e){let t=x,s=B,n=G,a=H,r=F,i=Y,o=K,d=new Uint8Array(V.slice(0,x)),u=T,c=q,l=X,p=e();return x=t,B=s,G=n,H=a,F=r,Y=i,K=o,V=d,X=l,T=u,q=c,W=new DataView(V.buffer,V.byteOffset,V.byteLength),p}function k(){V=null,Y=null,T=null}function O(e){J[e.tag]=e.decode}function R(e){24>e?Ie[Ae++]=128|e:256>e?(Ie[Ae++]=152,Ie[Ae++]=e):65536>e?(Ie[Ae++]=153,Ie[Ae++]=e>>8,Ie[Ae++]=255&e):(Ie[Ae++]=154,Ue.setUint32(Ae,e),Ae+=4)}function M(e,t){switch(typeof e){case"string":if(3<e.length){if(-1<t.objectMap[e]||t.values.length>=t.maxValues)return;let s=t.get(e);if(s)2==++s.count&&t.values.push(e);else if(t.set(e,{count:1}),t.samplingPackedValues){let s=t.samplingPackedValues.get(e);s?s.count++:t.samplingPackedValues.set(e,{count:1})}}break;case"object":if(e)if(e instanceof Array)for(let s=0,n=e.length;s<n;s++)M(e[s],t);else{let n=!t.encoder.useRecords;for(var s in e)e.hasOwnProperty(s)&&(n&&M(s,t),M(e[s],t))}break;case"function":console.log(e);}}function S(e,t){// the big endian equivalents are 4 less
41
+ return!Le&&1<t&&(e-=4),{tag:e,encode:function(e,t){let s=e.byteLength,n=e.byteOffset||0,a=e.buffer||e;t(Re?Buffer.from(a,n,s):new Uint8Array(a,n,s))}}}function _(e,t){let s=e.byteLength;24>s?Ie[Ae++]=64+s:256>s?(Ie[Ae++]=88,Ie[Ae++]=s):65536>s?(Ie[Ae++]=89,Ie[Ae++]=s>>8,Ie[Ae++]=255&s):(Ie[Ae++]=90,Ue.setUint32(Ae,s),Ae+=4),Ae+s>=Ie.length&&t(Ae+s),Ie.set(e,Ae),Ae+=s}function E(e,t){// insert the ids that need to be referenced for structured clones
41
42
  let s,n=2*t.length,a=e.length-n;t.sort((e,t)=>e.offset>t.offset?1:-1);for(let s,n=0;n<t.length;n++){s=t[n],s.id=n;for(let t of s.references)e[t++]=n>>8,e[t]=255&n}for(;s=t.pop();){let t=s.offset;e.copyWithin(t+n,t,a),n-=2;let r=t+n;// http://cbor.schmorp.de/value-sharing
42
- e[r++]=216,e[r++]=28,a=t}return e}function I(e,t){Ie.setUint32(ve.position+e,Ee-ve.position-e+1);// the offset to bundle
43
- let s=ve;ve=null,t(s[0]),t(s[1])}function U(e){if(e.Class){if(!e.encode)throw new Error("Extension has no encode function");be.unshift(e.Class),me.unshift(e)}k(e)}function*E(e,t){const s=new Ce(t);for(const n of e)yield s.encode(n)}async function*v(e,t){const s=new Ce(t);for await(const n of e)yield s.encode(n)}/**
43
+ e[r++]=216,e[r++]=28,a=t}return e}function I(e,t){Ue.setUint32(Ce.position+e,Ae-Ce.position-e+1);// the offset to bundle
44
+ let s=Ce;Ce=null,t(s[0]),t(s[1])}function U(e){if(e.Class){if(!e.encode)throw new Error("Extension has no encode function");Oe.unshift(e.Class),ke.unshift(e)}O(e)}function*v(e,t){const s=new xe(t);for(const n of e)yield s.encode(n)}async function*A(e,t){const s=new xe(t);for await(const n of e)yield s.encode(n)}/**
44
45
  * Given an Iterable/Iterator input which yields buffers, returns an IterableIterator which yields sync decoded objects
45
46
  * Or, given an Async Iterable/Iterator which yields promises resolving in buffers, returns an AsyncIterableIterator.
46
47
  * @param {Iterable|Iterator|AsyncIterable|AsyncIterableIterator} bufferIterator
47
48
  * @param {object} [options] - Decoder options
48
49
  * @returns {IterableIterator|Promise.<AsyncIterableIterator}
49
- */let A;try{A=new TextDecoder}catch(e){}let C,V,x=0;const B=57342,D=57343,L=57337,P=6,j={};let w,F,K,T,Y,N,W,z={},q=0,G=0,H=[],J=[],$={useRecords:!1,mapsAsObjects:!0},Q=!1;class X{constructor(e){if(e&&((e.keyMap||e._keyMap)&&!e.useRecords&&(e.useRecords=!1,e.mapsAsObjects=!0),!1===e.useRecords&&void 0===e.mapsAsObjects&&(e.mapsAsObjects=!0),e.getStructures&&(e.getShared=e.getStructures),e.getShared&&!e.structures&&((e.structures=[]).uninitialized=!0),e.keyMap))// this is what we use to denote an uninitialized structures
50
+ */let C;try{C=new TextDecoder}catch(e){}let V,x,B=0;const L=57342,D=57343,P=57337,j=6,w={};let T,F,K,Y,N,W,z,q={},G=0,H=0,J=[],$=[],Q={useRecords:!1,mapsAsObjects:!0},X=!1;class Z{constructor(e){if(e&&((e.keyMap||e._keyMap)&&!e.useRecords&&(e.useRecords=!1,e.mapsAsObjects=!0),!1===e.useRecords&&void 0===e.mapsAsObjects&&(e.mapsAsObjects=!0),e.getStructures&&(e.getShared=e.getStructures),e.getShared&&!e.structures&&((e.structures=[]).uninitialized=!0),e.keyMap))// this is what we use to denote an uninitialized structures
50
51
  {this.mapKey=new Map;for(let[t,s]of Object.entries(e.keyMap))this.mapKey.set(s,t)}Object.assign(this,e)}/*
51
52
  decodeKey(key) {
52
53
  return this.keyMap
@@ -56,32 +57,32 @@ let s=ve;ve=null,t(s[0]),t(s[1])}function U(e){if(e.Class){if(!e.encode)throw ne
56
57
  */decodeKey(e){return this.keyMap?this.mapKey.get(e)||e:e}encodeKey(e){return this.keyMap&&this.keyMap.hasOwnProperty(e)?this.keyMap[e]:e}encodeKeys(e){if(!this._keyMap)return e;let t=new Map;for(let[s,n]of Object.entries(e))t.set(this._keyMap.hasOwnProperty(s)?this._keyMap[s]:s,n);return t}decodeKeys(e){if(!this._keyMap||"Map"!=e.constructor.name)return e;if(!this._mapKey){this._mapKey=new Map;for(let[e,t]of Object.entries(this._keyMap))this._mapKey.set(t,e)}let t={};//map.forEach((v,k) => res[Object.keys(this._keyMap)[Object.values(this._keyMap).indexOf(k)] || k] = v)
57
58
  return e.forEach((e,s)=>t[this._mapKey.has(s)?this._mapKey.get(s):s]=e),t}mapDecode(e){let t=this.decode(e);if(this._keyMap)//Experiemntal support for Optimised KeyMap decoding
58
59
  switch(t.constructor.name){case"Array":return t.map(e=>this.decodeKeys(e));//case 'Map': return this.decodeKeys(res)
59
- }return t}decode(e,t){if(C)// re-entrant execution, save the state and restore it after we do this decode
60
- return m(()=>(b(),this?this.decode(e,t):X.prototype.decode.call($,e,t)));V=-1<t?t:e.length,x=0,G=0,F=null,K=null,C=e;// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend
60
+ }return t}decode(e,t){if(V)// re-entrant execution, save the state and restore it after we do this decode
61
+ return b(()=>(k(),this?this.decode(e,t):Z.prototype.decode.call(Q,e,t)));x=-1<t?t:e.length,B=0,H=0,F=null,K=null,V=e;// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend
61
62
  // technique for getting data from a database where it can be copied into an existing buffer instead of creating
62
63
  // new ones
63
- try{N=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(C=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 X){if(z=this,Y=this.sharedValues&&(this.pack?Array(this.maxPrivatePackedValues||16).concat(this.sharedValues):this.sharedValues),this.structures)return w=this.structures,n();(!w||0<w.length)&&(w=[])}else z=$,(!w||0<w.length)&&(w=[]),Y=null;return n()}decodeMultiple(e,t){let s,a=0;try{let r=e.length;Q=!0;let i=this?this.decode(e,r):ce.decode(e,r);if(t){if(!1===t(i))return;for(;x<r;)if(a=x,!1===t(n()))return}else{for(s=[i];x<r;)a=x,s.push(n());return s}}catch(e){throw e.lastPosition=a,e.values=s,e}finally{Q=!1,b()}}}const Z=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;let ee=i,te=String.fromCharCode,se=Array(4096);class ne{constructor(e,t){this.value=e,this.tag=t}}let ae="object"==typeof self?self:global;H[0]=e=>new Date(e),H[1]=e=>new Date(1e3*e),H[2]=e=>{// bigint extension
64
- let t=BigInt(0);for(let s=0,n=e.byteLength;s<n;s++)t=BigInt(e[s])+t<<BigInt(8);return t},H[3]=e=>BigInt(-1)-H[2](e),H[4]=e=>+(e[1]+"e"+e[0]),H[5]=e=>e[1]*s(e[0]*t(2));// the registration of the record definition extension
65
- const re=e=>{let t=e[0]-57344,s=e[1],n=w[t];n&&n.isShared&&((w.restoreStructures||(w.restoreStructures=[]))[t]=n),w[t]=s,s.read=r(s);let a={};if(z.keyMap)for(let t,n=2,r=e.length;n<r;n++)t=z.decodeKey(s[n-2]),a[t]=e[n];else for(let t,n=2,r=e.length;n<r;n++)t=s[n-2],a[t]=e[n];return a};H[105]=re,H[14]=e=>K?K[0].slice(K.position0,K.position0+=e):new ne(e,14),H[15]=e=>K?K[1].slice(K.position1,K.position1+=e):new ne(e,15),H[27]=e=>(ae[e[0]]||Error)(e[1],e[2]);const ie=e=>{if(132!=C[x++])throw new Error("Packed values structure must be followed by a 4 element array");let t=e();// packed values
66
- return Y=Y?t.concat(Y.slice(t.length)):t,Y.prefixes=e(),Y.suffixes=e(),e();// read the rump
67
- };ie.handlesRead=!0,H[51]=ie,H[P]=e=>{// packed reference
68
- if(!Y)if(z.getShared)y();else return new ne(e,P);if("number"==typeof e)return Y[16+(0<=e?2*e:-2*e-1)];throw new Error("No support for non-integer packed references yet")},H[25]=e=>stringRefs[e],H[256]=e=>{stringRefs=[];try{return e()}finally{stringRefs=null}},H[256].handlesRead=!0,H[28]=e=>{T||(T=new Map,T.id=0);let t,s=T.id++,n=C[x];t=4==n>>5?[]:{};let a={target:t};// a placeholder object
69
- T.set(s,a);let r=e();// read the next value as the target object to id
64
+ try{W=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(V=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 Z){if(q=this,N=this.sharedValues&&(this.pack?Array(this.maxPrivatePackedValues||16).concat(this.sharedValues):this.sharedValues),this.structures)return T=this.structures,a();(!T||0<T.length)&&(T=[])}else q=Q,(!T||0<T.length)&&(T=[]),N=null;return a()}decodeMultiple(e,t){let s,n=0;try{let r=e.length;X=!0;let i=this?this.decode(e,r):pe.decode(e,r);if(t){if(!1===t(i))return;for(;B<r;)if(n=B,!1===t(a()))return}else{for(s=[i];B<r;)n=B,s.push(a());return s}}catch(e){throw e.lastPosition=n,e.values=s,e}finally{X=!1,k()}}}const ee=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;let te=o,se=String.fromCharCode,ne=Array(4096);class ae{constructor(e,t){this.value=e,this.tag=t}}let re="object"==typeof self?self:global;J[0]=e=>new Date(e),J[1]=e=>new Date(s(1e3*e)),J[2]=e=>{// bigint extension
65
+ let t=BigInt(0);for(let s=0,n=e.byteLength;s<n;s++)t=BigInt(e[s])+t<<BigInt(8);return t},J[3]=e=>BigInt(-1)-J[2](e),J[4]=e=>+(e[1]+"e"+e[0]),J[5]=e=>e[1]*n(e[0]*t(2));// the registration of the record definition extension
66
+ const ie=e=>{let t=e[0]-57344,s=e[1],n=T[t];n&&n.isShared&&((T.restoreStructures||(T.restoreStructures=[]))[t]=n),T[t]=s,s.read=i(s);let a={};if(q.keyMap)for(let t,n=2,r=e.length;n<r;n++)t=q.decodeKey(s[n-2]),a[t]=e[n];else for(let t,n=2,r=e.length;n<r;n++)t=s[n-2],a[t]=e[n];return a};J[105]=ie,J[14]=e=>K?K[0].slice(K.position0,K.position0+=e):new ae(e,14),J[15]=e=>K?K[1].slice(K.position1,K.position1+=e):new ae(e,15),J[27]=e=>(re[e[0]]||Error)(e[1],e[2]);const oe=e=>{if(132!=V[B++])throw new Error("Packed values structure must be followed by a 4 element array");let t=e();// packed values
67
+ return N=N?t.concat(N.slice(t.length)):t,N.prefixes=e(),N.suffixes=e(),e();// read the rump
68
+ };oe.handlesRead=!0,J[51]=oe,J[j]=e=>{// packed reference
69
+ if(!N)if(q.getShared)m();else return new ae(e,j);if("number"==typeof e)return N[16+(0<=e?2*e:-2*e-1)];throw new Error("No support for non-integer packed references yet")},J[25]=e=>stringRefs[e],J[256]=e=>{stringRefs=[];try{return e()}finally{stringRefs=null}},J[256].handlesRead=!0,J[28]=e=>{Y||(Y=new Map,Y.id=0);let t,s=Y.id++,n=V[B];t=4==n>>5?[]:{};let a={target:t};// a placeholder object
70
+ Y.set(s,a);let r=e();// read the next value as the target object to id
70
71
  return a.used?Object.assign(t,r):(a.target=r,r);// no cycle, can just use the returned read object
71
- },H[28].handlesRead=!0,H[29]=e=>{// sharedref http://cbor.schmorp.de/value-sharing (for structured clones)
72
- let t=T.get(e);return t.used=!0,t.target},H[258]=e=>new Set(e),(H[259]=e=>(z.mapsAsObjects&&(z.mapsAsObjects=!1,W=!0),e())).handlesRead=!0;J.push((e,t)=>225<=e&&255>=e?l(p().prefixes[e-224],t):28704<=e&&32767>=e?l(p().prefixes[e-28672],t):1879052288<=e&&2147483647>=e?l(p().prefixes[e-1879048192],t):216<=e&&223>=e?l(t,p().suffixes[e-216]):27647<=e&&28671>=e?l(t,p().suffixes[e-27639]):1811940352<=e&&1879048191>=e?l(t,p().suffixes[e-1811939328]):e==1399353956?{packedValues:Y,structures:w.slice(0),version:t}:55799==e?t:void 0);const oe=["Uint8","Uint8Clamped","Uint16","Uint32","BigUint64","Int8","Int16","Int32","BigInt64","Float32","Float64"].map(e=>e+"Array"),de=[64,68,69,70,71,72,77,78,79,81,82];for(let t=0;t<oe.length;t++)g(oe[t],de[t]);const ue=Array(147);// this is a table matching binary exponents to the multiplier to determine significant digit rounding
73
- for(let t=0;256>t;t++)ue[t]=+("1e"+Math.floor(45.15-.30103*t));let ce=new X({useRecords:!1});const le=ce.decode,pe=ce.decodeMultiple,ge={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let fe,he=new Float32Array(1),ye=new Uint8Array(he.buffer,0,4);try{fe=new TextEncoder}catch(e){}let me,be;const ke="undefined"!=typeof Buffer,Oe=ke?Buffer.allocUnsafeSlow:Uint8Array,Re=ke?Buffer:Uint8Array,Me=256,Se=ke?4294967296:2144337920;let _e,Ie,Ue,Ee=0,ve=null;const Ae=Symbol("record-id");class Ce extends X{constructor(e){super(e),this.offset=0;let t,s,n,a,r;e=e||{};let i=Re.prototype.utf8Write?function(e,t,s){return _e.utf8Write(e,t,s)}:!!(fe&&fe.encodeInto)&&function(e,t){return fe.encodeInto(e,_e.subarray(t)).written},o=this,d=e.structures||e.saveStructures,u=e.maxSharedStructures;if(null==u&&(u=d?128:0),8190<u)throw new Error("Maximum maxSharedStructure is 8190");let c=e.sequential;c&&(u=0),this.structures||(this.structures=[]),this.saveStructures&&(this.saveShared=this.saveStructures);let l,p,g,f=e.sharedValues;if(f){g=Object.create(null);for(let e=0,t=f.length;e<t;e++)g[f[e]]=e}let h=[],y=0,m=0;this.mapEncode=function(e,t){// Experimental support for premapping keys using _keyMap instad of keyMap - not optiimised yet)
72
+ },J[28].handlesRead=!0,J[29]=e=>{// sharedref http://cbor.schmorp.de/value-sharing (for structured clones)
73
+ let t=Y.get(e);return t.used=!0,t.target},J[258]=e=>new Set(e),(J[259]=e=>(q.mapsAsObjects&&(q.mapsAsObjects=!1,z=!0),e())).handlesRead=!0;$.push((e,t)=>225<=e&&255>=e?p(f().prefixes[e-224],t):28704<=e&&32767>=e?p(f().prefixes[e-28672],t):1879052288<=e&&2147483647>=e?p(f().prefixes[e-1879048192],t):216<=e&&223>=e?p(t,f().suffixes[e-216]):27647<=e&&28671>=e?p(t,f().suffixes[e-27639]):1811940352<=e&&1879048191>=e?p(t,f().suffixes[e-1811939328]):e==1399353956?{packedValues:N,structures:T.slice(0),version:t}:55799==e?t:void 0);const de=1==new Uint8Array(new Uint16Array([1]).buffer)[0],ue=["Uint8","Uint8Clamped","Uint16","Uint32","BigUint64","Int8","Int16","Int32","BigInt64","Float32","Float64"],ce=[64,68,69,70,71,72,77,78,79,85,86];for(let t=0;t<ue.length;t++)g(ue[t],ce[t]);const le=Array(147);// this is a table matching binary exponents to the multiplier to determine significant digit rounding
74
+ for(let t=0;256>t;t++)le[t]=+("1e"+Math.floor(45.15-.30103*t));let pe=new Z({useRecords:!1});const fe=pe.decode,ge=pe.decodeMultiple,he={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let ye,me=new Float32Array(1),be=new Uint8Array(me.buffer,0,4);try{ye=new TextEncoder}catch(e){}let ke,Oe;const Re="undefined"!=typeof Buffer,Me=Re?Buffer.allocUnsafeSlow:Uint8Array,Se=Re?Buffer:Uint8Array,_e=256,Ee=Re?4294967296:2144337920;let Ie,Ue,ve,Ae=0,Ce=null;const Ve=Symbol("record-id");class xe extends Z{constructor(e){super(e),this.offset=0;let t,n,a,r,i;e=e||{};let o=Se.prototype.utf8Write?function(e,t,s){return Ie.utf8Write(e,t,s)}:!!(ye&&ye.encodeInto)&&function(e,t){return ye.encodeInto(e,Ie.subarray(t)).written},d=this,u=e.structures||e.saveStructures,c=e.maxSharedStructures;if(null==c&&(c=u?128:0),8190<c)throw new Error("Maximum maxSharedStructure is 8190");let l=e.sequential;l&&(c=0),this.structures||(this.structures=[]),this.saveStructures&&(this.saveShared=this.saveStructures);let p,f,g,h=e.sharedValues;if(h){g=Object.create(null);for(let e=0,t=h.length;e<t;e++)g[h[e]]=e}let y=[],m=0,b=0;this.mapEncode=function(e,t){// Experimental support for premapping keys using _keyMap instad of keyMap - not optiimised yet)
74
75
  if(this._keyMap&&!this._mapped)//console.log('encoding ', value)
75
76
  switch(e.constructor.name){case"Array":e=e.map(e=>this.encodeKeys(e));//case 'Map':
76
77
  // value = this.encodeKeys(value)
77
78
  // break
78
79
  }//this._mapped = true
79
- return this.encode(e,t)},this.encode=function(i,d){if(_e||(_e=new Oe(8192),Ie=new DataView(_e.buffer,0,8192),Ee=0),Ue=_e.length-10,2048>Ue-Ee?(_e=new Oe(_e.length),Ie=new DataView(_e.buffer,0,_e.length),Ue=_e.length-10,Ee=0):d===we&&(Ee=2147483640&Ee+7),t=Ee,o.useSelfDescribedHeader&&(Ie.setUint32(Ee,3654940416),Ee+=3),r=o.structuredClone?new Map:null,o.bundleStrings&&"string"!=typeof i?(ve=[],ve.size=1/0):ve=null,s=o.structures,s){if(s.uninitialized){let e=o.getShared()||{};o.structures=s=e.structures||[],o.sharedVersion=e.version;let t=o.sharedValues=e.packedValues;if(t){g={};for(let e=0,s=t.length;e<s;e++)g[t[e]]=e}}let e=s.length;if(e>u&&!c&&(e=u),!s.transitions){s.transitions=Object.create(null);for(let t,n=0;n<e;n++){//console.log('shared struct keys:', keys)
80
- if(t=s[n],!t)continue;let e,a=s.transitions;for(let s=0,r=t.length;s<r;s++){void 0===a[Ae]&&(a[Ae]=n);let r=t[s];e=a[r],e||(e=a[r]=Object.create(null)),a=e}a[Ae]=1048576|n}}c||(s.nextId=e)}if(n&&(n=!1),a=s||[],p=g,e.pack){let t=new Map;if(t.values=[],t.encoder=o,t.maxValues=e.maxPrivatePackedValues||(g?16:1/0),t.objectMap=g||!1,t.samplingPackedValues=l,R(i,t),0<t.values.length){_e[Ee++]=216,_e[Ee++]=51,O(4);let e=t.values;b(e),O(0),O(0),p=Object.create(g||null);for(let t=0,s=e.length;t<s;t++)p[e[t]]=t}}try{// update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially
81
- if(b(i),ve&&I(t,b),o.offset=Ee,r&&r.idsToInsert){Ee+=2*r.idsToInsert.length,Ee>Ue&&M(Ee),o.offset=Ee;let e=_(_e.subarray(t,Ee),r.idsToInsert);return r=null,e}return d&we?(_e.start=t,_e.end=Ee,_e):_e.subarray(t,Ee);// position can change if we call encode again in saveShared, so we get the buffer now
82
- }finally{if(s)if(10>m&&m++,s.length>u&&(s.length=u),1e4<y)s.transitions=null,m=0,y=0,0<h.length&&(h=[]);else if(0<h.length&&!c){for(let e=0,t=h.length;e<t;e++)h[e][Ae]=void 0;h=[]}if(n&&o.saveShared){o.structures.length>u&&(o.structures=o.structures.slice(0,u));// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save
83
- let e=_e.subarray(t,Ee);return!1===o.updateSharedData()?o.encode(i):e;// re-encode if it fails
84
- }d&Fe&&(Ee=t)}},this.findCommonStringsToPack=()=>(l=new Map,g||(g=Object.create(null)),e=>{let t=e&&e.threshold||4,s=this.pack?e.maxPrivatePackedValues||16:0;f||(f=this.sharedValues=[]);for(let[a,r]of l)r.count>t&&(g[a]=s++,f.push(a),n=!0);for(;this.saveShared&&!1===this.updateSharedData(););l=null});const b=s=>{Ee>Ue&&(_e=M(Ee));var n,a=typeof s;if("string"==a){if(p){let t=p[s];if(0<=t)return void(16>t?_e[Ee++]=t+224:(_e[Ee++]=198,1&t?b(15-t>>1):b(t-16>>1)));/* } else if (packedStatus.serializationId != serializationId) {
80
+ return this.encode(e,t)},this.encode=function(s,o){if(Ie||(Ie=new Me(8192),Ue=new DataView(Ie.buffer,0,8192),Ae=0),ve=Ie.length-10,2048>ve-Ae?(Ie=new Me(Ie.length),Ue=new DataView(Ie.buffer,0,Ie.length),ve=Ie.length-10,Ae=0):o===Ke&&(Ae=2147483640&Ae+7),t=Ae,d.useSelfDescribedHeader&&(Ue.setUint32(Ae,3654940416),Ae+=3),i=d.structuredClone?new Map:null,d.bundleStrings&&"string"!=typeof s?(Ce=[],Ce.size=1/0):Ce=null,n=d.structures,n){if(n.uninitialized){let e=d.getShared()||{};d.structures=n=e.structures||[],d.sharedVersion=e.version;let t=d.sharedValues=e.packedValues;if(t){g={};for(let e=0,s=t.length;e<s;e++)g[t[e]]=e}}let e=n.length;if(e>c&&!l&&(e=c),!n.transitions){n.transitions=Object.create(null);for(let t,s=0;s<e;s++){//console.log('shared struct keys:', keys)
81
+ if(t=n[s],!t)continue;let e,a=n.transitions;for(let n=0,r=t.length;n<r;n++){void 0===a[Ve]&&(a[Ve]=s);let r=t[n];e=a[r],e||(e=a[r]=Object.create(null)),a=e}a[Ve]=1048576|s}}l||(n.nextId=e)}if(a&&(a=!1),r=n||[],f=g,e.pack){let t=new Map;if(t.values=[],t.encoder=d,t.maxValues=e.maxPrivatePackedValues||(g?16:1/0),t.objectMap=g||!1,t.samplingPackedValues=p,M(s,t),0<t.values.length){Ie[Ae++]=216,Ie[Ae++]=51,R(4);let e=t.values;k(e),R(0),R(0),f=Object.create(g||null);for(let t=0,s=e.length;t<s;t++)f[e[t]]=t}}try{// update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially
82
+ if(k(s),Ce&&I(t,k),d.offset=Ae,i&&i.idsToInsert){Ae+=2*i.idsToInsert.length,Ae>ve&&S(Ae),d.offset=Ae;let e=E(Ie.subarray(t,Ae),i.idsToInsert);return i=null,e}return o&Ke?(Ie.start=t,Ie.end=Ae,Ie):Ie.subarray(t,Ae);// position can change if we call encode again in saveShared, so we get the buffer now
83
+ }finally{if(n)if(10>b&&b++,n.length>c&&(n.length=c),1e4<m)n.transitions=null,b=0,m=0,0<y.length&&(y=[]);else if(0<y.length&&!l){for(let e=0,t=y.length;e<t;e++)y[e][Ve]=void 0;y=[]}if(a&&d.saveShared){d.structures.length>c&&(d.structures=d.structures.slice(0,c));// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save
84
+ let e=Ie.subarray(t,Ae);return!1===d.updateSharedData()?d.encode(s):e;// re-encode if it fails
85
+ }o&Ye&&(Ae=t)}},this.findCommonStringsToPack=()=>(p=new Map,g||(g=Object.create(null)),e=>{let t=e&&e.threshold||4,s=this.pack?e.maxPrivatePackedValues||16:0;h||(h=this.sharedValues=[]);for(let[n,r]of p)r.count>t&&(g[n]=s++,h.push(n),a=!0);for(;this.saveShared&&!1===this.updateSharedData(););p=null});const k=s=>{Ae>ve&&(Ie=S(Ae));var n,a=typeof s;if("string"==a){if(f){let t=f[s];if(0<=t)return void(16>t?Ie[Ae++]=t+224:(Ie[Ae++]=198,1&t?k(15-t>>1):k(t-16>>1)));/* } else if (packedStatus.serializationId != serializationId) {
85
86
  packedStatus.serializationId = serializationId
86
87
  packedStatus.count = 1
87
88
  if (options.sharedPack) {
@@ -94,30 +95,30 @@ let e=_e.subarray(t,Ee);return!1===o.updateSharedData()?o.encode(i):e;// re-enco
94
95
 
95
96
  }
96
97
  }
97
- } // else any in-doc incrementation?*/if(l&&!e.pack){let e=l.get(s);e?e.count++:l.set(s,{count:1})}}let a=s.length;if(ve&&4<=a&&1024>a){if((ve.size+=a)>61440){let e,s=(ve[0]?3*ve[0].length+ve[1].length:0)+10;Ee+s>Ue&&(_e=M(Ee+s)),_e[Ee++]=217,_e[Ee++]=223,_e[Ee++]=249,_e[Ee++]=ve.position?132:130,_e[Ee++]=26,e=Ee-t,Ee+=4,ve.position&&I(t,b),ve=["",""],ve.size=0,ve.position=e}let e=/[\u0080-\uFFFF]/.test(s);return ve[e?0:1]+=s,_e[Ee++]=e?206:207,void b(a)}let r=32>a?1:256>a?2:65536>a?3:5;// first we estimate the header size, so we can write to the correct location
98
- let o=3*a;if(Ee+o>Ue&&(_e=M(Ee+o)),64>a||!i){let e,t,i,o=Ee+r;for(e=0;e<a;e++)t=s.charCodeAt(e),128>t?_e[o++]=t:2048>t?(_e[o++]=192|t>>6,_e[o++]=128|63&t):55296==(64512&t)&&56320==(64512&(i=s.charCodeAt(e+1)))?(t=65536+((1023&t)<<10)+(1023&i),e++,_e[o++]=240|t>>18,_e[o++]=128|63&t>>12,_e[o++]=128|63&t>>6,_e[o++]=128|63&t):(_e[o++]=224|t>>12,_e[o++]=128|63&t>>6,_e[o++]=128|63&t);n=o-Ee-r}else n=i(s,Ee+r,o);24>n?_e[Ee++]=96|n:256>n?(2>r&&_e.copyWithin(Ee+2,Ee+1,Ee+1+n),_e[Ee++]=120,_e[Ee++]=n):65536>n?(3>r&&_e.copyWithin(Ee+3,Ee+2,Ee+2+n),_e[Ee++]=121,_e[Ee++]=n>>8,_e[Ee++]=255&n):(5>r&&_e.copyWithin(Ee+5,Ee+3,Ee+3+n),_e[Ee++]=122,Ie.setUint32(Ee,n),Ee+=4),Ee+=n}else if("number"===a){if(s>>>0===s)24>s?_e[Ee++]=s:256>s?(_e[Ee++]=24,_e[Ee++]=s):65536>s?(_e[Ee++]=25,_e[Ee++]=s>>8,_e[Ee++]=255&s):(_e[Ee++]=26,Ie.setUint32(Ee,s),Ee+=4);else if(s>>0===s)-24<=s?_e[Ee++]=31-s:-256<=s?(_e[Ee++]=56,_e[Ee++]=~s):-65536<=s?(_e[Ee++]=57,Ie.setUint16(Ee,~s),Ee+=2):(_e[Ee++]=58,Ie.setUint32(Ee,~s),Ee+=4);else{let e;if(0<(e=this.useFloat32)&&4294967296>s&&-2147483648<=s){_e[Ee++]=250,Ie.setFloat32(Ee,s);let t;if(4>e||// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
99
- (t=s*ue[(127&_e[Ee])<<1|_e[Ee+1]>>7])>>0===t)return void(Ee+=4);// move back into position for writing a double
100
- Ee--}_e[Ee++]=251,Ie.setFloat64(Ee,s),Ee+=8}}else if("object"===a){if(!s)_e[Ee++]=246;else{if(r){let e=r.get(s);if(e){// 16-bit uint
101
- if(_e[Ee++]=216,_e[Ee++]=29,_e[Ee++]=25,!e.references){let t=r.idsToInsert||(r.idsToInsert=[]);e.references=[],t.push(e)}// TODO: also support 32-bit
102
- return e.references.push(Ee-t),void(Ee+=2)}r.set(s,{offset:Ee-t})}let e=s.constructor;if(e===Object)k(s,!0);else if(e===Array){n=s.length,24>n?_e[Ee++]=128|n:O(n);for(let e=0;e<n;e++)b(s[e])}else if(e!==Map){for(let e,t=0,n=me.length;t<n;t++)if(e=be[t],s instanceof e){let e=me[t],n=e.tag||e.getTag&&e.getTag(s);return 24>n?_e[Ee++]=192|n:256>n?(_e[Ee++]=216,_e[Ee++]=n):65536>n?(_e[Ee++]=217,_e[Ee++]=n>>8,_e[Ee++]=255&n):-1<n&&(_e[Ee++]=218,Ie.setUint32(Ee,n),Ee+=4),void e.encode.call(this,s,b,M)}if(s[Symbol.iterator]){_e[Ee++]=159;// indefinite length array
103
- for(let e of s)b(e);// stop-code
104
- return void(_e[Ee++]=255)}// no extension found, write as object
105
- k(s,!s.hasOwnProperty)}else if((this.mapsAsObjects?!1!==this.useTag259ForMaps:this.useTag259ForMaps)&&(_e[Ee++]=217,_e[Ee++]=1,_e[Ee++]=3),n=s.size,24>n?_e[Ee++]=160|n:256>n?(_e[Ee++]=184,_e[Ee++]=n):65536>n?(_e[Ee++]=185,_e[Ee++]=n>>8,_e[Ee++]=255&n):(_e[Ee++]=186,Ie.setUint32(Ee,n),Ee+=4),o.keyMap)for(let[e,t]of s)b(o.encodeKey(e)),b(t);else for(let[e,t]of s)b(e),b(t)}}else if("boolean"===a)_e[Ee++]=s?245:244;else if("bigint"===a){if(s<BigInt(1)<<BigInt(64)&&0<=s)_e[Ee++]=27,Ie.setBigUint64(Ee,s);else if(s>-(BigInt(1)<<BigInt(64))&&0>s)_e[Ee++]=59,Ie.setBigUint64(Ee,-s-BigInt(1));else// overflow
106
- if(this.largeBigIntToFloat)_e[Ee++]=251,Ie.setFloat64(Ee,+s);else throw new RangeError(s+" was too large to fit in CBOR 64-bit integer format, set largeBigIntToFloat to convert to float-64");Ee+=8}else if("undefined"===a)_e[Ee++]=247;else throw new Error("Unknown type: "+a)},k=!1===this.useRecords?this.variableMapSize?e=>{// this method is slightly slower, but generates "preferred serialization" (optimally small for smaller objects)
107
- let t=Object.keys(e),s=Object.values(e),n=t.length;if(24>n?_e[Ee++]=160|n:256>n?(_e[Ee++]=184,_e[Ee++]=n):65536>n?(_e[Ee++]=185,_e[Ee++]=n>>8,_e[Ee++]=255&n):(_e[Ee++]=186,Ie.setUint32(Ee,n),Ee+=4),o.keyMap)for(let e=0;e<n;e++)b(encodeKey(t[e])),b(s[e]);else for(let e=0;e<n;e++)b(t[e]),b(s[e])}:(e,s)=>{_e[Ee++]=185;// always use map 16, so we can preallocate and set the length afterwards
108
- let n=Ee-t;Ee+=2;let a=0;if(o.keyMap)for(let t in e)(s||e.hasOwnProperty(t))&&(b(o.encodeKey(t)),b(e[t]),a++);else for(let t in e)(s||e.hasOwnProperty(t))&&(b(t),b(e[t]),a++);_e[n++ +t]=a>>8,_e[n+t]=255&a}:(e,t)=>{let s,r,o,d=a.transitions||(a.transitions=Object.create(null)),c=0,l=0;if(this.keyMap){o=Object.keys(e).map(e=>this.encodeKey(e)),l=o.length;for(let e,t=0;t<l;t++)e=o[t],s=d[e],s||(s=d[e]=Object.create(null),c++),d=s}else for(let n in e)(t||e.hasOwnProperty(n))&&(s=d[n],s||(1048576&d[Ae]&&(r=65535&d[Ae]),s=d[n]=Object.create(null),c++),d=s,l++);let p=d[Ae];if(void 0!==p)p&=65535,_e[Ee++]=217,_e[Ee++]=224|p>>8,_e[Ee++]=255&p;else if(o||(o=d.__keys__||(d.__keys__=Object.keys(e))),void 0===r?(p=a.nextId++,!p&&(p=0,a.nextId=1),p>=Me&&(a.nextId=(p=u)+1)):p=r,a[p]=o,p<u){_e[Ee++]=217,_e[Ee++]=224|p>>8,_e[Ee++]=255&p,d=a.transitions;for(let e=0;e<l;e++)(void 0===d[Ae]||1048576&d[Ae])&&(d[Ae]=p),d=d[o[e]];d[Ae]=1048576|p,n=!0}else{d[Ae]=p,Ie.setUint32(Ee,3655335680),Ee+=3,c&&(y+=m*c),h.length>=Me-u&&(h.shift()[Ae]=void 0),h.push(d),O(l+2),b(57344+p),b(o);for(let t of Object.values(e))b(t);return}for(let s in 24>l?_e[Ee++]=128|l:O(l),e)(t||e.hasOwnProperty(s))&&b(e[s])},M=e=>{var s=Math.min,n=Math.round,a=Math.max;let r;if(16777216<e){// special handling for really large buffers
109
- if(e-t>Se)throw new Error("Encoded buffer would be larger than maximum buffer size");r=s(Se,4096*n(a((e-t)*(67108864<e?1.25:2),4194304)/4096))}else// faster handling for smaller buffers
110
- r=(a(e-t<<2,_e.length-1)>>12)+1<<12;let i=new Oe(r);return Ie=new DataView(i.buffer,0,r),_e.copy?_e.copy(i,0,t,e):i.set(_e.slice(t,e)),Ee-=t,t=0,Ue=i.length-10,_e=i}}useBuffer(e){// this means we are finished using our own buffer and we can write over it safely
111
- _e=e,Ie=new DataView(_e.buffer,_e.byteOffset,_e.byteLength),Ee=0}clearSharedData(){this.structures&&(this.structures=[]),this.sharedValues&&(this.sharedValues=void 0)}updateSharedData(){let e=this.sharedVersion||0;this.sharedVersion=e+1;let t=this.structures.slice(0),s=new Ve(t,this.sharedValues,this.sharedVersion),n=this.saveShared(s,t=>(t&&t.version||0)==e);// saveShared may fail to write and reload, or may have reloaded to check compatibility and overwrite saved data, either way load the correct shared data
112
- return!1===n?(s=this.getShared()||{},this.structures=s.structures||[],this.sharedValues=s.packedValues,this.sharedVersion=s.version,this.structures.nextId=this.structures.length):t.forEach((e,t)=>this.structures[t]=e),n}}class Ve{constructor(e,t,s){this.structures=e,this.packedValues=t,this.version=s}}be=[Date,Set,Error,RegExp,ne,ArrayBuffer,Re,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?function(){}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?function(){}:BigInt64Array,Float32Array,Float64Array,Ve],me=[{tag:1,encode(e){let t=e.getTime()/1e3;(this.useTimestamp32||0===e.getMilliseconds())&&0<=t&&4294967296>t?(_e[Ee++]=26,Ie.setUint32(Ee,t),Ee+=4):(_e[Ee++]=251,Ie.setFloat64(Ee,t),Ee+=8)}},{tag:258,// https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md
98
+ } // else any in-doc incrementation?*/if(p&&!e.pack){let e=p.get(s);e?e.count++:p.set(s,{count:1})}}let a=s.length;if(Ce&&4<=a&&1024>a){if((Ce.size+=a)>61440){let e,s=(Ce[0]?3*Ce[0].length+Ce[1].length:0)+10;Ae+s>ve&&(Ie=S(Ae+s)),Ie[Ae++]=217,Ie[Ae++]=223,Ie[Ae++]=249,Ie[Ae++]=Ce.position?132:130,Ie[Ae++]=26,e=Ae-t,Ae+=4,Ce.position&&I(t,k),Ce=["",""],Ce.size=0,Ce.position=e}let e=/[\u0080-\uFFFF]/.test(s);return Ce[e?0:1]+=s,Ie[Ae++]=e?206:207,void k(a)}let r=32>a?1:256>a?2:65536>a?3:5;// first we estimate the header size, so we can write to the correct location
99
+ let i=3*a;if(Ae+i>ve&&(Ie=S(Ae+i)),64>a||!o){let e,t,i,o=Ae+r;for(e=0;e<a;e++)t=s.charCodeAt(e),128>t?Ie[o++]=t:2048>t?(Ie[o++]=192|t>>6,Ie[o++]=128|63&t):55296==(64512&t)&&56320==(64512&(i=s.charCodeAt(e+1)))?(t=65536+((1023&t)<<10)+(1023&i),e++,Ie[o++]=240|t>>18,Ie[o++]=128|63&t>>12,Ie[o++]=128|63&t>>6,Ie[o++]=128|63&t):(Ie[o++]=224|t>>12,Ie[o++]=128|63&t>>6,Ie[o++]=128|63&t);n=o-Ae-r}else n=o(s,Ae+r,i);24>n?Ie[Ae++]=96|n:256>n?(2>r&&Ie.copyWithin(Ae+2,Ae+1,Ae+1+n),Ie[Ae++]=120,Ie[Ae++]=n):65536>n?(3>r&&Ie.copyWithin(Ae+3,Ae+2,Ae+2+n),Ie[Ae++]=121,Ie[Ae++]=n>>8,Ie[Ae++]=255&n):(5>r&&Ie.copyWithin(Ae+5,Ae+3,Ae+3+n),Ie[Ae++]=122,Ue.setUint32(Ae,n),Ae+=4),Ae+=n}else if("number"===a){if(s>>>0===s)24>s?Ie[Ae++]=s:256>s?(Ie[Ae++]=24,Ie[Ae++]=s):65536>s?(Ie[Ae++]=25,Ie[Ae++]=s>>8,Ie[Ae++]=255&s):(Ie[Ae++]=26,Ue.setUint32(Ae,s),Ae+=4);else if(s>>0===s)-24<=s?Ie[Ae++]=31-s:-256<=s?(Ie[Ae++]=56,Ie[Ae++]=~s):-65536<=s?(Ie[Ae++]=57,Ue.setUint16(Ae,~s),Ae+=2):(Ie[Ae++]=58,Ue.setUint32(Ae,~s),Ae+=4);else{let e;if(0<(e=this.useFloat32)&&4294967296>s&&-2147483648<=s){Ie[Ae++]=250,Ue.setFloat32(Ae,s);let t;if(4>e||// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
100
+ (t=s*le[(127&Ie[Ae])<<1|Ie[Ae+1]>>7])>>0===t)return void(Ae+=4);// move back into position for writing a double
101
+ Ae--}Ie[Ae++]=251,Ue.setFloat64(Ae,s),Ae+=8}}else if("object"===a){if(!s)Ie[Ae++]=246;else{if(i){let e=i.get(s);if(e){// 16-bit uint
102
+ if(Ie[Ae++]=216,Ie[Ae++]=29,Ie[Ae++]=25,!e.references){let t=i.idsToInsert||(i.idsToInsert=[]);e.references=[],t.push(e)}// TODO: also support 32-bit
103
+ return e.references.push(Ae-t),void(Ae+=2)}i.set(s,{offset:Ae-t})}let e=s.constructor;if(e===Object)O(s,!0);else if(e===Array){n=s.length,24>n?Ie[Ae++]=128|n:R(n);for(let e=0;e<n;e++)k(s[e])}else if(e!==Map){for(let e,t=0,n=ke.length;t<n;t++)if(e=Oe[t],s instanceof e){let e=ke[t],n=e.tag;return null==n&&(n=e.getTag&&e.getTag(s)),24>n?Ie[Ae++]=192|n:256>n?(Ie[Ae++]=216,Ie[Ae++]=n):65536>n?(Ie[Ae++]=217,Ie[Ae++]=n>>8,Ie[Ae++]=255&n):-1<n&&(Ie[Ae++]=218,Ue.setUint32(Ae,n),Ae+=4),void e.encode.call(this,s,k,S)}if(s[Symbol.iterator]){Ie[Ae++]=159;// indefinite length array
104
+ for(let e of s)k(e);// stop-code
105
+ return void(Ie[Ae++]=255)}// no extension found, write as object
106
+ O(s,!s.hasOwnProperty)}else if((this.mapsAsObjects?!1!==this.useTag259ForMaps:this.useTag259ForMaps)&&(Ie[Ae++]=217,Ie[Ae++]=1,Ie[Ae++]=3),n=s.size,24>n?Ie[Ae++]=160|n:256>n?(Ie[Ae++]=184,Ie[Ae++]=n):65536>n?(Ie[Ae++]=185,Ie[Ae++]=n>>8,Ie[Ae++]=255&n):(Ie[Ae++]=186,Ue.setUint32(Ae,n),Ae+=4),d.keyMap)for(let[e,t]of s)k(d.encodeKey(e)),k(t);else for(let[e,t]of s)k(e),k(t)}}else if("boolean"===a)Ie[Ae++]=s?245:244;else if("bigint"===a){if(s<BigInt(1)<<BigInt(64)&&0<=s)Ie[Ae++]=27,Ue.setBigUint64(Ae,s);else if(s>-(BigInt(1)<<BigInt(64))&&0>s)Ie[Ae++]=59,Ue.setBigUint64(Ae,-s-BigInt(1));else// overflow
107
+ if(this.largeBigIntToFloat)Ie[Ae++]=251,Ue.setFloat64(Ae,+s);else throw new RangeError(s+" was too large to fit in CBOR 64-bit integer format, set largeBigIntToFloat to convert to float-64");Ae+=8}else if("undefined"===a)Ie[Ae++]=247;else throw new Error("Unknown type: "+a)},O=!1===this.useRecords?this.variableMapSize?e=>{// this method is slightly slower, but generates "preferred serialization" (optimally small for smaller objects)
108
+ let t=Object.keys(e),s=Object.values(e),n=t.length;if(24>n?Ie[Ae++]=160|n:256>n?(Ie[Ae++]=184,Ie[Ae++]=n):65536>n?(Ie[Ae++]=185,Ie[Ae++]=n>>8,Ie[Ae++]=255&n):(Ie[Ae++]=186,Ue.setUint32(Ae,n),Ae+=4),d.keyMap)for(let e=0;e<n;e++)k(encodeKey(t[e])),k(s[e]);else for(let e=0;e<n;e++)k(t[e]),k(s[e])}:(e,s)=>{Ie[Ae++]=185;// always use map 16, so we can preallocate and set the length afterwards
109
+ let n=Ae-t;Ae+=2;let a=0;if(d.keyMap)for(let t in e)(s||e.hasOwnProperty(t))&&(k(d.encodeKey(t)),k(e[t]),a++);else for(let t in e)(s||e.hasOwnProperty(t))&&(k(t),k(e[t]),a++);Ie[n++ +t]=a>>8,Ie[n+t]=255&a}:(e,t)=>{let s,n,o,d=r.transitions||(r.transitions=Object.create(null)),u=0,l=0;if(this.keyMap){o=Object.keys(e).map(e=>this.encodeKey(e)),l=o.length;for(let e,t=0;t<l;t++)e=o[t],s=d[e],s||(s=d[e]=Object.create(null),u++),d=s}else for(let a in e)(t||e.hasOwnProperty(a))&&(s=d[a],s||(1048576&d[Ve]&&(n=65535&d[Ve]),s=d[a]=Object.create(null),u++),d=s,l++);let p=d[Ve];if(void 0!==p)p&=65535,Ie[Ae++]=217,Ie[Ae++]=224|p>>8,Ie[Ae++]=255&p;else if(o||(o=d.__keys__||(d.__keys__=Object.keys(e))),void 0===n?(p=r.nextId++,!p&&(p=0,r.nextId=1),p>=_e&&(r.nextId=(p=c)+1)):p=n,r[p]=o,p<c){Ie[Ae++]=217,Ie[Ae++]=224|p>>8,Ie[Ae++]=255&p,d=r.transitions;for(let e=0;e<l;e++)(void 0===d[Ve]||1048576&d[Ve])&&(d[Ve]=p),d=d[o[e]];d[Ve]=1048576|p,a=!0}else{d[Ve]=p,Ue.setUint32(Ae,3655335680),Ae+=3,u&&(m+=b*u),y.length>=_e-c&&(y.shift()[Ve]=void 0),y.push(d),R(l+2),k(57344+p),k(o);for(let t of Object.values(e))k(t);return}for(let s in 24>l?Ie[Ae++]=128|l:R(l),e)(t||e.hasOwnProperty(s))&&k(e[s])},S=e=>{var n=Math.min,a=Math.max;let r;if(16777216<e){// special handling for really large buffers
110
+ if(e-t>Ee)throw new Error("Encoded buffer would be larger than maximum buffer size");r=n(Ee,4096*s(a((e-t)*(67108864<e?1.25:2),4194304)/4096))}else// faster handling for smaller buffers
111
+ r=(a(e-t<<2,Ie.length-1)>>12)+1<<12;let i=new Me(r);return Ue=new DataView(i.buffer,0,r),Ie.copy?Ie.copy(i,0,t,e):i.set(Ie.slice(t,e)),Ae-=t,t=0,ve=i.length-10,Ie=i}}useBuffer(e){// this means we are finished using our own buffer and we can write over it safely
112
+ Ie=e,Ue=new DataView(Ie.buffer,Ie.byteOffset,Ie.byteLength),Ae=0}clearSharedData(){this.structures&&(this.structures=[]),this.sharedValues&&(this.sharedValues=void 0)}updateSharedData(){let e=this.sharedVersion||0;this.sharedVersion=e+1;let t=this.structures.slice(0),s=new Be(t,this.sharedValues,this.sharedVersion),n=this.saveShared(s,t=>(t&&t.version||0)==e);// saveShared may fail to write and reload, or may have reloaded to check compatibility and overwrite saved data, either way load the correct shared data
113
+ return!1===n?(s=this.getShared()||{},this.structures=s.structures||[],this.sharedValues=s.packedValues,this.sharedVersion=s.version,this.structures.nextId=this.structures.length):t.forEach((e,t)=>this.structures[t]=e),n}}class Be{constructor(e,t,s){this.structures=e,this.packedValues=t,this.version=s}}const Le=1==new Uint8Array(new Uint16Array([1]).buffer)[0];Oe=[Date,Set,Error,RegExp,ae,ArrayBuffer,Se,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?function(){}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?function(){}:BigInt64Array,Float32Array,Float64Array,Be],ke=[{tag:1,encode(e){let t=e.getTime()/1e3;(this.useTimestamp32||0===e.getMilliseconds())&&0<=t&&4294967296>t?(Ie[Ae++]=26,Ue.setUint32(Ae,t),Ae+=4):(Ie[Ae++]=251,Ue.setFloat64(Ae,t),Ae+=8)}},{tag:258,// https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md
113
114
  encode(e,t){let s=Array.from(e);t(s)}},{tag:27,// http://cbor.schmorp.de/generic-object
114
115
  encode(e,t){t([e.name,e.message])}},{tag:27,// http://cbor.schmorp.de/generic-object
115
- encode(e,t){t(["RegExp",e.source,e.flags])}},{getTag(e){return e.tag},encode(e,t){t(e.value)}},{encode(e,t,s){S(e,s)}},{encode(e,t,s){S(e,s)}},M(64),M(68),M(69),M(70),M(71),M(72),M(77),M(78),M(79),M(81),M(82),{encode(e,t){// write SharedData
116
- let s=e.packedValues||[],n=e.structures||[];if(0<s.values.length){_e[Ee++]=216,_e[Ee++]=51,O(4);let e=s.values;t(e),O(0),O(0),packedObjectMap=Object.create(sharedPackedObjectMap||null);for(let t=0,s=e.length;t<s;t++)packedObjectMap[e[t]]=t}if(n){Ie.setUint32(Ee,3655335424),Ee+=3;let s=n.slice(0);s.unshift(57344),s.push(new ne(e.version,1399353956)),t(s)}else t(new ne(e.version,1399353956))}}];let xe=new Ce({useRecords:!1});const Be=xe.encode,{NEVER:De,ALWAYS:Le,DECIMAL_ROUND:Pe,DECIMAL_FIT:je}=ge,we=512,Fe=1024;e.ALWAYS=Le,e.DECIMAL_FIT=je,e.DECIMAL_ROUND=Pe,e.Decoder=X,e.Encoder=Ce,e.FLOAT32_OPTIONS=ge,e.NEVER=De,e.REUSE_BUFFER_MODE=we,e.Tag=ne,e.addExtension=U,e.clearSource=b,e.decode=le,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 s=new X(t);let n;const a=e=>{let t;// if there's incomplete data from previous chunk, concatinate and try again
117
- n&&(e=Buffer.concat([n,e]),n=void 0);try{t=s.decodeMultiple(e)}catch(s){if(s.incomplete)n=e.slice(s.lastPosition),t=s.values;else throw s}return t};if("function"==typeof e[Symbol.iterator])return function*(){for(const t of e)yield*a(t)}();return"function"==typeof e[Symbol.asyncIterator]?async function*(){for await(const t of e)yield*a(t)}():void 0},e.decodeMultiple=pe,e.encode=Be,e.encodeIter=/**
116
+ encode(e,t){t(["RegExp",e.source,e.flags])}},{getTag(e){return e.tag},encode(e,t){t(e.value)}},{encode(e,t,s){_(e,s)}},{encode(e,t,s){_(e,s)}},S(64,1),S(68,1),S(69,2),S(70,4),S(71,8),S(72,1),S(77,2),S(78,4),S(79,8),S(85,4),S(86,8),{encode(e,t){// write SharedData
117
+ let s=e.packedValues||[],n=e.structures||[];if(0<s.values.length){Ie[Ae++]=216,Ie[Ae++]=51,R(4);let e=s.values;t(e),R(0),R(0),packedObjectMap=Object.create(sharedPackedObjectMap||null);for(let t=0,s=e.length;t<s;t++)packedObjectMap[e[t]]=t}if(n){Ue.setUint32(Ae,3655335424),Ae+=3;let s=n.slice(0);s.unshift(57344),s.push(new ae(e.version,1399353956)),t(s)}else t(new ae(e.version,1399353956))}}];let De=new xe({useRecords:!1});const Pe=De.encode,{NEVER:je,ALWAYS:we,DECIMAL_ROUND:Te,DECIMAL_FIT:Fe}=he,Ke=512,Ye=1024;e.ALWAYS=we,e.DECIMAL_FIT=Fe,e.DECIMAL_ROUND=Te,e.Decoder=Z,e.Encoder=xe,e.FLOAT32_OPTIONS=he,e.NEVER=je,e.REUSE_BUFFER_MODE=Ke,e.Tag=ae,e.addExtension=U,e.clearSource=k,e.decode=fe,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 s=new Z(t);let n;const a=e=>{let t;// if there's incomplete data from previous chunk, concatinate and try again
118
+ n&&(e=Buffer.concat([n,e]),n=void 0);try{t=s.decodeMultiple(e)}catch(s){if(s.incomplete)n=e.slice(s.lastPosition),t=s.values;else throw s}return t};if("function"==typeof e[Symbol.iterator])return function*(){for(const t of e)yield*a(t)}();return"function"==typeof e[Symbol.asyncIterator]?async function*(){for await(const t of e)yield*a(t)}():void 0},e.decodeMultiple=ge,e.encode=Pe,e.encodeIter=/**
118
119
  * Given an Iterable first argument, returns an Iterable where each value is encoded as a Buffer
119
120
  * If the argument is only Async Iterable, the return value will be an Async Iterable.
120
121
  * @param {Iterable|Iterator|AsyncIterable|AsyncIterator} objectIterator - iterable source, like a Readable object stream, an array, Set, or custom object
121
122
  * @param {options} [options] - cbor-x Encoder options
122
123
  * @returns {IterableIterator|Promise.<AsyncIterableIterator>}
123
- */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 E(e,t);if("function"==typeof e.then||"function"==typeof e[Symbol.asyncIterator])return v(e,t);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}},e.isNativeAccelerationEnabled=!1,e.roundFloat32=function(e){he[0]=e;let t=ue[(127&ye[3])<<1|ye[2]>>7];return(t*e+(0<e?.5:-.5)>>0)/t},Object.defineProperty(e,"__esModule",{value:!0})});
124
+ */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 v(e,t);if("function"==typeof e.then||"function"==typeof e[Symbol.asyncIterator])return A(e,t);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}},e.isNativeAccelerationEnabled=!1,e.roundFloat32=function(e){me[0]=e;let t=le[(127&be[3])<<1|be[2]>>7];return(t*e+(0<e?.5:-.5)>>0)/t},Object.defineProperty(e,"__esModule",{value:!0})});
package/dist/node.cjs CHANGED
@@ -750,7 +750,7 @@ currentExtensions[0] = (dateString) => {
750
750
 
751
751
  currentExtensions[1] = (epochSec) => {
752
752
  // numeric date extension
753
- return new Date(epochSec * 1000)
753
+ return new Date(Math.round(epochSec * 1000))
754
754
  };
755
755
 
756
756
  currentExtensions[2] = (buffer) => {
@@ -933,18 +933,37 @@ currentExtensionRanges.push((tag, input) => {
933
933
  return input
934
934
  });
935
935
 
936
- const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'].map(type => type + 'Array');
937
- const typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 81, 82];
936
+ const isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1;
937
+ const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'];
938
+ const typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 85, 86];
938
939
  for (let i = 0; i < typedArrays.length; i++) {
939
940
  registerTypedArray(typedArrays[i], typedArrayTags[i]);
940
941
  }
941
- function registerTypedArray(typedArrayName, tag) {
942
- currentExtensions[tag] = (buffer) => {
943
- if (!typedArrayName)
944
- throw new Error('Could not find typed array for code ' + typeCode)
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(buffer, 0).buffer)
947
- };
942
+ function registerTypedArray(typedArrayId, tag, littleEndian) {
943
+ let TypedArray = glbl[typedArrayId + 'Array'];
944
+ let bytesPerElement = TypedArray.BYTES_PER_ELEMENT;
945
+ for (let littleEndian = 0; littleEndian < 2; littleEndian++) {
946
+ if (!littleEndian && bytesPerElement == 1)
947
+ continue
948
+ let sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3;
949
+ currentExtensions[littleEndian ? tag : (tag - 4)] = (bytesPerElement == 1 || littleEndian == isLittleEndianMachine) ? (buffer) => {
950
+ if (!TypedArray)
951
+ throw new Error('Could not find typed array for code ' + tag)
952
+ // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned
953
+ return new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer)
954
+ } : buffer => {
955
+ if (!TypedArray)
956
+ throw new Error('Could not find typed array for code ' + tag)
957
+ let dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
958
+ let elements = buffer.length >> sizeShift;
959
+ let ta = new TypedArray(elements);
960
+ let method = dv['get' + typedArrayId];
961
+ for (let i = 0; i < elements; i++) {
962
+ ta[i] = method.call(dv, i << sizeShift, littleEndian);
963
+ }
964
+ return ta
965
+ };
966
+ }
948
967
  }
949
968
 
950
969
  function readBundleExt() {
@@ -1578,7 +1597,9 @@ class Encoder extends Decoder {
1578
1597
  let extensionClass = extensionClasses[i];
1579
1598
  if (value instanceof extensionClass) {
1580
1599
  let extension = extensions[i];
1581
- let tag = extension.tag || extension.getTag && extension.getTag(value);
1600
+ let tag = extension.tag;
1601
+ if (tag == undefined)
1602
+ tag = extension.getTag && extension.getTag(value);
1582
1603
  if (tag < 0x18) {
1583
1604
  target[position$1++] = 0xc0 | tag;
1584
1605
  } else if (tag < 0x100) {
@@ -1911,7 +1932,7 @@ function findRepetitiveStrings(value, packedValues) {
1911
1932
  case 'function': console.log(value);
1912
1933
  }
1913
1934
  }
1914
-
1935
+ const isLittleEndianMachine$1 = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1;
1915
1936
  extensionClasses = [ Date, Set, Error, RegExp, Tag, ArrayBuffer, ByteArray,
1916
1937
  Uint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,
1917
1938
  typeof BigUint64Array == 'undefined' ? function() {} : BigUint64Array, Int8Array, Int16Array, Int32Array,
@@ -1966,17 +1987,17 @@ extensions = [{
1966
1987
  encode(arrayBuffer, encode, makeRoom) {
1967
1988
  writeBuffer(arrayBuffer, makeRoom);
1968
1989
  }
1969
- }, typedArrayEncoder(64),
1970
- typedArrayEncoder(68),
1971
- typedArrayEncoder(69),
1972
- typedArrayEncoder(70),
1973
- typedArrayEncoder(71),
1974
- typedArrayEncoder(72),
1975
- typedArrayEncoder(77),
1976
- typedArrayEncoder(78),
1977
- typedArrayEncoder(79),
1978
- typedArrayEncoder(81),
1979
- typedArrayEncoder(82),
1990
+ }, typedArrayEncoder(64, 1),
1991
+ typedArrayEncoder(68, 1),
1992
+ typedArrayEncoder(69, 2),
1993
+ typedArrayEncoder(70, 4),
1994
+ typedArrayEncoder(71, 8),
1995
+ typedArrayEncoder(72, 1),
1996
+ typedArrayEncoder(77, 2),
1997
+ typedArrayEncoder(78, 4),
1998
+ typedArrayEncoder(79, 8),
1999
+ typedArrayEncoder(85, 4),
2000
+ typedArrayEncoder(86, 8),
1980
2001
  {
1981
2002
  encode(sharedData, encode) { // write SharedData
1982
2003
  let packedValues = sharedData.packedValues || [];
@@ -2005,8 +2026,9 @@ extensions = [{
2005
2026
  encode(new Tag(sharedData.version, 0x53687264));
2006
2027
  }
2007
2028
  }];
2008
-
2009
- function typedArrayEncoder(tag) {
2029
+ function typedArrayEncoder(tag, size) {
2030
+ if (!isLittleEndianMachine$1 && size > 1)
2031
+ tag -= 4; // the big endian equivalents are 4 less
2010
2032
  return {
2011
2033
  tag: tag,
2012
2034
  encode: function writeExtBuffer(typedArray, encode) {
package/dist/test.js CHANGED
@@ -924,6 +924,7 @@
924
924
  let fa = new Float32Array(b.buffer, 8, 2);
925
925
  fa[0] = 2.25;
926
926
  fa[1] = 6;
927
+ let f64a = new Float64Array([2.3, 4.7]);
927
928
  let map = new Map();
928
929
  map.set('key', 'value');
929
930
  let object = {
@@ -932,6 +933,7 @@
932
933
  regexp: /test/gi,
933
934
  map,
934
935
  float32Array: fa,
936
+ float64Array: f64a,
935
937
  uint16Array: new Uint16Array([3,4])
936
938
  };
937
939
  let encoder = new Encoder({
@@ -946,6 +948,8 @@
946
948
  assert.equal(deserialized.float32Array.constructor.name, 'Float32Array');
947
949
  assert.equal(deserialized.float32Array[0], 2.25);
948
950
  assert.equal(deserialized.float32Array[1], 6);
951
+ assert.equal(deserialized.float64Array[0], 2.3);
952
+ assert.equal(deserialized.float64Array[1], 4.7);
949
953
  assert.equal(deserialized.uint16Array.constructor.name, 'Uint16Array');
950
954
  assert.equal(deserialized.uint16Array[0], 3);
951
955
  assert.equal(deserialized.uint16Array[1], 4);
@@ -1005,13 +1009,16 @@
1005
1009
  var map = new Map();
1006
1010
  map.set(4, 'four');
1007
1011
  map.set('three', 3);
1008
-
1012
+ let year2039 = new Date('2039-07-05T16:22:35.792Z');
1013
+ let year2038 = new Date('2038-08-06T00:19:02.911Z');
1009
1014
 
1010
1015
  var data = {
1011
1016
  map: map,
1012
1017
  date: new Date(1532219539733),
1013
1018
  farFutureDate: new Date(3532219539133),
1014
1019
  ancient: new Date(-3532219539133),
1020
+ year2038,
1021
+ year2039,
1015
1022
  invalidDate: new Date('invalid')
1016
1023
  };
1017
1024
  let encoder = new Encoder();
@@ -1022,6 +1029,8 @@
1022
1029
  assert.equal(deserialized.date.getTime(), 1532219539733);
1023
1030
  assert.equal(deserialized.farFutureDate.getTime(), 3532219539133);
1024
1031
  assert.equal(deserialized.ancient.getTime(), -3532219539133);
1032
+ assert.equal(deserialized.year2038.getTime(), year2038.getTime());
1033
+ assert.equal(deserialized.year2039.getTime(), year2039.getTime());
1025
1034
  assert.equal(deserialized.invalidDate.toString(), 'Invalid Date');
1026
1035
  });
1027
1036
  test('map/date with options', function(){
package/encode.js CHANGED
@@ -514,7 +514,9 @@ export class Encoder extends Decoder {
514
514
  let extensionClass = extensionClasses[i]
515
515
  if (value instanceof extensionClass) {
516
516
  let extension = extensions[i]
517
- let tag = extension.tag || extension.getTag && extension.getTag(value)
517
+ let tag = extension.tag
518
+ if (tag == undefined)
519
+ tag = extension.getTag && extension.getTag(value)
518
520
  if (tag < 0x18) {
519
521
  target[position++] = 0xc0 | tag
520
522
  } else if (tag < 0x100) {
@@ -848,7 +850,7 @@ function findRepetitiveStrings(value, packedValues) {
848
850
  case 'function': console.log(value)
849
851
  }
850
852
  }
851
-
853
+ const isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1
852
854
  extensionClasses = [ Date, Set, Error, RegExp, Tag, ArrayBuffer, ByteArray,
853
855
  Uint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,
854
856
  typeof BigUint64Array == 'undefined' ? function() {} : BigUint64Array, Int8Array, Int16Array, Int32Array,
@@ -903,17 +905,17 @@ extensions = [{
903
905
  encode(arrayBuffer, encode, makeRoom) {
904
906
  writeBuffer(arrayBuffer, makeRoom)
905
907
  }
906
- }, typedArrayEncoder(64),
907
- typedArrayEncoder(68),
908
- typedArrayEncoder(69),
909
- typedArrayEncoder(70),
910
- typedArrayEncoder(71),
911
- typedArrayEncoder(72),
912
- typedArrayEncoder(77),
913
- typedArrayEncoder(78),
914
- typedArrayEncoder(79),
915
- typedArrayEncoder(81),
916
- typedArrayEncoder(82),
908
+ }, typedArrayEncoder(64, 1),
909
+ typedArrayEncoder(68, 1),
910
+ typedArrayEncoder(69, 2),
911
+ typedArrayEncoder(70, 4),
912
+ typedArrayEncoder(71, 8),
913
+ typedArrayEncoder(72, 1),
914
+ typedArrayEncoder(77, 2),
915
+ typedArrayEncoder(78, 4),
916
+ typedArrayEncoder(79, 8),
917
+ typedArrayEncoder(85, 4),
918
+ typedArrayEncoder(86, 8),
917
919
  {
918
920
  encode(sharedData, encode) { // write SharedData
919
921
  let packedValues = sharedData.packedValues || []
@@ -942,8 +944,9 @@ extensions = [{
942
944
  encode(new Tag(sharedData.version, 0x53687264))
943
945
  }
944
946
  }]
945
-
946
- function typedArrayEncoder(tag) {
947
+ function typedArrayEncoder(tag, size) {
948
+ if (!isLittleEndianMachine && size > 1)
949
+ tag -= 4 // the big endian equivalents are 4 less
947
950
  return {
948
951
  tag: tag,
949
952
  encode: function writeExtBuffer(typedArray, encode) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cbor-x",
3
3
  "author": "Kris Zyp",
4
- "version": "1.1.0",
4
+ "version": "1.3.0",
5
5
  "description": "Ultra-fast and conformant CBOR (RFC 8949) implementation with support for numerous tag extensions including records and structured cloning",
6
6
  "license": "MIT",
7
7
  "types": "./index.d.ts",
@@ -59,7 +59,7 @@
59
59
  "/*.ts"
60
60
  ],
61
61
  "optionalDependencies": {
62
- "cbor-extract": "^1.0.0"
62
+ "cbor-extract": "^2.0.0"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@rollup/plugin-json": "^4.1.0",
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://CBOR/webpack/universalModuleDefinition","webpack://CBOR/webpack/bootstrap","webpack://CBOR/./encode.js","webpack://CBOR/./decode.js","webpack://CBOR/./browser.js","webpack://CBOR/(webpack)/buildin/global.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","decoderModule","Decoder","mult10","typedArrays","textEncoder","extensions","extensionClasses","TextEncoder","error","hasNodeBuffer","Buffer","ByteArrayAllocate","allocUnsafeSlow","Uint8Array","ByteArray","target","targetView","safeEnd","position","RECORD_SYMBOL","copyBinary","source","targetOffset","offset","endOffset","writeExtBuffer","typedArray","type","encode","length","byteLength","byteOffset","buffer","from","writeBuffer","setUint32","copy","Encoder","options","start","sharedStructures","hasSharedUpdate","structures","referenceMap","super","this","lastSharedStructuresLength","encodeUtf8","utf8Write","string","maxBytes","encodeInto","subarray","written","encoder","maxSharedStructures","isSequential","sequential","recordIdsToRemove","transitionsCount","serializationsSinceTransitionRebuild","Error","DataView","structuredClone","Map","uninitialized","getStructures","sharedStructuresLength","transitions","keys","nextTransition","transition","nextId","idsToInsert","makeRoom","serialized","distanceToMove","lastEnd","sort","a","b","pop","id","copyWithin","insertIds","saveStructures","slice","headerSize","strLength","c1","c2","strPosition","charCodeAt","setUint16","useFloat32","xShifted","setFloat32","setFloat64","referee","push","set","constructor","writeObject","Array","size","entryValue","extension","tag","useRecords","variableMapSize","safePrototype","objectOffset","newTransitions","recordId","shift","concat","end","newSize","Math","max","newBuffer","Date","Set","RegExp","ArrayBuffer","getPrototypeOf","date","seconds","getTime","useTimestamp32","getMilliseconds","message","regex","flags","arrayBuffer","indexOf","addExtension","Class","unshift","decoder","src","srcEnd","TextDecoder","EMPTY_ARRAY","srcString","dataView","currentStructures","strings","stringPosition","currentDecoder","srcStringStart","srcStringEnd","currentExtensions","defaultOptions","mapsAsObjects","undefined","assign","continueReading","saveState","decode","read","token","majorType","val","byte0","byte1","half","exp","mant","Infinity","NaN","getFloat16","getUint16","getFloat32","multiplier","getUint32","getFloat64","uint64AsNumber","getBigUint64","copyBuffers","shortStringInJS","readFixedString","array","map","structure","createStructureReader","updatedStructures","splice","apply","isNaN","incomplete","getPosition","validName","readObject","count","Function","test","JSON","stringify","join","readStringJS","readString8","readString16","readString32","result","units","byte2","byte3","unit","fromCharCode","String","setExtractor","extractStrings","readString","headerLength","srcStringLength","e","f","g","h","j","k","glbl","global","dateString","epochSec","BigInt","data","refEntry","targetProperties","used","callback","savedSrcEnd","savedPosition","savedStringPosition","savedSrcStringStart","savedSrcStringEnd","savedSrcString","savedStrings","savedReferenceMap","savedSrc","savedStructures","savedDecoder","typeCode","typedArrayName","clearSource","floor","ALWAYS","DECIMAL_ROUND","DECIMAL_FIT"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CBOR\"] = factory();\n\telse\n\t\troot[\"CBOR\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","\"use strict\"\r\nlet decoderModule = require('./decode')\r\nlet Decoder = decoderModule.Decoder\r\nlet mult10 = decoderModule.mult10\r\nconst typedArrays = decoderModule.typedArrays\r\nlet textEncoder\r\ntry {\r\n\ttextEncoder = new TextEncoder()\r\n} catch (error) {}\r\nlet extensions, extensionClasses\r\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\r\nconst ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array\r\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\r\nlet target\r\nlet targetView\r\nlet position = 0\r\nlet safeEnd\r\nconst RECORD_SYMBOL = Symbol('record-id')\r\nclass Encoder extends Decoder {\r\n\tconstructor(options) {\r\n\t\tsuper(options)\r\n\t\tthis.offset = 0\r\n\t\tlet typeBuffer\r\n\t\tlet start\r\n\t\tlet sharedStructures\r\n\t\tlet hasSharedUpdate\r\n\t\tlet structures\r\n\t\tlet referenceMap\r\n\t\tlet lastSharedStructuresLength = 0\r\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {\r\n\t\t\treturn target.utf8Write(string, position, maxBytes)\r\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\r\n\t\t\tfunction(string, position) {\r\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\r\n\t\t\t} : false\r\n\r\n\t\tlet encoder = this\r\n\t\tlet maxSharedStructures = 64\r\n\t\tlet isSequential = options && options.sequential\r\n\t\tif (isSequential) {\r\n\t\t\tmaxSharedStructures = 0\r\n\t\t\tthis.structures = []\r\n\t\t}\r\n\t\tlet recordIdsToRemove = []\r\n\t\tlet transitionsCount = 0\r\n\t\tlet serializationsSinceTransitionRebuild = 0\r\n\t\tif (this.structures && this.structures.length > maxSharedStructures) {\r\n\t\t\tthrow new Error('Too many shared structures')\r\n\t\t}\r\n\r\n\t\tthis.encode = function(value) {\r\n\t\t\tif (!target) {\r\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\r\n\t\t\t\ttargetView = new DataView(target.buffer, 0, 8192)\r\n\t\t\t\tposition = 0\r\n\t\t\t}\r\n\t\t\tsafeEnd = target.length - 10\r\n\t\t\tif (safeEnd - position < 0x800) {\r\n\t\t\t\t// don't start too close to the end, \r\n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\r\n\t\t\t\ttargetView = new DataView(target.buffer, 0, target.length)\r\n\t\t\t\tsafeEnd = target.length - 10\r\n\t\t\t\tposition = 0\r\n\t\t\t}\r\n\t\t\tstart = position\r\n\t\t\treferenceMap = encoder.structuredClone ? new Map() : null\r\n\t\t\tsharedStructures = encoder.structures\r\n\t\t\tif (sharedStructures) {\r\n\t\t\t\tif (sharedStructures.uninitialized)\r\n\t\t\t\t\tencoder.structures = sharedStructures = encoder.getStructures()\r\n\t\t\t\tlet sharedStructuresLength = sharedStructures.length\r\n\t\t\t\tif (sharedStructuresLength > maxSharedStructures && !isSequential)\r\n\t\t\t\t\tsharedStructuresLength = maxSharedStructures\r\n\t\t\t\tif (!sharedStructures.transitions) {\r\n\t\t\t\t\t// rebuild our structure transitions\r\n\t\t\t\t\tsharedStructures.transitions = Object.create(null)\r\n\t\t\t\t\tfor (let i = 0; i < sharedStructuresLength; i++) {\r\n\t\t\t\t\t\tlet keys = sharedStructures[i]\r\n\t\t\t\t\t\tif (!keys)\r\n\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\tlet nextTransition, transition = sharedStructures.transitions\r\n\t\t\t\t\t\tfor (let i =0, l = keys.length; i < l; i++) {\r\n\t\t\t\t\t\t\tlet key = keys[i]\r\n\t\t\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttransition = nextTransition\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i + 0x40\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastSharedStructuresLength = sharedStructures.length\r\n\t\t\t\t}\r\n\t\t\t\tif (!isSequential)\r\n\t\t\t\t\tsharedStructures.nextId = sharedStructuresLength + 0x40\r\n\t\t\t}\r\n\t\t\tif (hasSharedUpdate)\r\n\t\t\t\thasSharedUpdate = false\r\n\t\t\tstructures = sharedStructures || []\r\n\t\t\ttry {\r\n\t\t\t\tencode(value)\r\n\t\t\t\tencoder.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\r\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\r\n\t\t\t\t\tposition += referenceMap.idsToInsert.length * 6\r\n\t\t\t\t\tif (position > safeEnd)\r\n\t\t\t\t\t\tmakeRoom(position)\r\n\t\t\t\t\tencoder.offset = position\r\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), referenceMap.idsToInsert)\r\n\t\t\t\t\treferenceMap = null\r\n\t\t\t\t\treturn serialized\r\n\t\t\t\t}\r\n\t\t\t\treturn target.subarray(start, position) // position can change if we call encode again in saveStructures, so we get the buffer now\r\n\t\t\t} finally {\r\n\t\t\t\tif (sharedStructures) {\r\n\t\t\t\t\tif (serializationsSinceTransitionRebuild < 10)\r\n\t\t\t\t\t\tserializationsSinceTransitionRebuild++\r\n\t\t\t\t\tif (transitionsCount > 10000) {\r\n\t\t\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\r\n\t\t\t\t\t\tsharedStructures.transitions = null\r\n\t\t\t\t\t\tserializationsSinceTransitionRebuild = 0\r\n\t\t\t\t\t\ttransitionsCount = 0\r\n\t\t\t\t\t\tif (recordIdsToRemove.length > 0)\r\n\t\t\t\t\t\t\trecordIdsToRemove = []\r\n\t\t\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\r\n\t\t\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\r\n\t\t\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = 0\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\trecordIdsToRemove = []\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (hasSharedUpdate && encoder.saveStructures) {\r\n\t\t\t\t\t\tif (encoder.structures.length > maxSharedStructures) {\r\n\t\t\t\t\t\t\tencoder.structures = encoder.structures.slice(0, maxSharedStructures)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (encoder.saveStructures(encoder.structures, lastSharedStructuresLength) === false) {\r\n\t\t\t\t\t\t\t// get updated structures and try again if the update failed\r\n\t\t\t\t\t\t\tencoder.structures = encoder.getStructures() || []\r\n\t\t\t\t\t\t\treturn encoder.encode(value)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlastSharedStructuresLength = encoder.structures.length\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst encode = (value) => {\r\n\t\t\tif (position > safeEnd)\r\n\t\t\t\ttarget = makeRoom(position)\r\n\r\n\t\t\tvar type = typeof value\r\n\t\t\tvar length\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tlet strLength = value.length\r\n\t\t\t\tlet headerSize\r\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\r\n\t\t\t\tif (strLength < 0x20) {\r\n\t\t\t\t\theaderSize = 1\r\n\t\t\t\t} else if (strLength < 0x100) {\r\n\t\t\t\t\theaderSize = 2\r\n\t\t\t\t} else if (strLength < 0x10000) {\r\n\t\t\t\t\theaderSize = 3\r\n\t\t\t\t} else {\r\n\t\t\t\t\theaderSize = 5\r\n\t\t\t\t}\r\n\t\t\t\tlet maxBytes = strLength * 3\r\n\t\t\t\tif (position + maxBytes > safeEnd)\r\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\r\n\r\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\r\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\r\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\r\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\r\n\t\t\t\t\t\tif (c1 < 0x80) {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\r\n\t\t\t\t\t\t} else if (c1 < 0x800) {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\r\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\r\n\t\t\t\t\t\t\ti++\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlength = strPosition - position - headerSize\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize, maxBytes)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\ttarget[position++] = 0x60 | length\r\n\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\tif (headerSize < 2) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x78\r\n\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\tif (headerSize < 3) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x79\r\n\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (headerSize < 5) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x7a\r\n\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\tposition += 4\r\n\t\t\t\t}\r\n\t\t\t\tposition += length\r\n\t\t\t} else if (type === 'number') {\r\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\r\n\t\t\t\t\t// positive uint\r\n\t\t\t\t\tif (value < 0x18) {\r\n\t\t\t\t\t\ttarget[position++] = value\r\n\t\t\t\t\t} else if (value < 0x100) {\r\n\t\t\t\t\t\ttarget[position++] = 0x18\r\n\t\t\t\t\t\ttarget[position++] = value\r\n\t\t\t\t\t} else if (value < 0x10000) {\r\n\t\t\t\t\t\ttarget[position++] = 0x19\r\n\t\t\t\t\t\ttarget[position++] = value >> 8\r\n\t\t\t\t\t\ttarget[position++] = value & 0xff\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget[position++] = 0x1a\r\n\t\t\t\t\t\ttargetView.setUint32(position, value)\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\r\n\t\t\t\t\tif (value >= -0x18) {\r\n\t\t\t\t\t\ttarget[position++] = 0x1f - value\r\n\t\t\t\t\t} else if (value >= -0x100) {\r\n\t\t\t\t\t\ttarget[position++] = 0x38\r\n\t\t\t\t\t\ttarget[position++] = ~value\r\n\t\t\t\t\t} else if (value >= -0x10000) {\r\n\t\t\t\t\t\ttarget[position++] = 0x39\r\n\t\t\t\t\t\ttargetView.setUint16(position, ~value)\r\n\t\t\t\t\t\tposition += 2\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget[position++] = 0x3a\r\n\t\t\t\t\t\ttargetView.setUint32(position, ~value)\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet useFloat32\r\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\r\n\t\t\t\t\t\ttarget[position++] = 0xfa\r\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\r\n\t\t\t\t\t\tlet xShifted\r\n\t\t\t\t\t\tif (useFloat32 < 4 ||\r\n\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\r\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t} else\r\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0xfb\r\n\t\t\t\t\ttargetView.setFloat64(position, value)\r\n\t\t\t\t\t/*if (!target[position[4] && !target[position[5] && !target[position[6] && !target[position[7] && !(target[0] & 0x78) < ) {\r\n\t\t\t\t\t\t// something like this can be represented as a float with binary rounding\r\n\t\t\t\t\t}*/\r\n\t\t\t\t\tposition += 8\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'object') {\r\n\t\t\t\tif (!value)\r\n\t\t\t\t\ttarget[position++] = 0xf6\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (referenceMap) {\r\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\r\n\t\t\t\t\t\tif (referee) {\r\n\t\t\t\t\t\t\tif (!referee.id) {\r\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\r\n\t\t\t\t\t\t\t\treferee.id = idsToInsert.push(referee)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttarget[position++] = 0xca // tag 10\r\n\t\t\t\t\t\t\ttarget[position++] = 0x1a // uint32\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, referee.id)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t} else \r\n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet constructor = value.constructor\r\n\t\t\t\t\tif (constructor === Object) {\r\n\t\t\t\t\t\twriteObject(value, true)\r\n\t\t\t\t\t} else if (constructor === Array) {\r\n\t\t\t\t\t\tlength = value.length\r\n\t\t\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\r\n\t\t\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x98\r\n\t\t\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x99\r\n\t\t\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x9a\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\t\t\t\tencode(value[i])\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (constructor === Map) {\r\n\t\t\t\t\t\tlength = value.size\r\n\t\t\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xa0 | length\r\n\t\t\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xb8\r\n\t\t\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xb9\r\n\t\t\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\r\n\t\t\t\t\t\t\tencode(key)\r\n\t\t\t\t\t\t\tencode(entryValue)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\t\r\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\r\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\r\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\r\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\r\n\t\t\t\t\t\t\t\tlet tag = extension.tag\r\n\t\t\t\t\t\t\t\tif (tag < 0x18) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xc0 | tag\r\n\t\t\t\t\t\t\t\t} else if (tag < 0x100) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd8\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag\r\n\t\t\t\t\t\t\t\t} else if (tag < 0x10000) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag >> 8\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag & 0xff\r\n\t\t\t\t\t\t\t\t} else if (tag > -1) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\t\t\t\t\t\ttargetView.setUint32(position, tag)\r\n\t\t\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\t\t} // else undefined, don't write tag\r\n\t\t\t\t\t\t\t\textension.encode.call(this, value, encode)\r\n\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// no extension found, write as object\r\n\t\t\t\t\t\twriteObject(value, false)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'boolean') {\r\n\t\t\t\ttarget[position++] = value ? 0xf5 : 0xf4\r\n\t\t\t} else if (type === 'bigint') {\r\n\t\t\t\ttarget[position++] = 0xfb\r\n\t\t\t\t/*if (value < 9223372036854776000 && value > -9223372036854776000) \r\n\t\t\t\t\ttargetView.setBigInt64(position, value)\r\n\t\t\t\telse*/\r\n\t\t\t\t\ttargetView.setFloat64(position, value)\r\n\t\t\t\tposition += 8\r\n\t\t\t} else if (type === 'undefined') {\r\n\t\t\t\t//target[position++] = 0xc1 // this is the \"never-used\" byte\r\n\t\t\t\ttarget[position++] = 0xf7\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Unknown type ' + type)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst writeObject = this.useRecords === false ? this.variableMapSize ? (object) => {\r\n\t\t\tlet keys = Object.keys(object)\r\n\t\t\tlet length = keys.length\r\n\t\t\tif (length < 0x18) {\r\n\t\t\t\ttarget[position++] = 0xa0 | length\r\n\t\t\t} else if (length < 0x100) {\r\n\t\t\t\ttarget[position++] = 0xb8\r\n\t\t\t\ttarget[position++] = length\r\n\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\ttarget[position++] = 0xb9\r\n\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t} else {\r\n\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\tposition += 4\r\n\t\t\t}\r\n\t\t\tlet key\r\n\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\tencode(key = keys[i])\r\n\t\t\t\tencode(object[key])\r\n\t\t\t}\r\n\t\t} :\r\n\t\t(object, safePrototype) => {\r\n\t\t\ttarget[position++] = 0xb9 // always use map 16, so we can preallocate and set the length afterwards\r\n\t\t\tlet objectOffset = position - start\r\n\t\t\tposition += 2\r\n\t\t\tlet size = 0\r\n\t\t\tfor (let key in object) {\r\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key)) {\r\n\t\t\t\t\tencode(key)\r\n\t\t\t\t\tencode(object[key])\r\n\t\t\t\t\tsize++\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttarget[objectOffset++ + start] = size >> 8\r\n\t\t\ttarget[objectOffset + start] = size & 0xff\r\n\t\t} :\r\n\r\n\t/*\tsharedStructures ? // For highly stable structures, using for-in can a little bit faster\r\n\t\t(object, safePrototype) => {\r\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\r\n\t\t\tlet objectOffset = position++ - start\r\n\t\t\tlet wroteKeys\r\n\t\t\tfor (let key in object) {\r\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key)) {\r\n\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\t\tnextTransition.__keys__ = (transition.__keys__ || []).concat([key])\r\n\t\t\t\t\t\t/*let keys = Object.keys(object)\r\n\t\t\t\t\t\tif \r\n\t\t\t\t\t\tlet size = 0\r\n\t\t\t\t\t\tlet startBranch = transition.__keys__ ? transition.__keys__.length : 0\r\n\t\t\t\t\t\tfor (let i = 0, l = keys.length; i++) {\r\n\t\t\t\t\t\t\tlet key = keys[i]\r\n\t\t\t\t\t\t\tsize += key.length << 2\r\n\t\t\t\t\t\t\tif (i >= startBranch) {\r\n\t\t\t\t\t\t\t\tnextTransition = nextTransition[key] = Object.create(null)\r\n\t\t\t\t\t\t\t\tnextTransition.__keys__ = keys.slice(0, i + 1)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmakeRoom(position + size)\r\n\t\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\t\ttarget.copy(target, )\r\n\t\t\t\t\t\tobjectOffset\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttransition = nextTransition\r\n\t\t\t\t\tencode(object[key])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet id = transition.id\r\n\t\t\tif (!id) {\r\n\t\t\t\tid = transition.id = structures.push(transition.__keys__) + 63\r\n\t\t\t\tif (sharedStructures.onUpdate)\r\n\t\t\t\t\tsharedStructures.onUpdate(id, transition.__keys__)\r\n\t\t\t}\r\n\t\t\ttarget[objectOffset + start] = id\r\n\t\t}*/\r\n\t\t(object) => {\r\n\t\t\tlet keys = Object.keys(object)\r\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\r\n\t\t\tlet newTransitions = 0\r\n\t\t\tfor (let i =0, l = keys.length; i < l; i++) {\r\n\t\t\t\tlet key = keys[i]\r\n\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\tnewTransitions++\r\n\t\t\t\t}\r\n\t\t\t\ttransition = nextTransition\r\n\t\t\t}\r\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\r\n\t\t\tif (recordId) {\r\n\t\t\t\ttarget[position++] = 0xd8 // tag one byte\r\n\t\t\t\ttarget[position++] = recordId\r\n\t\t\t} else {\r\n\t\t\t\trecordId = structures.nextId++\r\n\t\t\t\tif (!recordId) {\r\n\t\t\t\t\trecordId = 0x40\r\n\t\t\t\t\tstructures.nextId = 0x41\r\n\t\t\t\t}\r\n\t\t\t\tif (recordId >= 0x100) {// cycle back around\r\n\t\t\t\t\tstructures.nextId = (recordId = maxSharedStructures + 0x40) + 1\r\n\t\t\t\t}\r\n\t\t\t\ttransition[RECORD_SYMBOL] = recordId\r\n\t\t\t\tstructures[recordId - 0x40] = keys\r\n\t\t\t\tif (sharedStructures && sharedStructures.length <= maxSharedStructures) {\r\n\t\t\t\t\ttarget[position++] = 0xd8 // tag one byte\r\n\t\t\t\t\ttarget[position++] = recordId // tag number\r\n\t\t\t\t\thasSharedUpdate = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[position++] = 0xc6 // tag 6\r\n\t\t\t\t\tif (newTransitions)\r\n\t\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\r\n\t\t\t\t\t// record the removal of the id, we can maintain our shared structure\r\n\t\t\t\t\tif (recordIdsToRemove.length >= 0xc0 - maxSharedStructures)\r\n\t\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = 0 // we are cycling back through, and have to remove old ones\r\n\t\t\t\t\trecordIdsToRemove.push(transition)\r\n\t\t\t\t\tencode([ recordId ].concat(keys))\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// now write the values\r\n\t\t\tfor (let i =0, l = keys.length; i < l; i++)\r\n\t\t\t\tencode(object[keys[i]])\r\n\t\t}\r\n\t\tconst makeRoom = (end) => {\r\n\t\t\tlet newSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\r\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\r\n\t\t\ttargetView = new DataView(newBuffer.buffer, 0, newSize)\r\n\t\t\tif (target.copy)\r\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\r\n\t\t\telse\r\n\t\t\t\tcopyBinary(target, newBuffer, 0, start, end)\r\n\t\t\tposition -= start\r\n\t\t\tstart = 0\r\n\t\t\tsafeEnd = newBuffer.length - 10\r\n\t\t\treturn target = newBuffer\r\n\t\t}\r\n\t}\r\n\tuseBuffer(buffer) {\r\n\t\t// this means we are finished using our own buffer and we can write over it safely\r\n\t\ttarget = buffer\r\n\t\ttargetView = new DataView(target.buffer, target.byteOffset, target.byteLength)\r\n\t\tposition = 0\r\n\t}\r\n}\r\nexports.Encoder = Encoder\r\n\r\nfunction copyBinary(source, target, targetOffset, offset, endOffset) {\r\n\twhile (offset < endOffset) {\r\n\t\ttarget[targetOffset++] = source[offset++]\r\n\t}\r\n}\r\n\r\nextensionClasses = [ Date, Set, Error, RegExp, ArrayBuffer, Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/ ]\r\nextensions = [{\r\n\ttag: 1,\r\n\tencode(date, encode) {\r\n\t\tlet seconds = date.getTime() / 1000\r\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\r\n\t\t\t// Timestamp 32\r\n\t\t\ttarget[position++] = 0x1a\r\n\t\t\ttargetView.setUint32(position, seconds)\r\n\t\t\tposition += 4\r\n\t\t} else {\r\n\t\t\t// Timestamp float64\r\n\t\t\ttarget[position++] = 0xfb\r\n\t\t\ttargetView.setFloat64(position, seconds)\r\n\t\t\tposition += 8\r\n\t\t}\r\n\t}\r\n}, {\r\n\ttag: 11,\r\n\tencode(set, encode) {\r\n\t\tlet array = Array.from(set)\r\n\t\tencode(array)\r\n\t}\r\n}, {\r\n\ttag: 8,\r\n\tencode(error, encode) {\r\n\t\tencode([ error.name, error.message ])\r\n\t}\r\n}, {\r\n\ttag: 13,\r\n\tencode(regex, encode) {\r\n\t\tencode([ regex.source, regex.flags ])\r\n\t}\r\n}, {\r\n\tencode(arrayBuffer, encode) {\r\n\t\tif (this.structuredClone)\r\n\t\t\twriteExtBuffer(arrayBuffer, 0x10, encode)\r\n\t\telse\r\n\t\t\twriteBuffer(hasNodeBuffer ? Buffer.from(arrayBuffer) : new Uint8Array(arrayBuffer))\r\n\t}\r\n}, {\r\n\tencode(typedArray, encode) {\r\n\t\tlet constructor = typedArray.constructor\r\n\t\tif (constructor !== ByteArray && this.structuredClone)\r\n\t\t\twriteExtBuffer(typedArray, typedArrays.indexOf(constructor.name), encode)\r\n\t\telse\r\n\t\t\twriteBuffer(typedArray)\r\n\t}\r\n}]\r\n\r\nfunction writeExtBuffer(typedArray, type, encode) {\r\n\ttarget[position++] = 0xcc // tag 12\r\n\tlet length = typedArray.byteLength\r\n\tlet offset = typedArray.byteOffset || 0\r\n\tlet buffer = typedArray.buffer || typedArray\r\n\tencode([type, hasNodeBuffer ? Buffer.from(buffer, offset, length) :\r\n\t\tnew Uint8Array(buffer, offset, length)])\r\n}\r\nfunction writeBuffer(buffer) {\r\n\tlet length = buffer.byteLength\r\n\tif (length < 0x100) {\r\n\t\ttarget[position++] = 0x58\r\n\t\ttarget[position++] = length\r\n\t} else if (length < 0x10000) {\r\n\t\ttarget[position++] = 0x59\r\n\t\ttarget[position++] = length >> 8\r\n\t\ttarget[position++] = length & 0xff\r\n\t} else {\r\n\t\ttarget[position++] = 0x5a\r\n\t\ttargetView.setUint32(position, length)\r\n\t\tposition += 4\r\n\t}\r\n\tif (buffer.copy)\r\n\t\tbuffer.copy(target, position)\r\n\telse\r\n\t\tcopyBinary(buffer, target, position, 0, length)\r\n\tposition += length\r\n}\r\n\r\nfunction writeExtensionData(result, target, position, type) {\r\n\tlet length = result.length\r\n\tswitch (length) {\r\n\t\tcase 1:\r\n\t\t\ttarget[position++] = 0xd4\r\n\t\t\tbreak\r\n\t\tcase 2:\r\n\t\t\ttarget[position++] = 0xd5\r\n\t\t\tbreak\r\n\t\tcase 4:\r\n\t\t\ttarget[position++] = 0xd6\r\n\t\t\tbreak\r\n\t\tcase 8:\r\n\t\t\ttarget[position++] = 0xd7\r\n\t\t\tbreak\r\n\t\tcase 16:\r\n\t\t\ttarget[position++] = 0xd8\r\n\t\t\tbreak\r\n\t\tdefault:\r\n\t\t\tif (length < 0x100) {\r\n\t\t\t\ttarget[position++] = 0xc7\r\n\t\t\t\ttarget[position++] = length\r\n\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\ttarget[position++] = 0xc8\r\n\t\t\t\ttarget[position++] = length << 8\r\n\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t} else {\r\n\t\t\t\ttarget[position++] = 0xc9\r\n\t\t\t\ttarget[position++] = length << 24\r\n\t\t\t\ttarget[position++] = (length << 16) & 0xff\r\n\t\t\t\ttarget[position++] = (length << 8) & 0xff\r\n\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t}\r\n\t}\r\n\ttarget[position++] = type\r\n\tif (result.copy)\r\n\t\tresult.copy(target, position)\r\n\telse\r\n\t\tcopyBinary(result, target, position, 0, length)\r\n\tposition += length\r\n\treturn position\r\n}\r\n\r\nfunction insertIds(serialized, idsToInsert) {\r\n\t// insert the ids that need to be referenced for structured clones\r\n\tlet nextId\r\n\tlet distanceToMove = idsToInsert.length * 6\r\n\tlet lastEnd = serialized.length - distanceToMove\r\n\tidsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1)\r\n\twhile (nextId = idsToInsert.pop()) {\r\n\t\tlet offset = nextId.offset\r\n\t\tlet id = nextId.id\r\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\r\n\t\tdistanceToMove -= 6\r\n\t\tlet position = offset + distanceToMove\r\n\t\tserialized[position++] = 0xc9 // tag 9\r\n\t\tserialized[position++] = 0x1a // uint32\r\n\t\tserialized[position++] = id << 24\r\n\t\tserialized[position++] = (id << 16) & 0xff\r\n\t\tserialized[position++] = (id << 8) & 0xff\r\n\t\tserialized[position++] = id & 0xff\r\n\t\tlastEnd = offset\r\n\t}\r\n\treturn serialized\r\n}\r\n\r\nexports.addExtension = function(extension) {\r\n\tif (extension.Class) {\r\n\t\tif (!extension.encode)\r\n\t\t\tthrow new Error('Extension has no encode function')\r\n\t\textensionClasses.unshift(extension.Class)\r\n\t\textensions.unshift(extension)\r\n\t}\r\n\tdecoderModule.addExtension(extension)\r\n}\r\n","\"use strict\"\r\nlet decoder\r\ntry {\r\n\tdecoder = new TextDecoder()\r\n} catch(error) {}\r\nlet src\r\nlet srcEnd\r\nlet position = 0\r\nlet alreadySet\r\nconst EMPTY_ARRAY = []\r\nlet strings = EMPTY_ARRAY\r\nlet stringPosition = 0\r\nlet currentDecoder = {}\r\nlet srcString\r\nlet srcStringStart = 0\r\nlet srcStringEnd = 0\r\nlet referenceMap\r\nlet currentExtensions = []\r\nlet dataView\r\nlet defaultOptions = {\r\n\tuseRecords: false,\r\n\tmapsAsObjects: true\r\n}\r\n\r\nclass Decoder {\r\n\tconstructor(options) {\r\n\t\tif (options) {\r\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\r\n\t\t\t\toptions.mapsAsObjects = true\r\n\t\t\tif (options.getStructures && !options.structures)\r\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\r\n\t\t}\r\n\t\tObject.assign(this, options)\r\n\t}\r\n\tdecode(source, end, continueReading) {\r\n\t\tif (src) {\r\n\t\t\t// re-entrant execution, save the state and restore it after we do this decode\r\n\t\t\treturn saveState(() => {\r\n\t\t\t\tsrc = null\r\n\t\t\t\treturn this ? this.decode(source, end, continueReading) : Decoder.prototype.decode.call(defaultOptions, source, end, continueReading)\r\n\t\t\t})\r\n\t\t}\r\n\t\tsrcEnd = end > -1 ? end : source.length\r\n\t\tposition = 0\r\n\t\tstringPosition = 0\r\n\t\tsrcStringEnd = 0\r\n\t\tsrcString = null\r\n\t\tstrings = EMPTY_ARRAY\r\n\t\tsrc = source\r\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\r\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\r\n\t\t// new ones\r\n\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\r\n\t\tif (this) {\r\n\t\t\tcurrentDecoder = this\r\n\t\t\tif (this.structures) {\r\n\t\t\t\tcurrentStructures = this.structures\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn read()\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tif (position >= srcEnd || !continueReading) {\r\n\t\t\t\t\t\t// finished reading this source, cleanup references\r\n\t\t\t\t\t\tcurrentStructures = null\r\n\t\t\t\t\t\tsrc = null\r\n\t\t\t\t\t\tif (referenceMap)\r\n\t\t\t\t\t\t\treferenceMap = null\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\r\n\t\t\t\tcurrentStructures = []\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcurrentDecoder = defaultOptions\r\n\t\t\tif (!currentStructures || currentStructures.length > 0)\r\n\t\t\t\tcurrentStructures = []\r\n\t\t}\r\n\t\ttry {\r\n\t\t\treturn read()\r\n\t\t} finally {\r\n\t\t\tsrc = null\r\n\t\t\tif (referenceMap)\r\n\t\t\t\treferenceMap = null\r\n\t\t}\r\n\t}\r\n}\r\nlet currentStructures\r\nexports.Decoder = Decoder\r\nexports.read = read\r\nexports.getPosition = () => {\r\n\treturn position\r\n}\r\n\r\nfunction read() {\r\n\tlet token = src[position++]\r\n\tlet majorType = token >> 5\r\n\ttoken = token & 0x1f\r\n\tif (token > 0x17) {\r\n\t\tswitch (token) {\r\n\t\t\tcase 0x18:\r\n\t\t\t\ttoken = src[position++]\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x19:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\treturn getFloat16()\r\n\t\t\t\t}\r\n\t\t\t\ttoken = dataView.getUint16(position)\r\n\t\t\t\tposition += 2\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1a:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\tlet value = dataView.getFloat32(position)\r\n\t\t\t\t\tif (currentDecoder.useFloat32 > 2) {\r\n\t\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\r\n\t\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\r\n\t\t\t\t\t}\r\n\t\t\t\t\tposition += 4\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t\ttoken = dataView.getUint32(position)\r\n\t\t\t\tposition += 4\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1b:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\tlet value = dataView.getFloat64(position)\r\n\t\t\t\t\tposition += 8\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t\tif (currentDecoder.uint64AsNumber)\r\n\t\t\t\t\treturn src[position++] * 0x100000000000000 + src[position++] * 0x1000000000000 + src[position++] * 0x10000000000 + src[position++] * 0x100000000 +\r\n\t\t\t\t\t\tsrc[position++] * 0x1000000 + (src[position++] << 16) + (src[position++] << 8) + src[position++]\r\n\t\t\t\ttoken = dataView.getBigUint64(position)\r\n\t\t\t\tposition += 8\r\n\t\t\t\tbreak\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error('Unknown token ' + token)\r\n\t\t}\r\n\t}\r\n\tswitch (majorType) {\r\n\t\tcase 0: // positive int\r\n\t\t\treturn token\r\n\t\tcase 1: // negative int\r\n\t\t\treturn ~token\r\n\t\tcase 2: // buffer\r\n\t\t\treturn readBin(token)\r\n\t\tcase 3: // string\r\n\t\t\tif (srcStringEnd >= position) {\r\n\t\t\t\treturn srcString.slice(position - srcStringStart, (position += token) - srcStringStart)\r\n\t\t\t}\r\n\t\t\tif (srcStringEnd == 0 && srcEnd < 120 && token < 16) {\r\n\t\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\r\n\t\t\t\tlet string = /*length < 16 ? */shortStringInJS(token)// : longStringInJS(length)\r\n\t\t\t\tif (string != null)\r\n\t\t\t\t\treturn string\r\n\t\t\t}\r\n\t\t\treturn readFixedString(token)\r\n\t\tcase 4: // array\r\n\t\t\tlet array = new Array(token)\r\n\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\tarray[i] = read()\r\n\t\t\t}\r\n\t\t\treturn array\r\n\t\tcase 5: // map\r\n\t\t\tif (currentDecoder.mapsAsObjects) {\r\n\t\t\t\tlet object = {}\r\n\t\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\t\tobject[read()] = read()\r\n\t\t\t\t}\r\n\t\t\t\treturn object\r\n\t\t\t} else {\r\n\t\t\t\tlet map = new Map()\r\n\t\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\t\tmap.set(read(), read())\r\n\t\t\t\t}\r\n\t\t\t\treturn map\r\n\t\t\t}\r\n\t\tcase 6: // extension\r\n\t\t\tif (token >= 0x40 && token < 0x100) { // record structures\r\n\t\t\t\tlet structure = currentStructures[token - 0x40]\r\n\t\t\t\tif (structure) {\r\n\t\t\t\t\tif (!structure.read)\r\n\t\t\t\t\t\tstructure.read = createStructureReader(structure)\r\n\t\t\t\t\treturn structure.read()\r\n\t\t\t\t} else if (currentDecoder.getStructures) {\r\n\t\t\t\t\tlet updatedStructures = saveState(() => {\r\n\t\t\t\t\t\t// save the state in case getStructures modifies our buffer\r\n\t\t\t\t\t\tsrc = null\r\n\t\t\t\t\t\treturn currentDecoder.getStructures()\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (currentStructures === true)\r\n\t\t\t\t\t\tcurrentDecoder.structures = currentStructures = updatedStructures\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tcurrentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures))\r\n\t\t\t\t\tstructure = currentStructures[token - 0x40]\r\n\t\t\t\t\tif (structure) {\r\n\t\t\t\t\t\tif (!structure.read)\r\n\t\t\t\t\t\t\tstructure.read = createStructureReader(structure)\r\n\t\t\t\t\t\treturn structure.read()\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\treturn token\r\n\t\t\t\t} else\r\n\t\t\t\t\treturn token\r\n\t\t\t} else {\r\n\t\t\t\tif (currentExtensions[token])\r\n\t\t\t\t\treturn currentExtensions[token](read())\r\n\t\t\t\telse\r\n\t\t\t\t\tthrow new Error('Unknown extension ' + token)\r\n\t\t\t}\r\n\t\tcase 7: // fixed value\r\n\t\t\tswitch (token) {\r\n\t\t\t\tcase 0x14: return false\r\n\t\t\t\tcase 0x15: return true\r\n\t\t\t\tcase 0x16: return null\r\n\t\t\t\tcase 0x17: return; // undefined\r\n\t\t\t\t// case 0x19: // half-precision float\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error('Unknown token ' + token)\r\n\t\t\t}\r\n\t\tdefault: // negative int\r\n\t\t\tif (isNaN(token)) {\r\n\t\t\t\tlet error = new Error('Unexpected end of CBOR data')\r\n\t\t\t\terror.incomplete = true\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t\tthrow new Error('Unknown CBOR token ' + token)\r\n\t}\r\n}\r\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\r\nfunction createStructureReader(structure) {\r\n\tfunction readObject() {\r\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\r\n\t\tif (readObject.count++ > 2) {\r\n\t\t\tthis.read = (new Function('r', 'return function(){return {' + structure.map(key => validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '}}'))(read)\r\n\t\t\treturn this.read()\r\n\t\t}\r\n\t\tlet object = {}\r\n\t\tfor (let i = 0, l = structure.length; i < l; i++) {\r\n\t\t\tlet key = structure[i]\r\n\t\t\tobject[key] = read()\r\n\t\t}\r\n\t\treturn object\r\n\t}\r\n\treadObject.count = 0\r\n\treturn readObject\r\n}\r\n\r\nlet readFixedString = readStringJS\r\nlet readString8 = readStringJS\r\nlet readString16 = readStringJS\r\nlet readString32 = readStringJS\r\n\r\nexports.setExtractor = (extractStrings) => {\r\n\treadFixedString = readString(1)\r\n\treadString8 = readString(2)\r\n\treadString16 = readString(3)\r\n\treadString32 = readString(5)\r\n\tfunction readString(headerLength) {\r\n\t\treturn function readString(length) {\r\n\t\t\tlet string = strings[stringPosition++]\r\n\t\t\tif (string == null) {\r\n\t\t\t\tstrings = extractStrings(position, srcEnd, length, src)\r\n\t\t\t\tstringPosition = 0\r\n\t\t\t\tstring = strings[stringPosition++]\r\n\t\t\t}\r\n\t\t\tlet srcStringLength = string.length\r\n\t\t\tif (srcStringLength <= length) {\r\n\t\t\t\tposition += length\r\n\t\t\t\treturn string\r\n\t\t\t}\r\n\t\t\tsrcString = string\r\n\t\t\tsrcStringStart = position\r\n\t\t\tsrcStringEnd = position + srcStringLength\r\n\t\t\tposition += length\r\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\r\n\t\t}\r\n\t}\r\n}\r\nfunction readStringJS(length) {\r\n\tlet result\r\n\tif (length < 16) {\r\n\t\tif (result = shortStringInJS(length))\r\n\t\t\treturn result\r\n\t}\r\n\tif (length > 64 && decoder)\r\n\t\treturn decoder.decode(src.subarray(position, position += length))\r\n\tconst end = position + length\r\n\tconst units = []\r\n\tresult = ''\r\n\twhile (position < end) {\r\n\t\tconst byte1 = src[position++]\r\n\t\tif ((byte1 & 0x80) === 0) {\r\n\t\t\t// 1 byte\r\n\t\t\tunits.push(byte1)\r\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\r\n\t\t\t// 2 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\r\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\r\n\t\t\t// 3 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tconst byte3 = src[position++] & 0x3f\r\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\r\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\r\n\t\t\t// 4 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tconst byte3 = src[position++] & 0x3f\r\n\t\t\tconst byte4 = src[position++] & 0x3f\r\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\r\n\t\t\tif (unit > 0xffff) {\r\n\t\t\t\tunit -= 0x10000\r\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\r\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\r\n\t\t\t}\r\n\t\t\tunits.push(unit)\r\n\t\t} else {\r\n\t\t\tunits.push(byte1)\r\n\t\t}\r\n\r\n\t\tif (units.length >= 0x1000) {\r\n\t\t\tresult += fromCharCode.apply(String, units)\r\n\t\t\tunits.length = 0\r\n\t\t}\r\n\t}\r\n\r\n\tif (units.length > 0) {\r\n\t\tresult += fromCharCode.apply(String, units)\r\n\t}\r\n\r\n\treturn result\r\n}\r\n/*function readShortString(length) {\r\n\tlet start = position\r\n\tlet end = start + length\r\n\twhile (position < end) {\r\n\t\tconst byte = src[position++];\r\n\t\tif ((byte & 0x80) > 0) {\r\n\t\t\tposition = end\r\n\t\t\tconsole.log('utf8 slice')\r\n\t\t\treturn src.utf8Slice(start, end)\r\n\t\t}\r\n\t}\r\n\tif (srcStringEnd < end) {\r\n\t\tsrcStringStart = start\r\n\t\tsrcStringEnd = start + 8192\r\n\t\tsrcString = src.toString('latin1', start, srcStringEnd)\r\n\t}\r\n\treturn srcString.slice(start - srcStringStart, end - srcStringStart)\r\n}*/\r\nlet fromCharCode = String.fromCharCode\r\nfunction longStringInJS(length) {\r\n\tlet start = position\r\n\tlet bytes = new Array(length)\r\n\tfor (let i = 0; i < length; i++) {\r\n\t\tconst byte = src[position++];\r\n\t\tif ((byte & 0x80) > 0) {\r\n\t\t\tposition = start\r\n \t\t\treturn\r\n \t\t}\r\n \t\tbytes[i] = byte\r\n \t}\r\n \treturn fromCharCode.apply(String, bytes)\r\n}\r\nfunction shortStringInJS(length) {\r\n\tif (length < 4) {\r\n\t\tif (length < 2) {\r\n\t\t\tif (length === 0)\r\n\t\t\t\treturn ''\r\n\t\t\telse {\r\n\t\t\t\tlet a = src[position++]\r\n\t\t\t\tif ((a & 0x80) > 1) {\r\n\t\t\t\t\tposition -= 1\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet a = src[position++]\r\n\t\t\tlet b = src[position++]\r\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\r\n\t\t\t\tposition -= 2\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 3)\r\n\t\t\t\treturn fromCharCode(a, b)\r\n\t\t\tlet c = src[position++]\r\n\t\t\tif ((c & 0x80) > 0) {\r\n\t\t\t\tposition -= 3\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn fromCharCode(a, b, c)\r\n\t\t}\r\n\t} else {\r\n\t\tlet a = src[position++]\r\n\t\tlet b = src[position++]\r\n\t\tlet c = src[position++]\r\n\t\tlet d = src[position++]\r\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\r\n\t\t\tposition -= 4\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (length < 6) {\r\n\t\t\tif (length === 4)\r\n\t\t\t\treturn fromCharCode(a, b, c, d)\r\n\t\t\telse {\r\n\t\t\t\tlet e = src[position++]\r\n\t\t\t\tif ((e & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 5\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\r\n\t\t\t}\r\n\t\t} else if (length < 8) {\r\n\t\t\tlet e = src[position++]\r\n\t\t\tlet f = src[position++]\r\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\r\n\t\t\t\tposition -= 6\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 7)\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\r\n\t\t\tlet g = src[position++]\r\n\t\t\tif ((g & 0x80) > 0) {\r\n\t\t\t\tposition -= 7\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\r\n\t\t} else {\r\n\t\t\tlet e = src[position++]\r\n\t\t\tlet f = src[position++]\r\n\t\t\tlet g = src[position++]\r\n\t\t\tlet h = src[position++]\r\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\r\n\t\t\t\tposition -= 8\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 10) {\r\n\t\t\t\tif (length === 8)\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet i = src[position++]\r\n\t\t\t\t\tif ((i & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 9\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\r\n\t\t\t\t}\r\n\t\t\t} else if (length < 12) {\r\n\t\t\t\tlet i = src[position++]\r\n\t\t\t\tlet j = src[position++]\r\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 10\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (length < 11)\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\r\n\t\t\t\tlet k = src[position++]\r\n\t\t\t\tif ((k & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 11\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\r\n\t\t\t} else {\r\n\t\t\t\tlet i = src[position++]\r\n\t\t\t\tlet j = src[position++]\r\n\t\t\t\tlet k = src[position++]\r\n\t\t\t\tlet l = src[position++]\r\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 12\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (length < 14) {\r\n\t\t\t\t\tif (length === 12)\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlet m = src[position++]\r\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\r\n\t\t\t\t\t\t\tposition -= 13\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet m = src[position++]\r\n\t\t\t\t\tlet n = src[position++]\r\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 14\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (length < 15)\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\r\n\t\t\t\t\tlet o = src[position++]\r\n\t\t\t\t\tif ((o & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 15\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction readBin(length) {\r\n\treturn currentDecoder.copyBuffers ?\r\n\t\t// specifically use the copying slice (not the node one)\r\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\r\n\t\tsrc.subarray(position, position += length)\r\n}\r\nfunction readExt(length) {\r\n\tlet type = src[position++]\r\n\tif (currentExtensions[type]) {\r\n\t\treturn currentExtensions[type](src.subarray(position, position += length))\r\n\t}\r\n\telse\r\n\t\tthrow new Error('Unknown extension type ' + type)\r\n}\r\n\r\nfunction getFloat16() {\r\n\tlet byte0 = src[position++]\r\n\tlet byte1 = src[position++]\r\n\tlet half = (byte0 << 8) + byte1\r\n\tlet exp = (half >> 10) & 0x1f\r\n\tlet mant = half & 0x3ff\r\n\tlet val\r\n\tif (exp == 0) val = Math.exp(mant, -24)\r\n\telse if (exp != 31) val = Math.exp(mant + 1024, exp - 25)\r\n\telse val = mant == 0 ? Infinity : NaN\r\n\treturn half & 0x8000 ? -val : val\r\n}\r\nlet glbl = typeof window == 'object' ? window : global\r\n\r\ncurrentExtensions[0] = (dateString) => {\r\n\t// string date extension\r\n\treturn new Date(dateString)\r\n}\r\n\r\ncurrentExtensions[1] = (epochSec) => {\r\n\t// numeric date extension\r\n\treturn new Date(epochSec * 1000)\r\n}\r\n\r\ncurrentExtensions[2] = (buffer) => {\r\n\t// bigint extension\r\n\treturn new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength).getBigUint64(0)\r\n}\r\n\r\ncurrentExtensions[3] = (buffer) => {\r\n\t// negative bigint extension\r\n\treturn BigInt(-1) - (new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength).getBigUint64(0))\r\n}\r\n\r\n// the registration of the record definition extension (tag 6)\r\ncurrentExtensions[6] = (structure) => {\r\n\tlet id = structure[0]\r\n\tstructure = structure.slice(1)\r\n\tcurrentStructures[id - 0x40] = structure\r\n\tstructure.read = createStructureReader(structure)\r\n\treturn structure.read()\r\n}\r\n\r\ncurrentExtensions[8] = (data) => {\r\n\treturn (glbl[data[0]] || Error)(data[1])\r\n}\r\n\r\ncurrentExtensions[9] = (id) => {\r\n\t// id extension (for structured clones)\r\n\tif (!referenceMap)\r\n\t\treferenceMap = new Map()\r\n\tlet token = src[position]\r\n\tlet target\r\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\r\n\t// ahead past references to record structure definitions\r\n\tif ((token >> 5) == 4)\r\n\t\ttarget = []\r\n\telse\r\n\t\ttarget = {}\r\n\r\n\tlet refEntry = { target } // a placeholder object\r\n\treferenceMap.set(id, refEntry)\r\n\tlet targetProperties = read() // read the next value as the target object to id\r\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\r\n\t\treturn Object.assign(target, targetProperties)\r\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\r\n\treturn targetProperties // no cycle, can just use the returned read object\r\n}\r\n\r\ncurrentExtensions[10] = (id) => {\r\n\t// pointer extension (for structured clones)\r\n\tlet refEntry = referenceMap.get(id)\r\n\trefEntry.used = true\r\n\treturn refEntry.target\r\n}\r\n\r\ncurrentExtensions[11] = (array) => new Set(array)\r\n\r\nconst typedArrays = ['Int8','Uint8\t','Uint8Clamped','Int16','Uint16','Int32','Uint32','Float32','Float64','BigInt64','BigUint64'].map(type => type + 'Array')\r\n\r\ncurrentExtensions[12] = (data) => {\r\n\tlet [ typeCode, buffer ] = data\r\n\tlet typedArrayName = typedArrays[typeCode]\r\n\tif (!typedArrayName)\r\n\t\tthrow new Error('Could not find typed array for code ' + typeCode)\r\n\t// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\r\n\treturn new glbl[typedArrayName](Uint8Array.prototype.slice.call(buffer, 0).buffer)\r\n}\r\ncurrentExtensions[13] = (data) => {\r\n\treturn new RegExp(data[0], data[1])\r\n}\r\n\r\nfunction saveState(callback) {\r\n\tlet savedSrcEnd = srcEnd\r\n\tlet savedPosition = position\r\n\tlet savedStringPosition = stringPosition\r\n\tlet savedSrcStringStart = srcStringStart\r\n\tlet savedSrcStringEnd = srcStringEnd\r\n\tlet savedSrcString = srcString\r\n\tlet savedStrings = strings\r\n\tlet savedReferenceMap = referenceMap\r\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\r\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\r\n\tlet savedStructures = currentStructures\r\n\tlet savedDecoder = currentDecoder\r\n\tlet value = callback()\r\n\tsrcEnd = savedSrcEnd\r\n\tposition = savedPosition\r\n\tstringPosition = savedStringPosition\r\n\tsrcStringStart = savedSrcStringStart\r\n\tsrcStringEnd = savedSrcStringEnd\r\n\tsrcString = savedSrcString\r\n\tstrings = savedStrings\r\n\treferenceMap = savedReferenceMap\r\n\tsrc = savedSrc\r\n\tcurrentStructures = savedStructures\r\n\tcurrentDecoder = savedDecoder\r\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\r\n\treturn value\r\n}\r\nexports.clearSource = function() {\r\n\tsrc = null\r\n}\r\n\r\nexports.addExtension = function(extension) {\r\n\tcurrentExtensions[extension.tag] = extension.decode\r\n}\r\n\r\nlet mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\r\nfor (let i = 0; i < 256; i++) {\r\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\r\n}\r\nexports.mult10 = mult10\r\nexports.typedArrays = typedArrays\r\n","exports.Encoder = require('./encode').Encoder\r\nexports.Decoder = require('./decode').Decoder\r\nexports.addExtension = require('./encode').addExtension\r\nlet encoder = new exports.Encoder({ useRecords: false })\r\nexports.decode = encoder.decode\r\nexports.encode = encoder.encode\r\nObject.assign(exports, {\r\n\tALWAYS:1,\r\n\tDECIMAL_ROUND: 3,\r\n\tDECIMAL_FIT: 4\r\n})\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}
@@ -1,93 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __export = (target, all) => {
9
- __markAsModule(target);
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __reExport = (target, module2, desc) => {
14
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
15
- for (let key of __getOwnPropNames(module2))
16
- if (!__hasOwnProp.call(target, key) && key !== "default")
17
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
18
- }
19
- return target;
20
- };
21
- var __toModule = (module2) => {
22
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
23
- };
24
- __export(exports, {
25
- ALWAYS: () => import_encode.ALWAYS,
26
- DECIMAL_FIT: () => import_encode.DECIMAL_FIT,
27
- DECIMAL_ROUND: () => import_encode.DECIMAL_ROUND,
28
- Decoder: () => import_decode.Decoder,
29
- DecoderStream: () => import_stream.DecoderStream,
30
- Encoder: () => import_encode.Encoder,
31
- EncoderStream: () => import_stream.EncoderStream,
32
- FLOAT32_OPTIONS: () => import_decode.FLOAT32_OPTIONS,
33
- NEVER: () => import_encode.NEVER,
34
- REUSE_BUFFER_MODE: () => import_encode.REUSE_BUFFER_MODE,
35
- Tag: () => import_decode.Tag,
36
- addExtension: () => import_encode.addExtension,
37
- clearSource: () => import_decode.clearSource,
38
- decode: () => import_decode.decode,
39
- decodeIter: () => import_iterators.decodeIter,
40
- decodeMultiple: () => import_decode.decodeMultiple,
41
- encode: () => import_encode.encode,
42
- encodeIter: () => import_iterators.encodeIter,
43
- isNativeAccelerationEnabled: () => import_decode.isNativeAccelerationEnabled,
44
- mapsAsObjects: () => mapsAsObjects,
45
- roundFloat32: () => import_decode.roundFloat32,
46
- useRecords: () => useRecords
47
- });
48
- var import_encode = __toModule(require("./encode.js"));
49
- var import_decode = __toModule(require("./decode.js"));
50
- var import_stream = __toModule(require("./stream.js"));
51
- var import_iterators = __toModule(require("./iterators.js"));
52
- var import_decode2 = __toModule(require("./decode.js"));
53
- var import_module = __toModule(require("module"));
54
- const import_meta = {};
55
- const useRecords = false;
56
- const mapsAsObjects = true;
57
- const extractor = tryRequire("cbor-extract");
58
- if (extractor)
59
- (0, import_decode2.setExtractor)(extractor.extractStrings);
60
- function tryRequire(moduleId) {
61
- try {
62
- let require2 = (0, import_module.createRequire)(import_meta.url);
63
- return require2(moduleId);
64
- } catch (error) {
65
- if (typeof window != "undefined")
66
- console.warn("For browser usage, directly use cbor-x/decode or cbor-x/encode modules. " + error.message.split("\n")[0]);
67
- }
68
- }
69
- // Annotate the CommonJS export names for ESM import in node:
70
- 0 && (module.exports = {
71
- ALWAYS,
72
- DECIMAL_FIT,
73
- DECIMAL_ROUND,
74
- Decoder,
75
- DecoderStream,
76
- Encoder,
77
- EncoderStream,
78
- FLOAT32_OPTIONS,
79
- NEVER,
80
- REUSE_BUFFER_MODE,
81
- Tag,
82
- addExtension,
83
- clearSource,
84
- decode,
85
- decodeIter,
86
- decodeMultiple,
87
- encode,
88
- encodeIter,
89
- isNativeAccelerationEnabled,
90
- mapsAsObjects,
91
- roundFloat32,
92
- useRecords
93
- });