Socket
Socket
Sign inDemoInstall

cbor-x

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cbor-x - npm Package Compare versions

Comparing version 1.4.1 to 1.5.0

dist/decode-no-eval.cjs

30

decode.js

@@ -200,2 +200,3 @@ let decoder

position = bundledStrings.postBundlePosition;
bundledStrings = null;
}

@@ -937,15 +938,20 @@

}
currentExtensions[25] = (id) => {
return stringRefs[id]
}
currentExtensions[256] = (read) => {
stringRefs = []
try {
return read()
} finally {
stringRefs = null
}
}
currentExtensions[256].handlesRead = true
// The following code is an incomplete implementation of http://cbor.schmorp.de/stringref
// the real thing would need to implemennt more logic to populate the stringRefs table and
// maintain a stack of stringRef "namespaces".
//
// currentExtensions[25] = (id) => {
// return stringRefs[id]
// }
// currentExtensions[256] = (read) => {
// stringRefs = []
// try {
// return read()
// } finally {
// stringRefs = null
// }
// }
// currentExtensions[256].handlesRead = true
currentExtensions[28] = (read) => {

@@ -952,0 +958,0 @@ // shareable http://cbor.schmorp.de/value-sharing (for structured clones)

142

dist/index.min.js

@@ -1,140 +0,2 @@

(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.exp,s=Math.log,n=Math.round;function a(){try{let e=r();if(F){if(B>=F.postBundlePosition){let e=new Error("Unexpected bundle position");throw e.incomplete=!0,e}// bundled strings to skip past
B=F.postBundlePosition}if(B==V)// finished reading this source, cleanup references
T=null,x=null,Y&&(Y=null);else if(B>V){// over read
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
return e}catch(e){throw R(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function r(){let e=x[B++],t=e>>5;if(e&=31,23<e)switch(e){case 24:e=x[B++];break;case 25:if(7==t)return p();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
let t=fe[(127&x[B])<<1|x[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
switch(t){case 2:// byte string
case 3:// text string
throw new Error("Indefinite length not supported for byte or text strings");case 4:// array
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
let a;if(q.mapsAsObjects){let e={};if(q.keyMap)for(;(a=r())!=w;)e[o(q.decodeKey(a))]=r();else for(;(a=r())!=w;)e[o(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
return e;case 1:// negative int
return~e;case 2:// buffer
return l(e);case 3:// string
if(H>=B)return K.slice(B-G,(B+=e)-G);if(0==H&&140>V&&32>e){// for small blocks, avoiding the overhead of the extract call is helpful
let t=16>e?c(e):u(e);if(null!=t)return t}return te(e);case 4:// array
let s=Array(e);//if (currentDecoder.keyMap) for (let i = 0; i < token; i++) array[i] = currentDecoder.decodeKey(read())
//else
for(let t=0;t<e;t++)s[t]=r();return s;case 5:// map
if(q.mapsAsObjects){let t={};if(q.keyMap)for(let s=0;s<e;s++)t[o(q.decodeKey(r()))]=r();else for(let s=0;s<e;s++)t[o(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
if(e>=D){let t=T[8191&e];// check record structures first
// 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))
if(t)return t.read||(t.read=i(t)),t.read();if(65536>e){if(e==P)// 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)
return oe(r());if(e==L){let e=m(),t=r();for(let s=2;s<e;s++)oe([t++,r()]);return r()}if(e==D)return y();if(q.getShared&&(b(),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 ie(t,e)}case 7:// fixed value
switch(e){case 20:return!1;case 21:return!0;case 22:return null;case 23:return;// undefined
case 31:default:let t=(N||g())[e];if(void 0!==t)return t;throw new Error("Unknown token "+e);}default:// negative int
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
let e=x[B++];//let majorType = token >> 5
if(e&=31,23<e)switch(e){case 24:e=x[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 "+x[B-1]);}// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function
let t=this.compiledReader;// first look to see if we have the fast compiled function
for(;t;){// we have a fast compiled object literal reader
if(t.propertyCount===e)return t(r);// with the right length, so we use it
t=t.next}if(3<=this.slowReads++){// create a fast compiled reader
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)?o(e)+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}"):new Function("r","return {"+s.map(e=>ee.test(e)?o(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[o(q.decodeKey(this[t]))]=r();else for(let t=0;t<e;t++)s[o(this[t])]=r();return s}return e.slowReads=0,t}function o(e){return"__proto__"===e?"__proto_":e}function d(e){let t;if(16>e&&(t=c(e)))return t;if(64<e&&C)return C.decode(x.subarray(B,B+=e));const s=B+e,n=[];for(t="";B<s;){const e=x[B++];if(0==(128&e))n.push(e);else if(192==(224&e)){// 2 bytes
const t=63&x[B++];n.push((31&e)<<6|t)}else if(224==(240&e)){// 3 bytes
const t=63&x[B++],s=63&x[B++];n.push((31&e)<<12|t<<6|s)}else if(240==(248&e)){// 4 bytes
const t=63&x[B++],s=63&x[B++],a=63&x[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 u(e){let t=B,s=Array(e);for(let n=0;n<e;n++){const e=x[B++];if(0<(128&e))return void(B=t);s[n]=e}return se.apply(String,s)}function c(t){if(4>t){if(!(2>t)){let e=x[B++],s=x[B++];if(0<(128&e)||0<(128&s))return void(B-=2);if(3>t)return se(e,s);let n=x[B++];return 0<(128&n)?void(B-=3):se(e,s,n)}if(0===t)return"";else{let e=x[B++];return 1<(128&e)?void(B-=1):se(e)}}else{let s=x[B++],a=x[B++],r=x[B++],u=x[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=x[B++];return 0<(128&t)?void(B-=5):se(s,a,r,u,t)}}else if(8>t){let n=x[B++],e=x[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=x[B++];return 0<(128&i)?void(B-=7):se(s,a,r,u,n,e,i)}else{let d=x[B++],e=x[B++],c=x[B++],p=x[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=x[B++];return 0<(128&t)?void(B-=9):se(s,a,r,u,d,e,c,p,t)}}else if(12>t){let n=x[B++],i=x[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=x[B++];return 0<(128&o)?void(B-=11):se(s,a,r,u,d,e,c,p,n,i,o)}else{let f=x[B++],i=x[B++],g=x[B++],h=x[B++];if(0<(128&f)||0<(128&i)||0<(128&g)||0<(128&h))return void(B-=12);if(!(14>t)){let l=x[B++],y=x[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=x[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=x[B++];return 0<(128&t)?void(B-=13):se(s,a,r,u,d,e,c,p,f,i,g,h,t)}}}}}function l(e){return q.copyBuffers?// specifically use the copying slice (not the node one)
Uint8Array.prototype.slice.call(x,B,B+=e):x.subarray(B,B+=e)}function p(){let e=x[B++],t=x[B++],s=(127&e)>>2;if(31===s)// specials
return t||3&e?NaN:128&e?-Infinity:1/0;if(0===s){// sub-normals
// significand with 10 fractional bits and divided by 2^14
let s=((3&e)<<8|t)/16777216;return 128&e?-s:s}return ae[3]=128&e|// sign bit
(s>>1)+56,ae[2]=(7&e)<<5|// last exponent bit and first two mantissa bits
t>>3,ae[1]=t<<5,ae[0]=0,ne[0]}function f(e,t){return"string"==typeof e?e+t:e instanceof Array?e.concat(t):Object.assign({},e,t)}function g(){if(!N)if(q.getShared)b();else throw new Error("No packed values available");return N}function h(e,t){let s="get"+e.name.slice(0,-5);"function"!=typeof e&&(e=null);let n=e.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==ce?s=>{if(!e)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
return new e(Uint8Array.prototype.slice.call(s,0).buffer)}:n=>{if(!e)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 e(d),c=o[s];for(let e=0;e<d;e++)u[e]=c.call(o,e<<r,a);return u}}}function y(){let e=m(),t=B+r();for(let t,s=2;s<e;s++)// skip past bundles that were already read
// this will increment position, so must add to position afterwards
t=m(),B+=t;let s=B;return B=t,F=[d(m()),d(m())],F.position0=0,F.position1=0,F.postBundlePosition=B,B=s,r()}function m(){let e=31&x[B++];return 23<e&&(24===e?e=x[B++]:25===e?(e=W.getUint16(B),B+=2):26===e?(e=W.getUint32(B),B+=4):void 0),e}function b(){if(q.getShared){let e=k(()=>(x=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 k(e){let t=V,s=B,n=G,a=H,r=K,i=Y,o=F,d=new Uint8Array(x.slice(0,V)),u=T,c=q,l=X,p=e();return V=t,B=s,G=n,H=a,K=r,Y=i,F=o,x=d,X=l,T=u,q=c,W=new DataView(x.buffer,x.byteOffset,x.byteLength),p}function R(){x=null,Y=null,T=null}function O(e){J[e.tag]=e.decode}function M(e){24>e?Ue[Ae++]=128|e:256>e?(Ue[Ae++]=152,Ue[Ae++]=e):65536>e?(Ue[Ae++]=153,Ue[Ae++]=e>>8,Ue[Ae++]=255&e):(Ue[Ae++]=154,ve.setUint32(Ae,e),Ae+=4)}function _(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++)_(e[s],t);else{let n=!t.encoder.useRecords;for(var s in e)e.hasOwnProperty(s)&&(n&&_(s,t),_(e[s],t))}break;case"function":console.log(e);}}function S(e,t){// the big endian equivalents are 4 less
return!Pe&&1<t&&(e-=4),{tag:e,encode:function s(e,t){let n=e.byteLength,a=e.byteOffset||0,r=e.buffer||e;t(Oe?Buffer.from(r,a,n):new Uint8Array(r,a,n))}}}function E(e,t){let s=e.byteLength;// if it is already a typed array (has an ArrayBuffer), use that, but if it is an ArrayBuffer itself,
// must wrap it to set it.
24>s?Ue[Ae++]=64+s:256>s?(Ue[Ae++]=88,Ue[Ae++]=s):65536>s?(Ue[Ae++]=89,Ue[Ae++]=s>>8,Ue[Ae++]=255&s):(Ue[Ae++]=90,ve.setUint32(Ae,s),Ae+=4),Ae+s>=Ue.length&&t(Ae+s),Ue.set(e.buffer?e:new Uint8Array(e),Ae),Ae+=s}function U(e,t){// insert the ids that need to be referenced for structured clones
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
e[r++]=216,e[r++]=28,a=t}return e}function v(e,t){ve.setUint32(Ce.position+e,Ae-Ce.position-e+1);// the offset to bundle
let s=Ce;Ce=null,t(s[0]),t(s[1])}function*I(e,t){const s=new Be(t);for(const n of e)yield s.encode(n)}async function*A(e,t){const s=new Be(t);for await(const n of e)yield s.encode(n)}/**
* Given an Iterable/Iterator input which yields buffers, returns an IterableIterator which yields sync decoded objects
* Or, given an Async Iterable/Iterator which yields promises resolving in buffers, returns an AsyncIterableIterator.
* @param {Iterable|Iterator|AsyncIterable|AsyncIterableIterator} bufferIterator
* @param {object} [options] - Decoder options
* @returns {IterableIterator|Promise.<AsyncIterableIterator}
*/let C;try{C=new TextDecoder}catch(e){}let x,V,B=0;const L=57342,P=57343,D=57337,j=6,w={};let T,K,F,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
{this.mapKey=new Map;for(let[t,s]of Object.entries(e.keyMap))this.mapKey.set(s,t)}Object.assign(this,e)}/*
decodeKey(key) {
return this.keyMap
? Object.keys(this.keyMap)[Object.values(this.keyMap).indexOf(key)] || key
: key
}
*/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)
return e.forEach((e,s)=>t[o(this._mapKey.has(s)?this._mapKey.get(s):s)]=e),t}mapDecode(e,t){let s=this.decode(e);if(this._keyMap)//Experiemntal support for Optimised KeyMap decoding
switch(s.constructor.name){case"Array":return s.map(e=>this.decodeKeys(e));//case 'Map': return this.decodeKeys(res)
}return s}decode(e,t){if(x)// re-entrant execution, save the state and restore it after we do this decode
return k(()=>(R(),this?this.decode(e,t):Z.prototype.decode.call(Q,e,t)));V=-1<t?t:e.length,B=0,H=0,K=null,F=null,x=e;// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend
// technique for getting data from a database where it can be copied into an existing buffer instead of creating
// new ones
try{W=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(x=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):ge.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,R()}}}const ee=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;let te=d,se=String.fromCharCode,ne=new Float32Array(1),ae=new Uint8Array(ne.buffer,0,4),re=Array(4096);class ie{constructor(e,t){this.value=e,this.tag=t}}J[0]=e=>new Date(e),J[1]=e=>new Date(n(1e3*e)),J[2]=e=>{// bigint extension
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]*t(e[0]*s(2));// the registration of the record definition extension
const oe=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[o(t)]=e[n];else for(let t,n=2,r=e.length;n<r;n++)t=s[n-2],a[o(t)]=e[n];return a};J[105]=oe,J[14]=e=>F?F[0].slice(F.position0,F.position0+=e):new ie(e,14),J[15]=e=>F?F[1].slice(F.position1,F.position1+=e):new ie(e,15);let de={Error,RegExp};J[27]=e=>(de[e[0]]||Error)(e[1],e[2]);const ue=e=>{if(132!=x[B++])throw new Error("Packed values structure must be followed by a 4 element array");let t=e();// packed values
return N=N?t.concat(N.slice(t.length)):t,N.prefixes=e(),N.suffixes=e(),e();// read the rump
};ue.handlesRead=!0,J[51]=ue,J[j]=e=>{// packed reference
if(!N)if(q.getShared)b();else return new ie(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=x[B];t=4==n>>5?[]:{};let a={target:t};// a placeholder object
Y.set(s,a);let r=e();// read the next value as the target object to id
return a.used?Object.assign(t,r):(a.target=r,r);// no cycle, can just use the returned read object
},J[28].handlesRead=!0,J[29]=e=>{// sharedref http://cbor.schmorp.de/value-sharing (for structured clones)
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?f(g().prefixes[e-224],t):28704<=e&&32767>=e?f(g().prefixes[e-28672],t):1879052288<=e&&2147483647>=e?f(g().prefixes[e-1879048192],t):216<=e&&223>=e?f(t,g().suffixes[e-216]):27647<=e&&28671>=e?f(t,g().suffixes[e-27639]):1811940352<=e&&1879048191>=e?f(t,g().suffixes[e-1811939328]):e==1399353956?{packedValues:N,structures:T.slice(0),version:t}:55799==e?t:void 0);const ce=1==new Uint8Array(new Uint16Array([1]).buffer)[0],le=[Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?{name:"BigUint64Array"}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?{name:"BigInt64Array"}:BigInt64Array,Float32Array,Float64Array],pe=[64,68,69,70,71,72,77,78,79,85,86];for(let t=0;t<le.length;t++)h(le[t],pe[t]);const fe=Array(147);// this is a table matching binary exponents to the multiplier to determine significant digit rounding
for(let t=0;256>t;t++)fe[t]=+("1e"+Math.floor(45.15-.30103*t));let ge=new Z({useRecords:!1});const he=ge.decode,ye=ge.decodeMultiple,me={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let be;try{be=new TextEncoder}catch(e){}let ke,Re;const Oe="undefined"!=typeof Buffer,Me=Oe?Buffer.allocUnsafeSlow:Uint8Array,_e=Oe?Buffer:Uint8Array,Se=256,Ee=Oe?4294967296:2144337920;let Ue,ve,Ie,Ae=0,Ce=null;const xe=/[\u0080-\uFFFF]/,Ve=Symbol("record-id");class Be extends Z{constructor(e){super(e),this.offset=0;let t,s,a,r,i;e=e||{};let o=_e.prototype.utf8Write?function(e,t,s){return Ue.utf8Write(e,t,s)}:!!(be&&be.encodeInto)&&function(e,t){return be.encodeInto(e,Ue.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)
if(this._keyMap&&!this._mapped)//console.log('encoding ', value)
switch(e.constructor.name){case"Array":e=e.map(e=>this.encodeKeys(e));//case 'Map':
// value = this.encodeKeys(value)
// break
}//this._mapped = true
return this.encode(e,t)},this.encode=function(n,o){if(Ue||(Ue=new Me(8192),ve=new DataView(Ue.buffer,0,8192),Ae=0),Ie=Ue.length-10,2048>Ie-Ae?(Ue=new Me(Ue.length),ve=new DataView(Ue.buffer,0,Ue.length),Ie=Ue.length-10,Ae=0):o===Ye&&(Ae=2147483640&Ae+7),t=Ae,d.useSelfDescribedHeader&&(ve.setUint32(Ae,3654940416),Ae+=3),i=d.structuredClone?new Map:null,d.bundleStrings&&"string"!=typeof n?(Ce=[],Ce.size=1/0):Ce=null,s=d.structures,s){if(s.uninitialized){let e=d.getShared()||{};d.structures=s=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=s.length;if(e>c&&!l&&(e=c),!s.transitions){s.transitions=Object.create(null);for(let t,n=0;n<e;n++){//console.log('shared struct keys:', keys)
if(t=s[n],!t)continue;let e,a=s.transitions;for(let s=0,r=t.length;s<r;s++){void 0===a[Ve]&&(a[Ve]=n);let r=t[s];e=a[r],e||(e=a[r]=Object.create(null)),a=e}a[Ve]=1048576|n}}l||(s.nextId=e)}if(a&&(a=!1),r=s||[],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,_(n,t),0<t.values.length){Ue[Ae++]=216,Ue[Ae++]=51,M(4);let e=t.values;k(e),M(0),M(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
if(k(n),Ce&&v(t,k),d.offset=Ae,i&&i.idsToInsert){Ae+=2*i.idsToInsert.length,Ae>Ie&&O(Ae),d.offset=Ae;let e=U(Ue.subarray(t,Ae),i.idsToInsert);return i=null,e}return o&Ye?(Ue.start=t,Ue.end=Ae,Ue):Ue.subarray(t,Ae);// position can change if we call encode again in saveShared, so we get the buffer now
}finally{if(s)if(10>b&&b++,s.length>c&&(s.length=c),1e4<m)s.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
let e=Ue.subarray(t,Ae);return!1===d.updateSharedData()?d.encode(n):e;// re-encode if it fails
}o&Ne&&(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>Ie&&(Ue=O(Ae));var n,a=typeof s;if("string"==a){if(f){let t=f[s];if(0<=t)return void(16>t?Ue[Ae++]=t+224:(Ue[Ae++]=198,1&t?k(15-t>>1):k(t-16>>1)));/* } else if (packedStatus.serializationId != serializationId) {
packedStatus.serializationId = serializationId
packedStatus.count = 1
if (options.sharedPack) {
let sharedCount = packedStatus.sharedCount = (packedStatus.sharedCount || 0) + 1
if (shareCount > (options.sharedPack.threshold || 5)) {
let sharedPosition = packedStatus.position = packedStatus.nextSharedPosition
hasSharedUpdate = true
if (sharedPosition < 16)
target[position++] = sharedPosition + 0xc0
}
}
} // 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>Ie&&(Ue=O(Ae+s)),Ue[Ae++]=217,Ue[Ae++]=223,Ue[Ae++]=249,Ue[Ae++]=Ce.position?132:130,Ue[Ae++]=26,e=Ae-t,Ae+=4,Ce.position&&v(t,k),Ce=["",""],Ce.size=0,Ce.position=e}let e=xe.test(s);return Ce[e?0:1]+=s,Ue[Ae++]=e?206:207,void k(a)}let r;// first we estimate the header size, so we can write to the correct location
r=32>a?1:256>a?2:65536>a?3:5;let i=3*a;if(Ae+i>Ie&&(Ue=O(Ae+i)),64>a||!o){let e,t,i,o=Ae+r;for(e=0;e<a;e++)t=s.charCodeAt(e),128>t?Ue[o++]=t:2048>t?(Ue[o++]=192|t>>6,Ue[o++]=128|63&t):55296==(64512&t)&&56320==(64512&(i=s.charCodeAt(e+1)))?(t=65536+((1023&t)<<10)+(1023&i),e++,Ue[o++]=240|t>>18,Ue[o++]=128|63&t>>12,Ue[o++]=128|63&t>>6,Ue[o++]=128|63&t):(Ue[o++]=224|t>>12,Ue[o++]=128|63&t>>6,Ue[o++]=128|63&t);n=o-Ae-r}else n=o(s,Ae+r,i);24>n?Ue[Ae++]=96|n:256>n?(2>r&&Ue.copyWithin(Ae+2,Ae+1,Ae+1+n),Ue[Ae++]=120,Ue[Ae++]=n):65536>n?(3>r&&Ue.copyWithin(Ae+3,Ae+2,Ae+2+n),Ue[Ae++]=121,Ue[Ae++]=n>>8,Ue[Ae++]=255&n):(5>r&&Ue.copyWithin(Ae+5,Ae+3,Ae+3+n),Ue[Ae++]=122,ve.setUint32(Ae,n),Ae+=4),Ae+=n}else if("number"===a){if(s>>>0===s)24>s?Ue[Ae++]=s:256>s?(Ue[Ae++]=24,Ue[Ae++]=s):65536>s?(Ue[Ae++]=25,Ue[Ae++]=s>>8,Ue[Ae++]=255&s):(Ue[Ae++]=26,ve.setUint32(Ae,s),Ae+=4);else if(s>>0===s)-24<=s?Ue[Ae++]=31-s:-256<=s?(Ue[Ae++]=56,Ue[Ae++]=~s):-65536<=s?(Ue[Ae++]=57,ve.setUint16(Ae,~s),Ae+=2):(Ue[Ae++]=58,ve.setUint32(Ae,~s),Ae+=4);else{let e;if(0<(e=this.useFloat32)&&4294967296>s&&-2147483648<=s){Ue[Ae++]=250,ve.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
(t=s*fe[(127&Ue[Ae])<<1|Ue[Ae+1]>>7])>>0===t)return void(Ae+=4);// move back into position for writing a double
Ae--}Ue[Ae++]=251,ve.setFloat64(Ae,s),Ae+=8}}else if("object"===a){if(!s)Ue[Ae++]=246;else{if(i){let e=i.get(s);if(e){// 16-bit uint
if(Ue[Ae++]=216,Ue[Ae++]=29,Ue[Ae++]=25,!e.references){let t=i.idsToInsert||(i.idsToInsert=[]);e.references=[],t.push(e)}// TODO: also support 32-bit
return e.references.push(Ae-t),void(Ae+=2)}i.set(s,{offset:Ae-t})}let e=s.constructor;if(e===Object)R(s,!0);else if(e===Array){n=s.length,24>n?Ue[Ae++]=128|n:M(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=Re[t],s instanceof e){let e=ke[t],n=e.tag;return null==n&&(n=e.getTag&&e.getTag.call(this,s)),24>n?Ue[Ae++]=192|n:256>n?(Ue[Ae++]=216,Ue[Ae++]=n):65536>n?(Ue[Ae++]=217,Ue[Ae++]=n>>8,Ue[Ae++]=255&n):-1<n&&(Ue[Ae++]=218,ve.setUint32(Ae,n),Ae+=4),void e.encode.call(this,s,k,O)}if(s[Symbol.iterator]){Ue[Ae++]=159;// indefinite length array
for(let e of s)k(e);// stop-code
return void(Ue[Ae++]=255)}// no extension found, write as object
R(s,!s.hasOwnProperty)}else if((this.mapsAsObjects?!1!==this.useTag259ForMaps:this.useTag259ForMaps)&&(Ue[Ae++]=217,Ue[Ae++]=1,Ue[Ae++]=3),n=s.size,24>n?Ue[Ae++]=160|n:256>n?(Ue[Ae++]=184,Ue[Ae++]=n):65536>n?(Ue[Ae++]=185,Ue[Ae++]=n>>8,Ue[Ae++]=255&n):(Ue[Ae++]=186,ve.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)Ue[Ae++]=s?245:244;else if("bigint"===a){if(s<BigInt(1)<<BigInt(64)&&0<=s)Ue[Ae++]=27,ve.setBigUint64(Ae,s);else if(s>-(BigInt(1)<<BigInt(64))&&0>s)Ue[Ae++]=59,ve.setBigUint64(Ae,-s-BigInt(1));else// overflow
if(this.largeBigIntToFloat)Ue[Ae++]=251,ve.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)Ue[Ae++]=247;else throw new Error("Unknown type: "+a)},R=!1===this.useRecords?this.variableMapSize?e=>{// this method is slightly slower, but generates "preferred serialization" (optimally small for smaller objects)
let t=Object.keys(e),s=Object.values(e),n=t.length;if(24>n?Ue[Ae++]=160|n:256>n?(Ue[Ae++]=184,Ue[Ae++]=n):65536>n?(Ue[Ae++]=185,Ue[Ae++]=n>>8,Ue[Ae++]=255&n):(Ue[Ae++]=186,ve.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)=>{Ue[Ae++]=185;// always use map 16, so we can preallocate and set the length afterwards
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++);Ue[n++ +t]=a>>8,Ue[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,Ue[Ae++]=217,Ue[Ae++]=224|p>>8,Ue[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>=Se&&(r.nextId=(p=c)+1)):p=n,r[p]=o,p<c){Ue[Ae++]=217,Ue[Ae++]=224|p>>8,Ue[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,ve.setUint32(Ae,3655335680),Ae+=3,u&&(m+=b*u),y.length>=Se-c&&(y.shift()[Ve]=void 0),y.push(d),M(l+2),k(57344+p),k(o);for(let t of Object.values(e))k(t);return}for(let s in 24>l?Ue[Ae++]=128|l:M(l),e)(t||e.hasOwnProperty(s))&&k(e[s])},O=e=>{var s=Math.min,a=Math.max;let r;if(16777216<e){// special handling for really large buffers
if(e-t>Ee)throw new Error("Encoded buffer would be larger than maximum buffer size");r=s(Ee,4096*n(a((e-t)*(67108864<e?1.25:2),4194304)/4096))}else// faster handling for smaller buffers
r=(a(e-t<<2,Ue.length-1)>>12)+1<<12;let i=new Me(r);return ve=new DataView(i.buffer,0,r),Ue.copy?Ue.copy(i,0,t,e):i.set(Ue.slice(t,e)),Ae-=t,t=0,Ie=i.length-10,Ue=i}}useBuffer(e){// this means we are finished using our own buffer and we can write over it safely
Ue=e,ve=new DataView(Ue.buffer,Ue.byteOffset,Ue.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 Le(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
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 Le{constructor(e,t,s){this.structures=e,this.packedValues=t,this.version=s}}const Pe=1==new Uint8Array(new Uint16Array([1]).buffer)[0];Re=[Date,Set,Error,RegExp,ie,ArrayBuffer,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?function(){}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?function(){}:BigInt64Array,Float32Array,Float64Array,Le],ke=[{// Date
tag:1,encode(e,t){let s=e.getTime()/1e3;(this.useTimestamp32||0===e.getMilliseconds())&&0<=s&&4294967296>s?(Ue[Ae++]=26,ve.setUint32(Ae,s),Ae+=4):(Ue[Ae++]=251,ve.setFloat64(Ae,s),Ae+=8)}},{// Set
tag:258,// https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md
encode(e,t){let s=Array.from(e);t(s)}},{// Error
tag:27,// http://cbor.schmorp.de/generic-object
encode(e,t){t([e.name,e.message])}},{// RegExp
tag:27,// http://cbor.schmorp.de/generic-object
encode(e,t){t(["RegExp",e.source,e.flags])}},{// Tag
getTag(e){return e.tag},encode(e,t){t(e.value)}},{// ArrayBuffer
encode(e,t,s){E(e,s)}},{// Uint8Array
getTag(e){if(e.constructor===Uint8Array&&(this.tagUint8Array||Oe&&!1!==this.tagUint8Array))return 64;// else no tag
},encode(e,t,s){E(e,s)}},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
let s=e.packedValues||[],n=e.structures||[];if(0<s.values.length){Ue[Ae++]=216,Ue[Ae++]=51,M(4);let e=s.values;t(e),M(0),M(0),packedObjectMap=Object.create(sharedPackedObjectMap||null);for(let t=0,s=e.length;t<s;t++)packedObjectMap[e[t]]=t}if(n){ve.setUint32(Ae,3655335424),Ae+=3;let s=n.slice(0);s.unshift(57344),s.push(new ie(e.version,1399353956)),t(s)}else t(new ie(e.version,1399353956))}}];let De=new Be({useRecords:!1});const je=De.encode,{NEVER:we,ALWAYS:Te,DECIMAL_ROUND:Ke,DECIMAL_FIT:Fe}=me,Ye=512,Ne=1024;e.ALWAYS=Te,e.DECIMAL_FIT=Fe,e.DECIMAL_ROUND=Ke,e.Decoder=Z,e.Encoder=Be,e.FLOAT32_OPTIONS=me,e.NEVER=we,e.REUSE_BUFFER_MODE=Ye,e.Tag=ie,e.addExtension=function t(e){if(e.Class){if(!e.encode)throw new Error("Extension has no encode function");Re.unshift(e.Class),ke.unshift(e)}O(e)},e.clearSource=R,e.decode=he,e.decodeIter=function s(e,t={}){if(!e||"object"!=typeof e)throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise");const n=new Z(t);let a;const r=e=>{let t;// if there's incomplete data from previous chunk, concatinate and try again
a&&(e=Buffer.concat([a,e]),a=void 0);try{t=n.decodeMultiple(e)}catch(s){if(s.incomplete)a=e.slice(s.lastPosition),t=s.values;else throw s}return t};if("function"==typeof e[Symbol.iterator])return function*t(){for(const t of e)yield*r(t)}();return"function"==typeof e[Symbol.asyncIterator]?async function*t(){for await(const t of e)yield*r(t)}():void 0},e.decodeMultiple=ye,e.encode=je,e.encodeIter=/**
* Given an Iterable first argument, returns an Iterable where each value is encoded as a Buffer
* If the argument is only Async Iterable, the return value will be an Async Iterable.
* @param {Iterable|Iterator|AsyncIterable|AsyncIterator} objectIterator - iterable source, like a Readable object stream, an array, Set, or custom object
* @param {options} [options] - cbor-x Encoder options
* @returns {IterableIterator|Promise.<AsyncIterableIterator>}
*/function s(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 I(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 t(e){ne[0]=e;let s=fe[(127&ae[3])<<1|ae[2]>>7];return(s*e+(0<e?.5:-.5)>>0)/s},Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CBOR={})}(this,(function(e){"use strict";let t,r,n;try{t=new TextDecoder}catch(e){}let i=0;const s={};let o,a,l,u,f,c,d,h={},y=0,p=0,g=[],b=[],w={useRecords:!1,mapsAsObjects:!0},m=!1;class A{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.mapKey=new Map;for(let[t,r]of Object.entries(e.keyMap))this.mapKey.set(r,t)}Object.assign(this,e)}decodeKey(e){return this.keyMap&&this.mapKey.get(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[r,n]of Object.entries(e))t.set(this._keyMap.hasOwnProperty(r)?this._keyMap[r]:r,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={};return e.forEach(((e,r)=>t[E(this._mapKey.has(r)?this._mapKey.get(r):r)]=e)),t}mapDecode(e,t){let r=this.decode(e);return this._keyMap&&"Array"===r.constructor.name?r.map((e=>this.decodeKeys(e))):r}decode(e,t){if(r)return W((()=>(H(),this?this.decode(e,t):A.prototype.decode.call(w,e,t))));n=t>-1?t:e.length,i=0,p=0,a=null,l=null,r=e;try{c=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(r=null,e instanceof Uint8Array)throw t;throw new Error("Source must be a Uint8Array or Buffer but was a "+(e&&"object"==typeof e?e.constructor.name:typeof e))}if(this instanceof A){if(h=this,f=this.sharedValues&&(this.pack?new Array(this.maxPrivatePackedValues||16).concat(this.sharedValues):this.sharedValues),this.structures)return o=this.structures,v();(!o||o.length>0)&&(o=[])}else h=w,(!o||o.length>0)&&(o=[]),f=null;return v()}decodeMultiple(e,t){let r,n=0;try{let s=e.length;m=!0;let o=this?this.decode(e,s):J.decode(e,s);if(!t){for(r=[o];i<s;)n=i,r.push(v());return r}if(!1===t(o))return;for(;i<s;)if(n=i,!1===t(v()))return}catch(e){throw e.lastPosition=n,e.values=r,e}finally{m=!1,H()}}}function v(){try{let e=k();if(l){if(i>=l.postBundlePosition){let e=new Error("Unexpected bundle position");throw e.incomplete=!0,e}i=l.postBundlePosition,l=null}if(i==n)o=null,r=null,u&&(u=null);else{if(i>n){let e=new Error("Unexpected end of CBOR data");throw e.incomplete=!0,e}if(!m)throw new Error("Data read, but end of buffer not reached")}return e}catch(e){throw H(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function k(){let e=r[i++],t=e>>5;if(e&=31,e>23)switch(e){case 24:e=r[i++];break;case 25:if(7==t)return function(){let e=r[i++],t=r[i++],n=(127&e)>>2;if(31===n)return t||3&e?NaN:128&e?-1/0:1/0;if(0===n){let r=((3&e)<<8|t)/(1<<24);return 128&e?-r:r}return x[3]=128&e|56+(n>>1),x[2]=(7&e)<<5|t>>3,x[1]=t<<5,x[0]=0,B[0]}();e=c.getUint16(i),i+=2;break;case 26:if(7==t){let e=c.getFloat32(i);if(h.useFloat32>2){let t=Y[(127&r[i])<<1|r[i+1]>>7];return i+=4,(t*e+(e>0?.5:-.5)>>0)/t}return i+=4,e}e=c.getUint32(i),i+=4;break;case 27:if(7==t){let e=c.getFloat64(i);return i+=8,e}if(t>1){if(c.getUint32(i)>0)throw new Error("JavaScript does not support arrays, maps, or strings with length over 4294967295");e=c.getUint32(i+4)}else h.int64AsNumber?(e=4294967296*c.getUint32(i),e+=c.getUint32(i+4)):e=c.getBigUint64(i);i+=8;break;case 31:switch(t){case 2:case 3:throw new Error("Indefinite length not supported for byte or text strings");case 4:let e,r=[],n=0;for(;(e=k())!=s;)r[n++]=e;return 4==t?r:3==t?r.join(""):Buffer.concat(r);case 5:let i;if(h.mapsAsObjects){let e={};if(h.keyMap)for(;(i=k())!=s;)e[E(h.decodeKey(i))]=k();else for(;(i=k())!=s;)e[E(i)]=k();return e}{d&&(h.mapsAsObjects=!0,d=!1);let e=new Map;if(h.keyMap)for(;(i=k())!=s;)e.set(h.decodeKey(i),k());else for(;(i=k())!=s;)e.set(i,k());return e}case 7:return s;default:throw new Error("Invalid major type for indefinite length "+t)}default:throw new Error("Unknown token "+e)}switch(t){case 0:return e;case 1:return~e;case 2:return function(e){return h.copyBuffers?Uint8Array.prototype.slice.call(r,i,i+=e):r.subarray(i,i+=e)}(e);case 3:if(p>=i)return a.slice(i-y,(i+=e)-y);if(0==p&&n<140&&e<32){let t=e<16?j(e):function(e){let t=i,n=new Array(e);for(let s=0;s<e;s++){const e=r[i++];if((128&e)>0)return void(i=t);n[s]=e}return S.apply(String,n)}(e);if(null!=t)return t}return M(e);case 4:let t=new Array(e);for(let r=0;r<e;r++)t[r]=k();return t;case 5:if(h.mapsAsObjects){let t={};if(h.keyMap)for(let r=0;r<e;r++)t[E(h.decodeKey(k()))]=k();else for(let r=0;r<e;r++)t[E(k())]=k();return t}{d&&(h.mapsAsObjects=!0,d=!1);let t=new Map;if(h.keyMap)for(let r=0;r<e;r++)t.set(h.decodeKey(k()),k());else for(let r=0;r<e;r++)t.set(k(),k());return t}case 6:if(e>=57337){let t=o[8191&e];if(t)return t.read||(t.read=I(t)),t.read();if(e<65536){if(57343==e)return _(k());if(57342==e){let e=L(),t=k();for(let r=2;r<e;r++)_([t++,k()]);return k()}if(57337==e)return function(){let e=L(),t=i+k();for(let t=2;t<e;t++){let e=L();i+=e}let r=i;return i=t,l=[O(L()),O(L())],l.position0=0,l.position1=0,l.postBundlePosition=i,i=r,k()}();if(h.getShared&&(z(),t=o[8191&e],t))return t.read||(t.read=I(t)),t.read()}}let s=g[e];if(s)return s.handlesRead?s(k):s(k());{let t=k();for(let r=0;r<b.length;r++){let n=b[r](e,t);if(void 0!==n)return n}return new V(t,e)}case 7:switch(e){case 20:return!1;case 21:return!0;case 22:return null;case 23:return;default:let t=(f||T())[e];if(void 0!==t)return t;throw new Error("Unknown token "+e)}default:if(isNaN(e)){let e=new Error("Unexpected end of CBOR data");throw e.incomplete=!0,e}throw new Error("Unknown CBOR token "+e)}}const U=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function I(e){return e.slowReads=0,function(){let e=r[i++];if(e&=31,e>23)switch(e){case 24:e=r[i++];break;case 25:e=c.getUint16(i),i+=2;break;case 26:e=c.getUint32(i),i+=4;break;default:throw new Error("Expected array header, but got "+r[i-1])}let t=this.compiledReader;for(;t;){if(t.propertyCount===e)return t(k);t=t.next}if(this.slowReads++>=3){let r=this.length==e?this:this.slice(0,e);return t=h.keyMap?new Function("r","return {"+r.map((e=>h.decodeKey(e))).map((e=>U.test(e)?E(e)+":r()":"["+JSON.stringify(e)+"]:r()")).join(",")+"}"):new Function("r","return {"+r.map((e=>U.test(e)?E(e)+":r()":"["+JSON.stringify(e)+"]:r()")).join(",")+"}"),this.compiledReader&&(t.next=this.compiledReader),t.propertyCount=e,this.compiledReader=t,t(k)}let n={};if(h.keyMap)for(let t=0;t<e;t++)n[E(h.decodeKey(this[t]))]=k();else for(let t=0;t<e;t++)n[E(this[t])]=k();return n}}function E(e){return"__proto__"===e?"__proto_":e}let M=O;function O(e){let n;if(e<16&&(n=j(e)))return n;if(e>64&&t)return t.decode(r.subarray(i,i+=e));const s=i+e,o=[];for(n="";i<s;){const e=r[i++];if(0==(128&e))o.push(e);else if(192==(224&e)){const t=63&r[i++];o.push((31&e)<<6|t)}else if(224==(240&e)){const t=63&r[i++],n=63&r[i++];o.push((31&e)<<12|t<<6|n)}else if(240==(248&e)){let t=(7&e)<<18|(63&r[i++])<<12|(63&r[i++])<<6|63&r[i++];t>65535&&(t-=65536,o.push(t>>>10&1023|55296),t=56320|1023&t),o.push(t)}else o.push(e);o.length>=4096&&(n+=S.apply(String,o),o.length=0)}return o.length>0&&(n+=S.apply(String,o)),n}let S=String.fromCharCode;function j(e){if(e<4){if(e<2){if(0===e)return"";{let e=r[i++];return(128&e)>1?void(i-=1):S(e)}}{let t=r[i++],n=r[i++];if((128&t)>0||(128&n)>0)return void(i-=2);if(e<3)return S(t,n);let s=r[i++];return(128&s)>0?void(i-=3):S(t,n,s)}}{let t=r[i++],n=r[i++],s=r[i++],o=r[i++];if((128&t)>0||(128&n)>0||(128&s)>0||(128&o)>0)return void(i-=4);if(e<6){if(4===e)return S(t,n,s,o);{let e=r[i++];return(128&e)>0?void(i-=5):S(t,n,s,o,e)}}if(e<8){let a=r[i++],l=r[i++];if((128&a)>0||(128&l)>0)return void(i-=6);if(e<7)return S(t,n,s,o,a,l);let u=r[i++];return(128&u)>0?void(i-=7):S(t,n,s,o,a,l,u)}{let a=r[i++],l=r[i++],u=r[i++],f=r[i++];if((128&a)>0||(128&l)>0||(128&u)>0||(128&f)>0)return void(i-=8);if(e<10){if(8===e)return S(t,n,s,o,a,l,u,f);{let e=r[i++];return(128&e)>0?void(i-=9):S(t,n,s,o,a,l,u,f,e)}}if(e<12){let c=r[i++],d=r[i++];if((128&c)>0||(128&d)>0)return void(i-=10);if(e<11)return S(t,n,s,o,a,l,u,f,c,d);let h=r[i++];return(128&h)>0?void(i-=11):S(t,n,s,o,a,l,u,f,c,d,h)}{let c=r[i++],d=r[i++],h=r[i++],y=r[i++];if((128&c)>0||(128&d)>0||(128&h)>0||(128&y)>0)return void(i-=12);if(e<14){if(12===e)return S(t,n,s,o,a,l,u,f,c,d,h,y);{let e=r[i++];return(128&e)>0?void(i-=13):S(t,n,s,o,a,l,u,f,c,d,h,y,e)}}{let p=r[i++],g=r[i++];if((128&p)>0||(128&g)>0)return void(i-=14);if(e<15)return S(t,n,s,o,a,l,u,f,c,d,h,y,p,g);let b=r[i++];return(128&b)>0?void(i-=15):S(t,n,s,o,a,l,u,f,c,d,h,y,p,g,b)}}}}}let B=new Float32Array(1),x=new Uint8Array(B.buffer,0,4);new Array(4096);class V{constructor(e,t){this.value=e,this.tag=t}}g[0]=e=>new Date(e),g[1]=e=>new Date(Math.round(1e3*e)),g[2]=e=>{let t=BigInt(0);for(let r=0,n=e.byteLength;r<n;r++)t=BigInt(e[r])+t<<BigInt(8);return t},g[3]=e=>BigInt(-1)-g[2](e),g[4]=e=>+(e[1]+"e"+e[0]),g[5]=e=>e[1]*Math.exp(e[0]*Math.log(2));const _=e=>{let t=e[0]-57344,r=e[1],n=o[t];n&&n.isShared&&((o.restoreStructures||(o.restoreStructures=[]))[t]=n),o[t]=r,r.read=I(r);let i={};if(h.keyMap)for(let t=2,n=e.length;t<n;t++){i[E(h.decodeKey(r[t-2]))]=e[t]}else for(let t=2,n=e.length;t<n;t++){i[E(r[t-2])]=e[t]}return i};g[105]=_,g[14]=e=>l?l[0].slice(l.position0,l.position0+=e):new V(e,14),g[15]=e=>l?l[1].slice(l.position1,l.position1+=e):new V(e,15);let R={Error:Error,RegExp:RegExp};g[27]=e=>(R[e[0]]||Error)(e[1],e[2]);const P=e=>{if(132!=r[i++])throw new Error("Packed values structure must be followed by a 4 element array");let t=e();return f=f?t.concat(f.slice(t.length)):t,f.prefixes=e(),f.suffixes=e(),e()};function F(e,t){return"string"==typeof e?e+t:e instanceof Array?e.concat(t):Object.assign({},e,t)}function T(){if(!f){if(!h.getShared)throw new Error("No packed values available");z()}return f}P.handlesRead=!0,g[51]=P,g[6]=e=>{if(!f){if(!h.getShared)return new V(e,6);z()}if("number"==typeof e)return f[16+(e>=0?2*e:-2*e-1)];throw new Error("No support for non-integer packed references yet")},g[28]=e=>{u||(u=new Map,u.id=0);let t,n=u.id++;t=r[i]>>5==4?[]:{};let s={target:t};u.set(n,s);let o=e();return s.used?Object.assign(t,o):(s.target=o,o)},g[28].handlesRead=!0,g[29]=e=>{let t=u.get(e);return t.used=!0,t.target},g[258]=e=>new Set(e),(g[259]=e=>(h.mapsAsObjects&&(h.mapsAsObjects=!1,d=!0),e())).handlesRead=!0;b.push(((e,t)=>e>=225&&e<=255?F(T().prefixes[e-224],t):e>=28704&&e<=32767?F(T().prefixes[e-28672],t):e>=1879052288&&e<=2147483647?F(T().prefixes[e-1879048192],t):e>=216&&e<=223?F(t,T().suffixes[e-216]):e>=27647&&e<=28671?F(t,T().suffixes[e-27639]):e>=1811940352&&e<=1879048191?F(t,T().suffixes[e-1811939328]):1399353956==e?{packedValues:f,structures:o.slice(0),version:t}:55799==e?t:void 0));const D=1==new Uint8Array(new Uint16Array([1]).buffer)[0],C=[Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?{name:"BigUint64Array"}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?{name:"BigInt64Array"}:BigInt64Array,Float32Array,Float64Array],K=[64,68,69,70,71,72,77,78,79,85,86];for(let e=0;e<C.length;e++)N(C[e],K[e]);function N(e,t){let r="get"+e.name.slice(0,-5);"function"!=typeof e&&(e=null);let n=e.BYTES_PER_ELEMENT;for(let i=0;i<2;i++){if(!i&&1==n)continue;let s=2==n?1:4==n?2:3;g[i?t:t-4]=1==n||i==D?r=>{if(!e)throw new Error("Could not find typed array for code "+t);return new e(Uint8Array.prototype.slice.call(r,0).buffer)}:n=>{if(!e)throw new Error("Could not find typed array for code "+t);let o=new DataView(n.buffer,n.byteOffset,n.byteLength),a=n.length>>s,l=new e(a),u=o[r];for(let e=0;e<a;e++)l[e]=u.call(o,e<<s,i);return l}}}function L(){let e=31&r[i++];if(e>23)switch(e){case 24:e=r[i++];break;case 25:e=c.getUint16(i),i+=2;break;case 26:e=c.getUint32(i),i+=4}return e}function z(){if(h.getShared){let e=W((()=>(r=null,h.getShared())))||{},t=e.structures||[];h.sharedVersion=e.version,f=h.sharedValues=e.packedValues,!0===o?h.structures=o=t:o.splice.apply(o,[0,t.length].concat(t))}}function W(e){let t=n,s=i,f=y,d=p,g=a,b=u,w=l,A=new Uint8Array(r.slice(0,n)),v=o,k=h,U=m,I=e();return n=t,i=s,y=f,p=d,a=g,u=b,l=w,r=A,m=U,o=v,h=k,c=new DataView(r.buffer,r.byteOffset,r.byteLength),I}function H(){r=null,u=null,o=null}const Y=new Array(147);for(let e=0;e<256;e++)Y[e]=+("1e"+Math.floor(45.15-.30103*e));let J=new A({useRecords:!1});const $=J.decode,Z=J.decodeMultiple,q={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};let G,Q,X;try{G=new TextEncoder}catch(e){}const ee="undefined"!=typeof Buffer,te=ee?Buffer.allocUnsafeSlow:Uint8Array,re=ee?Buffer:Uint8Array,ne="undefined"==typeof Blob?{}:Blob,ie=ee?4294967296:2144337920;let se,oe,ae,le,ue=0,fe=null;const ce=/[\u0080-\uFFFF]/,de=Symbol("record-id");class he extends A{constructor(e){let t,r,n,i,s;super(e),this.offset=0,e=e||{};let o=re.prototype.utf8Write?function(e,t,r){return oe.utf8Write(e,t,r)}:!(!G||!G.encodeInto)&&function(e,t){return G.encodeInto(e,oe.subarray(t)).written},a=this,l=e.structures||e.saveStructures,u=e.maxSharedStructures;if(null==u&&(u=l?128:0),u>8190)throw new Error("Maximum maxSharedStructure is 8190");let f=e.sequential;f&&(u=0),this.structures||(this.structures=[]),this.saveStructures&&(this.saveShared=this.saveStructures);let c,d,h,y=e.sharedValues;if(y){h=Object.create(null);for(let e=0,t=y.length;e<t;e++)h[y[e]]=e}let p=[],g=0,b=0;this.mapEncode=function(e,t){if(this._keyMap&&!this._mapped&&"Array"===e.constructor.name)e=e.map((e=>this.encodeKeys(e)));return this.encode(e,t)},this.encode=function(o,l){if(oe||(oe=new te(8192),ae=new DataView(oe.buffer,0,8192),ue=0),le=oe.length-10,le-ue<2048?(oe=new te(oe.length),ae=new DataView(oe.buffer,0,oe.length),le=oe.length-10,ue=0):l===Be&&(ue=ue+7&2147483640),t=ue,a.useSelfDescribedHeader&&(ae.setUint32(ue,3654940416),ue+=3),s=a.structuredClone?new Map:null,a.bundleStrings&&"string"!=typeof o?(fe=[],fe.size=1/0):fe=null,r=a.structures,r){if(r.uninitialized){let e=a.getShared()||{};a.structures=r=e.structures||[],a.sharedVersion=e.version;let t=a.sharedValues=e.packedValues;if(t){h={};for(let e=0,r=t.length;e<r;e++)h[t[e]]=e}}let e=r.length;if(e>u&&!f&&(e=u),!r.transitions){r.transitions=Object.create(null);for(let t=0;t<e;t++){let e=r[t];if(!e)continue;let n,i=r.transitions;for(let r=0,s=e.length;r<s;r++){void 0===i[de]&&(i[de]=t);let s=e[r];n=i[s],n||(n=i[s]=Object.create(null)),i=n}i[de]=1048576|t}}f||(r.nextId=e)}if(n&&(n=!1),i=r||[],d=h,e.pack){let t=new Map;if(t.values=[],t.encoder=a,t.maxValues=e.maxPrivatePackedValues||(h?16:1/0),t.objectMap=h||!1,t.samplingPackedValues=c,be(o,t),t.values.length>0){oe[ue++]=216,oe[ue++]=51,ge(4);let e=t.values;w(e),ge(0),ge(0),d=Object.create(h||null);for(let t=0,r=e.length;t<r;t++)d[e[t]]=t}}se=l&Ve;try{if(se)return;if(w(o),fe&&ve(t,w),a.offset=ue,s&&s.idsToInsert){ue+=2*s.idsToInsert.length,ue>le&&A(ue),a.offset=ue;let e=function(e,t){let r,n=2*t.length,i=e.length-n;t.sort(((e,t)=>e.offset>t.offset?1:-1));for(let r=0;r<t.length;r++){let n=t[r];n.id=r;for(let t of n.references)e[t++]=r>>8,e[t]=255&r}for(;r=t.pop();){let t=r.offset;e.copyWithin(t+n,t,i),n-=2;let s=t+n;e[s++]=216,e[s++]=28,i=t}return e}(oe.subarray(t,ue),s.idsToInsert);return s=null,e}return l&Be?(oe.start=t,oe.end=ue,oe):oe.subarray(t,ue)}finally{if(r)if(b<10&&b++,r.length>u&&(r.length=u),g>1e4)r.transitions=null,b=0,g=0,p.length>0&&(p=[]);else if(p.length>0&&!f){for(let e=0,t=p.length;e<t;e++)p[e][de]=void 0;p=[]}if(n&&a.saveShared){a.structures.length>u&&(a.structures=a.structures.slice(0,u));let e=oe.subarray(t,ue);return!1===a.updateSharedData()?a.encode(o):e}l&xe&&(ue=t)}},this.findCommonStringsToPack=()=>(c=new Map,h||(h=Object.create(null)),e=>{let t=e&&e.threshold||4,r=this.pack?e.maxPrivatePackedValues||16:0;y||(y=this.sharedValues=[]);for(let[e,i]of c)i.count>t&&(h[e]=r++,y.push(e),n=!0);for(;this.saveShared&&!1===this.updateSharedData(););c=null});const w=r=>{ue>le&&(oe=A(ue));var n,i=typeof r;if("string"===i){if(d){let t=d[r];if(t>=0)return void(t<16?oe[ue++]=t+224:(oe[ue++]=198,w(1&t?15-t>>1:t-16>>1)));if(c&&!e.pack){let e=c.get(r);e?e.count++:c.set(r,{count:1})}}let i,s=r.length;if(fe&&s>=4&&s<1024){if((fe.size+=s)>61440){let e,r=(fe[0]?3*fe[0].length+fe[1].length:0)+10;ue+r>le&&(oe=A(ue+r)),oe[ue++]=217,oe[ue++]=223,oe[ue++]=249,oe[ue++]=fe.position?132:130,oe[ue++]=26,e=ue-t,ue+=4,fe.position&&ve(t,w),fe=["",""],fe.size=0,fe.position=e}let e=ce.test(r);return fe[e?0:1]+=r,oe[ue++]=e?206:207,void w(s)}i=s<32?1:s<256?2:s<65536?3:5;let a=3*s;if(ue+a>le&&(oe=A(ue+a)),s<64||!o){let e,t,o,a=ue+i;for(e=0;e<s;e++)t=r.charCodeAt(e),t<128?oe[a++]=t:t<2048?(oe[a++]=t>>6|192,oe[a++]=63&t|128):55296==(64512&t)&&56320==(64512&(o=r.charCodeAt(e+1)))?(t=65536+((1023&t)<<10)+(1023&o),e++,oe[a++]=t>>18|240,oe[a++]=t>>12&63|128,oe[a++]=t>>6&63|128,oe[a++]=63&t|128):(oe[a++]=t>>12|224,oe[a++]=t>>6&63|128,oe[a++]=63&t|128);n=a-ue-i}else n=o(r,ue+i,a);n<24?oe[ue++]=96|n:n<256?(i<2&&oe.copyWithin(ue+2,ue+1,ue+1+n),oe[ue++]=120,oe[ue++]=n):n<65536?(i<3&&oe.copyWithin(ue+3,ue+2,ue+2+n),oe[ue++]=121,oe[ue++]=n>>8,oe[ue++]=255&n):(i<5&&oe.copyWithin(ue+5,ue+3,ue+3+n),oe[ue++]=122,ae.setUint32(ue,n),ue+=4),ue+=n}else if("number"===i)if(r>>>0===r)r<24?oe[ue++]=r:r<256?(oe[ue++]=24,oe[ue++]=r):r<65536?(oe[ue++]=25,oe[ue++]=r>>8,oe[ue++]=255&r):(oe[ue++]=26,ae.setUint32(ue,r),ue+=4);else if(r>>0===r)r>=-24?oe[ue++]=31-r:r>=-256?(oe[ue++]=56,oe[ue++]=~r):r>=-65536?(oe[ue++]=57,ae.setUint16(ue,~r),ue+=2):(oe[ue++]=58,ae.setUint32(ue,~r),ue+=4);else{let e;if((e=this.useFloat32)>0&&r<4294967296&&r>=-2147483648){let t;if(oe[ue++]=250,ae.setFloat32(ue,r),e<4||(t=r*Y[(127&oe[ue])<<1|oe[ue+1]>>7])>>0===t)return void(ue+=4);ue--}oe[ue++]=251,ae.setFloat64(ue,r),ue+=8}else if("object"===i)if(r){if(s){let e=s.get(r);if(e){if(oe[ue++]=216,oe[ue++]=29,oe[ue++]=25,!e.references){let t=s.idsToInsert||(s.idsToInsert=[]);e.references=[],t.push(e)}return e.references.push(ue-t),void(ue+=2)}s.set(r,{offset:ue-t})}let e=r.constructor;if(e===Object)m(r,!0);else if(e===Array){(n=r.length)<24?oe[ue++]=128|n:ge(n);for(let e=0;e<n;e++)w(r[e])}else if(e===Map)if((this.mapsAsObjects?!1!==this.useTag259ForMaps:this.useTag259ForMaps)&&(oe[ue++]=217,oe[ue++]=1,oe[ue++]=3),(n=r.size)<24?oe[ue++]=160|n:n<256?(oe[ue++]=184,oe[ue++]=n):n<65536?(oe[ue++]=185,oe[ue++]=n>>8,oe[ue++]=255&n):(oe[ue++]=186,ae.setUint32(ue,n),ue+=4),a.keyMap)for(let[e,t]of r)w(a.encodeKey(e)),w(t);else for(let[e,t]of r)w(e),w(t);else{for(let e=0,t=Q.length;e<t;e++){if(r instanceof X[e]){let t=Q[e],n=t.tag;return null==n&&(n=t.getTag&&t.getTag.call(this,r)),n<24?oe[ue++]=192|n:n<256?(oe[ue++]=216,oe[ue++]=n):n<65536?(oe[ue++]=217,oe[ue++]=n>>8,oe[ue++]=255&n):n>-1&&(oe[ue++]=218,ae.setUint32(ue,n),ue+=4),void t.encode.call(this,r,w,A)}}if(r[Symbol.iterator]){if(se){let e=new Error("Iterable should be serialized as iterator");throw e.iteratorNotHandled=!0,e}oe[ue++]=159;for(let e of r)w(e);return void(oe[ue++]=255)}if(r[Symbol.asyncIterator]||e===ne){let e=new Error("Iterable/blob should be serialized as iterator");throw e.iteratorNotHandled=!0,e}m(r,!r.hasOwnProperty)}}else oe[ue++]=246;else if("boolean"===i)oe[ue++]=r?245:244;else if("bigint"===i){if(r<BigInt(1)<<BigInt(64)&&r>=0)oe[ue++]=27,ae.setBigUint64(ue,r);else if(r>-(BigInt(1)<<BigInt(64))&&r<0)oe[ue++]=59,ae.setBigUint64(ue,-r-BigInt(1));else{if(!this.largeBigIntToFloat)throw new RangeError(r+" was too large to fit in CBOR 64-bit integer format, set largeBigIntToFloat to convert to float-64");oe[ue++]=251,ae.setFloat64(ue,Number(r))}ue+=8}else{if("undefined"!==i)throw new Error("Unknown type: "+i);oe[ue++]=247}},m=!1===this.useRecords?this.variableMapSize?e=>{let t=Object.keys(e),r=Object.values(e),n=t.length;if(n<24?oe[ue++]=160|n:n<256?(oe[ue++]=184,oe[ue++]=n):n<65536?(oe[ue++]=185,oe[ue++]=n>>8,oe[ue++]=255&n):(oe[ue++]=186,ae.setUint32(ue,n),ue+=4),a.keyMap)for(let e=0;e<n;e++)w(encodeKey(t[e])),w(r[e]);else for(let e=0;e<n;e++)w(t[e]),w(r[e])}:(e,r)=>{oe[ue++]=185;let n=ue-t;ue+=2;let i=0;if(a.keyMap)for(let t in e)(r||e.hasOwnProperty(t))&&(w(a.encodeKey(t)),w(e[t]),i++);else for(let t in e)(r||e.hasOwnProperty(t))&&(w(t),w(e[t]),i++);oe[n+++t]=i>>8,oe[n+t]=255&i}:(e,t)=>{let r,s,o,a=i.transitions||(i.transitions=Object.create(null)),l=0,f=0;if(this.keyMap){o=Object.keys(e).map((e=>this.encodeKey(e))),f=o.length;for(let e=0;e<f;e++){let t=o[e];r=a[t],r||(r=a[t]=Object.create(null),l++),a=r}}else for(let n in e)(t||e.hasOwnProperty(n))&&(r=a[n],r||(1048576&a[de]&&(s=65535&a[de]),r=a[n]=Object.create(null),l++),a=r,f++);let c=a[de];if(void 0!==c)c&=65535,oe[ue++]=217,oe[ue++]=c>>8|224,oe[ue++]=255&c;else{if(o||(o=a.__keys__||(a.__keys__=Object.keys(e))),void 0===s?(c=i.nextId++,c||(c=0,i.nextId=1),c>=256&&(i.nextId=(c=u)+1)):c=s,i[c]=o,!(c<u)){if(a[de]=c,ae.setUint32(ue,3655335680),ue+=3,l&&(g+=b*l),p.length>=256-u&&(p.shift()[de]=void 0),p.push(a),ge(f+2),w(57344+c),w(o),null===t)return;for(let r in e)(t||e.hasOwnProperty(r))&&w(e[r]);return}oe[ue++]=217,oe[ue++]=c>>8|224,oe[ue++]=255&c,a=i.transitions;for(let e=0;e<f;e++)(void 0===a[de]||1048576&a[de])&&(a[de]=c),a=a[o[e]];a[de]=1048576|c,n=!0}if(f<24?oe[ue++]=128|f:ge(f),null!==t)for(let r in e)(t||e.hasOwnProperty(r))&&w(e[r])},A=e=>{let r;if(e>16777216){if(e-t>ie)throw new Error("Encoded buffer would be larger than maximum buffer size");r=Math.min(ie,4096*Math.round(Math.max((e-t)*(e>67108864?1.25:2),4194304)/4096))}else r=1+(Math.max(e-t<<2,oe.length-1)>>12)<<12;let n=new te(r);return ae=new DataView(n.buffer,0,r),oe.copy?oe.copy(n,0,t,e):n.set(oe.slice(t,e)),ue-=t,t=0,le=n.length-10,oe=n};let v=100,k=1e3;function*U(e,r,n){let i=e.constructor;if(i===Object){let t=!1!==a.useRecords;t?m(e,null):ye(Object.keys(e).length,160);for(let n in e){let i=e[n];t||w(n),i&&"object"==typeof i?r[n]?yield*U(i,r[n]):yield*I(i,r,n):w(i)}}else if(i===Array){ge(e.length);for(let n=0;n<length;n++){let i=e[n];i&&("object"==typeof i||ue-t>v)?r.element?yield*U(i,r.element):yield*I(i,r,"element"):w(i)}}else if(e[Symbol.iterator]){oe[ue++]=159;for(let n of e)n&&("object"==typeof n||ue-t>v)?r.element?yield*U(n,r.element):yield*I(n,r,"element"):w(n);oe[ue++]=255}else i===ne?(ye(e.size,64),yield oe.subarray(t,ue),yield e,E()):e[Symbol.asyncIterator]?(oe[ue++]=159,yield oe.subarray(t,ue),yield e,E(),oe[ue++]=255):w(e);n&&ue>t?yield oe.subarray(t,ue):ue-t>v&&(yield oe.subarray(t,ue),E())}function*I(e,r,n){let i=ue-t;try{w(e),ue-t>v&&(yield oe.subarray(t,ue),E())}catch(s){if(!s.iteratorNotHandled)throw s;r[n]={},ue=t+i,yield*U.call(this,e,r[n])}}function E(){v=k,a.encode(null,Ve)}function M(e,t,r){return v=t&&t.chunkThreshold?k=t.chunkThreshold:100,e&&"object"==typeof e?(a.encode(null,Ve),r(e,a.iterateProperties||(a.iterateProperties={}),!0)):[a.encode(e)]}async function*O(e,t){for(let r of U(e,t,!0)){let e=r.constructor;if(e===re||e===Uint8Array)yield r;else if(e===ne){let e,t=r.stream().getReader();for(;!(e=await t.read()).done;)yield e.value}else if(r[Symbol.asyncIterator])for await(let e of r)E(),e?yield*O(e,t.async||(t.async={})):yield a.encode(e);else yield r}}this.encodeAsIterable=function(e,t){return M(e,t,U)},this.encodeAsAsyncIterable=function(e,t){return M(e,t,O)}}useBuffer(e){oe=e,ae=new DataView(oe.buffer,oe.byteOffset,oe.byteLength),ue=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),r=new pe(t,this.sharedValues,this.sharedVersion),n=this.saveShared(r,(t=>(t&&t.version||0)==e));return!1===n?(r=this.getShared()||{},this.structures=r.structures||[],this.sharedValues=r.packedValues,this.sharedVersion=r.version,this.structures.nextId=this.structures.length):t.forEach(((e,t)=>this.structures[t]=e)),n}}function ye(e,t){e<24?oe[ue++]=t|e:e<256?(oe[ue++]=24|t,oe[ue++]=e):e<65536?(oe[ue++]=25|t,oe[ue++]=e>>8,oe[ue++]=255&e):(oe[ue++]=26|t,ae.setUint32(ue,e),ue+=4)}class pe{constructor(e,t,r){this.structures=e,this.packedValues=t,this.version=r}}function ge(e){e<24?oe[ue++]=128|e:e<256?(oe[ue++]=152,oe[ue++]=e):e<65536?(oe[ue++]=153,oe[ue++]=e>>8,oe[ue++]=255&e):(oe[ue++]=154,ae.setUint32(ue,e),ue+=4)}function be(e,t){switch(typeof e){case"string":if(e.length>3){if(t.objectMap[e]>-1||t.values.length>=t.maxValues)return;let r=t.get(e);if(r)2==++r.count&&t.values.push(e);else if(t.set(e,{count:1}),t.samplingPackedValues){let r=t.samplingPackedValues.get(e);r?r.count++:t.samplingPackedValues.set(e,{count:1})}}break;case"object":if(e)if(e instanceof Array)for(let r=0,n=e.length;r<n;r++)be(e[r],t);else{let n=!t.encoder.useRecords;for(var r in e)e.hasOwnProperty(r)&&(n&&be(r,t),be(e[r],t))}break;case"function":console.log(e)}}const we=1==new Uint8Array(new Uint16Array([1]).buffer)[0];function me(e,t){return!we&&t>1&&(e-=4),{tag:e,encode:function(e,t){let r=e.byteLength,n=e.byteOffset||0,i=e.buffer||e;t(ee?Buffer.from(i,n,r):new Uint8Array(i,n,r))}}}function Ae(e,t){let r=e.byteLength;r<24?oe[ue++]=64+r:r<256?(oe[ue++]=88,oe[ue++]=r):r<65536?(oe[ue++]=89,oe[ue++]=r>>8,oe[ue++]=255&r):(oe[ue++]=90,ae.setUint32(ue,r),ue+=4),ue+r>=oe.length&&t(ue+r),oe.set(e.buffer?e:new Uint8Array(e),ue),ue+=r}function ve(e,t){ae.setUint32(fe.position+e,ue-fe.position-e+1);let r=fe;fe=null,t(r[0]),t(r[1])}X=[Date,Set,Error,RegExp,V,ArrayBuffer,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,"undefined"==typeof BigUint64Array?function(){}:BigUint64Array,Int8Array,Int16Array,Int32Array,"undefined"==typeof BigInt64Array?function(){}:BigInt64Array,Float32Array,Float64Array,pe],Q=[{tag:1,encode(e,t){let r=e.getTime()/1e3;(this.useTimestamp32||0===e.getMilliseconds())&&r>=0&&r<4294967296?(oe[ue++]=26,ae.setUint32(ue,r),ue+=4):(oe[ue++]=251,ae.setFloat64(ue,r),ue+=8)}},{tag:258,encode(e,t){t(Array.from(e))}},{tag:27,encode(e,t){t([e.name,e.message])}},{tag:27,encode(e,t){t(["RegExp",e.source,e.flags])}},{getTag:e=>e.tag,encode(e,t){t(e.value)}},{encode(e,t,r){Ae(e,r)}},{getTag(e){if(e.constructor===Uint8Array&&(this.tagUint8Array||ee&&!1!==this.tagUint8Array))return 64},encode(e,t,r){Ae(e,r)}},me(68,1),me(69,2),me(70,4),me(71,8),me(72,1),me(77,2),me(78,4),me(79,8),me(85,4),me(86,8),{encode(e,t){let r=e.packedValues||[],n=e.structures||[];if(r.values.length>0){oe[ue++]=216,oe[ue++]=51,ge(4);let e=r.values;t(e),ge(0),ge(0),packedObjectMap=Object.create(sharedPackedObjectMap||null);for(let t=0,r=e.length;t<r;t++)packedObjectMap[e[t]]=t}if(n){ae.setUint32(ue,3655335424),ue+=3;let r=n.slice(0);r.unshift(57344),r.push(new V(e.version,1399353956)),t(r)}else t(new V(e.version,1399353956))}}];let ke=new he({useRecords:!1});const Ue=ke.encode,Ie=ke.encodeAsIterable,Ee=ke.encodeAsAsyncIterable,{NEVER:Me,ALWAYS:Oe,DECIMAL_ROUND:Se,DECIMAL_FIT:je}=q,Be=512,xe=1024,Ve=2048;e.ALWAYS=Oe,e.DECIMAL_FIT=je,e.DECIMAL_ROUND=Se,e.Decoder=A,e.Encoder=he,e.FLOAT32_OPTIONS=q,e.NEVER=Me,e.REUSE_BUFFER_MODE=Be,e.Tag=V,e.addExtension=function(e){if(e.Class){if(!e.encode)throw new Error("Extension has no encode function");X.unshift(e.Class),Q.unshift(e)}!function(e){g[e.tag]=e.decode}(e)},e.clearSource=H,e.decode=$,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 r=new A(t);let n;const i=e=>{let t;n&&(e=Buffer.concat([n,e]),n=void 0);try{t=r.decodeMultiple(e)}catch(r){if(!r.incomplete)throw r;n=e.slice(r.lastPosition),t=r.values}return t};return"function"==typeof e[Symbol.iterator]?function*(){for(const t of e)yield*i(t)}():"function"==typeof e[Symbol.asyncIterator]?async function*(){for await(const t of e)yield*i(t)}():void 0},e.decodeMultiple=Z,e.encode=Ue,e.encodeAsAsyncIterable=Ee,e.encodeAsIterable=Ie,e.encodeIter=function(e,t={}){if(e&&"object"==typeof e){if("function"==typeof e[Symbol.iterator])return function*(e,t){const r=new he(t);for(const t of e)yield r.encode(t)}(e,t);if("function"==typeof e.then||"function"==typeof e[Symbol.asyncIterator])return async function*(e,t){const r=new he(t);for await(const t of e)yield r.encode(t)}(e,t);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}throw new Error("first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable")},e.isNativeAccelerationEnabled=!1,e.roundFloat32=function(e){B[0]=e;let t=Y[(127&x[3])<<1|x[2]>>7];return(t*e+(e>0?.5:-.5)>>0)/t}}));
//# sourceMappingURL=index.min.js.map
(function (CBOR, chai, fs) {
'use strict';
chai = chai && Object.prototype.hasOwnProperty.call(chai, 'default') ? chai['default'] : chai;
function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var CBOR__namespace = /*#__PURE__*/_interopNamespaceDefault(CBOR);
const sampleData = JSON.parse(fs.readFileSync(new URL('./example4.json', (document.currentScript && document.currentScript.src || new URL('test.js', document.baseURI).href))));

@@ -29,15 +46,17 @@

var Encoder = CBOR.Encoder;
var decode = CBOR.decode;
var encode = CBOR.encode;
var DECIMAL_FIT = CBOR.DECIMAL_FIT;
var Encoder = CBOR__namespace.Encoder;
var decode = CBOR__namespace.decode;
var encode = CBOR__namespace.encode;
var encodeAsIterable = CBOR__namespace.encodeAsIterable;
var encodeAsAsyncIterable = CBOR__namespace.encodeAsAsyncIterable;
var DECIMAL_FIT = CBOR__namespace.DECIMAL_FIT;
var addExtension = CBOR.addExtension;
var addExtension = CBOR__namespace.addExtension;
var zlib = tryRequire('zlib');
var deflateSync = zlib.deflateSync;
var inflateSync = zlib.inflateSync;
var deflateSync = zlib.brotliCompressSync;
var inflateSync = zlib.brotliDecompressSync;
var constants = zlib.constants;
zlib.deflateSync;
zlib.inflateSync;
zlib.brotliCompressSync;
zlib.brotliDecompressSync;
zlib.constants;

@@ -51,3 +70,3 @@ var ITERATIONS = 4000;

let cborBasic = new Encoder();
var serialized = cborSenml.encode(data);
var serialized = cborSenml.encode(data);
var deserialized = cborSenml.decode(serialized);

@@ -153,4 +172,4 @@ assert(serialized.length < cborBasic.encode(data).length);

const data = 'RRZG9A6I7xupPeOZhxcOcioFsuhszGOdyDUcbRf4Zef2kdPIfC9RaLO4jTM5JhuZvTsF09fbRHMGtqk7YAgu3vespeTe9l61ziZ6VrMnYu2CamK96wCkmz0VUXyqaiUoTPgzk414LS9yYrd5uh7w18ksJF5SlC2e91rukWvNqAZJjYN3jpkqHNOFchCwFrhbxq2Lrv1kSJPYCx9blRg2hGmYqTbElLTZHv20iNqwZeQbRMgSBPT6vnbCBPnOh1W';
var serialized = CBOR.encode(data);
var deserialized = CBOR.decode(serialized);
var serialized = CBOR__namespace.encode(data);
var deserialized = CBOR__namespace.decode(serialized);
assert.equal(deserialized, data);

@@ -161,7 +180,7 @@ });

var data = sampleData;
var serialized = CBOR.encode(data);
var deserialized = CBOR.decode(serialized);
var serialized = CBOR__namespace.encode(data);
var deserialized = CBOR__namespace.decode(serialized);
assert.deepEqual(deserialized, data);
var serialized = CBOR.encode(data);
var deserialized = CBOR.decode(serialized);
var serialized = CBOR__namespace.encode(data);
var deserialized = CBOR__namespace.decode(serialized);
assert.deepEqual(deserialized, data);

@@ -312,2 +331,31 @@ });

test('addExtension with map', function(){
function Extended() {
}
var instance = new Extended();
instance.value = 4;
instance.map = new Map();
instance.map.set('key', 'value');
var data = {
extendedInstance: instance,
};
let encoder = new Encoder();
addExtension({
Class: Extended,
tag: 301,
decode: function(data) {
let e = new Extended();
e.value = data[0];
e.map = data[1];
return e
},
encode: function(instance, encode) {
return encode([instance.value, instance.map])
}
});
var serialized = encoder.encode(data);
var deserialized = encoder.decode(serialized);
assert.deepEqual(data, deserialized);
});
test.skip('text decoder', function() {

@@ -502,11 +550,11 @@ let td = new TextDecoder('ISO-8859-15');

};
var serialized = CBOR.encode(data);
var deserialized = CBOR.decode(serialized);
var serialized = CBOR__namespace.encode(data);
var deserialized = CBOR__namespace.decode(serialized);
assert.deepEqual(deserialized, data);
// do multiple times to test caching
var serialized = CBOR.encode(data);
var deserialized = CBOR.decode(serialized);
var serialized = CBOR__namespace.encode(data);
var deserialized = CBOR__namespace.decode(serialized);
assert.deepEqual(deserialized, data);
var serialized = CBOR.encode(data);
var deserialized = CBOR.decode(serialized);
var serialized = CBOR__namespace.encode(data);
var deserialized = CBOR__namespace.decode(serialized);
assert.deepEqual(deserialized, data);

@@ -664,6 +712,6 @@ });

test('decodeMultiple', () => {
let values = CBOR.decodeMultiple(new Uint8Array([1, 2, 3, 4]));
let values = CBOR__namespace.decodeMultiple(new Uint8Array([1, 2, 3, 4]));
assert.deepEqual(values, [1, 2, 3, 4]);
values = [];
CBOR.decodeMultiple(new Uint8Array([1, 2, 3, 4]), value => values.push(value));
CBOR__namespace.decodeMultiple(new Uint8Array([1, 2, 3, 4]), value => values.push(value));
assert.deepEqual(values, [1, 2, 3, 4]);

@@ -675,2 +723,94 @@ });

});
test('encode as iterator', function() {
let hasIterables = {
a: 1,
iterator: (function*() {
yield 2;
yield {
b: (function*() {
yield 3;
})(),
};
})()
};
let encodedIterable = encodeAsIterable(hasIterables);
let result = [...encodedIterable];
result = Buffer.concat(result);
let deserialized = decode(result);
const expectedResult = {
a: 1,
iterator: [2, { b: [3]}]
};
assert.deepEqual(deserialized, expectedResult);
});
if (typeof Blob !== 'undefined')
test('encode as iterator with async/blob parts', function() {
let blob = new Blob([Buffer.from([4,5])]);
let hasIterables = {
a: 1,
iterator: (async function*() {
yield 2;
yield {
b: (function*() {
yield 3;
})(),
};
})(),
blob
};
let encodedIterable = encodeAsIterable(hasIterables);
let result = [...encodedIterable];
assert.equal(result[result.length - 1].constructor, Blob);
});
if (typeof Blob !== 'undefined')
test('encode as async iterator with async/blob parts', async function() {
let blob = new Blob([Buffer.from([4, 5])]);
let hasIterables = {
a: 1,
iterator: (async function* () {
yield 2;
yield {
b: (function* () {
yield 3;
})(),
};
})(),
blob
};
let encodedIterable = encodeAsAsyncIterable(hasIterables);
let result = [];
for await (let encodedPart of encodedIterable) {
result.push(encodedPart);
}
let deserialized = decode(Buffer.concat(result));
const expectedResult = {
a: 1,
iterator: [2, { b: [3]}],
blob: Buffer.from([4,5]),
};
assert.deepEqual(deserialized, expectedResult);
});
test.skip('encode as iterator performance', async function() {
function* iterator() {
for (let i = 0; i < 1000; i++) {
yield {
a: 1,
b: 'hello, world',
c: true,
sub: {
d: 'inside',
e: 3
}
};
}
}
let result;
let start = performance.now();
for (let i = 0; i < 1000; i++) {
let encodedIterable = encodeAsIterable(iterator());
result = [...encodedIterable];
}
decode(Buffer.concat(result));
console.log(performance.now() - start, result.length);
});
});

@@ -684,3 +824,3 @@ suite('CBOR performance tests', function(){

for (var i = 0; i < ITERATIONS; i++) {
var deserialized = JSON.parse(serialized);
JSON.parse(serialized);
}

@@ -692,3 +832,3 @@ });

for (var i = 0; i < ITERATIONS; i++) {
var serialized = JSON.stringify(data);
JSON.stringify(data);
}

@@ -706,3 +846,3 @@ });

for (var i = 0; i < ITERATIONS; i++) {
var deserialized = encoder.decode(serialized);
encoder.decode(serialized);
}

@@ -720,3 +860,3 @@ });

encoder.useBuffer(buffer);
var serialized = encoder.encode(data);
encoder.encode(data);
//var serializedGzip = deflateSync(serialized)

@@ -728,2 +868,3 @@ }

}(CBOR, chai, fs));
})(CBOR, chai, fs);
//# sourceMappingURL=test.js.map

@@ -1,1 +0,1 @@

export { encode, Encoder, addExtension, FLOAT32_OPTIONS } from '.'
export { encode, encodeAsIterable, encodeAsAsyncIterable, Encoder, addExtension, FLOAT32_OPTIONS } from '.'

@@ -10,6 +10,7 @@ import { Decoder, mult10, Tag, typedArrays, addExtension as decodeAddExtension } from './decode.js'

const ByteArray = hasNodeBuffer ? Buffer : Uint8Array
const RECORD_INLINE_ID = 0xdfff // temporary first-come first-serve tag // proposed tag: 0x7265 // 're'
const BlobConstructor = typeof Blob === 'undefined' ? {} : Blob;
const MAX_STRUCTURES = 0x100
const MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000
let serializationId = 1
let throwOnIterable
let target

@@ -179,3 +180,6 @@ let targetView

}
throwOnIterable = encodeOptions & THROW_ON_ITERABLE;
try {
if (throwOnIterable)
return;
encode(value)

@@ -541,2 +545,7 @@ if (bundledStrings) {

if (value[Symbol.iterator]) {
if (throwOnIterable) {
let error = new Error('Iterable should be serialized as iterator')
error.iteratorNotHandled = true;
throw error;
}
target[position++] = 0x9f // indefinite length array

@@ -549,2 +558,7 @@ for (let entry of value) {

}
if (value[Symbol.asyncIterator] || constructor === BlobConstructor) {
let error = new Error('Iterable/blob should be serialized as iterator')
error.iteratorNotHandled = true;
throw error;
}
// no extension found, write as object

@@ -714,3 +728,6 @@ writeObject(value, !value.hasOwnProperty) // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks

encode(keys)
for (let v of Object.values(object)) encode(v)
if (safePrototype === null) return; // special exit for iterator
for (let key in object)
if (safePrototype || object.hasOwnProperty(key))
encode(object[key])
return

@@ -724,2 +741,3 @@ }

}
if (safePrototype === null) return; // special exit for iterator
for (let key in object)

@@ -750,2 +768,126 @@ if (safePrototype || object.hasOwnProperty(key))

}
let chunkThreshold = 100;
let continuedChunkThreshold = 1000;
this.encodeAsIterable = function(value, options) {
return startEncoding(value, options, encodeObjectAsIterable);
}
this.encodeAsAsyncIterable = function(value, options) {
return startEncoding(value, options, encodeObjectAsAsyncIterable);
}
function* encodeObjectAsIterable(object, iterateProperties, finalIterable) {
let constructor = object.constructor;
if (constructor === Object) {
let useRecords = encoder.useRecords !== false;
if (useRecords)
writeObject(object, null); // write the record identifier
else
writeEntityLength(Object.keys(object).length, 0xa0);
for (let key in object) {
let value = object[key];
if (!useRecords) encode(key);
if (value && typeof value === 'object') {
if (iterateProperties[key])
yield* encodeObjectAsIterable(value, iterateProperties[key]);
else
yield* tryEncode(value, iterateProperties, key);
} else encode(value);
}
} else if (constructor === Array) {
writeArrayHeader(object.length);
for (let i = 0; i < length; i++) {
let value = object[i];
if (value && (typeof value === 'object' || position - start > chunkThreshold)) {
if (iterateProperties.element)
yield* encodeObjectAsIterable(value, iterateProperties.element);
else
yield* tryEncode(value, iterateProperties, 'element');
} else encode(value);
}
} else if (object[Symbol.iterator]) {
target[position++] = 0x9f; // start indefinite array
for (let value of object) {
if (value && (typeof value === 'object' || position - start > chunkThreshold)) {
if (iterateProperties.element)
yield* encodeObjectAsIterable(value, iterateProperties.element);
else
yield* tryEncode(value, iterateProperties, 'element');
} else encode(value);
}
target[position++] = 0xff; // stop byte
} else if (constructor === BlobConstructor){
writeEntityLength(object.size, 0x40); // encode as binary data
yield target.subarray(start, position);
yield object; // directly return blobs, they have to be encoded asynchronously
restartEncoding();
} else if (object[Symbol.asyncIterator]) {
target[position++] = 0x9f; // start indefinite array
yield target.subarray(start, position);
yield object; // directly return async iterators, they have to be encoded asynchronously
restartEncoding();
target[position++] = 0xff; // stop byte
} else {
encode(object);
}
if (finalIterable && position > start) yield target.subarray(start, position);
else if (position - start > chunkThreshold) {
yield target.subarray(start, position);
restartEncoding();
}
}
function* tryEncode(value, iterateProperties, key) {
let restart = position - start;
try {
encode(value);
if (position - start > chunkThreshold) {
yield target.subarray(start, position);
restartEncoding();
}
} catch (error) {
if (error.iteratorNotHandled) {
iterateProperties[key] = {};
position = start + restart; // restart our position so we don't have partial data from last encode
yield* encodeObjectAsIterable.call(this, value, iterateProperties[key]);
} else throw error;
}
}
function restartEncoding() {
chunkThreshold = continuedChunkThreshold;
encoder.encode(null, THROW_ON_ITERABLE); // restart encoding
}
function startEncoding(value, options, encodeIterable) {
if (options && options.chunkThreshold) // explicitly specified chunk sizes
chunkThreshold = continuedChunkThreshold = options.chunkThreshold;
else // we start with a smaller threshold to get initial bytes sent quickly
chunkThreshold = 100;
if (value && typeof value === 'object') {
encoder.encode(null, THROW_ON_ITERABLE); // start encoding
return encodeIterable(value, encoder.iterateProperties || (encoder.iterateProperties = {}), true);
}
return [encoder.encode(value)];
}
async function* encodeObjectAsAsyncIterable(value, iterateProperties) {
for (let encodedValue of encodeObjectAsIterable(value, iterateProperties, true)) {
let constructor = encodedValue.constructor;
if (constructor === ByteArray || constructor === Uint8Array)
yield encodedValue;
else if (constructor === BlobConstructor) {
let reader = encodedValue.stream().getReader();
let next;
while (!(next = await reader.read()).done) {
yield next.value;
}
} else if (encodedValue[Symbol.asyncIterator]) {
for await (let asyncValue of encodedValue) {
restartEncoding();
if (asyncValue)
yield* encodeObjectAsAsyncIterable(asyncValue, iterateProperties.async || (iterateProperties.async = {}));
else yield encoder.encode(asyncValue);
}
} else {
yield encodedValue;
}
}
}
}

@@ -786,2 +928,19 @@ useBuffer(buffer) {

}
function writeEntityLength(length, majorValue) {
if (length < 0x18)
target[position++] = majorValue | length
else if (length < 0x100) {
target[position++] = majorValue | 0x18
target[position++] = length
} else if (length < 0x10000) {
target[position++] = majorValue | 0x19
target[position++] = length >> 8
target[position++] = length & 0xff
} else {
target[position++] = majorValue | 0x1a
targetView.setUint32(position, length)
position += 4
}
}
class SharedData {

@@ -1044,2 +1203,4 @@ constructor(structures, values, version) {

export const encode = defaultEncoder.encode
export const encodeAsIterable = defaultEncoder.encodeAsIterable
export const encodeAsAsyncIterable = defaultEncoder.encodeAsAsyncIterable
export { FLOAT32_OPTIONS } from './decode.js'

@@ -1050,2 +1211,4 @@ import { FLOAT32_OPTIONS } from './decode.js'

export const RESET_BUFFER_MODE = 1024
export const THROW_ON_ITERABLE = 2048

@@ -29,8 +29,10 @@ export enum FLOAT32_OPTIONS {

tagUint8Array?: boolean
pack?: boolean
}
interface Extension {
Class: Function
type ClassOf<T> = new (...args: any[]) => T;
interface Extension<T, R> {
Class: ClassOf<T>
tag: number
encode(value: any): Buffer | Uint8Array
decode(messagePack: Buffer | Uint8Array): any
encode(value: T, encodeFn: (data: R) => Uint8Array): Buffer | Uint8Array
decode(item: R): T
}

@@ -44,3 +46,3 @@ export class Decoder {

export function decodeMultiple(messagePack: Buffer | Uint8Array, forEach?: (value: any) => any): [] | void
export function addExtension(extension: Extension): void
export function addExtension<T, R>(extension: Extension<T, R>): void
export function clearSource(): void

@@ -54,2 +56,4 @@ export function roundFloat32(float32Number: number): number

export function encode(value: any): Buffer
export function encodeAsIterable(value: any): Iterable<Buffer | Blob | AsyncIterable<Buffer>>
export function encodeAsAsyncIterable(value: any): AsyncIterable<Buffer>

@@ -56,0 +60,0 @@ import { Transform, Readable } from 'stream'

@@ -1,3 +0,3 @@

export { Encoder, addExtension, encode, NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT, REUSE_BUFFER_MODE } from './encode.js'
export { Encoder, addExtension, encode, encodeAsIterable, encodeAsAsyncIterable, NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT, REUSE_BUFFER_MODE } from './encode.js'
export { Tag, Decoder, decodeMultiple, decode, FLOAT32_OPTIONS, clearSource, roundFloat32, isNativeAccelerationEnabled } from './decode.js'
export { decodeIter, encodeIter } from './iterators.js'

@@ -1,2 +0,2 @@

export { Encoder, addExtension, encode, NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT, REUSE_BUFFER_MODE } from './encode.js'
export { Encoder, addExtension, encode, encodeAsIterable, encodeAsAsyncIterable, NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT, REUSE_BUFFER_MODE } from './encode.js'
export { Tag, Decoder, decodeMultiple, decode, FLOAT32_OPTIONS, clearSource, roundFloat32, isNativeAccelerationEnabled } from './decode.js'

@@ -3,0 +3,0 @@ export { EncoderStream, DecoderStream } from './stream.js'

{
"name": "cbor-x",
"author": "Kris Zyp",
"version": "1.4.1",
"version": "1.5.0",
"description": "Ultra-fast and conformant CBOR (RFC 8949) implementation with support for numerous tag extensions including records and structured cloning",

@@ -67,6 +67,8 @@ "license": "MIT",

"optionalDependencies": {
"cbor-extract": "^2.0.2"
"cbor-extract": "^2.1.1"
},
"devDependencies": {
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-json": "^5.0.1",
"@rollup/plugin-replace": "^5.0.1",
"@rollup/plugin-terser": "^0.1.0",
"@types/node": "latest",

@@ -79,6 +81,5 @@ "async": "^3",

"esm": "^3.2.25",
"mocha": "^8.1.3",
"rollup": "^1.20.3",
"rollup-plugin-babel-minify": "^9.0.0"
"mocha": "^10.1.0",
"rollup": "^3.2.5"
}
}

@@ -55,2 +55,22 @@ # cbor-x

### Iterables
In addition to using CBOR with streams, CBOR can also encode to an iterable that can be iterated as a sequence of binary chunks with `encodeAsIterable`, which facilitates progressive encoding:
```JavaScript
import { encodeAsIterable } from 'cbor-x';
for (let binaryChunk of encodeAsIterable(data)){
// progressively get binary chunks as data is encoded
}
```
And `encodeAsAsyncIterable` is also available, which returns an async iterable, and can be used to encode data from async iterables as well as Blob data.
```JavaScript
import { encodeAsAsyncIterable } from 'cbor-x';
let data = { blob: new Blob(...) };
for await (let binaryChunk of encodeAsAsyncIterable(data)){
// progressively get binary chunks as asynchronous data source is encoded
}
```
## Deno Usage

@@ -57,0 +77,0 @@ Cbor-x modules are standard ESM modules and can be loaded directly from the [deno.land registry for cbor](https://deno.land/x/cbor) for use in Deno. The standard pack/encode and unpack/decode functionality is available on Deno, like other platforms.

@@ -1,3 +0,4 @@

import minify from "rollup-plugin-babel-minify";
import json from "@rollup/plugin-json";
import terser from '@rollup/plugin-terser';
import json from "@rollup/plugin-json";
import replace from "@rollup/plugin-replace";

@@ -10,3 +11,4 @@ export default [

file: "dist/node.cjs",
format: "cjs"
format: "cjs",
sourcemap: true
}

@@ -20,16 +22,56 @@ ]

format: "umd",
name: "CBOR"
name: "CBOR",
sourcemap: true
}
},
},
{
input: "index.js",
plugins: [minify({
})],
plugins: [
replace({ Function: 'BlockedFunction '})
],
output: {
file: "dist/index-no-eval.cjs",
format: "umd",
name: "CBOR",
sourcemap: true
},
},
{
input: "decode.js",
plugins: [
replace({ Function: 'BlockedFunction '})
],
output: {
file: "dist/decode-no-eval.cjs",
format: "umd",
name: "CBOR",
sourcemap: true
},
},
{
input: "index.js",
plugins: [
terser({})
],
output: {
file: "dist/index.min.js",
format: "umd",
name: "CBOR"
name: "CBOR",
sourcemap: true
}
},
{
input: "index.js",
plugins: [
replace({ Function: 'BlockedFunction '}),
terser({})
],
output: {
file: "dist/index-no-eval.min.js",
format: "umd",
name: "CBOR",
sourcemap: true
}
},
{
input: "tests/test.js",

@@ -41,2 +83,3 @@ plugins: [json()],

format: "iife",
sourcemap: true,
globals: {

@@ -43,0 +86,0 @@ chai: 'chai',

@@ -15,4 +15,6 @@ import { Transform } from 'stream'

}
_transform(value, encoding, callback) {
this.push(this.encoder.encode(value))
async _transform(value, encoding, callback) {
for await (let chunk of this.encoder.encodeAsAsyncIterable(value)) {
this.push(chunk)
}
callback()

@@ -19,0 +21,0 @@ }

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc