@speckle/objectsender 1.0.2 → 2.19.3

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.
@@ -1,3 +1,3 @@
1
1
  "use strict";var mt=Object.defineProperty;var St=(t,e,r)=>e in t?mt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var S=(t,e,r)=>(St(t,typeof e!="symbol"?e+"":e,r),r),tt=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var T=(t,e,r)=>(tt(t,e,"read from private field"),r?r.call(t):e.get(t)),y=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},b=(t,e,r,i)=>(tt(t,e,"write to private field"),i?i.call(t,r):e.set(t,r),r);var d=(t,e,r)=>(tt(t,e,"access private method"),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ct=require("@speckle/shared");function et(t){function e(O,_){return O<<_|O>>>32-_}function r(O){let _="",A,m;for(A=7;A>=0;A--)m=O>>>A*4&15,_+=m.toString(16);return _}function i(O){O=O.replace(/\r\n/g,`
2
- `);let _="";for(let A=0;A<O.length;A++){const m=O.charCodeAt(A);m<128?_+=String.fromCharCode(m):m>127&&m<2048?(_+=String.fromCharCode(m>>6|192),_+=String.fromCharCode(m&63|128)):(_+=String.fromCharCode(m>>12|224),_+=String.fromCharCode(m>>6&63|128),_+=String.fromCharCode(m&63|128))}return _}let a,n,g;const f=new Array(80);let v=1732584193,$=4023233417,h=2562383102,u=271733878,j=3285377520,l,s,o,c,p,w;t=i(t);const C=t.length,z=[];for(n=0;n<C-3;n+=4)g=t.charCodeAt(n)<<24|t.charCodeAt(n+1)<<16|t.charCodeAt(n+2)<<8|t.charCodeAt(n+3),z.push(g);switch(C%4){case 0:n=2147483648;break;case 1:n=t.charCodeAt(C-1)<<24|8388608;break;case 2:n=t.charCodeAt(C-2)<<24|t.charCodeAt(C-1)<<16|32768;break;case 3:n=t.charCodeAt(C-3)<<24|t.charCodeAt(C-2)<<16|t.charCodeAt(C-1)<<8|128;break}for(z.push(n);z.length%16!==14;)z.push(0);for(z.push(C>>>29),z.push(C<<3&4294967295),a=0;a<z.length;a+=16){for(n=0;n<16;n++)f[n]=z[a+n];for(n=16;n<=79;n++)f[n]=e(f[n-3]^f[n-8]^f[n-14]^f[n-16],1);for(l=v,s=$,o=h,c=u,p=j,n=0;n<=19;n++)w=e(l,5)+(s&o|~s&c)+p+f[n]+1518500249&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;for(n=20;n<=39;n++)w=e(l,5)+(s^o^c)+p+f[n]+1859775393&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;for(n=40;n<=59;n++)w=e(l,5)+(s&o|s&c|o&c)+p+f[n]+2400959708&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;for(n=60;n<=79;n++)w=e(l,5)+(s^o^c)+p+f[n]+3395469782&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;v=v+l&4294967295,$=$+s&4294967295,h=h+o&4294967295,u=u+c&4294967295,j=j+p&4294967295}return(r(v)+r($)+r(h)+r(u)+r(j)).toLowerCase().substring(0,40)}var Tt=typeof global=="object"&&global&&global.Object===Object&&global,jt=typeof self=="object"&&self&&self.Object===Object&&self,it=Tt||jt||Function("return this")(),L=it.Symbol,dt=Object.prototype,vt=dt.hasOwnProperty,Ot=dt.toString,H=L?L.toStringTag:void 0;function At(t){var e=vt.call(t,H),r=t[H];try{t[H]=void 0;var i=!0}catch{}var a=Ot.call(t);return i&&(e?t[H]=r:delete t[H]),a}var Pt=Object.prototype,$t=Pt.toString;function zt(t){return $t.call(t)}var kt="[object Null]",It="[object Undefined]",ht=L?L.toStringTag:void 0;function yt(t){return t==null?t===void 0?It:kt:ht&&ht in Object(t)?At(t):zt(t)}function gt(t){return t!=null&&typeof t=="object"}var xt="[object Symbol]";function at(t){return typeof t=="symbol"||gt(t)&&yt(t)==xt}function Et(t,e){for(var r=-1,i=t==null?0:t.length,a=Array(i);++r<i;)a[r]=e(t[r],r,t);return a}var st=Array.isArray,Ft=1/0,ut=L?L.prototype:void 0,lt=ut?ut.toString:void 0;function _t(t){if(typeof t=="string")return t;if(st(t))return Et(t,_t)+"";if(at(t))return lt?lt.call(t):"";var e=t+"";return e=="0"&&1/t==-Ft?"-0":e}function bt(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Dt="[object AsyncFunction]",Lt="[object Function]",Nt="[object GeneratorFunction]",Ht="[object Proxy]";function Mt(t){if(!bt(t))return!1;var e=yt(t);return e==Lt||e==Nt||e==Dt||e==Ht}var rt=it["__core-js_shared__"],ft=function(){var t=/[^.]+$/.exec(rt&&rt.keys&&rt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Rt(t){return!!ft&&ft in t}var Ut=Function.prototype,Gt=Ut.toString;function Bt(t){if(t!=null){try{return Gt.call(t)}catch{}try{return t+""}catch{}}return""}var qt=/[\\^$.*+?()[\]{}|]/g,Kt=/^\[object .+?Constructor\]$/,Wt=Function.prototype,Jt=Object.prototype,Vt=Wt.toString,Xt=Jt.hasOwnProperty,Yt=RegExp("^"+Vt.call(Xt).replace(qt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zt(t){if(!bt(t)||Rt(t))return!1;var e=Mt(t)?Yt:Kt;return e.test(Bt(t))}function Qt(t,e){return t==null?void 0:t[e]}function wt(t,e){var r=Qt(t,e);return Zt(r)?r:void 0}function te(t,e){return t===e||t!==t&&e!==e}var ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,re=/^\w*$/;function ne(t,e){if(st(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||at(t)?!0:re.test(t)||!ee.test(t)||e!=null&&t in Object(e)}var U=wt(Object,"create");function ie(){this.__data__=U?U(null):{},this.size=0}function ae(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var se="__lodash_hash_undefined__",oe=Object.prototype,ce=oe.hasOwnProperty;function he(t){var e=this.__data__;if(U){var r=e[t];return r===se?void 0:r}return ce.call(e,t)?e[t]:void 0}var ue=Object.prototype,le=ue.hasOwnProperty;function fe(t){var e=this.__data__;return U?e[t]!==void 0:le.call(e,t)}var pe="__lodash_hash_undefined__";function de(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=U&&e===void 0?pe:e,this}function E(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var i=t[e];this.set(i[0],i[1])}}E.prototype.clear=ie;E.prototype.delete=ae;E.prototype.get=he;E.prototype.has=fe;E.prototype.set=de;function ye(){this.__data__=[],this.size=0}function Z(t,e){for(var r=t.length;r--;)if(te(t[r][0],e))return r;return-1}var ge=Array.prototype,_e=ge.splice;function be(t){var e=this.__data__,r=Z(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():_e.call(e,r,1),--this.size,!0}function we(t){var e=this.__data__,r=Z(e,t);return r<0?void 0:e[r][1]}function Ce(t){return Z(this.__data__,t)>-1}function me(t,e){var r=this.__data__,i=Z(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}function N(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var i=t[e];this.set(i[0],i[1])}}N.prototype.clear=ye;N.prototype.delete=be;N.prototype.get=we;N.prototype.has=Ce;N.prototype.set=me;var Se=wt(it,"Map");function Te(){this.size=0,this.__data__={hash:new E,map:new(Se||N),string:new E}}function je(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function Q(t,e){var r=t.__data__;return je(e)?r[typeof e=="string"?"string":"hash"]:r.map}function ve(t){var e=Q(this,t).delete(t);return this.size-=e?1:0,e}function Oe(t){return Q(this,t).get(t)}function Ae(t){return Q(this,t).has(t)}function Pe(t,e){var r=Q(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}function F(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var i=t[e];this.set(i[0],i[1])}}F.prototype.clear=Te;F.prototype.delete=ve;F.prototype.get=Oe;F.prototype.has=Ae;F.prototype.set=Pe;var $e="Expected a function";function ot(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError($e);var r=function(){var i=arguments,a=e?e.apply(this,i):i[0],n=r.cache;if(n.has(a))return n.get(a);var g=t.apply(this,i);return r.cache=n.set(a,g)||n,g};return r.cache=new(ot.Cache||F),r}ot.Cache=F;var ze=500;function ke(t){var e=ot(t,function(i){return r.size===ze&&r.clear(),i}),r=e.cache;return e}var Ie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xe=/\\(\\)?/g,Ee=ke(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Ie,function(r,i,a,n){e.push(a?n.replace(xe,"$1"):i||r)}),e});function Fe(t){return t==null?"":_t(t)}function De(t,e){return st(t)?t:ne(t,e)?[t]:Ee(Fe(t))}var Le=1/0;function Ne(t){if(typeof t=="string"||at(t))return t;var e=t+"";return e=="0"&&1/t==-Le?"-0":e}function He(t,e){e=De(e,t);for(var r=0,i=e.length;t!=null&&r<i;)t=t[Ne(e[r++])];return r&&r==i?t:void 0}function Me(t,e,r){var i=t==null?void 0:He(t,e);return i===void 0?r:i}const Re=t=>gt(t)&&!!Me(t,"speckle_type");var k,M,I,R,D,X,G,nt,Y,Ct;class Ue{constructor(e,r=1e3,i=et){y(this,k);y(this,I);y(this,D);y(this,G);y(this,Y);S(this,"chunkSize");S(this,"detachLineage");S(this,"lineage");S(this,"familyTree");S(this,"closureTable");S(this,"transport");S(this,"uniqueId");S(this,"hashingFunction");this.chunkSize=r,this.detachLineage=[!0],this.lineage=[],this.familyTree={},this.closureTable={},this.transport=e,this.uniqueId=0,this.hashingFunction=i||et}async write(e){return await d(this,k,M).call(this,e,!0)}dispose(){this.detachLineage=[],this.lineage=[],this.familyTree={},this.closureTable={},this.transport=null}}k=new WeakSet,M=async function(e,r){const i=`${this.uniqueId++}-obj`;this.lineage.push(i);const a={speckle_type:e.speckle_type||"Base"};for(const h in e){const u=e[h];if(!u||h==="id"||h.startsWith("_"))continue;if(typeof u!="object"){a[h]=u;continue}const j=h.startsWith("@"),l=Array.isArray(u),s=l?h.match(/^@\((\d*)\)/):!1;if(l&&s&&u.length!==0&&typeof u[0]!="object"){const o=s[1]!==""?parseInt(s[1]):this.chunkSize,c=[];let p=new pt,w=0;for(const C of u)w===o&&(c.push(await d(this,G,nt).call(this,p)),p=new pt,w=0),p.data.push(C),w++;p.data.length!==0&&c.push(await d(this,G,nt).call(this,p)),a[h.replace(s[0],"")]=c;continue}if(u.speckle_type){const o=await d(this,I,R).call(this,{value:u,isDetached:j});a[h]=j?d(this,D,X).call(this,o.id):o;continue}a[h]=await d(this,I,R).call(this,{value:u,isDetached:j})}const n=this.detachLineage.pop(),g=this.lineage.pop();if(this.familyTree[g]){const h={};Object.entries(this.familyTree[g]).forEach(([u,j])=>{h[u]=j-this.detachLineage.length}),a.totalChildrenCount=Object.keys(h).length,a.totalChildrenCount&&(a.__closure=h)}const{hash:f,serializedObject:v,size:$}=d(this,Y,Ct).call(this,a);return a.id=f,(n||r)&&this.transport&&await this.transport.write(v,$),r&&this.transport&&await this.transport.flush(),{hash:f,traversed:a}},I=new WeakSet,R=async function({value:e,isDetached:r=!1}){if(typeof e!="object")return e;if(Array.isArray(e)){const i=e;if(i.length===0)return e;if(typeof i[0]!="object")return i;if(!r)return Promise.all(e.map(async n=>await d(this,I,R).call(this,{value:n})));const a=[];for(const n of e)if(Re(n)){this.detachLineage.push(r);const{hash:g}=await d(this,k,M).call(this,n,!1);a.push(d(this,D,X).call(this,g))}else a.push(await d(this,I,R).call(this,{value:n,isDetached:r}));return a}if(!e.speckle_type)return e;if(e.speckle_type)return this.detachLineage.push(r),(await d(this,k,M).call(this,e,!1)).traversed;throw new Error(`Unsupported type '${typeof e}': ${e}.`)},D=new WeakSet,X=function(e){return this.lineage.forEach(r=>{this.familyTree[r]||(this.familyTree[r]={}),(!this.familyTree[r][e]||this.familyTree[r][e]>this.detachLineage.length)&&(this.familyTree[r][e]=this.detachLineage.length)}),{referencedId:e,speckle_type:"reference"}},G=new WeakSet,nt=async function(e){this.detachLineage.push(!0);const{hash:r}=await d(this,k,M).call(this,e,!1);return d(this,D,X).call(this,r)},Y=new WeakSet,Ct=function(e){const r=JSON.stringify(e),i=this.hashingFunction(r),a=r.substring(0,1)+`"id":"${i}",`+r.substring(1);return{hash:et(r),serializedObject:a,size:r.length}};class pt{constructor(){S(this,"speckle_type");S(this,"data");this.data=[],this.speckle_type="Speckle.Core.Models.DataChunk"}}var P,B,x,q,K,W,J,V;class Ge{constructor(e,r,i,a){y(this,P,void 0);y(this,B,void 0);y(this,x,void 0);y(this,q,void 0);y(this,K,void 0);y(this,W,void 0);y(this,J,void 0);y(this,V,void 0);b(this,B,(a==null?void 0:a.maxSize)||2e5),b(this,J,(a==null?void 0:a.flushRetryCount)||3),b(this,V,(a==null?void 0:a.flushTimeout)||2*60*1e3),b(this,x,0),b(this,q,e),b(this,K,r),b(this,W,i),b(this,P,[])}async write(e,r){T(this,P).push(e),b(this,x,T(this,x)+r),!(T(this,x)<T(this,B))&&await this.flush()}async flush(){if(T(this,P).length===0)return;const e=new FormData,r="["+T(this,P).join(",")+"]";e.append("object-batch",new Blob([r],{type:"application/json"}));const i=new URL(`/objects/${T(this,K)}`,T(this,q)),a=await ct.retry(async()=>await Promise.race([fetch(i,{method:"POST",headers:{Authorization:`Bearer ${T(this,W)}`},body:e}),ct.timeoutAt(T(this,V),"Object sender flush timed out")]),T(this,J),n=>n*1e3);if(a.status!==201)throw new Error(`Unexpected error when sending data. Expected status 200, got ${a.status}`);b(this,P,[]),b(this,x,0)}dispose(){b(this,P,[])}}P=new WeakMap,B=new WeakMap,x=new WeakMap,q=new WeakMap,K=new WeakMap,W=new WeakMap,J=new WeakMap,V=new WeakMap;class Be{constructor(e){S(this,"speckle_type");if(this.speckle_type=this.constructor.name,e)for(const r in e)this[r]=e[r]}}const qe=async(t,{serverUrl:e="https://app.speckle.systems",projectId:r,token:i,logger:a=console})=>{const n=performance.now();a==null||a.log("Starting to send");const g=new Ge(e,r,i),f=new Ue(g);let v;try{v=await f.write(t)}finally{g.dispose(),f.dispose()}const $=performance.now();return a.log(`Finished sending in ${($-n)/1e3}s.`),v};exports.Base=Be;exports.send=qe;
2
+ `);let _="";for(let A=0;A<O.length;A++){const m=O.charCodeAt(A);m<128?_+=String.fromCharCode(m):m>127&&m<2048?(_+=String.fromCharCode(m>>6|192),_+=String.fromCharCode(m&63|128)):(_+=String.fromCharCode(m>>12|224),_+=String.fromCharCode(m>>6&63|128),_+=String.fromCharCode(m&63|128))}return _}let a,n,g;const f=new Array(80);let j=1732584193,$=4023233417,h=2562383102,u=271733878,v=3285377520,l,s,o,c,p,w;t=i(t);const C=t.length,z=[];for(n=0;n<C-3;n+=4)g=t.charCodeAt(n)<<24|t.charCodeAt(n+1)<<16|t.charCodeAt(n+2)<<8|t.charCodeAt(n+3),z.push(g);switch(C%4){case 0:n=2147483648;break;case 1:n=t.charCodeAt(C-1)<<24|8388608;break;case 2:n=t.charCodeAt(C-2)<<24|t.charCodeAt(C-1)<<16|32768;break;case 3:n=t.charCodeAt(C-3)<<24|t.charCodeAt(C-2)<<16|t.charCodeAt(C-1)<<8|128;break}for(z.push(n);z.length%16!==14;)z.push(0);for(z.push(C>>>29),z.push(C<<3&4294967295),a=0;a<z.length;a+=16){for(n=0;n<16;n++)f[n]=z[a+n];for(n=16;n<=79;n++)f[n]=e(f[n-3]^f[n-8]^f[n-14]^f[n-16],1);for(l=j,s=$,o=h,c=u,p=v,n=0;n<=19;n++)w=e(l,5)+(s&o|~s&c)+p+f[n]+1518500249&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;for(n=20;n<=39;n++)w=e(l,5)+(s^o^c)+p+f[n]+1859775393&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;for(n=40;n<=59;n++)w=e(l,5)+(s&o|s&c|o&c)+p+f[n]+2400959708&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;for(n=60;n<=79;n++)w=e(l,5)+(s^o^c)+p+f[n]+3395469782&4294967295,p=c,c=o,o=e(s,30),s=l,l=w;j=j+l&4294967295,$=$+s&4294967295,h=h+o&4294967295,u=u+c&4294967295,v=v+p&4294967295}return(r(j)+r($)+r(h)+r(u)+r(v)).toLowerCase().substring(0,40)}var Tt=typeof global=="object"&&global&&global.Object===Object&&global,vt=typeof self=="object"&&self&&self.Object===Object&&self,it=Tt||vt||Function("return this")(),L=it.Symbol,dt=Object.prototype,jt=dt.hasOwnProperty,Ot=dt.toString,H=L?L.toStringTag:void 0;function At(t){var e=jt.call(t,H),r=t[H];try{t[H]=void 0;var i=!0}catch{}var a=Ot.call(t);return i&&(e?t[H]=r:delete t[H]),a}var Pt=Object.prototype,$t=Pt.toString;function zt(t){return $t.call(t)}var kt="[object Null]",It="[object Undefined]",ht=L?L.toStringTag:void 0;function yt(t){return t==null?t===void 0?It:kt:ht&&ht in Object(t)?At(t):zt(t)}function gt(t){return t!=null&&typeof t=="object"}var xt="[object Symbol]";function at(t){return typeof t=="symbol"||gt(t)&&yt(t)==xt}function Et(t,e){for(var r=-1,i=t==null?0:t.length,a=Array(i);++r<i;)a[r]=e(t[r],r,t);return a}var st=Array.isArray,Ft=1/0,ut=L?L.prototype:void 0,lt=ut?ut.toString:void 0;function _t(t){if(typeof t=="string")return t;if(st(t))return Et(t,_t)+"";if(at(t))return lt?lt.call(t):"";var e=t+"";return e=="0"&&1/t==-Ft?"-0":e}function bt(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Dt="[object AsyncFunction]",Lt="[object Function]",Nt="[object GeneratorFunction]",Ht="[object Proxy]";function Mt(t){if(!bt(t))return!1;var e=yt(t);return e==Lt||e==Nt||e==Dt||e==Ht}var rt=it["__core-js_shared__"],ft=function(){var t=/[^.]+$/.exec(rt&&rt.keys&&rt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Rt(t){return!!ft&&ft in t}var Ut=Function.prototype,Gt=Ut.toString;function Bt(t){if(t!=null){try{return Gt.call(t)}catch{}try{return t+""}catch{}}return""}var qt=/[\\^$.*+?()[\]{}|]/g,Kt=/^\[object .+?Constructor\]$/,Wt=Function.prototype,Jt=Object.prototype,Vt=Wt.toString,Xt=Jt.hasOwnProperty,Yt=RegExp("^"+Vt.call(Xt).replace(qt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zt(t){if(!bt(t)||Rt(t))return!1;var e=Mt(t)?Yt:Kt;return e.test(Bt(t))}function Qt(t,e){return t==null?void 0:t[e]}function wt(t,e){var r=Qt(t,e);return Zt(r)?r:void 0}function te(t,e){return t===e||t!==t&&e!==e}var ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,re=/^\w*$/;function ne(t,e){if(st(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||at(t)?!0:re.test(t)||!ee.test(t)||e!=null&&t in Object(e)}var U=wt(Object,"create");function ie(){this.__data__=U?U(null):{},this.size=0}function ae(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var se="__lodash_hash_undefined__",oe=Object.prototype,ce=oe.hasOwnProperty;function he(t){var e=this.__data__;if(U){var r=e[t];return r===se?void 0:r}return ce.call(e,t)?e[t]:void 0}var ue=Object.prototype,le=ue.hasOwnProperty;function fe(t){var e=this.__data__;return U?e[t]!==void 0:le.call(e,t)}var pe="__lodash_hash_undefined__";function de(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=U&&e===void 0?pe:e,this}function E(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var i=t[e];this.set(i[0],i[1])}}E.prototype.clear=ie;E.prototype.delete=ae;E.prototype.get=he;E.prototype.has=fe;E.prototype.set=de;function ye(){this.__data__=[],this.size=0}function Z(t,e){for(var r=t.length;r--;)if(te(t[r][0],e))return r;return-1}var ge=Array.prototype,_e=ge.splice;function be(t){var e=this.__data__,r=Z(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():_e.call(e,r,1),--this.size,!0}function we(t){var e=this.__data__,r=Z(e,t);return r<0?void 0:e[r][1]}function Ce(t){return Z(this.__data__,t)>-1}function me(t,e){var r=this.__data__,i=Z(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}function N(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var i=t[e];this.set(i[0],i[1])}}N.prototype.clear=ye;N.prototype.delete=be;N.prototype.get=we;N.prototype.has=Ce;N.prototype.set=me;var Se=wt(it,"Map");function Te(){this.size=0,this.__data__={hash:new E,map:new(Se||N),string:new E}}function ve(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function Q(t,e){var r=t.__data__;return ve(e)?r[typeof e=="string"?"string":"hash"]:r.map}function je(t){var e=Q(this,t).delete(t);return this.size-=e?1:0,e}function Oe(t){return Q(this,t).get(t)}function Ae(t){return Q(this,t).has(t)}function Pe(t,e){var r=Q(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}function F(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var i=t[e];this.set(i[0],i[1])}}F.prototype.clear=Te;F.prototype.delete=je;F.prototype.get=Oe;F.prototype.has=Ae;F.prototype.set=Pe;var $e="Expected a function";function ot(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError($e);var r=function(){var i=arguments,a=e?e.apply(this,i):i[0],n=r.cache;if(n.has(a))return n.get(a);var g=t.apply(this,i);return r.cache=n.set(a,g)||n,g};return r.cache=new(ot.Cache||F),r}ot.Cache=F;var ze=500;function ke(t){var e=ot(t,function(i){return r.size===ze&&r.clear(),i}),r=e.cache;return e}var Ie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xe=/\\(\\)?/g,Ee=ke(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Ie,function(r,i,a,n){e.push(a?n.replace(xe,"$1"):i||r)}),e});function Fe(t){return t==null?"":_t(t)}function De(t,e){return st(t)?t:ne(t,e)?[t]:Ee(Fe(t))}var Le=1/0;function Ne(t){if(typeof t=="string"||at(t))return t;var e=t+"";return e=="0"&&1/t==-Le?"-0":e}function He(t,e){e=De(e,t);for(var r=0,i=e.length;t!=null&&r<i;)t=t[Ne(e[r++])];return r&&r==i?t:void 0}function Me(t,e,r){var i=t==null?void 0:He(t,e);return i===void 0?r:i}const Re=t=>gt(t)&&!!Me(t,"speckle_type");var k,M,I,R,D,X,G,nt,Y,Ct;class Ue{constructor(e,r=1e3,i=et){y(this,k);y(this,I);y(this,D);y(this,G);y(this,Y);S(this,"chunkSize");S(this,"detachLineage");S(this,"lineage");S(this,"familyTree");S(this,"closureTable");S(this,"transport");S(this,"uniqueId");S(this,"hashingFunction");this.chunkSize=r,this.detachLineage=[!0],this.lineage=[],this.familyTree={},this.closureTable={},this.transport=e,this.uniqueId=0,this.hashingFunction=i||et}async write(e){return await d(this,k,M).call(this,e,!0)}dispose(){this.detachLineage=[],this.lineage=[],this.familyTree={},this.closureTable={},this.transport=null}}k=new WeakSet,M=async function(e,r){const i=`${this.uniqueId++}-obj`;this.lineage.push(i);const a={speckle_type:e.speckle_type||"Base"};for(const h in e){const u=e[h];if(u===void 0||h==="id"||h.startsWith("_"))continue;if(typeof u!="object"){a[h]=u;continue}const v=h.startsWith("@"),l=Array.isArray(u),s=l?h.match(/^@\((\d*)\)/):!1;if(l&&s&&u.length!==0&&typeof u[0]!="object"){const o=s[1]!==""?parseInt(s[1]):this.chunkSize,c=[];let p=new pt,w=0;for(const C of u)w===o&&(c.push(await d(this,G,nt).call(this,p)),p=new pt,w=0),p.data.push(C),w++;p.data.length!==0&&c.push(await d(this,G,nt).call(this,p)),a[h.replace(s[0],"")]=c;continue}if(u.speckle_type){const o=await d(this,I,R).call(this,{value:u,isDetached:v});a[h]=v?d(this,D,X).call(this,o.id):o;continue}a[h]=await d(this,I,R).call(this,{value:u,isDetached:v})}const n=this.detachLineage.pop(),g=this.lineage.pop();if(this.familyTree[g]){const h={};Object.entries(this.familyTree[g]).forEach(([u,v])=>{h[u]=v-this.detachLineage.length}),a.totalChildrenCount=Object.keys(h).length,a.totalChildrenCount&&(a.__closure=h)}const{hash:f,serializedObject:j,size:$}=d(this,Y,Ct).call(this,a);return a.id=f,(n||r)&&this.transport&&await this.transport.write(j,$),r&&this.transport&&await this.transport.flush(),{hash:f,traversed:a}},I=new WeakSet,R=async function({value:e,isDetached:r=!1}){if(typeof e!="object")return e;if(Array.isArray(e)){const i=e;if(i.length===0)return e;if(typeof i[0]!="object")return i;if(!r)return Promise.all(e.map(async n=>await d(this,I,R).call(this,{value:n})));const a=[];for(const n of e)if(Re(n)){this.detachLineage.push(r);const{hash:g}=await d(this,k,M).call(this,n,!1);a.push(d(this,D,X).call(this,g))}else a.push(await d(this,I,R).call(this,{value:n,isDetached:r}));return a}if(!e.speckle_type)return e;if(e.speckle_type)return this.detachLineage.push(r),(await d(this,k,M).call(this,e,!1)).traversed;throw new Error(`Unsupported type '${typeof e}': ${e}.`)},D=new WeakSet,X=function(e){return this.lineage.forEach(r=>{this.familyTree[r]||(this.familyTree[r]={}),(!this.familyTree[r][e]||this.familyTree[r][e]>this.detachLineage.length)&&(this.familyTree[r][e]=this.detachLineage.length)}),{referencedId:e,speckle_type:"reference"}},G=new WeakSet,nt=async function(e){this.detachLineage.push(!0);const{hash:r}=await d(this,k,M).call(this,e,!1);return d(this,D,X).call(this,r)},Y=new WeakSet,Ct=function(e){const r=JSON.stringify(e),i=this.hashingFunction(r),a=r.substring(0,1)+`"id":"${i}",`+r.substring(1);return{hash:et(r),serializedObject:a,size:r.length}};class pt{constructor(){S(this,"speckle_type");S(this,"data");this.data=[],this.speckle_type="Speckle.Core.Models.DataChunk"}}var P,B,x,q,K,W,J,V;class Ge{constructor(e,r,i,a){y(this,P,void 0);y(this,B,void 0);y(this,x,void 0);y(this,q,void 0);y(this,K,void 0);y(this,W,void 0);y(this,J,void 0);y(this,V,void 0);b(this,B,(a==null?void 0:a.maxSize)||2e5),b(this,J,(a==null?void 0:a.flushRetryCount)||3),b(this,V,(a==null?void 0:a.flushTimeout)||2*60*1e3),b(this,x,0),b(this,q,e),b(this,K,r),b(this,W,i),b(this,P,[])}async write(e,r){T(this,P).push(e),b(this,x,T(this,x)+r),!(T(this,x)<T(this,B))&&await this.flush()}async flush(){if(T(this,P).length===0)return;const e=new FormData,r="["+T(this,P).join(",")+"]";e.append("object-batch",new Blob([r],{type:"application/json"}));const i=new URL(`/objects/${T(this,K)}`,T(this,q)),a=await ct.retry(async()=>await Promise.race([fetch(i,{method:"POST",headers:{Authorization:`Bearer ${T(this,W)}`},body:e}),ct.timeoutAt(T(this,V),"Object sender flush timed out")]),T(this,J),n=>n*1e3);if(a.status!==201)throw new Error(`Unexpected error when sending data. Expected status 200, got ${a.status}`);b(this,P,[]),b(this,x,0)}dispose(){b(this,P,[])}}P=new WeakMap,B=new WeakMap,x=new WeakMap,q=new WeakMap,K=new WeakMap,W=new WeakMap,J=new WeakMap,V=new WeakMap;class Be{constructor(e){S(this,"speckle_type");if(this.speckle_type=this.constructor.name,e)for(const r in e)this[r]=e[r]}}const qe=async(t,{serverUrl:e="https://app.speckle.systems",projectId:r,token:i,logger:a=console})=>{const n=performance.now();a==null||a.log("Starting to send");const g=new Ge(e,r,i),f=new Ue(g);let j;try{j=await f.write(t)}finally{g.dispose(),f.dispose()}const $=performance.now();return a.log(`Finished sending in ${($-n)/1e3}s.`),j};exports.Base=Be;exports.send=qe;
3
3
  //# sourceMappingURL=objectsender.cjs.map
@@ -33,7 +33,7 @@ function et(t) {
33
33
  }
34
34
  let a, n, g;
35
35
  const f = new Array(80);
36
- let v = 1732584193, z = 4023233417, h = 2562383102, u = 271733878, j = 3285377520, l, s, o, c, p, w;
36
+ let j = 1732584193, z = 4023233417, h = 2562383102, u = 271733878, v = 3285377520, l, s, o, c, p, w;
37
37
  t = i(t);
38
38
  const C = t.length, P = [];
39
39
  for (n = 0; n < C - 3; n += 4)
@@ -59,7 +59,7 @@ function et(t) {
59
59
  f[n] = P[a + n];
60
60
  for (n = 16; n <= 79; n++)
61
61
  f[n] = e(f[n - 3] ^ f[n - 8] ^ f[n - 14] ^ f[n - 16], 1);
62
- for (l = v, s = z, o = h, c = u, p = j, n = 0; n <= 19; n++)
62
+ for (l = j, s = z, o = h, c = u, p = v, n = 0; n <= 19; n++)
63
63
  w = e(l, 5) + (s & o | ~s & c) + p + f[n] + 1518500249 & 4294967295, p = c, c = o, o = e(s, 30), s = l, l = w;
64
64
  for (n = 20; n <= 39; n++)
65
65
  w = e(l, 5) + (s ^ o ^ c) + p + f[n] + 1859775393 & 4294967295, p = c, c = o, o = e(s, 30), s = l, l = w;
@@ -67,11 +67,11 @@ function et(t) {
67
67
  w = e(l, 5) + (s & o | s & c | o & c) + p + f[n] + 2400959708 & 4294967295, p = c, c = o, o = e(s, 30), s = l, l = w;
68
68
  for (n = 60; n <= 79; n++)
69
69
  w = e(l, 5) + (s ^ o ^ c) + p + f[n] + 3395469782 & 4294967295, p = c, c = o, o = e(s, 30), s = l, l = w;
70
- v = v + l & 4294967295, z = z + s & 4294967295, h = h + o & 4294967295, u = u + c & 4294967295, j = j + p & 4294967295;
70
+ j = j + l & 4294967295, z = z + s & 4294967295, h = h + o & 4294967295, u = u + c & 4294967295, v = v + p & 4294967295;
71
71
  }
72
- return (r(v) + r(z) + r(h) + r(u) + r(j)).toLowerCase().substring(0, 40);
72
+ return (r(j) + r(z) + r(h) + r(u) + r(v)).toLowerCase().substring(0, 40);
73
73
  }
74
- var jt = typeof global == "object" && global && global.Object === Object && global, vt = typeof self == "object" && self && self.Object === Object && self, it = jt || vt || Function("return this")(), L = it.Symbol, pt = Object.prototype, Ot = pt.hasOwnProperty, At = pt.toString, H = L ? L.toStringTag : void 0;
74
+ var vt = typeof global == "object" && global && global.Object === Object && global, jt = typeof self == "object" && self && self.Object === Object && self, it = vt || jt || Function("return this")(), L = it.Symbol, pt = Object.prototype, Ot = pt.hasOwnProperty, At = pt.toString, H = L ? L.toStringTag : void 0;
75
75
  function $t(t) {
76
76
  var e = Ot.call(t, H), r = t[H];
77
77
  try {
@@ -251,20 +251,20 @@ N.prototype.get = Ce;
251
251
  N.prototype.has = me;
252
252
  N.prototype.set = Se;
253
253
  var Te = bt(it, "Map");
254
- function je() {
254
+ function ve() {
255
255
  this.size = 0, this.__data__ = {
256
256
  hash: new E(),
257
257
  map: new (Te || N)(),
258
258
  string: new E()
259
259
  };
260
260
  }
261
- function ve(t) {
261
+ function je(t) {
262
262
  var e = typeof t;
263
263
  return e == "string" || e == "number" || e == "symbol" || e == "boolean" ? t !== "__proto__" : t === null;
264
264
  }
265
265
  function Q(t, e) {
266
266
  var r = t.__data__;
267
- return ve(e) ? r[typeof e == "string" ? "string" : "hash"] : r.map;
267
+ return je(e) ? r[typeof e == "string" ? "string" : "hash"] : r.map;
268
268
  }
269
269
  function Oe(t) {
270
270
  var e = Q(this, t).delete(t);
@@ -287,7 +287,7 @@ function F(t) {
287
287
  this.set(i[0], i[1]);
288
288
  }
289
289
  }
290
- F.prototype.clear = je;
290
+ F.prototype.clear = ve;
291
291
  F.prototype.delete = Oe;
292
292
  F.prototype.get = Ae;
293
293
  F.prototype.has = $e;
@@ -374,13 +374,13 @@ k = new WeakSet(), R = async function(e, r) {
374
374
  const a = { speckle_type: e.speckle_type || "Base" };
375
375
  for (const h in e) {
376
376
  const u = e[h];
377
- if (!u || h === "id" || h.startsWith("_"))
377
+ if (u === void 0 || h === "id" || h.startsWith("_"))
378
378
  continue;
379
379
  if (typeof u != "object") {
380
380
  a[h] = u;
381
381
  continue;
382
382
  }
383
- const j = h.startsWith("@"), l = Array.isArray(u), s = l ? h.match(/^@\((\d*)\)/) : !1;
383
+ const v = h.startsWith("@"), l = Array.isArray(u), s = l ? h.match(/^@\((\d*)\)/) : !1;
384
384
  if (l && s && u.length !== 0 && typeof u[0] != "object") {
385
385
  const o = s[1] !== "" ? parseInt(s[1]) : this.chunkSize, c = [];
386
386
  let p = new ft(), w = 0;
@@ -392,25 +392,25 @@ k = new WeakSet(), R = async function(e, r) {
392
392
  if (u.speckle_type) {
393
393
  const o = await d(this, I, M).call(this, {
394
394
  value: u,
395
- isDetached: j
395
+ isDetached: v
396
396
  });
397
- a[h] = j ? d(this, D, X).call(this, o.id) : o;
397
+ a[h] = v ? d(this, D, X).call(this, o.id) : o;
398
398
  continue;
399
399
  }
400
400
  a[h] = await d(this, I, M).call(this, {
401
401
  value: u,
402
- isDetached: j
402
+ isDetached: v
403
403
  });
404
404
  }
405
405
  const n = this.detachLineage.pop(), g = this.lineage.pop();
406
406
  if (this.familyTree[g]) {
407
407
  const h = {};
408
- Object.entries(this.familyTree[g]).forEach(([u, j]) => {
409
- h[u] = j - this.detachLineage.length;
408
+ Object.entries(this.familyTree[g]).forEach(([u, v]) => {
409
+ h[u] = v - this.detachLineage.length;
410
410
  }), a.totalChildrenCount = Object.keys(h).length, a.totalChildrenCount && (a.__closure = h);
411
411
  }
412
- const { hash: f, serializedObject: v, size: z } = d(this, Y, wt).call(this, a);
413
- return a.id = f, (n || r) && this.transport && await this.transport.write(v, z), r && this.transport && await this.transport.flush(), { hash: f, traversed: a };
412
+ const { hash: f, serializedObject: j, size: z } = d(this, Y, wt).call(this, a);
413
+ return a.id = f, (n || r) && this.transport && await this.transport.write(j, z), r && this.transport && await this.transport.flush(), { hash: f, traversed: a };
414
414
  }, I = new WeakSet(), M = async function({
415
415
  value: e,
416
416
  isDetached: r = !1
@@ -530,14 +530,14 @@ const Ve = async (t, {
530
530
  const n = performance.now();
531
531
  a == null || a.log("Starting to send");
532
532
  const g = new Be(e, r, i), f = new Ge(g);
533
- let v;
533
+ let j;
534
534
  try {
535
- v = await f.write(t);
535
+ j = await f.write(t);
536
536
  } finally {
537
537
  g.dispose(), f.dispose();
538
538
  }
539
539
  const z = performance.now();
540
- return a.log(`Finished sending in ${(z - n) / 1e3}s.`), v;
540
+ return a.log(`Finished sending in ${(z - n) / 1e3}s.`), j;
541
541
  };
542
542
  export {
543
543
  Je as Base,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speckle/objectsender",
3
- "version": "1.0.2",
3
+ "version": "2.19.3",
4
4
  "description": "Simple API helper to serialize and send objects to the server.",
5
5
  "type": "module",
6
6
  "main": "dist/objectsender.cjs",
@@ -32,7 +32,7 @@
32
32
  "author": "AEC Systems",
33
33
  "license": "Apache-2.0",
34
34
  "dependencies": {
35
- "@speckle/shared": "^2.19.0",
35
+ "@speckle/shared": "^2.19.3",
36
36
  "lodash": "^4.17.21",
37
37
  "lodash-es": "^4.17.21"
38
38
  },
@@ -68,4 +68,4 @@
68
68
  "import": "lodash-es"
69
69
  }
70
70
  }
71
- }
71
+ }
@@ -53,7 +53,7 @@ export class Serializer implements IDisposable {
53
53
  for (const propKey in obj) {
54
54
  const value = obj[propKey]
55
55
  // 0. skip some props
56
- if (!value || propKey === 'id' || propKey.startsWith('_')) continue
56
+ if (value === undefined || propKey === 'id' || propKey.startsWith('_')) continue
57
57
 
58
58
  // 1. primitives (numbers, bools, strings)
59
59
  if (typeof value !== 'object') {
@@ -1 +0,0 @@
1
- export {};
package/dist/index.d.ts DELETED
@@ -1,23 +0,0 @@
1
- import { Base } from './utils/Base';
2
-
3
- export { Base };
4
- export type SendParams = {
5
- serverUrl?: string;
6
- projectId: string;
7
- token: string;
8
- logger?: {
9
- log: (message: unknown) => void;
10
- error: (message: unknown) => void;
11
- };
12
- };
13
- export type SendResult = {
14
- hash: string;
15
- traversed: Record<string, unknown>;
16
- };
17
- /**
18
- * Decomposes, serializes and sends to a speckle server a given object. Note, for objects to be detached, they need to have a 'speckle_type' property.
19
- * @param object object to decompose, serialise and send to speckle
20
- * @param parameters: server url, project id and token
21
- * @returns the hash of the root object and the value of the root object
22
- */
23
- export declare const send: (object: Base, { serverUrl, projectId, token, logger }: SendParams) => Promise<SendResult>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectsender.cjs","sources":["../src/utils/Sha1.ts","../../../node_modules/lodash-es/_freeGlobal.js","../../../node_modules/lodash-es/_root.js","../../../node_modules/lodash-es/_Symbol.js","../../../node_modules/lodash-es/_getRawTag.js","../../../node_modules/lodash-es/_objectToString.js","../../../node_modules/lodash-es/_baseGetTag.js","../../../node_modules/lodash-es/isObjectLike.js","../../../node_modules/lodash-es/isSymbol.js","../../../node_modules/lodash-es/_arrayMap.js","../../../node_modules/lodash-es/isArray.js","../../../node_modules/lodash-es/_baseToString.js","../../../node_modules/lodash-es/isObject.js","../../../node_modules/lodash-es/isFunction.js","../../../node_modules/lodash-es/_coreJsData.js","../../../node_modules/lodash-es/_isMasked.js","../../../node_modules/lodash-es/_toSource.js","../../../node_modules/lodash-es/_baseIsNative.js","../../../node_modules/lodash-es/_getValue.js","../../../node_modules/lodash-es/_getNative.js","../../../node_modules/lodash-es/eq.js","../../../node_modules/lodash-es/_isKey.js","../../../node_modules/lodash-es/_nativeCreate.js","../../../node_modules/lodash-es/_hashClear.js","../../../node_modules/lodash-es/_hashDelete.js","../../../node_modules/lodash-es/_hashGet.js","../../../node_modules/lodash-es/_hashHas.js","../../../node_modules/lodash-es/_hashSet.js","../../../node_modules/lodash-es/_Hash.js","../../../node_modules/lodash-es/_listCacheClear.js","../../../node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/lodash-es/_listCacheGet.js","../../../node_modules/lodash-es/_listCacheHas.js","../../../node_modules/lodash-es/_listCacheSet.js","../../../node_modules/lodash-es/_ListCache.js","../../../node_modules/lodash-es/_Map.js","../../../node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/lodash-es/_isKeyable.js","../../../node_modules/lodash-es/_getMapData.js","../../../node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/lodash-es/_MapCache.js","../../../node_modules/lodash-es/memoize.js","../../../node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/lodash-es/_stringToPath.js","../../../node_modules/lodash-es/toString.js","../../../node_modules/lodash-es/_castPath.js","../../../node_modules/lodash-es/_toKey.js","../../../node_modules/lodash-es/_baseGet.js","../../../node_modules/lodash-es/get.js","../src/utils/Serializer.ts","../src/transports/ServerTransport.ts","../src/utils/Base.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/**\n * Basic hashing function, to avoid dependencies and crazy build processes\n * @param msg\n * @returns\n */\nexport function SHA1(msg: string) {\n function rotate_left(n: number, s: number) {\n const t4 = (n << s) | (n >>> (32 - s))\n return t4\n }\n function cvt_hex(val: number) {\n let str = ''\n let i\n let v\n for (i = 7; i >= 0; i--) {\n v = (val >>> (i * 4)) & 0x0f\n str += v.toString(16)\n }\n return str\n }\n function Utf8Encode(string: string) {\n string = string.replace(/\\r\\n/g, '\\n')\n let utftext = ''\n for (let n = 0; n < string.length; n++) {\n const c = string.charCodeAt(n)\n if (c < 128) {\n utftext += String.fromCharCode(c)\n } else if (c > 127 && c < 2048) {\n utftext += String.fromCharCode((c >> 6) | 192)\n utftext += String.fromCharCode((c & 63) | 128)\n } else {\n utftext += String.fromCharCode((c >> 12) | 224)\n utftext += String.fromCharCode(((c >> 6) & 63) | 128)\n utftext += String.fromCharCode((c & 63) | 128)\n }\n }\n return utftext\n }\n let blockstart\n let i, j\n const W = new Array(80)\n let H0 = 0x67452301\n let H1 = 0xefcdab89\n let H2 = 0x98badcfe\n let H3 = 0x10325476\n let H4 = 0xc3d2e1f0\n let A, B, C, D, E\n let temp\n msg = Utf8Encode(msg)\n const msg_len = msg.length\n const word_array = [] as unknown[]\n for (i = 0; i < msg_len - 3; i += 4) {\n j =\n (msg.charCodeAt(i) << 24) |\n (msg.charCodeAt(i + 1) << 16) |\n (msg.charCodeAt(i + 2) << 8) |\n msg.charCodeAt(i + 3)\n word_array.push(j)\n }\n switch (msg_len % 4) {\n case 0:\n i = 0x080000000\n break\n case 1:\n i = (msg.charCodeAt(msg_len - 1) << 24) | 0x0800000\n break\n case 2:\n i =\n (msg.charCodeAt(msg_len - 2) << 24) |\n (msg.charCodeAt(msg_len - 1) << 16) |\n 0x08000\n break\n case 3:\n i =\n (msg.charCodeAt(msg_len - 3) << 24) |\n (msg.charCodeAt(msg_len - 2) << 16) |\n (msg.charCodeAt(msg_len - 1) << 8) |\n 0x80\n break\n }\n word_array.push(i)\n while (word_array.length % 16 !== 14) word_array.push(0)\n word_array.push(msg_len >>> 29)\n word_array.push((msg_len << 3) & 0x0ffffffff)\n for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {\n for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i]\n for (i = 16; i <= 79; i++)\n W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1)\n A = H0\n B = H1\n C = H2\n D = H3\n E = H4\n for (i = 0; i <= 19; i++) {\n temp =\n (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5a827999) & 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n for (i = 20; i <= 39; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ed9eba1) & 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n for (i = 40; i <= 59; i++) {\n temp =\n (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8f1bbcdc) &\n 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n for (i = 60; i <= 79; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xca62c1d6) & 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n H0 = (H0 + A) & 0x0ffffffff\n H1 = (H1 + B) & 0x0ffffffff\n H2 = (H2 + C) & 0x0ffffffff\n H3 = (H3 + D) & 0x0ffffffff\n H4 = (H4 + E) & 0x0ffffffff\n }\n const h = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4)\n return h.toLowerCase().substring(0, 40)\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/* eslint-disable camelcase */\nimport { SHA1 } from './Sha1'\nimport { ITransport } from '../transports/ITransport'\nimport { Base } from './Base'\nimport { IDisposable } from './IDisposable'\nimport { isObjectLike, get } from '#lodash'\n\ntype BasicSpeckleObject = Record<string, unknown> & {\n speckle_type: string\n}\n\nconst isSpeckleObject = (obj: unknown): obj is BasicSpeckleObject =>\n isObjectLike(obj) && !!get(obj, 'speckle_type')\n\nexport class Serializer implements IDisposable {\n chunkSize: number\n detachLineage: boolean[]\n lineage: string[]\n familyTree: Record<string, Record<string, number>>\n closureTable: Record<string, unknown>\n transport: ITransport | null\n uniqueId: number\n hashingFunction: (s: string) => string\n\n constructor(\n transport: ITransport,\n chunkSize: number = 1000,\n hashingFunction: (s: string) => string = SHA1\n ) {\n this.chunkSize = chunkSize\n this.detachLineage = [true] // first ever call is always detached\n this.lineage = []\n this.familyTree = {}\n this.closureTable = {}\n this.transport = transport\n this.uniqueId = 0\n this.hashingFunction = hashingFunction || SHA1\n }\n\n async write(obj: Base) {\n return await this.#traverse(obj, true)\n }\n\n async #traverse(obj: Record<string, unknown>, root: boolean) {\n const temporaryId = `${this.uniqueId++}-obj`\n this.lineage.push(temporaryId)\n\n const traversed = { speckle_type: obj.speckle_type || 'Base' } as Record<\n string,\n unknown\n >\n\n for (const propKey in obj) {\n const value = obj[propKey]\n // 0. skip some props\n if (!value || propKey === 'id' || propKey.startsWith('_')) continue\n\n // 1. primitives (numbers, bools, strings)\n if (typeof value !== 'object') {\n traversed[propKey] = value\n continue\n }\n\n const isDetachedProp = propKey.startsWith('@')\n\n // 2. chunked arrays\n const isArray = Array.isArray(value)\n const isChunked = isArray ? propKey.match(/^@\\((\\d*)\\)/) : false // chunk syntax\n if (isArray && isChunked && value.length !== 0 && typeof value[0] !== 'object') {\n const chunkSize = isChunked[1] !== '' ? parseInt(isChunked[1]) : this.chunkSize\n const chunkRefs = []\n\n let chunk = new DataChunk()\n let count = 0\n for (const el of value) {\n if (count === chunkSize) {\n chunkRefs.push(await this.#handleChunk(chunk))\n chunk = new DataChunk()\n count = 0\n }\n chunk.data.push(el)\n count++\n }\n\n if (chunk.data.length !== 0) chunkRefs.push(await this.#handleChunk(chunk))\n traversed[propKey.replace(isChunked[0], '')] = chunkRefs // strip chunk syntax\n continue\n }\n\n // 3. speckle objects\n if ((value as Record<string, unknown>).speckle_type) {\n const child = (await this.#traverseValue({\n value,\n isDetached: isDetachedProp\n })) as {\n id: string\n }\n traversed[propKey] = isDetachedProp ? this.#detachHelper(child.id) : child\n continue\n }\n\n // 4. other objects (dicts/maps, lists)\n traversed[propKey] = await this.#traverseValue({\n value,\n isDetached: isDetachedProp\n })\n }\n // We've finished going through all the properties of this object, now let's perform the last rites\n const detached = this.detachLineage.pop()\n const parent = this.lineage.pop() as string\n\n if (this.familyTree[parent]) {\n const closure = {} as Record<string, number>\n\n Object.entries(this.familyTree[parent]).forEach(([ref, depth]) => {\n closure[ref] = depth - this.detachLineage.length\n })\n\n traversed['totalChildrenCount'] = Object.keys(closure).length\n\n if (traversed['totalChildrenCount']) {\n traversed['__closure'] = closure\n }\n }\n\n const { hash, serializedObject, size } = this.#generateId(traversed)\n traversed.id = hash\n\n // Pop it in\n if ((detached || root) && this.transport) {\n await this.transport.write(serializedObject, size)\n }\n\n // We've reached the end, let's flush\n if (root && this.transport) {\n await this.transport.flush()\n }\n\n return { hash, traversed }\n }\n\n async #traverseValue({\n value,\n isDetached = false\n }: {\n value: unknown\n isDetached?: boolean\n }): Promise<unknown> {\n // 1. primitives\n if (typeof value !== 'object') return value\n\n // 2. arrays\n if (Array.isArray(value)) {\n const arr = value as unknown[]\n // 2.1 empty arrays\n if (arr.length === 0) return value as unknown\n\n // 2.2 primitive arrays\n if (typeof arr[0] !== 'object') return arr\n\n // 2.3. non-primitive non-detached arrays\n if (!isDetached) {\n return Promise.all(\n value.map(async (el) => await this.#traverseValue({ value: el }))\n )\n }\n\n // 2.4 non-primitive detached arrays\n const detachedList = [] as unknown[]\n for (const el of value) {\n if (isSpeckleObject(el)) {\n this.detachLineage.push(isDetached)\n const { hash } = await this.#traverse(el, false)\n detachedList.push(this.#detachHelper(hash))\n } else {\n detachedList.push(await this.#traverseValue({ value: el, isDetached }))\n }\n }\n return detachedList\n }\n\n // 3. dicts\n if (!(value as { speckle_type?: string }).speckle_type) return value\n\n // 4. base objects\n if ((value as { speckle_type?: string }).speckle_type) {\n this.detachLineage.push(isDetached)\n const res = await this.#traverse(value as Record<string, unknown>, false)\n return res.traversed\n }\n\n throw new Error(`Unsupported type '${typeof value}': ${value}.`)\n }\n\n #detachHelper(refHash: string) {\n this.lineage.forEach((parent) => {\n if (!this.familyTree[parent]) this.familyTree[parent] = {}\n\n if (\n !this.familyTree[parent][refHash] ||\n this.familyTree[parent][refHash] > this.detachLineage.length\n ) {\n this.familyTree[parent][refHash] = this.detachLineage.length\n }\n })\n return {\n referencedId: refHash,\n speckle_type: 'reference'\n }\n }\n\n async #handleChunk(chunk: DataChunk) {\n this.detachLineage.push(true)\n const { hash } = await this.#traverse(\n chunk as unknown as Record<string, unknown>,\n false\n )\n return this.#detachHelper(hash)\n }\n\n #generateId(obj: Record<string, unknown>) {\n const s = JSON.stringify(obj)\n const h = this.hashingFunction(s)\n const f = s.substring(0, 1) + `\"id\":\"${h}\",` + s.substring(1)\n return {\n hash: SHA1(s),\n serializedObject: f,\n size: s.length // approx, good enough as we're just limiting artificially batch sizes based on this\n }\n }\n\n dispose() {\n this.detachLineage = []\n this.lineage = []\n this.familyTree = {}\n this.closureTable = {}\n this.transport = null\n }\n}\n\nclass DataChunk {\n speckle_type: 'Speckle.Core.Models.DataChunk'\n data: unknown[]\n constructor() {\n this.data = []\n this.speckle_type = 'Speckle.Core.Models.DataChunk'\n }\n}\n","import { ITransport } from './ITransport'\nimport { IDisposable } from '../utils/IDisposable'\nimport { retry, timeoutAt } from '@speckle/shared'\n\n/**\n * Basic object sender to a speckle server\n */\nexport class ServerTransport implements ITransport, IDisposable {\n #buffer: string[]\n #maxSize: number\n #currSize: number\n #serverUrl: string\n #projectId: string\n #authToken: string\n #flushRetryCount: number\n #flushTimeout: number\n\n constructor(\n serverUrl: string,\n projectId: string,\n authToken: string,\n options?: Partial<{\n maxSize: number\n flushRetryCount: number\n flushTimeout: number\n }>\n ) {\n this.#maxSize = options?.maxSize || 200_000\n this.#flushRetryCount = options?.flushRetryCount || 3\n this.#flushTimeout = options?.flushTimeout || 2 * 60 * 1000\n\n this.#currSize = 0\n this.#serverUrl = serverUrl\n this.#projectId = projectId\n this.#authToken = authToken\n this.#buffer = []\n }\n\n async write(serialisedObject: string, size: number) {\n this.#buffer.push(serialisedObject)\n this.#currSize += size\n if (this.#currSize < this.#maxSize) return // return fast\n await this.flush() // block until we send objects\n }\n\n async flush() {\n if (this.#buffer.length === 0) return\n\n const formData = new FormData()\n const concat = '[' + this.#buffer.join(',') + ']'\n formData.append('object-batch', new Blob([concat], { type: 'application/json' }))\n const url = new URL(`/objects/${this.#projectId}`, this.#serverUrl)\n const res = await retry(\n async () =>\n await Promise.race([\n fetch(url, {\n method: 'POST',\n headers: { Authorization: `Bearer ${this.#authToken}` },\n body: formData\n }),\n timeoutAt(this.#flushTimeout, 'Object sender flush timed out')\n ]),\n this.#flushRetryCount,\n (i) => {\n return i * 1000\n }\n )\n\n if (res.status !== 201) {\n throw new Error(\n `Unexpected error when sending data. Expected status 200, got ${res.status}`\n )\n }\n\n this.#buffer = []\n this.#currSize = 0\n }\n\n dispose() {\n this.#buffer = []\n }\n}\n","/* eslint-disable camelcase */\n/**\n * Basic 'Base'-like object from .NET. It will create a 'speckle_type' prop that defaults to the class' name. This can be overriden by providing yourself a 'speckle_type' property in the props argument of the constructor.\n */\nexport class Base implements Record<string, unknown> {\n speckle_type: string\n constructor(props?: Record<string, unknown>) {\n this.speckle_type = this.constructor.name\n\n if (props) {\n for (const key in props) this[key] = props[key]\n }\n }\n [x: string]: unknown\n}\n","import { Serializer } from './utils/Serializer'\nimport { ServerTransport } from './transports/ServerTransport'\nimport { Base } from './utils/Base'\nexport { Base }\n\nexport type SendParams = {\n serverUrl?: string\n projectId: string\n token: string\n logger?: {\n log: (message: unknown) => void\n error: (message: unknown) => void\n }\n}\n\nexport type SendResult = {\n hash: string\n traversed: Record<string, unknown>\n}\n\n/**\n * Decomposes, serializes and sends to a speckle server a given object. Note, for objects to be detached, they need to have a 'speckle_type' property.\n * @param object object to decompose, serialise and send to speckle\n * @param parameters: server url, project id and token\n * @returns the hash of the root object and the value of the root object\n */\nexport const send = async (\n object: Base,\n {\n serverUrl = 'https://app.speckle.systems',\n projectId,\n token,\n logger = console\n }: SendParams\n) => {\n const t0 = performance.now()\n logger?.log('Starting to send')\n const transport = new ServerTransport(serverUrl, projectId, token)\n const serializer = new Serializer(transport)\n\n let result: SendResult\n try {\n result = await serializer.write(object)\n } finally {\n transport.dispose()\n serializer.dispose()\n }\n const t1 = performance.now()\n logger.log(`Finished sending in ${(t1 - t0) / 1000}s.`)\n return result\n}\n"],"names":["SHA1","msg","rotate_left","n","s","cvt_hex","val","str","i","v","Utf8Encode","string","utftext","c","blockstart","j","W","H0","H1","H2","H3","H4","A","B","C","D","E","temp","msg_len","word_array","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","index","length","isArray","INFINITY","symbolProto","symbolToString","baseToString","isObject","type","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","object","key","getNative","eq","other","reIsDeepProp","reIsPlainProp","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entries","entry","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","size","MapCache","FUNC_ERROR_TEXT","memoize","resolver","memoized","args","cache","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","match","number","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","isSpeckleObject","obj","Serializer","transport","chunkSize","hashingFunction","__privateAdd","_traverse","_traverseValue","_detachHelper","_handleChunk","_generateId","__publicField","__privateMethod","traverse_fn","temporaryId","traversed","propKey","isDetachedProp","isChunked","chunkRefs","chunk","DataChunk","count","el","handleChunk_fn","child","traverseValue_fn","detachHelper_fn","detached","parent","closure","ref","depth","hash","serializedObject","generateId_fn","isDetached","arr","detachedList","refHash","h","f","ServerTransport","serverUrl","projectId","authToken","options","_buffer","_maxSize","_currSize","_serverUrl","_projectId","_authToken","_flushRetryCount","_flushTimeout","__privateSet","serialisedObject","__privateGet","formData","concat","url","res","retry","timeoutAt","Base","props","send","token","logger","t0","serializer","t1"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectsender.js","sources":["../src/utils/Sha1.ts","../../../node_modules/lodash-es/_freeGlobal.js","../../../node_modules/lodash-es/_root.js","../../../node_modules/lodash-es/_Symbol.js","../../../node_modules/lodash-es/_getRawTag.js","../../../node_modules/lodash-es/_objectToString.js","../../../node_modules/lodash-es/_baseGetTag.js","../../../node_modules/lodash-es/isObjectLike.js","../../../node_modules/lodash-es/isSymbol.js","../../../node_modules/lodash-es/_arrayMap.js","../../../node_modules/lodash-es/isArray.js","../../../node_modules/lodash-es/_baseToString.js","../../../node_modules/lodash-es/isObject.js","../../../node_modules/lodash-es/isFunction.js","../../../node_modules/lodash-es/_coreJsData.js","../../../node_modules/lodash-es/_isMasked.js","../../../node_modules/lodash-es/_toSource.js","../../../node_modules/lodash-es/_baseIsNative.js","../../../node_modules/lodash-es/_getValue.js","../../../node_modules/lodash-es/_getNative.js","../../../node_modules/lodash-es/eq.js","../../../node_modules/lodash-es/_isKey.js","../../../node_modules/lodash-es/_nativeCreate.js","../../../node_modules/lodash-es/_hashClear.js","../../../node_modules/lodash-es/_hashDelete.js","../../../node_modules/lodash-es/_hashGet.js","../../../node_modules/lodash-es/_hashHas.js","../../../node_modules/lodash-es/_hashSet.js","../../../node_modules/lodash-es/_Hash.js","../../../node_modules/lodash-es/_listCacheClear.js","../../../node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/lodash-es/_listCacheGet.js","../../../node_modules/lodash-es/_listCacheHas.js","../../../node_modules/lodash-es/_listCacheSet.js","../../../node_modules/lodash-es/_ListCache.js","../../../node_modules/lodash-es/_Map.js","../../../node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/lodash-es/_isKeyable.js","../../../node_modules/lodash-es/_getMapData.js","../../../node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/lodash-es/_MapCache.js","../../../node_modules/lodash-es/memoize.js","../../../node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/lodash-es/_stringToPath.js","../../../node_modules/lodash-es/toString.js","../../../node_modules/lodash-es/_castPath.js","../../../node_modules/lodash-es/_toKey.js","../../../node_modules/lodash-es/_baseGet.js","../../../node_modules/lodash-es/get.js","../src/utils/Serializer.ts","../src/transports/ServerTransport.ts","../src/utils/Base.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/**\n * Basic hashing function, to avoid dependencies and crazy build processes\n * @param msg\n * @returns\n */\nexport function SHA1(msg: string) {\n function rotate_left(n: number, s: number) {\n const t4 = (n << s) | (n >>> (32 - s))\n return t4\n }\n function cvt_hex(val: number) {\n let str = ''\n let i\n let v\n for (i = 7; i >= 0; i--) {\n v = (val >>> (i * 4)) & 0x0f\n str += v.toString(16)\n }\n return str\n }\n function Utf8Encode(string: string) {\n string = string.replace(/\\r\\n/g, '\\n')\n let utftext = ''\n for (let n = 0; n < string.length; n++) {\n const c = string.charCodeAt(n)\n if (c < 128) {\n utftext += String.fromCharCode(c)\n } else if (c > 127 && c < 2048) {\n utftext += String.fromCharCode((c >> 6) | 192)\n utftext += String.fromCharCode((c & 63) | 128)\n } else {\n utftext += String.fromCharCode((c >> 12) | 224)\n utftext += String.fromCharCode(((c >> 6) & 63) | 128)\n utftext += String.fromCharCode((c & 63) | 128)\n }\n }\n return utftext\n }\n let blockstart\n let i, j\n const W = new Array(80)\n let H0 = 0x67452301\n let H1 = 0xefcdab89\n let H2 = 0x98badcfe\n let H3 = 0x10325476\n let H4 = 0xc3d2e1f0\n let A, B, C, D, E\n let temp\n msg = Utf8Encode(msg)\n const msg_len = msg.length\n const word_array = [] as unknown[]\n for (i = 0; i < msg_len - 3; i += 4) {\n j =\n (msg.charCodeAt(i) << 24) |\n (msg.charCodeAt(i + 1) << 16) |\n (msg.charCodeAt(i + 2) << 8) |\n msg.charCodeAt(i + 3)\n word_array.push(j)\n }\n switch (msg_len % 4) {\n case 0:\n i = 0x080000000\n break\n case 1:\n i = (msg.charCodeAt(msg_len - 1) << 24) | 0x0800000\n break\n case 2:\n i =\n (msg.charCodeAt(msg_len - 2) << 24) |\n (msg.charCodeAt(msg_len - 1) << 16) |\n 0x08000\n break\n case 3:\n i =\n (msg.charCodeAt(msg_len - 3) << 24) |\n (msg.charCodeAt(msg_len - 2) << 16) |\n (msg.charCodeAt(msg_len - 1) << 8) |\n 0x80\n break\n }\n word_array.push(i)\n while (word_array.length % 16 !== 14) word_array.push(0)\n word_array.push(msg_len >>> 29)\n word_array.push((msg_len << 3) & 0x0ffffffff)\n for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {\n for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i]\n for (i = 16; i <= 79; i++)\n W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1)\n A = H0\n B = H1\n C = H2\n D = H3\n E = H4\n for (i = 0; i <= 19; i++) {\n temp =\n (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5a827999) & 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n for (i = 20; i <= 39; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ed9eba1) & 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n for (i = 40; i <= 59; i++) {\n temp =\n (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8f1bbcdc) &\n 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n for (i = 60; i <= 79; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xca62c1d6) & 0x0ffffffff\n E = D\n D = C\n C = rotate_left(B, 30)\n B = A\n A = temp\n }\n H0 = (H0 + A) & 0x0ffffffff\n H1 = (H1 + B) & 0x0ffffffff\n H2 = (H2 + C) & 0x0ffffffff\n H3 = (H3 + D) & 0x0ffffffff\n H4 = (H4 + E) & 0x0ffffffff\n }\n const h = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4)\n return h.toLowerCase().substring(0, 40)\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/* eslint-disable camelcase */\nimport { SHA1 } from './Sha1'\nimport { ITransport } from '../transports/ITransport'\nimport { Base } from './Base'\nimport { IDisposable } from './IDisposable'\nimport { isObjectLike, get } from '#lodash'\n\ntype BasicSpeckleObject = Record<string, unknown> & {\n speckle_type: string\n}\n\nconst isSpeckleObject = (obj: unknown): obj is BasicSpeckleObject =>\n isObjectLike(obj) && !!get(obj, 'speckle_type')\n\nexport class Serializer implements IDisposable {\n chunkSize: number\n detachLineage: boolean[]\n lineage: string[]\n familyTree: Record<string, Record<string, number>>\n closureTable: Record<string, unknown>\n transport: ITransport | null\n uniqueId: number\n hashingFunction: (s: string) => string\n\n constructor(\n transport: ITransport,\n chunkSize: number = 1000,\n hashingFunction: (s: string) => string = SHA1\n ) {\n this.chunkSize = chunkSize\n this.detachLineage = [true] // first ever call is always detached\n this.lineage = []\n this.familyTree = {}\n this.closureTable = {}\n this.transport = transport\n this.uniqueId = 0\n this.hashingFunction = hashingFunction || SHA1\n }\n\n async write(obj: Base) {\n return await this.#traverse(obj, true)\n }\n\n async #traverse(obj: Record<string, unknown>, root: boolean) {\n const temporaryId = `${this.uniqueId++}-obj`\n this.lineage.push(temporaryId)\n\n const traversed = { speckle_type: obj.speckle_type || 'Base' } as Record<\n string,\n unknown\n >\n\n for (const propKey in obj) {\n const value = obj[propKey]\n // 0. skip some props\n if (!value || propKey === 'id' || propKey.startsWith('_')) continue\n\n // 1. primitives (numbers, bools, strings)\n if (typeof value !== 'object') {\n traversed[propKey] = value\n continue\n }\n\n const isDetachedProp = propKey.startsWith('@')\n\n // 2. chunked arrays\n const isArray = Array.isArray(value)\n const isChunked = isArray ? propKey.match(/^@\\((\\d*)\\)/) : false // chunk syntax\n if (isArray && isChunked && value.length !== 0 && typeof value[0] !== 'object') {\n const chunkSize = isChunked[1] !== '' ? parseInt(isChunked[1]) : this.chunkSize\n const chunkRefs = []\n\n let chunk = new DataChunk()\n let count = 0\n for (const el of value) {\n if (count === chunkSize) {\n chunkRefs.push(await this.#handleChunk(chunk))\n chunk = new DataChunk()\n count = 0\n }\n chunk.data.push(el)\n count++\n }\n\n if (chunk.data.length !== 0) chunkRefs.push(await this.#handleChunk(chunk))\n traversed[propKey.replace(isChunked[0], '')] = chunkRefs // strip chunk syntax\n continue\n }\n\n // 3. speckle objects\n if ((value as Record<string, unknown>).speckle_type) {\n const child = (await this.#traverseValue({\n value,\n isDetached: isDetachedProp\n })) as {\n id: string\n }\n traversed[propKey] = isDetachedProp ? this.#detachHelper(child.id) : child\n continue\n }\n\n // 4. other objects (dicts/maps, lists)\n traversed[propKey] = await this.#traverseValue({\n value,\n isDetached: isDetachedProp\n })\n }\n // We've finished going through all the properties of this object, now let's perform the last rites\n const detached = this.detachLineage.pop()\n const parent = this.lineage.pop() as string\n\n if (this.familyTree[parent]) {\n const closure = {} as Record<string, number>\n\n Object.entries(this.familyTree[parent]).forEach(([ref, depth]) => {\n closure[ref] = depth - this.detachLineage.length\n })\n\n traversed['totalChildrenCount'] = Object.keys(closure).length\n\n if (traversed['totalChildrenCount']) {\n traversed['__closure'] = closure\n }\n }\n\n const { hash, serializedObject, size } = this.#generateId(traversed)\n traversed.id = hash\n\n // Pop it in\n if ((detached || root) && this.transport) {\n await this.transport.write(serializedObject, size)\n }\n\n // We've reached the end, let's flush\n if (root && this.transport) {\n await this.transport.flush()\n }\n\n return { hash, traversed }\n }\n\n async #traverseValue({\n value,\n isDetached = false\n }: {\n value: unknown\n isDetached?: boolean\n }): Promise<unknown> {\n // 1. primitives\n if (typeof value !== 'object') return value\n\n // 2. arrays\n if (Array.isArray(value)) {\n const arr = value as unknown[]\n // 2.1 empty arrays\n if (arr.length === 0) return value as unknown\n\n // 2.2 primitive arrays\n if (typeof arr[0] !== 'object') return arr\n\n // 2.3. non-primitive non-detached arrays\n if (!isDetached) {\n return Promise.all(\n value.map(async (el) => await this.#traverseValue({ value: el }))\n )\n }\n\n // 2.4 non-primitive detached arrays\n const detachedList = [] as unknown[]\n for (const el of value) {\n if (isSpeckleObject(el)) {\n this.detachLineage.push(isDetached)\n const { hash } = await this.#traverse(el, false)\n detachedList.push(this.#detachHelper(hash))\n } else {\n detachedList.push(await this.#traverseValue({ value: el, isDetached }))\n }\n }\n return detachedList\n }\n\n // 3. dicts\n if (!(value as { speckle_type?: string }).speckle_type) return value\n\n // 4. base objects\n if ((value as { speckle_type?: string }).speckle_type) {\n this.detachLineage.push(isDetached)\n const res = await this.#traverse(value as Record<string, unknown>, false)\n return res.traversed\n }\n\n throw new Error(`Unsupported type '${typeof value}': ${value}.`)\n }\n\n #detachHelper(refHash: string) {\n this.lineage.forEach((parent) => {\n if (!this.familyTree[parent]) this.familyTree[parent] = {}\n\n if (\n !this.familyTree[parent][refHash] ||\n this.familyTree[parent][refHash] > this.detachLineage.length\n ) {\n this.familyTree[parent][refHash] = this.detachLineage.length\n }\n })\n return {\n referencedId: refHash,\n speckle_type: 'reference'\n }\n }\n\n async #handleChunk(chunk: DataChunk) {\n this.detachLineage.push(true)\n const { hash } = await this.#traverse(\n chunk as unknown as Record<string, unknown>,\n false\n )\n return this.#detachHelper(hash)\n }\n\n #generateId(obj: Record<string, unknown>) {\n const s = JSON.stringify(obj)\n const h = this.hashingFunction(s)\n const f = s.substring(0, 1) + `\"id\":\"${h}\",` + s.substring(1)\n return {\n hash: SHA1(s),\n serializedObject: f,\n size: s.length // approx, good enough as we're just limiting artificially batch sizes based on this\n }\n }\n\n dispose() {\n this.detachLineage = []\n this.lineage = []\n this.familyTree = {}\n this.closureTable = {}\n this.transport = null\n }\n}\n\nclass DataChunk {\n speckle_type: 'Speckle.Core.Models.DataChunk'\n data: unknown[]\n constructor() {\n this.data = []\n this.speckle_type = 'Speckle.Core.Models.DataChunk'\n }\n}\n","import { ITransport } from './ITransport'\nimport { IDisposable } from '../utils/IDisposable'\nimport { retry, timeoutAt } from '@speckle/shared'\n\n/**\n * Basic object sender to a speckle server\n */\nexport class ServerTransport implements ITransport, IDisposable {\n #buffer: string[]\n #maxSize: number\n #currSize: number\n #serverUrl: string\n #projectId: string\n #authToken: string\n #flushRetryCount: number\n #flushTimeout: number\n\n constructor(\n serverUrl: string,\n projectId: string,\n authToken: string,\n options?: Partial<{\n maxSize: number\n flushRetryCount: number\n flushTimeout: number\n }>\n ) {\n this.#maxSize = options?.maxSize || 200_000\n this.#flushRetryCount = options?.flushRetryCount || 3\n this.#flushTimeout = options?.flushTimeout || 2 * 60 * 1000\n\n this.#currSize = 0\n this.#serverUrl = serverUrl\n this.#projectId = projectId\n this.#authToken = authToken\n this.#buffer = []\n }\n\n async write(serialisedObject: string, size: number) {\n this.#buffer.push(serialisedObject)\n this.#currSize += size\n if (this.#currSize < this.#maxSize) return // return fast\n await this.flush() // block until we send objects\n }\n\n async flush() {\n if (this.#buffer.length === 0) return\n\n const formData = new FormData()\n const concat = '[' + this.#buffer.join(',') + ']'\n formData.append('object-batch', new Blob([concat], { type: 'application/json' }))\n const url = new URL(`/objects/${this.#projectId}`, this.#serverUrl)\n const res = await retry(\n async () =>\n await Promise.race([\n fetch(url, {\n method: 'POST',\n headers: { Authorization: `Bearer ${this.#authToken}` },\n body: formData\n }),\n timeoutAt(this.#flushTimeout, 'Object sender flush timed out')\n ]),\n this.#flushRetryCount,\n (i) => {\n return i * 1000\n }\n )\n\n if (res.status !== 201) {\n throw new Error(\n `Unexpected error when sending data. Expected status 200, got ${res.status}`\n )\n }\n\n this.#buffer = []\n this.#currSize = 0\n }\n\n dispose() {\n this.#buffer = []\n }\n}\n","/* eslint-disable camelcase */\n/**\n * Basic 'Base'-like object from .NET. It will create a 'speckle_type' prop that defaults to the class' name. This can be overriden by providing yourself a 'speckle_type' property in the props argument of the constructor.\n */\nexport class Base implements Record<string, unknown> {\n speckle_type: string\n constructor(props?: Record<string, unknown>) {\n this.speckle_type = this.constructor.name\n\n if (props) {\n for (const key in props) this[key] = props[key]\n }\n }\n [x: string]: unknown\n}\n","import { Serializer } from './utils/Serializer'\nimport { ServerTransport } from './transports/ServerTransport'\nimport { Base } from './utils/Base'\nexport { Base }\n\nexport type SendParams = {\n serverUrl?: string\n projectId: string\n token: string\n logger?: {\n log: (message: unknown) => void\n error: (message: unknown) => void\n }\n}\n\nexport type SendResult = {\n hash: string\n traversed: Record<string, unknown>\n}\n\n/**\n * Decomposes, serializes and sends to a speckle server a given object. Note, for objects to be detached, they need to have a 'speckle_type' property.\n * @param object object to decompose, serialise and send to speckle\n * @param parameters: server url, project id and token\n * @returns the hash of the root object and the value of the root object\n */\nexport const send = async (\n object: Base,\n {\n serverUrl = 'https://app.speckle.systems',\n projectId,\n token,\n logger = console\n }: SendParams\n) => {\n const t0 = performance.now()\n logger?.log('Starting to send')\n const transport = new ServerTransport(serverUrl, projectId, token)\n const serializer = new Serializer(transport)\n\n let result: SendResult\n try {\n result = await serializer.write(object)\n } finally {\n transport.dispose()\n serializer.dispose()\n }\n const t1 = performance.now()\n logger.log(`Finished sending in ${(t1 - t0) / 1000}s.`)\n return result\n}\n"],"names":["SHA1","msg","rotate_left","n","s","cvt_hex","val","str","i","v","Utf8Encode","string","utftext","c","blockstart","j","W","H0","H1","H2","H3","H4","A","B","C","D","E","temp","msg_len","word_array","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","index","length","isArray","INFINITY","symbolProto","symbolToString","baseToString","isObject","type","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","object","key","getNative","eq","other","reIsDeepProp","reIsPlainProp","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entries","entry","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","size","MapCache","FUNC_ERROR_TEXT","memoize","resolver","memoized","args","cache","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","match","number","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","isSpeckleObject","obj","Serializer","transport","chunkSize","hashingFunction","__privateAdd","_traverse","_traverseValue","_detachHelper","_handleChunk","_generateId","__publicField","__privateMethod","traverse_fn","temporaryId","traversed","propKey","isDetachedProp","isChunked","chunkRefs","chunk","DataChunk","count","el","handleChunk_fn","child","traverseValue_fn","detachHelper_fn","detached","parent","closure","ref","depth","hash","serializedObject","generateId_fn","isDetached","arr","detachedList","refHash","h","f","ServerTransport","serverUrl","projectId","authToken","options","_buffer","_maxSize","_currSize","_serverUrl","_projectId","_authToken","_flushRetryCount","_flushTimeout","__privateSet","serialisedObject","__privateGet","formData","concat","url","res","retry","timeoutAt","Base","props","send","token","logger","t0","serializer","t1"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}
@@ -1,12 +0,0 @@
1
- export interface ITransport {
2
- /**
3
- * Instructs the transport to write this object to its storage layer.
4
- * @param serialisedObject
5
- * @param size approximate objects size
6
- */
7
- write(serialisedObject: string, size: number): Promise<void>;
8
- /**
9
- * Flushes the buffer ensuring it is persisted to its storage layer.
10
- */
11
- flush(): Promise<void>;
12
- }
@@ -1,17 +0,0 @@
1
- import { ITransport } from './ITransport';
2
- import { IDisposable } from '../utils/IDisposable';
3
-
4
- /**
5
- * Basic object sender to a speckle server
6
- */
7
- export declare class ServerTransport implements ITransport, IDisposable {
8
- #private;
9
- constructor(serverUrl: string, projectId: string, authToken: string, options?: Partial<{
10
- maxSize: number;
11
- flushRetryCount: number;
12
- flushTimeout: number;
13
- }>);
14
- write(serialisedObject: string, size: number): Promise<void>;
15
- flush(): Promise<void>;
16
- dispose(): void;
17
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Basic 'Base'-like object from .NET. It will create a 'speckle_type' prop that defaults to the class' name. This can be overriden by providing yourself a 'speckle_type' property in the props argument of the constructor.
3
- */
4
- export declare class Base implements Record<string, unknown> {
5
- speckle_type: string;
6
- constructor(props?: Record<string, unknown>);
7
- [x: string]: unknown;
8
- }
@@ -1,3 +0,0 @@
1
- export interface IDisposable {
2
- dispose: () => void;
3
- }
@@ -1,21 +0,0 @@
1
- import { ITransport } from '../transports/ITransport';
2
- import { Base } from './Base';
3
- import { IDisposable } from './IDisposable';
4
-
5
- export declare class Serializer implements IDisposable {
6
- #private;
7
- chunkSize: number;
8
- detachLineage: boolean[];
9
- lineage: string[];
10
- familyTree: Record<string, Record<string, number>>;
11
- closureTable: Record<string, unknown>;
12
- transport: ITransport | null;
13
- uniqueId: number;
14
- hashingFunction: (s: string) => string;
15
- constructor(transport: ITransport, chunkSize?: number, hashingFunction?: (s: string) => string);
16
- write(obj: Base): Promise<{
17
- hash: string;
18
- traversed: Record<string, unknown>;
19
- }>;
20
- dispose(): void;
21
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Basic hashing function, to avoid dependencies and crazy build processes
3
- * @param msg
4
- * @returns
5
- */
6
- export declare function SHA1(msg: string): string;
@@ -1 +0,0 @@
1
- export {};
package/dist/vite.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>