@medplum/cli 5.1.40 → 5.1.42
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/cjs/index.cjs +7 -7
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +5 -6
package/dist/esm/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var ai=Object.create;var ut=Object.defineProperty;var ci=Object.getOwnPropertyDescriptor;var li=Object.getOwnPropertyNames;var ui=Object.getPrototypeOf,pi=Object.prototype.hasOwnProperty;var yr=e=>{throw TypeError(e)};var di=(e,t,r)=>t in e?ut(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var w=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(r){throw t=0,r}};var mi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of li(t))!pi.call(e,o)&&o!==r&&ut(e,o,{get:()=>t[o],enumerable:!(n=ci(t,o))||n.enumerable});return e};var wr=(e,t,r)=>(r=e!=null?ai(ui(e)):{},mi(t||!e||!e.__esModule?ut(r,"default",{value:e,enumerable:!0}):r,e));var $=(e,t,r)=>di(e,typeof t!="symbol"?t+"":t,r),Er=(e,t,r)=>t.has(e)||yr("Cannot "+r);var pt=(e,t,r)=>(Er(e,t,"read from private field"),r?r.call(e):t.get(e)),Sr=(e,t,r)=>t.has(e)?yr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Rr=(e,t,r,n)=>(Er(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var re=w((Ef,bn)=>{"use strict";var $a="2.0.0",Na=Number.MAX_SAFE_INTEGER||9007199254740991,ka=16,xa=250,Da=["major","premajor","minor","preminor","patch","prepatch","prerelease"];bn.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:ka,MAX_SAFE_BUILD_LENGTH:xa,MAX_SAFE_INTEGER:Na,RELEASE_TYPES:Da,SEMVER_SPEC_VERSION:$a,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var ye=w((Sf,An)=>{"use strict";var Ma=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};An.exports=Ma});var ne=w((q,vn)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:kt,MAX_SAFE_BUILD_LENGTH:La,MAX_LENGTH:Ua}=re(),_a=ye();q=vn.exports={};var Fa=q.re=[],ja=q.safeRe=[],m=q.src=[],Ba=q.safeSrc=[],f=q.t={},qa=0,xt="[a-zA-Z0-9-]",Wa=[["\\s",1],["\\d",Ua],[xt,La]],Ga=e=>{for(let[t,r]of Wa)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},S=(e,t,r)=>{let n=Ga(t),o=qa++;_a(e,o,t),f[e]=o,m[o]=t,Ba[o]=n,Fa[o]=new RegExp(t,r?"g":void 0),ja[o]=new RegExp(n,r?"g":void 0)};S("NUMERICIDENTIFIER","0|[1-9]\\d*");S("NUMERICIDENTIFIERLOOSE","\\d+");S("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${xt}*`);S("MAINVERSION",`(${m[f.NUMERICIDENTIFIER]})\\.(${m[f.NUMERICIDENTIFIER]})\\.(${m[f.NUMERICIDENTIFIER]})`);S("MAINVERSIONLOOSE",`(${m[f.NUMERICIDENTIFIERLOOSE]})\\.(${m[f.NUMERICIDENTIFIERLOOSE]})\\.(${m[f.NUMERICIDENTIFIERLOOSE]})`);S("PRERELEASEIDENTIFIER",`(?:${m[f.NONNUMERICIDENTIFIER]}|${m[f.NUMERICIDENTIFIER]})`);S("PRERELEASEIDENTIFIERLOOSE",`(?:${m[f.NONNUMERICIDENTIFIER]}|${m[f.NUMERICIDENTIFIERLOOSE]})`);S("PRERELEASE",`(?:-(${m[f.PRERELEASEIDENTIFIER]}(?:\\.${m[f.PRERELEASEIDENTIFIER]})*))`);S("PRERELEASELOOSE",`(?:-?(${m[f.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${m[f.PRERELEASEIDENTIFIERLOOSE]})*))`);S("BUILDIDENTIFIER",`${xt}+`);S("BUILD",`(?:\\+(${m[f.BUILDIDENTIFIER]}(?:\\.${m[f.BUILDIDENTIFIER]})*))`);S("FULLPLAIN",`v?${m[f.MAINVERSION]}${m[f.PRERELEASE]}?${m[f.BUILD]}?`);S("FULL",`^${m[f.FULLPLAIN]}$`);S("LOOSEPLAIN",`[v=\\s]*${m[f.MAINVERSIONLOOSE]}${m[f.PRERELEASELOOSE]}?${m[f.BUILD]}?`);S("LOOSE",`^${m[f.LOOSEPLAIN]}$`);S("GTLT","((?:<|>)?=?)");S("XRANGEIDENTIFIERLOOSE",`${m[f.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);S("XRANGEIDENTIFIER",`${m[f.NUMERICIDENTIFIER]}|x|X|\\*`);S("XRANGEPLAIN",`[v=\\s]*(${m[f.XRANGEIDENTIFIER]})(?:\\.(${m[f.XRANGEIDENTIFIER]})(?:\\.(${m[f.XRANGEIDENTIFIER]})(?:${m[f.PRERELEASE]})?${m[f.BUILD]}?)?)?`);S("XRANGEPLAINLOOSE",`[v=\\s]*(${m[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${m[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${m[f.XRANGEIDENTIFIERLOOSE]})(?:${m[f.PRERELEASELOOSE]})?${m[f.BUILD]}?)?)?`);S("XRANGE",`^${m[f.GTLT]}\\s*${m[f.XRANGEPLAIN]}$`);S("XRANGELOOSE",`^${m[f.GTLT]}\\s*${m[f.XRANGEPLAINLOOSE]}$`);S("COERCEPLAIN",`(^|[^\\d])(\\d{1,${kt}})(?:\\.(\\d{1,${kt}}))?(?:\\.(\\d{1,${kt}}))?`);S("COERCE",`${m[f.COERCEPLAIN]}(?:$|[^\\d])`);S("COERCEFULL",m[f.COERCEPLAIN]+`(?:${m[f.PRERELEASE]})?(?:${m[f.BUILD]})?(?:$|[^\\d])`);S("COERCERTL",m[f.COERCE],!0);S("COERCERTLFULL",m[f.COERCEFULL],!0);S("LONETILDE","(?:~>?)");S("TILDETRIM",`(\\s*)${m[f.LONETILDE]}\\s+`,!0);q.tildeTrimReplace="$1~";S("TILDE",`^${m[f.LONETILDE]}${m[f.XRANGEPLAIN]}$`);S("TILDELOOSE",`^${m[f.LONETILDE]}${m[f.XRANGEPLAINLOOSE]}$`);S("LONECARET","(?:\\^)");S("CARETTRIM",`(\\s*)${m[f.LONECARET]}\\s+`,!0);q.caretTrimReplace="$1^";S("CARET",`^${m[f.LONECARET]}${m[f.XRANGEPLAIN]}$`);S("CARETLOOSE",`^${m[f.LONECARET]}${m[f.XRANGEPLAINLOOSE]}$`);S("COMPARATORLOOSE",`^${m[f.GTLT]}\\s*(${m[f.LOOSEPLAIN]})$|^$`);S("COMPARATOR",`^${m[f.GTLT]}\\s*(${m[f.FULLPLAIN]})$|^$`);S("COMPARATORTRIM",`(\\s*)${m[f.GTLT]}\\s*(${m[f.LOOSEPLAIN]}|${m[f.XRANGEPLAIN]})`,!0);q.comparatorTrimReplace="$1$2$3";S("HYPHENRANGE",`^\\s*(${m[f.XRANGEPLAIN]})\\s+-\\s+(${m[f.XRANGEPLAIN]})\\s*$`);S("HYPHENRANGELOOSE",`^\\s*(${m[f.XRANGEPLAINLOOSE]})\\s+-\\s+(${m[f.XRANGEPLAINLOOSE]})\\s*$`);S("STAR","(<|>)?=?\\s*\\*");S("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");S("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Ue=w((Rf,Pn)=>{"use strict";var Ka=Object.freeze({loose:!0}),Va=Object.freeze({}),Ha=e=>e?typeof e!="object"?Ka:e:Va;Pn.exports=Ha});var Dt=w((bf,Tn)=>{"use strict";var In=/^[0-9]+$/,Cn=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=In.test(e),n=In.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},Ja=(e,t)=>Cn(t,e);Tn.exports={compareIdentifiers:Cn,rcompareIdentifiers:Ja}});var T=w((Af,$n)=>{"use strict";var _e=ye(),{MAX_LENGTH:On,MAX_SAFE_INTEGER:Fe}=re(),{safeRe:je,t:Be}=ne(),Xa=Ue(),{compareIdentifiers:Mt}=Dt(),za=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Mt(e[n],r[n])!==0)return!1;return!0},Lt=class e{constructor(t,r){if(r=Xa(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>On)throw new TypeError(`version is longer than ${On} characters`);_e("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?je[Be.LOOSE]:je[Be.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>Fe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Fe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Fe||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){let s=+o;if(s>=0&&s<Fe)return s}return o}):this.prerelease=[],this.build=n[5]?n[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(t){if(_e("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),this.major<t.major?-1:this.major>t.major?1:this.minor<t.minor?-1:this.minor>t.minor?1:this.patch<t.patch?-1:this.patch>t.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],o=t.prerelease[r];if(_e("prerelease compare",r,n,o),n===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(n===void 0)return-1;if(n===o)continue;return Mt(n,o)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],o=t.build[r];if(_e("build compare",r,n,o),n===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(n===void 0)return-1;if(n===o)continue;return Mt(n,o)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let o=`-${r}`.match(this.options.loose?je[Be.PRERELEASELOOSE]:je[Be.PRERELEASE]);if(!o||o[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;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":{let o=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(r){let s=[r,o];if(n===!1&&(s=[r]),za(this.prerelease,r)){let i=this.prerelease[r.split(".").length];isNaN(i)&&(this.prerelease=s)}else this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};$n.exports=Lt});var J=w((vf,kn)=>{"use strict";var Nn=T(),Ya=(e,t,r=!1)=>{if(e instanceof Nn)return e;try{return new Nn(e,t)}catch(n){if(!r)return null;throw n}};kn.exports=Ya});var Dn=w((Pf,xn)=>{"use strict";var Qa=J(),Za=(e,t)=>{let r=Qa(e,t);return r?r.version:null};xn.exports=Za});var Ln=w((If,Mn)=>{"use strict";var ec=J(),tc=(e,t)=>{let r=ec(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};Mn.exports=tc});var Fn=w((Cf,_n)=>{"use strict";var Un=T(),rc=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new Un(e instanceof Un?e.version:e,r).inc(t,n,o).version}catch{return null}};_n.exports=rc});var qn=w((Tf,Bn)=>{"use strict";var jn=J(),nc=(e,t)=>{let r=jn(e,null,!0),n=jn(t,null,!0),o=r.compare(n);if(o===0)return null;let s=o>0,i=s?r:n,a=s?n:r,l=!!i.prerelease.length;if(!!a.prerelease.length&&!l){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}let p=l?"pre":"";return r.major!==n.major?p+"major":r.minor!==n.minor?p+"minor":r.patch!==n.patch?p+"patch":"prerelease"};Bn.exports=nc});var Gn=w((Of,Wn)=>{"use strict";var oc=T(),sc=(e,t)=>new oc(e,t).major;Wn.exports=sc});var Vn=w(($f,Kn)=>{"use strict";var ic=T(),ac=(e,t)=>new ic(e,t).minor;Kn.exports=ac});var Jn=w((Nf,Hn)=>{"use strict";var cc=T(),lc=(e,t)=>new cc(e,t).patch;Hn.exports=lc});var zn=w((kf,Xn)=>{"use strict";var uc=J(),pc=(e,t)=>{let r=uc(e,t);return r&&r.prerelease.length?r.prerelease:null};Xn.exports=pc});var M=w((xf,Qn)=>{"use strict";var Yn=T(),dc=(e,t,r)=>new Yn(e,r).compare(new Yn(t,r));Qn.exports=dc});var eo=w((Df,Zn)=>{"use strict";var mc=M(),fc=(e,t,r)=>mc(t,e,r);Zn.exports=fc});var ro=w((Mf,to)=>{"use strict";var gc=M(),hc=(e,t)=>gc(e,t,!0);to.exports=hc});var qe=w((Lf,oo)=>{"use strict";var no=T(),yc=(e,t,r)=>{let n=new no(e,r),o=new no(t,r);return n.compare(o)||n.compareBuild(o)};oo.exports=yc});var io=w((Uf,so)=>{"use strict";var wc=qe(),Ec=(e,t)=>e.sort((r,n)=>wc(r,n,t));so.exports=Ec});var co=w((_f,ao)=>{"use strict";var Sc=qe(),Rc=(e,t)=>e.sort((r,n)=>Sc(n,r,t));ao.exports=Rc});var we=w((Ff,lo)=>{"use strict";var bc=M(),Ac=(e,t,r)=>bc(e,t,r)>0;lo.exports=Ac});var We=w((jf,uo)=>{"use strict";var vc=M(),Pc=(e,t,r)=>vc(e,t,r)<0;uo.exports=Pc});var Ut=w((Bf,po)=>{"use strict";var Ic=M(),Cc=(e,t,r)=>Ic(e,t,r)===0;po.exports=Cc});var _t=w((qf,mo)=>{"use strict";var Tc=M(),Oc=(e,t,r)=>Tc(e,t,r)!==0;mo.exports=Oc});var Ge=w((Wf,fo)=>{"use strict";var $c=M(),Nc=(e,t,r)=>$c(e,t,r)>=0;fo.exports=Nc});var Ke=w((Gf,go)=>{"use strict";var kc=M(),xc=(e,t,r)=>kc(e,t,r)<=0;go.exports=xc});var Ft=w((Kf,ho)=>{"use strict";var Dc=Ut(),Mc=_t(),Lc=we(),Uc=Ge(),_c=We(),Fc=Ke(),jc=(e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return Dc(e,r,n);case"!=":return Mc(e,r,n);case">":return Lc(e,r,n);case">=":return Uc(e,r,n);case"<":return _c(e,r,n);case"<=":return Fc(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};ho.exports=jc});var wo=w((Vf,yo)=>{"use strict";var Bc=T(),qc=J(),{safeRe:Ve,t:He}=ne(),Wc=(e,t)=>{if(e instanceof Bc)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Ve[He.COERCEFULL]:Ve[He.COERCE]);else{let l=t.includePrerelease?Ve[He.COERCERTLFULL]:Ve[He.COERCERTL],u;for(;(u=l.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||u.index+u[0].length!==r.index+r[0].length)&&(r=u),l.lastIndex=u.index+u[1].length+u[2].length;l.lastIndex=-1}if(r===null)return null;let n=r[2],o=r[3]||"0",s=r[4]||"0",i=t.includePrerelease&&r[5]?`-${r[5]}`:"",a=t.includePrerelease&&r[6]?`+${r[6]}`:"";return qc(`${n}.${o}.${s}${i}${a}`,t)};yo.exports=Wc});var So=w((Hf,Eo)=>{"use strict";var Gc=J(),Kc=re(),Vc=T(),Hc=(e,t,r)=>{if(!Kc.RELEASE_TYPES.includes(t))return null;let n=Jc(e,r);return n&&Xc(n,t)},Jc=(e,t)=>{let r=e instanceof Vc?e.version:e;return Gc(r,t)},Xc=(e,t)=>{if(zc(t))return e.version;switch(e.prerelease=[],t){case"major":e.minor=0,e.patch=0;break;case"minor":e.patch=0;break}return e.format()},zc=e=>e.startsWith("pre");Eo.exports=Hc});var bo=w((Jf,Ro)=>{"use strict";var jt=class{constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let o=this.map.keys().next().value;this.delete(o)}this.map.set(t,r)}return this}};Ro.exports=jt});var L=w((Xf,Io)=>{"use strict";var Yc=/\s+/g,Bt=class e{constructor(t,r){if(r=Zc(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof qt)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(Yc," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(o=>!vo(o[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let o of this.set)if(o.length===1&&cl(o[0])){this.set=[o];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(al,"");let n=((this.options.includePrerelease&&sl)|(this.options.loose&&il))+":"+t,o=Ao.get(n);if(o)return o;let s=this.options.loose,i=s?N[O.HYPHENRANGELOOSE]:N[O.HYPHENRANGE];t=t.replace(i,El(this.options.includePrerelease)),A("hyphen replace",t),t=t.replace(N[O.COMPARATORTRIM],rl),A("comparator trim",t),t=t.replace(N[O.TILDETRIM],nl),A("tilde trim",t),t=t.replace(N[O.CARETTRIM],ol),A("caret trim",t);let a=t.split(" ").map(d=>ll(d,this.options)).join(" ").split(/\s+/).map(d=>wl(d,this.options));s&&(a=a.filter(d=>(A("loose invalid filter",d,this.options),!!d.match(N[O.COMPARATORLOOSE])))),A("range list",a);let l=new Map,u=a.map(d=>new qt(d,this.options));for(let d of u){if(vo(d))return[d];l.set(d.value,d)}l.size>1&&l.has("")&&l.delete("");let p=[...l.values()];return Ao.set(n,p),p}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Po(n,r)&&t.set.some(o=>Po(o,r)&&n.every(s=>o.every(i=>s.intersects(i,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new el(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Sl(this.set[r],t,this.options))return!0;return!1}};Io.exports=Bt;var Qc=bo(),Ao=new Qc,Zc=Ue(),qt=Ee(),A=ye(),el=T(),{safeRe:N,src:tl,t:O,comparatorTrimReplace:rl,tildeTrimReplace:nl,caretTrimReplace:ol}=ne(),{FLAG_INCLUDE_PRERELEASE:sl,FLAG_LOOSE:il}=re(),al=new RegExp(tl[O.BUILD],"g"),vo=e=>e.value==="<0.0.0-0",cl=e=>e.value==="",Po=(e,t)=>{let r=!0,n=e.slice(),o=n.pop();for(;r&&n.length;)r=n.every(s=>o.intersects(s,t)),o=n.pop();return r},ll=(e,t)=>(e=e.replace(N[O.BUILD],""),A("comp",e,t),e=ml(e,t),A("caret",e),e=pl(e,t),A("tildes",e),e=gl(e,t),A("xrange",e),e=yl(e,t),A("stars",e),e),C=e=>!e||e.toLowerCase()==="x"||e==="*",ul=(e,t,r)=>C(e)&&!C(t)||C(t)&&r&&!C(r),pl=(e,t)=>e.trim().split(/\s+/).map(r=>dl(r,t)).join(" "),dl=(e,t)=>{let r=t.loose?N[O.TILDELOOSE]:N[O.TILDE],n=t.includePrerelease?"-0":"";return e.replace(r,(o,s,i,a,l)=>{A("tilde",e,o,s,i,a,l);let u;return C(s)?u="":C(i)?u=`>=${s}.0.0${n} <${+s+1}.0.0-0`:C(a)?u=`>=${s}.${i}.0${n} <${s}.${+i+1}.0-0`:l?(A("replaceTilde pr",l),u=`>=${s}.${i}.${a}-${l} <${s}.${+i+1}.0-0`):u=`>=${s}.${i}.${a} <${s}.${+i+1}.0-0`,A("tilde return",u),u})},ml=(e,t)=>e.trim().split(/\s+/).map(r=>fl(r,t)).join(" "),fl=(e,t)=>{A("caret",e,t);let r=t.loose?N[O.CARETLOOSE]:N[O.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(o,s,i,a,l)=>{A("caret",e,o,s,i,a,l);let u;return C(s)?u="":C(i)?u=`>=${s}.0.0${n} <${+s+1}.0.0-0`:C(a)?s==="0"?u=`>=${s}.${i}.0${n} <${s}.${+i+1}.0-0`:u=`>=${s}.${i}.0${n} <${+s+1}.0.0-0`:l?(A("replaceCaret pr",l),s==="0"?i==="0"?u=`>=${s}.${i}.${a}-${l} <${s}.${i}.${+a+1}-0`:u=`>=${s}.${i}.${a}-${l} <${s}.${+i+1}.0-0`:u=`>=${s}.${i}.${a}-${l} <${+s+1}.0.0-0`):(A("no pr"),s==="0"?i==="0"?u=`>=${s}.${i}.${a} <${s}.${i}.${+a+1}-0`:u=`>=${s}.${i}.${a} <${s}.${+i+1}.0-0`:u=`>=${s}.${i}.${a} <${+s+1}.0.0-0`),A("caret return",u),u})},gl=(e,t)=>(A("replaceXRanges",e,t),e.split(/\s+/).map(r=>hl(r,t)).join(" ")),hl=(e,t)=>{e=e.trim();let r=t.loose?N[O.XRANGELOOSE]:N[O.XRANGE];return e.replace(r,(n,o,s,i,a,l)=>{if(A("xRange",e,n,o,s,i,a,l),ul(s,i,a))return e;let u=C(s),p=u||C(i),d=p||C(a),E=d;return o==="="&&E&&(o=""),l=t.includePrerelease?"-0":"",u?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&E?(p&&(i=0),a=0,o===">"?(o=">=",p?(s=+s+1,i=0,a=0):(i=+i+1,a=0)):o==="<="&&(o="<",p?s=+s+1:i=+i+1),o==="<"&&(l="-0"),n=`${o+s}.${i}.${a}${l}`):p?n=`>=${s}.0.0${l} <${+s+1}.0.0-0`:d&&(n=`>=${s}.${i}.0${l} <${s}.${+i+1}.0-0`),A("xRange return",n),n})},yl=(e,t)=>(A("replaceStars",e,t),e.trim().replace(N[O.STAR],"")),wl=(e,t)=>(A("replaceGTE0",e,t),e.trim().replace(N[t.includePrerelease?O.GTE0PRE:O.GTE0],"")),El=e=>(t,r,n,o,s,i,a,l,u,p,d,E)=>(C(n)?r="":C(o)?r=`>=${n}.0.0${e?"-0":""}`:C(s)?r=`>=${n}.${o}.0${e?"-0":""}`:i?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,C(u)?l="":C(p)?l=`<${+u+1}.0.0-0`:C(d)?l=`<${u}.${+p+1}.0-0`:E?l=`<=${u}.${p}.${d}-${E}`:e?l=`<${u}.${p}.${+d+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Sl=(e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(A(e[n].semver),e[n].semver!==qt.ANY&&e[n].semver.prerelease.length>0){let o=e[n].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}});var Ee=w((zf,ko)=>{"use strict";var Se=Symbol("SemVer ANY"),Kt=class e{static get ANY(){return Se}constructor(t,r){if(r=Co(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),Gt("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===Se?this.value="":this.value=this.operator+this.semver.version,Gt("comp",this)}parse(t){let r=this.options.loose?To[Oo.COMPARATORLOOSE]:To[Oo.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new $o(n[2],this.options.loose):this.semver=Se}toString(){return this.value}test(t){if(Gt("Comparator.test",t,this.options.loose),this.semver===Se||t===Se)return!0;if(typeof t=="string")try{t=new $o(t,this.options)}catch{return!1}return Wt(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new No(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new No(this.value,r).test(t.semver):(r=Co(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||Wt(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Wt(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};ko.exports=Kt;var Co=Ue(),{safeRe:To,t:Oo}=ne(),Wt=Ft(),Gt=ye(),$o=T(),No=L()});var Re=w((Yf,xo)=>{"use strict";var Rl=L(),bl=(e,t,r)=>{try{t=new Rl(t,r)}catch{return!1}return t.test(e)};xo.exports=bl});var Mo=w((Qf,Do)=>{"use strict";var Al=L(),vl=(e,t)=>new Al(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Do.exports=vl});var Uo=w((Zf,Lo)=>{"use strict";var Pl=T(),Il=L(),Cl=(e,t,r)=>{let n=null,o=null,s=null;try{s=new Il(t,r)}catch{return null}return e.forEach(i=>{s.test(i)&&(!n||o.compare(i)===-1)&&(n=i,o=new Pl(n,r))}),n};Lo.exports=Cl});var Fo=w((eg,_o)=>{"use strict";var Tl=T(),Ol=L(),$l=(e,t,r)=>{let n=null,o=null,s=null;try{s=new Ol(t,r)}catch{return null}return e.forEach(i=>{s.test(i)&&(!n||o.compare(i)===1)&&(n=i,o=new Tl(n,r))}),n};_o.exports=$l});var qo=w((tg,Bo)=>{"use strict";var Vt=T(),Nl=L(),jo=we(),kl=(e,t)=>{e=new Nl(e,t);let r=new Vt("0.0.0");if(e.test(r)||(r=new Vt("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let o=e.set[n],s=null;o.forEach(i=>{let a=new Vt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||jo(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),s&&(!r||jo(r,s))&&(r=s)}return r&&e.test(r)?r:null};Bo.exports=kl});var Go=w((rg,Wo)=>{"use strict";var xl=L(),Dl=(e,t)=>{try{return new xl(e,t).range||"*"}catch{return null}};Wo.exports=Dl});var Je=w((ng,Jo)=>{"use strict";var Ml=T(),Ho=Ee(),{ANY:Ll}=Ho,Ul=L(),_l=Re(),Ko=we(),Vo=We(),Fl=Ke(),jl=Ge(),Bl=(e,t,r,n)=>{e=new Ml(e,n),t=new Ul(t,n);let o,s,i,a,l;switch(r){case">":o=Ko,s=Fl,i=Vo,a=">",l=">=";break;case"<":o=Vo,s=jl,i=Ko,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(_l(e,t,n))return!1;for(let u=0;u<t.set.length;++u){let p=t.set[u],d=null,E=null;if(p.forEach(g=>{g.semver===Ll&&(g=new Ho(">=0.0.0")),d=d||g,E=E||g,o(g.semver,d.semver,n)?d=g:i(g.semver,E.semver,n)&&(E=g)}),d.operator===a||d.operator===l||(!E.operator||E.operator===a)&&s(e,E.semver))return!1;if(E.operator===l&&i(e,E.semver))return!1}return!0};Jo.exports=Bl});var zo=w((og,Xo)=>{"use strict";var ql=Je(),Wl=(e,t,r)=>ql(e,t,">",r);Xo.exports=Wl});var Qo=w((sg,Yo)=>{"use strict";var Gl=Je(),Kl=(e,t,r)=>Gl(e,t,"<",r);Yo.exports=Kl});var ts=w((ig,es)=>{"use strict";var Zo=L(),Vl=(e,t,r)=>(e=new Zo(e,r),t=new Zo(t,r),e.intersects(t,r));es.exports=Vl});var ns=w((ag,rs)=>{"use strict";var Hl=Re(),Jl=M();rs.exports=(e,t,r)=>{let n=[],o=null,s=null,i=e.sort((p,d)=>Jl(p,d,r));for(let p of i)Hl(p,t,r)?(s=p,o||(o=p)):(s&&n.push([o,s]),s=null,o=null);o&&n.push([o,null]);let a=[];for(let[p,d]of n)p===d?a.push(p):!d&&p===i[0]?a.push("*"):d?p===i[0]?a.push(`<=${d}`):a.push(`${p} - ${d}`):a.push(`>=${p}`);let l=a.join(" || "),u=typeof t.raw=="string"?t.raw:String(t);return l.length<u.length?l:t}});var ls=w((cg,cs)=>{"use strict";var os=L(),Xt=Ee(),{ANY:Ht}=Xt,Jt=Re(),zt=M(),Xl=(e,t,r={})=>{if(e===t)return!0;e=new os(e,r),t=new os(t,r);let n=!1;e:for(let o of e.set){for(let s of t.set){let i=Yl(o,s,r);if(n=n||i!==null,i)continue e}if(n)return!1}return!0},zl=[new Xt(">=0.0.0-0")],ss=[new Xt(">=0.0.0")],Yl=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Ht){if(t.length===1&&t[0].semver===Ht)return!0;r.includePrerelease?e=zl:e=ss}if(t.length===1&&t[0].semver===Ht){if(r.includePrerelease)return!0;t=ss}let n=new Set,o,s;for(let g of e)g.operator===">"||g.operator===">="?o=is(o,g,r):g.operator==="<"||g.operator==="<="?s=as(s,g,r):n.add(g.semver);if(n.size>1)return null;let i;if(o&&s){if(i=zt(o.semver,s.semver,r),i>0)return null;if(i===0&&(o.operator!==">="||s.operator!=="<="))return null}for(let g of n){if(o&&!Jt(g,String(o),r)||s&&!Jt(g,String(s),r))return null;for(let _ of t)if(!Jt(g,String(_),r))return!1;return!0}let a,l,u,p,d=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,E=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&s.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(let g of t){if(p=p||g.operator===">"||g.operator===">=",u=u||g.operator==="<"||g.operator==="<=",o){if(E&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===E.major&&g.semver.minor===E.minor&&g.semver.patch===E.patch&&(E=!1),g.operator===">"||g.operator===">="){if(a=is(o,g,r),a===g&&a!==o)return!1}else if(o.operator===">="&&!g.test(o.semver))return!1}if(s){if(d&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===d.major&&g.semver.minor===d.minor&&g.semver.patch===d.patch&&(d=!1),g.operator==="<"||g.operator==="<="){if(l=as(s,g,r),l===g&&l!==s)return!1}else if(s.operator==="<="&&!g.test(s.semver))return!1}if(!g.operator&&(s||o)&&i!==0)return!1}return!(o&&u&&!s&&i!==0||s&&p&&!o&&i!==0||E||d)},is=(e,t,r)=>{if(!e)return t;let n=zt(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},as=(e,t,r)=>{if(!e)return t;let n=zt(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};cs.exports=Xl});var Qt=w((lg,ds)=>{"use strict";var Yt=ne(),us=re(),Ql=T(),ps=Dt(),Zl=J(),eu=Dn(),tu=Ln(),ru=Fn(),nu=qn(),ou=Gn(),su=Vn(),iu=Jn(),au=zn(),cu=M(),lu=eo(),uu=ro(),pu=qe(),du=io(),mu=co(),fu=we(),gu=We(),hu=Ut(),yu=_t(),wu=Ge(),Eu=Ke(),Su=Ft(),Ru=wo(),bu=So(),Au=Ee(),vu=L(),Pu=Re(),Iu=Mo(),Cu=Uo(),Tu=Fo(),Ou=qo(),$u=Go(),Nu=Je(),ku=zo(),xu=Qo(),Du=ts(),Mu=ns(),Lu=ls();ds.exports={parse:Zl,valid:eu,clean:tu,inc:ru,diff:nu,major:ou,minor:su,patch:iu,prerelease:au,compare:cu,rcompare:lu,compareLoose:uu,compareBuild:pu,sort:du,rsort:mu,gt:fu,lt:gu,eq:hu,neq:yu,gte:wu,lte:Eu,cmp:Su,coerce:Ru,truncate:bu,Comparator:Au,Range:vu,satisfies:Pu,toComparators:Iu,maxSatisfying:Cu,minSatisfying:Tu,minVersion:Ou,validRange:$u,outside:Nu,gtr:ku,ltr:xu,intersects:Du,simplifyRange:Mu,subset:Lu,SemVer:Ql,re:Yt.re,src:Yt.src,tokens:Yt.t,SEMVER_SPEC_VERSION:us.SEMVER_SPEC_VERSION,RELEASE_TYPES:us.RELEASE_TYPES,compareIdentifiers:ps.compareIdentifiers,rcompareIdentifiers:ps.rcompareIdentifiers}});import{MEDPLUM_VERSION as Qd,normalizeErrorString as hr}from"@medplum/core";import{CommanderError as si,Option as Zd}from"commander";import em from"dotenv";import{ContentType as un,EMPTY as na,isOk as oa,isUUID as sa,normalizeErrorString as ia}from"@medplum/core";import{Option as De}from"commander";import{MedplumClient as Ei}from"@medplum/core";import{ClientStorage as fi}from"@medplum/core";import{existsSync as br,mkdirSync as gi,readFileSync as hi,writeFileSync as yi}from"node:fs";import{homedir as wi}from"node:os";import{resolve as Ar}from"node:path";var j=class extends fi{constructor(r){super();$(this,"dirName");$(this,"fileName");this.dirName=Ar(wi(),".medplum"),this.fileName=Ar(this.dirName,r+".json")}clear(){this.writeFile({})}getString(r){return this.readFile()?.[r]}setString(r,n){let o=this.readFile()??{};n?o[r]=n:delete o[r],this.writeFile(o)}getObject(r){let n=this.getString(r);return n?JSON.parse(n):void 0}setObject(r,n){this.setString(r,n?JSON.stringify(n):void 0)}readFile(){if(br(this.fileName))return JSON.parse(hi(this.fileName,"utf8"))}writeFile(r){br(this.dirName)||gi(this.dirName),yi(this.fileName,JSON.stringify(r,null,2),"utf8")}};async function R(e,t=!0){let r=e.profile??"default",n=new j(r),o=n.getObject("options");if(r!=="default"&&!o)throw new Error(`Profile "${r}" does not exist`);let{baseUrl:s,fhirUrlPath:i,accessToken:a,tokenUrl:l,authorizeUrl:u,clientId:p,clientSecret:d}=Si(e,n),E=e.fetch??fetch;e.baseUrl&&e.baseUrl!=="https://api.medplum.com/"&&await Ri(e.baseUrl,E);let g=new Ei({fetch:E,baseUrl:s,tokenUrl:l,fhirUrlPath:i,authorizeUrl:u,storage:n,onUnauthenticated:bi,verbose:e.verbose});return t&&(a?g.setAccessToken(a):p&&d&&(g.setBasicAuth(p,d),o?.authType!=="basic"&&await g.startClientLogin(p,d))),g}function Si(e,t){let r=t.getObject("options"),n=e.baseUrl??r?.baseUrl??process.env.MEDPLUM_BASE_URL??"https://api.medplum.com/",o=e.fhirUrlPath??r?.fhirUrlPath??process.env.MEDPLUM_FHIR_URL_PATH,s=e.accessToken??r?.accessToken??process.env.MEDPLUM_CLIENT_ACCESS_TOKEN,i=e.tokenUrl??r?.tokenUrl??process.env.MEDPLUM_TOKEN_URL,a=e.authorizeUrl??r?.authorizeUrl??process.env.MEDPLUM_AUTHORIZE_URL,l=e.clientId??r?.clientId??process.env.MEDPLUM_CLIENT_ID,u=e.clientSecret??r?.clientSecret??process.env.MEDPLUM_CLIENT_SECRET;return{baseUrl:n,fhirUrlPath:o,accessToken:s,tokenUrl:i,authorizeUrl:a,clientId:l,clientSecret:u}}async function Ri(e,t){try{let r=new URL("healthcheck",e).toString(),n=await t(r);if(!n.ok)throw new Error(`Healthcheck returned status ${n.status}`);if((await n.json()).ok===!0)return;throw new Error('Healthcheck response does not have "ok": true')}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`Failed to validate base URL "${e}": ${n}`)}}function bi(){console.log("Unauthenticated: run `npx medplum login` to sign in")}import{ContentType as bt,encodeBase64 as Xr,isOk as Wi,normalizeErrorString as Gi,OAuthSigningAlgorithm as zr}from"@medplum/core";import{Command as Ki}from"commander";var Y=new TextEncoder,vr=new TextDecoder,Ai=new TextDecoder("utf-8",{fatal:!0}),fm=2**32;function Pr(...e){let t=e.reduce((o,{length:s})=>o+s,0),r=new Uint8Array(t),n=0;for(let o of e)r.set(o,n),n+=o.length;return r}var vi=/[^\x00-\x7f]/;function Te(e){if(typeof e=="string"&&e.length>=128){if(vi.test(e))throw new TypeError("non-ASCII string encountered in encode()");return Y.encode(e)}let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw new TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}function Ir(e,t=!1){if(Uint8Array.prototype.toBase64)return e.toBase64({alphabet:t?"base64url":"base64",omitPadding:t});let r=32768,n=[];for(let s=0;s<e.length;s+=r)n.push(String.fromCharCode.apply(null,e.subarray(s,s+r)));let o=btoa(n.join(""));return t?o.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"):o}function Cr(e,t=!1){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e,{alphabet:t?"base64url":"base64"});if(t){if(e.includes("+")||e.includes("/"))throw new TypeError("Invalid base64url");e=e.replace(/-/g,"+").replace(/_/g,"/")}let r=atob(e),n=new Uint8Array(r.length);for(let o=0;o<r.length;o++)n[o]=r.charCodeAt(o);return n}var Q=class extends Error{constructor(r,n){super(r,n);$(this,"code","ERR_JOSE_GENERIC");this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}};$(Q,"code","ERR_JOSE_GENERIC");var G=class extends Q{constructor(){super(...arguments);$(this,"code","ERR_JOSE_NOT_SUPPORTED")}};$(G,"code","ERR_JOSE_NOT_SUPPORTED");var D=class extends Q{constructor(){super(...arguments);$(this,"code","ERR_JWS_INVALID")}};$(D,"code","ERR_JWS_INVALID");var pe=class extends Q{constructor(){super(...arguments);$(this,"code","ERR_JWT_INVALID")}};$(pe,"code","ERR_JWT_INVALID");var Tr,Or,dt=class extends(Or=Q,Tr=Symbol.asyncIterator,Or){constructor(r="multiple matching keys found in the JSON Web Key Set",n){super(r,n);$(this,Tr,async function*(){});$(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}};$(dt,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS");var Pi="The input to be decoded is not correctly encoded.";function $r(e){try{return Cr(typeof e=="string"?e:vr.decode(e),!0)}catch(t){throw new TypeError(Pi,{cause:t})}}function de(e){return Ir(typeof e=="string"?Y.encode(e):e,!0)}function me(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||Object.getPrototypeOf(t)===null}function Nr(...e){let t=new Set;for(let r of e)if(r)for(let n of Object.keys(r)){if(t.has(n))return!1;t.add(n)}return!0}function kr(e,t){if(e!==void 0)throw new TypeError(`${t} can only be called once`)}var xr={__proto__:null,b64:!0};function Dr(e,t){let{crit:r}=t??{};if(Array.isArray(r)&&new Set(r).size!==r.length)throw new e('"crit" (Critical) Header Parameter MUST NOT contain duplicate values')}function Mr(e,t,r,n,o){if(o.crit!==void 0&&n?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return[];if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(i=>typeof i!="string"||i.length===0))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let s=r===void 0?t:{__proto__:null,...r,...t};for(let i of n.crit){if(!(i in s))throw new G(`Extension Header Parameter "${i}" is not recognized`);if(!Object.hasOwn(o,i)||o[i]===void 0)throw new e(`Extension Header Parameter "${i}" is missing`);if(s[i]&&(!Object.hasOwn(n,i)||n[i]===void 0))throw new e(`Extension Header Parameter "${i}" MUST be integrity protected`)}return n.crit}function Lr(e,t){if(t.includes("b64")){let r=e.b64;if(typeof r!="boolean")throw new D('The "b64" (base64url-encode payload) Header Parameter must be a boolean');return r}return!0}function mt(e,t){let r,n;try{r=JSON.stringify(t),n=JSON.parse(r)}catch(o){throw new e("JOSE Header is not valid JSON",{cause:o})}if(!me(n))throw new e("JOSE Header is not a JSON object");return[n,r]}var Ii=e=>e[Symbol.toStringTag],Ci=(e,t,r)=>{let{alg:n}=e;if(t.use!==void 0){let o=r==="sign"||r==="verify"?"sig":"enc";if(t.use!==o)throw new TypeError(`Invalid key for this operation, its "use" must be "${o}" when present`)}if(t.alg!==void 0&&t.alg!==n)throw new TypeError(`Invalid key for this operation, its "alg" must be "${n}" when present`);if(Array.isArray(t.key_ops)){let o=r==="encrypt"||r==="decrypt"?e.ops?.[r==="encrypt"?0:1]:r;if(o&&!t.key_ops.includes(o))throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${o}" when present`)}};async function _r(e,t,r){let{alg:n,secret:o}=e,s=r==="decrypt"||r==="sign";if(o&&t instanceof Uint8Array)return t;let i,a;if(me(t)){if(i=Mi(t),typeof i.kty!="string")throw Ur(n,t,o);if(!(o?i.kty==="oct"&&typeof i.k=="string":i.kty!=="oct"&&(s?i.kty==="AKP"&&typeof i.priv=="string"||typeof i.d=="string":i.d===void 0&&i.priv===void 0)))throw new TypeError(o?'JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present':`JSON Web Key for this operation must be a ${s?"private":"public"} JWK`);if(Ci(e,i,r),i.kty==="oct")return $r(i.k);if(!Object.isFrozen(t)){let{key_ops:p}=t;Array.isArray(p)&&Object.freeze(p),Object.freeze(t)}}else{if(!$i(t))throw Ur(n,t,o);let p=o?"secret":s?"private":"public";if(t.type!==p&&(o||["secret","public","private"].includes(t.type)))throw new TypeError(`${Ii(t)} instances must be of type "${p}" for the ${n} algorithm`);if(Fr(t))return t;if(a=t,a.type==="secret")return a.export()}ft||=new WeakMap;let l=t,u=ft.get(l);if(u?.[n])return u[n];if(u||ft.set(l,u={}),a&&typeof a.toCryptoKey=="function"){let p=a.type==="public",d=Ti[a.asymmetricKeyDetails?.namedCurve],E=e.resolve?.({crv:d,asymmetricKeyType:a.asymmetricKeyType})??e.subtle;return u[n]=a.toCryptoKey(E,p,e.usages[p?0:1])}return i??=a.export({format:"jwk"}),i.alg=n,u[n]=await Li(e,i)}var ft,Ti={__proto__:null,prime256v1:"P-256",secp384r1:"P-384",secp521r1:"P-521"};var Fr=e=>{if(e?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return e instanceof CryptoKey}catch{return!1}},Oi=e=>e?.[Symbol.toStringTag]==="KeyObject",$i=e=>Fr(e)||Oi(e);function Ni(e,t,...r){if(r.length>2){let n=r.pop();e+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return t==null?e+=` Received ${t}`:typeof t=="function"&&t.name?e+=` Received function ${t.name}`:typeof t=="object"&&t!=null&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}function Ur(e,t,r){let n=["CryptoKey","KeyObject","JSON Web Key"];return r&&n.push("Uint8Array"),new TypeError(Ni(`Key for the ${e} algorithm must be `,t,...n))}var Oe=(e,t="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`);function ki(e,t){if(t&&!e.usages.includes(t))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}function jr(e,t){let{modulusLength:r}=t.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}function xi(e,t,r){let n=e.algorithm;if(n.name!==t.name)throw Oe(t.name);if(t.hash&&n.hash?.name!==t.hash)throw Oe(t.hash,"algorithm.hash");if(t.namedCurve&&n.namedCurve!==t.namedCurve)throw Oe(t.namedCurve,"algorithm.namedCurve");if(t.length!==void 0&&n.length!==t.length)throw Oe(t.length,"algorithm.length");ki(e,r)}function Di(e){return{__proto__:null,...e}}function Mi(e){let t=Di(e);if(t.ext!==void 0&&typeof t.ext!="boolean")throw new TypeError('"ext" (Extractable) Parameter must be a boolean');if(t.key_ops!==void 0){let r=t.key_ops,n=Array.isArray(r)?[...r]:void 0;if(!n||n.some(o=>typeof o!="string")||new Set(n).size!==n.length)throw new TypeError('"key_ops" (Key Operations) Parameter must be an array of unique strings');t.key_ops=n}return t}async function Li(e,t,r){if(!e.kty.includes(t.kty))throw new G('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');let n=e.resolve?.({kty:t.kty,crv:t.crv})??e.subtle,o=!!(t.d||t.priv),s={...t,ext:r??t.ext};return s.kty!=="AKP"&&delete s.alg,delete s.use,crypto.subtle.importKey("jwk",s,n,s.ext??!o,t.key_ops??e.usages[o?1:0])}async function Br(e,t,r,n=!1){return e instanceof Uint8Array&&(e=await crypto.subtle.importKey("raw",e,t,n,[r])),xi(e,t,r),e}function qr(e){let t={__proto__:null};for(let r in e)t[r]={...e[r],alg:r};return t}var fe=[["verify"],["sign"]];function gt(e){let t={name:"HMAC",hash:`SHA-${e}`};return{kty:["oct"],secret:!0,subtle:t,signing:t,usages:fe}}function ee(e,t){let r={name:t?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:`SHA-${e}`};return{kty:["RSA"],subtle:r,signing:t?{...r,saltLength:t}:r,usages:fe,minRsaBits:2048}}function ht(e,t){return{kty:["EC"],crv:e,subtle:{name:"ECDSA",namedCurve:e},signing:{name:"ECDSA",hash:`SHA-${t}`},usages:fe}}function Wr(){let e={name:"Ed25519"};return{kty:["OKP"],crv:"Ed25519",subtle:e,signing:e,usages:fe}}function yt(e){let t={name:`ML-DSA-${e}`};return{kty:["AKP"],subtle:t,signing:t,usages:fe}}var Ui=qr({HS256:gt(256),HS384:gt(384),HS512:gt(512),RS256:ee(256),RS384:ee(384),RS512:ee(512),PS256:ee(256,32),PS384:ee(384,48),PS512:ee(512,64),ES256:ht("P-256",256),ES384:ht("P-384",384),ES512:ht("P-521",512),EdDSA:Wr(),Ed25519:Wr(),"ML-DSA-44":yt(44),"ML-DSA-65":yt(65),"ML-DSA-87":yt(87)});function Gr(e){let t=typeof e=="string"?Ui[e]:void 0;if(!t)throw new G(`alg ${e} is not supported either by JOSE or your javascript runtime`);return t}var $e=e=>Math.floor(e.getTime()/1e3),_i={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},Fi=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function wt(){throw new TypeError("Invalid time period format")}function Kr(e){typeof e!="string"&&wt();let t=Fi.exec(e);(!t||t[4]&&t[1])&&wt();let r=parseFloat(t[2]),n=Math.round(r*_i[t[3][0].toLowerCase()]);return Number.isFinite(n)||wt(),t[1]==="-"||t[4]==="ago"?-n:n}function Rt(e,t){if(!Number.isFinite(t))throw new TypeError(`Invalid ${e} input`);return t}function Et(e,t){if(typeof t!="string")throw new TypeError(`"${e}" claim must be a string`)}function ji(e){if(typeof e!="string"&&(!Array.isArray(e)||Array.from(e).some(t=>typeof t!="string")))throw new TypeError('"aud" claim must be a string or an array of strings')}function St(e,t){return typeof e=="number"?Rt(t,e):e instanceof Date?Rt(t,$e(e)):$e(new Date)+Kr(e)}var Vr;function V(e){return Vr.get(e)}function Hr(e){let t=V(e);for(let r of["iat","nbf","exp"]){let n=t[r];if(typeof n=="number"&&!Number.isFinite(n))throw new TypeError(`"${r}" claim must be a finite number`)}return Y.encode(JSON.stringify(t))}var Ne=class{constructor(t={}){if(!me(t))throw new TypeError("JWT Claims Set MUST be an object");(Vr||=new WeakMap).set(this,structuredClone(t))}setIssuer(t){return Et("iss",t),V(this).iss=t,this}setSubject(t){return Et("sub",t),V(this).sub=t,this}setAudience(t){return ji(t),V(this).aud=t,this}setJti(t){return Et("jti",t),V(this).jti=t,this}setNotBefore(t){return V(this).nbf=St(t,"setNotBefore"),this}setExpirationTime(t){return V(this).exp=St(t,"setExpirationTime"),this}setIssuedAt(t){let r=V(this);return t===void 0?r.iat=$e(new Date):typeof t=="string"?r.iat=Rt("setIssuedAt",$e(new Date)+Kr(t)):r.iat=St(t,"setIssuedAt"),this}};async function Bi(e,t,r){let[n,o,s,i]=e,a="";if(o!==void 0){let F=mt(D,o);o=F[0],a=de(F[1])}if(s!==void 0&&(s=mt(D,s)[0]),!o&&!s)throw new D("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!Nr(o,s))throw new D("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let l={...o,...s};Dr(D,o);let u=Lr(o,Mr(D,xr,i,o,l));u||r?.();let{alg:p}=l;if(typeof p!="string"||!p)throw new D('JWS "alg" (Algorithm) Header Parameter missing or invalid');let d=Gr(p),E="",g=n,_;if(u){let F=e[4];F?(E=F[0]??=de(n),g=F[1]??=Te(E)):(E=de(n),_=Y.encode(`${a}.${E}`))}_??=Pr(Te(a),Te("."),g);let P=await Br(await _r(d,t,"sign"),d.subtle,"sign");d.minRsaBits&&jr(d.alg,P);let x={signature:de(new Uint8Array(await crypto.subtle.sign(d.signing,P,_))),payload:E};return o&&(x.protected=a),s&&(x.header=s),[x,u]}async function Jr(e,t,r,n,o){let[s]=await Bi([e,t,void 0,r],n,o);return`${s.protected}.${s.payload}.${s.signature}`}var qi=Ne,te,ge=class extends qi{constructor(){super(...arguments);Sr(this,te)}setProtectedHeader(r){return kr(pt(this,te),"setProtectedHeader"),Rr(this,te,r),this}async sign(r,n){return Jr(Hr(this),pt(this,te),n?.crit,r,()=>{throw new pe("JWTs MUST NOT use unencoded payload")})}};te=new WeakMap;import{createHmac as Vi,createPrivateKey as Hi,randomBytes as Ji}from"node:crypto";import{existsSync as Xi,readFileSync as Yr,writeFileSync as Qr}from"node:fs";import{basename as Zr,extname as zi,resolve as At}from"node:path";import{isPromise as Yi}from"node:util/types";import{extract as Qi}from"tar";function K(e){console.log(JSON.stringify(e,null,2))}async function vt(e,t,r){let n=t.source,o=ke(n);if(!o)return;console.log("Saving source code...");let s=await e.createAttachment({data:o,filename:Zr(n),contentType:ta(n)});console.log("Updating bot...");let i=await e.updateResource({...r,sourceCode:s});console.log("Success! New bot version: "+i.meta?.versionId)}async function Pt(e,t,r){let n=t.dist??t.source,o=ke(n);if(!o)return;console.log("Deploying bot...");let s=await e.post(e.fhirUrl("Bot",r.id,"$deploy"),{code:o,filename:Zr(n)});if(console.log("Deploy result: "+s.issue?.[0]?.details?.text),!Wi(s))throw new Error(`Bot deploy failed: ${Gi(s)}`)}async function It(e,t,r,n,o,s,i){let a={name:t,description:"",runtimeVersion:s},l=await e.post("admin/projects/"+r+"/bot",a),u=await e.readResource("Bot",l.id),p={name:t,id:l.id,source:n,dist:o};await vt(e,p,u),await Pt(e,p,u),console.log(`Success! Bot created: ${u.id}`),i&&Zi(p)}function en(e){let t=new RegExp("^"+ea(e).replaceAll(String.raw`\*`,".*")+"$"),r=B()?.bots?.filter(n=>t.test(n.name));return r||[]}function U(e,t){if(t?.file)return t.file;let r=["medplum"];return e&&r.push(e),r.push("config"),t?.server&&r.push("server"),r.push("json"),r.join(".")}function I(e,t){Qr(At(e),JSON.stringify(t,void 0,2),"utf-8")}function B(e,t){let r=U(e,t),n=ke(r);if(n)return JSON.parse(n)}function tn(e){let t=ke(U(e,{server:!0}));if(t)return JSON.parse(t)}function ke(e){let t=At(e);return Xi(t)?Yr(t,"utf8"):""}function Zi(e){let t=B()??{};t.bots||(t.bots=[]),t.bots.push(e),Qr("medplum.config.json",JSON.stringify(t,null,2),"utf8"),console.log(`Bot added to config: ${e.id}`)}function ea(e){return e.replaceAll(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")}function rn(e){let n=0,o=0;return Qi({cwd:e,filter:(s,i)=>{if(n++,n>100)throw new Error("Tar extractor reached max number of files");if(o+=i.size,o>10485760)throw new Error("Tar extractor reached max size");return!0}})}function Ct(){return{url:"http://hl7.org/fhir/StructureDefinition/data-absent-reason",valueCode:"unsupported"}}function ta(e){let t=zi(e).toLowerCase();return[".cjs",".mjs",".js"].includes(t)?bt.JAVASCRIPT:[".cts",".mts",".ts"].includes(t)?bt.TYPESCRIPT:bt.TEXT}function xe(e,t){let r=new j(e),n={name:e,...t};return r.setObject("options",n),n}function nn(e){return new j(e).getObject("options")}async function on(e,t){let r={typ:"JWT",alg:zr.HS256},n=Math.floor(Date.now()/1e3),o={aud:`${t.baseUrl}${t.audience}`,iss:t.issuer,sub:t.subject,nbf:n,iat:n,exp:n+604800},s=Xr(JSON.stringify(r)),i=Xr(JSON.stringify(o)),a=`${s}.${i}`,l=Vi("sha256",t.clientSecret).update(a).digest("base64url"),u=`${a}.${l}`;await e.startJwtBearerLogin(t.clientId,u,t.scope??"")}async function sn(e,t){let r=Hi(Yr(At(t.privateKeyPath))),n=await new ge({}).setProtectedHeader({typ:"JWT",alg:zr.RS384}).setIssuer(t.clientId).setSubject(t.clientId).setAudience(`${t.baseUrl}${t.audience}`).setJti(Ji(16).toString("hex")).setIssuedAt().setExpirationTime("5m").sign(r);await e.startJwtAssertionLogin(n)}function y(e,t){t.configureHelp({showGlobalOptions:!0}),e.addCommand(t)}var h=class extends Ki{action(t){let r=ra(this,t);return super._actionHandler=r,this}resetOptionDefaults(){this._optionValues={};for(let t of this.options)t.defaultValue!==void 0&&(this._optionValues[t.attributeName()]=t.defaultValue)}};function ra(e,t){return async r=>{let n=e.registeredArguments.length,o=r.slice(0,n);o[n]=e.optsWithGlobals();try{let s=t(...o);Yi(s)&&await s}finally{e.resetOptionDefaults()}}}var pn=new h("status").aliases(["info","list","ls"]),dn=new h("ping"),mn=new h("push"),fn=new h("reload-config"),gn=new h("upgrade"),hn=new h("stats"),H=new h("agent");y(H,pn);y(H,dn);y(H,mn);y(H,fn);y(H,gn);y(H,hn);pn.description("Get the status of a specified agent").argument("[agentIds...]","The ID(s) of the agent(s) to get the status of").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to get the status of. Mutually exclusive with [agentIds...] arg").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Me({operation:"$bulk-status",agentIds:e,options:t,parseSuccessfulResponse:r=>{let n=wn(r.result,{required:["status","version"],optional:["lastUpdated"]});return{id:r.agent.id,name:r.agent.name,enabledStatus:r.agent.status,version:n.version,connectionStatus:n.status,statusLastUpdated:n.lastUpdated??"N/A"}}})});dn.description("Ping a host from a specified agent").argument("<ipOrDomain>","The IPv4 address or domain name to ping").argument("[agentId]","Conditionally optional ID of the agent to ping from. Mutually exclusive with --criteria <criteria> option").option("--count <count>","An optional amount of pings to issue before returning results","1").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r)=>{let n=await R(r),o=await yn(n,t,r),s=Number.parseInt(r.count,10);if(Number.isNaN(s))throw new Error("--count <count> must be an integer if specified");try{let i=await n.pushToAgent(o,e,`PING ${s}`,un.PING,!0,{maxRetries:0});console.info(i)}catch(i){throw new Error("Unexpected response from agent while pinging",{cause:i})}});mn.description("Push a message to a target device via a specified agent").argument("<deviceId>","The ID of the device to push the message to").argument("<message>","The message to send to the destination device").argument("[agentId]","Conditionally optional ID of the agent to send the message from. Mutually exclusive with --criteria <criteria> option").option("--content-type <contentType>","The content type of the message",un.HL7_V2).option("--no-wait","Tells the server not to wait for a response from the destination device").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r,n)=>{let o=await R(n),s=await yn(o,r,n),i;try{i=await o.pushToAgent(s,{reference:`Device/${e}`},t,n.contentType,n.wait!==!1,{maxRetries:0})}catch(a){throw new Error("Unexpected response from agent while pushing message to agent",{cause:a})}console.info(i)});fn.description("Reload the config for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) for which the config should be reloaded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) for which to notify to reload their config. Mutually exclusive with [agentIds...] arg").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Me({operation:"$reload-config",agentIds:e,options:t,parseSuccessfulResponse:r=>({id:r.agent.id,name:r.agent.name})})});gn.description("Upgrade the version for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) that should be upgraded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to upgrade. Mutually exclusive with [agentIds...] arg").option("--agentVersion <version>","An optional agent version to upgrade to. Defaults to the latest version if flag not included").option("--force","Forces an upgrade when a pending upgrade is in an inconsistent state. Use with caution.").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{let r={};t.agentVersion&&(r.version=t.agentVersion),t.force&&(r.force=!0),await Me({operation:"$upgrade",agentIds:e,options:t,params:r,parseSuccessfulResponse:n=>({id:n.agent.id,name:n.agent.name,version:t.agentVersion??"latest"})})});hn.description("Get runtime statistics for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) to get stats for. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to get stats for. Mutually exclusive with [agentIds...] arg").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Me({operation:"$stats",agentIds:e,options:t,parseSuccessfulResponse:r=>{let{stats:n}=wn(r.result,{required:["stats"]}),o;try{o=JSON.parse(n)}catch(s){console.error(`Failed to parse stats for agent ${r.agent.id}: ${ia(s)}`)}return{id:r.agent.id,name:r.agent.name,stats:o}},renderSuccessfulRows:r=>{for(let n=0;n<r.length;n++)n>0&&console.info(),aa(r[n])}})});var an=["live","ping","hl7ConnectionsOpen","hl7ClientCount","hl7QueueDepth","webSocketQueueDepth","outstandingHeartbeats"];function cn(e){return e==null?"":typeof e=="object"?JSON.stringify(e):e.toString()}function ln(e){return e?Object.entries(e).filter(([,t])=>t?.rtt).map(([t,r])=>({name:t,count:r.rtt.count,pending:r.rtt.pendingCount,"min (ms)":r.rtt.min,"avg (ms)":r.rtt.average,"max (ms)":r.rtt.max,"p50 (ms)":r.rtt.p50,"p95 (ms)":r.rtt.p95,"p99 (ms)":r.rtt.p99})):[]}function aa(e){let t=e.name?`${e.name} (${e.id})`:e.id;if(console.info(`Agent: ${t}`),!e.stats){console.info(" (stats unavailable)");return}let r={};for(let i of an)r[i]=cn(e.stats[i]);let n=new Set([...an,"channelStats","clientStats"]);for(let[i,a]of Object.entries(e.stats))n.has(i)||(r[i]=cn(a));console.table(r);let o=ln(e.stats.channelStats);o.length&&(console.info("Channel Stats:"),console.table(o));let s=ln(e.stats.clientStats);s.length&&(console.info("Client Stats:"),console.table(s))}async function Me({operation:e,agentIds:t,options:r,params:n={},parseSuccessfulResponse:o,renderSuccessfulRows:s}){let i=pa(t,r),a=await R(r),l=i.type==="criteria"?i.criteria:`Agent?_id=${i.ids.join(",")}`,u=new URLSearchParams(l.split("?")[1]);for(let[P,x]of Object.entries(n))u.append(P,x.toString());let p;try{let P=a.fhirUrl("Agent",e);P.search=u.toString(),p=await a.get(P,{cache:"reload"})}catch(P){throw new Error(`Operation '${e}' failed`,{cause:P})}if(r.output==="json"){console.info(JSON.stringify(p,null,2));return}let d=[],E=[];switch(p.resourceType){case"Bundle":{let P=ca(p);for(let x of P)x.result.resourceType==="Parameters"||oa(x.result)?d.push(x):E.push(x);break}case"Parameters":case"OperationOutcome":{let P=await a.searchOne("Agent",u,{cache:"reload"});if(!P)throw new Error("Agent not found");p.resourceType==="Parameters"?d.push({agent:P,result:p}):E.push({agent:P,result:p});break}default:throw new Error(`Invalid result received for '${e}' operation: ${JSON.stringify(p)}`)}let g=[];for(let P of d){let x=o(P);g.push(x)}let _=[];for(let P of E){let F=P.result.issue?.[0],ii={id:P.agent.id,name:P.agent.name,severity:F.severity,code:F.code,details:F.details?.text??"No details to show"};_.push(ii)}console.info(`
|
|
2
|
+
var ai=Object.create;var ut=Object.defineProperty;var ci=Object.getOwnPropertyDescriptor;var li=Object.getOwnPropertyNames;var ui=Object.getPrototypeOf,pi=Object.prototype.hasOwnProperty;var yr=e=>{throw TypeError(e)};var di=(e,t,r)=>t in e?ut(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var w=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(r){throw t=0,r}};var mi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of li(t))!pi.call(e,o)&&o!==r&&ut(e,o,{get:()=>t[o],enumerable:!(n=ci(t,o))||n.enumerable});return e};var wr=(e,t,r)=>(r=e!=null?ai(ui(e)):{},mi(t||!e||!e.__esModule?ut(r,"default",{value:e,enumerable:!0}):r,e));var $=(e,t,r)=>di(e,typeof t!="symbol"?t+"":t,r),Er=(e,t,r)=>t.has(e)||yr("Cannot "+r);var pt=(e,t,r)=>(Er(e,t,"read from private field"),r?r.call(e):t.get(e)),Sr=(e,t,r)=>t.has(e)?yr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Rr=(e,t,r,n)=>(Er(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var re=w((Ef,bn)=>{"use strict";var $a="2.0.0",Na=Number.MAX_SAFE_INTEGER||9007199254740991,ka=16,xa=250,Da=["major","premajor","minor","preminor","patch","prepatch","prerelease"];bn.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:ka,MAX_SAFE_BUILD_LENGTH:xa,MAX_SAFE_INTEGER:Na,RELEASE_TYPES:Da,SEMVER_SPEC_VERSION:$a,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var ye=w((Sf,An)=>{"use strict";var Ma=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};An.exports=Ma});var ne=w((q,vn)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:kt,MAX_SAFE_BUILD_LENGTH:La,MAX_LENGTH:Ua}=re(),_a=ye();q=vn.exports={};var Fa=q.re=[],ja=q.safeRe=[],m=q.src=[],Ba=q.safeSrc=[],f=q.t={},qa=0,xt="[a-zA-Z0-9-]",Wa=[["\\s",1],["\\d",Ua],[xt,La]],Ga=e=>{for(let[t,r]of Wa)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},S=(e,t,r)=>{let n=Ga(t),o=qa++;_a(e,o,t),f[e]=o,m[o]=t,Ba[o]=n,Fa[o]=new RegExp(t,r?"g":void 0),ja[o]=new RegExp(n,r?"g":void 0)};S("NUMERICIDENTIFIER","0|[1-9]\\d*");S("NUMERICIDENTIFIERLOOSE","\\d+");S("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${xt}*`);S("MAINVERSION",`(${m[f.NUMERICIDENTIFIER]})\\.(${m[f.NUMERICIDENTIFIER]})\\.(${m[f.NUMERICIDENTIFIER]})`);S("MAINVERSIONLOOSE",`(${m[f.NUMERICIDENTIFIERLOOSE]})\\.(${m[f.NUMERICIDENTIFIERLOOSE]})\\.(${m[f.NUMERICIDENTIFIERLOOSE]})`);S("PRERELEASEIDENTIFIER",`(?:${m[f.NONNUMERICIDENTIFIER]}|${m[f.NUMERICIDENTIFIER]})`);S("PRERELEASEIDENTIFIERLOOSE",`(?:${m[f.NONNUMERICIDENTIFIER]}|${m[f.NUMERICIDENTIFIERLOOSE]})`);S("PRERELEASE",`(?:-(${m[f.PRERELEASEIDENTIFIER]}(?:\\.${m[f.PRERELEASEIDENTIFIER]})*))`);S("PRERELEASELOOSE",`(?:-?(${m[f.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${m[f.PRERELEASEIDENTIFIERLOOSE]})*))`);S("BUILDIDENTIFIER",`${xt}+`);S("BUILD",`(?:\\+(${m[f.BUILDIDENTIFIER]}(?:\\.${m[f.BUILDIDENTIFIER]})*))`);S("FULLPLAIN",`v?${m[f.MAINVERSION]}${m[f.PRERELEASE]}?${m[f.BUILD]}?`);S("FULL",`^${m[f.FULLPLAIN]}$`);S("LOOSEPLAIN",`[v=\\s]*${m[f.MAINVERSIONLOOSE]}${m[f.PRERELEASELOOSE]}?${m[f.BUILD]}?`);S("LOOSE",`^${m[f.LOOSEPLAIN]}$`);S("GTLT","((?:<|>)?=?)");S("XRANGEIDENTIFIERLOOSE",`${m[f.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);S("XRANGEIDENTIFIER",`${m[f.NUMERICIDENTIFIER]}|x|X|\\*`);S("XRANGEPLAIN",`[v=\\s]*(${m[f.XRANGEIDENTIFIER]})(?:\\.(${m[f.XRANGEIDENTIFIER]})(?:\\.(${m[f.XRANGEIDENTIFIER]})(?:${m[f.PRERELEASE]})?${m[f.BUILD]}?)?)?`);S("XRANGEPLAINLOOSE",`[v=\\s]*(${m[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${m[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${m[f.XRANGEIDENTIFIERLOOSE]})(?:${m[f.PRERELEASELOOSE]})?${m[f.BUILD]}?)?)?`);S("XRANGE",`^${m[f.GTLT]}\\s*${m[f.XRANGEPLAIN]}$`);S("XRANGELOOSE",`^${m[f.GTLT]}\\s*${m[f.XRANGEPLAINLOOSE]}$`);S("COERCEPLAIN",`(^|[^\\d])(\\d{1,${kt}})(?:\\.(\\d{1,${kt}}))?(?:\\.(\\d{1,${kt}}))?`);S("COERCE",`${m[f.COERCEPLAIN]}(?:$|[^\\d])`);S("COERCEFULL",m[f.COERCEPLAIN]+`(?:${m[f.PRERELEASE]})?(?:${m[f.BUILD]})?(?:$|[^\\d])`);S("COERCERTL",m[f.COERCE],!0);S("COERCERTLFULL",m[f.COERCEFULL],!0);S("LONETILDE","(?:~>?)");S("TILDETRIM",`(\\s*)${m[f.LONETILDE]}\\s+`,!0);q.tildeTrimReplace="$1~";S("TILDE",`^${m[f.LONETILDE]}${m[f.XRANGEPLAIN]}$`);S("TILDELOOSE",`^${m[f.LONETILDE]}${m[f.XRANGEPLAINLOOSE]}$`);S("LONECARET","(?:\\^)");S("CARETTRIM",`(\\s*)${m[f.LONECARET]}\\s+`,!0);q.caretTrimReplace="$1^";S("CARET",`^${m[f.LONECARET]}${m[f.XRANGEPLAIN]}$`);S("CARETLOOSE",`^${m[f.LONECARET]}${m[f.XRANGEPLAINLOOSE]}$`);S("COMPARATORLOOSE",`^${m[f.GTLT]}\\s*(${m[f.LOOSEPLAIN]})$|^$`);S("COMPARATOR",`^${m[f.GTLT]}\\s*(${m[f.FULLPLAIN]})$|^$`);S("COMPARATORTRIM",`(\\s*)${m[f.GTLT]}\\s*(${m[f.LOOSEPLAIN]}|${m[f.XRANGEPLAIN]})`,!0);q.comparatorTrimReplace="$1$2$3";S("HYPHENRANGE",`^\\s*(${m[f.XRANGEPLAIN]})\\s+-\\s+(${m[f.XRANGEPLAIN]})\\s*$`);S("HYPHENRANGELOOSE",`^\\s*(${m[f.XRANGEPLAINLOOSE]})\\s+-\\s+(${m[f.XRANGEPLAINLOOSE]})\\s*$`);S("STAR","(<|>)?=?\\s*\\*");S("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");S("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Ue=w((Rf,Pn)=>{"use strict";var Ka=Object.freeze({loose:!0}),Va=Object.freeze({}),Ha=e=>e?typeof e!="object"?Ka:e:Va;Pn.exports=Ha});var Dt=w((bf,Tn)=>{"use strict";var In=/^[0-9]+$/,Cn=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=In.test(e),n=In.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},Ja=(e,t)=>Cn(t,e);Tn.exports={compareIdentifiers:Cn,rcompareIdentifiers:Ja}});var T=w((Af,$n)=>{"use strict";var _e=ye(),{MAX_LENGTH:On,MAX_SAFE_INTEGER:Fe}=re(),{safeRe:je,t:Be}=ne(),Xa=Ue(),{compareIdentifiers:Mt}=Dt(),za=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Mt(e[n],r[n])!==0)return!1;return!0},Lt=class e{constructor(t,r){if(r=Xa(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>On)throw new TypeError(`version is longer than ${On} characters`);_e("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?je[Be.LOOSE]:je[Be.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>Fe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Fe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Fe||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){let s=+o;if(s>=0&&s<Fe)return s}return o}):this.prerelease=[],this.build=n[5]?n[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(t){if(_e("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),this.major<t.major?-1:this.major>t.major?1:this.minor<t.minor?-1:this.minor>t.minor?1:this.patch<t.patch?-1:this.patch>t.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],o=t.prerelease[r];if(_e("prerelease compare",r,n,o),n===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(n===void 0)return-1;if(n===o)continue;return Mt(n,o)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],o=t.build[r];if(_e("build compare",r,n,o),n===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(n===void 0)return-1;if(n===o)continue;return Mt(n,o)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let o=`-${r}`.match(this.options.loose?je[Be.PRERELEASELOOSE]:je[Be.PRERELEASE]);if(!o||o[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;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":{let o=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(r){let s=[r,o];if(n===!1&&(s=[r]),za(this.prerelease,r)){let i=this.prerelease[r.split(".").length];isNaN(i)&&(this.prerelease=s)}else this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};$n.exports=Lt});var J=w((vf,kn)=>{"use strict";var Nn=T(),Ya=(e,t,r=!1)=>{if(e instanceof Nn)return e;try{return new Nn(e,t)}catch(n){if(!r)return null;throw n}};kn.exports=Ya});var Dn=w((Pf,xn)=>{"use strict";var Qa=J(),Za=(e,t)=>{let r=Qa(e,t);return r?r.version:null};xn.exports=Za});var Ln=w((If,Mn)=>{"use strict";var ec=J(),tc=(e,t)=>{let r=ec(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};Mn.exports=tc});var Fn=w((Cf,_n)=>{"use strict";var Un=T(),rc=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new Un(e instanceof Un?e.version:e,r).inc(t,n,o).version}catch{return null}};_n.exports=rc});var qn=w((Tf,Bn)=>{"use strict";var jn=J(),nc=(e,t)=>{let r=jn(e,null,!0),n=jn(t,null,!0),o=r.compare(n);if(o===0)return null;let s=o>0,i=s?r:n,a=s?n:r,l=!!i.prerelease.length;if(!!a.prerelease.length&&!l){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}let p=l?"pre":"";return r.major!==n.major?p+"major":r.minor!==n.minor?p+"minor":r.patch!==n.patch?p+"patch":"prerelease"};Bn.exports=nc});var Gn=w((Of,Wn)=>{"use strict";var oc=T(),sc=(e,t)=>new oc(e,t).major;Wn.exports=sc});var Vn=w(($f,Kn)=>{"use strict";var ic=T(),ac=(e,t)=>new ic(e,t).minor;Kn.exports=ac});var Jn=w((Nf,Hn)=>{"use strict";var cc=T(),lc=(e,t)=>new cc(e,t).patch;Hn.exports=lc});var zn=w((kf,Xn)=>{"use strict";var uc=J(),pc=(e,t)=>{let r=uc(e,t);return r&&r.prerelease.length?r.prerelease:null};Xn.exports=pc});var M=w((xf,Qn)=>{"use strict";var Yn=T(),dc=(e,t,r)=>new Yn(e,r).compare(new Yn(t,r));Qn.exports=dc});var eo=w((Df,Zn)=>{"use strict";var mc=M(),fc=(e,t,r)=>mc(t,e,r);Zn.exports=fc});var ro=w((Mf,to)=>{"use strict";var gc=M(),hc=(e,t)=>gc(e,t,!0);to.exports=hc});var qe=w((Lf,oo)=>{"use strict";var no=T(),yc=(e,t,r)=>{let n=new no(e,r),o=new no(t,r);return n.compare(o)||n.compareBuild(o)};oo.exports=yc});var io=w((Uf,so)=>{"use strict";var wc=qe(),Ec=(e,t)=>e.sort((r,n)=>wc(r,n,t));so.exports=Ec});var co=w((_f,ao)=>{"use strict";var Sc=qe(),Rc=(e,t)=>e.sort((r,n)=>Sc(n,r,t));ao.exports=Rc});var we=w((Ff,lo)=>{"use strict";var bc=M(),Ac=(e,t,r)=>bc(e,t,r)>0;lo.exports=Ac});var We=w((jf,uo)=>{"use strict";var vc=M(),Pc=(e,t,r)=>vc(e,t,r)<0;uo.exports=Pc});var Ut=w((Bf,po)=>{"use strict";var Ic=M(),Cc=(e,t,r)=>Ic(e,t,r)===0;po.exports=Cc});var _t=w((qf,mo)=>{"use strict";var Tc=M(),Oc=(e,t,r)=>Tc(e,t,r)!==0;mo.exports=Oc});var Ge=w((Wf,fo)=>{"use strict";var $c=M(),Nc=(e,t,r)=>$c(e,t,r)>=0;fo.exports=Nc});var Ke=w((Gf,go)=>{"use strict";var kc=M(),xc=(e,t,r)=>kc(e,t,r)<=0;go.exports=xc});var Ft=w((Kf,ho)=>{"use strict";var Dc=Ut(),Mc=_t(),Lc=we(),Uc=Ge(),_c=We(),Fc=Ke(),jc=(e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return Dc(e,r,n);case"!=":return Mc(e,r,n);case">":return Lc(e,r,n);case">=":return Uc(e,r,n);case"<":return _c(e,r,n);case"<=":return Fc(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};ho.exports=jc});var wo=w((Vf,yo)=>{"use strict";var Bc=T(),qc=J(),{safeRe:Ve,t:He}=ne(),Wc=(e,t)=>{if(e instanceof Bc)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Ve[He.COERCEFULL]:Ve[He.COERCE]);else{let l=t.includePrerelease?Ve[He.COERCERTLFULL]:Ve[He.COERCERTL],u;for(;(u=l.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||u.index+u[0].length!==r.index+r[0].length)&&(r=u),l.lastIndex=u.index+u[1].length+u[2].length;l.lastIndex=-1}if(r===null)return null;let n=r[2],o=r[3]||"0",s=r[4]||"0",i=t.includePrerelease&&r[5]?`-${r[5]}`:"",a=t.includePrerelease&&r[6]?`+${r[6]}`:"";return qc(`${n}.${o}.${s}${i}${a}`,t)};yo.exports=Wc});var So=w((Hf,Eo)=>{"use strict";var Gc=J(),Kc=re(),Vc=T(),Hc=(e,t,r)=>{if(!Kc.RELEASE_TYPES.includes(t))return null;let n=Jc(e,r);return n&&Xc(n,t)},Jc=(e,t)=>{let r=e instanceof Vc?e.version:e;return Gc(r,t)},Xc=(e,t)=>{if(zc(t))return e.version;switch(e.prerelease=[],t){case"major":e.minor=0,e.patch=0;break;case"minor":e.patch=0;break}return e.format()},zc=e=>e.startsWith("pre");Eo.exports=Hc});var bo=w((Jf,Ro)=>{"use strict";var jt=class{constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let o=this.map.keys().next().value;this.delete(o)}this.map.set(t,r)}return this}};Ro.exports=jt});var L=w((Xf,Io)=>{"use strict";var Yc=/\s+/g,Bt=class e{constructor(t,r){if(r=Zc(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof qt)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(Yc," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(o=>!vo(o[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let o of this.set)if(o.length===1&&cl(o[0])){this.set=[o];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(al,"");let n=((this.options.includePrerelease&&sl)|(this.options.loose&&il))+":"+t,o=Ao.get(n);if(o)return o;let s=this.options.loose,i=s?N[O.HYPHENRANGELOOSE]:N[O.HYPHENRANGE];t=t.replace(i,El(this.options.includePrerelease)),A("hyphen replace",t),t=t.replace(N[O.COMPARATORTRIM],rl),A("comparator trim",t),t=t.replace(N[O.TILDETRIM],nl),A("tilde trim",t),t=t.replace(N[O.CARETTRIM],ol),A("caret trim",t);let a=t.split(" ").map(d=>ll(d,this.options)).join(" ").split(/\s+/).map(d=>wl(d,this.options));s&&(a=a.filter(d=>(A("loose invalid filter",d,this.options),!!d.match(N[O.COMPARATORLOOSE])))),A("range list",a);let l=new Map,u=a.map(d=>new qt(d,this.options));for(let d of u){if(vo(d))return[d];l.set(d.value,d)}l.size>1&&l.has("")&&l.delete("");let p=[...l.values()];return Ao.set(n,p),p}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Po(n,r)&&t.set.some(o=>Po(o,r)&&n.every(s=>o.every(i=>s.intersects(i,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new el(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Sl(this.set[r],t,this.options))return!0;return!1}};Io.exports=Bt;var Qc=bo(),Ao=new Qc,Zc=Ue(),qt=Ee(),A=ye(),el=T(),{safeRe:N,src:tl,t:O,comparatorTrimReplace:rl,tildeTrimReplace:nl,caretTrimReplace:ol}=ne(),{FLAG_INCLUDE_PRERELEASE:sl,FLAG_LOOSE:il}=re(),al=new RegExp(tl[O.BUILD],"g"),vo=e=>e.value==="<0.0.0-0",cl=e=>e.value==="",Po=(e,t)=>{let r=!0,n=e.slice(),o=n.pop();for(;r&&n.length;)r=n.every(s=>o.intersects(s,t)),o=n.pop();return r},ll=(e,t)=>(e=e.replace(N[O.BUILD],""),A("comp",e,t),e=ml(e,t),A("caret",e),e=pl(e,t),A("tildes",e),e=gl(e,t),A("xrange",e),e=yl(e,t),A("stars",e),e),C=e=>!e||e.toLowerCase()==="x"||e==="*",ul=(e,t,r)=>C(e)&&!C(t)||C(t)&&r&&!C(r),pl=(e,t)=>e.trim().split(/\s+/).map(r=>dl(r,t)).join(" "),dl=(e,t)=>{let r=t.loose?N[O.TILDELOOSE]:N[O.TILDE],n=t.includePrerelease?"-0":"";return e.replace(r,(o,s,i,a,l)=>{A("tilde",e,o,s,i,a,l);let u;return C(s)?u="":C(i)?u=`>=${s}.0.0${n} <${+s+1}.0.0-0`:C(a)?u=`>=${s}.${i}.0${n} <${s}.${+i+1}.0-0`:l?(A("replaceTilde pr",l),u=`>=${s}.${i}.${a}-${l} <${s}.${+i+1}.0-0`):u=`>=${s}.${i}.${a} <${s}.${+i+1}.0-0`,A("tilde return",u),u})},ml=(e,t)=>e.trim().split(/\s+/).map(r=>fl(r,t)).join(" "),fl=(e,t)=>{A("caret",e,t);let r=t.loose?N[O.CARETLOOSE]:N[O.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(o,s,i,a,l)=>{A("caret",e,o,s,i,a,l);let u;return C(s)?u="":C(i)?u=`>=${s}.0.0${n} <${+s+1}.0.0-0`:C(a)?s==="0"?u=`>=${s}.${i}.0${n} <${s}.${+i+1}.0-0`:u=`>=${s}.${i}.0${n} <${+s+1}.0.0-0`:l?(A("replaceCaret pr",l),s==="0"?i==="0"?u=`>=${s}.${i}.${a}-${l} <${s}.${i}.${+a+1}-0`:u=`>=${s}.${i}.${a}-${l} <${s}.${+i+1}.0-0`:u=`>=${s}.${i}.${a}-${l} <${+s+1}.0.0-0`):(A("no pr"),s==="0"?i==="0"?u=`>=${s}.${i}.${a} <${s}.${i}.${+a+1}-0`:u=`>=${s}.${i}.${a} <${s}.${+i+1}.0-0`:u=`>=${s}.${i}.${a} <${+s+1}.0.0-0`),A("caret return",u),u})},gl=(e,t)=>(A("replaceXRanges",e,t),e.split(/\s+/).map(r=>hl(r,t)).join(" ")),hl=(e,t)=>{e=e.trim();let r=t.loose?N[O.XRANGELOOSE]:N[O.XRANGE];return e.replace(r,(n,o,s,i,a,l)=>{if(A("xRange",e,n,o,s,i,a,l),ul(s,i,a))return e;let u=C(s),p=u||C(i),d=p||C(a),E=d;return o==="="&&E&&(o=""),l=t.includePrerelease?"-0":"",u?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&E?(p&&(i=0),a=0,o===">"?(o=">=",p?(s=+s+1,i=0,a=0):(i=+i+1,a=0)):o==="<="&&(o="<",p?s=+s+1:i=+i+1),o==="<"&&(l="-0"),n=`${o+s}.${i}.${a}${l}`):p?n=`>=${s}.0.0${l} <${+s+1}.0.0-0`:d&&(n=`>=${s}.${i}.0${l} <${s}.${+i+1}.0-0`),A("xRange return",n),n})},yl=(e,t)=>(A("replaceStars",e,t),e.trim().replace(N[O.STAR],"")),wl=(e,t)=>(A("replaceGTE0",e,t),e.trim().replace(N[t.includePrerelease?O.GTE0PRE:O.GTE0],"")),El=e=>(t,r,n,o,s,i,a,l,u,p,d,E)=>(C(n)?r="":C(o)?r=`>=${n}.0.0${e?"-0":""}`:C(s)?r=`>=${n}.${o}.0${e?"-0":""}`:i?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,C(u)?l="":C(p)?l=`<${+u+1}.0.0-0`:C(d)?l=`<${u}.${+p+1}.0-0`:E?l=`<=${u}.${p}.${d}-${E}`:e?l=`<${u}.${p}.${+d+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Sl=(e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(A(e[n].semver),e[n].semver!==qt.ANY&&e[n].semver.prerelease.length>0){let o=e[n].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}});var Ee=w((zf,ko)=>{"use strict";var Se=Symbol("SemVer ANY"),Kt=class e{static get ANY(){return Se}constructor(t,r){if(r=Co(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),Gt("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===Se?this.value="":this.value=this.operator+this.semver.version,Gt("comp",this)}parse(t){let r=this.options.loose?To[Oo.COMPARATORLOOSE]:To[Oo.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new $o(n[2],this.options.loose):this.semver=Se}toString(){return this.value}test(t){if(Gt("Comparator.test",t,this.options.loose),this.semver===Se||t===Se)return!0;if(typeof t=="string")try{t=new $o(t,this.options)}catch{return!1}return Wt(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new No(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new No(this.value,r).test(t.semver):(r=Co(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||Wt(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Wt(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};ko.exports=Kt;var Co=Ue(),{safeRe:To,t:Oo}=ne(),Wt=Ft(),Gt=ye(),$o=T(),No=L()});var Re=w((Yf,xo)=>{"use strict";var Rl=L(),bl=(e,t,r)=>{try{t=new Rl(t,r)}catch{return!1}return t.test(e)};xo.exports=bl});var Mo=w((Qf,Do)=>{"use strict";var Al=L(),vl=(e,t)=>new Al(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Do.exports=vl});var Uo=w((Zf,Lo)=>{"use strict";var Pl=T(),Il=L(),Cl=(e,t,r)=>{let n=null,o=null,s=null;try{s=new Il(t,r)}catch{return null}return e.forEach(i=>{s.test(i)&&(!n||o.compare(i)===-1)&&(n=i,o=new Pl(n,r))}),n};Lo.exports=Cl});var Fo=w((eg,_o)=>{"use strict";var Tl=T(),Ol=L(),$l=(e,t,r)=>{let n=null,o=null,s=null;try{s=new Ol(t,r)}catch{return null}return e.forEach(i=>{s.test(i)&&(!n||o.compare(i)===1)&&(n=i,o=new Tl(n,r))}),n};_o.exports=$l});var qo=w((tg,Bo)=>{"use strict";var Vt=T(),Nl=L(),jo=we(),kl=(e,t)=>{e=new Nl(e,t);let r=new Vt("0.0.0");if(e.test(r)||(r=new Vt("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let o=e.set[n],s=null;o.forEach(i=>{let a=new Vt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||jo(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),s&&(!r||jo(r,s))&&(r=s)}return r&&e.test(r)?r:null};Bo.exports=kl});var Go=w((rg,Wo)=>{"use strict";var xl=L(),Dl=(e,t)=>{try{return new xl(e,t).range||"*"}catch{return null}};Wo.exports=Dl});var Je=w((ng,Jo)=>{"use strict";var Ml=T(),Ho=Ee(),{ANY:Ll}=Ho,Ul=L(),_l=Re(),Ko=we(),Vo=We(),Fl=Ke(),jl=Ge(),Bl=(e,t,r,n)=>{e=new Ml(e,n),t=new Ul(t,n);let o,s,i,a,l;switch(r){case">":o=Ko,s=Fl,i=Vo,a=">",l=">=";break;case"<":o=Vo,s=jl,i=Ko,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(_l(e,t,n))return!1;for(let u=0;u<t.set.length;++u){let p=t.set[u],d=null,E=null;if(p.forEach(g=>{g.semver===Ll&&(g=new Ho(">=0.0.0")),d=d||g,E=E||g,o(g.semver,d.semver,n)?d=g:i(g.semver,E.semver,n)&&(E=g)}),d.operator===a||d.operator===l||(!E.operator||E.operator===a)&&s(e,E.semver))return!1;if(E.operator===l&&i(e,E.semver))return!1}return!0};Jo.exports=Bl});var zo=w((og,Xo)=>{"use strict";var ql=Je(),Wl=(e,t,r)=>ql(e,t,">",r);Xo.exports=Wl});var Qo=w((sg,Yo)=>{"use strict";var Gl=Je(),Kl=(e,t,r)=>Gl(e,t,"<",r);Yo.exports=Kl});var ts=w((ig,es)=>{"use strict";var Zo=L(),Vl=(e,t,r)=>(e=new Zo(e,r),t=new Zo(t,r),e.intersects(t,r));es.exports=Vl});var ns=w((ag,rs)=>{"use strict";var Hl=Re(),Jl=M();rs.exports=(e,t,r)=>{let n=[],o=null,s=null,i=e.sort((p,d)=>Jl(p,d,r));for(let p of i)Hl(p,t,r)?(s=p,o||(o=p)):(s&&n.push([o,s]),s=null,o=null);o&&n.push([o,null]);let a=[];for(let[p,d]of n)p===d?a.push(p):!d&&p===i[0]?a.push("*"):d?p===i[0]?a.push(`<=${d}`):a.push(`${p} - ${d}`):a.push(`>=${p}`);let l=a.join(" || "),u=typeof t.raw=="string"?t.raw:String(t);return l.length<u.length?l:t}});var ls=w((cg,cs)=>{"use strict";var os=L(),Xt=Ee(),{ANY:Ht}=Xt,Jt=Re(),zt=M(),Xl=(e,t,r={})=>{if(e===t)return!0;e=new os(e,r),t=new os(t,r);let n=!1;e:for(let o of e.set){for(let s of t.set){let i=Yl(o,s,r);if(n=n||i!==null,i)continue e}if(n)return!1}return!0},zl=[new Xt(">=0.0.0-0")],ss=[new Xt(">=0.0.0")],Yl=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Ht){if(t.length===1&&t[0].semver===Ht)return!0;r.includePrerelease?e=zl:e=ss}if(t.length===1&&t[0].semver===Ht){if(r.includePrerelease)return!0;t=ss}let n=new Set,o,s;for(let g of e)g.operator===">"||g.operator===">="?o=is(o,g,r):g.operator==="<"||g.operator==="<="?s=as(s,g,r):n.add(g.semver);if(n.size>1)return null;let i;if(o&&s){if(i=zt(o.semver,s.semver,r),i>0)return null;if(i===0&&(o.operator!==">="||s.operator!=="<="))return null}for(let g of n){if(o&&!Jt(g,String(o),r)||s&&!Jt(g,String(s),r))return null;for(let _ of t)if(!Jt(g,String(_),r))return!1;return!0}let a,l,u,p,d=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,E=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&s.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(let g of t){if(p=p||g.operator===">"||g.operator===">=",u=u||g.operator==="<"||g.operator==="<=",o){if(E&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===E.major&&g.semver.minor===E.minor&&g.semver.patch===E.patch&&(E=!1),g.operator===">"||g.operator===">="){if(a=is(o,g,r),a===g&&a!==o)return!1}else if(o.operator===">="&&!g.test(o.semver))return!1}if(s){if(d&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===d.major&&g.semver.minor===d.minor&&g.semver.patch===d.patch&&(d=!1),g.operator==="<"||g.operator==="<="){if(l=as(s,g,r),l===g&&l!==s)return!1}else if(s.operator==="<="&&!g.test(s.semver))return!1}if(!g.operator&&(s||o)&&i!==0)return!1}return!(o&&u&&!s&&i!==0||s&&p&&!o&&i!==0||E||d)},is=(e,t,r)=>{if(!e)return t;let n=zt(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},as=(e,t,r)=>{if(!e)return t;let n=zt(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};cs.exports=Xl});var Qt=w((lg,ds)=>{"use strict";var Yt=ne(),us=re(),Ql=T(),ps=Dt(),Zl=J(),eu=Dn(),tu=Ln(),ru=Fn(),nu=qn(),ou=Gn(),su=Vn(),iu=Jn(),au=zn(),cu=M(),lu=eo(),uu=ro(),pu=qe(),du=io(),mu=co(),fu=we(),gu=We(),hu=Ut(),yu=_t(),wu=Ge(),Eu=Ke(),Su=Ft(),Ru=wo(),bu=So(),Au=Ee(),vu=L(),Pu=Re(),Iu=Mo(),Cu=Uo(),Tu=Fo(),Ou=qo(),$u=Go(),Nu=Je(),ku=zo(),xu=Qo(),Du=ts(),Mu=ns(),Lu=ls();ds.exports={parse:Zl,valid:eu,clean:tu,inc:ru,diff:nu,major:ou,minor:su,patch:iu,prerelease:au,compare:cu,rcompare:lu,compareLoose:uu,compareBuild:pu,sort:du,rsort:mu,gt:fu,lt:gu,eq:hu,neq:yu,gte:wu,lte:Eu,cmp:Su,coerce:Ru,truncate:bu,Comparator:Au,Range:vu,satisfies:Pu,toComparators:Iu,maxSatisfying:Cu,minSatisfying:Tu,minVersion:Ou,validRange:$u,outside:Nu,gtr:ku,ltr:xu,intersects:Du,simplifyRange:Mu,subset:Lu,SemVer:Ql,re:Yt.re,src:Yt.src,tokens:Yt.t,SEMVER_SPEC_VERSION:us.SEMVER_SPEC_VERSION,RELEASE_TYPES:us.RELEASE_TYPES,compareIdentifiers:ps.compareIdentifiers,rcompareIdentifiers:ps.rcompareIdentifiers}});import{MEDPLUM_VERSION as Qd,normalizeErrorString as hr}from"@medplum/core";import{CommanderError as si,Option as Zd}from"commander";import{existsSync as em}from"node:fs";import{ContentType as un,EMPTY as na,isOk as oa,isUUID as sa,normalizeErrorString as ia}from"@medplum/core";import{Option as De}from"commander";import{MedplumClient as Ei}from"@medplum/core";import{ClientStorage as fi}from"@medplum/core";import{existsSync as br,mkdirSync as gi,readFileSync as hi,writeFileSync as yi}from"node:fs";import{homedir as wi}from"node:os";import{resolve as Ar}from"node:path";var j=class extends fi{constructor(r){super();$(this,"dirName");$(this,"fileName");this.dirName=Ar(wi(),".medplum"),this.fileName=Ar(this.dirName,r+".json")}clear(){this.writeFile({})}getString(r){return this.readFile()?.[r]}setString(r,n){let o=this.readFile()??{};n?o[r]=n:delete o[r],this.writeFile(o)}getObject(r){let n=this.getString(r);return n?JSON.parse(n):void 0}setObject(r,n){this.setString(r,n?JSON.stringify(n):void 0)}readFile(){if(br(this.fileName))return JSON.parse(hi(this.fileName,"utf8"))}writeFile(r){br(this.dirName)||gi(this.dirName),yi(this.fileName,JSON.stringify(r,null,2),"utf8")}};async function R(e,t=!0){let r=e.profile??"default",n=new j(r),o=n.getObject("options");if(r!=="default"&&!o)throw new Error(`Profile "${r}" does not exist`);let{baseUrl:s,fhirUrlPath:i,accessToken:a,tokenUrl:l,authorizeUrl:u,clientId:p,clientSecret:d}=Si(e,n),E=e.fetch??fetch;e.baseUrl&&e.baseUrl!=="https://api.medplum.com/"&&await Ri(e.baseUrl,E);let g=new Ei({fetch:E,baseUrl:s,tokenUrl:l,fhirUrlPath:i,authorizeUrl:u,storage:n,onUnauthenticated:bi,verbose:e.verbose});return t&&(a?g.setAccessToken(a):p&&d&&(g.setBasicAuth(p,d),o?.authType!=="basic"&&await g.startClientLogin(p,d))),g}function Si(e,t){let r=t.getObject("options"),n=e.baseUrl??r?.baseUrl??process.env.MEDPLUM_BASE_URL??"https://api.medplum.com/",o=e.fhirUrlPath??r?.fhirUrlPath??process.env.MEDPLUM_FHIR_URL_PATH,s=e.accessToken??r?.accessToken??process.env.MEDPLUM_CLIENT_ACCESS_TOKEN,i=e.tokenUrl??r?.tokenUrl??process.env.MEDPLUM_TOKEN_URL,a=e.authorizeUrl??r?.authorizeUrl??process.env.MEDPLUM_AUTHORIZE_URL,l=e.clientId??r?.clientId??process.env.MEDPLUM_CLIENT_ID,u=e.clientSecret??r?.clientSecret??process.env.MEDPLUM_CLIENT_SECRET;return{baseUrl:n,fhirUrlPath:o,accessToken:s,tokenUrl:i,authorizeUrl:a,clientId:l,clientSecret:u}}async function Ri(e,t){try{let r=new URL("healthcheck",e).toString(),n=await t(r);if(!n.ok)throw new Error(`Healthcheck returned status ${n.status}`);if((await n.json()).ok===!0)return;throw new Error('Healthcheck response does not have "ok": true')}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`Failed to validate base URL "${e}": ${n}`)}}function bi(){console.log("Unauthenticated: run `npx medplum login` to sign in")}import{ContentType as bt,encodeBase64 as Xr,isOk as Wi,normalizeErrorString as Gi,OAuthSigningAlgorithm as zr}from"@medplum/core";import{Command as Ki}from"commander";var Y=new TextEncoder,vr=new TextDecoder,Ai=new TextDecoder("utf-8",{fatal:!0}),fm=2**32;function Pr(...e){let t=e.reduce((o,{length:s})=>o+s,0),r=new Uint8Array(t),n=0;for(let o of e)r.set(o,n),n+=o.length;return r}var vi=/[^\x00-\x7f]/;function Te(e){if(typeof e=="string"&&e.length>=128){if(vi.test(e))throw new TypeError("non-ASCII string encountered in encode()");return Y.encode(e)}let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw new TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}function Ir(e,t=!1){if(Uint8Array.prototype.toBase64)return e.toBase64({alphabet:t?"base64url":"base64",omitPadding:t});let r=32768,n=[];for(let s=0;s<e.length;s+=r)n.push(String.fromCharCode.apply(null,e.subarray(s,s+r)));let o=btoa(n.join(""));return t?o.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"):o}function Cr(e,t=!1){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e,{alphabet:t?"base64url":"base64"});if(t){if(e.includes("+")||e.includes("/"))throw new TypeError("Invalid base64url");e=e.replace(/-/g,"+").replace(/_/g,"/")}let r=atob(e),n=new Uint8Array(r.length);for(let o=0;o<r.length;o++)n[o]=r.charCodeAt(o);return n}var Q=class extends Error{constructor(r,n){super(r,n);$(this,"code","ERR_JOSE_GENERIC");this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}};$(Q,"code","ERR_JOSE_GENERIC");var G=class extends Q{constructor(){super(...arguments);$(this,"code","ERR_JOSE_NOT_SUPPORTED")}};$(G,"code","ERR_JOSE_NOT_SUPPORTED");var D=class extends Q{constructor(){super(...arguments);$(this,"code","ERR_JWS_INVALID")}};$(D,"code","ERR_JWS_INVALID");var pe=class extends Q{constructor(){super(...arguments);$(this,"code","ERR_JWT_INVALID")}};$(pe,"code","ERR_JWT_INVALID");var Tr,Or,dt=class extends(Or=Q,Tr=Symbol.asyncIterator,Or){constructor(r="multiple matching keys found in the JSON Web Key Set",n){super(r,n);$(this,Tr,async function*(){});$(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}};$(dt,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS");var Pi="The input to be decoded is not correctly encoded.";function $r(e){try{return Cr(typeof e=="string"?e:vr.decode(e),!0)}catch(t){throw new TypeError(Pi,{cause:t})}}function de(e){return Ir(typeof e=="string"?Y.encode(e):e,!0)}function me(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||Object.getPrototypeOf(t)===null}function Nr(...e){let t=new Set;for(let r of e)if(r)for(let n of Object.keys(r)){if(t.has(n))return!1;t.add(n)}return!0}function kr(e,t){if(e!==void 0)throw new TypeError(`${t} can only be called once`)}var xr={__proto__:null,b64:!0};function Dr(e,t){let{crit:r}=t??{};if(Array.isArray(r)&&new Set(r).size!==r.length)throw new e('"crit" (Critical) Header Parameter MUST NOT contain duplicate values')}function Mr(e,t,r,n,o){if(o.crit!==void 0&&n?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return[];if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(i=>typeof i!="string"||i.length===0))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let s=r===void 0?t:{__proto__:null,...r,...t};for(let i of n.crit){if(!(i in s))throw new G(`Extension Header Parameter "${i}" is not recognized`);if(!Object.hasOwn(o,i)||o[i]===void 0)throw new e(`Extension Header Parameter "${i}" is missing`);if(s[i]&&(!Object.hasOwn(n,i)||n[i]===void 0))throw new e(`Extension Header Parameter "${i}" MUST be integrity protected`)}return n.crit}function Lr(e,t){if(t.includes("b64")){let r=e.b64;if(typeof r!="boolean")throw new D('The "b64" (base64url-encode payload) Header Parameter must be a boolean');return r}return!0}function mt(e,t){let r,n;try{r=JSON.stringify(t),n=JSON.parse(r)}catch(o){throw new e("JOSE Header is not valid JSON",{cause:o})}if(!me(n))throw new e("JOSE Header is not a JSON object");return[n,r]}var Ii=e=>e[Symbol.toStringTag],Ci=(e,t,r)=>{let{alg:n}=e;if(t.use!==void 0){let o=r==="sign"||r==="verify"?"sig":"enc";if(t.use!==o)throw new TypeError(`Invalid key for this operation, its "use" must be "${o}" when present`)}if(t.alg!==void 0&&t.alg!==n)throw new TypeError(`Invalid key for this operation, its "alg" must be "${n}" when present`);if(Array.isArray(t.key_ops)){let o=r==="encrypt"||r==="decrypt"?e.ops?.[r==="encrypt"?0:1]:r;if(o&&!t.key_ops.includes(o))throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${o}" when present`)}};async function _r(e,t,r){let{alg:n,secret:o}=e,s=r==="decrypt"||r==="sign";if(o&&t instanceof Uint8Array)return t;let i,a;if(me(t)){if(i=Mi(t),typeof i.kty!="string")throw Ur(n,t,o);if(!(o?i.kty==="oct"&&typeof i.k=="string":i.kty!=="oct"&&(s?i.kty==="AKP"&&typeof i.priv=="string"||typeof i.d=="string":i.d===void 0&&i.priv===void 0)))throw new TypeError(o?'JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present':`JSON Web Key for this operation must be a ${s?"private":"public"} JWK`);if(Ci(e,i,r),i.kty==="oct")return $r(i.k);if(!Object.isFrozen(t)){let{key_ops:p}=t;Array.isArray(p)&&Object.freeze(p),Object.freeze(t)}}else{if(!$i(t))throw Ur(n,t,o);let p=o?"secret":s?"private":"public";if(t.type!==p&&(o||["secret","public","private"].includes(t.type)))throw new TypeError(`${Ii(t)} instances must be of type "${p}" for the ${n} algorithm`);if(Fr(t))return t;if(a=t,a.type==="secret")return a.export()}ft||=new WeakMap;let l=t,u=ft.get(l);if(u?.[n])return u[n];if(u||ft.set(l,u={}),a&&typeof a.toCryptoKey=="function"){let p=a.type==="public",d=Ti[a.asymmetricKeyDetails?.namedCurve],E=e.resolve?.({crv:d,asymmetricKeyType:a.asymmetricKeyType})??e.subtle;return u[n]=a.toCryptoKey(E,p,e.usages[p?0:1])}return i??=a.export({format:"jwk"}),i.alg=n,u[n]=await Li(e,i)}var ft,Ti={__proto__:null,prime256v1:"P-256",secp384r1:"P-384",secp521r1:"P-521"};var Fr=e=>{if(e?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return e instanceof CryptoKey}catch{return!1}},Oi=e=>e?.[Symbol.toStringTag]==="KeyObject",$i=e=>Fr(e)||Oi(e);function Ni(e,t,...r){if(r.length>2){let n=r.pop();e+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return t==null?e+=` Received ${t}`:typeof t=="function"&&t.name?e+=` Received function ${t.name}`:typeof t=="object"&&t!=null&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}function Ur(e,t,r){let n=["CryptoKey","KeyObject","JSON Web Key"];return r&&n.push("Uint8Array"),new TypeError(Ni(`Key for the ${e} algorithm must be `,t,...n))}var Oe=(e,t="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`);function ki(e,t){if(t&&!e.usages.includes(t))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}function jr(e,t){let{modulusLength:r}=t.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}function xi(e,t,r){let n=e.algorithm;if(n.name!==t.name)throw Oe(t.name);if(t.hash&&n.hash?.name!==t.hash)throw Oe(t.hash,"algorithm.hash");if(t.namedCurve&&n.namedCurve!==t.namedCurve)throw Oe(t.namedCurve,"algorithm.namedCurve");if(t.length!==void 0&&n.length!==t.length)throw Oe(t.length,"algorithm.length");ki(e,r)}function Di(e){return{__proto__:null,...e}}function Mi(e){let t=Di(e);if(t.ext!==void 0&&typeof t.ext!="boolean")throw new TypeError('"ext" (Extractable) Parameter must be a boolean');if(t.key_ops!==void 0){let r=t.key_ops,n=Array.isArray(r)?[...r]:void 0;if(!n||n.some(o=>typeof o!="string")||new Set(n).size!==n.length)throw new TypeError('"key_ops" (Key Operations) Parameter must be an array of unique strings');t.key_ops=n}return t}async function Li(e,t,r){if(!e.kty.includes(t.kty))throw new G('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');let n=e.resolve?.({kty:t.kty,crv:t.crv})??e.subtle,o=!!(t.d||t.priv),s={...t,ext:r??t.ext};return s.kty!=="AKP"&&delete s.alg,delete s.use,crypto.subtle.importKey("jwk",s,n,s.ext??!o,t.key_ops??e.usages[o?1:0])}async function Br(e,t,r,n=!1){return e instanceof Uint8Array&&(e=await crypto.subtle.importKey("raw",e,t,n,[r])),xi(e,t,r),e}function qr(e){let t={__proto__:null};for(let r in e)t[r]={...e[r],alg:r};return t}var fe=[["verify"],["sign"]];function gt(e){let t={name:"HMAC",hash:`SHA-${e}`};return{kty:["oct"],secret:!0,subtle:t,signing:t,usages:fe}}function ee(e,t){let r={name:t?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:`SHA-${e}`};return{kty:["RSA"],subtle:r,signing:t?{...r,saltLength:t}:r,usages:fe,minRsaBits:2048}}function ht(e,t){return{kty:["EC"],crv:e,subtle:{name:"ECDSA",namedCurve:e},signing:{name:"ECDSA",hash:`SHA-${t}`},usages:fe}}function Wr(){let e={name:"Ed25519"};return{kty:["OKP"],crv:"Ed25519",subtle:e,signing:e,usages:fe}}function yt(e){let t={name:`ML-DSA-${e}`};return{kty:["AKP"],subtle:t,signing:t,usages:fe}}var Ui=qr({HS256:gt(256),HS384:gt(384),HS512:gt(512),RS256:ee(256),RS384:ee(384),RS512:ee(512),PS256:ee(256,32),PS384:ee(384,48),PS512:ee(512,64),ES256:ht("P-256",256),ES384:ht("P-384",384),ES512:ht("P-521",512),EdDSA:Wr(),Ed25519:Wr(),"ML-DSA-44":yt(44),"ML-DSA-65":yt(65),"ML-DSA-87":yt(87)});function Gr(e){let t=typeof e=="string"?Ui[e]:void 0;if(!t)throw new G(`alg ${e} is not supported either by JOSE or your javascript runtime`);return t}var $e=e=>Math.floor(e.getTime()/1e3),_i={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},Fi=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function wt(){throw new TypeError("Invalid time period format")}function Kr(e){typeof e!="string"&&wt();let t=Fi.exec(e);(!t||t[4]&&t[1])&&wt();let r=parseFloat(t[2]),n=Math.round(r*_i[t[3][0].toLowerCase()]);return Number.isFinite(n)||wt(),t[1]==="-"||t[4]==="ago"?-n:n}function Rt(e,t){if(!Number.isFinite(t))throw new TypeError(`Invalid ${e} input`);return t}function Et(e,t){if(typeof t!="string")throw new TypeError(`"${e}" claim must be a string`)}function ji(e){if(typeof e!="string"&&(!Array.isArray(e)||Array.from(e).some(t=>typeof t!="string")))throw new TypeError('"aud" claim must be a string or an array of strings')}function St(e,t){return typeof e=="number"?Rt(t,e):e instanceof Date?Rt(t,$e(e)):$e(new Date)+Kr(e)}var Vr;function V(e){return Vr.get(e)}function Hr(e){let t=V(e);for(let r of["iat","nbf","exp"]){let n=t[r];if(typeof n=="number"&&!Number.isFinite(n))throw new TypeError(`"${r}" claim must be a finite number`)}return Y.encode(JSON.stringify(t))}var Ne=class{constructor(t={}){if(!me(t))throw new TypeError("JWT Claims Set MUST be an object");(Vr||=new WeakMap).set(this,structuredClone(t))}setIssuer(t){return Et("iss",t),V(this).iss=t,this}setSubject(t){return Et("sub",t),V(this).sub=t,this}setAudience(t){return ji(t),V(this).aud=t,this}setJti(t){return Et("jti",t),V(this).jti=t,this}setNotBefore(t){return V(this).nbf=St(t,"setNotBefore"),this}setExpirationTime(t){return V(this).exp=St(t,"setExpirationTime"),this}setIssuedAt(t){let r=V(this);return t===void 0?r.iat=$e(new Date):typeof t=="string"?r.iat=Rt("setIssuedAt",$e(new Date)+Kr(t)):r.iat=St(t,"setIssuedAt"),this}};async function Bi(e,t,r){let[n,o,s,i]=e,a="";if(o!==void 0){let F=mt(D,o);o=F[0],a=de(F[1])}if(s!==void 0&&(s=mt(D,s)[0]),!o&&!s)throw new D("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!Nr(o,s))throw new D("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let l={...o,...s};Dr(D,o);let u=Lr(o,Mr(D,xr,i,o,l));u||r?.();let{alg:p}=l;if(typeof p!="string"||!p)throw new D('JWS "alg" (Algorithm) Header Parameter missing or invalid');let d=Gr(p),E="",g=n,_;if(u){let F=e[4];F?(E=F[0]??=de(n),g=F[1]??=Te(E)):(E=de(n),_=Y.encode(`${a}.${E}`))}_??=Pr(Te(a),Te("."),g);let P=await Br(await _r(d,t,"sign"),d.subtle,"sign");d.minRsaBits&&jr(d.alg,P);let x={signature:de(new Uint8Array(await crypto.subtle.sign(d.signing,P,_))),payload:E};return o&&(x.protected=a),s&&(x.header=s),[x,u]}async function Jr(e,t,r,n,o){let[s]=await Bi([e,t,void 0,r],n,o);return`${s.protected}.${s.payload}.${s.signature}`}var qi=Ne,te,ge=class extends qi{constructor(){super(...arguments);Sr(this,te)}setProtectedHeader(r){return kr(pt(this,te),"setProtectedHeader"),Rr(this,te,r),this}async sign(r,n){return Jr(Hr(this),pt(this,te),n?.crit,r,()=>{throw new pe("JWTs MUST NOT use unencoded payload")})}};te=new WeakMap;import{createHmac as Vi,createPrivateKey as Hi,randomBytes as Ji}from"node:crypto";import{existsSync as Xi,readFileSync as Yr,writeFileSync as Qr}from"node:fs";import{basename as Zr,extname as zi,resolve as At}from"node:path";import{isPromise as Yi}from"node:util/types";import{extract as Qi}from"tar";function K(e){console.log(JSON.stringify(e,null,2))}async function vt(e,t,r){let n=t.source,o=ke(n);if(!o)return;console.log("Saving source code...");let s=await e.createAttachment({data:o,filename:Zr(n),contentType:ta(n)});console.log("Updating bot...");let i=await e.updateResource({...r,sourceCode:s});console.log("Success! New bot version: "+i.meta?.versionId)}async function Pt(e,t,r){let n=t.dist??t.source,o=ke(n);if(!o)return;console.log("Deploying bot...");let s=await e.post(e.fhirUrl("Bot",r.id,"$deploy"),{code:o,filename:Zr(n)});if(console.log("Deploy result: "+s.issue?.[0]?.details?.text),!Wi(s))throw new Error(`Bot deploy failed: ${Gi(s)}`)}async function It(e,t,r,n,o,s,i){let a={name:t,description:"",runtimeVersion:s},l=await e.post("admin/projects/"+r+"/bot",a),u=await e.readResource("Bot",l.id),p={name:t,id:l.id,source:n,dist:o};await vt(e,p,u),await Pt(e,p,u),console.log(`Success! Bot created: ${u.id}`),i&&Zi(p)}function en(e){let t=new RegExp("^"+ea(e).replaceAll(String.raw`\*`,".*")+"$"),r=B()?.bots?.filter(n=>t.test(n.name));return r||[]}function U(e,t){if(t?.file)return t.file;let r=["medplum"];return e&&r.push(e),r.push("config"),t?.server&&r.push("server"),r.push("json"),r.join(".")}function I(e,t){Qr(At(e),JSON.stringify(t,void 0,2),"utf-8")}function B(e,t){let r=U(e,t),n=ke(r);if(n)return JSON.parse(n)}function tn(e){let t=ke(U(e,{server:!0}));if(t)return JSON.parse(t)}function ke(e){let t=At(e);return Xi(t)?Yr(t,"utf8"):""}function Zi(e){let t=B()??{};t.bots||(t.bots=[]),t.bots.push(e),Qr("medplum.config.json",JSON.stringify(t,null,2),"utf8"),console.log(`Bot added to config: ${e.id}`)}function ea(e){return e.replaceAll(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")}function rn(e){let n=0,o=0;return Qi({cwd:e,filter:(s,i)=>{if(n++,n>100)throw new Error("Tar extractor reached max number of files");if(o+=i.size,o>10485760)throw new Error("Tar extractor reached max size");return!0}})}function Ct(){return{url:"http://hl7.org/fhir/StructureDefinition/data-absent-reason",valueCode:"unsupported"}}function ta(e){let t=zi(e).toLowerCase();return[".cjs",".mjs",".js"].includes(t)?bt.JAVASCRIPT:[".cts",".mts",".ts"].includes(t)?bt.TYPESCRIPT:bt.TEXT}function xe(e,t){let r=new j(e),n={name:e,...t};return r.setObject("options",n),n}function nn(e){return new j(e).getObject("options")}async function on(e,t){let r={typ:"JWT",alg:zr.HS256},n=Math.floor(Date.now()/1e3),o={aud:`${t.baseUrl}${t.audience}`,iss:t.issuer,sub:t.subject,nbf:n,iat:n,exp:n+604800},s=Xr(JSON.stringify(r)),i=Xr(JSON.stringify(o)),a=`${s}.${i}`,l=Vi("sha256",t.clientSecret).update(a).digest("base64url"),u=`${a}.${l}`;await e.startJwtBearerLogin(t.clientId,u,t.scope??"")}async function sn(e,t){let r=Hi(Yr(At(t.privateKeyPath))),n=await new ge({}).setProtectedHeader({typ:"JWT",alg:zr.RS384}).setIssuer(t.clientId).setSubject(t.clientId).setAudience(`${t.baseUrl}${t.audience}`).setJti(Ji(16).toString("hex")).setIssuedAt().setExpirationTime("5m").sign(r);await e.startJwtAssertionLogin(n)}function y(e,t){t.configureHelp({showGlobalOptions:!0}),e.addCommand(t)}var h=class extends Ki{action(t){let r=ra(this,t);return super._actionHandler=r,this}resetOptionDefaults(){this._optionValues={};for(let t of this.options)t.defaultValue!==void 0&&(this._optionValues[t.attributeName()]=t.defaultValue)}};function ra(e,t){return async r=>{let n=e.registeredArguments.length,o=r.slice(0,n);o[n]=e.optsWithGlobals();try{let s=t(...o);Yi(s)&&await s}finally{e.resetOptionDefaults()}}}var pn=new h("status").aliases(["info","list","ls"]),dn=new h("ping"),mn=new h("push"),fn=new h("reload-config"),gn=new h("upgrade"),hn=new h("stats"),H=new h("agent");y(H,pn);y(H,dn);y(H,mn);y(H,fn);y(H,gn);y(H,hn);pn.description("Get the status of a specified agent").argument("[agentIds...]","The ID(s) of the agent(s) to get the status of").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to get the status of. Mutually exclusive with [agentIds...] arg").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Me({operation:"$bulk-status",agentIds:e,options:t,parseSuccessfulResponse:r=>{let n=wn(r.result,{required:["status","version"],optional:["lastUpdated"]});return{id:r.agent.id,name:r.agent.name,enabledStatus:r.agent.status,version:n.version,connectionStatus:n.status,statusLastUpdated:n.lastUpdated??"N/A"}}})});dn.description("Ping a host from a specified agent").argument("<ipOrDomain>","The IPv4 address or domain name to ping").argument("[agentId]","Conditionally optional ID of the agent to ping from. Mutually exclusive with --criteria <criteria> option").option("--count <count>","An optional amount of pings to issue before returning results","1").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r)=>{let n=await R(r),o=await yn(n,t,r),s=Number.parseInt(r.count,10);if(Number.isNaN(s))throw new Error("--count <count> must be an integer if specified");try{let i=await n.pushToAgent(o,e,`PING ${s}`,un.PING,!0,{maxRetries:0});console.info(i)}catch(i){throw new Error("Unexpected response from agent while pinging",{cause:i})}});mn.description("Push a message to a target device via a specified agent").argument("<deviceId>","The ID of the device to push the message to").argument("<message>","The message to send to the destination device").argument("[agentId]","Conditionally optional ID of the agent to send the message from. Mutually exclusive with --criteria <criteria> option").option("--content-type <contentType>","The content type of the message",un.HL7_V2).option("--no-wait","Tells the server not to wait for a response from the destination device").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r,n)=>{let o=await R(n),s=await yn(o,r,n),i;try{i=await o.pushToAgent(s,{reference:`Device/${e}`},t,n.contentType,n.wait!==!1,{maxRetries:0})}catch(a){throw new Error("Unexpected response from agent while pushing message to agent",{cause:a})}console.info(i)});fn.description("Reload the config for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) for which the config should be reloaded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) for which to notify to reload their config. Mutually exclusive with [agentIds...] arg").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Me({operation:"$reload-config",agentIds:e,options:t,parseSuccessfulResponse:r=>({id:r.agent.id,name:r.agent.name})})});gn.description("Upgrade the version for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) that should be upgraded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to upgrade. Mutually exclusive with [agentIds...] arg").option("--agentVersion <version>","An optional agent version to upgrade to. Defaults to the latest version if flag not included").option("--force","Forces an upgrade when a pending upgrade is in an inconsistent state. Use with caution.").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{let r={};t.agentVersion&&(r.version=t.agentVersion),t.force&&(r.force=!0),await Me({operation:"$upgrade",agentIds:e,options:t,params:r,parseSuccessfulResponse:n=>({id:n.agent.id,name:n.agent.name,version:t.agentVersion??"latest"})})});hn.description("Get runtime statistics for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) to get stats for. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to get stats for. Mutually exclusive with [agentIds...] arg").addOption(new De("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Me({operation:"$stats",agentIds:e,options:t,parseSuccessfulResponse:r=>{let{stats:n}=wn(r.result,{required:["stats"]}),o;try{o=JSON.parse(n)}catch(s){console.error(`Failed to parse stats for agent ${r.agent.id}: ${ia(s)}`)}return{id:r.agent.id,name:r.agent.name,stats:o}},renderSuccessfulRows:r=>{for(let n=0;n<r.length;n++)n>0&&console.info(),aa(r[n])}})});var an=["live","ping","hl7ConnectionsOpen","hl7ClientCount","hl7QueueDepth","webSocketQueueDepth","outstandingHeartbeats"];function cn(e){return e==null?"":typeof e=="object"?JSON.stringify(e):e.toString()}function ln(e){return e?Object.entries(e).filter(([,t])=>t?.rtt).map(([t,r])=>({name:t,count:r.rtt.count,pending:r.rtt.pendingCount,"min (ms)":r.rtt.min,"avg (ms)":r.rtt.average,"max (ms)":r.rtt.max,"p50 (ms)":r.rtt.p50,"p95 (ms)":r.rtt.p95,"p99 (ms)":r.rtt.p99})):[]}function aa(e){let t=e.name?`${e.name} (${e.id})`:e.id;if(console.info(`Agent: ${t}`),!e.stats){console.info(" (stats unavailable)");return}let r={};for(let i of an)r[i]=cn(e.stats[i]);let n=new Set([...an,"channelStats","clientStats"]);for(let[i,a]of Object.entries(e.stats))n.has(i)||(r[i]=cn(a));console.table(r);let o=ln(e.stats.channelStats);o.length&&(console.info("Channel Stats:"),console.table(o));let s=ln(e.stats.clientStats);s.length&&(console.info("Client Stats:"),console.table(s))}async function Me({operation:e,agentIds:t,options:r,params:n={},parseSuccessfulResponse:o,renderSuccessfulRows:s}){let i=pa(t,r),a=await R(r),l=i.type==="criteria"?i.criteria:`Agent?_id=${i.ids.join(",")}`,u=new URLSearchParams(l.split("?")[1]);for(let[P,x]of Object.entries(n))u.append(P,x.toString());let p;try{let P=a.fhirUrl("Agent",e);P.search=u.toString(),p=await a.get(P,{cache:"reload"})}catch(P){throw new Error(`Operation '${e}' failed`,{cause:P})}if(r.output==="json"){console.info(JSON.stringify(p,null,2));return}let d=[],E=[];switch(p.resourceType){case"Bundle":{let P=ca(p);for(let x of P)x.result.resourceType==="Parameters"||oa(x.result)?d.push(x):E.push(x);break}case"Parameters":case"OperationOutcome":{let P=await a.searchOne("Agent",u,{cache:"reload"});if(!P)throw new Error("Agent not found");p.resourceType==="Parameters"?d.push({agent:P,result:p}):E.push({agent:P,result:p});break}default:throw new Error(`Invalid result received for '${e}' operation: ${JSON.stringify(p)}`)}let g=[];for(let P of d){let x=o(P);g.push(x)}let _=[];for(let P of E){let F=P.result.issue?.[0],ii={id:P.agent.id,name:P.agent.name,severity:F.severity,code:F.code,details:F.details?.text??"No details to show"};_.push(ii)}console.info(`
|
|
3
3
|
${g.length} successful response(s):
|
|
4
4
|
`),s?g.length?s(g):console.info("No successful responses received"):console.table(g.length?g:"No successful responses received"),console.info(),_.length&&(console.info(`${_.length} failed response(s):`),console.info(),console.table(_))}async function yn(e,t,r){if(!(t||r.criteria))throw new Error("This command requires either an [agentId] or a --criteria <criteria> flag");if(t&&r.criteria)throw new Error("Ambiguous arguments and options combination; [agentId] arg and --criteria <criteria> flag are mutually exclusive");let n;if(t)n=t;else{En(r.criteria);let o=await e.search("Agent",`${r.criteria.split("?")[1]}&_count=2`);if(!o?.entry?.length)throw new Error("Could not find an agent matching the provided criteria");if(o.entry.length!==1)throw new Error("Found more than one agent matching this criteria. This operation requires the criteria to resolve to exactly one agent");n=o.entry[0].resource?.id}return{reference:`Agent/${n}`}}function ca(e){let t=[];for(let r of e.entry??na){if(!r.resource)throw new Error("No Parameter resource found in entry");t.push(la(r.resource))}return t}function la(e){let t=e.parameter?.find(n=>n.name==="agent")?.resource;if(!t)throw new Error("Agent bulk operation response missing 'agent'");if(t.resourceType!=="Agent")throw new Error(`Agent bulk operation returned 'agent' with type '${t.resourceType}'`);let r=e.parameter?.find(n=>n.name==="result")?.resource;if(!r)throw new Error("Agent bulk operation response missing result'");if(!(r.resourceType==="Parameters"||r.resourceType==="OperationOutcome"))throw new Error(`Agent bulk operation returned 'result' with type '${r.resourceType}'`);return{agent:t,result:r}}function wn(e,t){let r={},n=t.required,o=t.optional;for(let s of n){let i=e.parameter?.find(l=>l.name===s);if(!i)throw new Error(`Failed to find parameter '${s}'`);let a;for(let l in i)if(l.startsWith("value")){if(a)throw new Error(`Found multiple values for parameter '${s}'`);a=l}if(!a)throw new Error(`Failed to find a value for parameter '${s}'`);r[s]=i[a]}if(o?.length)for(let s of o){let i=e.parameter?.find(l=>l.name===s);if(!i)continue;let a=ua(s,i);r[s]=a}return r}function ua(e,t){let r;for(let n in t)if(n.startsWith("value")){if(r)throw new Error(`Found multiple values for parameter '${e}'`);r=n}if(!r)throw new Error(`Failed to find a value for parameter '${e}'`);return t[r]}function pa(e,t){if(!Array.isArray(e))throw new Error("Invalid agent IDs array");if(e.length){if(t.criteria)throw new Error("Ambiguous arguments and options combination; [agentIds...] arg and --criteria <criteria> flag are mutually exclusive");for(let r of e)if(!sa(r))throw new Error(`Input '${r}' is not a valid agentId`);return{type:"ids",ids:e}}if(t.criteria)return En(t.criteria),{type:"criteria",criteria:t.criteria};throw new Error("Either an [agentId...] arg or a --criteria <criteria> flag is required")}function En(e){let t="Criteria must be formatted as a string containing the resource type (Agent) followed by a '?' and valid URL search query params, eg. `Agent?name=Test Agent`";if(typeof e!="string")throw new Error(t);let[r,n]=e.split("?");if(r!=="Agent"||!n)throw new Error(t);try{new URLSearchParams(n)}catch(o){throw new Error(t,{cause:o})}if(!n.includes("="))throw new Error(t,{cause:new Error("Query string lacks at least one `=`")})}import{ContentType as Le,getDisplayString as da,MEDPLUM_CLI_CLIENT_ID as ma,normalizeErrorString as fa}from"@medplum/core";import{exec as ga}from"node:child_process";import{createServer as ha}from"node:http";import{platform as ya}from"node:os";import{promisify as wa}from"node:util";var Ea=wa(ga),Sn=ma,Rn="http://localhost:9615",Tt=new h("login"),Ot=new h("whoami"),$t=new h("token");Tt.action(async e=>{let t=e.profile??"default",r=xe(t,e),n=await R(e,!1);await Sa(n,r)});Ot.action(async e=>{let t=await R(e);Aa(t)});$t.action(async e=>{let t=await R(e);await t.getProfileAsync();let r=t.getAccessToken();if(!r)throw new Error("Not logged in");console.log(r)});async function Sa(e,t){switch(t?.authType??"authorization-code"){case"authorization-code":await va(e,t);break;case"basic":e.setBasicAuth(t.clientId,t.clientSecret);break;case"client-credentials":e.setBasicAuth(t.clientId,t.clientSecret),await e.startClientLogin(t.clientId,t.clientSecret);break;case"jwt-bearer":await on(e,t);break;case"jwt-assertion":await sn(e,t);break}}async function Ra(e){let t=ha(async(r,n)=>{let o=new URL(r.url,"http://localhost:9615"),s=o.searchParams.get("code");if(r.method==="OPTIONS"){n.writeHead(200,{Allow:"GET, POST","Content-Type":Le.TEXT}),n.end("OK");return}if(o.pathname==="/"&&s)try{let i=await e.processCode(s,{clientId:Sn,redirectUri:Rn});n.writeHead(200,{"Content-Type":Le.TEXT}),n.end(`Signed in as ${da(i)}. You may close this window.`)}catch(i){n.writeHead(400,{"Content-Type":Le.TEXT}),n.end(`Error: ${fa(i)}`)}finally{t.close(),process.exit(0)}else n.writeHead(404,{"Content-Type":Le.TEXT}),n.end("Not found")}).listen(9615)}async function ba(e){let t=ya(),r;switch(t){case"openbsd":case"linux":r=`xdg-open '${e}'`;break;case"darwin":r=`open '${e}'`;break;case"win32":r=`cmd /c start "" "${e}"`;break;default:throw new Error("Unsupported platform: "+t)}await Ea(r)}function Aa(e){let t=e.getActiveLogin();t?(console.log(`Server: ${e.getBaseUrl()}`),console.log(`Profile: ${t.profile.display} (${t.profile.reference})`),console.log(`Project: ${t.project.display} (${t.project.reference})`)):console.log("Not logged in")}async function va(e,t){await Ra(e);let r=new URL(e.getAuthorizeUrl());r.searchParams.set("client_id",Sn),r.searchParams.set("redirect_uri",Rn),r.searchParams.set("scope",t.scope??"openid offline_access"),r.searchParams.set("response_type","code"),r.searchParams.set("prompt","login"),await ba(r.toString())}var he="\x1B[0m",Pa="\x1B[1m",Ia="\x1B[31m",Ca="\x1B[32m",Ta="\x1B[33m",Oa="\x1B[34m",Z={red:e=>`${Ia}${e}${he}`,green:e=>`${Ca}${e}${he}`,yellow:e=>`${Ta}${e}${he}`,blue:e=>`${Oa}${e}${he}`,bold:e=>`${Pa}${e}${he}`},Nt=e=>e.replaceAll(/\*\*(.*?)\*\*/g,(t,r)=>Z.bold(r));var gs=wr(Qt(),1);import{CloudFormationClient as fs,DescribeStackResourcesCommand as _u,DescribeStacksCommand as Fu,paginateListStacks as ju}from"@aws-sdk/client-cloudformation";import{CloudFrontClient as Bu,CreateInvalidationCommand as qu}from"@aws-sdk/client-cloudfront";import{ECSClient as Wu}from"@aws-sdk/client-ecs";import{S3Client as Gu}from"@aws-sdk/client-s3";import{GetParameterCommand as Ku,PutParameterCommand as Vu,SSMClient as Hu}from"@aws-sdk/client-ssm";import{GetCallerIdentityCommand as Ju,STSClient as Xu}from"@aws-sdk/client-sts";import{EMPTY as zu,normalizeErrorString as Yu}from"@medplum/core";import{readdirSync as Qu}from"node:fs";import Uu from"node:readline";var Xe;function ze(){Xe=Uu.createInterface({input:process.stdin,output:process.stdout})}function Ye(){Xe.close()}function c(e){Xe.write(e+`
|
|
5
5
|
`)}function v(e){c(`
|
|
@@ -26,5 +26,5 @@ PV1|1|I|2000^2012^01||||12345^DOCTOR^DOC||||||||||1234567^DOCTOR^DOC||AMB|||||||
|
|
|
26
26
|
`);console.log(r)}ri.description("Project you are currently on").action(async e=>{let r=(await R(e)).getActiveLogin();if(!r)throw new Error("Unauthenticated: run `npx medplum login` to login");console.log(`${r.project.display} (${r.project.reference})`)});ni.description("Switching to another project from the current one").argument("<projectId>").action(async(e,t)=>{let r=await R(t);await Xd(r,e)});oi.description("Invite a member to your current project (run npx medplum project current to confirm)").arguments("<firstName> <lastName> <email>").option("--send-email","If you want to send the email when inviting the user").option("--admin","If the user you are inviting is an admin").addOption(new Hd("-r, --role <role>","Role of user").choices(["Practitioner","Patient","RelatedPerson"]).default("Practitioner")).action(async(e,t,r,n)=>{let o=await R(n),s=o.getActiveLogin();if(!s)throw new Error("Unauthenticated: run `npx medplum login` to login");if(!s?.project?.reference)throw new Error("No current project to invite user to");let i=s.project.reference.split("/")[1],a={resourceType:n.role,firstName:e,lastName:t,email:r,sendEmail:!!n.sendEmail,admin:!!n.admin};await zd(i,a,o)});async function Xd(e,t){let n=e.getLogins().find(o=>o.project.reference?.includes(t));if(!n)throw new Error(`Project ${t} not found. Make sure you are added as a user to this project`);await e.setActiveLogin(n),console.log(`Switched to project ${t}
|
|
27
27
|
`)}async function zd(e,t,r){await r.invite(e,t),t.sendEmail&&console.log("Email sent"),console.log("See your users at https://app.medplum.com/admin/users")}import{convertToTransactionBundle as Yd}from"@medplum/core";var lr=new h("delete"),ur=new h("get"),pr=new h("patch"),dr=new h("post"),mr=new h("put");lr.argument("<url>","Resource/$id").action(async(e,t)=>{let r=await R(t);K(await r.delete(Ce(r,e)))});ur.argument("<url>","Resource/$id").option("--as-transaction","Print out the bundle as a transaction type").action(async(e,t)=>{let r=await R(t),n=await r.get(Ce(r,e));t.asTransaction?K(Yd(n)):K(n)});pr.arguments("<url> <body>").action(async(e,t,r)=>{let n=await R(r);K(await n.patch(Ce(n,e),fr(t)))});dr.arguments("<url> <body>").option("--prefer-async",'Sets the Prefer header to "respond-async"').action(async(e,t,r)=>{let n=await R(r),o=r.preferAsync?{Prefer:"respond-async"}:void 0;K(await n.post(Ce(n,e),fr(t),void 0,{headers:o}))});mr.arguments("<url> <body>").action(async(e,t,r)=>{let n=await R(r);K(await n.put(Ce(n,e),fr(t)))});function fr(e){if(e)try{return JSON.parse(e)}catch{return e}}function Ce(e,t){return["admin/","auth/","fhir/R4"].some(n=>t.startsWith(n))?t:e.fhirUrl(t).toString()}async function tm(e){let t=new h("medplum").description("Command to access Medplum CLI").option("--client-id <clientId>","FHIR server client id").option("--client-secret <clientSecret>","FHIR server client secret").option("--base-url <baseUrl>","FHIR server base URL, must be absolute").option("--token-url <tokenUrl>","FHIR server token URL, absolute or relative to base URL").option("--authorize-url <authorizeUrl>","FHIR server authorize URL, absolute or relative to base URL").option("--fhir-url, --fhir-url-path <fhirUrlPath>","FHIR server URL, absolute or relative to base URL").option("--scope <scope>",'OAuth scope (e.g., "openid offline_access")').option("--access-token <accessToken>","Access token for token exchange authentication").option("--callback-url <callbackUrl>","Callback URL for authorization code flow").option("--subject <subject>","Subject for JWT authentication").option("--audience <audience>","Audience for JWT authentication").option("--issuer <issuer>","Issuer for JWT authentication").option("--private-key-path <privateKeyPath>","Private key path for JWT assertion").option("-p, --profile <profile>","Profile name").option("-v --verbose","Verbose output").addOption(new Zd("--auth-type <authType>","Type of authentication").choices(["basic","client-credentials","authorization-code","jwt-bearer","token-exchange","jwt-assertion"])).on("option:verbose",()=>{process.env.VERBOSE="1"});t.exitOverride(),t.version(Qd),t.configureHelp({showGlobalOptions:!0}),y(t,Tt),y(t,Ot),y(t,$t),y(t,ur),y(t,dr),y(t,pr),y(t,mr),y(t,lr),y(t,ue),y(t,at),y(t,ve),y(t,H),y(t,tr),y(t,rr),y(t,nr),y(t,le),y(t,Ns()),y(t,lt),y(t,ir);try{await t.parseAsync(e)}catch(r){rm(r)}}function rm(e){let t=1,r=!0;if(e instanceof si&&(process.env.VERBOSE||(r=!1),t=e.exitCode),t!==0&&r){gr(e,!!process.env.VERBOSE);let n=e.cause;if(process.env.VERBOSE)if(Array.isArray(n))for(let o of n)gr(o,!0);else n instanceof Error&&gr(n,!0)}process.exit(t)}function gr(e,t=!1){if(t){console.error(e);return}e instanceof si?process.stderr.write(`${hr(e)}
|
|
28
28
|
`):process.stderr.write(`Error: ${hr(e)}
|
|
29
|
-
`)}async function nm(){em.
|
|
29
|
+
`)}async function nm(){em(".env")&&process.loadEnvFile(),await tm(process.argv)}import.meta.main&&nm().catch(e=>{console.error("Unhandled error:",hr(e)),process.exit(1)});export{rm as handleError,tm as main,nm as run};
|
|
30
30
|
//# sourceMappingURL=index.mjs.map
|