UNPKG

mpsc-channel

Version:

Multi-producer, single-consumer FIFO queue communication primitives

2 lines (1 loc) 989 B
"use strict";var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var t=Object.prototype.hasOwnProperty;var i=(n,e)=>{for(var c in e)r(n,c,{get:e[c],enumerable:!0})},v=(n,e,c,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of h(e))!t.call(n,s)&&s!==c&&r(n,s,{get:()=>e[s],enumerable:!(l=a(e,s))||l.enumerable});return n};var o=n=>v(r({},"__esModule",{value:!0}),n);var S={};i(S,{channel:()=>d});module.exports=o(S);class T{constructor(e){this.values=[];e(this)}}class u{constructor(e){e(this)}recv(e){const c=this.channel.values.pop();return c&&(this.channel.receiver=e,this.channel.receiver(c)),c}}class f{constructor(e){e(this)}send(e){this.channel.values.unshift(e),typeof this.channel.receiver=="function"&&this.channel.values.length&&this.channel.receiver(this.channel.values.pop())}}function d(){const n=new T(l=>{l.values=[]}),e=new f(l=>{l.channel=n}),c=new u(l=>{l.channel=n});return[e,c]}0&&(module.exports={channel});