UNPKG

coincident

Version:

An Atomics based Proxy to simplify, and synchronize, Worker related tasks

2 lines (1 loc) 8.41 kB
var e=Promise.withResolvers.bind(Promise);let t=0;const r=t++,n=t++,s=t++,a=t++,c=t++,o=t++,u=t++,l=t++,i=t++,f=t++,g=t++,p=t++,b=t++,h=t++,y=t++,w=t++,d=t++,m=t++,k=new Map(Reflect.ownKeys(Symbol).map((e=>[Symbol[e],`@${String(e)}`]))),S=e=>{switch(e[0]){case"@":return Symbol[e.slice(1)];case"#":return Symbol.for(e.slice(1));case"!":return Symbol(e.slice(1));default:return Symbol()}},v=e=>k.get(e)||((e,t)=>void 0===t?"?":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),M=Object.defineProperty,T=Object.assign,A=Array.from,E=Array.isArray,O=ArrayBuffer.isView,P=(e,t)=>[e,t],B=e=>e,R={},U=e=>(t,r=new Map)=>{for(let n=0,s=t.length;n<s;n++)t[n]=e(t[n],r);return t},x=([e,t])=>0===e?t:S(t),N=e=>"string"==typeof e?P(0,e):P(16,v(e)),j=(e,t)=>{for(let r=e.push,n=0,s=t.length;n<s;n+=32767)r.apply(e,t.subarray(n,n+32767))},{getPrototypeOf:F}=Object,{construct:D}=Reflect,{toStringTag:L}=Symbol,{toString:$}=R,z=(e,t=e[L])=>t in globalThis?t:z(D(F(e.constructor),[0])),I=(e,t)=>[t?e:A(new Uint8Array(e)),e.resizable?e.maxByteLength:0],K=/\[('|")?(.+?)\1\]/g,W=(e,t)=>e?.[t];var J=(e,t)=>t.replace(K,".$2").split(".").reduce(W,e);const{apply:V,construct:_,defineProperty:Y,deleteProperty:q,get:C,getOwnPropertyDescriptor:G,getPrototypeOf:H,has:Q,isExtensible:X,ownKeys:Z,preventExtensions:ee,set:te,setPrototypeOf:re}=Reflect;var ne=({reflect:e=B,transform:t=B,remote:k=B,module:M=e=>import(e),buffer:A=!1}=R)=>{const j=(t,r=new Map)=>{if(!E(t))return t;const[n,s]=t;switch(n){case 2:{if(null===s)return globalThis;let e=r.get(t);if(!e){e=s,r.set(t,s);for(const e in s)s[e]=j(s[e],r)}return e}case 4:return r.get(t)||(r.set(t,s),D(s,r));case 8:{let t=ae.get(s),r=t?.deref();return r||(t&&oe.unregister(t),r=function(...t){k.apply(this,t);for(let e=0,r=t.length;e<r;e++)t[e]=F(t[e]);const r=e(o,s,F(this),t);return r instanceof Promise?r.then(j):j(r)},t=new WeakRef(r),ae.set(s,t),oe.register(r,s,t)),r}case 16:return S(s);default:return 1&n?ne(s):s}},F=e=>{switch(typeof e){case"object":{if(null===e)break;if(e===globalThis)return ce;const r=t(e);return le&&ue.has(r)?P(0,r):O(r)?P(68,((e,t)=>{const{BYTES_PER_ELEMENT:r,byteOffset:n,buffer:s,length:a}=e;return[z(e),I(s,t),n,a!==(s.byteLength-n)/r?a:0]})(r,A)):r instanceof ArrayBuffer?P(64,I(r,A)):P(E(r)?5:3,W(r))}case"function":return P(9,W(t(e)));case"symbol":return P(16,v(e));case"bigint":return P(32,e.toString())}return e},D=U(j),L=U(x),$=U(N),{clear:K,id:W,ref:ne,unref:se}=((e=0,t=new Map,r=new Map)=>({clear:()=>{t.clear(),r.clear()},id:n=>{let s=r.get(n);if(void 0===s){for(;t.has(s=e++););t.set(s,n),r.set(n,s)}return s},ref:e=>t.get(e),unref:e=>(r.delete(t.get(e)),t.delete(e))}))(),ae=new Map,ce=P(2,null),oe=new FinalizationRegistry((t=>{ae.delete(t),e(r,t)}));let ue,le=!1;return{direct:e=>(le||(le=!0,ue=new WeakSet),ue.add(e),e),reflect(e,t,...k){const S=null===t,v=S?globalThis:ne(t);switch(e){case f:{const e=x(k[0]);return F(S&&"import"===e?M:C(v,e))}case o:{const e=new Map;return F(V(v,j(k[0],e),D(k[1],e)))}case d:return te(v,x(k[0]),j(k[1]));case b:return Q(v,x(k[0]));case y:return $(Z(v),ae);case u:return F(_(v,D(k[0])));case g:{const e=G(v,x(k[0]));if(e)for(const t in e)e[t]=F(e[t]);return e}case l:return Y(v,x(k[0]),j(k[1]));case i:return q(v,x(k[0]));case p:return F(H(v));case m:return re(v,j(k[0]));case n:return void T(v,j(k[0]));case s:{const e=j(k[0]),t=Function(`return(${e}).apply(null,arguments)`);return F(V(t,null,D(k[1])))}case a:for(let e,t=0,r=(k=L(k[0],ae)).length;t<r;t++)e=k[t],k[t]=F("string"==typeof e?J(v,e):v[e]);return k;case c:return F(J(v,k[0]));case r:return se(t);case h:return X(v);case w:return ee(v)}},terminate(){for(const e of ae.values())oe.unregister(e);ae.clear(),K()}}};let se=0;const ae=se++,ce=se++,oe=se++,ue=se++,le=se++,ie=se++,fe=se++,ge=se++,pe=se++,be=se++,he=se++,ye=se++,we=se++,de=se++,me=se++,ke=se++,Se=se++,ve=se++,Me=se++,Te=se++,Ae=se++,Ee=se++,Oe=se++,Pe=se++,Be=se++,Re=new TextDecoder,Ue=new TextEncoder,xe=new ArrayBuffer(8),Ne=new DataView(xe),je=new Uint8Array(xe),Fe=(e,t,r)=>(e.set(t,r),r),De=e=>{je[0]=e[ze++],je[1]=e[ze++],je[2]=e[ze++],je[3]=e[ze++],je[4]=e[ze++],je[5]=e[ze++],je[6]=e[ze++],je[7]=e[ze++]},Le=e=>(je[0]=e[ze++],je[1]=e[ze++],je[2]=e[ze++],je[3]=e[ze++],Ne.getUint32(0,!0)),$e=(e,t)=>{switch(e[ze++]){case le:return De(e),Ne.getFloat64(0,!0);case ie:return e[ze++];case Ae:{const r=Fe(t,ze-1,{});for(let n=0,s=Le(e);n<s;n++)r[$e(e,t)]=$e(e,t);return r}case ke:{const r=Fe(t,ze-1,[]);for(let n=0,s=Le(e);n<s;n++)r.push($e(e,t));return r}case Pe:{const r=ze-1,n=$e(e,t);return Fe(t,r,new globalThis[n]($e(e,t)))}case Se:{const r=ze-1,n=Le(e);return Fe(t,r,e.slice(ze,ze+=n).buffer)}case de:{const r=ze-1,n=Le(e);return Fe(t,r,Re.decode(e.slice(ze,ze+=n)))}case ve:return Fe(t,ze-1,new Date($e(e,t)));case Te:{const r=Fe(t,ze-1,new Map);for(let n=0,s=Le(e);n<s;n++)r.set($e(e,t),$e(e,t));return r}case Oe:{const r=Fe(t,ze-1,new Set);for(let n=0,s=Le(e);n<s;n++)r.add($e(e,t));return r}case Me:{const r=$e(e,t),n=$e(e,t),s=$e(e,t),a=new(globalThis[r]||Error)(n);return Fe(t,ze-1,M(a,"stack",{value:s}))}case Ee:{const r=$e(e,t),n=$e(e,t);return Fe(t,ze-1,new RegExp(r,n))}case ae:return!1;case ce:return!0;case fe:return NaN;case ge:return 1/0;case pe:return-1/0;case be:return 0;case he:return-0;case ue:return null;case ye:return De(e),Ne.getBigInt64(0,!0);case we:return De(e),Ne.getBigUint64(0,!0);case me:return S($e(e,t));case Be:return t.get(Le(e));default:return}};let ze=0;const{isNaN:Ie,isFinite:Ke,isInteger:We}=Number,{ownKeys:Je}=Reflect,{is:Ve}=Object,_e=(e,t,r)=>{const n=r.get(e),s=!n;return s?(Ne.setUint32(0,t.length,!0),r.set(e,[je[0],je[1],je[2],je[3]])):t.push(Be,n[0],n[1],n[2],n[3]),s},Ye=(e,t,r)=>{Ne.setUint32(0,r,!0),e.push(t,je[0],je[1],je[2],je[3])},qe=(e,t,r)=>{switch(typeof e){case"number":e&&Ke(e)?We(e)&&e<256&&-1<e?t.push(ie,e):(Ne.setFloat64(0,e,!0),t.push(le,je[0],je[1],je[2],je[3],je[4],je[5],je[6],je[7])):Ie(e)?t.push(fe):e?t.push(e<0?pe:ge):t.push(Ve(e,0)?be:he);break;case"object":switch(!0){case null===e:t.push(ue);break;case!_e(e,t,r):break;case E(e):{const n=e.length;Ye(t,ke,n);for(let s=0;s<n;s++)qe(e[s],t,r);break}case O(e):if(t.push(Pe),qe(z(e),t,r),e=e.buffer,!_e(e,t,r))break;case e instanceof ArrayBuffer:{const r=new Uint8Array(e);Ye(t,Se,r.length),Ce(t,r);break}case e instanceof Date:t.push(ve),qe(e.getTime(),t,r);break;case e instanceof Map:Ye(t,Te,e.size);for(const[n,s]of e)qe(n,t,r),qe(s,t,r);break;case e instanceof Set:Ye(t,Oe,e.size);for(const n of e)qe(n,t,r);break;case e instanceof Error:t.push(Me),qe(e.name,t,r),qe(e.message,t,r),qe(e.stack,t,r);break;case e instanceof RegExp:t.push(Ee),qe(e.source,t,r),qe(e.flags,t,r);break;default:if("toJSON"in e){const n=e.toJSON();qe(n===e?null:n,t,r)}else{const n=Je(e),s=n.length;Ye(t,Ae,s);for(let a=0;a<s;a++){const s=n[a];qe(s,t,r),qe(e[s],t,r)}}}break;case"string":if(_e(e,t,r)){const r=Ue.encode(e);Ye(t,de,r.length),Ce(t,r)}break;case"boolean":t.push(e?ce:ae);break;case"symbol":t.push(me),qe(v(e),t,r);break;case"bigint":{let r=ye;9223372036854775807n<e?(Ne.setBigUint64(0,e,!0),r=we):Ne.setBigInt64(0,e,!0),t.push(r,je[0],je[1],je[2],je[3],je[4],je[5],je[6],je[7]);break}default:t.push(oe)}};let Ce=j;const Ge=e=>new Uint8Array((e=>{const t=[];return Ce=j,qe(e,t,new Map),t})(e)).buffer,He=e=>{return t=new Uint8Array(e),ze=0,$e(t,new Map);var t},{String:Qe}=globalThis;var Xe=(t,r)=>{const[n,s]=((t=e=>e)=>{const r=new Map;let n=0;return[()=>{let s;do{s=t(n++)}while(r.has(s));const a=e();return r.set(s,a),[s,a.promise]},(e,t,n)=>{const s=r.get(e);r.delete(e),n?s?.reject(n):s?.resolve(t)}]})(Qe),a=r?.import||(e=>import(e)),c=new Set;let o,u,l=-1;return{onclose:()=>{for(const e of c)e();c.clear(),l=0,u?.()},onmessage:async e=>{if(l<0){l=0;try{const i=He(e);if(E(i)&&"=5d6208ba-ws"===i.at(0)){l=1;const{direct:e,reflect:i,terminate:f}=ne({...r,module:a,buffer:!0,reflect(...e){const[r,a]=n();return t.send(Ge([r,e])),c.add(s.bind(null,r)),a}});o=i,u=f}}catch(e){}}else if(l>0){const r=He(e);if("string"==typeof r[0])s.apply(null,r);else{try{r[1]=await o(...r[1])}catch(e){r[1]=null,r[2]=e}t.send(Ge(r))}}}}},Ze=(e={})=>{const{bun:t,wss:r}=e;if(t){const t=new WeakMap;return{open(r){t.set(r,Xe(r,e))},close(e,r,n){t.get(e).onclose(n)},message(e,r){t.get(e).onmessage(r)}}}r&&r.on("connection",(t=>{const{onclose:r,onmessage:n}=Xe(t,e);t.prependListener("close",r),t.prependListener("message",n)}))};export{Ze as default};