UNPKG

ixfx

Version:

Bundle of ixfx libraries

1 lines 8.63 kB
import{n as e}from"./chunk-BKBlUVio.js";import{ut as t,v as n}from"./src-DlHqXvlb.js";import{n as r}from"./src-CIW3LrR8.js";import{_t as i,bt as a,mt as o,w as s}from"./src-CWZAMrn_.js";import{j as c}from"./src-B8K2o5HY.js";function l(e,t,n){return r=>{let i=e(r);i.changed?t(r,i.changes,i.total):n!==void 0&&n(r,i.identicalRun,i.total)}}function u(e={}){let t=e.nanHandling??`error`,n=e.includeFirstValueInCount??!1,r=e.initial,i=0,a=0,o=0;return e=>{if(typeof e!=`number`)throw TypeError(`Parameter should be number. Got type: ${typeof e}`);if(Number.isNaN(e))switch(t){case`error`:throw Error(`Parameter is NaN`);case`skip`:return{changed:!1,changes:i,total:a,identicalRun:o}}a++;let s=r===e;if(Number.isNaN(r)&&Number.isNaN(e)&&(s=!0),s)o++;else return o=0,(r!==void 0||n)&&i++,r=e,{changed:!0,changes:i,total:a,identicalRun:o};return{changed:!1,changes:i,total:a,identicalRun:o}}}function d(e={}){let t=e.includeFirstValueInCount??!1,n=e.initial,r=0,i=0,a=0;return e=>{if(typeof e!=`boolean`)throw TypeError(`Parameter should be boolean. Got type: ${typeof e}`);return i++,n===e?(a++,{changed:!1,changes:r,total:i,identicalRun:a}):(a=0,(n!==void 0||t)&&r++,n=e,{changed:!0,changes:r,total:i,identicalRun:a})}}var f=class{ft;sources=new Set;constructor(e){this.ft=new p(e)}add(e,t){this.sources.has(t)||(this.sources.add(t),this.ft.add(e))}clear(){this.ft.clear(),this.sources.clear()}},p=class extends r{#e;#t;#n;constructor(e){super(),this.#e=new Map,e===void 0&&(e=e=>{if(e===void 0)throw Error(`Cannot create key for undefined`);return typeof e==`string`?e:JSON.stringify(e)}),this.#t=e}clear(){this.#e.clear(),this.#n=void 0,this.fireEvent(`change`,{context:this})}keys(){return this.#e.keys()}values(){return this.#e.values()}toArray(){return[...this.#e.entries()]}debugString(){let e=``;for(let[t,n]of this.#e.entries())e+=`${t}: ${n.toString()}, `;return e.endsWith(`, `)?e.slice(0,Math.max(0,e.length-2)):e}frequencyOf(e){if(typeof e==`string`)return this.#e.get(e);let t=this.#t(e);return this.#e.get(t)}relativeFrequencyOf(e){let t;if(typeof e==`string`)t=this.#e.get(e);else{let n=this.#t(e);t=this.#e.get(n)}if(t===void 0)return;let n=this.computeValues();return t/n.total}*entries(){yield*this.#e.entries()}*filterByTally(e){for(let t of this.#e.entries())e(t[1])&&(yield t)}*filterByRelativeTally(e){let t=this.computeValues().total;for(let n of this.#e.entries())e(n[1]/t)&&(yield n)}computeValues(){return this.#n||=s([...this.values()]),this.#n}entriesSorted(e=`value`){return n(e)([...this.entries()])}add(...e){if(e===void 0)throw Error(`Param 'values' undefined`);this.#n=void 0;let t=e.map(e=>this.#t(e));for(let e of t){let t=this.#e.get(e)??0;this.#e.set(e,t+1)}this.fireEvent(`change`,{context:this})}};const m=e=>new p(e);var h=class{seenCount;storeIntermediate;resetAfterSamples;sampleLimit;id;debug;constructor(e={}){this.id=e.id??`tracker`,this.debug=e.debug??!1,this.sampleLimit=e.sampleLimit??-1,this.resetAfterSamples=e.resetAfterSamples??-1,this.storeIntermediate=e.storeIntermediate??(this.sampleLimit>-1||this.resetAfterSamples>-1),this.seenCount=0,this.debug&&console.log(`TrackerBase: sampleLimit: ${this.sampleLimit} resetAfter: ${this.resetAfterSamples} store: ${this.storeIntermediate}`)}reset(){this.seenCount=0,this.onReset()}seen(...e){this.resetAfterSamples>0&&this.seenCount>this.resetAfterSamples?this.reset():this.sampleLimit>0&&this.seenCount>this.sampleLimit*2&&(this.seenCount=this.trimStore(this.sampleLimit),this.onTrimmed(`resize`)),this.seenCount+=e.length;let t=this.filterData(e);return this.computeResults(t)}},g=class extends h{values;timestamps;constructor(e){super(e),this.values=[],this.timestamps=[]}trimStore(e){return e>=this.values.length?this.values.length:(this.values=this.values.slice(-e),this.timestamps=this.timestamps.slice(-e),this.values.length)}onTrimmed(e){}get last(){return this.values.at(-1)}get initial(){return this.values.at(0)}get size(){return this.values.length}get elapsed(){if(this.values.length===0)throw Error(`No values seen yet`);return Date.now()-this.timestamps[0]}get timespan(){let e=this.timestamps.at(0),t=this.timestamps.at(-1);return e===void 0||t===void 0?NaN:t-e}onReset(){this.values=[],this.timestamps=[]}filterData(e){let t={value:e.at(-1),at:performance.now()},n=e.map(e=>({at:performance.now(),value:e}));if(this.storeIntermediate)this.values.push(...e),this.timestamps.push(...n.map(e=>e.at));else switch(this.values.length){case 0:this.values.push(t.value),this.timestamps.push(t.at);break;case 2:this.values[1]=t.value,this.timestamps[1]=t.at;break;case 1:this.values.push(t.value),this.timestamps.push(t.at);break}return n}},_=class extends g{#e=0;#t=2**53-1;#n=-(2**53-1);difference(){if(this.last!==void 0&&this.initial!==void 0)return this.last-this.initial}relativeDifference(){if(this.last!==void 0&&this.initial!==void 0)return this.last/this.initial}onReset(){this.#t=2**53-1,this.#n=-(2**53-1),this.#e=0,super.onReset()}onTrimmed(e){this.#t=i(this.values),this.#n=o(this.values),this.#e=a(this.values)}computeResults(e){if(e.some(e=>Number.isNaN(e.value)))throw Error(`Cannot add NaN`);let t=e.map(e=>e.value);return this.#e=t.reduce((e,t)=>e+t,this.#e),this.#t=Math.min(...t,this.#t),this.#n=Math.max(...t,this.#n),{max:this.#n,min:this.#t,total:this.#e,avg:this.avg}}getMinMaxAvg(){return{min:this.#t,max:this.#n,avg:this.avg}}get max(){return this.#n}get total(){return this.#e}get min(){return this.#t}get avg(){return this.#e/this.seenCount}};const v=(e={})=>new _(e);var y=class extends _{lastMark=0;mark(){this.lastMark>0&&this.seen(performance.now()-this.lastMark),this.lastMark=performance.now()}onReset(){super.onReset(),this.lastMark=0}};const b=e=>new y(e);var x=class{#e=[];#t;#n;#r;#i;constructor(e={}){this.#n=e.resetAfterSamples??2**53-1,this.#r=e.sampleLimit??2**53-1,e.timeoutInterval&&(this.#i=c(()=>{this.reset()},e.timeoutInterval)),this.#t=performance.now()}mark(){this.#e.length>=this.#n?this.reset():this.#e.length>=this.#r&&(this.#e=this.#e.slice(1),this.#t=this.#e[0]),this.#e.push(performance.now()),this.#i&&this.#i.start()}computeIntervals(){let e=[],t=2**53-1,n=-(2**53-1),r=0,i=0,a=0;for(let o of this.#e){if(i>0){let i=o-a;t=Math.min(i,t),n=Math.max(i,n),r+=i,e.push(i)}a=o,i++}let o=e.length>0?r/e.length:0;return{min:t,max:n,avg:o}}get elapsed(){return performance.now()-this.#t}reset(){this.#e=[],this.#t=performance.now()}get perSecond(){return this.#e.length/(this.elapsed/1e3)}get perMinute(){return this.#e.length/(this.elapsed/1e3/60)}};const S=(e={})=>new x(e);var C=class extends h{values;constructor(e={}){super(e),this.values=[]}onTrimmed(e){}trimStore(e){return e>=this.values.length||(this.values=this.values.slice(-e)),this.values.length}onReset(){this.values=[]}filterData(e){let t=e.map(e=>`at`in e?e:{...e,at:Date.now()}),n=t.at(-1);if(this.storeIntermediate)this.values.push(...t);else switch(this.values.length){case 0:this.values.push(n);break;case 1:this.values.push(n);break;case 2:this.values[1]=n;break}return t}get last(){return this.values.length===1?this.values[0]:this.values.at(-1)}get initial(){return this.values.at(0)}get size(){return this.values.length}get elapsed(){if(this.values.length===0)throw Error(`No values seen yet`);return Date.now()-this.values[0].at}get timespan(){let e=this.initial,t=this.last;return!e||!t?NaN:t.at-e.at}},w=class{store;gog;constructor(e){this.store=new Map,this.gog=t(this.store,e)}get size(){return this.store.size}has(e){return this.store.has(e)}seen(e,...t){return this.getTrackedValue(e,...t).seen(...t)}getTrackedValue(e,...t){if(e===null)throw Error(`id parameter cannot be null`);if(e===void 0)throw Error(`id parameter cannot be undefined`);return this.gog(e,t[0])}delete(e){this.store.delete(e)}reset(){this.store=new Map}*ids(){yield*this.store.keys()}*tracked(){yield*this.store.values()}*trackedByAge(){let e=[...this.store.values()];e.sort((e,t)=>{let n=e.elapsed,r=t.elapsed;return n===r?0:n>r?-1:1});for(let t of e)yield t}*valuesByAge(){for(let e of this.trackedByAge())yield e.last}*last(){for(let e of this.store.values())yield e.last}*initialValues(){for(let e of this.store.values())yield e.initial}get(e){return this.store.get(e)}},T=e({FrequencyTracker:()=>p,GatedFrequencyTracker:()=>f,IntervalTracker:()=>y,NumberTracker:()=>_,ObjectTracker:()=>C,PrimitiveTracker:()=>g,RateTracker:()=>x,TrackedValueMap:()=>w,TrackerBase:()=>h,frequency:()=>m,handleChangeResult:()=>l,interval:()=>b,number:()=>v,rate:()=>S,trackBooleanChange:()=>d,trackNumberChange:()=>u});export{u as _,S as a,_ as c,h as d,p as f,d as g,l as h,x as i,v as l,m,w as n,y as o,f as p,C as r,b as s,T as t,g as u};