promise-logic 2.6.1 → 2.6.2

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 +1 @@
1
- "use strict";class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,r)=>{const l=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms`))},e);return()=>{clearTimeout(l)}})])}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o};
1
+ "use strict";class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((r,l)=>{t=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o};
@@ -1 +1 @@
1
- class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,r)=>{const l=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms`))},e);return()=>{clearTimeout(l)}})])}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}function i(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o}export{i as createPromiseLogic};
1
+ class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((r,l)=>{t=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}function i(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o}export{i as createPromiseLogic};
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,r)=>{const l=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms`))},e);return()=>{clearTimeout(l)}})])}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}exports.PromiseLogic=l,exports.PromiseLogicError=e,exports.createLogicError=t,exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o};
1
+ "use strict";class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((r,l)=>{t=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}exports.PromiseLogic=l,exports.PromiseLogicError=e,exports.createLogicError=t,exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o};
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,r)=>{const l=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms`))},e);return()=>{clearTimeout(l)}})])}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}function i(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o}export{l as PromiseLogic,e as PromiseLogicError,t as createLogicError,i as createPromiseLogic};
1
+ class e extends Error{constructor(e,t,r){super(t),this.name="PromiseLogicError",this.type=e,this.results=r}}function t(t,r,l,i){return new e(t,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${r} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOT_ERROR:"NOT condition failed: promise resolved (expected rejection).",NOR_ERROR:`NOR condition failed: ${r} promises fulfilled (expected all rejected).`,MAJORITY_ERROR:`Majority condition failed: ${r}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${r}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-r}/${l} promises rejected (expected all to fail).`}[t]||"Logic condition failed",i)}class r{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((r,l)=>{t=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new r(this.promise.then(e,t))}catch(e){return new r(this.promise.catch(e))}finally(e){return new r(this.promise.finally(e))}toPromise(){return this.promise}}class l{static and(e){return new r(Promise.all(e))}static or(e){return new r(Promise.any(e))}static not(e){return new r(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)).catch(e=>Promise.resolve(e)))}static race(e){return new r(Promise.race(e))}static allSettled(e){return new r(Promise.allSettled(e))}static xor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(1===l)return r[0].value;throw t("XOR_ERROR",l,i,e)}))}static nand(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(l===i)throw t("NAND_ERROR",l,i,e);return r.map(e=>e.value)}))}static nor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status).length,l=e.length;if(0===r)return[];throw t("NOR_ERROR",r,l,e)}))}static xnor(e){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),l=r.length,i=e.length;if(0===l||l===i)return r.map(e=>e.value);throw t("XNOR_ERROR",l,i,e)}))}static majority(e,l={max:.5}){return new r(Promise.allSettled(e).then(e=>{const r=e.filter(e=>"fulfilled"===e.status),i=r.length,n=e.length;if(i>n*l.max)return r.map(e=>e.value);throw t("MAJORITY_ERROR",i,n,e)}))}static allFulfilled(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new r(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);return{getState:()=>t,set(e){return t=e,r&&(r(t),r=null),l=Promise.resolve(t),this},toggle(){return this.set(!t)},waitForChange:()=>(r||(l=new Promise(e=>{r=e})),l),waitFor(e){return t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):this.waitForChange().then(l)};l()})}}}}function i(e={}){const{prefix:t="",suffix:r="",rename:i={}}=e,n={and:l.and.bind(l),or:l.or.bind(l),race:l.race.bind(l),allSettled:l.allSettled.bind(l),xor:l.xor.bind(l),not:l.not.bind(l),nand:l.nand.bind(l),nor:l.nor.bind(l),xnor:l.xnor.bind(l),majority:l.majority.bind(l),allFulfilled:l.allFulfilled.bind(l),allRejected:l.allRejected.bind(l)},o={};return Object.entries(n).forEach(([e,l])=>{const n=i[e]||e;o[`${t}${n}${r}`]=l}),o}export{l as PromiseLogic,e as PromiseLogicError,t as createLogicError,i as createPromiseLogic};
@@ -1 +1 @@
1
- "use strict";class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class l extends Error{constructor(e,t,l){super(t),this.type=e,this.results=l,this.name="PromiseLogicError"}}function r(e,t,r,s){return new l(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${r} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${r} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${r} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${r} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${r-t}/${r} promises rejected (expected all to fail).`}[e]||"Logic condition failed",s)}class s extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new l("AND_ERROR","AND gate failed",[e])}}}class n extends e{async execute(e,t){const l=await Promise.allSettled(e),s=this.filterFulfilledResults(l),n=s.length,i=l.length;if(n>i*t.max)return s;throw r("MAJORITY_ERROR",n,i,l)}}class i extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),s=l.length,n=t.length;if(s===n)throw r("NAND_ERROR",s,n,t);return l}}class a extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t).length,s=t.length;if(0===l)return[];throw r("NOR_ERROR",l,s,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),s=l.length,n=t.length;if(0===s||s===n)return l;throw r("XNOR_ERROR",s,n,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),s=l.length,n=t.length;if(1===s)return l[0];throw r("XOR_ERROR",s,n,t)}}class u{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,l)=>{const r=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e);return()=>{clearTimeout(r)}})])}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new s,or:new t,xor:new c,nand:new i,nor:new a,xnor:new o,majority:new n}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,l=null,r=Promise.resolve(t);const s=()=>(l||(r=new Promise(e=>{l=e})),r);return{getState:()=>t,set:async e=>(t=e,l&&(l(t),l=null),r=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:s,waitFor:e=>t===e?Promise.resolve(t):new Promise(l=>{const r=()=>{t===e?l(t):s().then(r)};r()})}}}exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:l="",rename:r={}}=e,s={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},n={};return Object.entries(s).forEach(([e,s])=>{const i=r[e]||e;n[`${t}${i}${l}`]=s}),n};
1
+ "use strict";class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class l extends Error{constructor(e,t,l){super(t),this.type=e,this.results=l,this.name="PromiseLogicError"}}function r(e,t,r,s){return new l(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${r} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${r} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${r} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${r} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${r-t}/${r} promises rejected (expected all to fail).`}[e]||"Logic condition failed",s)}class s extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new l("AND_ERROR","AND gate failed",[e])}}}class i extends e{async execute(e,t){const l=await Promise.allSettled(e),s=this.filterFulfilledResults(l),i=s.length,n=l.length;if(i>n*t.max)return s;throw r("MAJORITY_ERROR",i,n,l)}}class n extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),s=l.length,i=t.length;if(s===i)throw r("NAND_ERROR",s,i,t);return l}}class a extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t).length,s=t.length;if(0===l)return[];throw r("NOR_ERROR",l,s,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),s=l.length,i=t.length;if(0===s||s===i)return l;throw r("XNOR_ERROR",s,i,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),s=l.length,i=t.length;if(1===s)return l[0];throw r("XOR_ERROR",s,i,t)}}class u{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((l,r)=>{t=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new s,or:new t,xor:new c,nand:new n,nor:new a,xnor:new o,majority:new i}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,l=null,r=Promise.resolve(t);const s=()=>(l||(r=new Promise(e=>{l=e})),r);return{getState:()=>t,set:async e=>(t=e,l&&(l(t),l=null),r=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:s,waitFor:e=>t===e?Promise.resolve(t):new Promise(l=>{const r=()=>{t===e?l(t):s().then(r)};r()})}}}exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:l="",rename:r={}}=e,s={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},i={};return Object.entries(s).forEach(([e,s])=>{const n=r[e]||e;i[`${t}${n}${l}`]=s}),i};
@@ -1 +1 @@
1
- class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class l extends Error{constructor(e,t,l){super(t),this.type=e,this.results=l,this.name="PromiseLogicError"}}function r(e,t,r,n){return new l(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${r} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${r} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${r} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${r} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${r-t}/${r} promises rejected (expected all to fail).`}[e]||"Logic condition failed",n)}class n extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new l("AND_ERROR","AND gate failed",[e])}}}class s extends e{async execute(e,t){const l=await Promise.allSettled(e),n=this.filterFulfilledResults(l),s=n.length,i=l.length;if(s>i*t.max)return n;throw r("MAJORITY_ERROR",s,i,l)}}class i extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(n===s)throw r("NAND_ERROR",n,s,t);return l}}class a extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t).length,n=t.length;if(0===l)return[];throw r("NOR_ERROR",l,n,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(0===n||n===s)return l;throw r("XNOR_ERROR",n,s,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(1===n)return l[0];throw r("XOR_ERROR",n,s,t)}}class u{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,l)=>{const r=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e);return()=>{clearTimeout(r)}})])}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new n,or:new t,xor:new c,nand:new i,nor:new a,xnor:new o,majority:new s}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,l=null,r=Promise.resolve(t);const n=()=>(l||(r=new Promise(e=>{l=e})),r);return{getState:()=>t,set:async e=>(t=e,l&&(l(t),l=null),r=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:n,waitFor:e=>t===e?Promise.resolve(t):new Promise(l=>{const r=()=>{t===e?l(t):n().then(r)};r()})}}}function f(e={}){const{prefix:t="",suffix:l="",rename:r={}}=e,n={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},s={};return Object.entries(n).forEach(([e,n])=>{const i=r[e]||e;s[`${t}${i}${l}`]=n}),s}export{f as createPromiseLogic};
1
+ class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class l extends Error{constructor(e,t,l){super(t),this.type=e,this.results=l,this.name="PromiseLogicError"}}function r(e,t,r,n){return new l(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${r} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${r} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${r} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${r} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${r-t}/${r} promises rejected (expected all to fail).`}[e]||"Logic condition failed",n)}class n extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new l("AND_ERROR","AND gate failed",[e])}}}class s extends e{async execute(e,t){const l=await Promise.allSettled(e),n=this.filterFulfilledResults(l),s=n.length,i=l.length;if(s>i*t.max)return n;throw r("MAJORITY_ERROR",s,i,l)}}class i extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(n===s)throw r("NAND_ERROR",n,s,t);return l}}class a extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t).length,n=t.length;if(0===l)return[];throw r("NOR_ERROR",l,n,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(0===n||n===s)return l;throw r("XNOR_ERROR",n,s,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(1===n)return l[0];throw r("XOR_ERROR",n,s,t)}}class u{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((l,r)=>{t=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new n,or:new t,xor:new c,nand:new i,nor:new a,xnor:new o,majority:new s}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,l=null,r=Promise.resolve(t);const n=()=>(l||(r=new Promise(e=>{l=e})),r);return{getState:()=>t,set:async e=>(t=e,l&&(l(t),l=null),r=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:n,waitFor:e=>t===e?Promise.resolve(t):new Promise(l=>{const r=()=>{t===e?l(t):n().then(r)};r()})}}}function f(e={}){const{prefix:t="",suffix:l="",rename:r={}}=e,n={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},s={};return Object.entries(n).forEach(([e,n])=>{const i=r[e]||e;s[`${t}${i}${l}`]=n}),s}export{f as createPromiseLogic};
@@ -1 +1 @@
1
- "use strict";class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class r extends Error{constructor(e,t,r){super(t),this.type=e,this.results=r,this.name="PromiseLogicError"}}function l(e,t,l,s){return new r(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${l} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-t}/${l} promises rejected (expected all to fail).`}[e]||"Logic condition failed",s)}class s extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new r("AND_ERROR","AND gate failed",[e])}}}class i extends e{async execute(e,t){const r=await Promise.allSettled(e),s=this.filterFulfilledResults(r),i=s.length,n=r.length;if(i>n*t.max)return s;throw l("MAJORITY_ERROR",i,n,r)}}class n extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t),s=r.length,i=t.length;if(s===i)throw l("NAND_ERROR",s,i,t);return r}}class a extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t).length,s=t.length;if(0===r)return[];throw l("NOR_ERROR",r,s,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t),s=r.length,i=t.length;if(0===s||s===i)return r;throw l("XNOR_ERROR",s,i,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t),s=r.length,i=t.length;if(1===s)return r[0];throw l("XOR_ERROR",s,i,t)}}class u{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,r)=>{const l=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e);return()=>{clearTimeout(l)}})])}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new s,or:new t,xor:new c,nand:new n,nor:new a,xnor:new o,majority:new i}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);const s=()=>(r||(l=new Promise(e=>{r=e})),l);return{getState:()=>t,set:async e=>(t=e,r&&(r(t),r=null),l=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:s,waitFor:e=>t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):s().then(l)};l()})}}}exports.PromiseLogic=d,exports.PromiseLogicError=r,exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:r="",rename:l={}}=e,s={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},i={};return Object.entries(s).forEach(([e,s])=>{const n=l[e]||e;i[`${t}${n}${r}`]=s}),i};
1
+ "use strict";class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class r extends Error{constructor(e,t,r){super(t),this.type=e,this.results=r,this.name="PromiseLogicError"}}function l(e,t,l,s){return new r(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${l} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${l} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${l} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${l} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${l-t}/${l} promises rejected (expected all to fail).`}[e]||"Logic condition failed",s)}class s extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new r("AND_ERROR","AND gate failed",[e])}}}class i extends e{async execute(e,t){const r=await Promise.allSettled(e),s=this.filterFulfilledResults(r),i=s.length,n=r.length;if(i>n*t.max)return s;throw l("MAJORITY_ERROR",i,n,r)}}class n extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t),s=r.length,i=t.length;if(s===i)throw l("NAND_ERROR",s,i,t);return r}}class a extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t).length,s=t.length;if(0===r)return[];throw l("NOR_ERROR",r,s,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t),s=r.length,i=t.length;if(0===s||s===i)return r;throw l("XNOR_ERROR",s,i,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),r=this.filterFulfilledResults(t),s=r.length,i=t.length;if(1===s)return r[0];throw l("XOR_ERROR",s,i,t)}}class u{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((r,l)=>{t=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new s,or:new t,xor:new c,nand:new n,nor:new a,xnor:new o,majority:new i}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,r=null,l=Promise.resolve(t);const s=()=>(r||(l=new Promise(e=>{r=e})),l);return{getState:()=>t,set:async e=>(t=e,r&&(r(t),r=null),l=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:s,waitFor:e=>t===e?Promise.resolve(t):new Promise(r=>{const l=()=>{t===e?r(t):s().then(l)};l()})}}}exports.PromiseLogic=d,exports.PromiseLogicError=r,exports.createPromiseLogic=function(e={}){const{prefix:t="",suffix:r="",rename:l={}}=e,s={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},i={};return Object.entries(s).forEach(([e,s])=>{const n=l[e]||e;i[`${t}${n}${r}`]=s}),i};
@@ -1 +1 @@
1
- class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class l extends Error{constructor(e,t,l){super(t),this.type=e,this.results=l,this.name="PromiseLogicError"}}function r(e,t,r,n){return new l(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${r} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${r} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${r} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${r} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${r-t}/${r} promises rejected (expected all to fail).`}[e]||"Logic condition failed",n)}class n extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new l("AND_ERROR","AND gate failed",[e])}}}class s extends e{async execute(e,t){const l=await Promise.allSettled(e),n=this.filterFulfilledResults(l),s=n.length,i=l.length;if(s>i*t.max)return n;throw r("MAJORITY_ERROR",s,i,l)}}class i extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(n===s)throw r("NAND_ERROR",n,s,t);return l}}class a extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t).length,n=t.length;if(0===l)return[];throw r("NOR_ERROR",l,n,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(0===n||n===s)return l;throw r("XNOR_ERROR",n,s,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(1===n)return l[0];throw r("XOR_ERROR",n,s,t)}}class u{constructor(e){this.promise=e}maxTimer(e){return Promise.race([this.promise,new Promise((t,l)=>{const r=setTimeout(()=>{l(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e);return()=>{clearTimeout(r)}})])}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new n,or:new t,xor:new c,nand:new i,nor:new a,xnor:new o,majority:new s}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,l=null,r=Promise.resolve(t);const n=()=>(l||(r=new Promise(e=>{l=e})),r);return{getState:()=>t,set:async e=>(t=e,l&&(l(t),l=null),r=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:n,waitFor:e=>t===e?Promise.resolve(t):new Promise(l=>{const r=()=>{t===e?l(t):n().then(r)};r()})}}}function f(e={}){const{prefix:t="",suffix:l="",rename:r={}}=e,n={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},s={};return Object.entries(n).forEach(([e,n])=>{const i=r[e]||e;s[`${t}${i}${l}`]=n}),s}export{d as PromiseLogic,l as PromiseLogicError,f as createPromiseLogic};
1
+ class e{filterFulfilledResults(e){return e.filter(e=>"fulfilled"===e.status).map(e=>e.value)}filterRejectedResults(e){return e.filter(e=>"rejected"===e.status).map(e=>e.reason)}countFulfilled(e){return e.filter(e=>"fulfilled"===e.status).length}}class t extends e{async execute(e){return Promise.any(e)}}class l extends Error{constructor(e,t,l){super(t),this.type=e,this.results=l,this.name="PromiseLogicError"}}function r(e,t,r,n){return new l(e,{XOR_ERROR:`XOR condition failed: expected exactly 1 promise to fulfill, but ${t} fulfilled.`,NAND_ERROR:`NAND condition failed: all ${r} promises fulfilled (expected at least one rejection).`,NOR_ERROR:`NOR condition failed: ${t} promises fulfilled (expected all rejected).`,XNOR_ERROR:`XNOR condition failed: ${t}/${r} promises fulfilled (expected all or none).`,MAJORITY_ERROR:`Majority condition failed: ${t}/${r} fulfilled (need majority).`,ALL_SUCCESSFUL_ERROR:`All successful condition failed: ${t}/${r} promises fulfilled (expected all to succeed).`,ALL_FAILED_ERROR:`All failed condition failed: ${r-t}/${r} promises rejected (expected all to fail).`}[e]||"Logic condition failed",n)}class n extends e{async execute(e){try{return Promise.all(e)}catch(e){throw new l("AND_ERROR","AND gate failed",[e])}}}class s extends e{async execute(e,t){const l=await Promise.allSettled(e),n=this.filterFulfilledResults(l),s=n.length,i=l.length;if(s>i*t.max)return n;throw r("MAJORITY_ERROR",s,i,l)}}class i extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(n===s)throw r("NAND_ERROR",n,s,t);return l}}class a extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t).length,n=t.length;if(0===l)return[];throw r("NOR_ERROR",l,n,t)}}class o extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(0===n||n===s)return l;throw r("XNOR_ERROR",n,s,t)}}class c extends e{async execute(e){const t=await Promise.allSettled(e),l=this.filterFulfilledResults(t),n=l.length,s=t.length;if(1===n)return l[0];throw r("XOR_ERROR",n,s,t)}}class u{constructor(e){this.promise=e}maxTimer(e){let t;return Promise.race([this.promise,new Promise((l,r)=>{t=setTimeout(()=>{r(new Error(`Promise timed out after ${e}ms,${this.promise}`))},e)})]).finally(()=>clearTimeout(t))}then(e,t){return new u(this.promise.then(e,t))}catch(e){return new u(this.promise.catch(e))}finally(e){return new u(this.promise.finally(e))}toPromise(){return this.promise}}class d{static get gates(){return{and:new n,or:new t,xor:new c,nand:new i,nor:new a,xnor:new o,majority:new s}}static and(e){return new u(this.gates.and.execute(e))}static or(e){return new u(this.gates.or.execute(e))}static xor(e){return new u(this.gates.xor.execute(e))}static nand(e){return new u(this.gates.nand.execute(e))}static nor(e){return new u(this.gates.nor.execute(e))}static xnor(e){return new u(this.gates.xnor.execute(e))}static majority(e,t={max:.5}){return new u(this.gates.majority.execute(e,t))}static allFulfilled(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"fulfilled"===e.status).map(e=>e.value)))}static allRejected(e){return new u(Promise.allSettled(e).then(e=>e.filter(e=>"rejected"===e.status).map(e=>e.reason)))}static not(e){return new u(Promise.resolve(e).then(e=>Promise.reject(e),e=>Promise.resolve(e)))}static race(e){return new u(Promise.race(e))}static allSettled(e){return new u(Promise.allSettled(e))}static createFlipFlop(e=!1){let t=e,l=null,r=Promise.resolve(t);const n=()=>(l||(r=new Promise(e=>{l=e})),r);return{getState:()=>t,set:async e=>(t=e,l&&(l(t),l=null),r=Promise.resolve(t),t),async toggle(){return this.set(!t)},waitForChange:n,waitFor:e=>t===e?Promise.resolve(t):new Promise(l=>{const r=()=>{t===e?l(t):n().then(r)};r()})}}}function f(e={}){const{prefix:t="",suffix:l="",rename:r={}}=e,n={and:d.and.bind(d),or:d.or.bind(d),not:d.not.bind(d),race:d.race.bind(d),allSettled:d.allSettled.bind(d),xor:d.xor.bind(d),nand:d.nand.bind(d),nor:d.nor.bind(d),xnor:d.xnor.bind(d),majority:d.majority.bind(d),allFulfilled:d.allFulfilled.bind(d),allRejected:d.allRejected.bind(d)},s={};return Object.entries(n).forEach(([e,n])=>{const i=r[e]||e;s[`${t}${i}${l}`]=n}),s}export{d as PromiseLogic,l as PromiseLogicError,f as createPromiseLogic};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "promise-logic",
3
- "version": "2.6.1",
3
+ "version": "2.6.2",
4
4
  "description": "Compose promises with logic gate semantics (AND, OR, XOR, NAND, NOR, XNOR, Majority). Forget APIs, remember logic.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",