cbor-x 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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) => {
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) => {
@@ -1552,7 +1552,9 @@
1552
1552
  let extensionClass = extensionClasses[i];
1553
1553
  if (value instanceof extensionClass) {
1554
1554
  let extension = extensions[i];
1555
- 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);
1556
1558
  if (tag < 0x18) {
1557
1559
  target[position$1++] = 0xc0 | tag;
1558
1560
  } else if (tag < 0x100) {
package/dist/index.min.js CHANGED
@@ -1,53 +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(F&&(// bundled strings to skip past
2
- x=F.postBundlePosition),x==V)w=null,C=null,K&&(K=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=ce[(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 T.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>=D){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==L)// 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==D)return g();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 f=C[x++],i=C[x++],g=C[x++],h=C[x++];if(0<(128&f)||0<(128&i)||0<(128&g)||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,f,i,g,h,l,y);let n=C[x++];return 0<(128&n)?void(x-=15):te(s,a,r,u,d,e,c,p,f,i,g,h,l,y,n)}if(12===t)return te(s,a,r,u,d,e,c,p,f,i,g,h);else{let t=C[x++];return 0<(128&t)?void(x-=13):te(s,a,r,u,d,e,c,p,f,i,g,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 f(e,t){let s=ae[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;H[a?t:t-4]=1==n||a==oe?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 g(){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,F=[i(h()),i(h())],F.position0=0,F.position1=0,F.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=T,i=K,o=F,d=new Uint8Array(C.slice(0,V)),u=w,c=z,l=Q,p=e();return V=t,x=s,q=n,G=a,T=r,K=i,F=o,C=d,Q=l,w=u,z=c,N=new DataView(C.buffer,C.byteOffset,C.byteLength),p}function b(){C=null,K=null,w=null}function k(e){H[e.tag]=e.decode}function O(e){24>e?Ee[ve++]=128|e:256>e?(Ee[ve++]=152,Ee[ve++]=e):65536>e?(Ee[ve++]=153,Ee[ve++]=e>>8,Ee[ve++]=255&e):(Ee[ve++]=154,Ie.setUint32(ve,e),ve+=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,t){// the big endian equivalents are 4 less
41
- return!Be&&1<t&&(e-=4),{tag:e,encode:function(e,t){let s=e.byteLength,n=e.byteOffset||0,a=e.buffer||e;t(Oe?Buffer.from(a,n,s):new Uint8Array(a,n,s))}}}function S(e,t){let s=e.byteLength;24>s?Ee[ve++]=64+s:256>s?(Ee[ve++]=88,Ee[ve++]=s):65536>s?(Ee[ve++]=89,Ee[ve++]=s>>8,Ee[ve++]=255&s):(Ee[ve++]=90,Ie.setUint32(ve,s),ve+=4),ve+s>=Ee.length&&t(ve+s),Ee.set(e,ve),ve+=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
42
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
43
- e[r++]=216,e[r++]=28,a=t}return e}function E(e,t){Ie.setUint32(Ae.position+e,ve-Ae.position-e+1);// the offset to bundle
44
- let s=Ae;Ae=null,t(s[0]),t(s[1])}function I(e){if(e.Class){if(!e.encode)throw new Error("Extension has no encode function");ke.unshift(e.Class),be.unshift(e)}k(e)}function*U(e,t){const s=new Ve(t);for(const n of e)yield s.encode(n)}async function*v(e,t){const s=new Ve(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)}/**
45
45
  * Given an Iterable/Iterator input which yields buffers, returns an IterableIterator which yields sync decoded objects
46
46
  * Or, given an Async Iterable/Iterator which yields promises resolving in buffers, returns an AsyncIterableIterator.
47
47
  * @param {Iterable|Iterator|AsyncIterable|AsyncIterableIterator} bufferIterator
48
48
  * @param {object} [options] - Decoder options
49
49
  * @returns {IterableIterator|Promise.<AsyncIterableIterator}
50
- */let A;try{A=new TextDecoder}catch(e){}let C,V,x=0;const B=57342,L=57343,D=57337,P=6,j={};let w,T,F,K,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
51
51
  {this.mapKey=new Map;for(let[t,s]of Object.entries(e.keyMap))this.mapKey.set(s,t)}Object.assign(this,e)}/*
52
52
  decodeKey(key) {
53
53
  return this.keyMap
@@ -57,32 +57,32 @@ let s=Ae;Ae=null,t(s[0]),t(s[1])}function I(e){if(e.Class){if(!e.encode)throw ne
57
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)
58
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
59
59
  switch(t.constructor.name){case"Array":return t.map(e=>this.decodeKeys(e));//case 'Map': return this.decodeKeys(res)
60
- }return t}decode(e,t){if(C)// re-entrant execution, save the state and restore it after we do this decode
61
- return m(()=>(b(),this?this.decode(e,t):X.prototype.decode.call($,e,t)));V=-1<t?t:e.length,x=0,G=0,T=null,F=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
62
62
  // technique for getting data from a database where it can be copied into an existing buffer instead of creating
63
63
  // new ones
64
- 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):le.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
65
- 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
66
- 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=>F?F[0].slice(F.position0,F.position0+=e):new ne(e,14),H[15]=e=>F?F[1].slice(F.position1,F.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
67
- return Y=Y?t.concat(Y.slice(t.length)):t,Y.prefixes=e(),Y.suffixes=e(),e();// read the rump
68
- };ie.handlesRead=!0,H[51]=ie,H[P]=e=>{// packed reference
69
- 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=>{K||(K=new Map,K.id=0);let t,s=K.id++,n=C[x];t=4==n>>5?[]:{};let a={target:t};// a placeholder object
70
- K.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
71
71
  return a.used?Object.assign(t,r):(a.target=r,r);// no cycle, can just use the returned read object
72
- },H[28].handlesRead=!0,H[29]=e=>{// sharedref http://cbor.schmorp.de/value-sharing (for structured clones)
73
- let t=K.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=1==new Uint8Array(new Uint16Array([1]).buffer)[0],de=["Uint8","Uint8Clamped","Uint16","Uint32","BigUint64","Int8","Int16","Int32","BigInt64","Float32","Float64"],ue=[64,68,69,70,71,72,77,78,79,85,86];for(let t=0;t<de.length;t++)f(de[t],ue[t]);const ce=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++)ce[t]=+("1e"+Math.floor(45.15-.30103*t));let le=new X({useRecords:!1});const pe=le.decode,fe=le.decodeMultiple,ge={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let he,ye=new Float32Array(1),me=new Uint8Array(ye.buffer,0,4);try{he=new TextEncoder}catch(e){}let be,ke;const Oe="undefined"!=typeof Buffer,Re=Oe?Buffer.allocUnsafeSlow:Uint8Array,Me=Oe?Buffer:Uint8Array,Se=256,_e=Oe?4294967296:2144337920;let Ee,Ie,Ue,ve=0,Ae=null;const Ce=Symbol("record-id");class Ve extends X{constructor(e){super(e),this.offset=0;let t,s,n,a,r;e=e||{};let i=Me.prototype.utf8Write?function(e,t,s){return Ee.utf8Write(e,t,s)}:!!(he&&he.encodeInto)&&function(e,t){return he.encodeInto(e,Ee.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,f,g=e.sharedValues;if(g){f=Object.create(null);for(let e=0,t=g.length;e<t;e++)f[g[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)
75
75
  if(this._keyMap&&!this._mapped)//console.log('encoding ', value)
76
76
  switch(e.constructor.name){case"Array":e=e.map(e=>this.encodeKeys(e));//case 'Map':
77
77
  // value = this.encodeKeys(value)
78
78
  // break
79
79
  }//this._mapped = true
80
- return this.encode(e,t)},this.encode=function(i,d){if(Ee||(Ee=new Re(8192),Ie=new DataView(Ee.buffer,0,8192),ve=0),Ue=Ee.length-10,2048>Ue-ve?(Ee=new Re(Ee.length),Ie=new DataView(Ee.buffer,0,Ee.length),Ue=Ee.length-10,ve=0):d===Fe&&(ve=2147483640&ve+7),t=ve,o.useSelfDescribedHeader&&(Ie.setUint32(ve,3654940416),ve+=3),r=o.structuredClone?new Map:null,o.bundleStrings&&"string"!=typeof i?(Ae=[],Ae.size=1/0):Ae=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){f={};for(let e=0,s=t.length;e<s;e++)f[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)
81
- if(t=s[n],!t)continue;let e,a=s.transitions;for(let s=0,r=t.length;s<r;s++){void 0===a[Ce]&&(a[Ce]=n);let r=t[s];e=a[r],e||(e=a[r]=Object.create(null)),a=e}a[Ce]=1048576|n}}c||(s.nextId=e)}if(n&&(n=!1),a=s||[],p=f,e.pack){let t=new Map;if(t.values=[],t.encoder=o,t.maxValues=e.maxPrivatePackedValues||(f?16:1/0),t.objectMap=f||!1,t.samplingPackedValues=l,R(i,t),0<t.values.length){Ee[ve++]=216,Ee[ve++]=51,O(4);let e=t.values;b(e),O(0),O(0),p=Object.create(f||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
82
- if(b(i),Ae&&E(t,b),o.offset=ve,r&&r.idsToInsert){ve+=2*r.idsToInsert.length,ve>Ue&&M(ve),o.offset=ve;let e=_(Ee.subarray(t,ve),r.idsToInsert);return r=null,e}return d&Fe?(Ee.start=t,Ee.end=ve,Ee):Ee.subarray(t,ve);// position can change if we call encode again in saveShared, so we get the buffer now
83
- }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][Ce]=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
84
- let e=Ee.subarray(t,ve);return!1===o.updateSharedData()?o.encode(i):e;// re-encode if it fails
85
- }d&Ke&&(ve=t)}},this.findCommonStringsToPack=()=>(l=new Map,f||(f=Object.create(null)),e=>{let t=e&&e.threshold||4,s=this.pack?e.maxPrivatePackedValues||16:0;g||(g=this.sharedValues=[]);for(let[a,r]of l)r.count>t&&(f[a]=s++,g.push(a),n=!0);for(;this.saveShared&&!1===this.updateSharedData(););l=null});const b=s=>{ve>Ue&&(Ee=M(ve));var n,a=typeof s;if("string"==a){if(p){let t=p[s];if(0<=t)return void(16>t?Ee[ve++]=t+224:(Ee[ve++]=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) {
86
86
  packedStatus.serializationId = serializationId
87
87
  packedStatus.count = 1
88
88
  if (options.sharedPack) {
@@ -95,30 +95,30 @@ let e=Ee.subarray(t,ve);return!1===o.updateSharedData()?o.encode(i):e;// re-enco
95
95
 
96
96
  }
97
97
  }
98
- } // 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(Ae&&4<=a&&1024>a){if((Ae.size+=a)>61440){let e,s=(Ae[0]?3*Ae[0].length+Ae[1].length:0)+10;ve+s>Ue&&(Ee=M(ve+s)),Ee[ve++]=217,Ee[ve++]=223,Ee[ve++]=249,Ee[ve++]=Ae.position?132:130,Ee[ve++]=26,e=ve-t,ve+=4,Ae.position&&E(t,b),Ae=["",""],Ae.size=0,Ae.position=e}let e=/[\u0080-\uFFFF]/.test(s);return Ae[e?0:1]+=s,Ee[ve++]=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
99
- let o=3*a;if(ve+o>Ue&&(Ee=M(ve+o)),64>a||!i){let e,t,i,o=ve+r;for(e=0;e<a;e++)t=s.charCodeAt(e),128>t?Ee[o++]=t:2048>t?(Ee[o++]=192|t>>6,Ee[o++]=128|63&t):55296==(64512&t)&&56320==(64512&(i=s.charCodeAt(e+1)))?(t=65536+((1023&t)<<10)+(1023&i),e++,Ee[o++]=240|t>>18,Ee[o++]=128|63&t>>12,Ee[o++]=128|63&t>>6,Ee[o++]=128|63&t):(Ee[o++]=224|t>>12,Ee[o++]=128|63&t>>6,Ee[o++]=128|63&t);n=o-ve-r}else n=i(s,ve+r,o);24>n?Ee[ve++]=96|n:256>n?(2>r&&Ee.copyWithin(ve+2,ve+1,ve+1+n),Ee[ve++]=120,Ee[ve++]=n):65536>n?(3>r&&Ee.copyWithin(ve+3,ve+2,ve+2+n),Ee[ve++]=121,Ee[ve++]=n>>8,Ee[ve++]=255&n):(5>r&&Ee.copyWithin(ve+5,ve+3,ve+3+n),Ee[ve++]=122,Ie.setUint32(ve,n),ve+=4),ve+=n}else if("number"===a){if(s>>>0===s)24>s?Ee[ve++]=s:256>s?(Ee[ve++]=24,Ee[ve++]=s):65536>s?(Ee[ve++]=25,Ee[ve++]=s>>8,Ee[ve++]=255&s):(Ee[ve++]=26,Ie.setUint32(ve,s),ve+=4);else if(s>>0===s)-24<=s?Ee[ve++]=31-s:-256<=s?(Ee[ve++]=56,Ee[ve++]=~s):-65536<=s?(Ee[ve++]=57,Ie.setUint16(ve,~s),ve+=2):(Ee[ve++]=58,Ie.setUint32(ve,~s),ve+=4);else{let e;if(0<(e=this.useFloat32)&&4294967296>s&&-2147483648<=s){Ee[ve++]=250,Ie.setFloat32(ve,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*ce[(127&Ee[ve])<<1|Ee[ve+1]>>7])>>0===t)return void(ve+=4);// move back into position for writing a double
101
- ve--}Ee[ve++]=251,Ie.setFloat64(ve,s),ve+=8}}else if("object"===a){if(!s)Ee[ve++]=246;else{if(r){let e=r.get(s);if(e){// 16-bit uint
102
- if(Ee[ve++]=216,Ee[ve++]=29,Ee[ve++]=25,!e.references){let t=r.idsToInsert||(r.idsToInsert=[]);e.references=[],t.push(e)}// TODO: also support 32-bit
103
- return e.references.push(ve-t),void(ve+=2)}r.set(s,{offset:ve-t})}let e=s.constructor;if(e===Object)k(s,!0);else if(e===Array){n=s.length,24>n?Ee[ve++]=128|n:O(n);for(let e=0;e<n;e++)b(s[e])}else if(e!==Map){for(let e,t=0,n=be.length;t<n;t++)if(e=ke[t],s instanceof e){let e=be[t],n=e.tag||e.getTag&&e.getTag(s);return 24>n?Ee[ve++]=192|n:256>n?(Ee[ve++]=216,Ee[ve++]=n):65536>n?(Ee[ve++]=217,Ee[ve++]=n>>8,Ee[ve++]=255&n):-1<n&&(Ee[ve++]=218,Ie.setUint32(ve,n),ve+=4),void e.encode.call(this,s,b,M)}if(s[Symbol.iterator]){Ee[ve++]=159;// indefinite length array
104
- for(let e of s)b(e);// stop-code
105
- return void(Ee[ve++]=255)}// no extension found, write as object
106
- k(s,!s.hasOwnProperty)}else if((this.mapsAsObjects?!1!==this.useTag259ForMaps:this.useTag259ForMaps)&&(Ee[ve++]=217,Ee[ve++]=1,Ee[ve++]=3),n=s.size,24>n?Ee[ve++]=160|n:256>n?(Ee[ve++]=184,Ee[ve++]=n):65536>n?(Ee[ve++]=185,Ee[ve++]=n>>8,Ee[ve++]=255&n):(Ee[ve++]=186,Ie.setUint32(ve,n),ve+=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)Ee[ve++]=s?245:244;else if("bigint"===a){if(s<BigInt(1)<<BigInt(64)&&0<=s)Ee[ve++]=27,Ie.setBigUint64(ve,s);else if(s>-(BigInt(1)<<BigInt(64))&&0>s)Ee[ve++]=59,Ie.setBigUint64(ve,-s-BigInt(1));else// overflow
107
- if(this.largeBigIntToFloat)Ee[ve++]=251,Ie.setFloat64(ve,+s);else throw new RangeError(s+" was too large to fit in CBOR 64-bit integer format, set largeBigIntToFloat to convert to float-64");ve+=8}else if("undefined"===a)Ee[ve++]=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)
108
- let t=Object.keys(e),s=Object.values(e),n=t.length;if(24>n?Ee[ve++]=160|n:256>n?(Ee[ve++]=184,Ee[ve++]=n):65536>n?(Ee[ve++]=185,Ee[ve++]=n>>8,Ee[ve++]=255&n):(Ee[ve++]=186,Ie.setUint32(ve,n),ve+=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)=>{Ee[ve++]=185;// always use map 16, so we can preallocate and set the length afterwards
109
- let n=ve-t;ve+=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++);Ee[n++ +t]=a>>8,Ee[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[Ce]&&(r=65535&d[Ce]),s=d[n]=Object.create(null),c++),d=s,l++);let p=d[Ce];if(void 0!==p)p&=65535,Ee[ve++]=217,Ee[ve++]=224|p>>8,Ee[ve++]=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>=Se&&(a.nextId=(p=u)+1)):p=r,a[p]=o,p<u){Ee[ve++]=217,Ee[ve++]=224|p>>8,Ee[ve++]=255&p,d=a.transitions;for(let e=0;e<l;e++)(void 0===d[Ce]||1048576&d[Ce])&&(d[Ce]=p),d=d[o[e]];d[Ce]=1048576|p,n=!0}else{d[Ce]=p,Ie.setUint32(ve,3655335680),ve+=3,c&&(y+=m*c),h.length>=Se-u&&(h.shift()[Ce]=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?Ee[ve++]=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
110
- if(e-t>_e)throw new Error("Encoded buffer would be larger than maximum buffer size");r=s(_e,4096*n(a((e-t)*(67108864<e?1.25:2),4194304)/4096))}else// faster handling for smaller buffers
111
- r=(a(e-t<<2,Ee.length-1)>>12)+1<<12;let i=new Re(r);return Ie=new DataView(i.buffer,0,r),Ee.copy?Ee.copy(i,0,t,e):i.set(Ee.slice(t,e)),ve-=t,t=0,Ue=i.length-10,Ee=i}}useBuffer(e){// this means we are finished using our own buffer and we can write over it safely
112
- Ee=e,Ie=new DataView(Ee.buffer,Ee.byteOffset,Ee.byteLength),ve=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 xe(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 xe{constructor(e,t,s){this.structures=e,this.packedValues=t,this.version=s}}const Be=1==new Uint8Array(new Uint16Array([1]).buffer)[0];ke=[Date,Set,Error,RegExp,ne,ArrayBuffer,Me,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?function(){}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?function(){}:BigInt64Array,Float32Array,Float64Array,xe],be=[{tag:1,encode(e){let t=e.getTime()/1e3;(this.useTimestamp32||0===e.getMilliseconds())&&0<=t&&4294967296>t?(Ee[ve++]=26,Ie.setUint32(ve,t),ve+=4):(Ee[ve++]=251,Ie.setFloat64(ve,t),ve+=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
114
114
  encode(e,t){let s=Array.from(e);t(s)}},{tag:27,// http://cbor.schmorp.de/generic-object
115
115
  encode(e,t){t([e.name,e.message])}},{tag:27,// http://cbor.schmorp.de/generic-object
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){S(e,s)}},{encode(e,t,s){S(e,s)}},M(64,1),M(68,1),M(69,2),M(70,4),M(71,8),M(72,1),M(77,2),M(78,4),M(79,8),M(85,4),M(86,8),{encode(e,t){// write SharedData
117
- let s=e.packedValues||[],n=e.structures||[];if(0<s.values.length){Ee[ve++]=216,Ee[ve++]=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(ve,3655335424),ve+=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 Le=new Ve({useRecords:!1});const De=Le.encode,{NEVER:Pe,ALWAYS:je,DECIMAL_ROUND:we,DECIMAL_FIT:Te}=ge,Fe=512,Ke=1024;e.ALWAYS=je,e.DECIMAL_FIT=Te,e.DECIMAL_ROUND=we,e.Decoder=X,e.Encoder=Ve,e.FLOAT32_OPTIONS=ge,e.NEVER=Pe,e.REUSE_BUFFER_MODE=Fe,e.Tag=ne,e.addExtension=I,e.clearSource=b,e.decode=pe,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
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=fe,e.encode=De,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=/**
119
119
  * Given an Iterable first argument, returns an Iterable where each value is encoded as a Buffer
120
120
  * If the argument is only Async Iterable, the return value will be an Async Iterable.
121
121
  * @param {Iterable|Iterator|AsyncIterable|AsyncIterator} objectIterator - iterable source, like a Readable object stream, an array, Set, or custom object
122
122
  * @param {options} [options] - cbor-x Encoder options
123
123
  * @returns {IterableIterator|Promise.<AsyncIterableIterator>}
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 U(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){ye[0]=e;let t=ce[(127&me[3])<<1|me[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) => {
@@ -1597,7 +1597,9 @@ class Encoder extends Decoder {
1597
1597
  let extensionClass = extensionClasses[i];
1598
1598
  if (value instanceof extensionClass) {
1599
1599
  let extension = extensions[i];
1600
- 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);
1601
1603
  if (tag < 0x18) {
1602
1604
  target[position$1++] = 0xc0 | tag;
1603
1605
  } else if (tag < 0x100) {
package/dist/test.js CHANGED
@@ -1009,13 +1009,16 @@
1009
1009
  var map = new Map();
1010
1010
  map.set(4, 'four');
1011
1011
  map.set('three', 3);
1012
-
1012
+ let year2039 = new Date('2039-07-05T16:22:35.792Z');
1013
+ let year2038 = new Date('2038-08-06T00:19:02.911Z');
1013
1014
 
1014
1015
  var data = {
1015
1016
  map: map,
1016
1017
  date: new Date(1532219539733),
1017
1018
  farFutureDate: new Date(3532219539133),
1018
1019
  ancient: new Date(-3532219539133),
1020
+ year2038,
1021
+ year2039,
1019
1022
  invalidDate: new Date('invalid')
1020
1023
  };
1021
1024
  let encoder = new Encoder();
@@ -1026,6 +1029,8 @@
1026
1029
  assert.equal(deserialized.date.getTime(), 1532219539733);
1027
1030
  assert.equal(deserialized.farFutureDate.getTime(), 3532219539133);
1028
1031
  assert.equal(deserialized.ancient.getTime(), -3532219539133);
1032
+ assert.equal(deserialized.year2038.getTime(), year2038.getTime());
1033
+ assert.equal(deserialized.year2039.getTime(), year2039.getTime());
1029
1034
  assert.equal(deserialized.invalidDate.toString(), 'Invalid Date');
1030
1035
  });
1031
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) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cbor-x",
3
3
  "author": "Kris Zyp",
4
- "version": "1.2.0",
4
+ "version": "1.3.1",
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.2"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@rollup/plugin-json": "^4.1.0",
@@ -72,8 +72,5 @@
72
72
  "mocha": "^8.1.3",
73
73
  "rollup": "^1.20.3",
74
74
  "rollup-plugin-babel-minify": "^9.0.0"
75
- },
76
- "dependencies": {
77
- "esbuild": "^0.13.15"
78
75
  }
79
76
  }