-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathku4es-kernel.mjs
1 lines (1 loc) · 16.9 KB
/
ku4es-kernel.mjs
1
class t{static isNull(t){return null===t}static isEmpty(e){return t.isString(e)&&""===e||t.isArray(e)&&e.length<1||t.isObjectLiteral(e)&&Object.keys(e).length<1}static isUndefined(t){return void 0===t}static isZero(t){return 0===t}static exists(e){return!(t.isUndefined(e)||t.isNull(e))}static isNullOrEmpty(e){return!t.exists(e)||t.isEmpty(e)}static isArray(t){return Array.isArray(t)}static isBool(t){return"boolean"==typeof t}static isTrue(e){return t.isBool(e)&&!0===e}static isFalse(e){return t.isBool(e)&&!1===e}static isDate(t){return t instanceof Date}static isNumber(t){return("number"==typeof t||t instanceof Number)&&!isNaN(t)}static isEven(t){return this.isNumber(t)&&!this.isZero(t)&&t%2==0}static isOdd(t){return this.isNumber(t)&&!this.isZero(t)&&!this.isEven(t)}static isString(t){return"string"==typeof t||t instanceof String}static isFunction(t){return t instanceof Function}static isAsyncFunction(e){try{return"AsyncFunction"===Object.getPrototypeOf(e).constructor.name||t.isFunction(e)&&/^async/.test(e.toString())||t.isFunction(e().then)}catch(t){return!1}}static isPromise(t){return t instanceof Promise}static isObject(e){return t.exists(e)&&"object"==typeof e&&!(t.isBool(e)||t.isNumber(e)||t.isDate(e)||t.isArray(e)||t.isString(e)||t.isFunction(e))}static isObjectLiteral(e){return t.isObject(e)&&e.constructor==={}.constructor}static isTruthy(e){return!t.isFalsy(e)}static isFalsy(e){return t.isZero(e)||t.isFalse(e)||t.isNullOrEmpty(e)||isNaN(e)}}function e(...t){return"".concat(...t)}function r(t,...e){return e.reduce(((t,e,r)=>t.replace(new RegExp(`\\{${r}\\}`,"g"),e&&e.toString?e.toString():e)),t)}function i(t){return s(n(t))}function s(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/^[\s\n]*/,""):e}function n(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/[\s\n]*$/,""):e}var a=Object.freeze({__proto__:null,build:e,capitalize:function(t=""){return(t||"").charAt(0).toUpperCase()+(t||"").slice(1).toLowerCase()},chunk:function(e,r=0){if(!t.isString(e)||Number.isNaN(r)||r<0)return[];if(r<e.length){let t=0;const i=r||e.length,s=[];for(;t<e.length;)s.push(e.slice(t,t+i)),t+=i;return s}return[e]},format:r,mask:function(e,r,i="_"){const s=e.toString().split(""),n=new RegExp(i);return t.isFunction(r)?r(e):t.isString(r)&&r.split("").reduce(((t,i)=>s.length>0&&(n.test(i)||s[0]===i&&e.indexOf(s[0])===r.indexOf(i))?t+s.shift():t+i),"")},trim:i,trimEnd:n,trimStart:s,unmask:function(e,r,i="_"){const s=new RegExp(i);return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((t,e,i)=>s.test(e)||!s.test(r.charAt(i))&&r.charAt(i)===e?t:t+e),"")}});class u{_first;_middle;_last;constructor(t="",e="",r=""){this._first=t||"",this._middle=e||"",this._last=r||""}get first(){return this._first}get middle(){return this._middle}get last(){return this._last}get full(){const e=t.isNullOrEmpty(this.middle)?"F L":"F M L";return i(this.toString(e).replace(/\s+/," "))}get initials(){const e=t.isNullOrEmpty(this.middle)?"f.l.":"f.m.l.";return i(this.toString(e).replace(/\s{2,}/,""))}equals(e){return t.exists(e)&&e.first===this.first&&e.middle===this.middle&&e.last===this.last}toString(e){const r=this.first.charAt(0),i=this.middle.charAt(0),s=this.last.charAt(0);return t.isNullOrEmpty(e)?this.full:e.replace(/([FfMmLl])/g,"{$1}").replace("{F}",this.first).replace("{M}",this.middle).replace("{L}",this.last).replace("{f}",r).replace("{m}",i).replace("{l}",s)}}var o=t=>t.reduce(((t,e)=>(t.includes(e)||t.push(e),t)),[]);class c{_list;_head;constructor(t){this._list=t,this._head=0}get isEmpty(){return this.length<1}get index(){return this._head}get length(){return this._list.length}get current(){return this._list[this._head]}get next(){const{length:t}=this;let e=this._head;return this._head=e++<t-1?e:0,this.current}get prev(){const{length:t}=this;let e=this._head;return this._head=--e<0?t-1:e,this.current}get peekNext(){const{length:t}=this,e=this._head;return this._list[e+1<t?e+1:0]}get peekPrev(){const{length:t}=this,e=this._head;return this._list[e-1<0?t-1:e-1]}}function h(t,e){try{return t()}catch{return e}}let l;h.async=async(t,e)=>{try{return await t()}catch{return e}};class d{constructor(t,e,r){if(e<1||e>12)throw new Error("Invalid month at Assert.DayPoint");if(r<1||r>y(e,t))throw new Error("Invalid date at DayPoint");this._value=arguments.length>=3?new Date(t,e-1,r):new Date,this._day=this._value.getDay(),this._date=r,this._month=e,this._year=t}get value(){return this._value}get day(){return this._day}get date(){return this._date}get month(){return this._month}get year(){return this._year}get shortYear(){const t=this._year.toString();return parseInt(t.substr(t.length-2))}get isWeekday(){const t=this._day;return t>0&&t<6}get isWeekend(){return!this.isWeekday}get isLeapYear(){return f(this._year)}get nextDay(){return p(this,1,0,0)}get prevDay(){return p(this,-1,0,0)}get nextMonth(){return p(this,0,1,0)}get prevMonth(){return p(this,0,-1,0)}get nextYear(){return p(this,0,0,1)}get prevYear(){return p(this,0,0,-1)}get firstDayOfMonth(){return new d(this._year,this._month,1)}get lastDayOfMonth(){return new d(this._year,this._month,y(this._month,this._year))}add(t,e,r){function i(t,e,r){let i=t,s=e;for(;s--;)i=i[r];return i}const{abs:s}=Math,n=s(t),a=s(r),u=s(e),o=r<0?"prevDay":"nextDay",c=e<0?"prevMonth":"nextMonth";return i(i(i(this,n,t<0?"prevYear":"nextYear"),u,c),a,o)}isBefore(t){return!(this.isAfter(t)||this.equals(t))}isAfter(t){const e=this._year,r=t.year,i=this._month,s=t.month;return e>r||(e===r&&i>s||e===r&&i===s&&this._date>t.date)}equals(t){return this._year===t.year&&this._month===t.month&&this._date===t.date}toString(t="mm/dd/yyyy"){const e=/y{3,}/i.test(t)?this._year:this.shortYear,i=this._month,s=this._date,n=/m{2}/i.test(t)&&i<10?"0{1}":"{1}",a=/d{2}/i.test(t)&&s<10?"0{2}":"{2}";return r(t.replace(/y+/gi,"{0}").replace(/m+/gi,n).replace(/d+/gi,a),e,i,s)}toDate(){return this._value}toJson(){return this._value.toJSON()}static canParse(e){return t.isString(e)||t.isNumber(e)||t.isDate(e)?!isNaN(new Date(e).valueOf()):e instanceof d}static parse(e){if(e instanceof d)return e;let s=t.isString(e)?i(e).replace(/T\d{2}:\d{2}:\d{2}(.\d+)?Z/,""):e;if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(s)){const t=s.split("-"),[e]=t;t.push(e),t.shift(),s=t.join("/")}const n=new Date(s);if(!t.exists(s)||Number.isNaN(n.valueOf()))throw new Error(r("Cannot parse value= {0}",s));return new d(n.getFullYear(),n.getMonth()+1,n.getDate())}static tryParse(t){return h((()=>d.parse(t)),null)}static assumeNow(t){l=d.parse(t)}static get today(){return l||d.parse(new Date)}}function y(e,r){return 2===e?f(r)?29:28:e<8&&t.isEven(e)||e>7&&t.isOdd(e)?30:31}function f(t){const r=t.toString().split(/\B/);return parseFloat(e(r[r.length-2],r[r.length-1]))%4==0}function p(t,e,r,i){const s=t.month,n=t.year,a=t.date,u=r,o=i;let c=a+e,h=s+u,l=n+o;if(a+e>y(s,n)&&(c=1,h=s+u+1),a+e<1){const e=t.prevMonth;c=y(e.month,e.year),h=s+u-1}return h>12&&(h=1,l=n+o+1),h<1&&(h=12,l=n+o-1),new d(l,h,c)}function m(t,e=0){const r=Math.pow(10,-e);return Math.round(parseFloat((t*r).toFixed(Math.abs(e))))/r}function g(t,e=0){return m(t+5*Math.pow(10,e-1),e)}function _(t,e=0){if(0===t)return 0;return m(t-5*Math.pow(10,e-1),e)}function w(t,e=0){return t<0?g(t,e):_(t,e)}function x(t){const e=(t,r=0,i=1)=>0<t?e(--t,i,r+i):r;return e(t)}function v(t){let e=0,r=1,i=0;for(;t>1;)i=e,e=r,r+=i,t--;return t<1?e:r}function b(t,e=0){const r=parseInt(t);return Number.isNaN(r)?e:r}var N=Object.freeze({__proto__:null,fib:x,fib2:v,fib2Array:function(t){return Array(t).fill(0).map((()=>v(--t))).reverse()},fibArray:function(t){return Array(t).fill(0).map((()=>x(--t))).reverse()},gcd:function t(e,r){return 0===r?Math.abs(e):t(r,e%r)},random:function(t=0,e=1){return Math.random()*(e-t)+t},round:m,roundDown:_,roundTowardZero:w,roundUp:g,tryParseFloat:function(t,e=0){const r=parseFloat(t);return Number.isNaN(r)?e:r},tryParseInt:b});class S{constructor(e=0,r){if(!t.isNumber(e))throw new Error("Money requires valid numeric amount.");const i=w(e);this._cents=/\./.test(e)?parseFloat(e.toString().replace(/\d+\./,".")):0,this._dollars=i,this._currency=r||"$",this._value=e}get cents(){return this._cents}get dollars(){return this._dollars}get currency(){return this._currency}get value(){return this._value}add(t){return A(this,t),new S(this.value+t.value,this.currency)}subtract(t){return A(this,t),new S(this.value-t.value,this.currency)}multiply(e){if(!t.isNumber(e))throw new Error(`Invalid factor ${e}`);return new S(this.value*e,this.currency)}divide(e){if(!t.isNumber(e))throw new Error(`Invalid divisor ${e}`);return new S(this.value/e,this.currency)}equals(t){return this.isOfCurrency(t)&&this.value===t.value}isGreaterThan(t){return A(this,t),this.value>t.value}isLessThan(t){return A(this,t),this.value<t.value}get nearestWhole(){return new S(m(this.value,0),this.currency)}get nearestDollar(){return this.nearestWhole}round(t=-2){return new S(m(this.value,t),this.currency)}roundDown(t=-2){return new S(_(this.value,t),this.currency)}roundUp(t=-2){return new S(g(this.value,t),this.currency)}exchange(t,e){return new S(this.multiply(t).value,e)}isOfCurrency(t){return this.currency===t.currency}toString(t="d.c2",e){const[,r,i]=/d(.)c(\d+)/.exec(t),s=e||{".":",",",":"."}[r],n=function(t,e){if(0===t)return"0";const r=t.toString().replace(/[^\d]/,"").split(/\B/);let i=0;return r.reverse().reduce(((t,r)=>(i>0&&!(i%3)&&(t.push(e),i=0),t.push(r),i++,t)),[]).reverse().join("").replace(/[^\d]$/,"")}(this.dollars,s||","),a=function(t,e){const r=t.toString().replace(/[^\d]|0\./g,""),i="0".repeat(e);return`${r}${i}`.slice(0,e)}(this.cents,b(i,2)),u=`${this.currency}${n}${r}${a}`;return this.value<0?`(${u})`:u}static zero(t){return new S(0,t)}static isMoney(t){return t instanceof S}static canParse(t){try{return S.parse(t),!0}catch(t){return!1}}static parse(e){if(t.isNumber(e))return new S(e);let r=e;if(/,\d{2}$/.test(e)){const t=e.split(","),i=t.pop();r=`${t.join().replace(/\./g,",")}.${i}`}const i=/(\(.*\))|(-)/.test(r),s=i?1:0,n=r.match(/[^\d.,-]/g),a=t.isArray(n)?n[s]:null,u=parseFloat(r.replace(/[^\d.]/g,""));return new S(i?-u:u,a)}static tryParse(t){return h((()=>S.parse(t)),null)}}function A(t,e){if(!t.isOfCurrency(e))throw new Error(`Invalid operation on non-conforming currencies. ${t.currency} !== ${e.currency}`)}class O{constructor(e=0,r=0){if(!t.isNumber(e)||!t.isNumber(r))throw new Error("Coord requires numeric x and y values");this._x=e,this._y=r}get x(){return this._x}get y(){return this._y}get value(){return{x:this.x,y:this.y}}get half(){return this.divide(new O(2,2))}get abs(){return new O(Math.abs(this.x),Math.abs(this.y))}equals(t){return this.x===t.x&&this.y===t.y}add(t){return new O(this.x+t.x,this.y+t.y)}subtract(t){return new O(this.x-t.x,this.y-t.y)}multiply(t){return new O(this.x*t.x,this.y*t.y)}divide(t){return new O(this.x/t.x,this.y/t.y)}round(t=0){return new O(m(this.x,t),m(this.y,t))}toString(){return`(${this.x},${this.y})`}static canParse(e){return t.isArray(e)?!(Number.isNaN(e[0])||Number.isNaN(e[1])):t.isObjectLiteral(e)&&"x"in e&&"y"in e?!(Number.isNaN(e.x)||Number.isNaN(e.y)):e instanceof O}static parse(e){return t.exists(e)?e instanceof O?e:t.isArray(e)?new O(e[0],e[1]):t.isObjectLiteral(e)&&t.exists(e.x)&&t.exists(e.y)?new O(e.x,e.y):null:null}static tryParse(t){return h((()=>O.parse(t)),null)}}class $ extends O{constructor(t=0,e=0){super(t,e),this._lengthSquared=Math.pow(t,2)+Math.pow(e,2),this._magnitude=Math.sqrt(this._lengthSquared),this._unitNormalX=0===t&&0===e?0:t/this._magnitude,this._unitNormalY=0===t&&0===e?0:e/this._magnitude}get magnitude(){return this._magnitude}get isZero(){return 0===this.x&&0===this.y}get normal(){return new $(this._unitNormalX,this._unitNormalY)}get invert(){return new $(-this.x,-this.y)}get norm(){return new $(Math.abs(this.x),Math.abs(this.y))}get perpendicular(){return new $(-this.y,this.x)}equals(t){return t instanceof $&&this.x===t.x&&this.y===t.y}add(t){return t instanceof $?new $(this.x+t.x,this.y+t.y):null}dot(t){return t instanceof $?this.x*t.x+this.y*t.y:null}perpendicularAtTo(t){if(!(t instanceof $))return null;const e=t.add(this.projectionOfOnto(t).invert);return new $(e.x,e.y)}projectionOfOnto(t){if(!(t instanceof $))return null;const e=t.normal.scale(this.dot(t.normal));return new $(e.x,e.y)}scale(t){return new $(this.x*t,this.y*t)}unitNormalDot(t){return t instanceof $?this.normal.x*t.normal.x+this.normal.y*t.normal.y:null}reflect(t){if(!(t instanceof $))return null;if(t.isZero)return this;const e=t.normal;return this.add(e.scale(2*e.dot(this)).invert)}round(t=0){return new $(m(this.x,t),m(this.y,t))}}class F extends O{constructor(t,e){super(t,e)}isAbove(t){return this.y<t.y}isBelow(t){return this.y>t.y}isLeftOf(t){return this.x<t.x}isRightOf(t){return this.x>t.x}distanceFrom(t){return new $(this.x-t.x,this.y-t.y)}distanceTo(t){return this.distanceFrom(t).invert}static canParse(t){return t instanceof F||O.canParse(t)}static parse(t){if(t instanceof F)return t;const e=O.parse(t);return new F(e.x,e.y)}static tryParse(t){return h((()=>F.parse(t)),null)}}class M{constructor(t=0,e=0,r=0,i=0){this.origin=new F(t,e),this.dimensions=new O(r,i),this.diagonal=F.parse(this.origin.add(this.dimensions)),this.center=this.diagonal.half}contains(t){return this.origin.isAbove(t)&&this.origin.isLeftOf(t)&&this.diagonal.isRightOf(t)&&this.diagonal.isBelow(t)}aspectToFit(t){const e=this.dimensions,r=t.dimensions,i=r.x,s=r.y;let n=e.x,a=e.y;return n>a&&0!==n?(a*=i/n,n=i,a>s&&(a=s,n*=a/e.y)):a>s&&(n*=s/a,a=s),new M(this.origin.x,this.origin.y,n,a)}}class B{constructor(){if(this.constructor===B)throw new Error("Cannot instantiate abstract class: AbstractSpecification")}and(t){return new E(this,t)}or(t){return new I(this,t)}xor(t){return new D(this,t)}not(t){return new T(this,t)}isSatisfiedBy(){throw new Error("Abstract method must be implemented.")}}class E extends B{constructor(t,e){super(),this._specificationA=t,this._specificationB=e}isSatisfiedBy(t){return this._specificationA.isSatisfiedBy(t)&&this._specificationB.isSatisfiedBy(t)}}class I extends B{constructor(t,e){super(),this._specificationA=t,this._specificationB=e}isSatisfiedBy(t){return this._specificationA.isSatisfiedBy(t)||this._specificationB.isSatisfiedBy(t)}}class D extends B{constructor(t,e){super(),this._specificationA=t,this._specificationB=e}isSatisfiedBy(t){return!this._specificationA.isSatisfiedBy(t)!=!this._specificationB.isSatisfiedBy(t)}}class T extends B{constructor(t){super(),this._specification=t}isSatisfiedBy(t){return!this._specification.isSatisfiedBy(t)}}class P{constructor(){if(this.constructor===P)throw new Error("Cannot instantiate abstract class.")}execute(){throw new Error("Abstract method must be implemented.")}}var j=(t,e,r=!1)=>{let i;return(...s)=>{const n=r&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,r||t(...s)}),e),n&&t(...s)}},z=(e,r)=>t.isPromise(e)||t.isAsyncFunction(e)?t.isFunction(e.then)?e.then((t=>t&&r())):e().then((t=>t&&r())):t.isFunction(e)&&e?e()&&r():t.isTrue(e)&&r();class L{_milliseconds;_intervalId;_didInterval;constructor(t){this._milliseconds=t}get isRunning(){return t.exists(this._intervalId)}onInterval(t){return this.clear(),this._didInterval=t,this}start(){return this.clear(),this._intervalId=setInterval((()=>{this._didInterval()}),this._milliseconds),this}clear(){return clearInterval(this._intervalId),this._intervalId=null,this}}var q=t=>setTimeout(t,0);class C{_milliseconds;_timeoutId;_didTimeout;constructor(t){this._milliseconds=t}get isRunning(){return t.exists(this._timeoutId)}onTimeout(t){return this.clear(),this._didTimeout=t,this}start(){return this.clear(),this._timeoutId=setTimeout((()=>{this._didTimeout()}),this._milliseconds),this}clear(){return clearTimeout(this._timeoutId),this._timeoutId=null,this}}var Y=t=>new Promise((e=>setTimeout(e,t)));function k(t){const e=isNaN(parseInt(t))||t<0||t>24?24:t,r=Math.random().toString().substring(2),i=Math.random().toString().substring(2);return r.concat(i).substring(0,e)}function Z(){return function t(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}var R=Object.freeze({__proto__:null,suid:function(){return Symbol(k())},suuid:function(){return Symbol(Z())},uid:k,uuid:Z});var U=Object.freeze({__proto__:null,alpha:/^[A-z]+$/,alphaNumeric:/^[A-z0-9]+$/,base64:/^[A-z0-9=]+$/,dataUrl:/^\s*data:([a-z]+\/[a-z0-9+-]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=._~:@/?%\s-]*\s*$/i,email:/^\w+([.\w-+]+)?@\w+([.\w-]+)?\.[A-Za-z0-9]{2,}$/,empty:/^$/,escape:t=>t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),numeric:/^-?[0-9]+$/,pattern:t=>t.toString().replace(/(^\/)|(\/$)/g,"").replace(/\\/g,"\\"),script:/(<script[A-z0-9\n\s\t\r.={([\])}'",;!&|$/_:<>*?+\u0000-\u0037\u00C2\u00A0\u2122-]*?<\/script>)/,uid:/^\d{14,}$/i,url:/^(https?:\/\/)?[^{}\\]+\.[A-z0-9]{2,12}(\/[^?\s]+)*\/?(\?([^=?]+=[^=?]*(&[^=?]+=[^=?]*)*(_.*)?)?)?$/,uuid:/^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$/i});export{B as AbstractSpecification,P as AbstractStrategy,t as Assert,O as Coord,d as DayPoint,L as Interval,S as Money,u as Name,F as Point,M as Rectangle,c as Rolodex,C as Timeout,$ as Vector,j as debounce,o as deduplicate,z as feature,R as identity,N as math,q as nextTick,h as opt,U as regex,a as string,Y as wait};