@transitive-sdk/utils-web 0.10.1 → 0.10.3
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.
- package/dist/utils-web.js +1 -15
- package/dist/utils-web.js.map +7 -0
- package/esbuild.js +5 -7
- package/package.json +2 -2
package/dist/utils-web.js
CHANGED
|
@@ -1,15 +1 @@
|
|
|
1
|
-
var tn=Object.create;var Ne=Object.defineProperty;var rn=Object.getOwnPropertyDescriptor;var sn=Object.getOwnPropertyNames;var nn=Object.getPrototypeOf,on=Object.prototype.hasOwnProperty;var v=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Dt=(t,e)=>{for(var r in e)Ne(t,r,{get:e[r],enumerable:!0})},Re=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of sn(e))!on.call(t,n)&&n!==r&&Ne(t,n,{get:()=>e[n],enumerable:!(s=rn(e,n))||s.enumerable});return t},A=(t,e,r)=>(Re(t,e,"default"),r&&Re(r,e,"default")),D=(t,e,r)=>(r=t!=null?tn(nn(t)):{},Re(e||!t||!t.__esModule?Ne(r,"default",{value:t,enumerable:!0}):r,t)),an=t=>Re(Ne({},"__esModule",{value:!0}),t);var Je=v((Fi,Ae)=>{(function(){"use strict";var t={}.hasOwnProperty,e="[native code]";function r(){for(var s=[],n=0;n<arguments.length;n++){var o=arguments[n];if(o){var i=typeof o;if(i==="string"||i==="number")s.push(o);else if(Array.isArray(o)){if(o.length){var a=r.apply(null,o);a&&s.push(a)}}else if(i==="object"){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){s.push(o.toString());continue}for(var l in o)t.call(o,l)&&o[l]&&s.push(l)}}}return s.join(" ")}typeof Ae<"u"&&Ae.exports?(r.default=r,Ae.exports=r):typeof define=="function"&&typeof define.amd=="object"&&define.amd?define("classnames",[],function(){return r}):window.classNames=r})()});var Jt=v((zi,Wt)=>{Wt.exports=()=>{try{return require("react-web-component-style-loader/exports").styleElements}catch{return[]}}});var Qt=v((Qi,zt)=>{zt.exports=function(e){if(!e.attributes)return{};let r={},s,o=[...e.attributes].map(i=>({[i.name]:i.value}));for(s of o){let i=Object.keys(s)[0],a=i.replace(/-([a-z])/g,l=>l[1].toUpperCase());r[a]=s[i]}return r}});var Yt=v((Ki,Kt)=>{var gn=require("react"),mn=require("react-dom"),bn=require("react-shadow-dom-retarget-events"),yn=Jt(),En=Qt(),vn={attachedCallback:"webComponentAttached",connectedCallback:"webComponentConnected",disconnectedCallback:"webComponentDisconnected",adoptedCallback:"webComponentAdopted"};Kt.exports={create:(t,e,r=!0,s=void 0)=>{let n=class extends HTMLElement{instance=null;callConstructorHook(){this.instance.webComponentConstructed&&this.instance.webComponentConstructed.apply(this.instance,[this])}callLifeCycleHook(o,i=[]){let a=vn[o];a&&this.instance&&this.instance[a]&&this.instance[a].apply(this.instance,i)}connectedCallback(){let o=this,i=o;if(r){let a=o.attachShadow({mode:"open"});i=document.createElement("div"),yn().forEach(c=>{a.appendChild(c.cloneNode(a))}),a.appendChild(i),bn(a)}mn.render(gn.createElement(t,En(o)),i,function(){o.instance=this,o.callConstructorHook(),o.callLifeCycleHook("connectedCallback")})}disconnectedCallback(){this.callLifeCycleHook("disconnectedCallback")}adoptedCallback(o,i){this.callLifeCycleHook("adoptedCallback",[o,i])}call(o,i){return s?.current?.[o]?.call(s?.current,i)}getConfig(){return this.instance.state.config}};return customElements.define(e,n),n}}});var ge=v((Zi,Zt)=>{var xn=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};Zt.exports=xn});var Ze=v((ea,er)=>{var $n="2.0.0",wn=Number.MAX_SAFE_INTEGER||9007199254740991,Tn=16;er.exports={SEMVER_SPEC_VERSION:$n,MAX_LENGTH:256,MAX_SAFE_INTEGER:wn,MAX_SAFE_COMPONENT_LENGTH:Tn}});var Ce=v((W,tr)=>{var{MAX_SAFE_COMPONENT_LENGTH:et}=Ze(),On=ge();W=tr.exports={};var In=W.re=[],d=W.src=[],p=W.t={},Rn=0,b=(t,e,r)=>{let s=Rn++;On(s,e),p[t]=s,d[s]=e,In[s]=new RegExp(e,r?"g":void 0)};b("NUMERICIDENTIFIER","0|[1-9]\\d*");b("NUMERICIDENTIFIERLOOSE","[0-9]+");b("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");b("MAINVERSION",`(${d[p.NUMERICIDENTIFIER]})\\.(${d[p.NUMERICIDENTIFIER]})\\.(${d[p.NUMERICIDENTIFIER]})`);b("MAINVERSIONLOOSE",`(${d[p.NUMERICIDENTIFIERLOOSE]})\\.(${d[p.NUMERICIDENTIFIERLOOSE]})\\.(${d[p.NUMERICIDENTIFIERLOOSE]})`);b("PRERELEASEIDENTIFIER",`(?:${d[p.NUMERICIDENTIFIER]}|${d[p.NONNUMERICIDENTIFIER]})`);b("PRERELEASEIDENTIFIERLOOSE",`(?:${d[p.NUMERICIDENTIFIERLOOSE]}|${d[p.NONNUMERICIDENTIFIER]})`);b("PRERELEASE",`(?:-(${d[p.PRERELEASEIDENTIFIER]}(?:\\.${d[p.PRERELEASEIDENTIFIER]})*))`);b("PRERELEASELOOSE",`(?:-?(${d[p.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[p.PRERELEASEIDENTIFIERLOOSE]})*))`);b("BUILDIDENTIFIER","[0-9A-Za-z-]+");b("BUILD",`(?:\\+(${d[p.BUILDIDENTIFIER]}(?:\\.${d[p.BUILDIDENTIFIER]})*))`);b("FULLPLAIN",`v?${d[p.MAINVERSION]}${d[p.PRERELEASE]}?${d[p.BUILD]}?`);b("FULL",`^${d[p.FULLPLAIN]}$`);b("LOOSEPLAIN",`[v=\\s]*${d[p.MAINVERSIONLOOSE]}${d[p.PRERELEASELOOSE]}?${d[p.BUILD]}?`);b("LOOSE",`^${d[p.LOOSEPLAIN]}$`);b("GTLT","((?:<|>)?=?)");b("XRANGEIDENTIFIERLOOSE",`${d[p.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);b("XRANGEIDENTIFIER",`${d[p.NUMERICIDENTIFIER]}|x|X|\\*`);b("XRANGEPLAIN",`[v=\\s]*(${d[p.XRANGEIDENTIFIER]})(?:\\.(${d[p.XRANGEIDENTIFIER]})(?:\\.(${d[p.XRANGEIDENTIFIER]})(?:${d[p.PRERELEASE]})?${d[p.BUILD]}?)?)?`);b("XRANGEPLAINLOOSE",`[v=\\s]*(${d[p.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[p.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[p.XRANGEIDENTIFIERLOOSE]})(?:${d[p.PRERELEASELOOSE]})?${d[p.BUILD]}?)?)?`);b("XRANGE",`^${d[p.GTLT]}\\s*${d[p.XRANGEPLAIN]}$`);b("XRANGELOOSE",`^${d[p.GTLT]}\\s*${d[p.XRANGEPLAINLOOSE]}$`);b("COERCE",`(^|[^\\d])(\\d{1,${et}})(?:\\.(\\d{1,${et}}))?(?:\\.(\\d{1,${et}}))?(?:$|[^\\d])`);b("COERCERTL",d[p.COERCE],!0);b("LONETILDE","(?:~>?)");b("TILDETRIM",`(\\s*)${d[p.LONETILDE]}\\s+`,!0);W.tildeTrimReplace="$1~";b("TILDE",`^${d[p.LONETILDE]}${d[p.XRANGEPLAIN]}$`);b("TILDELOOSE",`^${d[p.LONETILDE]}${d[p.XRANGEPLAINLOOSE]}$`);b("LONECARET","(?:\\^)");b("CARETTRIM",`(\\s*)${d[p.LONECARET]}\\s+`,!0);W.caretTrimReplace="$1^";b("CARET",`^${d[p.LONECARET]}${d[p.XRANGEPLAIN]}$`);b("CARETLOOSE",`^${d[p.LONECARET]}${d[p.XRANGEPLAINLOOSE]}$`);b("COMPARATORLOOSE",`^${d[p.GTLT]}\\s*(${d[p.LOOSEPLAIN]})$|^$`);b("COMPARATOR",`^${d[p.GTLT]}\\s*(${d[p.FULLPLAIN]})$|^$`);b("COMPARATORTRIM",`(\\s*)${d[p.GTLT]}\\s*(${d[p.LOOSEPLAIN]}|${d[p.XRANGEPLAIN]})`,!0);W.comparatorTrimReplace="$1$2$3";b("HYPHENRANGE",`^\\s*(${d[p.XRANGEPLAIN]})\\s+-\\s+(${d[p.XRANGEPLAIN]})\\s*$`);b("HYPHENRANGELOOSE",`^\\s*(${d[p.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[p.XRANGEPLAINLOOSE]})\\s*$`);b("STAR","(<|>)?=?\\s*\\*");b("GTE0","^\\s*>=\\s*0.0.0\\s*$");b("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Le=v((ta,rr)=>{var Nn=["includePrerelease","loose","rtl"],An=t=>t?typeof t!="object"?{loose:!0}:Nn.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};rr.exports=An});var ir=v((ra,or)=>{var sr=/^[0-9]+$/,nr=(t,e)=>{let r=sr.test(t),s=sr.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:t<e?-1:1},Sn=(t,e)=>nr(e,t);or.exports={compareIdentifiers:nr,rcompareIdentifiers:Sn}});var be=v((sa,ur)=>{var Pe=ge(),{MAX_LENGTH:ar,MAX_SAFE_INTEGER:qe}=Ze(),{re:lr,t:cr}=Ce(),Cn=Le(),{compareIdentifiers:me}=ir(),tt=class t{constructor(e,r){if(r=Cn(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>ar)throw new TypeError(`version is longer than ${ar} characters`);Pe("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=e.trim().match(r.loose?lr[cr.LOOSE]:lr[cr.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>qe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>qe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>qe||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let o=+n;if(o>=0&&o<qe)return o}return n}):this.prerelease=[],this.build=s[5]?s[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(Pe("SemVer.compare",this.version,this.options,e),!(e instanceof t)){if(typeof e=="string"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(e,this.options)),me(this.major,e.major)||me(this.minor,e.minor)||me(this.patch,e.patch)}comparePre(e){if(e instanceof t||(e=new t(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let s=this.prerelease[r],n=e.prerelease[r];if(Pe("prerelease compare",r,s,n),s===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(s===void 0)return-1;if(s===n)continue;return me(s,n)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let s=this.build[r],n=e.build[r];if(Pe("prerelease compare",r,s,n),s===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(s===void 0)return-1;if(s===n)continue;return me(s,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);s===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};ur.exports=tt});var J=v((na,hr)=>{var fr=be(),Ln=(t,e,r)=>new fr(t,r).compare(new fr(e,r));hr.exports=Ln});var pr=v((oa,dr)=>{"use strict";dr.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var mr=v((ia,gr)=>{"use strict";gr.exports=O;O.Node=Z;O.create=O;function O(t){var e=this;if(e instanceof O||(e=new O),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,s=arguments.length;r<s;r++)e.push(arguments[r]);return e}O.prototype.removeNode=function(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};O.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};O.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};O.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)qn(this,arguments[t]);return this.length};O.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)Dn(this,arguments[t]);return this.length};O.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};O.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};O.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,s=0;r!==null;s++)t.call(e,r.value,s,this),r=r.next};O.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,s=this.length-1;r!==null;s--)t.call(e,r.value,s,this),r=r.prev};O.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};O.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};O.prototype.map=function(t,e){e=e||this;for(var r=new O,s=this.head;s!==null;)r.push(t.call(e,s.value,this)),s=s.next;return r};O.prototype.mapReverse=function(t,e){e=e||this;for(var r=new O,s=this.tail;s!==null;)r.push(t.call(e,s.value,this)),s=s.prev;return r};O.prototype.reduce=function(t,e){var r,s=this.head;if(arguments.length>1)r=e;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;s!==null;n++)r=t(r,s.value,n),s=s.next;return r};O.prototype.reduceReverse=function(t,e){var r,s=this.tail;if(arguments.length>1)r=e;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;s!==null;n--)r=t(r,s.value,n),s=s.prev;return r};O.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};O.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};O.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new O;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var s=0,n=this.head;n!==null&&s<t;s++)n=n.next;for(;n!==null&&s<e;s++,n=n.next)r.push(n.value);return r};O.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new O;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var s=this.length,n=this.tail;n!==null&&s>e;s--)n=n.prev;for(;n!==null&&s>t;s--,n=n.prev)r.push(n.value);return r};O.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var s=0,n=this.head;n!==null&&s<t;s++)n=n.next;for(var o=[],s=0;n&&s<e;s++)o.push(n.value),n=this.removeNode(n);n===null&&(n=this.tail),n!==this.head&&n!==this.tail&&(n=n.prev);for(var s=0;s<r.length;s++)n=Pn(this,n,r[s]);return o};O.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var s=r.prev;r.prev=r.next,r.next=s}return this.head=e,this.tail=t,this};function Pn(t,e,r){var s=e===t.head?new Z(r,null,e,t):new Z(r,e,e.next,t);return s.next===null&&(t.tail=s),s.prev===null&&(t.head=s),t.length++,s}function qn(t,e){t.tail=new Z(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function Dn(t,e){t.head=new Z(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function Z(t,e,r,s){if(!(this instanceof Z))return new Z(t,e,r,s);this.list=s,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{pr()(O)}catch{}});var xr=v((aa,vr)=>{"use strict";var Fn=mr(),ee=Symbol("max"),H=Symbol("length"),ne=Symbol("lengthCalculator"),Ee=Symbol("allowStale"),te=Symbol("maxAge"),U=Symbol("dispose"),br=Symbol("noDisposeOnSet"),S=Symbol("lruList"),G=Symbol("cache"),Er=Symbol("updateAgeOnGet"),rt=()=>1,nt=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[ee]=e.max||1/0,s=e.length||rt;if(this[ne]=typeof s!="function"?rt:s,this[Ee]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[te]=e.maxAge||0,this[U]=e.dispose,this[br]=e.noDisposeOnSet||!1,this[Er]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[ee]=e||1/0,ye(this)}get max(){return this[ee]}set allowStale(e){this[Ee]=!!e}get allowStale(){return this[Ee]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[te]=e,ye(this)}get maxAge(){return this[te]}set lengthCalculator(e){typeof e!="function"&&(e=rt),e!==this[ne]&&(this[ne]=e,this[H]=0,this[S].forEach(r=>{r.length=this[ne](r.value,r.key),this[H]+=r.length})),ye(this)}get lengthCalculator(){return this[ne]}get length(){return this[H]}get itemCount(){return this[S].length}rforEach(e,r){r=r||this;for(let s=this[S].tail;s!==null;){let n=s.prev;yr(this,e,s,r),s=n}}forEach(e,r){r=r||this;for(let s=this[S].head;s!==null;){let n=s.next;yr(this,e,s,r),s=n}}keys(){return this[S].toArray().map(e=>e.key)}values(){return this[S].toArray().map(e=>e.value)}reset(){this[U]&&this[S]&&this[S].length&&this[S].forEach(e=>this[U](e.key,e.value)),this[G]=new Map,this[S]=new Fn,this[H]=0}dump(){return this[S].map(e=>De(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[S]}set(e,r,s){if(s=s||this[te],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let n=s?Date.now():0,o=this[ne](r,e);if(this[G].has(e)){if(o>this[ee])return oe(this,this[G].get(e)),!1;let l=this[G].get(e).value;return this[U]&&(this[br]||this[U](e,l.value)),l.now=n,l.maxAge=s,l.value=r,this[H]+=o-l.length,l.length=o,this.get(e),ye(this),!0}let i=new ot(e,r,o,n,s);return i.length>this[ee]?(this[U]&&this[U](e,r),!1):(this[H]+=i.length,this[S].unshift(i),this[G].set(e,this[S].head),ye(this),!0)}has(e){if(!this[G].has(e))return!1;let r=this[G].get(e).value;return!De(this,r)}get(e){return st(this,e,!0)}peek(e){return st(this,e,!1)}pop(){let e=this[S].tail;return e?(oe(this,e),e.value):null}del(e){oe(this,this[G].get(e))}load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let n=e[s],o=n.e||0;if(o===0)this.set(n.k,n.v);else{let i=o-r;i>0&&this.set(n.k,n.v,i)}}}prune(){this[G].forEach((e,r)=>st(this,r,!1))}},st=(t,e,r)=>{let s=t[G].get(e);if(s){let n=s.value;if(De(t,n)){if(oe(t,s),!t[Ee])return}else r&&(t[Er]&&(s.value.now=Date.now()),t[S].unshiftNode(s));return n.value}},De=(t,e)=>{if(!e||!e.maxAge&&!t[te])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[te]&&r>t[te]},ye=t=>{if(t[H]>t[ee])for(let e=t[S].tail;t[H]>t[ee]&&e!==null;){let r=e.prev;oe(t,e),e=r}},oe=(t,e)=>{if(e){let r=e.value;t[U]&&t[U](r.key,r.value),t[H]-=r.length,t[G].delete(r.key),t[S].removeNode(e)}},ot=class{constructor(e,r,s,n,o){this.key=e,this.value=r,this.length=s,this.now=n,this.maxAge=o||0}},yr=(t,e,r,s)=>{let n=r.value;De(t,n)&&(oe(t,r),t[Ee]||(n=void 0)),n&&e.call(s,n.value,n.key,t)};vr.exports=nt});var wr=v((la,$r)=>{var Bn=J(),Mn=(t,e,r)=>Bn(t,e,r)===0;$r.exports=Mn});var Or=v((ca,Tr)=>{var kn=J(),jn=(t,e,r)=>kn(t,e,r)!==0;Tr.exports=jn});var it=v((ua,Ir)=>{var Gn=J(),_n=(t,e,r)=>Gn(t,e,r)>0;Ir.exports=_n});var Nr=v((fa,Rr)=>{var Un=J(),Hn=(t,e,r)=>Un(t,e,r)>=0;Rr.exports=Hn});var Sr=v((ha,Ar)=>{var Vn=J(),Xn=(t,e,r)=>Vn(t,e,r)<0;Ar.exports=Xn});var Lr=v((da,Cr)=>{var Wn=J(),Jn=(t,e,r)=>Wn(t,e,r)<=0;Cr.exports=Jn});var qr=v((pa,Pr)=>{var zn=wr(),Qn=Or(),Kn=it(),Yn=Nr(),Zn=Sr(),eo=Lr(),to=(t,e,r,s)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return zn(t,r,s);case"!=":return Qn(t,r,s);case">":return Kn(t,r,s);case">=":return Yn(t,r,s);case"<":return Zn(t,r,s);case"<=":return eo(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};Pr.exports=to});var jr=v((ga,kr)=>{var ve=Symbol("SemVer ANY"),ct=class t{static get ANY(){return ve}constructor(e,r){if(r=ro(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}lt("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===ve?this.value="":this.value=this.operator+this.semver.version,lt("comp",this)}parse(e){let r=this.options.loose?Dr[Fr.COMPARATORLOOSE]:Dr[Fr.COMPARATOR],s=e.match(r);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new Br(s[2],this.options.loose):this.semver=ve}toString(){return this.value}test(e){if(lt("Comparator.test",e,this.options.loose),this.semver===ve||e===ve)return!0;if(typeof e=="string")try{e=new Br(e,this.options)}catch{return!1}return at(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new Mr(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new Mr(this.value,r).test(e.semver);let s=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),o=this.semver.version===e.semver.version,i=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=at(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=at(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return s||n||o&&i||a||l}};kr.exports=ct;var ro=Le(),{re:Dr,t:Fr}=Ce(),at=qr(),lt=ge(),Br=be(),Mr=ut()});var ut=v((ma,Hr)=>{var ft=class t{constructor(e,r){if(r=no(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof ht)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(n=>!_r(n[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&co(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let s=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=Gr.get(s);if(n)return n;let o=this.options.loose,i=o?P[C.HYPHENRANGELOOSE]:P[C.HYPHENRANGE];e=e.replace(i,vo(this.options.includePrerelease)),N("hyphen replace",e),e=e.replace(P[C.COMPARATORTRIM],io),N("comparator trim",e,P[C.COMPARATORTRIM]),e=e.replace(P[C.TILDETRIM],ao),e=e.replace(P[C.CARETTRIM],lo),e=e.split(/\s+/).join(" ");let a=o?P[C.COMPARATORLOOSE]:P[C.COMPARATOR],l=e.split(" ").map(h=>uo(h,this.options)).join(" ").split(/\s+/).map(h=>Eo(h,this.options)).filter(this.options.loose?h=>!!h.match(a):()=>!0).map(h=>new ht(h,this.options)),c=l.length,f=new Map;for(let h of l){if(_r(h))return[h];f.set(h.value,h)}f.size>1&&f.has("")&&f.delete("");let u=[...f.values()];return Gr.set(s,u),u}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(s=>Ur(s,r)&&e.set.some(n=>Ur(n,r)&&s.every(o=>n.every(i=>o.intersects(i,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new oo(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(xo(this.set[r],e,this.options))return!0;return!1}};Hr.exports=ft;var so=xr(),Gr=new so({max:1e3}),no=Le(),ht=jr(),N=ge(),oo=be(),{re:P,t:C,comparatorTrimReplace:io,tildeTrimReplace:ao,caretTrimReplace:lo}=Ce(),_r=t=>t.value==="<0.0.0-0",co=t=>t.value==="",Ur=(t,e)=>{let r=!0,s=t.slice(),n=s.pop();for(;r&&s.length;)r=s.every(o=>n.intersects(o,e)),n=s.pop();return r},uo=(t,e)=>(N("comp",t,e),t=po(t,e),N("caret",t),t=fo(t,e),N("tildes",t),t=mo(t,e),N("xrange",t),t=yo(t,e),N("stars",t),t),q=t=>!t||t.toLowerCase()==="x"||t==="*",fo=(t,e)=>t.trim().split(/\s+/).map(r=>ho(r,e)).join(" "),ho=(t,e)=>{let r=e.loose?P[C.TILDELOOSE]:P[C.TILDE];return t.replace(r,(s,n,o,i,a)=>{N("tilde",t,s,n,o,i,a);let l;return q(n)?l="":q(o)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:q(i)?l=`>=${n}.${o}.0 <${n}.${+o+1}.0-0`:a?(N("replaceTilde pr",a),l=`>=${n}.${o}.${i}-${a} <${n}.${+o+1}.0-0`):l=`>=${n}.${o}.${i} <${n}.${+o+1}.0-0`,N("tilde return",l),l})},po=(t,e)=>t.trim().split(/\s+/).map(r=>go(r,e)).join(" "),go=(t,e)=>{N("caret",t,e);let r=e.loose?P[C.CARETLOOSE]:P[C.CARET],s=e.includePrerelease?"-0":"";return t.replace(r,(n,o,i,a,l)=>{N("caret",t,n,o,i,a,l);let c;return q(o)?c="":q(i)?c=`>=${o}.0.0${s} <${+o+1}.0.0-0`:q(a)?o==="0"?c=`>=${o}.${i}.0${s} <${o}.${+i+1}.0-0`:c=`>=${o}.${i}.0${s} <${+o+1}.0.0-0`:l?(N("replaceCaret pr",l),o==="0"?i==="0"?c=`>=${o}.${i}.${a}-${l} <${o}.${i}.${+a+1}-0`:c=`>=${o}.${i}.${a}-${l} <${o}.${+i+1}.0-0`:c=`>=${o}.${i}.${a}-${l} <${+o+1}.0.0-0`):(N("no pr"),o==="0"?i==="0"?c=`>=${o}.${i}.${a}${s} <${o}.${i}.${+a+1}-0`:c=`>=${o}.${i}.${a}${s} <${o}.${+i+1}.0-0`:c=`>=${o}.${i}.${a} <${+o+1}.0.0-0`),N("caret return",c),c})},mo=(t,e)=>(N("replaceXRanges",t,e),t.split(/\s+/).map(r=>bo(r,e)).join(" ")),bo=(t,e)=>{t=t.trim();let r=e.loose?P[C.XRANGELOOSE]:P[C.XRANGE];return t.replace(r,(s,n,o,i,a,l)=>{N("xRange",t,s,n,o,i,a,l);let c=q(o),f=c||q(i),u=f||q(a),h=u;return n==="="&&h&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?s="<0.0.0-0":s="*":n&&h?(f&&(i=0),a=0,n===">"?(n=">=",f?(o=+o+1,i=0,a=0):(i=+i+1,a=0)):n==="<="&&(n="<",f?o=+o+1:i=+i+1),n==="<"&&(l="-0"),s=`${n+o}.${i}.${a}${l}`):f?s=`>=${o}.0.0${l} <${+o+1}.0.0-0`:u&&(s=`>=${o}.${i}.0${l} <${o}.${+i+1}.0-0`),N("xRange return",s),s})},yo=(t,e)=>(N("replaceStars",t,e),t.trim().replace(P[C.STAR],"")),Eo=(t,e)=>(N("replaceGTE0",t,e),t.trim().replace(P[e.includePrerelease?C.GTE0PRE:C.GTE0],"")),vo=t=>(e,r,s,n,o,i,a,l,c,f,u,h,x)=>(q(s)?r="":q(n)?r=`>=${s}.0.0${t?"-0":""}`:q(o)?r=`>=${s}.${n}.0${t?"-0":""}`:i?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,q(c)?l="":q(f)?l=`<${+c+1}.0.0-0`:q(u)?l=`<${c}.${+f+1}.0-0`:h?l=`<=${c}.${f}.${u}-${h}`:t?l=`<${c}.${f}.${+u+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),xo=(t,e,r)=>{for(let s=0;s<t.length;s++)if(!t[s].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let s=0;s<t.length;s++)if(N(t[s].semver),t[s].semver!==ht.ANY&&t[s].semver.prerelease.length>0){let n=t[s].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Wr=v((ba,Xr)=>{var dt=be(),$o=ut(),Vr=it(),wo=(t,e)=>{t=new $o(t,e);let r=new dt("0.0.0");if(t.test(r)||(r=new dt("0.0.0-0"),t.test(r)))return r;r=null;for(let s=0;s<t.set.length;++s){let n=t.set[s],o=null;n.forEach(i=>{let a=new dt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!o||Vr(a,o))&&(o=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),o&&(!r||Vr(r,o))&&(r=o)}return r&&t.test(r)?r:null};Xr.exports=wo});var zr=v((Jr,Fe)=>{(function(t,e){"use strict";typeof define=="function"&&define.amd?define(e):typeof Fe=="object"&&Fe.exports?Fe.exports=e():t.log=e()})(Jr,function(){"use strict";var t=function(){},e="undefined",r=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),s=["trace","debug","info","warn","error"];function n(m,w){var I=m[w];if(typeof I.bind=="function")return I.bind(m);try{return Function.prototype.bind.call(I,m)}catch{return function(){return Function.prototype.apply.apply(I,[m,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(m){return m==="debug"&&(m="log"),typeof console===e?!1:m==="trace"&&r?o:console[m]!==void 0?n(console,m):console.log!==void 0?n(console,"log"):t}function a(m,w){for(var I=0;I<s.length;I++){var T=s[I];this[T]=I<m?t:this.methodFactory(T,m,w)}this.log=this.debug}function l(m,w,I){return function(){typeof console!==e&&(a.call(this,w,I),this[m].apply(this,arguments))}}function c(m,w,I){return i(m)||l.apply(this,arguments)}function f(m,w,I){var T=this,V;w=w??"WARN";var L="loglevel";typeof m=="string"?L+=":"+m:typeof m=="symbol"&&(L=void 0);function X(E){var M=(s[E]||"silent").toUpperCase();if(!(typeof window===e||!L)){try{window.localStorage[L]=M;return}catch{}try{window.document.cookie=encodeURIComponent(L)+"="+M+";"}catch{}}}function _(){var E;if(!(typeof window===e||!L)){try{E=window.localStorage[L]}catch{}if(typeof E===e)try{var M=window.document.cookie,Y=M.indexOf(encodeURIComponent(L)+"=");Y!==-1&&(E=/^([^;]+)/.exec(M.slice(Y))[1])}catch{}return T.levels[E]===void 0&&(E=void 0),E}}function K(){if(!(typeof window===e||!L)){try{window.localStorage.removeItem(L);return}catch{}try{window.document.cookie=encodeURIComponent(L)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}T.name=m,T.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},T.methodFactory=I||c,T.getLevel=function(){return V},T.setLevel=function(E,M){if(typeof E=="string"&&T.levels[E.toUpperCase()]!==void 0&&(E=T.levels[E.toUpperCase()]),typeof E=="number"&&E>=0&&E<=T.levels.SILENT){if(V=E,M!==!1&&X(E),a.call(T,E,m),typeof console===e&&E<T.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+E},T.setDefaultLevel=function(E){w=E,_()||T.setLevel(E,!1)},T.resetLevel=function(){T.setLevel(w,!1),K()},T.enableAll=function(E){T.setLevel(T.levels.TRACE,E)},T.disableAll=function(E){T.setLevel(T.levels.SILENT,E)};var j=_();j==null&&(j=w),T.setLevel(j,!1)}var u=new f,h={};u.getLogger=function(w){if(typeof w!="symbol"&&typeof w!="string"||w==="")throw new TypeError("You must supply a name when creating a logger.");var I=h[w];return I||(I=h[w]=new f(w,u.getLevel(),u.methodFactory)),I};var x=typeof window!==e?window.log:void 0;return u.noConflict=function(){return typeof window!==e&&window.log===u&&(window.log=x),u},u.getLoggers=function(){return h},u.default=u,u})});var Kr=v((ya,Qr)=>{"use strict";Qr.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var pt=v((Ea,Zr)=>{var xe=Kr(),Yr={};for(let t of Object.keys(xe))Yr[xe[t]]=t;var g={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Zr.exports=g;for(let t of Object.keys(g)){if(!("channels"in g[t]))throw new Error("missing channels property: "+t);if(!("labels"in g[t]))throw new Error("missing channel labels property: "+t);if(g[t].labels.length!==g[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=g[t];delete g[t].channels,delete g[t].labels,Object.defineProperty(g[t],"channels",{value:e}),Object.defineProperty(g[t],"labels",{value:r})}g.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,n=Math.min(e,r,s),o=Math.max(e,r,s),i=o-n,a,l;o===n?a=0:e===o?a=(r-s)/i:r===o?a=2+(s-e)/i:s===o&&(a=4+(e-r)/i),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+o)/2;return o===n?l=0:c<=.5?l=i/(o+n):l=i/(2-o-n),[a,l*100,c*100]};g.rgb.hsv=function(t){let e,r,s,n,o,i=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(i,a,l),f=c-Math.min(i,a,l),u=function(h){return(c-h)/6/f+1/2};return f===0?(n=0,o=0):(o=f/c,e=u(i),r=u(a),s=u(l),i===c?n=s-r:a===c?n=1/3+e-s:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,o*100,c*100]};g.rgb.hwb=function(t){let e=t[0],r=t[1],s=t[2],n=g.rgb.hsl(t)[0],o=1/255*Math.min(e,Math.min(r,s));return s=1-1/255*Math.max(e,Math.max(r,s)),[n,o*100,s*100]};g.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,n=Math.min(1-e,1-r,1-s),o=(1-e-n)/(1-n)||0,i=(1-r-n)/(1-n)||0,a=(1-s-n)/(1-n)||0;return[o*100,i*100,a*100,n*100]};function To(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}g.rgb.keyword=function(t){let e=Yr[t];if(e)return e;let r=1/0,s;for(let n of Object.keys(xe)){let o=xe[n],i=To(t,o);i<r&&(r=i,s=n)}return s};g.keyword.rgb=function(t){return xe[t]};g.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let n=e*.4124+r*.3576+s*.1805,o=e*.2126+r*.7152+s*.0722,i=e*.0193+r*.1192+s*.9505;return[n*100,o*100,i*100]};g.rgb.lab=function(t){let e=g.rgb.xyz(t),r=e[0],s=e[1],n=e[2];r/=95.047,s/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let o=116*s-16,i=500*(r-s),a=200*(s-n);return[o,i,a]};g.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,n,o,i;if(r===0)return i=s*255,[i,i,i];s<.5?n=s*(1+r):n=s+r-s*r;let a=2*s-n,l=[0,0,0];for(let c=0;c<3;c++)o=e+1/3*-(c-1),o<0&&o++,o>1&&o--,6*o<1?i=a+(n-a)*6*o:2*o<1?i=n:3*o<2?i=a+(n-a)*(2/3-o)*6:i=a,l[c]=i*255;return l};g.hsl.hsv=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,n=r,o=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,n*=o<=1?o:2-o;let i=(s+r)/2,a=s===0?2*n/(o+n):2*r/(s+r);return[e,a*100,i*100]};g.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,s=t[2]/100,n=Math.floor(e)%6,o=e-Math.floor(e),i=255*s*(1-r),a=255*s*(1-r*o),l=255*s*(1-r*(1-o));switch(s*=255,n){case 0:return[s,l,i];case 1:return[a,s,i];case 2:return[i,s,l];case 3:return[i,a,s];case 4:return[l,i,s];case 5:return[s,i,a]}};g.hsv.hsl=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,n=Math.max(s,.01),o,i;i=(2-r)*s;let a=(2-r)*n;return o=r*n,o/=a<=1?a:2-a,o=o||0,i/=2,[e,o*100,i*100]};g.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,n=r+s,o;n>1&&(r/=n,s/=n);let i=Math.floor(6*e),a=1-s;o=6*e-i,i&1&&(o=1-o);let l=r+o*(a-r),c,f,u;switch(i){default:case 6:case 0:c=a,f=l,u=r;break;case 1:c=l,f=a,u=r;break;case 2:c=r,f=a,u=l;break;case 3:c=r,f=l,u=a;break;case 4:c=l,f=r,u=a;break;case 5:c=a,f=r,u=l;break}return[c*255,f*255,u*255]};g.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,n=t[3]/100,o=1-Math.min(1,e*(1-n)+n),i=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,s*(1-n)+n);return[o*255,i*255,a*255]};g.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,n,o,i;return n=e*3.2406+r*-1.5372+s*-.4986,o=e*-.9689+r*1.8758+s*.0415,i=e*.0557+r*-.204+s*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,i=i>.0031308?1.055*i**(1/2.4)-.055:i*12.92,n=Math.min(Math.max(0,n),1),o=Math.min(Math.max(0,o),1),i=Math.min(Math.max(0,i),1),[n*255,o*255,i*255]};g.xyz.lab=function(t){let e=t[0],r=t[1],s=t[2];e/=95.047,r/=100,s/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let n=116*r-16,o=500*(e-r),i=200*(r-s);return[n,o,i]};g.lab.xyz=function(t){let e=t[0],r=t[1],s=t[2],n,o,i;o=(e+16)/116,n=r/500+o,i=o-s/200;let a=o**3,l=n**3,c=i**3;return o=a>.008856?a:(o-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,i=c>.008856?c:(i-16/116)/7.787,n*=95.047,o*=100,i*=108.883,[n,o,i]};g.lab.lch=function(t){let e=t[0],r=t[1],s=t[2],n;n=Math.atan2(s,r)*360/2/Math.PI,n<0&&(n+=360);let i=Math.sqrt(r*r+s*s);return[e,i,n]};g.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,o=r*Math.cos(n),i=r*Math.sin(n);return[e,o,i]};g.rgb.ansi16=function(t,e=null){let[r,s,n]=t,o=e===null?g.rgb.hsv(t)[2]:e;if(o=Math.round(o/50),o===0)return 30;let i=30+(Math.round(n/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return o===2&&(i+=60),i};g.hsv.ansi16=function(t){return g.rgb.ansi16(g.hsv.rgb(t),t[2])};g.rgb.ansi256=function(t){let e=t[0],r=t[1],s=t[2];return e===r&&r===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};g.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,s=(e&1)*r*255,n=(e>>1&1)*r*255,o=(e>>2&1)*r*255;return[s,n,o]};g.ansi256.rgb=function(t){if(t>=232){let o=(t-232)*10+8;return[o,o,o]}t-=16;let e,r=Math.floor(t/36)/5*255,s=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,s,n]};g.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};g.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let s=parseInt(r,16),n=s>>16&255,o=s>>8&255,i=s&255;return[n,o,i]};g.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,n=Math.max(Math.max(e,r),s),o=Math.min(Math.min(e,r),s),i=n-o,a,l;return i<1?a=o/(1-i):a=0,i<=0?l=0:n===e?l=(r-s)/i%6:n===r?l=2+(s-e)/i:l=4+(e-r)/i,l/=6,l%=1,[l*360,i*100,a*100]};g.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=r<.5?2*e*r:2*e*(1-r),n=0;return s<1&&(n=(r-.5*s)/(1-s)),[t[0],s*100,n*100]};g.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=e*r,n=0;return s<1&&(n=(r-s)/(1-s)),[t[0],s*100,n*100]};g.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100;if(r===0)return[s*255,s*255,s*255];let n=[0,0,0],o=e%1*6,i=o%1,a=1-i,l=0;switch(Math.floor(o)){case 0:n[0]=1,n[1]=i,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=i;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=i,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*s,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};g.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e),n=0;return s>0&&(n=e/s),[t[0],n*100,s*100]};g.hcg.hsl=function(t){let e=t[1]/100,s=t[2]/100*(1-e)+.5*e,n=0;return s>0&&s<.5?n=e/(2*s):s>=.5&&s<1&&(n=e/(2*(1-s))),[t[0],n*100,s*100]};g.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e);return[t[0],(s-e)*100,(1-s)*100]};g.hwb.hcg=function(t){let e=t[1]/100,s=1-t[2]/100,n=s-e,o=0;return n<1&&(o=(s-n)/(1-n)),[t[0],n*100,o*100]};g.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};g.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};g.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};g.gray.hsl=function(t){return[0,0,t[0]]};g.gray.hsv=g.gray.hsl;g.gray.hwb=function(t){return[0,100,t[0]]};g.gray.cmyk=function(t){return[0,0,0,t[0]]};g.gray.lab=function(t){return[t[0],0,0]};g.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,s=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(s.length)+s};g.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var ts=v((va,es)=>{var Be=pt();function Oo(){let t={},e=Object.keys(Be);for(let r=e.length,s=0;s<r;s++)t[e[s]]={distance:-1,parent:null};return t}function Io(t){let e=Oo(),r=[t];for(e[t].distance=0;r.length;){let s=r.pop(),n=Object.keys(Be[s]);for(let o=n.length,i=0;i<o;i++){let a=n[i],l=e[a];l.distance===-1&&(l.distance=e[s].distance+1,l.parent=s,r.unshift(a))}}return e}function Ro(t,e){return function(r){return e(t(r))}}function No(t,e){let r=[e[t].parent,t],s=Be[e[t].parent][t],n=e[t].parent;for(;e[n].parent;)r.unshift(e[n].parent),s=Ro(Be[e[n].parent][n],s),n=e[n].parent;return s.conversion=r,s}es.exports=function(t){let e=Io(t),r={},s=Object.keys(e);for(let n=s.length,o=0;o<n;o++){let i=s[o];e[i].parent!==null&&(r[i]=No(i,e))}return r}});var ss=v((xa,rs)=>{var gt=pt(),Ao=ts(),ie={},So=Object.keys(gt);function Co(t){let e=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Lo(t){let e=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let n=t(r);if(typeof n=="object")for(let o=n.length,i=0;i<o;i++)n[i]=Math.round(n[i]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}So.forEach(t=>{ie[t]={},Object.defineProperty(ie[t],"channels",{value:gt[t].channels}),Object.defineProperty(ie[t],"labels",{value:gt[t].labels});let e=Ao(t);Object.keys(e).forEach(s=>{let n=e[s];ie[t][s]=Lo(n),ie[t][s].raw=Co(n)})});rs.exports=ie});var cs=v(($a,ls)=>{"use strict";var ns=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,os=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};5;${s}m`},is=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};2;${s[0]};${s[1]};${s[2]}m`},Me=t=>t,as=(t,e,r)=>[t,e,r],ae=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let s=r();return Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},mt,le=(t,e,r,s)=>{mt===void 0&&(mt=ss());let n=s?10:0,o={};for(let[i,a]of Object.entries(mt)){let l=i==="ansi16"?"ansi":i;i===e?o[l]=t(r,n):typeof a=="object"&&(o[l]=t(a[e],n))}return o};function Po(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,s]of Object.entries(e)){for(let[n,o]of Object.entries(s))e[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},s[n]=e[n],t.set(o[0],o[1]);Object.defineProperty(e,r,{value:s,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",ae(e.color,"ansi",()=>le(ns,"ansi16",Me,!1)),ae(e.color,"ansi256",()=>le(os,"ansi256",Me,!1)),ae(e.color,"ansi16m",()=>le(is,"rgb",as,!1)),ae(e.bgColor,"ansi",()=>le(ns,"ansi16",Me,!0)),ae(e.bgColor,"ansi256",()=>le(os,"ansi256",Me,!0)),ae(e.bgColor,"ansi16m",()=>le(is,"rgb",as,!0)),e}Object.defineProperty(ls,"exports",{enumerable:!0,get:Po})});var fs=v((wa,us)=>{"use strict";us.exports={stdout:!1,stderr:!1}});var ds=v((Ta,hs)=>{"use strict";var qo=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let n=e.length,o=0,i="";do i+=t.substr(o,s-o)+e+r,o=s+n,s=t.indexOf(e,o);while(s!==-1);return i+=t.substr(o),i},Do=(t,e,r,s)=>{let n=0,o="";do{let i=t[s-1]==="\r";o+=t.substr(n,(i?s-1:s)-n)+e+(i?`\r
|
|
2
|
-
`:`
|
|
3
|
-
`)+r,n=s+1,s=t.indexOf(`
|
|
4
|
-
`,n)}while(s!==-1);return o+=t.substr(n),o};hs.exports={stringReplaceAll:qo,stringEncaseCRLFWithFirstIndex:Do}});var ys=v((Oa,bs)=>{"use strict";var Fo=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,ps=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Bo=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Mo=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,ko=new Map([["n",`
|
|
5
|
-
`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function ms(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):ko.get(t)||t}function jo(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),n;for(let o of s){let i=Number(o);if(!Number.isNaN(i))r.push(i);else if(n=o.match(Bo))r.push(n[2].replace(Mo,(a,l,c)=>l?ms(l):c));else throw new Error(`Invalid Chalk template style argument: ${o} (in style '${t}')`)}return r}function Go(t){ps.lastIndex=0;let e=[],r;for(;(r=ps.exec(t))!==null;){let s=r[1];if(r[2]){let n=jo(s,r[2]);e.push([s].concat(n))}else e.push([s])}return e}function gs(t,e){let r={};for(let n of e)for(let o of n.styles)r[o[0]]=n.inverse?null:o.slice(1);let s=t;for(let[n,o]of Object.entries(r))if(Array.isArray(o)){if(!(n in s))throw new Error(`Unknown Chalk style: ${n}`);s=o.length>0?s[n](...o):s[n]}return s}bs.exports=(t,e)=>{let r=[],s=[],n=[];if(e.replace(Fo,(o,i,a,l,c,f)=>{if(i)n.push(ms(i));else if(l){let u=n.join("");n=[],s.push(r.length===0?u:gs(t,r)(u)),r.push({inverse:a,styles:Go(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(gs(t,r)(n.join(""))),n=[],r.pop()}else n.push(f)}),s.push(n.join("")),r.length>0){let o=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(o)}return s.join("")}});var Os=v((Ia,Ts)=>{"use strict";var $e=cs(),{stdout:yt,stderr:Et}=fs(),{stringReplaceAll:_o,stringEncaseCRLFWithFirstIndex:Uo}=ds(),{isArray:ke}=Array,vs=["ansi","ansi","ansi256","ansi16m"],ce=Object.create(null),Ho=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=yt?yt.level:0;t.level=e.level===void 0?r:e.level},vt=class{constructor(e){return xs(e)}},xs=t=>{let e={};return Ho(e,t),e.template=(...r)=>ws(e.template,...r),Object.setPrototypeOf(e,je.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=vt,e.template};function je(t){return xs(t)}for(let[t,e]of Object.entries($e))ce[t]={get(){let r=Ge(this,xt(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};ce.visible={get(){let t=Ge(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var $s=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of $s)ce[t]={get(){let{level:e}=this;return function(...r){let s=xt($e.color[vs[e]][t](...r),$e.color.close,this._styler);return Ge(this,s,this._isEmpty)}}};for(let t of $s){let e="bg"+t[0].toUpperCase()+t.slice(1);ce[e]={get(){let{level:r}=this;return function(...s){let n=xt($e.bgColor[vs[r]][t](...s),$e.bgColor.close,this._styler);return Ge(this,n,this._isEmpty)}}}}var Vo=Object.defineProperties(()=>{},{...ce,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),xt=(t,e,r)=>{let s,n;return r===void 0?(s=t,n=e):(s=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:n,parent:r}},Ge=(t,e,r)=>{let s=(...n)=>ke(n[0])&&ke(n[0].raw)?Es(s,ws(s,...n)):Es(s,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(s,Vo),s._generator=t,s._styler=e,s._isEmpty=r,s},Es=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:n}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=_o(e,r.close,r.open),r=r.parent;let o=e.indexOf(`
|
|
6
|
-
`);return o!==-1&&(e=Uo(e,n,s,o)),s+e+n},bt,ws=(t,...e)=>{let[r]=e;if(!ke(r)||!ke(r.raw))return e.join(" ");let s=e.slice(1),n=[r.raw[0]];for(let o=1;o<r.length;o++)n.push(String(s[o-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[o]));return bt===void 0&&(bt=ys()),bt(t,n.join(""))};Object.defineProperties(je.prototype,ce);var _e=je();_e.supportsColor=yt;_e.stderr=je({level:Et?Et.level:0});_e.stderr.supportsColor=Et;Ts.exports=_e});var Rs=v((Ra,Is)=>{Is.exports={rosReleases:{kinetic:{rosVersion:1,ubuntuCodename:"xenial"},melodic:{rosVersion:1,ubuntuCodename:"bionic"},noetic:{rosVersion:1,ubuntuCodename:"focal"},dashing:{rosVersion:2},eloquent:{rosVersion:2},foxy:{rosVersion:2},galactic:{rosVersion:2},humble:{rosVersion:2},iron:{rosVersion:2},rolling:{rosVersion:2}}}});var He=v((Na,js)=>{var Xo=J(),Ns=Wr(),ue={get:require("lodash/get"),set:require("lodash/set"),unset:require("lodash/unset"),forEach:require("lodash/forEach"),map:require("lodash/map"),isEmpty:require("lodash/isEmpty"),eq:require("lodash/isEqual"),isPlainObject:require("lodash/isPlainObject"),merge:require("lodash/merge")},fe=zr(),we=Os(),Wo=Rs();fe.setAll=t=>Object.values(fe.getLoggers()).forEach(e=>e.setLevel(t));var As={warn:we.yellow,error:we.red,info:we.green,debug:we.gray},Jo=t=>As[t]?As[t](t):t,zo=fe.methodFactory;fe.methodFactory=(t,e,r)=>{let s=zo(t,e,r);if(typeof window<"u"){let o=`${r} ${t}`;return(...i)=>s(`[${o}]`,...i)}let n=`${r} ${Jo(t)}`;return(...o)=>s(`[${we.blue(new Date().toISOString())} ${n}]`,...o)};var Qo=fe.getLogger,Ko=t=>JSON.parse(JSON.stringify(t)),Yo=t=>JSON.parse(atob(t.split(".")[1])),Zo=t=>{try{return JSON.parse(t)}catch{return null}},Ss=(t,e,r)=>{t&&(r(t),t[e]?.forEach(s=>Ss(s,e,r)))},Cs=(t,e,r,s=[])=>{r(t,s);let n=e[0];if(n){let o=t[n];o&&Cs(o,e.slice(1),r,s.concat(n))}},ei=t=>new Promise(e=>{setTimeout(e,t)}),Ls=(t,e=[],r={})=>(ue.forEach(t,(s,n)=>{let o=e.concat(String(n));(ue.isPlainObject(s)||s instanceof Array)&&s!==null?Ls(s,o,r):r[Bs(o)]=s}),r),Ps=(t,e,r,s=[],n={})=>{if(e.length==0||e[0]=="#"){r(t,s,n);return}let o=e[0];if(o){for(let i in t)if(i==o||o=="*"||o.startsWith("+")){let a=o.startsWith("+")&&o.length>1?Object.assign({},n,{[o.slice(1)]:i}):n;Ps(t[i],e.slice(1),r,s.concat([i]),a)}}},qs=(t,e,r)=>{if(e.length==0)return t;let s=e.shift();e.length==0?t[s]=r:(t[s]||(t[s]={}),qs(t[s],e,r))},Ds=t=>t.replace(/%/g,"%25").replace(/\//g,"%2F"),Fs=t=>t.replace(/%25/g,"%").replace(/%2F/g,"/"),Bs=t=>{let e=r=>r.startsWith("+")?"+":r;return`/${t.map(e).map(Ds).join("/")}`},re=t=>{let e=t.split("/").map(Fs);return e.length>0&&e[0].length==0&&e.shift(),e.length>0&&e.at(-1).length==0&&e.pop(),e},Ms=(t,e)=>{let r=(o,i)=>{if(o.length==0||o[0][0]=="#"||i.length==0)return!0;if(o[0]==i[0])return r(o.slice(1),i.slice(1));if(o[0][0]=="+"){let a=r(o.slice(1),i.slice(1));return a&&Object.assign({[o[0].slice(1)]:i[0]},a)}return!1},s=re(t),n=re(e);return r(s,n)},ti=(t,e)=>{let r=re(e),s=re(t);return ks(r,s)&&r.length<s.length},ks=(t,e)=>t.length==0?!0:t[0]==e[0]&&ks(t.slice(1),e.slice(1)),ri=t=>{let e=t.split(":");return{organization:e[0],client:e[1],sub:e.slice(2)}},si=t=>{let e=re(t);return{organization:e[0],device:e[1],capabilityScope:e[2],capabilityName:e[3],capability:`${e[2]}/${e[3]}`,version:e[4],sub:e.slice(5)}},ni=t=>t.length==0?null:JSON.parse(t.toString("utf-8")),oi=(t,e,r,s=1e3)=>{let n=[],o=a=>{e.forEach(l=>Ms(`${l}/#`,a)&&n.push(a))};t.on("message",o),e.forEach(a=>{typeof a=="string"?t.subscribe(`${a}/#`):console.warn("Ignoring",a,"since it is not a string.")});let i=typeof Buffer<"u"?Buffer.alloc(0):null;setTimeout(()=>{t.removeListener("message",o),e.forEach(l=>t.unsubscribe(`${l}/#`));let a=n.length;console.log(`clearing ${a} retained messages from ${e}`),n.forEach(l=>{t.publish(l,i,{retain:!0})}),r&&r(a)},s)},ii=()=>Math.random().toString(36).slice(2),Ue=(t,e)=>Xo(Ns(t),Ns(e)),ai=(t,e=void 0,r={})=>{if(!t)return e?ue.set({},e,t):t;let s=Object.keys(t).filter(i=>(!r.maxVersion||Ue(i,r.maxVersion)<=0)&&(!r.minVersion||Ue(r.minVersion,i)<=0)).sort(Ue),n={},o=e&&re(e);return s.forEach(i=>{let a=o?ue.get(t[i],o):t[i];ue.merge(n,a)}),o?ue.set({},o,n):n},li=["B","KB","MB","GB","TB"],ci=t=>{if(!t)return"--";let e=0;for(;t>1024;)t/=1024,e++;return`${t.toFixed(2)} ${li[e]}`},ui=t=>{if(!t)return"--";let e={};t>3600&&(e.h=Math.floor(t/3600),t=t%3600),t>60&&(e.m=Math.floor(t/60),t=t%60),e.s=Math.floor(t);let r="";return e.h>0&&(r+=`${e.h}h `),e.m>0&&(r+=`${e.m}m `),!e.h&&(r+=`${e.s}s`),r.trim()};js.exports={parseMQTTUsername:ri,parseMQTTTopic:si,pathToTopic:Bs,topicToPath:re,toFlatObject:Ls,topicMatch:Ms,mqttParsePayload:ni,getRandomId:ii,versionCompare:Ue,loglevel:fe,getLogger:Qo,mergeVersions:ai,mqttClearRetained:oi,isSubTopicOf:ti,clone:Ko,setFromPath:qs,forMatchIterator:Ps,encodeTopicElement:Ds,decodeTopicElement:Fs,constants:Wo,visit:Ss,wait:ei,formatBytes:ci,formatDuration:ui,tryJSONParse:Zo,decodeJWT:Yo,visitAncestor:Cs}});var Tt=v((Aa,Us)=>{var k={get:require("lodash/get"),set:require("lodash/set"),unset:require("lodash/unset"),forEach:require("lodash/forEach"),map:require("lodash/map"),isEmpty:require("lodash/isEmpty"),eq:require("lodash/isEqual"),isPlainObject:require("lodash/isPlainObject"),merge:require("lodash/merge")},{topicToPath:Te,pathToTopic:fi,toFlatObject:hi,topicMatch:Gs,forMatchIterator:di}=He(),wt=(t,e)=>{if(!e||e.length==0)return;k.unset(t,e);let r=e.slice(0,-1),s=r.length==0?t:k.get(t,r);return k.isEmpty(s)?wt(t,r):e},pi=(t,e)=>(k.forEach(e,(r,s)=>{let n=Te(s);r==null?wt(t,n):k.set(t,n,r)}),t),_s=(t,e)=>{if(e.length==0)return;let r=e[0];if(r)for(let s in t)s!=r&&r!="*"&&!r.startsWith("+")?delete t[s]:_s(t[s],e.slice(1))},$t=class{#e={};#t=[];#r=[];constructor(e={}){this.#e=e}updateFromArray(e,r,s={}){let n=k.get(this.#e,e);if(r==null){if(n==null)return{};wt(this.#e,e)}else{if(k.eq(n,r))return{};k.set(this.#e,e,r)}let o=fi(e),i={[o]:r},a;if(r instanceof Object){let l=hi(r);a={},k.forEach(l,(c,f)=>{a[`${o}${f}`]=c})}else a=i;return this.#t.forEach(l=>l(i,s)),this.#r.forEach(l=>l(a,s)),a}update(e,r,s){if(typeof e=="string")return this.updateFromTopic(e,r,s);if(e instanceof Array)return this.updateFromArray(e,r,s);throw new Error("unrecognized path expression")}updateFromTopic(e,r,s){return this.updateFromArray(Te(e),r,s)}updateFromModifier(e,r){return k.map(e,(s,n)=>this.updateFromTopic(n,s,r))}subscribe(e){e instanceof Function?this.#t.push(e):console.warn("DataCache.subscribe expects a function as argument. Did you mean to use subscribePath?")}subscribePath(e,r){this.#t.push((s,n)=>{k.forEach(s,(o,i)=>{let a=Gs(e,i);a&&r(o,i,a,n)})})}subscribePathFlat(e,r){this.#r.push((s,n)=>{k.forEach(s,(o,i)=>{let a=Gs(e,i);a&&r(o,i,a,n)})})}unsubscribe(e){this.#t=this.#t.filter(r=>r!=e)}get(e=[]){return e.length==0?this.#e:k.get(this.#e,e)}getByTopic(e){return this.get(Te(e))}filter(e){let r=JSON.parse(JSON.stringify(this.get()));return _s(r,e),r}filterByTopic(e){return this.filter(Te(e))}forMatch(e,r){let s=Te(e);this.forPathMatch(s,r)}forPathMatch(e,r){di(this.get(),e,r)}};Us.exports={DataCache:$t,updateObject:pi}});var At=v((Ca,Ws)=>{"use strict";var{mqttParsePayload:gi,topicMatch:Ot,topicToPath:z,pathToTopic:Oe,toFlatObject:It,getLogger:mi,mergeVersions:bi,parseMQTTTopic:yi,isSubTopicOf:Sa,versionCompare:Ei,encodeTopicElement:vi,visitAncestor:xi}=He(),{DataCache:Hs}=Tt(),Q=require("lodash"),R=mi("MqttSync"),Rt="$SYS/broker/uptime",he="$_",$i=()=>{},wi=t=>typeof t=="object"?JSON.parse(JSON.stringify(t)):t,Vs=t=>t.endsWith("/#")?t:t.endsWith("/")?t.concat("#"):t.concat("/#"),Xs=t=>t.replace(/\/\//g,"/"),Nt=class{data=new Hs;subscribedPaths={};publishedPaths={};publishedMessages=new Hs;publishQueue=new Map;heartbeatWaitersOnce=[];heartbeats=0;beforeDisconnectHooks=[];constructor({mqttClient:e,onChange:r,ignoreRetain:s,migrate:n,onReady:o,sliceTopic:i,onHeartbeatGranted:a}){this.mqtt=e,this.mqtt.on("message",(l,c,f)=>{let u=c&&c.toString();if(R.debug("got message",l,u.slice(0,180),u.length>180?`... (${u.length} bytes)`:"",f.retain),l==Rt)this.heartbeats>0&&(this.heartbeatWaitersOnce.forEach(h=>h()),this.heartbeatWaitersOnce=[]),this.heartbeats==1&&!n&&o&&o(),this.heartbeats++;else if(f.retain||s){let h=z(l);R.debug("processing message",l,h),i&&(h=h.slice(i),l=Oe(h));let x=gi(c);if(this.isPublished(l))this.publishedMessages.updateFromArray([...h,he],x),this.data.update(l,x,{external:!0});else if(this.isSubscribed(l)){R.debug("applying received update",l);let m=this.data.update(l,x);r&&Object.keys(m).length>0&&r(m)}}}),this.mqtt.subscribe(Rt,{rap:!0},(l,c)=>{R.debug(Rt,{granted:c}),c.length>0&&a?.()}),n?.length>0&&this.migrate(n,()=>{R.debug("done migrating",o),o&&this.waitForHeartbeatOnce(o)})}publishAtLevel(e,r,s){R.debug(`publishingAtLevel ${s}`,e,r),s>0?Q.forEach(r,(n,o)=>{let i=`${e}/${vi(o)}`;R.debug(`publishing ${i}`),this.publishAtLevel(i,n,s-1)}):this.mqtt.publish(e,JSON.stringify(r),{retain:!0},n=>{n&&R.warn("Error when publishing migration result",n)})}migrate(e,r=void 0){let s=e.length;if(s==0){r&&r();return}let n=()=>--s==0&&r&&r();e.forEach(({topic:o,newVersion:i,transform:a=void 0,flat:l=!1,level:c=0})=>{R.debug("migrating",o,i);let{organization:f,device:u,capability:h,sub:x}=yi(o),m=`/${f}/${u}/${h}`,w=x.length==0?"/#":Oe(x),I=`${m}/+${w}`;this.subscribe(I,T=>{if(T){R.warn("Error during migration",T),n();return}this.waitForHeartbeatOnce(()=>{R.debug("got heartbeat",o,I);let V=this.data.getByTopic(m);if(!V){this.unsubscribe(I),n();return}let L=bi(V,w,{maxVersion:i}),X=Q.get(L,z(w)),_=a?a(X):X,K=Xs(`${m}/${i}/${w}`);if(R.debug("publishing merged",K),l){let j=It(_),E=z(K);Q.forEach(j,(M,Y)=>{let We=Oe(E.concat(z(Y)));this.mqtt.publish(We,JSON.stringify(M),{retain:!0},qt=>{qt&&R.warn(`Error when publishing migration result for ${Y}`,qt)})})}else this.publishAtLevel(K,_,c);this.unsubscribe(I),this.waitForHeartbeatOnce(()=>{let E=Object.keys(V).filter(M=>Ei(M,i)<0).map(M=>Xs(`${m}/${M}/${w}`));R.debug({prefixesToClear:E}),this.clear(E),n()})})})})}clear(e,r=void 0,s={}){let n=[],o=a=>{e.forEach(l=>Ot(`${l}/#`,a)&&(!s.filter||s.filter(a))&&n.push(a))};this.mqtt.on("message",o),e.forEach(a=>{typeof a=="string"?this.mqtt.subscribe(`${a}/#`):R.warn("Ignoring",a,"since it is not a string.")});let i=typeof Buffer<"u"?Buffer.alloc(0):null;this.waitForHeartbeatOnce(()=>{this.mqtt.removeListener("message",o),e.forEach(l=>this.mqtt.unsubscribe(`${l}/#`));let a=n.length;R.debug(`clearing ${a} retained messages from ${e}`),n.forEach(l=>{this.mqtt.publish(l,i,{retain:!0})}),r&&r(a)})}waitForHeartbeatOnce(e){setTimeout(()=>this.heartbeatWaitersOnce.push(e),1)}isSubscribed(e){return Object.keys(this.subscribedPaths).some(r=>Ot(r,e))}isPublished(e){return Object.keys(this.publishedPaths).some(r=>Ot(r,e)&&!this.publishedPaths[r].atomic)}subscribe(e,r=$i){if(e=Vs(e),R.debug("subscribing to",e),this.subscribedPaths[e]){R.debug("already subscribed to",e),r();return}this.mqtt.subscribe(e,{rap:!0},(s,n)=>{R.debug("subscribe",e,"granted:",n),n&&n.some(o=>o.topic==e&&o.qos<128)?(this.subscribedPaths[e]=1,r(null)):r(`not permitted to subscribe to topic ${e}, ${JSON.stringify(n)}`)})}unsubscribe(e){this.subscribedPaths[e]&&(this.mqtt.unsubscribe(e),delete this.subscribedPaths[e])}_actuallyPublish(e,r){return this.mqtt.connected?(R.debug("actually publishing",e),this.mqtt.publish(e,r==null?null:JSON.stringify(r),{retain:!0}),!0):(R.warn("not connected, not publishing",e),!1)}_processQueue_rec(e){if(this.publishQueue.size>0){let[r,s]=this.publishQueue.entries().next().value;this._actuallyPublish(r,s)?(this.publishQueue.delete(r),this._processQueue_rec(e)):setTimeout(()=>this._processQueue_rec(e),5e3)}else e()}_processQueue(){this._processing||(this._processing=!0,this._processQueue_rec(()=>this._processing=!1))}setThrottle(e){this._processQueueThrottled=Q.throttle(this._processQueue.bind(this),e)}clearThrottle(){delete this._processQueueThrottled}addToQueue(e,r){this.publishQueue.set(e,r)}_enqueue(e,r){R.debug("enqueuing",e),this.addToQueue(e,r),this._processQueueThrottled?this._processQueueThrottled():this._processQueue();let s=z(e);this.publishedMessages.updateFromArray([...s,he],r==null?null:wi(r))}publish(e,r={atomic:!1}){if(e=Vs(e),Q.isEqual(this.publishedPaths[e],r))return!1;if(this.publishedPaths[e]=r,r.atomic)return this.data.subscribePath(e,(s,n,o,i)=>{if(i?.external)return;R.debug("processing change (atomic)",n,e);let a=e.slice(0,e.length-2),l=Oe(z(n).slice(0,z(a).length));this._enqueue(l,this.data.getByTopic(l))}),!0;this.mqtt.subscribe(e),this.data.subscribePath(e,(s,n,o,i)=>{if(i?.external)return;R.debug("processing change",n);let a=z(n),l=this.publishedMessages.get(a);Q.each(l,(f,u)=>{if(u==he)return!0;let h=Object.keys(It(f)).filter(x=>x.endsWith(he));R.debug("flat->atomic: ",{toClear:h},u),h.forEach(x=>{let m=x.slice(0,-(he.length+1)),w=`${n}/${u}/${m}`;this._enqueue(w,null)})});let c=this.publishedMessages.get();return xi(c,a.slice(0,-1),(f,u)=>{let h=f[he];if(h&&Q.isObject(h)){R.debug("atomic->flat",{oldVal:h});let x=Oe(u);this._enqueue(x,null);let m=It(h);Q.each(m,(w,I)=>{let T=`${x}${I}`;this._enqueue(T,w)})}}),this._enqueue(n,s),!0})}beforeDisconnect(){this.beforeDisconnectHooks.forEach(e=>e(this))}onBeforeDisconnect(e){this.beforeDisconnectHooks.push(e)}};Ws.exports=Nt});var pe={};Dt(pe,{Code:()=>Ai,ErrorBoundary:()=>Pt,InlineCode:()=>Si,LevelBadge:()=>Ni,MqttSync:()=>zs,Timer:()=>Ci,TimerContext:()=>en,TransitiveCapability:()=>Li,createWebComponent:()=>qi,fetchJson:()=>Ks,parseCookie:()=>Qs,useCapability:()=>Lt,useMqttSync:()=>Ct,useTopics:()=>Ii,useTransitive:()=>Oi});module.exports=an(pe);var $=D(require("react"));var ze=D(require("react")),Qe=require("react"),ln=require("react/jsx-runtime"),cn=["xxl","xl","lg","md","sm","xs"],un="xs",Ft=ze.createContext({prefixes:{},breakpoints:cn,minBreakpoint:un}),{Consumer:Bi,Provider:Mi}=Ft;function Se(t,e){let{prefixes:r}=(0,Qe.useContext)(Ft);return t||r[e]||e}var Bt=D(require("react")),Mt=require("react/jsx-runtime"),fn=["as","disabled"];function hn(t,e){if(t==null)return{};var r={},s=Object.keys(t),n,o;for(o=0;o<s.length;o++)n=s[o],!(e.indexOf(n)>=0)&&(r[n]=t[n]);return r}function dn(t){return!t||t.trim()==="#"}function Ke({tagName:t,disabled:e,href:r,target:s,rel:n,role:o,onClick:i,tabIndex:a=0,type:l}){t||(r!=null||s!=null||n!=null?t="a":t="button");let c={tagName:t};if(t==="button")return[{type:l||"button",disabled:e},c];let f=h=>{if((e||t==="a"&&dn(r))&&h.preventDefault(),e){h.stopPropagation();return}i?.(h)},u=h=>{h.key===" "&&(h.preventDefault(),f(h))};return t==="a"&&(r||(r="#"),e&&(r=void 0)),[{role:o??"button",disabled:void 0,tabIndex:e?void 0:a,href:r,target:t==="a"?s:void 0,"aria-disabled":e||void 0,rel:t==="a"?n:void 0,onClick:f,onKeyDown:u},c]}var pn=Bt.forwardRef((t,e)=>{let{as:r,disabled:s}=t,n=hn(t,fn),[o,{tagName:i}]=Ke(Object.assign({tagName:r,disabled:s},n));return(0,Mt.jsx)(i,Object.assign({},n,o,{ref:e}))});pn.displayName="Button";var kt=D(Je()),jt=D(require("react"));var Gt=require("react/jsx-runtime"),_t=jt.forwardRef(({bsPrefix:t,bg:e="primary",pill:r=!1,text:s,className:n,as:o="span",...i},a)=>{let l=Se(t,"badge");return(0,Gt.jsx)(o,{ref:a,...i,className:(0,kt.default)(n,l,r&&"rounded-pill",s&&`text-${s}`,e&&`bg-${e}`)})});_t.displayName="Badge";var se=_t;var Ut=D(Je()),Ht=D(require("react"));var Vt=require("react/jsx-runtime"),Xt=Ht.forwardRef(({as:t,bsPrefix:e,variant:r="primary",size:s,active:n=!1,disabled:o=!1,className:i,...a},l)=>{let c=Se(e,"btn"),[f,{tagName:u}]=Ke({tagName:t,disabled:o,...a});return(0,Vt.jsx)(u,{...f,...a,ref:l,disabled:o,className:(0,Ut.default)(i,c,n&&"active",r&&`${c}-${r}`,s&&`${c}-${s}`,a.href&&o&&"disabled")})});Xt.displayName="Button";var Ye=Xt;var Zs=D(Yt());var y={};Dt(y,{MqttSync:()=>zs,fetchJson:()=>Ks,parseCookie:()=>Qs});A(y,D(He()));A(y,D(Tt()));var Js=D(At()),zs=Js.default,Qs=t=>t.split(";").map(e=>e.split("=")).reduce((e,r)=>(e[decodeURIComponent(r[0].trim())]=r[1]&&decodeURIComponent(r[1].trim()),e),{}),Ks=(t,e,r={})=>{fetch(t,{method:r.method||(r.body?"post":"get"),mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json",...r.headers},redirect:"follow",referrerPolicy:"no-referrer",body:r.body?JSON.stringify(r.body):void 0}).then(s=>{let n=!s.ok&&`fetching ${t} failed: ${s.status} ${s.statusText}`;s.json().then(o=>e(n,o)).catch(o=>{throw new Error(o)})}).catch(s=>e(`error: ${s}`))};var B=D(require("react")),Xe=D(require("lodash")),Ys=D(require("mqtt-browser"));var Ti=At(),F=(0,y.getLogger)("utils-web/hooks");F.setLevel("info");F.setLevel("debug");var Ct=({jwt:t,id:e,mqttUrl:r})=>{let[s,n]=(0,B.useState)("connecting"),[o,i]=(0,B.useState)(),[a,l]=(0,B.useState)({}),[c,f]=(0,B.useState)(!1);return(0,B.useEffect)(()=>{let u=(0,y.decodeJWT)(t),h=Ys.default.connect(r,{username:JSON.stringify({id:e,payload:u}),password:t});return h.on("connect",()=>{F.debug("connected");let x=new Ti({mqttClient:h,ignoreRetain:!0,onHeartbeatGranted:()=>f(!0)});i(x),n("connected"),x.data.subscribe(Xe.default.throttle(()=>l((0,y.clone)(x.data.get())),50))}),h.on("error",x=>{F.error(x),n(`error: ${x}`)}),()=>{F.info("cleaning up useMQTTSync"),o&&o.beforeDisconnect?(o.beforeDisconnect(),o.waitForHeartbeatOnce(()=>h.end())):h.end()}},[t,e]),{status:s,ready:c,StatusComponent:()=>B.default.createElement("div",null,s),mqttSync:o,data:a}},Oi=({jwt:t,id:e,host:r,ssl:s,capability:n,versionNS:o})=>{let[i,a]=n.split("/"),{device:l}=(0,y.decodeJWT)(t),c=[e,l,i,a],f=(0,y.pathToTopic)(c),u=[...c,o],h=(0,y.pathToTopic)(u),x=`${s&&JSON.parse(s)?"wss":"ws"}://mqtt.${r}`;return{...Ct({jwt:t,id:e,mqttUrl:x}),device:l,prefixPath:c,prefix:f,prefixPathVersion:u,prefixVersion:h}},Ii=({jwt:t,host:e="transitiverobotics.com",ssl:r=!0,topics:s=[]})=>{let[n,o]=(0,B.useState)();!Xe.default.isEqual(n,s)&&o(s);let{device:i,id:a,capability:l}=(0,y.decodeJWT)(t);if(i=="_fleet"){F.warn("useTopics only works for device JWTs, not _fleet ones");return}let c=`/${a}/${i}/@transitive-robotics/_robot-agent/+/status`,{mqttSync:f,data:u,status:h,ready:x,StatusComponent:m}=Ct({jwt:t,id:a,mqttUrl:`ws${r?"s":""}://mqtt.${e}`});(0,B.useEffect)(()=>{x&&f.subscribe(c,j=>j&&console.warn(j))},[f,x]);let w=(0,y.mergeVersions)(u[a]?.[i]["@transitive-robotics"]["_robot-agent"],"status").status,I=w?.runningPackages,[T,V]=l.split("/"),L=I?.[T]?.[V],X=L&&Object.values(L).filter(Boolean)[0],_=`/${a}/${i}/${l}/${X}`;(0,B.useEffect)(()=>{F.debug("topics",s),X&&s.forEach(j=>{F.debug(`subscribing to ${_}${j}`),f.subscribe(`${_}${j}`,E=>E&&F.warn(E))})},[n,X,f]);let K=Xe.default.get(u,(0,y.topicToPath)(_));return{data:u?.[a]?.[i],mqttSync:f,agentStatus:w,topicData:K}},Ve={},St={},Lt=({capability:t,name:e,userId:r,deviceId:s,host:n="transitiverobotics.com",ssl:o=!0})=>{let[i,a]=(0,B.useState)({loaded:!1}),l=(f,u)=>{F.debug(`custom component ${e}: ${f}`),St[e]=u,a(h=>({...h,loadedModule:u,loaded:!!u}))},c=(...f)=>Ve[e].forEach(u=>u(...f));return(0,B.useEffect)(()=>{if(F.debug(`loading custom component ${e}`),St[e])return l("already loaded",St[e]);if(Ve[e])return F.debug("already loading"),Ve[e].push(l);Ve[e]=[l];let f=`http${o?"s":""}://portal.${n}`,u=new URLSearchParams({userId:r,deviceId:s}),h=`${f}/running/${t}/dist/${e}`;import(`${h}.esm.js?${u.toString()}`).then(x=>c("loaded esm",x),x=>{F.warn(`No ESM module found for ${e}, loading iife`),import(`${h}.js?${u.toString()}`).then(m=>c("loaded iife",m),m=>F.error(`Failed to load ${e} iife`,m))})},[t,e,r,s]),i};var de={badge:{width:"4em"},code:{color:"#700",borderLeft:"3px solid #aaa",padding:"0.5em 0px 0.5em 2em",backgroundColor:"#f0f0f0",borderRadius:"4px",marginTop:"0.5em"},inlineCode:{color:"#700",margin:"0px 0.5em 0px 0.5em"}},Ri=[$.default.createElement(se,{bg:"success",style:de.badge},"OK"),$.default.createElement(se,{bg:"warning",style:de.badge},"Warn"),$.default.createElement(se,{bg:"danger",style:de.badge},"Error"),$.default.createElement(se,{bg:"secondary",style:de.badge},"Stale")],Ni=({level:t})=>Ri[t]||$.default.createElement("span",null,t),Ai=({children:t})=>$.default.createElement("pre",{style:de.code},t),Si=({children:t})=>$.default.createElement("tt",{style:de.inlineCode},t),Ie={},en=$.default.createContext({}),Ci=({duration:t,onTimeout:e,onStart:r,setOnDisconnect:s,children:n})=>{t=t||60;let[o,i]=(0,$.useState)(t),[a,l]=(0,$.useState)(!1),c=(0,$.useMemo)(()=>Math.random().toString(36).slice(2),[]),f=()=>{console.log("stopping timer for",c),e&&setTimeout(e,1),clearInterval(Ie[c]),Ie[c]=null,l(!1)},u=()=>{let x=Ie[c];return console.log(x,Ie,o),!x&&o>0&&(l(!0),Ie[c]=setInterval(()=>i(m=>{if(--m>0)return m;f()}),1e3),r&&setTimeout(r,1)),f};(0,$.useEffect)(()=>{o>0&&!a&&u()},[o]),(0,$.useEffect)(()=>f,[]),s&&s(()=>{f()});let h=()=>i(t);return $.default.createElement(en.Provider,{value:{reset:h,duration:t,timer:o}},o>0?$.default.createElement("div",null,n,o<60&&$.default.createElement("div",null,"Timeout in: ",o," seconds")):$.default.createElement("div",null,"Timed out. ",$.default.createElement(Ye,{onClick:h},"Resume")))},Li=({jwt:t,host:e="transitiverobotics.com",ssl:r=!0,...s})=>{let{id:n,device:o,capability:i}=(0,y.decodeJWT)(t),a=o=="_fleet"?"fleet":"device",c=`${i.split("/")[1]}-${a}`,{loaded:f}=Lt({capability:i,name:c,userId:n||s.userId,deviceId:o,host:e,ssl:r}),u=(0,$.useRef)();(0,$.useEffect)(()=>{u.current?.instance?.setState(x=>({...x,id:n,jwt:t,host:e,ssl:r,...s}))},[u.current,n,t,e,r,...Object.values(s)]);let h=(0,$.useMemo)(()=>({id:n,jwt:t,host:e,ssl:r,...s}),[]);return f?$.default.createElement(c,{...h,ref:u}):$.default.createElement("div",null,"Loading ",c)},Pt=class extends $.default.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0}}componentDidCatch(e,r){console.warn("ErrorBoundary caught:",e,r)}render(){return this.state.hasError?$.default.createElement("div",null,this.props.message||"Something went wrong here."):this.props.children}},Pi=t=>t.$$typeof==Symbol.for("react.forward_ref")||t.prototype?.render,qi=(t,e,r="0.0.0",s={})=>{let n=Pi(t)?$.default.createRef():null;class o extends $.default.Component{onDisconnect=null;state={};setOnDisconnect(a){this.onDisconnect=a}webComponentConstructed(a){let l=new MutationObserver(c=>{let f={};c.forEach(({attributeName:u})=>{f[u]=a.getAttribute(u)}),this.setState(u=>({...u,...f}))}).observe(a,{attributes:!0})}webComponentDisconnected(){this.setState({_disconnected:!0});try{this.onDisconnect&&this.onDisconnect()}catch(a){console.log("Error during onDisconnect of web-component",a)}}setConfig(a){this.setState({config:a})}render(){let a=s.stylesheets||["https://cdn.jsdelivr.net/gh/transitiverobotics/transitive-utils@0.8.3/web/css/bootstrap_transitive-bs-root.min.css"];return $.default.createElement("div",{id:`cap-${e}-${r}`,className:s.className||"transitive-bs-root"},$.default.createElement("style",null,a.map(l=>`@import url(${l});`)),!this.state._disconnected&&$.default.createElement(t,{ref:n,...this.props,...this.state,setOnDisconnect:this.setOnDisconnect.bind(this),setConfig:this.setConfig.bind(this)}))}}return Zs.default.create(o,e,s.shadowDOM||!1,n)};A(pe,y,module.exports);
|
|
7
|
-
/*! Bundled license information:
|
|
8
|
-
|
|
9
|
-
classnames/index.js:
|
|
10
|
-
(*!
|
|
11
|
-
Copyright (c) 2018 Jed Watson.
|
|
12
|
-
Licensed under the MIT License (MIT), see
|
|
13
|
-
http://jedwatson.github.io/classnames
|
|
14
|
-
*)
|
|
15
|
-
*/
|
|
1
|
+
var Xe=Object.create;var K=Object.defineProperty;var Ze=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var et=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty;var v=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ge=(t,e)=>{for(var s in e)K(t,s,{get:e[s],enumerable:!0})},G=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Re(e))!tt.call(t,o)&&o!==s&&K(t,o,{get:()=>e[o],enumerable:!(r=Ze(e,o))||r.enumerable});return t},y=(t,e,s)=>(G(t,e,"default"),s&&G(s,e,"default")),w=(t,e,s)=>(s=t!=null?Xe(et(t)):{},G(e||!t||!t.__esModule?K(s,"default",{value:t,enumerable:!0}):s,t)),st=t=>G(K({},"__esModule",{value:!0}),t);var pe=v((Rt,be)=>{be.exports=()=>{try{return require("react-web-component-style-loader/exports").styleElements}catch{return[]}}});var ye=v((es,me)=>{me.exports=function(e){if(!e.attributes)return{};let s={},r,n=[...e.attributes].map(c=>({[c.name]:c.value}));for(r of n){let c=Object.keys(r)[0],i=c.replace(/-([a-z])/g,a=>a[1].toUpperCase());s[i]=r[c]}return s}});var qe=v((ts,$e)=>{var rt=require("react"),nt=require("react-dom"),ot=require("react-shadow-dom-retarget-events"),it=pe(),ct=ye(),at={attachedCallback:"webComponentAttached",connectedCallback:"webComponentConnected",disconnectedCallback:"webComponentDisconnected",adoptedCallback:"webComponentAdopted"};$e.exports={create:(t,e,s=!0,r=void 0)=>{let o=class extends HTMLElement{instance=null;callConstructorHook(){this.instance.webComponentConstructed&&this.instance.webComponentConstructed.apply(this.instance,[this])}callLifeCycleHook(n,c=[]){let i=at[n];i&&this.instance&&this.instance[i]&&this.instance[i].apply(this.instance,c)}connectedCallback(){let n=this,c=n;if(s){let i=n.attachShadow({mode:"open"});c=document.createElement("div"),it().forEach(h=>{i.appendChild(h.cloneNode(i))}),i.appendChild(c),ot(i)}nt.render(rt.createElement(t,ct(n)),c,function(){n.instance=this,n.callConstructorHook(),n.callLifeCycleHook("connectedCallback")})}disconnectedCallback(){this.callLifeCycleHook("disconnectedCallback")}adoptedCallback(n,c){this.callLifeCycleHook("adoptedCallback",[n,c])}call(n,c){return r?.current?.[n]?.call(r?.current,c)}getConfig(){return this.instance.state.config}};return customElements.define(e,o),o}}});var Ce=v((rs,Te)=>{Te.exports={rosReleases:{kinetic:{rosVersion:1,ubuntuCodename:"xenial"},melodic:{rosVersion:1,ubuntuCodename:"bionic"},noetic:{rosVersion:1,ubuntuCodename:"focal"},dashing:{rosVersion:2},eloquent:{rosVersion:2},foxy:{rosVersion:2},galactic:{rosVersion:2},humble:{rosVersion:2},iron:{rosVersion:2},rolling:{rosVersion:2}}}});var X=v((ns,Le)=>{var ut=require("semver/functions/compare"),Ee=require("semver/ranges/min-version"),L={get:require("lodash/get"),set:require("lodash/set"),unset:require("lodash/unset"),forEach:require("lodash/forEach"),map:require("lodash/map"),isEmpty:require("lodash/isEmpty"),eq:require("lodash/isEqual"),isPlainObject:require("lodash/isPlainObject"),merge:require("lodash/merge")},B=require("loglevel"),W=require("chalk"),lt=Ce();B.setAll=t=>Object.values(B.getLoggers()).forEach(e=>e.setLevel(t));var Se={warn:W.yellow,error:W.red,info:W.green,debug:W.gray},ht=t=>Se[t]?Se[t](t):t,dt=B.methodFactory;B.methodFactory=(t,e,s)=>{let r=dt(t,e,s);if(typeof window<"u"){let n=`${s} ${t}`;return(...c)=>r(`[${n}]`,...c)}let o=`${s} ${ht(t)}`;return(...n)=>r(`[${W.blue(new Date().toISOString())} ${o}]`,...n)};var ft=B.getLogger,gt=t=>JSON.parse(JSON.stringify(t)),bt=t=>JSON.parse(atob(t.split(".")[1])),pt=t=>{try{return JSON.parse(t)}catch{return null}},we=(t,e,s)=>{t&&(s(t),t[e]?.forEach(r=>we(r,e,s)))},xe=(t,e,s,r=[])=>{s(t,r);let o=e[0];if(o){let n=t[o];n&&xe(n,e.slice(1),s,r.concat(o))}},mt=t=>new Promise(e=>{setTimeout(e,t)}),Oe=(t,e=[],s={})=>(L.forEach(t,(r,o)=>{let n=e.concat(String(o));(L.isPlainObject(r)||r instanceof Array)&&r!==null?Oe(r,n,s):s[De(n)]=r}),s),Pe=(t,e,s,r=[],o={})=>{if(e.length==0||e[0]=="#"){s(t,r,o);return}let n=e[0];if(n){for(let c in t)if(c==n||n=="*"||n.startsWith("+")){let i=n.startsWith("+")&&n.length>1?Object.assign({},o,{[n.slice(1)]:c}):o;Pe(t[c],e.slice(1),s,r.concat([c]),i)}}},ve=(t,e,s)=>{if(e.length==0)return t;let r=e.shift();e.length==0?t[r]=s:(t[r]||(t[r]={}),ve(t[r],e,s))},Me=t=>t.replace(/%/g,"%25").replace(/\//g,"%2F"),_e=t=>t.replace(/%25/g,"%").replace(/%2F/g,"/"),De=t=>{let e=s=>s.startsWith("+")?"+":s;return`/${t.map(e).map(Me).join("/")}`},M=t=>{let e=t.split("/").map(_e);return e.length>0&&e[0].length==0&&e.shift(),e.length>0&&e.at(-1).length==0&&e.pop(),e},ke=(t,e)=>{let s=(n,c)=>{if(n.length==0||n[0][0]=="#"||c.length==0)return!0;if(n[0]==c[0])return s(n.slice(1),c.slice(1));if(n[0][0]=="+"){let i=s(n.slice(1),c.slice(1));return i&&Object.assign({[n[0].slice(1)]:c[0]},i)}return!1},r=M(t),o=M(e);return s(r,o)},yt=(t,e)=>{let s=M(e),r=M(t);return Fe(s,r)&&s.length<r.length},Fe=(t,e)=>t.length==0?!0:t[0]==e[0]&&Fe(t.slice(1),e.slice(1)),$t=t=>{let e=t.split(":");return{organization:e[0],client:e[1],sub:e.slice(2)}},qt=t=>{let e=M(t);return{organization:e[0],device:e[1],capabilityScope:e[2],capabilityName:e[3],capability:`${e[2]}/${e[3]}`,version:e[4],sub:e.slice(5)}},Tt=t=>t.length==0?null:JSON.parse(t.toString("utf-8")),Ct=(t,e,s,r=1e3)=>{let o=[],n=i=>{e.forEach(a=>ke(`${a}/#`,i)&&o.push(i))};t.on("message",n),e.forEach(i=>{typeof i=="string"?t.subscribe(`${i}/#`):console.warn("Ignoring",i,"since it is not a string.")});let c=typeof Buffer<"u"?Buffer.alloc(0):null;setTimeout(()=>{t.removeListener("message",n),e.forEach(a=>t.unsubscribe(`${a}/#`));let i=o.length;console.log(`clearing ${i} retained messages from ${e}`),o.forEach(a=>{t.publish(a,c,{retain:!0})}),s&&s(i)},r)},Et=()=>Math.random().toString(36).slice(2),Y=(t,e)=>ut(Ee(t),Ee(e)),St=(t,e=void 0,s={})=>{if(!t)return e?L.set({},e,t):t;let r=Object.keys(t).filter(c=>(!s.maxVersion||Y(c,s.maxVersion)<=0)&&(!s.minVersion||Y(s.minVersion,c)<=0)).sort(Y),o={},n=e&&M(e);return r.forEach(c=>{let i=n?L.get(t[c],n):t[c];L.merge(o,i)}),n?L.set({},n,o):o},wt=["B","KB","MB","GB","TB"],xt=t=>{if(!t)return"--";let e=0;for(;t>1024;)t/=1024,e++;return`${t.toFixed(2)} ${wt[e]}`},Ot=t=>{if(!t)return"--";let e={};t>3600&&(e.h=Math.floor(t/3600),t=t%3600),t>60&&(e.m=Math.floor(t/60),t=t%60),e.s=Math.floor(t);let s="";return e.h>0&&(s+=`${e.h}h `),e.m>0&&(s+=`${e.m}m `),!e.h&&(s+=`${e.s}s`),s.trim()};Le.exports={parseMQTTUsername:$t,parseMQTTTopic:qt,pathToTopic:De,topicToPath:M,toFlatObject:Oe,topicMatch:ke,mqttParsePayload:Tt,getRandomId:Et,versionCompare:Y,loglevel:B,getLogger:ft,mergeVersions:St,mqttClearRetained:Ct,isSubTopicOf:yt,clone:gt,setFromPath:ve,forMatchIterator:Pe,encodeTopicElement:Me,decodeTopicElement:_e,constants:lt,visit:we,wait:mt,formatBytes:xt,formatDuration:Ot,tryJSONParse:pt,decodeJWT:bt,visitAncestor:xe}});var se=v((os,Ve)=>{var T={get:require("lodash/get"),set:require("lodash/set"),unset:require("lodash/unset"),forEach:require("lodash/forEach"),map:require("lodash/map"),isEmpty:require("lodash/isEmpty"),eq:require("lodash/isEqual"),isPlainObject:require("lodash/isPlainObject"),merge:require("lodash/merge")},{topicToPath:I,pathToTopic:Pt,toFlatObject:vt,topicMatch:Be,forMatchIterator:Mt}=X(),te=(t,e)=>{if(!e||e.length==0)return;T.unset(t,e);let s=e.slice(0,-1),r=s.length==0?t:T.get(t,s);return T.isEmpty(r)?te(t,s):e},_t=(t,e)=>(T.forEach(e,(s,r)=>{let o=I(r);s==null?te(t,o):T.set(t,o,s)}),t),Ae=(t,e)=>{if(e.length==0)return;let s=e[0];if(s)for(let r in t)r!=s&&s!="*"&&!s.startsWith("+")?delete t[r]:Ae(t[r],e.slice(1))},ee=class{#e={};#t=[];#s=[];constructor(e={}){this.#e=e}updateFromArray(e,s,r={}){let o=T.get(this.#e,e);if(s==null){if(o==null)return{};te(this.#e,e)}else{if(T.eq(o,s))return{};T.set(this.#e,e,s)}let n=Pt(e),c={[n]:s},i;if(s instanceof Object){let a=vt(s);i={},T.forEach(a,(h,d)=>{i[`${n}${d}`]=h})}else i=c;return this.#t.forEach(a=>a(c,r)),this.#s.forEach(a=>a(i,r)),i}update(e,s,r){if(typeof e=="string")return this.updateFromTopic(e,s,r);if(e instanceof Array)return this.updateFromArray(e,s,r);throw new Error("unrecognized path expression")}updateFromTopic(e,s,r){return this.updateFromArray(I(e),s,r)}updateFromModifier(e,s){return T.map(e,(r,o)=>this.updateFromTopic(o,r,s))}subscribe(e){e instanceof Function?this.#t.push(e):console.warn("DataCache.subscribe expects a function as argument. Did you mean to use subscribePath?")}subscribePath(e,s){this.#t.push((r,o)=>{T.forEach(r,(n,c)=>{let i=Be(e,c);i&&s(n,c,i,o)})})}subscribePathFlat(e,s){this.#s.push((r,o)=>{T.forEach(r,(n,c)=>{let i=Be(e,c);i&&s(n,c,i,o)})})}unsubscribe(e){this.#t=this.#t.filter(s=>s!=e)}get(e=[]){return e.length==0?this.#e:T.get(this.#e,e)}getByTopic(e){return this.get(I(e))}filter(e){let s=JSON.parse(JSON.stringify(this.get()));return Ae(s,e),s}filterByTopic(e){return this.filter(I(e))}forMatch(e,s){let r=I(e);this.forPathMatch(r,s)}forPathMatch(e,s){Mt(this.get(),e,s)}};Ve.exports={DataCache:ee,updateObject:_t}});var ce=v((cs,Qe)=>{"use strict";var{mqttParsePayload:Dt,topicMatch:re,topicToPath:x,pathToTopic:U,toFlatObject:ne,getLogger:kt,mergeVersions:Ft,parseMQTTTopic:Lt,isSubTopicOf:is,versionCompare:Bt,encodeTopicElement:At,visitAncestor:Vt}=X(),{DataCache:Ne}=se(),O=require("lodash"),p=kt("MqttSync"),oe="$SYS/broker/uptime",A="$_",Nt=()=>{},Ht=t=>typeof t=="object"?JSON.parse(JSON.stringify(t)):t,He=t=>t.endsWith("/#")?t:t.endsWith("/")?t.concat("#"):t.concat("/#"),Je=t=>t.replace(/\/\//g,"/"),ie=class{data=new Ne;subscribedPaths={};publishedPaths={};publishedMessages=new Ne;publishQueue=new Map;heartbeatWaitersOnce=[];heartbeats=0;beforeDisconnectHooks=[];constructor({mqttClient:e,onChange:s,ignoreRetain:r,migrate:o,onReady:n,sliceTopic:c,onHeartbeatGranted:i}){this.mqtt=e,this.mqtt.on("message",(a,h,d)=>{let u=h&&h.toString();if(p.debug("got message",a,u.slice(0,180),u.length>180?`... (${u.length} bytes)`:"",d.retain),a==oe)this.heartbeats>0&&(this.heartbeatWaitersOnce.forEach(f=>f()),this.heartbeatWaitersOnce=[]),this.heartbeats==1&&!o&&n&&n(),this.heartbeats++;else if(d.retain||r){let f=x(a);p.debug("processing message",a,f),c&&(f=f.slice(c),a=U(f));let b=Dt(h);if(this.isPublished(a))this.publishedMessages.updateFromArray([...f,A],b),this.data.update(a,b,{external:!0});else if(this.isSubscribed(a)){p.debug("applying received update",a);let m=this.data.update(a,b);s&&Object.keys(m).length>0&&s(m)}}}),this.mqtt.subscribe(oe,{rap:!0},(a,h)=>{p.debug(oe,{granted:h}),h&&h.length>0&&i?.()}),o?.length>0&&this.migrate(o,()=>{p.debug("done migrating",n),n&&this.waitForHeartbeatOnce(n)})}publishAtLevel(e,s,r){p.debug(`publishingAtLevel ${r}`,e,s),r>0?O.forEach(s,(o,n)=>{let c=`${e}/${At(n)}`;p.debug(`publishing ${c}`),this.publishAtLevel(c,o,r-1)}):this.mqtt.publish(e,JSON.stringify(s),{retain:!0},o=>{o&&p.warn("Error when publishing migration result",o)})}migrate(e,s=void 0){let r=e.length;if(r==0){s&&s();return}let o=()=>--r==0&&s&&s();e.forEach(({topic:n,newVersion:c,transform:i=void 0,flat:a=!1,level:h=0})=>{p.debug("migrating",n,c);let{organization:d,device:u,capability:f,sub:b}=Lt(n),m=`/${d}/${u}/${f}`,C=b.length==0?"/#":U(b),E=`${m}/+${C}`;this.subscribe(E,D=>{if(D){p.warn("Error during migration",D),o();return}this.waitForHeartbeatOnce(()=>{p.debug("got heartbeat",n,E);let H=this.data.getByTopic(m);if(!H){this.unsubscribe(E),o();return}let j=Ft(H,C,{maxVersion:c}),k=O.get(j,x(C)),F=i?i(k):k,J=Je(`${m}/${c}/${C}`);if(p.debug("publishing merged",J),a){let S=ne(F),P=x(J);O.forEach(S,(Q,de)=>{let Ye=U(P.concat(x(de)));this.mqtt.publish(Ye,JSON.stringify(Q),{retain:!0},fe=>{fe&&p.warn(`Error when publishing migration result for ${de}`,fe)})})}else this.publishAtLevel(J,F,h);this.unsubscribe(E),this.waitForHeartbeatOnce(()=>{let P=Object.keys(H).filter(Q=>Bt(Q,c)<0).map(Q=>Je(`${m}/${Q}/${C}`));p.debug({prefixesToClear:P}),this.clear(P),o()})})})})}clear(e,s=void 0,r={}){let o=[],n=i=>{e.forEach(a=>re(`${a}/#`,i)&&(!r.filter||r.filter(i))&&o.push(i))};this.mqtt.on("message",n),e.forEach(i=>{typeof i=="string"?this.mqtt.subscribe(`${i}/#`):p.warn("Ignoring",i,"since it is not a string.")});let c=typeof Buffer<"u"?Buffer.alloc(0):null;this.waitForHeartbeatOnce(()=>{this.mqtt.removeListener("message",n),e.forEach(a=>this.mqtt.unsubscribe(`${a}/#`));let i=o.length;p.debug(`clearing ${i} retained messages from ${e}`),o.forEach(a=>{this.mqtt.publish(a,c,{retain:!0})}),s&&s(i)})}waitForHeartbeatOnce(e){setTimeout(()=>this.heartbeatWaitersOnce.push(e),1)}isSubscribed(e){return Object.keys(this.subscribedPaths).some(s=>re(s,e))}isPublished(e){return Object.keys(this.publishedPaths).some(s=>re(s,e)&&!this.publishedPaths[s].atomic)}subscribe(e,s=Nt){if(e=He(e),p.debug("subscribing to",e),this.subscribedPaths[e]){p.debug("already subscribed to",e),s();return}this.mqtt.subscribe(e,{rap:!0},(r,o)=>{p.debug("subscribe",e,"granted:",o),o&&o.some(n=>n.topic==e&&n.qos<128)?(this.subscribedPaths[e]=1,s(null)):s(`not permitted to subscribe to topic ${e}, ${JSON.stringify(o)}`)})}unsubscribe(e){this.subscribedPaths[e]&&(this.mqtt.unsubscribe(e),delete this.subscribedPaths[e])}_actuallyPublish(e,s){return this.mqtt.connected?(p.debug("actually publishing",e),this.mqtt.publish(e,s==null?null:JSON.stringify(s),{retain:!0}),!0):(p.warn("not connected, not publishing",e),!1)}_processQueue_rec(e){if(this.publishQueue.size>0){let[s,r]=this.publishQueue.entries().next().value;this._actuallyPublish(s,r)?(this.publishQueue.delete(s),this._processQueue_rec(e)):setTimeout(()=>this._processQueue_rec(e),5e3)}else e()}_processQueue(){this._processing||(this._processing=!0,this._processQueue_rec(()=>this._processing=!1))}setThrottle(e){this._processQueueThrottled=O.throttle(this._processQueue.bind(this),e)}clearThrottle(){delete this._processQueueThrottled}addToQueue(e,s){this.publishQueue.set(e,s)}_enqueue(e,s){p.debug("enqueuing",e),this.addToQueue(e,s),this._processQueueThrottled?this._processQueueThrottled():this._processQueue();let r=x(e);this.publishedMessages.updateFromArray([...r,A],s==null?null:Ht(s))}publish(e,s={atomic:!1}){if(e=He(e),O.isEqual(this.publishedPaths[e],s))return!1;if(this.publishedPaths[e]=s,s.atomic)return this.data.subscribePath(e,(r,o,n,c)=>{if(c?.external)return;p.debug("processing change (atomic)",o,e);let i=e.slice(0,e.length-2),a=U(x(o).slice(0,x(i).length));this._enqueue(a,this.data.getByTopic(a))}),!0;this.mqtt.subscribe(e),this.data.subscribePath(e,(r,o,n,c)=>{if(c?.external)return;p.debug("processing change",o);let i=x(o),a=this.publishedMessages.get(i);O.each(a,(d,u)=>{if(u==A)return!0;let f=Object.keys(ne(d)).filter(b=>b.endsWith(A));p.debug("flat->atomic: ",{toClear:f},u),f.forEach(b=>{let m=b.slice(0,-(A.length+1)),C=`${o}/${u}/${m}`;this._enqueue(C,null)})});let h=this.publishedMessages.get();return Vt(h,i.slice(0,-1),(d,u)=>{let f=d[A];if(f&&O.isObject(f)){p.debug("atomic->flat",{oldVal:f});let b=U(u);this._enqueue(b,null);let m=ne(f);O.each(m,(C,E)=>{let D=`${b}${E}`;this._enqueue(D,C)})}}),this._enqueue(o,r),!0})}beforeDisconnect(){this.beforeDisconnectHooks.forEach(e=>e(this))}onBeforeDisconnect(e){this.beforeDisconnectHooks.push(e)}};Qe.exports=ie});var N={};ge(N,{Code:()=>zt,ErrorBoundary:()=>he,InlineCode:()=>jt,LevelBadge:()=>Ut,MqttSync:()=>Ie,Timer:()=>Gt,TimerContext:()=>Ke,TransitiveCapability:()=>Kt,createWebComponent:()=>Xt,fetchJson:()=>ze,parseCookie:()=>Ue,useCapability:()=>le,useMqttSync:()=>ue,useTopics:()=>Wt,useTransitive:()=>Qt});module.exports=st(N);var g=w(require("react")),_=require("react-bootstrap"),Ge=w(qe());var l={};ge(l,{MqttSync:()=>Ie,fetchJson:()=>ze,parseCookie:()=>Ue});y(l,w(X()));y(l,w(se()));var We=w(ce()),Ie=We.default,Ue=t=>t.split(";").map(e=>e.split("=")).reduce((e,s)=>(e[decodeURIComponent(s[0].trim())]=s[1]&&decodeURIComponent(s[1].trim()),e),{}),ze=(t,e,s={})=>{fetch(t,{method:s.method||(s.body?"post":"get"),mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json",...s.headers},redirect:"follow",referrerPolicy:"no-referrer",body:s.body?JSON.stringify(s.body):void 0}).then(r=>{let o=!r.ok&&`fetching ${t} failed: ${r.status} ${r.statusText}`;r.json().then(n=>e(o,n)).catch(n=>{throw new Error(n)})}).catch(r=>e(`error: ${r}`))};var q=w(require("react")),R=w(require("lodash")),je=w(require("mqtt-browser"));var Jt=ce(),$=(0,l.getLogger)("utils-web/hooks");$.setLevel("info");$.setLevel("debug");var ue=({jwt:t,id:e,mqttUrl:s})=>{let[r,o]=(0,q.useState)("connecting"),[n,c]=(0,q.useState)(),[i,a]=(0,q.useState)({}),[h,d]=(0,q.useState)(!1);return(0,q.useEffect)(()=>{let u=(0,l.decodeJWT)(t),f=je.default.connect(s,{username:JSON.stringify({id:e,payload:u}),password:t});return f.on("connect",()=>{$.debug("connected");let b=new Jt({mqttClient:f,ignoreRetain:!0,onHeartbeatGranted:()=>d(!0)});c(b),o("connected"),b.data.subscribe(R.default.throttle(()=>a((0,l.clone)(b.data.get())),50))}),f.on("error",b=>{$.error(b),o(`error: ${b}`)}),()=>{$.info("cleaning up useMQTTSync"),n&&n.beforeDisconnect?(n.beforeDisconnect(),n.waitForHeartbeatOnce(()=>f.end())):f.end()}},[t,e]),{status:r,ready:h,StatusComponent:()=>q.default.createElement("div",null,r),mqttSync:n,data:i}},Qt=({jwt:t,id:e,host:s,ssl:r,capability:o,versionNS:n})=>{let[c,i]=o.split("/"),{device:a}=(0,l.decodeJWT)(t),h=[e,a,c,i],d=(0,l.pathToTopic)(h),u=[...h,n],f=(0,l.pathToTopic)(u),b=`${r&&JSON.parse(r)?"wss":"ws"}://mqtt.${s}`;return{...ue({jwt:t,id:e,mqttUrl:b}),device:a,prefixPath:h,prefix:d,prefixPathVersion:u,prefixVersion:f}},Wt=({jwt:t,host:e="transitiverobotics.com",ssl:s=!0,topics:r=[]})=>{let[o,n]=(0,q.useState)();!R.default.isEqual(o,r)&&n(r);let{device:c,id:i,capability:a}=(0,l.decodeJWT)(t);if(c=="_fleet"){$.warn("useTopics only works for device JWTs, not _fleet ones");return}let h=`/${i}/${c}/@transitive-robotics/_robot-agent/+/status`,{mqttSync:d,data:u,status:f,ready:b,StatusComponent:m}=ue({jwt:t,id:i,mqttUrl:`ws${s?"s":""}://mqtt.${e}`});(0,q.useEffect)(()=>{b&&d.subscribe(h,S=>S&&console.warn(S))},[d,b]);let C=(0,l.mergeVersions)(u[i]?.[c]["@transitive-robotics"]["_robot-agent"],"status").status,E=C?.runningPackages,[D,H]=a.split("/"),j=E?.[D]?.[H],k=j&&Object.values(j).filter(Boolean)[0],F=`/${i}/${c}/${a}/${k}`;(0,q.useEffect)(()=>{$.debug("topics",r),k&&r.forEach(S=>{$.debug(`subscribing to ${F}${S}`),d.subscribe(`${F}${S}`,P=>P&&$.warn(P))})},[o,k,d]);let J=R.default.get(u,(0,l.topicToPath)(F));return{data:u?.[i]?.[c],mqttSync:d,agentStatus:C,topicData:J}},Z={},ae={},le=({capability:t,name:e,userId:s,deviceId:r,host:o="transitiverobotics.com",ssl:n=!0})=>{let[c,i]=(0,q.useState)({loaded:!1}),a=(d,u)=>{$.debug(`custom component ${e}: ${d}`),ae[e]=u,i(f=>({...f,loadedModule:u,loaded:!!u}))},h=(...d)=>Z[e].forEach(u=>u(...d));return(0,q.useEffect)(()=>{if($.debug(`loading custom component ${e}`),ae[e])return a("already loaded",ae[e]);if(Z[e])return $.debug("already loading"),Z[e].push(a);Z[e]=[a];let d=`http${n?"s":""}://portal.${o}`,u=new URLSearchParams({userId:s,deviceId:r}),f=`${d}/running/${t}/dist/${e}`;import(`${f}.esm.js?${u.toString()}`).then(b=>h("loaded esm",b),b=>{$.warn(`No ESM module found for ${e}, loading iife`),import(`${f}.js?${u.toString()}`).then(m=>h("loaded iife",m),m=>$.error(`Failed to load ${e} iife`,m))})},[t,e,s,r]),c};var V={badge:{width:"4em"},code:{color:"#700",borderLeft:"3px solid #aaa",padding:"0.5em 0px 0.5em 2em",backgroundColor:"#f0f0f0",borderRadius:"4px",marginTop:"0.5em"},inlineCode:{color:"#700",margin:"0px 0.5em 0px 0.5em"}},It=[g.default.createElement(_.Badge,{bg:"success",style:V.badge},"OK"),g.default.createElement(_.Badge,{bg:"warning",style:V.badge},"Warn"),g.default.createElement(_.Badge,{bg:"danger",style:V.badge},"Error"),g.default.createElement(_.Badge,{bg:"secondary",style:V.badge},"Stale")],Ut=({level:t})=>It[t]||g.default.createElement("span",null,t),zt=({children:t})=>g.default.createElement("pre",{style:V.code},t),jt=({children:t})=>g.default.createElement("tt",{style:V.inlineCode},t),z={},Ke=g.default.createContext({}),Gt=({duration:t,onTimeout:e,onStart:s,setOnDisconnect:r,children:o})=>{t=t||60;let[n,c]=(0,g.useState)(t),[i,a]=(0,g.useState)(!1),h=(0,g.useMemo)(()=>Math.random().toString(36).slice(2),[]),d=()=>{console.log("stopping timer for",h),e&&setTimeout(e,1),clearInterval(z[h]),z[h]=null,a(!1)},u=()=>{let b=z[h];return console.log(b,z,n),!b&&n>0&&(a(!0),z[h]=setInterval(()=>c(m=>{if(--m>0)return m;d()}),1e3),s&&setTimeout(s,1)),d};(0,g.useEffect)(()=>{n>0&&!i&&u()},[n]),(0,g.useEffect)(()=>d,[]),r&&r(()=>{d()});let f=()=>c(t);return g.default.createElement(Ke.Provider,{value:{reset:f,duration:t,timer:n}},n>0?g.default.createElement("div",null,o,n<60&&g.default.createElement("div",null,"Timeout in: ",n," seconds")):g.default.createElement("div",null,"Timed out. ",g.default.createElement(_.Button,{onClick:f},"Resume")))},Kt=({jwt:t,host:e="transitiverobotics.com",ssl:s=!0,...r})=>{let{id:o,device:n,capability:c}=(0,l.decodeJWT)(t),i=n=="_fleet"?"fleet":"device",h=`${c.split("/")[1]}-${i}`,{loaded:d}=le({capability:c,name:h,userId:o||r.userId,deviceId:n,host:e,ssl:s}),u=(0,g.useRef)();(0,g.useEffect)(()=>{u.current?.instance?.setState(b=>({...b,id:o,jwt:t,host:e,ssl:s,...r}))},[u.current,o,t,e,s,...Object.values(r)]);let f=(0,g.useMemo)(()=>({id:o,jwt:t,host:e,ssl:s,...r}),[]);return d?g.default.createElement(h,{...f,ref:u}):g.default.createElement("div",null,"Loading ",h)},he=class extends g.default.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0}}componentDidCatch(e,s){console.warn("ErrorBoundary caught:",e,s)}render(){return this.state.hasError?g.default.createElement("div",null,this.props.message||"Something went wrong here."):this.props.children}},Yt=t=>t.$$typeof==Symbol.for("react.forward_ref")||t.prototype?.render,Xt=(t,e,s="0.0.0",r={})=>{let o=Yt(t)?g.default.createRef():null;class n extends g.default.Component{onDisconnect=null;state={};setOnDisconnect(i){this.onDisconnect=i}webComponentConstructed(i){let a=new MutationObserver(h=>{let d={};h.forEach(({attributeName:u})=>{d[u]=i.getAttribute(u)}),this.setState(u=>({...u,...d}))}).observe(i,{attributes:!0})}webComponentDisconnected(){this.setState({_disconnected:!0});try{this.onDisconnect&&this.onDisconnect()}catch(i){console.log("Error during onDisconnect of web-component",i)}}setConfig(i){this.setState({config:i})}render(){let i=r.stylesheets||["https://cdn.jsdelivr.net/gh/transitiverobotics/transitive-utils@0.8.3/web/css/bootstrap_transitive-bs-root.min.css"];return g.default.createElement("div",{id:`cap-${e}-${s}`,className:r.className||"transitive-bs-root"},g.default.createElement("style",null,i.map(a=>`@import url(${a});`)),!this.state._disconnected&&g.default.createElement(t,{ref:o,...this.props,...this.state,setOnDisconnect:this.setOnDisconnect.bind(this),setConfig:this.setConfig.bind(this)}))}}return Ge.default.create(n,e,r.shadowDOM||!1,o)};y(N,l,module.exports);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/classnames/index.js", "../client/react-web-component/getStyleElementsFromReactWebComponentStyleLoader.js", "../client/react-web-component/extractAttributes.js", "../client/react-web-component/index.js", "../../node_modules/semver/internal/debug.js", "../../node_modules/semver/internal/constants.js", "../../node_modules/semver/internal/re.js", "../../node_modules/semver/internal/parse-options.js", "../../node_modules/semver/internal/identifiers.js", "../../node_modules/semver/classes/semver.js", "../../node_modules/semver/functions/compare.js", "../../node_modules/yallist/iterator.js", "../../node_modules/yallist/yallist.js", "../../node_modules/lru-cache/index.js", "../../node_modules/semver/functions/eq.js", "../../node_modules/semver/functions/neq.js", "../../node_modules/semver/functions/gt.js", "../../node_modules/semver/functions/gte.js", "../../node_modules/semver/functions/lt.js", "../../node_modules/semver/functions/lte.js", "../../node_modules/semver/functions/cmp.js", "../../node_modules/semver/classes/comparator.js", "../../node_modules/semver/classes/range.js", "../../node_modules/semver/ranges/min-version.js", "../../node_modules/color-name/index.js", "../../node_modules/color-convert/conversions.js", "../../node_modules/color-convert/route.js", "../../node_modules/color-convert/index.js", "../../node_modules/ansi-styles/index.js", "../../node_modules/chalk/node_modules/supports-color/browser.js", "../../node_modules/chalk/source/util.js", "../../node_modules/chalk/source/templates.js", "../../node_modules/chalk/source/index.js", "../../common/constants.js", "../../common/common.js", "../../common/DataCache.js", "../../common/MqttSync.js", "../index.js", "../client/shared.jsx", "../node_modules/react-bootstrap/esm/ThemeProvider.js", "../node_modules/@restart/ui/esm/Button.js", "../node_modules/react-bootstrap/esm/Badge.js", "../node_modules/react-bootstrap/esm/Button.js", "../client/client.js", "../client/hooks.jsx"],
|
|
4
|
+
"sourcesContent": ["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "/*\n * An optional library which is conditionally added\n * @returns {[]}\n */\nmodule.exports = () => {\n try {\n return require('react-web-component-style-loader/exports').styleElements;\n } catch (e) {\n return [];\n }\n};\n", "/*\n * Takes in a node attributes map and returns an object with camelCased\n * properties and values\n * @param nodeMap\n * @returns {{}}\n */\nmodule.exports = function extractAttributes(nodeMap) {\n if (!nodeMap.attributes) {\n return {};\n }\n\n let obj = {};\n let attribute;\n const attributesAsNodeMap = [...nodeMap.attributes];\n const attributes = attributesAsNodeMap.map((attribute) =>\n ({ [attribute.name]: attribute.value }));\n\n for (attribute of attributes) {\n const key = Object.keys(attribute)[0];\n const camelCasedKey = key.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n obj[camelCasedKey] = attribute[key];\n }\n\n return obj;\n};\n", "const React = require('react');\nconst ReactDOM = require('react-dom');\nconst retargetEvents = require('react-shadow-dom-retarget-events');\nconst getStyleElementsFromReactWebComponentStyleLoader = require('./getStyleElementsFromReactWebComponentStyleLoader');\nconst extractAttributes = require('./extractAttributes');\n\n// require('@webcomponents/shadydom');\n// require('@webcomponents/custom-elements');\n\nconst lifeCycleHooks = {\n attachedCallback: 'webComponentAttached',\n connectedCallback: 'webComponentConnected',\n disconnectedCallback: 'webComponentDisconnected',\n adoptedCallback: 'webComponentAdopted'\n};\n\nmodule.exports = {\n /*\n * @param {JSX.Element} wrapper: the wrapper component class to be instantiated and wrapped\n * @param {string} tagName - The name of the web component. Has to be minus \"-\" delimited.\n * @param {boolean} useShadowDom - If the value is set to \"true\" the web component will use the `shadowDom`. The default value is true.\n */\n create: (wrapper, tagName, useShadowDom = true, compRef = undefined) => {\n\n const proto = class extends HTMLElement {\n instance = null; // the instance we create of the wrapper\n\n callConstructorHook() {\n if (this.instance['webComponentConstructed']) {\n this.instance['webComponentConstructed'].apply(this.instance, [this])\n }\n }\n\n callLifeCycleHook(hook, params = []) {\n const method = lifeCycleHooks[hook];\n if (method && this.instance && this.instance[method]) {\n this.instance[method].apply(this.instance, params);\n }\n }\n\n connectedCallback() {\n const self = this;\n let mountPoint = self;\n\n if (useShadowDom) {\n // Re-assign the self (this) to the newly created shadowRoot\n const shadowRoot = self.attachShadow({ mode: 'open' });\n\n // Re-assign the mountPoint to the newly created \"div\" element\n mountPoint = document.createElement('div');\n\n // Move all of the styles assigned to the react component inside of\n // the shadowRoot. By default this is not used, only if the library is\n // explicitly installed\n const styles = getStyleElementsFromReactWebComponentStyleLoader();\n styles.forEach((style) => {\n shadowRoot.appendChild(style.cloneNode(shadowRoot));\n });\n\n shadowRoot.appendChild(mountPoint);\n retargetEvents(shadowRoot);\n }\n\n ReactDOM.render(\n // This is where we instantiate the actual component (in its wrapper)\n React.createElement(wrapper, extractAttributes(self)),\n mountPoint, function() {\n self.instance = this;\n self.callConstructorHook();\n self.callLifeCycleHook('connectedCallback');\n });\n }\n\n disconnectedCallback() {\n this.callLifeCycleHook('disconnectedCallback');\n }\n\n adoptedCallback(oldDocument, newDocument) {\n this.callLifeCycleHook('adoptedCallback', [oldDocument, newDocument]);\n }\n\n /* call a function defined in the component, either as a class method, or\n * via useImperativeHandle */\n call(functionName, args) {\n return compRef?.current?.[functionName]?.call(compRef?.current, args);\n }\n\n /* predefined function to retrieve the pre-defined config object of the\n * state, populated via the pre-defined `setConfig` method given as prop\n * to the wrapped component. */\n getConfig() {\n return this.instance.state.config;\n }\n }\n\n customElements.define(tagName, proto);\n\n return proto;\n },\n};\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n", "// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((options, k) => {\n options[k] = true\n return options\n }, {})\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst {re, t} = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split(/\\s*\\|\\|\\s*/)\n // map the range to a 2d array of comparators\n .map(range => this.parseRange(range.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0)\n this.set = [first]\n else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached)\n return cached\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n // in loose mode, throw out any that are not valid comparators\n .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n .map(comp => new Comparator(comp, this.options))\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const l = rangeList.length\n const rangeMap = new Map()\n for (const comp of rangeList) {\n if (isNullSet(comp))\n return [comp]\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has(''))\n rangeMap.delete('')\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceTilde(comp, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceCaret(comp, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((comp) => {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<')\n pr = '-0'\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin)))\n minver = setMin\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "module.exports = {\n rosReleases: {\n kinetic: { rosVersion: 1, ubuntuCodename: 'xenial' },\n melodic: { rosVersion: 1, ubuntuCodename: 'bionic' },\n noetic: { rosVersion: 1, ubuntuCodename: 'focal' },\n dashing: { rosVersion: 2 },\n eloquent: { rosVersion: 2 },\n foxy: { rosVersion: 2 },\n galactic: { rosVersion: 2 },\n humble: { rosVersion: 2 },\n iron: { rosVersion: 2 },\n rolling: { rosVersion: 2 },\n }\n};", "const semverCompare = require('semver/functions/compare');\nconst semverMinVersion = require('semver/ranges/min-version');\n\nconst _ = {\n get: require('lodash/get'),\n set: require('lodash/set'),\n unset: require('lodash/unset'),\n forEach: require('lodash/forEach'),\n map: require('lodash/map'),\n isEmpty: require('lodash/isEmpty'),\n eq: require('lodash/isEqual'),\n isPlainObject: require('lodash/isPlainObject'),\n merge: require('lodash/merge'),\n};\n\nconst loglevel = require('loglevel');\n// const {consola} = require('consola');\nconst chalk = require('chalk');\n\nconst constants = require('./constants');\n\n/* Convenience function to set all loggers to the given level. */\nloglevel.setAll = (level) =>\n Object.values(loglevel.getLoggers()).forEach(l => l.setLevel(level));\n\nconst methodColors = {\n warn: chalk.yellow,\n error: chalk.red,\n info: chalk.green,\n debug: chalk.gray,\n};\nconst coloredMethod = (method) =>\n methodColors[method] ? methodColors[method](method) : method;\n\n// patch the methodFactory to prefix logs with name and level\nconst originalFactory = loglevel.methodFactory;\nloglevel.methodFactory = (methodName, level, loggerName) => {\n const rawMethod = originalFactory(methodName, level, loggerName);\n\n if (typeof window != 'undefined') {\n // browser: keep it simple\n const context = `${loggerName} ${methodName}`;\n return (...args) => rawMethod(`[${context}]`, ...args);\n }\n\n const context = `${loggerName} ${coloredMethod(methodName)}`;\n return (...args) => rawMethod(\n `[${chalk.blue((new Date()).toISOString())} ${context}]`, ...args);\n};\n\n/** Get a new loglevel logger; call with a name, e.g., `module.id`. The returned\n* logger has methods trace, debug, info, warn, error. See\n* https://www.npmjs.com/package/loglevel for details.\n*/\nconsole.log(loglevel, chalk, loglevel.getLogger);\nconst getLogger = loglevel.getLogger;\n// const getLogger = t => {\n// const logger = consola.withTag(t);\n// logger.setLevel = (l) => { logger.level = l; }\n// return logger;\n// }\n\n/** Deep-clone the given object. All functionality is lost, just data is kept. */\nconst clone = (obj) => JSON.parse(JSON.stringify(obj));\n\n/** Parse JWT and return the decoded payload (JSON). */\nconst decodeJWT = (jwt) => JSON.parse(atob(jwt.split('.')[1]));\n\n/** Try parsing JSON, return null if unsuccessful */\nconst tryJSONParse = (string) => {\n try {\n return JSON.parse(string);\n } catch (e) {\n return null;\n }\n};\n\n/** Reusable visitor pattern: iteratively visits all nodes in the tree\n described by `object`, where `childField` indicates the child-of predicate.\n*/\nconst visit = (object, childField, visitor) => {\n if (!object) return;\n visitor(object);\n object[childField]?.forEach(child => visit(child, childField, visitor));\n};\n\n/** Given an object and a path, visit each ancestor of the path */\nconst visitAncestor = (object, path, visitor, prefix = []) => {\n visitor(object, prefix);\n const next = path[0];\n if (next) {\n const sub = object[next];\n if (sub) {\n visitAncestor(sub, path.slice(1), visitor, prefix.concat(next));\n }\n }\n};\n\n/** Wait for delay ms, for use in async functions. */\nconst wait = (delay) => new Promise((resolve) => { setTimeout(resolve, delay); });\n\n// -------------------------------------------------------------------------\n// DataCache tools\n\n/**\n * Given an object, return a new flat object of topic+value pairs, e.g.:\n```js\n{a: {b: 1, c: 2}, d: 3} \u2192 {'/a/b': 1, '/a/c': 2, '/d': 3}\n```\nNote: not idempotent!\n```js\n{'/a/b': 1, '/a/c': 2, d: 3} \u2192 {'%2Fa%2Fb': 1, '%2Fa%2Fc': 2, '/d': 3}\n```\n*/\nconst toFlatObject = (obj, prefix = [], rtv = {}) => {\n _.forEach(obj, (value, key) => {\n // const newPrefix = prefix.concat(topicToPath(String(key)));\n const newPrefix = prefix.concat(String(key));\n\n // TODO: using isPlainObject also means custom objects (classes) do not get\n // broken down.\n if ((_.isPlainObject(value) || value instanceof Array) && value !== null) {\n // it's an object or array\n toFlatObject(value, newPrefix, rtv);\n } else {\n // it's a primitive\n rtv[pathToTopic(newPrefix)] = value;\n }\n });\n return rtv;\n};\n\n/** Iterate through the object and invoke callback for each match of path (with\nnamed wildcards) */\nconst forMatchIterator = (obj, path, callback, pathSoFar = [], matchSoFar = {}) => {\n\n if (path.length == 0 || path[0] == '#') {\n callback(obj, pathSoFar, matchSoFar);\n return;\n }\n\n const next = path[0]; // don't use shift, we don't want to modify path\n if (next) {\n for (let key in obj) {\n if (key == next || next == '*' || next.startsWith('+')) {\n const match = next.startsWith('+') && next.length > 1 ?\n Object.assign({}, matchSoFar, {[next.slice(1)]: key}) :\n matchSoFar;\n forMatchIterator(obj[key], path.slice(1), callback,\n pathSoFar.concat([key]), match);\n }\n }\n }\n};\n\n/** Like _.set but without arrays. This allows using numbers as keys. */\nconst setFromPath = (obj, path, value) => {\n if (path.length == 0) return obj;\n const next = path.shift();\n if (path.length == 0) {\n obj[next] = value;\n } else {\n if (!obj[next]) obj[next] = {};\n setFromPath(obj[next], path, value);\n }\n};\n\nconst encodeTopicElement = x => x.replace(/%/g, '%25').replace(/\\//g, '%2F');\nconst decodeTopicElement = x => x.replace(/%25/g, '%').replace(/%2F/g, '/');\n\n/** convert a path array to mqtt topic; reduces +id identifiers to + */\nconst pathToTopic = (pathArray) => {\n /** reduce wildcards with Ids, such as `+sessionId`, to just + */\n const dropWildcardIds = (x) => x.startsWith('+') ? '+' : x;\n return `/${pathArray.map(dropWildcardIds).map(encodeTopicElement).join('/')}`;\n};\n\n/** convert topic to path array */\nconst topicToPath = (topic) => {\n // split topic by slashes, but not if they are escaped\n // const path = topic.match(/(\\\\.|[^/])+/g) || [];\n // split topic by slashes and unescape slashes in each item\n const path = topic.split('/').map(decodeTopicElement);\n // handle leading slash\n path.length > 0 && path[0].length == 0 && path.shift();\n // handle trailing slash\n path.length > 0 && path.at(-1).length == 0 && path.pop();\n return path;\n};\n\n/** match a slash-separated topic with a selector using +XYZ for (named)\n wildcards. Return the matching result.\n*/\nconst topicMatch = (selector, topic) => {\n const byArray = (s, p) => {\n if (s.length == 0) return true; // we are done: prefix matched\n if (s[0][0] == '#') return true; // explicit tail-wildcard\n // if (p.length < s.length) return false;\n if (p.length == 0) return true; // we are done, matched all\n // simple match:\n if (s[0] == p[0]) return byArray(s.slice(1), p.slice(1));\n // wild card match:\n if (s[0][0] == '+') {\n const sub = byArray(s.slice(1), p.slice(1));\n return sub && Object.assign({[s[0].slice(1)]: p[0]}, sub);\n }\n // else: failure!\n return false;\n };\n\n const selectorArray = topicToPath(selector);\n const pathArray = topicToPath(topic);\n // const selectorArray = selector.split('/');\n // const pathArray = topic.split('/');\n return byArray(selectorArray, pathArray);\n};\n\n/** sub is a strict sub-topic of parent, and in particular not equal */\nconst isSubTopicOf = (sub, parent) => {\n const pPath = topicToPath(parent);\n const sPath = topicToPath(sub);\n return isPrefixOf(pPath, sPath) && pPath.length < sPath.length;\n};\n\n/** prefixArray is a prefix of the array */\nconst isPrefixOf = (prefixArray, array) => {\n if (prefixArray.length == 0) return true;\n return (prefixArray[0] == array[0] &&\n isPrefixOf(prefixArray.slice(1), array.slice(1))\n );\n}\n\n\n// -------------------------------------------------------------------------\n// MQTT Tools\n\n/** parse usernames used in MQTT */\nconst parseMQTTUsername = (username) => {\n const parts = username.split(':');\n return {\n organization: parts[0],\n client: parts[1],\n sub: parts.slice(2)\n }\n};\n\n/** parse an MQTT topic according to our topic schema */\nconst parseMQTTTopic = (topic) => {\n const parts = topicToPath(topic);\n return {\n organization: parts[0],\n device: parts[1],\n capabilityScope: parts[2],\n capabilityName: parts[3],\n capability: `${parts[2]}/${parts[3]}`,\n version: parts[4],\n sub: parts.slice(5)\n }\n};\n\nconst mqttParsePayload = (payload) =>\n payload.length == 0 ? null : JSON.parse(payload.toString('utf-8'));\n// TODO: ^ This can probably now just become tryJSONParse\n\n/** delete all retained messages in a certain topic prefix, waiting for\n a given delay to collect existing retained. Use with care, never delete topics\n not owned by us. Harmless within capabilities, which are namespaced already.\n*/\nconst mqttClearRetained = (mqttClient, prefixes, callback, delay = 1000) => {\n\n const toDelete = [];\n const collectToDelete = (topic) => {\n // there may be other mqtt subscriptions running, filter by topic\n prefixes.forEach(prefix =>\n // mqttTopicMatch(topic, `${prefix}/#`) && toDelete.push(topic)\n topicMatch(`${prefix}/#`, topic) && toDelete.push(topic)\n );\n }\n mqttClient.on('message', collectToDelete);\n\n // subscribe to all\n prefixes.forEach(prefix => {\n if (typeof prefix == 'string') {\n mqttClient.subscribe(`${prefix}/#`);\n } else {\n console.warn('Ignoring', prefix, 'since it is not a string.');\n }\n });\n\n // value to use to clear, depending on node.js vs. browser\n const nullValue = (typeof Buffer != 'undefined' ? Buffer.alloc(0) : null);\n\n setTimeout(() => {\n mqttClient.removeListener('message', collectToDelete);\n prefixes.forEach(prefix => mqttClient.unsubscribe(`${prefix}/#`));\n\n const count = toDelete.length;\n console.log(`clearing ${count} retained messages from ${prefixes}`);\n toDelete.forEach(topic => {\n mqttClient.publish(topic, nullValue, {retain: true});\n });\n\n callback && callback(count);\n }, delay);\n};\n\n// -------------------------------------------------------------------------\n\nconst getRandomId = () => Math.random().toString(36).slice(2);\n\n// -------------------------------------------------------------------------\n\n/** Compare to version strings. Return -1 if a is lower than b,\n0 if they are equal, and 1 otherwise. If either is not a complete version,\ne.g., 2.0, interpret it as a range and use its minimum version for the\ncomparison. Hence, 2.0 < 2.0.1. */\nconst versionCompare = (a, b) =>\n semverCompare(semverMinVersion(a), semverMinVersion(b));\n\n// -------------------------------------------------------------------------\n\n/** given an object where the keys are versions, merge this into one object\n where the latest version of each subfield overwrites any previous */\nconst mergeVersions = (versionsObject, subTopic = undefined, options = {}) => {\n if (!versionsObject) {\n return subTopic ? _.set({}, subTopic, versionsObject) : versionsObject;\n }\n\n const versions = Object.keys(versionsObject).filter(ver =>\n (!options.maxVersion || versionCompare(ver, options.maxVersion) <= 0) &&\n (!options.minVersion || versionCompare(options.minVersion, ver) <= 0))\n .sort(versionCompare);\n\n const merged = {};\n const subPath = subTopic && topicToPath(subTopic);\n versions.forEach(nextVersion => {\n const newValue = subPath ? _.get(versionsObject[nextVersion], subPath) :\n versionsObject[nextVersion];\n // Object.assign(merged, newValue);\n _.merge(merged, newValue);\n });\n return subPath ? _.set({}, subPath, merged) : merged;\n};\n\n// -------------------------------------------------------------------------\n// Formatting tools\n\nconst units = ['B', 'KB', 'MB', 'GB', 'TB'];\nconst formatBytes = (bytes) => {\n if (!bytes) return '--';\n let i = 0;\n while (bytes > 1024) {\n bytes /= 1024;\n i++;\n }\n return `${bytes.toFixed(2)} ${units[i]}`;\n}\n\nconst formatDuration = (seconds) => {\n if (!seconds) return '--';\n const parts = {};\n if (seconds > 3600) {\n parts.h = Math.floor(seconds / 3600);\n seconds = seconds % 3600;\n }\n if (seconds > 60) {\n parts.m = Math.floor(seconds / 60);\n seconds = seconds % 60;\n }\n parts.s = Math.floor(seconds);\n\n let rtv = '';\n parts.h > 0 && (rtv += `${parts.h}h `);\n parts.m > 0 && (rtv += `${parts.m}m `);\n !parts.h && (rtv += `${parts.s}s`);\n return rtv.trim();\n};\n\n// -------------------------------------------------------------------------\n\nmodule.exports = { parseMQTTUsername, parseMQTTTopic,\n pathToTopic, topicToPath, toFlatObject, topicMatch,\n mqttParsePayload, getRandomId, versionCompare,\n loglevel, getLogger,\n mergeVersions, mqttClearRetained, isSubTopicOf, clone, setFromPath,\n forMatchIterator, encodeTopicElement, decodeTopicElement, constants, visit,\n wait, formatBytes, formatDuration, tryJSONParse,\n decodeJWT, visitAncestor\n};\n", "\nconst _ = {\n get: require('lodash/get'),\n set: require('lodash/set'),\n unset: require('lodash/unset'),\n forEach: require('lodash/forEach'),\n map: require('lodash/map'),\n isEmpty: require('lodash/isEmpty'),\n eq: require('lodash/isEqual'),\n isPlainObject: require('lodash/isPlainObject'),\n merge: require('lodash/merge'),\n};\n\nconst {topicToPath, pathToTopic, toFlatObject, topicMatch, forMatchIterator}\n = require('./common');\n\n/** Unset the topic in that obj, and clean up parent if empty, recursively.\nReturn the path to the removed node.\n*/\nconst unset = (obj, path) => {\n if (!path || path.length == 0) return;\n _.unset(obj, path);\n const parentPath = path.slice(0, -1);\n // _.get doesn't do the intuitive thing for the empty path, handle it ourselves\n const parent = parentPath.length == 0 ? obj : _.get(obj, parentPath);\n if (_.isEmpty(parent)) {\n return unset(obj, parentPath);\n } else {\n return path;\n }\n};\n\n/** Given a modifier `{\"a/b/c\": \"xyz\"}` update the object `obj` such that\n`obj.a.b.c = \"xyz\"`. */\nconst updateObject = (obj, modifier) => {\n _.forEach( modifier, (value, topic) => {\n const path = topicToPath(topic);\n if (value == null) {\n unset(obj, path);\n } else {\n _.set(obj, path, value);\n }\n });\n return obj;\n};\n\n/** Given an object and a path with wildcards (`*` and `+`), *modify* the object\nto only contain elements matched by the path, e.g.,\n`{a: {b: 1, c: 2}, d: 2}` and `['a','+']` would give `{a: {b: 1, c: 2}}`\n\n@param {object} obj - The object to select from\n@param {array} path - An array specifying the path to select, potentially\ncontaining mqtt wildcards ('+').\n*/\nconst selectFromObject = (obj, path) => {\n if (path.length == 0) return;\n const next = path[0];\n if (next) {\n for (let key in obj) {\n if (key != next && next != '*' && !next.startsWith('+')) {\n delete obj[key];\n } else {\n selectFromObject(obj[key], path.slice(1));\n }\n }\n }\n};\n\n\n/**\n* A class implementing a local data cache, used as a local data store with\n* deduplication detection and update events. While this class is very handy\n* you probably won't need to create instances of it directly. Instead use\n* the mqttSync.data instance which holds the locally stored data\n* subscribed/published from/to MQTTSync.\nFor example on the robot:\n```js\n// update/publish our status:\nmqttSync.data.update('status', {changed: Date.now(), msg: 'OK'});\n// subscribe to new user requests (e.g., from UI):\nmqttSync.data.subscribePath('+user/request', (request, key, {user}) => {\n log.debug(`user ${user} made request`, request);\n});\n```\nIn the cloud or in a web component you would need to use the full topic including\norg, device, scope, cap-name, and version.\n*/\nclass DataCache {\n\n #data = {};\n #listeners = [];\n #flatListeners = [];\n\n constructor(data = {}) {\n this.#data = data;\n }\n\n /** Update the object with the given value at the given path, remove empty;\n return the flat changes (see toFlatObject). Add `tags` to updates to mark\n them somehow based on the context, e.g., so that some subscriptions can choose\n to ignore updates with a certain tag.\n */\n updateFromArray(path, value, tags = {}) {\n // const empty = Object.keys(this.#data).length == 0; // object already empty\n const current = _.get(this.#data, path);\n if (value == null) {\n if (current === undefined || current === null) {\n return {}; // no change, do not call listeners\n } else {\n unset(this.#data, path);\n }\n } else {\n if (_.eq(current, value)) {\n // note: this is just a shallow equal, so replacing a sub-document\n // with an atomic copy of it should still trigger listeners.\n // TODO: Note also that when value is an object, we will set it by\n // reference here, so any changes made to that object will *not* trigger\n // listeners because `current` will already be changed -- which is\n // probably wrong. May want to always clone value first.\n return {}; // nothing to do, do not bother listeners\n }\n // console.log('setting', path, value);\n _.set(this.#data, path, value);\n // TODO: implement this ourselves so we can do better change-checking\n }\n\n const topic = pathToTopic(path);\n const obj = {[topic]: value};\n\n // flatten the value and combine eith topic (without reflattening the topic):\n let flatChanges;\n if (value instanceof Object) {\n const flatValue = toFlatObject(value);\n flatChanges = {};\n _.forEach(flatValue, (atomic, flatKey) => {\n flatChanges[`${topic}${flatKey}`] = atomic;\n });\n } else {\n flatChanges = obj;\n }\n\n // option 1. using flat changes (sub-documents are never atomic)\n // this.#listeners.forEach(fn => fn(flatChanges));\n\n // option 2. allow atomic sub-document changes\n this.#listeners.forEach(fn => fn(obj, tags));\n\n this.#flatListeners.forEach(fn => fn(flatChanges, tags));\n\n return flatChanges;\n }\n\n /** Update the value at the given path (array or dot separated string) */\n update(path, value, tags) {\n if (typeof path == 'string') {\n return this.updateFromTopic(path, value, tags);\n } else if (path instanceof Array) {\n return this.updateFromArray(path, value, tags);\n } else {\n throw new Error('unrecognized path expression');\n }\n }\n\n /** Set value from the given topic (with or without leading or trailing slash) */\n updateFromTopic(topic, value, tags) {\n return this.updateFromArray(topicToPath(topic), value, tags);\n }\n\n /** Update data from a modifier object where keys are topic names to be\n interpreted as paths, and values are the values to set */\n updateFromModifier(modifier, tags) {\n return _.map(modifier, (value, topic) =>\n this.updateFromTopic(topic, value, tags));\n }\n\n /** Add a callback for all change events. */\n subscribe(callback) {\n if (callback instanceof Function) {\n this.#listeners.push(callback);\n } else {\n console.warn('DataCache.subscribe expects a function as argument. Did you mean to use subscribePath?');\n }\n }\n\n /** Subscribe to a specific topic only. Callback receives\n `value, key, matched, tags`. */\n subscribePath(topic, callback) {\n this.#listeners.push((changes, tags) => {\n _.forEach(changes, (value, key) => {\n const matched = topicMatch(topic, key);\n matched && callback(value, key, matched, tags);\n });\n });\n }\n\n /** Same as subscribePath but always get all changes in flat form */\n subscribePathFlat(topic, callback) {\n this.#flatListeners.push((changes, tags) => {\n _.forEach(changes, (value, key) => {\n const matched = topicMatch(topic, key);\n matched && callback(value, key, matched, tags);\n });\n });\n }\n\n /** Remove a callback previously registered using `subscribe`. */\n unsubscribe(callback) {\n this.#listeners = this.#listeners.filter(f => f != callback);\n }\n\n /** Get sub-value at path, or entire object if none given */\n get(path = []) {\n return path.length == 0 ? this.#data : _.get(this.#data, path);\n }\n\n /** Get sub-value specified by topic */\n getByTopic(topic) {\n return this.get(topicToPath(topic));\n }\n\n /** Filter the object using path with wildcards */\n filter(path) {\n const rtv = JSON.parse(JSON.stringify(this.get()));\n selectFromObject(rtv, path);\n return rtv;\n }\n\n /** Filter the object using topic with wildcards */\n filterByTopic(topic) {\n return this.filter(topicToPath(topic));\n }\n\n /** For each topic match, invoke the callback with the value, topic, and match\n just like subscribePath, but on the current data rather than future changes. */\n forMatch(topic, callback) {\n const path = topicToPath(topic);\n this.forPathMatch(path, callback);\n }\n\n /** For each path match, invoke the callback with the value, topic, and match\n just like subscribePath */\n forPathMatch(path, callback) {\n forMatchIterator(this.get(), path, callback);\n }\n};\n\nmodule.exports = {\n DataCache, updateObject\n}", "'use strict';\n\nconst { mqttParsePayload, topicMatch, topicToPath, pathToTopic,\ntoFlatObject, getLogger, mergeVersions, parseMQTTTopic, isSubTopicOf,\nversionCompare, encodeTopicElement, visitAncestor, loglevel } = require('./common');\nconst { DataCache } = require('./DataCache');\nconst _ = require('lodash');\n\nconsole.log({loglevel, toFlatObject, getLogger});\nconst log = getLogger('MqttSync');\n\nconst HEARTBEAT_TOPIC = '$SYS/broker/uptime';\nconst specialKey = '$_'; // special key to reify \"value\" in publishedMessages\n\nconst noop = () => {};\n\n/* clone a mqtt payload, if necessary */\nconst clone = (payload) => {\n if (typeof payload == 'object') {\n return JSON.parse(JSON.stringify(payload));\n } else {\n return payload;\n }\n};\n\n/* return new string that ends in /# for sure */\nconst ensureHashSuffix = (topic) =>\n topic.endsWith('/#') ? topic :\n ( topic.endsWith('/') ? topic.concat('#') :\n topic.concat('/#') );\n\n/* given a path, replace any double slashes, '//', with single ones */\nconst resolveDoubleSlashes = (path) => path.replace(/\\/\\//g, '/');\n\n\n/** A class that combines DataCache and MQTT to implement a data synchronization\nfeature over the latter. Relies on retained messages in mqtt for persistence.\n* @param {object} options\n* @param {object} options.mqttClient - An already connected mqtt.js client.\n* @param {boolean} [options.ignoreRetain] - retain all messages, ignorant of the retain\n* flag.\n* @param {number} [options.sliceTopic] - a number indicating at what level to\n* slice the topic, i.e., only use a suffix. Used in robot-capabilities to slice\noff the topic prefix (namespaces).\n* @param {array} [options.migrate] - an array of objects of the form\n* `{topic, newVersion, level}`. Only meaningful in the cloud. Instructs MQTTSync\nto first migrate existing topics to a new version namespace, publishing at the\ndesignated level down from the version level. For example:\n```js\n[{ topic: `/myorg/mydevice/@local/my-cap/+/config`,\n newVersion: this.version,\n level: 1\n}]\n```\nWould migrate any existing data in the capability's `config` namespace to the\ncurrent version of the package, publishing at the `config/+` level (rather than\natomically at the config level itself).\n* @param {function} [options.onReady] - A function that is called when the MQTTSync\nclient is ready and has completed any requested migrations.\n* @param {function} [options.onChange] - A function that is called any time there\nis a change to the shared data. This is not usually used. It's usually better to\nuse the finer grained `MqttSync.data.subscribePath` instead, that allows you to\nsubscribe to changes just on a specific sun-object instead, see DataCache.\n*/\nclass MqttSync {\n\n data = new DataCache();\n\n /* Directory of paths we've subscribed to in this class; this matters\n because the same mqtt client may have subscriptions to paths that we don't\n care to store (sync). */\n subscribedPaths = {};\n\n publishedPaths = {}; // not used in atomic mode\n\n /* Store messages retained on mqtt so we can publish what is necessary to\n achieve the \"should-be\" state. Note that we cannot use a structured document\n for storing these publishedMessages since we need to be able to store separate\n values at non-leaf nodes in the object (just like mqtt, where you can have\n /a/b = 1 and /a/b/c = 1 at the same time). Note: not used in atomic mode.\n Note: we use specialKey in this DataCache to allow overlapping\n topics (e.g., `/a/b/$_ = 1` and `/a/$_ = {b: 2}`)\n */\n publishedMessages = new DataCache();\n\n /* The order in which we send retained messages matters, which is why we use\n a queue for sending things. Note that we here use the property of Map that it\n remembers insertion order of keys. */\n publishQueue = new Map();\n\n /* List of callbacks waiting for next heartbeat, gets purged with each\n heartbeat */\n heartbeatWaitersOnce = [];\n\n heartbeats = 0;\n\n beforeDisconnectHooks = [];\n\n constructor({mqttClient, onChange, ignoreRetain, migrate, onReady,\n sliceTopic, onHeartbeatGranted }) {\n this.mqtt = mqttClient;\n\n this.mqtt.on('message', (topic, payload, packet) => {\n const payloadString = payload && payload.toString()\n log.debug('got message', topic, payloadString.slice(0, 180),\n payloadString.length > 180 ? `... (${payloadString.length} bytes)` : '',\n packet.retain);\n\n if (topic == HEARTBEAT_TOPIC) {\n if (this.heartbeats > 0) { // ignore initial heartbeat (retained)\n this.heartbeatWaitersOnce.forEach(cb => cb());\n this.heartbeatWaitersOnce = [];\n }\n if (this.heartbeats == 1 && !migrate && onReady) onReady();\n this.heartbeats++;\n\n } else if (packet.retain || ignoreRetain) {\n let path = topicToPath(topic);\n log.debug('processing message', topic, path);\n if (sliceTopic) {\n path = path.slice(sliceTopic);\n topic = pathToTopic(path);\n }\n\n const json = mqttParsePayload(payload);\n if (this.isPublished(topic)) {\n // store plain messages, still stored in a structure, but values are\n // not interpreted; we just store them to undo them if necessary, e.g.,\n // for switching between atomic and non-atomic subdocuments\n // log.trace('setting publishedMessages', topic);\n this.publishedMessages.updateFromArray([...path, specialKey], json);\n\n // this.pubData.update(topic, json);\n // Still need to update the data so that we can detect changes we make\n // and publish them. But we need to break the reaction-chain to avoid\n // loops, so tag this update with 'published' and then ignore those\n // updates in this.publish.\n this.data.update(topic, json, {external: true});\n\n } else if (this.isSubscribed(topic)) {\n log.debug('applying received update', topic);\n const changes = this.data.update(topic, json);\n onChange && Object.keys(changes).length > 0 && onChange(changes);\n }\n }\n });\n\n this.mqtt.subscribe(HEARTBEAT_TOPIC, {rap: true}, (err, granted) => {\n log.debug(HEARTBEAT_TOPIC, {granted});\n granted && granted.length > 0 && onHeartbeatGranted?.();\n });\n\n migrate?.length > 0 && this.migrate(migrate, () => {\n log.debug('done migrating', onReady);\n onReady && this.waitForHeartbeatOnce(onReady);\n });\n }\n\n /**\n * Publish all values at the given level of the given object under the given\n * topic (plus sub-key, of course).\n * TODO: Is this OK, or do we need to go through this.publish?\n */\n publishAtLevel(topic, value, level) {\n log.debug(`publishingAtLevel ${level}`, topic, value);\n\n if (level > 0) {\n _.forEach(value, (subValue, subKey) => {\n const subTopic = `${topic}/${encodeTopicElement(subKey)}`;\n log.debug(`publishing ${subTopic}`);\n this.publishAtLevel(subTopic, subValue, level - 1);\n });\n } else {\n this.mqtt.publish(topic, JSON.stringify(value), {retain: true}, (err) => {\n err && log.warn('Error when publishing migration result', err);\n });\n }\n }\n\n /** Migrate a list of `{topic, newVersion, transform}`. The version number in\n topic will be ignored, and all versions' values will be merged, applied in\n order, such that the latest version is applied last. */\n migrate(list, onReady = undefined) {\n\n let toGo = list.length;\n if (toGo == 0) {\n onReady && onReady(); // in case an empty list was given\n return;\n }\n\n /* called each time one item is done */\n const oneDown = () => --toGo == 0 && onReady && onReady();\n\n list.forEach(({topic, newVersion, transform = undefined, flat = false,\n level = 0}) => {\n log.debug('migrating', topic, newVersion);\n const {organization, device, capability, sub} = parseMQTTTopic(topic);\n const prefix = `/${organization}/${device}/${capability}`;\n\n const suffix = sub.length == 0 ? '/#' : pathToTopic(sub);\n // suffix will have a leading slash\n const subTopic = `${prefix}/+${suffix}`;\n\n this.subscribe(subTopic, (err) => {\n if (err) {\n log.warn('Error during migration', err);\n oneDown();\n return;\n }\n\n this.waitForHeartbeatOnce(() => {\n // merge everything\n log.debug('got heartbeat', topic, subTopic);\n const all = this.data.getByTopic(prefix);\n if (!all) {\n // no data to migrate\n this.unsubscribe(subTopic);\n oneDown();\n return;\n }\n\n const merged = mergeVersions(all, suffix, {maxVersion: newVersion});\n // log.debug(JSON.stringify({all, merged}, true, 2));\n // get suffix in merged\n const suffixMergedValue = _.get(merged, topicToPath(suffix));\n // ^ this will need to change to support wild-cards in suffix\n const transformed = transform ? transform(suffixMergedValue) :\n suffixMergedValue;\n // publish its value at `prefix/newVersion/suffix`\n const newTopic =\n resolveDoubleSlashes(`${prefix}/${newVersion}/${suffix}`);\n log.debug('publishing merged', newTopic);\n\n if (flat) {\n const flatObj = toFlatObject(transformed);\n const newPath = topicToPath(newTopic);\n _.forEach(flatObj, (value, key) => {\n const keyTopic = pathToTopic(newPath.concat(topicToPath(key)));\n // TODO: Is this OK, or do we need to go through this.publish?\n this.mqtt.publish(keyTopic, JSON.stringify(value),\n {retain: true}, (err) => {\n err && log.warn(\n `Error when publishing migration result for ${key}`, err);\n });\n });\n\n } else {\n this.publishAtLevel(newTopic, transformed, level);\n }\n\n this.unsubscribe(subTopic); // TODO: ensure hash?\n this.waitForHeartbeatOnce(() => {\n // now clear this suffix in the old version space\n const oldVersions = Object.keys(all).filter(v =>\n versionCompare(v, newVersion) < 0);\n // log.debug({oldVersions});\n\n const prefixesToClear = oldVersions.map(oldV =>\n resolveDoubleSlashes(`${prefix}/${oldV}/${suffix}`));\n\n log.debug({prefixesToClear});\n this.clear(prefixesToClear);\n oneDown();\n });\n });\n });\n });\n }\n\n /** Delete all retained messages in a certain topic prefix, waiting for\n a mqtt broker heartbeat to collect existing retained. Use with care, never\n delete topics not owned by us. Harmless within capabilities, which are\n namespaced already.\n\n `options.filter(topic)`: a function that can be provided to further,\n programmatically filter the set of topics to clear, e.g., to onlt clear\n topics of old versions.\n\n Note: This may not yet work in robot-capabilities, since the subscription\n prefix and received topic prefix don't match (the device prefix is added to\n subscription by localMQTT.\n */\n clear(prefixes, callback = undefined, options = {}) {\n\n const toDelete = [];\n const collectToDelete = (topic) => {\n // there may be other mqtt subscriptions running, filter by topic\n prefixes.forEach(prefix =>\n topicMatch(`${prefix}/#`, topic)\n && (!options.filter || options.filter(topic))\n && toDelete.push(topic)\n );\n }\n this.mqtt.on('message', collectToDelete);\n // TODO: this only works if we haven't already gotten these messages before!\n\n // subscribe to all\n prefixes.forEach(prefix => {\n if (typeof prefix == 'string') {\n this.mqtt.subscribe(`${prefix}/#`);\n } else {\n log.warn('Ignoring', prefix, 'since it is not a string.');\n }\n });\n\n // value to use to clear, depending on node.js vs. browser\n const nullValue = (typeof Buffer != 'undefined' ? Buffer.alloc(0) : null);\n\n this.waitForHeartbeatOnce(() => {\n this.mqtt.removeListener('message', collectToDelete);\n prefixes.forEach(prefix => this.mqtt.unsubscribe(`${prefix}/#`));\n\n const count = toDelete.length;\n log.debug(`clearing ${count} retained messages from ${prefixes}`);\n toDelete.forEach(topic => {\n this.mqtt.publish(topic, nullValue, {retain: true});\n });\n\n callback && callback(count);\n });\n };\n\n\n /** register a callback for the next heartbeat from the broker */\n waitForHeartbeatOnce(callback) {\n // need to wait a tick, in case we are still in the callback tree\n // of a previous heartbeat waiter\n setTimeout(() => this.heartbeatWaitersOnce.push(callback), 1);\n }\n\n /** check whether we are subscribed to the given topic */\n isSubscribed(topic) {\n return Object.keys(this.subscribedPaths).some(subscribedTopic =>\n topicMatch(subscribedTopic, topic));\n }\n\n /** Check whether we are publishing the given topic in a non-atomic way.\n This is used to determine whether to store the published value or not. */\n isPublished(topic) {\n return Object.keys(this.publishedPaths).some(subscribedTopic =>\n topicMatch(subscribedTopic, topic) &&\n !this.publishedPaths[subscribedTopic].atomic\n );\n }\n\n /** Subscribe to the given topic (and all sub-topics). The callback will\n indicate success/failure, *not* a message on the topic. */\n subscribe(topic, callback = noop) {\n topic = ensureHashSuffix(topic);\n log.debug('subscribing to', topic);\n if (this.subscribedPaths[topic]) {\n log.debug('already subscribed to', topic);\n callback();\n return;\n }\n\n this.mqtt.subscribe(topic, {rap: true}, (err, granted) => {\n log.debug('subscribe', topic, 'granted:', granted);\n if (granted && granted.some(grant => grant.topic == topic && grant.qos < 128)) {\n // granted\n this.subscribedPaths[topic] = 1;\n callback(null);\n } else {\n // let user know (somehow) when we don't get permission\n callback(`not permitted to subscribe to topic ${topic}, ${JSON.stringify(granted)}`);\n }\n });\n }\n\n unsubscribe(topic) {\n if (this.subscribedPaths[topic]) {\n this.mqtt.unsubscribe(topic);\n delete this.subscribedPaths[topic];\n }\n }\n\n /** Publish retained to MQTT, store as published, and return a promise */\n _actuallyPublish(topic, value) {\n // return new Promise((resolve, reject) =>\n // this.mqtt.publish(topic,\n // value == null ? null : JSON.stringify(value), // aka \"unparse payload\"\n // {retain: true},\n // (err) => {\n // // Note that this returns optimistically at QoS 0, and no error occurs\n // // even when we are not allowed to publish this topic/message, see\n // // https://github.com/mqttjs/MQTT.js/#publish. Only when the client\n // // disconnects it seems.\n // if (err) {\n // log.warn('error in _actuallyPublish:', err);\n // reject(err);\n // // TODO: if this happens, we may need to force a full-sync\n // } else {\n // resolve();\n // }\n // }));\n\n if (!this.mqtt.connected) {\n log.warn('not connected, not publishing', topic);\n return false;\n }\n log.debug('actually publishing', topic);\n this.mqtt.publish(topic,\n value == null ? null : JSON.stringify(value), // aka \"unparse payload\"\n {retain: true});\n return true;\n }\n\n /** Send all items in the queue in sequence, if any and if not already\n running. */\n // async _processQueue() {\n // if (this._processing) return; // already running (and probably waiting)\n //\n // this._processing = true;\n // while (this.publishQueue.length > 0) {\n // const {topic, value} = this.publishQueue.shift();\n // await this._actuallyPublish(topic, value);\n // }\n // this._processing = false;\n // }\n\n // when using Map\n _processQueue_rec(cb) {\n if (this.publishQueue.size > 0) {\n const [topic, value] = this.publishQueue.entries().next().value;\n // this.publishQueue.delete(topic);\n // this._actuallyPublish(topic, value).then(\n // () => this._processQueue_rec(cb),\n // cb); // always call cb, even in rejection case\n if (this._actuallyPublish(topic, value)) {\n this.publishQueue.delete(topic);\n this._processQueue_rec(cb);\n } else {\n // try again soon\n setTimeout(() => this._processQueue_rec(cb), 5000);\n }\n } else {\n cb();\n }\n }\n\n _processQueue() {\n if (this._processing) return; // already running (and probably waiting)\n\n this._processing = true; // semaphore\n this._processQueue_rec(() => this._processing = false);\n }\n\n /** Set delay between processing of publishing queue in milliseconds. This\n allows you to effectively throttle the rate at which this instance will\n publish changes. Note that updates to a topic already in the queue will not\n cause multiple publications. Only the latest value will be published.\n @param {number} [delay] - Number of milliseconds to wait between processing\n of publish queue.\n */\n setThrottle(delay) {\n this._processQueueThrottled =\n _.throttle(this._processQueue.bind(this), delay);\n }\n\n /** Clear the set throttling delay. */\n clearThrottle() {\n delete this._processQueueThrottled;\n }\n\n addToQueue(topic, value) {\n // this.publishQueue.push({topic, value});\n this.publishQueue.set(topic, value);\n }\n\n /** Add to publication queue */\n _enqueue(topic, value) {\n log.debug('enqueuing', topic);\n this.addToQueue(topic, value);\n if (this._processQueueThrottled) {\n this._processQueueThrottled();\n } else {\n this._processQueue();\n }\n // yes, this is optimistic, but if we don't, then upcoming changes\n // may not work as expected (e.g., when switching from flat to atomic to flat)\n const path = topicToPath(topic);\n this.publishedMessages.updateFromArray([...path, specialKey],\n value == null ? null : clone(value));\n }\n\n /** Register a listener for path in data. Make sure to populate the data\n before calling this or set the data all at once afterwards.\n\n With option \"atomic\" this will always send the whole sub-document,\n not flat changes. Useful, e.g., for desiredPackages, see\n https://github.com/chfritz/transitive/issues/85.\n\n @return true if publication added (false, e.g., when already present)\n */\n publish(topic, options = {atomic: false}) {\n topic = ensureHashSuffix(topic);\n\n if (_.isEqual(this.publishedPaths[topic], options)) {\n return false;\n // avoid double subscription\n }\n this.publishedPaths[topic] = options;\n\n if (options.atomic) {\n // this case is quite simple\n this.data.subscribePath(topic, (value, key, matched, tags) => {\n // do not re-publish changes received from external:\n if (tags?.external) return;\n\n log.debug('processing change (atomic)', key, topic);\n // instantiate topic according to key (topic may have wildcards)\n const topicWithoutHash = topic.slice(0, topic.length - 2);\n const groundedTopic = pathToTopic(\n // get length of topic (how many levels of selectors), get that many\n // levels from key prefix\n topicToPath(key).slice(0, topicToPath(topicWithoutHash).length)\n );\n this._enqueue(groundedTopic, this.data.getByTopic(groundedTopic));\n });\n return true;\n }\n\n this.mqtt.subscribe(topic);\n\n // second: keep them up to date by publishing updates as changes happen\n this.data.subscribePath(topic, (value, key, matched, tags) => {\n if (tags?.external) return;\n\n log.debug('processing change', key);\n\n /* First: establish clarity by ensuring that the object defined by the\n currently present retained messages under this path accurately reflect\n the current value of this.data (and if not, publish what is necessary to\n create consistency). */\n // first, clear/replace all messages below or above this sub-path (if any)\n const path = topicToPath(key);\n\n // Check flat to atomic\n const publishedSub = this.publishedMessages.get(path);\n _.each(publishedSub, (oldSubVal, oldSubKey) => {\n if (oldSubKey == specialKey) return true;\n // We are going from flat to atomic, i.e., we are publishing at a\n // higher level than before: clear out old sub-keys.\n\n // Find all sub-sub-keys that end in `specialKey`:\n const toClear = Object.keys(toFlatObject(oldSubVal))\n .filter(subkey => subkey.endsWith(specialKey));\n\n log.debug('flat->atomic: ', {toClear}, oldSubKey);\n // Clear them all:\n toClear.forEach(oldSubSubKey => {\n const oldKey = oldSubSubKey.slice(0, -(specialKey.length + 1));\n const clearKey = `${key}/${oldSubKey}/${oldKey}`\n // log.debug('flat->atomic: clear', clearKey);\n this._enqueue(clearKey, null);\n });\n });\n\n // Check atomic to flat\n const published = this.publishedMessages.get();\n visitAncestor(published, path.slice(0, -1), (subObj, prefix) => {\n const oldVal = subObj[specialKey];\n if (oldVal && _.isObject(oldVal)) {\n log.debug('atomic->flat', {oldVal});\n // A parent topic has been published. We are going from atomic to\n // separate values: need to transform existing sub-document to flat\n // values.\n\n // Remove the old published (atomic) message:\n const prefixTopic = pathToTopic(prefix);\n this._enqueue(prefixTopic, null);\n\n // Now re-add as separate flat messages\n const flat = toFlatObject(oldVal);\n _.each(flat, (flatValue, flatKey) => {\n const oldFlatKey = `${prefixTopic}${flatKey}`;\n this._enqueue(oldFlatKey, flatValue);\n })\n }\n });\n\n /* We need to first wait until all of the above messages are out;\n otherwise replacing an atomic `/a = {c: 1}` with `/a/c = 2` would create\n a race condition where it is not clear which message, the replacement\n c = 1 or the new c = 2, would be sent last (and hence retained). That's\n why we use a publishing queue in this class.\n */\n this._enqueue(key, value);\n return true;\n });\n }\n\n /** Run all registered hooks before disconnecting */\n beforeDisconnect() {\n this.beforeDisconnectHooks.forEach(fn => fn(this));\n }\n\n /** register a new hook to be called before disconnecting */\n onBeforeDisconnect(fn) {\n this.beforeDisconnectHooks.push(fn);\n }\n}\n\nmodule.exports = MqttSync;\n", "export * from './client/shared.jsx';\nexport * from './client/hooks.jsx';\nexport * from './client/client';\n", "import React, { useState, useEffect, useMemo, useRef } from 'react';\nimport { Button, Accordion, AccordionContext, Card, Badge }\n from 'react-bootstrap';\nimport ReactWebComponent from './react-web-component';\n\nimport { parseCookie, decodeJWT } from './client';\nimport { useCapability } from './hooks';\n\nconst styles = {\n badge: {\n width: '4em'\n },\n code: {\n color: '#700',\n borderLeft: '3px solid #aaa',\n padding: '0.5em 0px 0.5em 2em',\n backgroundColor: '#f0f0f0',\n borderRadius: '4px',\n marginTop: '0.5em',\n },\n inlineCode: {\n color: '#700',\n margin: '0px 0.5em 0px 0.5em',\n }\n};\n\nconst levelBadges = [\n <Badge bg=\"success\" style={styles.badge}>OK</Badge>,\n <Badge bg=\"warning\" style={styles.badge}>Warn</Badge>,\n <Badge bg=\"danger\" style={styles.badge}>Error</Badge>,\n <Badge bg=\"secondary\" style={styles.badge}>Stale</Badge>,\n];\n\n/* The right badge for the level */\nexport const LevelBadge = ({level}) => levelBadges[level] || <span>{level}</span>;\n\n/** Reusable component for showing code */\nexport const Code = ({children}) => <pre style={styles.code}>\n {children}\n</pre>;\n\nexport const InlineCode = ({children}) => <tt style={styles.inlineCode}>\n {children}\n</tt>;\n\n\nconst intervals = {};\n\nexport const TimerContext = React.createContext({});\nexport const Timer = ({duration, onTimeout, onStart, setOnDisconnect, children}) => {\n duration = duration || 60;\n const [timer, setTimer] = useState(duration);\n const [running, setRunning] = useState(false);\n const id = useMemo(() => Math.random().toString(36).slice(2), []);\n\n const stop = () => {\n console.log('stopping timer for', id);\n onTimeout && setTimeout(onTimeout, 1);\n clearInterval(intervals[id]);\n intervals[id] = null;\n setRunning(false);\n };\n\n const startTimer = () => {\n const interval = intervals[id];\n console.log(interval, intervals, timer);\n if (!interval && timer > 0) {\n setRunning(true);\n intervals[id] = setInterval(() =>\n setTimer(t => {\n if (--t > 0) {\n return t;\n } else {\n stop();\n }\n }), 1000);\n onStart && setTimeout(onStart, 1);\n }\n\n return stop;\n };\n\n useEffect(() => { timer > 0 && !running && startTimer() }, [timer]);\n\n useEffect(() => stop, []);\n\n setOnDisconnect && setOnDisconnect(() => {\n // call on disconnect of the web component\n stop()\n });\n\n const reset = () => setTimer(duration);\n\n return <TimerContext.Provider value={{reset, duration, timer}}>\n {timer > 0 ? <div>\n {children}\n {timer < 60 && <div>Timeout in: {timer} seconds</div>}\n </div> :\n <div>Timed out. <Button onClick={reset}>\n Resume\n </Button>\n </div>}\n </TimerContext.Provider>;\n};\n\n\n/** Dynamically load and use the Transitive web component specified in the JWT.\n * Embedding Transitive components this way also enables the use of functional\n * and object properties, which get lost when using the custom element (Web\n * Component) because HTML attributes are strings.\n * Example:\n ```js\n <TransitiveCapability jwt={jwt}\n myconfig={{a: 1, b: 2}}\n onData={(data) => setData(data)}\n onclick={() => { console.log('custom click handler'); }}\n />\n ```\n*/\nexport const TransitiveCapability = ({\n jwt, host = 'transitiverobotics.com', ssl = true, ...config\n }) => {\n\n const {id, device, capability} = decodeJWT(jwt);\n const type = device == '_fleet' ? 'fleet' : 'device';\n const capName = capability.split('/')[1];\n const name = `${capName}-${type}`;\n\n const { loaded } = useCapability({\n capability,\n name,\n userId: id || config.userId, // accept both id and userId, see #492\n deviceId: device,\n host,\n ssl\n });\n\n const ref = useRef();\n // Attach functional and object properties to the component when ready and\n // on change\n useEffect(() => {\n ref.current?.instance?.setState(s =>\n ({ ...s, id, jwt, host, ssl, ...config }));\n }, [ref.current, id, jwt, host, ssl, ...Object.values(config)]);\n\n // Disrupt the reactive chain of the MutationObserver to the customElement,\n // so we are not competing with it for updating the props.\n const propClone = useMemo(() => ({id, jwt, host, ssl, ...config}), []);\n\n if (!loaded) return <div>Loading {name}</div>;\n // return React.createElement(name, {id, jwt, host, ssl, ...config, ref});\n return React.createElement(name, {...propClone, ref});\n };\n\n\n/** A simple error boundary. Usage:\n```jsx\n <ErrorBoundary message=\"Something went wrong\">\n <SomeFlakyComponent />\n </ErrorBoundary>\n```\n*/\nexport class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n console.warn('ErrorBoundary caught:', error, errorInfo);\n }\n\n render() {\n return (this.state.hasError ?\n <div>{this.props.message || 'Something went wrong here.'}</div> :\n this.props.children);\n }\n};\n\n\n/* whether or not the given react component allows refs, i.e., is either\n * a functional component wrapped with forwardRef or a class component */\nconst componentPermitsRefs = (Component) =>\n (Component.$$typeof == Symbol.for('react.forward_ref'))\n || Component.prototype?.render;\n\n\n/** Create a WebComponent from the given react component and name that is\n reactive to all attributes. Used in web capabilities. Example:\n```js\n createWebComponent(Diagnostics, 'health-monitoring-device', TR_PKG_VERSION);\n```\n*/\nexport const createWebComponent = (Component, name, version = '0.0.0',\n options = {}) => {\n\n // Only create a ref if the component accepts it. This avoids an ugly\n // error in the console when trying to give a ref to a non-forwardRef-wrapped\n // functional component.\n const compRef = componentPermitsRefs(Component) ? React.createRef() : null;\n\n class Wrapper extends React.Component {\n\n onDisconnect = null;\n state = {};\n\n /* function used by `Component` to register a onDisconnect handler */\n setOnDisconnect(fn) {\n this.onDisconnect = fn;\n }\n\n webComponentConstructed(instance) {\n // Observe all changes to attributes and update React state from it\n const observer = new MutationObserver((mutationRecords) => {\n const update = {};\n mutationRecords.forEach(({attributeName}) => {\n update[attributeName] = instance.getAttribute(attributeName);\n });\n this.setState(old => ({...old, ...update}));\n }).observe(instance, { attributes: true });\n }\n\n webComponentDisconnected() {\n // This ensures that the react component unmounts and all useEffect\n // cleanups are called.\n this.setState({_disconnected: true});\n try {\n this.onDisconnect && this.onDisconnect();\n } catch (e) {\n console.log('Error during onDisconnect of web-component', e);\n }\n }\n\n /* method exposed to the wrapped component via prop that allows setting\n * the \"config\" state variable inside the wrapper (not the component\n * itself). This config is retrieved by the portal for inclusion in the\n * embedding instructions. */\n setConfig(config) {\n this.setState({config});\n }\n\n render() {\n const stylesheets = options.stylesheets || [\n // 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css'\n // Bootstrap 5.3.2 css scoped to `.transitive-bs-root`:\n 'https://cdn.jsdelivr.net/gh/transitiverobotics/transitive-utils@0.8.3/web/css/bootstrap_transitive-bs-root.min.css'\n ];\n\n return <div id={`cap-${name}-${version}`}\n className={options.className || 'transitive-bs-root'}>\n <style>\n {stylesheets.map(url => `@import url(${url});`)}\n </style>\n\n {!this.state._disconnected &&\n <Component ref={compRef}\n {...this.props}\n // Important to keep state *after* props for reactivity to work\n {...this.state}\n setOnDisconnect={this.setOnDisconnect.bind(this)}\n setConfig={this.setConfig.bind(this)}\n />}\n </div>;\n }\n };\n\n return ReactWebComponent.create(Wrapper, name, options.shadowDOM || false,\n compRef);\n };\n", "\"use client\";\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: {\n ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent;\n // If it's a functional component make sure we don't break it with a ref\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({\n ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;", "const _excluded = [\"as\", \"disabled\"];\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n tagName,\n disabled,\n href,\n target,\n rel,\n role,\n onClick,\n tabIndex = 0,\n type\n}) {\n if (!tagName) {\n if (href != null || target != null || rel != null) {\n tagName = 'a';\n } else {\n tagName = 'button';\n }\n }\n const meta = {\n tagName\n };\n if (tagName === 'button') {\n return [{\n type: type || 'button',\n disabled\n }, meta];\n }\n const handleClick = event => {\n if (disabled || tagName === 'a' && isTrivialHref(href)) {\n event.preventDefault();\n }\n if (disabled) {\n event.stopPropagation();\n return;\n }\n onClick == null ? void 0 : onClick(event);\n };\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n if (tagName === 'a') {\n // Ensure there's a href so Enter can trigger anchor button.\n href || (href = '#');\n if (disabled) {\n href = undefined;\n }\n }\n return [{\n role: role != null ? role : 'button',\n // explicitly undefined so that it overrides the props disabled in a spread\n // e.g. <Tag {...props} {...hookProps} />\n disabled: undefined,\n tabIndex: disabled ? undefined : tabIndex,\n href,\n target: tagName === 'a' ? target : undefined,\n 'aria-disabled': !disabled ? undefined : disabled,\n rel: tagName === 'a' ? rel : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: asProp,\n disabled\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps, {\n tagName: Component\n }] = useButtonProps(Object.assign({\n tagName: asProp,\n disabled\n }, props));\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n ref: ref\n }));\n});\nButton.displayName = 'Button';\nexport default Button;", "\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Badge = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n bg = 'primary',\n pill = false,\n text,\n className,\n as: Component = 'span',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'badge');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, pill && `rounded-pill`, text && `text-${text}`, bg && `bg-${bg}`)\n });\n});\nBadge.displayName = 'Badge';\nexport default Badge;", "\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Button = /*#__PURE__*/React.forwardRef(({\n as,\n bsPrefix,\n variant = 'primary',\n size,\n active = false,\n disabled = false,\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const [buttonProps, {\n tagName\n }] = useButtonProps({\n tagName: as,\n disabled,\n ...props\n });\n const Component = tagName;\n return /*#__PURE__*/_jsx(Component, {\n ...buttonProps,\n ...props,\n ref: ref,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && disabled && 'disabled')\n });\n});\nButton.displayName = 'Button';\nexport default Button;", "// It is OK to use paths outside of this package because webpack will bundle them\nexport * from '../../common/common.js';\nexport * from '../../common/DataCache';\nimport MS from '../../common/MqttSync.js';\nexport const MqttSync = MS;\n\n// moved to common\n// export const decodeJWT = (jwt) => JSON.parse(atob(jwt.split('.')[1]));\n\n/** parse document cookies */\nexport const parseCookie = str =>\n str.split(';')\n .map(v => v.split('='))\n .reduce((acc, v) => {\n acc[decodeURIComponent(v[0].trim())] =\n v[1] && decodeURIComponent(v[1].trim());\n return acc;\n }, {});\n\n/** get or post (if body given) json */\nexport const fetchJson = (url, callback, options = {}) => {\n fetch(url, {\n method: options.method || (options.body ? 'post' : 'get'),\n mode: 'cors',\n cache: 'no-cache',\n // Maybe we'll need this (when embedding)?\n // credentials: 'same-origin', // include, *same-origin, omit\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n },\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n body: options.body ? JSON.stringify(options.body) : undefined\n }).then(res => {\n const error = !res.ok &&\n `fetching ${url} failed: ${res.status} ${res.statusText}`;\n res.json()\n .then(data => callback(error, data))\n .catch(err => {\n throw new Error(err);\n });\n }).catch((error) => callback(`error: ${error}`));\n};\n", "import React, { useState, useEffect, useMemo } from 'react';\nimport _ from 'lodash';\nimport mqtt from 'mqtt-browser';\nimport { decodeJWT, getLogger, clone, pathToTopic, mergeVersions, topicToPath }\n from './client';\nconst MqttSync = require('../../common/MqttSync');\n\nconst log = getLogger('utils-web/hooks');\nlog.setLevel('info');\nlog.setLevel('debug'); // #DEBUG\n\n/** Hook for using MqttSync in React.\n @returns {object} An object `{data, mqttSync, ready, StatusComponent, status}`\nwhere:\n `data` is a reactive data source in React containing all the data received by\nmqttsync,\n `mqttSync` is the MqttSync object itself,\n `ready` indicates when mqttSync is ready to be used (connected and received\n successfully subscribed to mqtt system heartbeats)\n */\nexport const useMqttSync = ({jwt, id, mqttUrl}) => {\n const [status, setStatus] = useState('connecting');\n const [mqttSync, setMqttSync] = useState();\n const [data, setData] = useState({});\n // True once the subscription to the system heartbeat has been granted.\n const [heartbeatGranted, setHeartbeatGranted] = useState(false);\n\n useEffect(() => {\n const payload = decodeJWT(jwt);\n const client = mqtt.connect(mqttUrl, {\n username: JSON.stringify({id, payload}),\n password: jwt\n });\n\n client.on('connect', () => {\n log.debug('connected');\n const mqttSyncClient = new MqttSync({\n mqttClient: client,\n ignoreRetain: true,\n onHeartbeatGranted: () => setHeartbeatGranted(true)\n });\n setMqttSync(mqttSyncClient);\n setStatus('connected');\n\n // Update data on change. Note: need to clone object to force reaction\n mqttSyncClient.data.subscribe(_.throttle(() =>\n setData(clone(mqttSyncClient.data.get())), 50));\n });\n\n client.on('error', (error) => {\n log.error(error);\n setStatus(`error: ${error}`);\n });\n\n return () => {\n log.info('cleaning up useMQTTSync');\n if (mqttSync && mqttSync.beforeDisconnect) {\n mqttSync.beforeDisconnect();\n mqttSync.waitForHeartbeatOnce(() => client.end());\n } else {\n client.end();\n }\n };\n }, [jwt, id]);\n\n return {\n status,\n // ready: status == 'connected',\n ready: heartbeatGranted,\n StatusComponent: () => <div>{status}</div>,\n mqttSync, // Note: mqttSync.data is not reactive.\n data, // This is a reactive data-source (to use meteor terminology).\n };\n};\n\n/** Hook for using Transitive in React. Connects to MQTT, establishes sync, and\nexposes reactive `data` state variable. */\nexport const useTransitive = ({jwt, id, host, ssl, capability, versionNS}) => {\n\n const [scope, capabilityName] = capability.split('/');\n\n const { device } = decodeJWT(jwt);\n const prefixPath = [id, device, scope, capabilityName];\n const prefix = pathToTopic(prefixPath);\n const prefixPathVersion = [...prefixPath, versionNS];\n const prefixVersion = pathToTopic(prefixPathVersion);\n\n const mqttUrl = `${ssl && JSON.parse(ssl) ? 'wss' : 'ws'}://mqtt.${host}`;\n const fromMqttSync = useMqttSync({ jwt, id, mqttUrl });\n\n return {...fromMqttSync, device, prefixPath, prefix, prefixPathVersion,\n prefixVersion};\n};\n\n\n/** Subscribe to MqttSync topics using the provided JWT. This will\nautomatically find which version of the capability named in the JWT is running\non the device of the JWT and get the data for that version.\n\nExample usage (with webrtc-video):\n\n```js\n const { agentStatus, topicData } = useTopics({ jwt, topics: [\n '/options/videoSource',\n '/stats/+/log/'\n ]});\n```\n\n@param {object} options An object containing:\n`JWT`: A list of subtopics of the capability named in the JWT.\n `topics`: A list of subtopics of the capability named in the JWT.\n@returns {object} An object `{data, mqttSync, ready, agentStatus, topicData}`\nwhere:\n * `agentStatus` is the `status` field of the running robot agent, including\nheartbeat and runningPackages, and\n * `topicData` is the data for the selected topics of the capability\n*/\nexport const useTopics = ({jwt, host = 'transitiverobotics.com', ssl = true,\n topics = []}) => {\n\n // We need to make sure we don't resubscribe (below) when this function\n // is called with the same content of `topics` but a different object.\n const [topicList, setTopicList] = useState();\n !_.isEqual(topicList, topics) && setTopicList(topics);\n\n const {device, id, capability} = decodeJWT(jwt);\n if (device == '_fleet') {\n log.warn('useTopics only works for device JWTs, not _fleet ones');\n return;\n }\n\n const agentPrefix = `/${id}/${device}/@transitive-robotics/_robot-agent/+/status`;\n\n const {mqttSync, data, status, ready, StatusComponent} =\n useMqttSync({jwt, id, mqttUrl: `ws${ssl ? 's' : ''}://mqtt.${host}`});\n\n useEffect(() => {\n if (ready) {\n mqttSync.subscribe(agentPrefix, (err) => err && console.warn(err));\n }\n }, [mqttSync, ready]);\n\n const agentStatus = mergeVersions(\n data[id]?.[device]['@transitive-robotics']['_robot-agent'], 'status').status;\n const runningPackages = agentStatus?.runningPackages;\n\n const [scope, capName] = capability.split('/');\n const versions = runningPackages?.[scope]?.[capName];\n const runningVersion = versions && Object.values(versions).filter(Boolean)[0];\n const prefix = `/${id}/${device}/${capability}/${runningVersion}`;\n\n useEffect(() => {\n log.debug('topics', topics);\n if (runningVersion) {\n topics.forEach(topic => {\n log.debug(`subscribing to ${prefix}${topic}`);\n mqttSync.subscribe(`${prefix}${topic}`,\n (err) => err && log.warn(err));\n });\n }\n }, [topicList, runningVersion, mqttSync]);\n\n const topicData = _.get(data, topicToPath(prefix));\n // log.debug(data, agentStatus, topicData);\n\n return {data: data?.[id]?.[device], mqttSync, agentStatus, topicData};\n };\n\n\nconst listeners = {};\nconst loadedModules = {};\n/** Hook to load a Transitive capability. Besides loading the custom element,\nthis hook also returns any functions and objects the component exports in\n`loadedModule`. Example:\n```js\n const {loaded, loadedModule} = useCapability({\n capability: '@transitive-robotics/terminal',\n name: 'mock-device',\n userId: 'user123',\n deviceId: 'd_mydevice123',\n });\n```\n*/\nexport const useCapability = ({ capability, name, userId, deviceId,\n host = 'transitiverobotics.com', ssl = true\n }) => {\n\n const [returns, setReturns] = useState({ loaded: false });\n\n // called when loaded\n const done = (message, theModule) => {\n log.debug(`custom component ${name}: ${message}`);\n loadedModules[name] = theModule;\n setReturns(x => ({...x, loadedModule: theModule, loaded: !!theModule}));\n };\n\n /** set the returns for all listeners */\n const notifyListeners = (...args) => listeners[name].forEach(l => l(...args));\n\n useEffect(() => {\n log.debug(`loading custom component ${name}`);\n\n if (loadedModules[name]) {\n return done('already loaded', loadedModules[name]);\n }\n if (listeners[name]) {\n log.debug('already loading');\n // get notified when loading completes\n return listeners[name].push(done);\n }\n listeners[name] = [done];\n\n const baseUrl = `http${ssl ? 's' : ''}://portal.${host}`;\n const params = new URLSearchParams({userId, deviceId});\n // filename without extension as we'll try multiple\n const fileBasename = `${baseUrl}/running/${capability}/dist/${name}`;\n\n import(`${fileBasename}.esm.js?${params.toString()}`).then(\n esm => notifyListeners('loaded esm', esm),\n error => {\n log.warn(`No ESM module found for ${name}, loading iife`);\n import(`${fileBasename}.js?${params.toString()}`).then(\n iife => notifyListeners('loaded iife', iife),\n error => log.error(`Failed to load ${name} iife`, error));\n });\n }, [capability, name, userId, deviceId]);\n\n return returns;\n };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["module", "classNames", "module", "module", "attribute", "module", "React", "styles", "module", "module", "module", "module", "options", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "range", "comp", "_", "module", "module", "module", "module", "module", "module", "styles", "module", "module", "module", "styles", "module", "styles", "chalk", "require_constants", "module", "module", "_", "context", "getLogger", "clone", "decodeJWT", "pathToTopic", "topicToPath", "mergeVersions", "module", "_", "topicToPath", "pathToTopic", "module", "topicToPath", "pathToTopic", "getLogger", "mergeVersions", "_", "log", "clone", "MqttSync", "err", "import_react", "React", "import_jsx_runtime", "_jsx", "React", "import_jsx_runtime", "_jsx", "classNames", "import_classnames", "React", "import_jsx_runtime", "Button", "_jsx", "classNames", "MS", "import_react", "MqttSync", "mqtt", "_", "React", "error", "React", "React", "ReactWebComponent"]
|
|
7
|
+
}
|
package/esbuild.js
CHANGED
|
@@ -8,15 +8,13 @@ const config = {
|
|
|
8
8
|
bundle: true,
|
|
9
9
|
format: 'cjs',
|
|
10
10
|
preserveSymlinks: true, // this allows us to use symlinks
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
minify: true,
|
|
14
|
-
sourcemap: false,
|
|
11
|
+
minify: !isDevelopment,
|
|
12
|
+
sourcemap: isDevelopment,
|
|
13
|
+
// minify: true,
|
|
14
|
+
// sourcemap: false,
|
|
15
15
|
target: ['chrome110', 'firefox110', 'safari15', 'edge110'],
|
|
16
16
|
// target: ['es2022'],
|
|
17
|
-
|
|
18
|
-
'mqtt-browser', '@webcomponents/shadydom', '@webcomponents/custom-elements',
|
|
19
|
-
'react-web-component-style-loader/exports'],
|
|
17
|
+
packages: 'external',
|
|
20
18
|
outdir: 'dist',
|
|
21
19
|
loader: {
|
|
22
20
|
'.js': 'jsx',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@transitive-sdk/utils-web",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.3",
|
|
4
4
|
"description": "Web utils for the Transitive framework",
|
|
5
5
|
"homepage": "https://transitiverobotics.com",
|
|
6
6
|
"repository": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"publishConfig": {
|
|
20
20
|
"access": "public"
|
|
21
21
|
},
|
|
22
|
-
"
|
|
22
|
+
"main": "dist/utils-web.js",
|
|
23
23
|
"scripts": {
|
|
24
24
|
"prepare": "node esbuild.js && cd css && npx cleancss -o bootstrap_transitive-bs-root.min.css bootstrap_transitive-bs-root.css",
|
|
25
25
|
"prepack": "cat ../docs.js | node --input-type=module - client",
|