coincident
Version:
An Atomics based Proxy to simplify, and synchronize, Worker related tasks
2 lines (1 loc) • 8.88 kB
JavaScript
let e=0;const t=e++,r=e++,n=e++,s=e++,a=e++,o=e++,c=e++,i=e++,l=e++,u=e++,f=e++,p=e++,g=e++,h=e++,y=e++,b=e++,d=e++,m=e++,w=new Map(Reflect.ownKeys(Symbol).map((e=>[Symbol[e],`@${String(e)}`]))),k=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=>w.get(e)||((e,t)=>void 0===t?"?":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),E=Object.assign,S=Array.from,T=Array.isArray,M=ArrayBuffer.isView,x=(e,t)=>[e,t],P=e=>e,A={},O=e=>(t,r=new Map)=>{for(let n=0,s=t.length;n<s;n++)t[n]=e(t[n],r);return t},R=([e,t])=>0===e?t:k(t),B=e=>"string"==typeof e?x(0,e):x(16,v(e)),{getPrototypeOf:L}=Object,{construct:U}=Reflect,{toStringTag:j}=Symbol,{toString:W}=A,D=(e,t=e[j])=>t in globalThis?t:D(U(L(e.constructor),[0])),I=(e,t)=>[t?e:S(new Uint8Array(e)),e.resizable?e.maxByteLength:0],N=/\[('|")?(.+?)\1\]/g,$=(e,t)=>e?.[t];var F=(e,t)=>t.replace(N,".$2").split(".").reduce($,e);const{apply:z,construct:_,defineProperty:K,deleteProperty:J,get:V,getOwnPropertyDescriptor:Y,getPrototypeOf:C,has:q,isExtensible:G,ownKeys:H,preventExtensions:Q,set:X,setPrototypeOf:Z}=Reflect;var ee=({reflect:e=P,transform:w=P,remote:S=P,module:L=e=>import(e),buffer:U=!1}=A)=>{const j=(t,r=new Map)=>{if(!T(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),N(s,r));case 8:{let t=ae.get(s),r=t?.deref();return r||(t&&ce.unregister(t),r=function(...t){S.apply(this,t);for(let e=0,r=t.length;e<r;e++)t[e]=W(t[e]);const r=e(o,s,W(this),t);return r instanceof Promise?r.then(j):j(r)},t=new WeakRef(r),ae.set(s,t),ce.register(r,s,t)),r}case 16:return k(s);default:return 1&n?ne(s):s}},W=e=>{switch(typeof e){case"object":{if(null===e)break;if(e===globalThis)return oe;const t=w(e);return le&&ie.has(t)?x(0,t):M(t)?x(68,((e,t)=>{const{BYTES_PER_ELEMENT:r,byteOffset:n,buffer:s,length:a}=e;return[D(e),I(s,t),n,a!==(s.byteLength-n)/r?a:0]})(t,U)):t instanceof ArrayBuffer?x(64,I(t,U)):x(T(t)?5:3,re(t))}case"function":return x(9,re(w(e)));case"symbol":return x(16,v(e));case"bigint":return x(32,e.toString())}return e},N=O(j),$=O(R),ee=O(B),{clear:te,id:re,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,oe=x(2,null),ce=new FinalizationRegistry((r=>{ae.delete(r),e(t,r)}));let ie,le=!1;return{direct:e=>(le||(le=!0,ie=new WeakSet),ie.add(e),e),reflect(e,w,...k){const v=null===w,S=v?globalThis:ne(w);switch(e){case u:{const e=R(k[0]);return W(v&&"import"===e?L:V(S,e))}case o:{const e=new Map;return W(z(S,j(k[0],e),N(k[1],e)))}case d:return X(S,R(k[0]),j(k[1]));case g:return q(S,R(k[0]));case y:return ee(H(S),ae);case c:return W(_(S,N(k[0])));case f:{const e=Y(S,R(k[0]));if(e)for(const t in e)e[t]=W(e[t]);return e}case i:return K(S,R(k[0]),j(k[1]));case l:return J(S,R(k[0]));case p:return W(C(S));case m:return Z(S,j(k[0]));case r:return void E(S,j(k[0]));case n:{const e=j(k[0]),t=Function(`return(${e}).apply(null,arguments)`);return W(z(t,null,N(k[1])))}case s:for(let e,t=0,r=(k=$(k[0],ae)).length;t<r;t++)e=k[t],k[t]=W("string"==typeof e?F(S,e):S[e]);return k;case a:return W(F(S,k[0]));case t:return se(w);case h:return G(S);case b:return Q(S)}},terminate(){for(const e of ae.values())ce.unregister(e);ae.clear(),te()}}};const{addEventListener:te}=EventTarget.prototype,re=new WeakMap;Reflect.defineProperty(EventTarget.prototype,"addEventListener",{value(e,t,r){const n=r?.invoke;if(n){let t=re.get(this);t||re.set(this,t=new Map),t.set(e,[].concat(n)),delete r.invoke,console.log(t)}return te.apply(this,arguments)}});let ne=0;const se=ne++,ae=ne++,oe=ne++,ce=ne++,ie=ne++,le=ne++,ue=ne++,fe=ne++,pe=ne++,ge=ne++,he=ne++,ye=ne++,be=ne++,de=ne++,me=ne++,we=ne++,ke=ne++,ve=ne++,Ee=ne++,Se=ne++,Te=ne++,Me=ne++,xe=ne++,Pe=ne++,Ae=ne++;class Oe{static push(e,t){e.c(),e.v.set(t,e.g(t.length))}constructor(e,t){const r=[];this.l=0,this.v=new Uint8Array(e,t),this.o=r,this.push=r.push.bind(r)}get length(){return this.c(),this.l}c(){const e=this.o,t=e.length;t&&this.v.set(e.splice(0),this.g(t))}g(e){const{buffer:t,byteOffset:r}=this.v,n=this.l;return this.l+=e,e+=r+n,t.byteLength<e&&t.grow(e),n}}new TextDecoder;const Re=new TextEncoder,Be=new ArrayBuffer(8),Le=new DataView(Be),Ue=new Uint8Array(Be),{isNaN:je,isFinite:We,isInteger:De}=Number,{ownKeys:Ie}=Reflect,{is:Ne}=Object,$e=(e,t,r)=>{const n=r.get(e),s=!n;return s?(Le.setUint32(0,t.length,!0),r.set(e,[Ue[0],Ue[1],Ue[2],Ue[3]])):t.push(Ae,n[0],n[1],n[2],n[3]),s},Fe=(e,t,r)=>{Le.setUint32(0,r,!0),e.push(t,Ue[0],Ue[1],Ue[2],Ue[3])},ze=(e,t,r)=>{switch(typeof e){case"number":e&&We(e)?De(e)&&e<256&&-1<e?t.push(le,e):(Le.setFloat64(0,e,!0),t.push(ie,Ue[0],Ue[1],Ue[2],Ue[3],Ue[4],Ue[5],Ue[6],Ue[7])):je(e)?t.push(ue):e?t.push(e<0?pe:fe):t.push(Ne(e,0)?ge:he);break;case"object":switch(!0){case null===e:t.push(ce);break;case!$e(e,t,r):break;case T(e):{const n=e.length;Fe(t,we,n);for(let s=0;s<n;s++)ze(e[s],t,r);break}case M(e):if(t.push(Pe),ze(D(e),t,r),e=e.buffer,!$e(e,t,r))break;case e instanceof ArrayBuffer:{const r=new Uint8Array(e);Fe(t,ke,r.length),_e(t,r);break}case e instanceof Date:t.push(ve),ze(e.getTime(),t,r);break;case e instanceof Map:Fe(t,Se,e.size);for(const[n,s]of e)ze(n,t,r),ze(s,t,r);break;case e instanceof Set:Fe(t,xe,e.size);for(const n of e)ze(n,t,r);break;case e instanceof Error:t.push(Ee),ze(e.name,t,r),ze(e.message,t,r),ze(e.stack,t,r);break;case e instanceof RegExp:t.push(Me),ze(e.source,t,r),ze(e.flags,t,r);break;default:if("toJSON"in e){const n=e.toJSON();ze(n===e?null:n,t,r)}else{const n=Ie(e),s=n.length;Fe(t,Te,s);for(let a=0;a<s;a++){const s=n[a];ze(s,t,r),ze(e[s],t,r)}}}break;case"string":if($e(e,t,r)){const r=Re.encode(e);Fe(t,de,r.length),_e(t,r)}break;case"boolean":t.push(e?ae:se);break;case"symbol":t.push(me),ze(v(e),t,r);break;case"bigint":{let r=ye;9223372036854775807n<e?(Le.setBigUint64(0,e,!0),r=be):Le.setBigInt64(0,e,!0),t.push(r,Ue[0],Ue[1],Ue[2],Ue[3],Ue[4],Ue[5],Ue[6],Ue[7]);break}default:t.push(oe)}};let _e=(e,t)=>{for(let r=e.push,n=0,s=t.length;n<s;n+=32767)r.apply(e,t.subarray(n,n+32767))};const Ke=({byteOffset:e=0}={})=>(t,r)=>{const n=new Oe(r,e);return _e=Oe.push,ze(t,n,new Map),n.length},Je="5d6208ba",Ve="="+Je,Ye="-"+Je;var Ce=Promise.withResolvers.bind(Promise);const qe=[],Ge=new WeakSet,He=(...e)=>(Ge.add(e),e),{assign:Qe,create:Xe}=Object;let Ze="coincident-",et=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),Ze+=crypto.randomUUID()}catch(e){et=!1,Ze+=Math.random().toString(36).substring(2)}const tt={byteOffset:2*Int32Array.BYTES_PER_ELEMENT},rt=(e,t,r)=>{const n="then"!==t;return n&&(e[t]=r),n},nt="InstallTrigger"in globalThis?Ze:"",{notify:st}=Atomics,at=e=>e;var ot=e=>{const t=e?.transform,r=(e?.encoder||Ke)(tt),n=!1!==e?.transfer;class s extends globalThis.Worker{constructor(e,s){const{port1:a,port2:o}=new MessageChannel,[c,i]=((e=e=>e)=>{const t=new Map;let r=0;return[()=>{let n;do{n=e(r++)}while(t.has(n));const s=Ce();return t.set(n,s),[n,s.promise]},(e,r,n)=>{const s=t.get(e);t.delete(e),n?s?.reject(n):s?.resolve(r)}]})(at),l=new Map,u=Xe(null);let f="";super(e,Qe({type:"module"},s)).proxy=new Proxy(u,{get:(e,r)=>{if("then"===r)return;let s=l.get(r);return s||l.set(r,s=(...e)=>{const s=((e,t)=>{let r=qe;return e&&Ge.has(t.at(-1)||qe)&&(r=t.pop(),Ge.delete(r)),r})(n,e),[o,i]=c();return a.postMessage([o,r,t?e.map(t):e],s),((e,t)=>{if(f){const r=setTimeout(console.warn,3e3,`💀🔒 - is proxy.${f}() awaiting proxy.${t}() ?`);e=e.then((e=>(clearTimeout(r),e)),(e=>(clearTimeout(r),Promise.reject(e))))}return e})(i,r)}),s},set:rt}),super.postMessage(nt,[o]),et&&nt&&super.addEventListener("message",(e=>{const{data:t}=e;t?.ID===nt&&((e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),a.onmessage(t))})),a.onmessage=async({data:e})=>{const n=e[0],s=typeof n;if("number"===s)i.apply(null,e);else if(f=e[1],await(async(e,t,r)=>{try{const n=await t[e[1]].apply(null,e[2]);e[1]=r?r(n):n,e[2]=null}catch(t){e[2]=t}})(e,u,t),f="","string"===s)a.postMessage(e);else{const t=e[2]||e[1];n[1]=void 0===t?0:r(t,n.buffer),n[0]=1,st(n,0)}}}}return{Worker:s,native:et,transfer:He}},ct=e=>{const t=e?.import,r=ot({...e,encoder:e?.encoder||Ke});class n extends r.Worker{#e;constructor(e,r){const{proxy:n}=super(e,r),{direct:s,reflect:a,terminate:o}=ee({...r,buffer:!0,reflect:n[Ye],remote(e){e instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e,s=re.get(t||r)?.get(n);if(s)for(const t of s)e[t]()})(e)},module:r?.import||t||(e=>import(new URL(e,location).href))});this.#e=o,this.direct=s,n[Ve]=a}terminate(){this.#e(),super.terminate()}}return{...r,Worker:n}};export{ct as default};