@stacksjs/rpx 0.9.1 → 0.10.0
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/README.md +26 -12
- package/dist/bin/cli.js +7 -7
- package/dist/{chunk-45dw2f5f.js → chunk-1j93wxbr.js} +1 -1
- package/dist/chunk-1rkjbws7.js +60 -0
- package/dist/{chunk-e794mmrn.js → chunk-7am1svx0.js} +1 -1
- package/dist/{chunk-2y0c08hn.js → chunk-ny83tnrp.js} +3 -3
- package/dist/chunk-zxymjc5f.js +45 -0
- package/dist/config.d.ts +3 -3
- package/dist/https.d.ts +8 -8
- package/dist/process-manager.d.ts +152 -0
- package/dist/src/index.js +1 -1
- package/dist/start.d.ts +90 -8
- package/dist/types.d.ts +23 -21
- package/dist/utils.d.ts +7 -6
- package/package.json +22 -17
- package/dist/chunk-9v712d8y.js +0 -45
- package/dist/chunk-en36kajt.js +0 -24
- package/dist/chunk-wn28gp4d.js +0 -37
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{createRequire as k}from"node:module";var g=Object.create;var{getPrototypeOf:h,defineProperty:f,getOwnPropertyNames:i}=Object;var j=Object.prototype.hasOwnProperty;var l=(a,b,c)=>{c=a!=null?g(h(a)):{};let d=b||!a||!a.__esModule?f(c,"default",{value:a,enumerable:!0}):c;for(let e of i(a))if(!j.call(d,e))f(d,e,{get:()=>a[e],enumerable:!0});return d};var m=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var o=k(import.meta.url);
|
|
2
|
-
export{l as
|
|
2
|
+
export{l as N,m as O,o as P};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{N as q,P as X}from"./chunk-7am1svx0.js";import{createRequire as J}from"node:module";import{formatWithOptions as iD}from"node:util";import{sep as nD}from"node:path";import*as b from"node:tty";import g from"node:process";var DD=Object.create,{getPrototypeOf:uD,defineProperty:N,getOwnPropertyNames:tD}=Object,FD=Object.prototype.hasOwnProperty,HD=(u,t,e)=>{e=u!=null?DD(uD(u)):{};let F=t||!u||!u.__esModule?N(e,"default",{value:u,enumerable:!0}):e;for(let r of tD(u))if(!FD.call(F,r))N(F,r,{get:()=>u[r],enumerable:!0});return F},KD=(u,t)=>()=>(t||u((t={exports:{}}).exports,t),t.exports),QD=J(import.meta.url),n={silent:Number.NEGATIVE_INFINITY,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose:Number.POSITIVE_INFINITY},M={silent:{level:-1},fatal:{level:n.fatal},error:{level:n.error},warn:{level:n.warn},log:{level:n.log},info:{level:n.info},success:{level:n.success},fail:{level:n.fail},ready:{level:n.info},start:{level:n.info},box:{level:n.info},debug:{level:n.debug},trace:{level:n.trace},verbose:{level:n.verbose}};function L(u){return u!==null&&typeof u==="object"}function O(u,t,e=".",F){if(!L(t))return O(u,{},e,F);let r=Object.assign({},t);for(let o in u){if(o==="__proto__"||o==="constructor")continue;let D=u[o];if(D===null||D===void 0)continue;if(F&&F(r,o,D,e))continue;if(Array.isArray(D)&&Array.isArray(r[o]))r[o]=[...D,...r[o]];else if(L(D)&&L(r[o]))r[o]=O(D,r[o],(e?`${e}.`:"")+o.toString(),F);else r[o]=D}return r}function eD(u){return(...t)=>t.reduce((e,F)=>O(e,F,"",u),{})}var rD=eD();function oD(u){return Object.prototype.toString.call(u)==="[object Object]"}function CD(u){if(!oD(u))return!1;if(!u.message&&!u.args)return!1;if(u.stack)return!1;return!0}var T=!1,U=[];class i{constructor(u={}){let t=u.types||M;this.options=rD({...u,defaults:{...u.defaults},level:S(u.level,t),reporters:[...u.reporters||[]]},{types:M,throttle:1000,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(let e in t){let F={type:e,...this.options.defaults,...t[e]};this[e]=this._wrapLogFn(F),this[e].raw=this._wrapLogFn(F,!0)}if(this.options.mockFn)this.mockTypes();this._lastLog={}}get level(){return this.options.level}set level(u){this.options.level=S(u,this.options.types,this.options.level)}prompt(u,t){if(!this.options.prompt)throw new Error("prompt is not supported!");return this.options.prompt(u,t)}create(u){let t=new i({...this.options,...u});if(this._mockFn)t.mockTypes(this._mockFn);return t}withDefaults(u){return this.create({...this.options,defaults:{...this.options.defaults,...u}})}withTag(u){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+":"+u:u})}addReporter(u){return this.options.reporters.push(u),this}removeReporter(u){if(u){let t=this.options.reporters.indexOf(u);if(t>=0)return this.options.reporters.splice(t,1)}else this.options.reporters.splice(0);return this}setReporters(u){return this.options.reporters=Array.isArray(u)?u:[u],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(let u in this.options.types){if(!console["__"+u])console["__"+u]=console[u];console[u]=this[u].raw}}restoreConsole(){for(let u in this.options.types)if(console["__"+u])console[u]=console["__"+u],delete console["__"+u]}wrapStd(){this._wrapStream(this.options.stdout,"log"),this._wrapStream(this.options.stderr,"log")}_wrapStream(u,t){if(!u)return;if(!u.__write)u.__write=u.write;u.write=(e)=>{this[t].raw(String(e).trim())}}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(u){if(!u)return;if(u.__write)u.write=u.__write,delete u.__write}pauseLogs(){T=!0}resumeLogs(){T=!1;let u=U.splice(0);for(let t of u)t[0]._logFn(t[1],t[2])}mockTypes(u){let t=u||this.options.mockFn;if(this._mockFn=t,typeof t!=="function")return;for(let e in this.options.types)this[e]=t(e,this.options.types[e])||this[e],this[e].raw=this[e]}_wrapLogFn(u,t){return(...e)=>{if(T){U.push([this,u,e,t]);return}return this._logFn(u,e,t)}}_logFn(u,t,e){if((u.level||0)>this.level)return!1;let F={date:new Date,args:[],...u,level:S(u.level,this.options.types)};if(!e&&t.length===1&&CD(t[0]))Object.assign(F,t[0]);else F.args=[...t];if(F.message)F.args.unshift(F.message),delete F.message;if(F.additional){if(!Array.isArray(F.additional))F.additional=F.additional.split(`
|
|
2
2
|
`);F.args.push(`
|
|
3
3
|
`+F.additional.join(`
|
|
4
4
|
`)),delete F.additional}F.type=typeof F.type==="string"?F.type.toLowerCase():"log",F.tag=typeof F.tag==="string"?F.tag:"";let r=(D=!1)=>{let E=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&E>0){let p=[...this._lastLog.object.args];if(E>1)p.push(`(repeated ${E} times)`);this._log({...this._lastLog.object,args:p}),this._lastLog.count=1}if(D)this._lastLog.object=F,this._log(F)};clearTimeout(this._lastLog.timeout);let o=this._lastLog.time&&F.date?F.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=F.date,o<this.options.throttle)try{let D=JSON.stringify([F.type,F.tag,F.args]),E=this._lastLog.serialized===D;if(this._lastLog.serialized=D,E){if(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin){this._lastLog.timeout=setTimeout(r,this.options.throttle);return}}}catch{}r(!0)}_log(u){for(let t of this.options.reporters)t.log(u,{options:this.options})}}function S(u,t={},e=3){if(u===void 0)return e;if(typeof u==="number")return u;if(t[u]&&t[u].level!==void 0)return t[u].level;return e}i.prototype.add=i.prototype.addReporter;i.prototype.remove=i.prototype.removeReporter;i.prototype.clear=i.prototype.removeReporter;i.prototype.withScope=i.prototype.withTag;i.prototype.mock=i.prototype.mockTypes;i.prototype.pause=i.prototype.pauseLogs;i.prototype.resume=i.prototype.resumeLogs;function ED(u={}){return new i(u)}function j(u){let t=process.cwd()+nD;return u.split(`
|
|
@@ -20,5 +20,5 @@ import{P as q,R as X}from"./chunk-e794mmrn.js";import{createRequire as J}from"no
|
|
|
20
20
|
`+F.join(`
|
|
21
21
|
`):""),u.type==="trace"){let s=new Error("Trace: "+u.message);l+=this.formatStack(s.stack||"")}return D?`
|
|
22
22
|
`+l+`
|
|
23
|
-
`:l}}function v(u){return u.replace(/`([^`]+)`/gm,(t,e)=>B.cyan(e)).replace(/\s+_([^_]+)_\s+/gm,(t,e)=>` ${B.underline(e)} `)}function WD(u="white"){return B[u]||B.white}function YD(u="bgWhite"){return B[`bg${u[0].toUpperCase()}${u.slice(1)}`]||B.bgWhite}function VD(u={}){let t=ZD();if(process.env.CONSOLA_LEVEL)t=Number.parseInt(process.env.CONSOLA_LEVEL)??t;return ED({level:t,defaults:{level:t},stdout:process.stdout,stderr:process.stderr,prompt:(...e)=>import("./chunk-
|
|
24
|
-
export{HD as
|
|
23
|
+
`:l}}function v(u){return u.replace(/`([^`]+)`/gm,(t,e)=>B.cyan(e)).replace(/\s+_([^_]+)_\s+/gm,(t,e)=>` ${B.underline(e)} `)}function WD(u="white"){return B[u]||B.white}function YD(u="bgWhite"){return B[`bg${u[0].toUpperCase()}${u.slice(1)}`]||B.bgWhite}function VD(u={}){let t=ZD();if(process.env.CONSOLA_LEVEL)t=Number.parseInt(process.env.CONSOLA_LEVEL)??t;return ED({level:t,defaults:{level:t},stdout:process.stdout,stderr:process.stderr,prompt:(...e)=>import("./chunk-1j93wxbr.js").then((F)=>F.prompt(...e)),reporters:u.reporters||[u.fancy??!(TD||Z)?new H:new w],...u})}function ZD(){if(SD)return n.debug;if(Z)return n.warn;return n.info}var uu=VD();
|
|
24
|
+
export{HD as G,KD as H,QD as I,B as J,ND as K,PD as L,uu as M};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import"./chunk-7am1svx0.js";import m,{stdin as iD,stdout as sD}from"node:process";import V from"node:readline";import{WriteStream as CD}from"node:tty";function nD(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _,I;function aD(){if(I)return _;I=1;let e="\x1B",u=`${e}[`,t="\x07",r={to(D,C){if(!C)return`${u}${D+1}G`;return`${u}${C+1};${D+1}H`},move(D,C){let s="";if(D<0)s+=`${u}${-D}D`;else if(D>0)s+=`${u}${D}C`;if(C<0)s+=`${u}${-C}A`;else if(C>0)s+=`${u}${C}B`;return s},up:(D=1)=>`${u}${D}A`,down:(D=1)=>`${u}${D}B`,forward:(D=1)=>`${u}${D}C`,backward:(D=1)=>`${u}${D}D`,nextLine:(D=1)=>`${u}E`.repeat(D),prevLine:(D=1)=>`${u}F`.repeat(D),left:`${u}G`,hide:`${u}?25l`,show:`${u}?25h`,save:`${e}7`,restore:`${e}8`},F={up:(D=1)=>`${u}S`.repeat(D),down:(D=1)=>`${u}T`.repeat(D)},n={screen:`${u}2J`,up:(D=1)=>`${u}1J`.repeat(D),down:(D=1)=>`${u}J`.repeat(D),line:`${u}2K`,lineEnd:`${u}K`,lineStart:`${u}1K`,lines(D){let C="";for(let s=0;s<D;s++)C+=this.line+(s<D-1?r.up():"");if(D)C+=r.left;return C}};return _={cursor:r,scroll:F,erase:n,beep:t},_}var p=aD(),$={exports:{}},W;function oD(){if(W)return $.exports;W=1;let e=process||{},u=e.argv||[],t=e.env||{},r=!(!!t.NO_COLOR||u.includes("--no-color"))&&(!!t.FORCE_COLOR||u.includes("--color")||e.platform==="win32"||(e.stdout||{}).isTTY&&t.TERM!=="dumb"||!!t.CI),F=(C,s,o=C)=>(c)=>{let a=""+c,h=a.indexOf(s,C.length);return~h?C+n(a,s,o,h)+s:C+a+s},n=(C,s,o,c)=>{let a="",h=0;do a+=C.substring(h,c)+o,h=c+s.length,c=C.indexOf(s,h);while(~c);return a+C.substring(h)},D=(C=r)=>{let s=C?F:()=>String;return{isColorSupported:C,reset:s("\x1B[0m","\x1B[0m"),bold:s("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:s("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:s("\x1B[3m","\x1B[23m"),underline:s("\x1B[4m","\x1B[24m"),inverse:s("\x1B[7m","\x1B[27m"),hidden:s("\x1B[8m","\x1B[28m"),strikethrough:s("\x1B[9m","\x1B[29m"),black:s("\x1B[30m","\x1B[39m"),red:s("\x1B[31m","\x1B[39m"),green:s("\x1B[32m","\x1B[39m"),yellow:s("\x1B[33m","\x1B[39m"),blue:s("\x1B[34m","\x1B[39m"),magenta:s("\x1B[35m","\x1B[39m"),cyan:s("\x1B[36m","\x1B[39m"),white:s("\x1B[37m","\x1B[39m"),gray:s("\x1B[90m","\x1B[39m"),bgBlack:s("\x1B[40m","\x1B[49m"),bgRed:s("\x1B[41m","\x1B[49m"),bgGreen:s("\x1B[42m","\x1B[49m"),bgYellow:s("\x1B[43m","\x1B[49m"),bgBlue:s("\x1B[44m","\x1B[49m"),bgMagenta:s("\x1B[45m","\x1B[49m"),bgCyan:s("\x1B[46m","\x1B[49m"),bgWhite:s("\x1B[47m","\x1B[49m"),blackBright:s("\x1B[90m","\x1B[39m"),redBright:s("\x1B[91m","\x1B[39m"),greenBright:s("\x1B[92m","\x1B[39m"),yellowBright:s("\x1B[93m","\x1B[39m"),blueBright:s("\x1B[94m","\x1B[39m"),magentaBright:s("\x1B[95m","\x1B[39m"),cyanBright:s("\x1B[96m","\x1B[39m"),whiteBright:s("\x1B[97m","\x1B[39m"),bgBlackBright:s("\x1B[100m","\x1B[49m"),bgRedBright:s("\x1B[101m","\x1B[49m"),bgGreenBright:s("\x1B[102m","\x1B[49m"),bgYellowBright:s("\x1B[103m","\x1B[49m"),bgBlueBright:s("\x1B[104m","\x1B[49m"),bgMagentaBright:s("\x1B[105m","\x1B[49m"),bgCyanBright:s("\x1B[106m","\x1B[49m"),bgWhiteBright:s("\x1B[107m","\x1B[49m")}};return $.exports=D(),$.exports.createColors=D,$.exports}var ED=oD(),i=nD(ED);function lD({onlyFirst:e=!1}={}){let u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(u,e?void 0:"g")}var cD=lD();function Z(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(cD,"")}function H(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var X={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(r){var F=r.charCodeAt(0),n=r.length==2?r.charCodeAt(1):0,D=F;return 55296<=F&&F<=56319&&56320<=n&&n<=57343&&(F&=1023,n&=1023,D=F<<10|n,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(r){var F=this.eastAsianWidth(r);return F=="F"||F=="W"||F=="A"?2:1};function t(r){return r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(r){for(var F=t(r),n=0,D=0;D<F.length;D++)n=n+this.characterLength(F[D]);return n},u.slice=function(r,F,n){textLen=u.length(r),F=F||0,n=n||1,F<0&&(F=textLen+F),n<0&&(n=textLen+n);for(var D="",C=0,s=t(r),o=0;o<s.length;o++){var c=s[o],a=u.length(c);if(C>=F-(a==2?1:0))if(C+a<=n)D+=c;else break;C+=a}return D}})(X);var hD=X.exports,BD=H(hD),mD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},pD=H(mD);function A(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=Z(e),e.length===0))return 0;e=e.replace(pD()," ");let t=u.ambiguousIsNarrow?1:2,r=0;for(let F of e){let n=F.codePointAt(0);if(n<=31||n>=127&&n<=159||n>=768&&n<=879)continue;switch(BD.eastAsianWidth(F)){case"F":case"W":r+=2;break;case"A":r+=t;break;default:r+=1}}return r}var k=10,P=(e=0)=>(u)=>`\x1B[${u+e}m`,L=(e=0)=>(u)=>`\x1B[${38+e};5;${u}m`,N=(e=0)=>(u,t,r)=>`\x1B[${38+e};2;${u};${t};${r}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(l.modifier);var bD=Object.keys(l.color),dD=Object.keys(l.bgColor);[...bD];function gD(){let e=new Map;for(let[u,t]of Object.entries(l)){for(let[r,F]of Object.entries(t))l[r]={open:`\x1B[${F[0]}m`,close:`\x1B[${F[1]}m`},t[r]=l[r],e.set(F[0],F[1]);Object.defineProperty(l,u,{value:t,enumerable:!1})}return Object.defineProperty(l,"codes",{value:e,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=P(),l.color.ansi256=L(),l.color.ansi16m=N(),l.bgColor.ansi=P(k),l.bgColor.ansi256=L(k),l.bgColor.ansi16m=N(k),Object.defineProperties(l,{rgbToAnsi256:{value:(u,t,r)=>u===t&&t===r?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5),enumerable:!1},hexToRgb:{value:(u)=>{let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!t)return[0,0,0];let[r]=t;r.length===3&&(r=[...r].map((n)=>n+n).join(""));let F=Number.parseInt(r,16);return[F>>16&255,F>>8&255,F&255]},enumerable:!1},hexToAnsi256:{value:(u)=>l.rgbToAnsi256(...l.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:(u)=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,r,F;if(u>=232)t=((u-232)*10+8)/255,r=t,F=t;else{u-=16;let C=u%36;t=Math.floor(u/36)/5,r=Math.floor(C/6)/5,F=C%6/5}let n=Math.max(t,r,F)*2;if(n===0)return 30;let D=30+(Math.round(F)<<2|Math.round(r)<<1|Math.round(t));return n===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,t,r)=>l.ansi256ToAnsi(l.rgbToAnsi256(u,t,r)),enumerable:!1},hexToAnsi:{value:(u)=>l.ansi256ToAnsi(l.hexToAnsi256(u)),enumerable:!1}}),l}var AD=gD(),y=new Set(["\x1B",""]),fD=39,O="\x07",Q="[",$D="]",DD="m",R=`${$D}8;;`,q=(e)=>`${y.values().next().value}${Q}${e}${DD}`,G=(e)=>`${y.values().next().value}${R}${e}${O}`,vD=(e)=>e.split(" ").map((u)=>A(u)),M=(e,u,t)=>{let r=[...u],F=!1,n=!1,D=A(Z(e[e.length-1]));for(let[C,s]of r.entries()){let o=A(s);if(D+o<=t?e[e.length-1]+=s:(e.push(s),D=0),y.has(s)&&(F=!0,n=r.slice(C+1).join("").startsWith(R)),F){n?s===O&&(F=!1,n=!1):s===DD&&(F=!1);continue}D+=o,D===t&&C<r.length-1&&(e.push(""),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},xD=(e)=>{let u=e.split(" "),t=u.length;for(;t>0&&!(A(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(" ")+u.slice(t).join("")},yD=(e,u,t={})=>{if(t.trim!==!1&&e.trim()==="")return"";let r="",F,n,D=vD(e),C=[""];for(let[o,c]of e.split(" ").entries()){t.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let a=A(C[C.length-1]);if(o!==0&&(a>=u&&(t.wordWrap===!1||t.trim===!1)&&(C.push(""),a=0),(a>0||t.trim===!1)&&(C[C.length-1]+=" ",a++)),t.hard&&D[o]>u){let h=u-a,d=1+Math.floor((D[o]-h-1)/u);Math.floor((D[o]-1)/u)<d&&C.push(""),M(C,c,u);continue}if(a+D[o]>u&&a>0&&D[o]>0){if(t.wordWrap===!1&&a<u){M(C,c,u);continue}C.push("")}if(a+D[o]>u&&t.wordWrap===!1){M(C,c,u);continue}C[C.length-1]+=c}t.trim!==!1&&(C=C.map((o)=>xD(o)));let s=[...C.join(`
|
|
2
|
+
`)];for(let[o,c]of s.entries()){if(r+=c,y.has(c)){let{groups:h}=new RegExp(`(?:\\${Q}(?<code>\\d+)m|\\${R}(?<uri>.*)${O})`).exec(s.slice(o).join(""))||{groups:{}};if(h.code!==void 0){let d=Number.parseFloat(h.code);F=d===fD?void 0:d}else h.uri!==void 0&&(n=h.uri.length===0?void 0:h.uri)}let a=AD.codes.get(Number(F));s[o+1]===`
|
|
3
|
+
`?(n&&(r+=G("")),F&&a&&(r+=q(a))):c===`
|
|
4
|
+
`&&(F&&a&&(r+=q(F)),n&&(r+=G(n)))}return r};function z(e,u,t){return String(e).normalize().replace(/\r\n/g,`
|
|
5
|
+
`).split(`
|
|
6
|
+
`).map((r)=>yD(r,u,t)).join(`
|
|
7
|
+
`)}var wD=["up","down","left","right","space","enter","cancel"],x={actions:new Set(wD),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]])};function uD(e,u){if(typeof e=="string")return x.aliases.get(e)===u;for(let t of e)if(t!==void 0&&uD(t,u))return!0;return!1}function _D(e,u){if(e===u)return;let t=e.split(`
|
|
8
|
+
`),r=u.split(`
|
|
9
|
+
`),F=[];for(let n=0;n<Math.max(t.length,r.length);n++)t[n]!==r[n]&&F.push(n);return F}globalThis.process.platform.startsWith("win");var K=Symbol("clack:cancel");function v(e,u){let t=e;t.isTTY&&t.setRawMode(u)}var kD=Object.defineProperty,MD=(e,u,t)=>(u in e)?kD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,B=(e,u,t)=>(MD(e,typeof u!="symbol"?u+"":u,t),t);class f{constructor(e,u=!0){B(this,"input"),B(this,"output"),B(this,"_abortSignal"),B(this,"rl"),B(this,"opts"),B(this,"_render"),B(this,"_track",!1),B(this,"_prevFrame",""),B(this,"_subscribers",new Map),B(this,"_cursor",0),B(this,"state","initial"),B(this,"error",""),B(this,"value");let{input:t=iD,output:r=sD,render:F,signal:n,...D}=e;this.opts=D,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=F.bind(this),this._track=u,this._abortSignal=n,this.input=t,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(e,u){let t=this._subscribers.get(e)??[];t.push(u),this._subscribers.set(e,t)}on(e,u){this.setSubscriber(e,{cb:u})}once(e,u){this.setSubscriber(e,{cb:u,once:!0})}emit(e,...u){let t=this._subscribers.get(e)??[],r=[];for(let F of t)F.cb(...u),F.once&&r.push(()=>t.splice(t.indexOf(F),1));for(let F of r)F()}prompt(){return new Promise((e,u)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(K);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let t=new CD(0);t._write=(r,F,n)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),n()},this.input.pipe(t),this.rl=V.createInterface({input:this.input,output:t,tabSize:2,prompt:"",escapeCodeTimeout:50}),V.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),v(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(p.cursor.show),this.output.off("resize",this.render),v(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(p.cursor.show),this.output.off("resize",this.render),v(this.input,!1),e(K)})})}onKeypress(e,u){if(this.state==="error"&&(this.state="active"),u?.name&&(!this._track&&x.aliases.has(u.name)&&this.emit("cursor",x.aliases.get(u.name)),x.actions.has(u.name)&&this.emit("cursor",u.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),e==="\t"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),e&&this.emit("key",e.toLowerCase()),u?.name==="return"){if(this.opts.validate){let t=this.opts.validate(this.value);t&&(this.error=t instanceof Error?t.message:t,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}uD([e,u?.name,u?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
10
|
+
`),v(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=z(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
11
|
+
`).length-1;this.output.write(p.cursor.move(-999,e*-1))}render(){let e=z(this._render(this)??"",process.stdout.columns,{hard:!0});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(p.cursor.hide);else{let u=_D(this._prevFrame,e);if(this.restoreCursor(),u&&u?.length===1){let t=u[0];this.output.write(p.cursor.move(0,t)),this.output.write(p.erase.lines(1));let r=e.split(`
|
|
12
|
+
`);this.output.write(r[t]),this._prevFrame=e,this.output.write(p.cursor.move(0,r.length-t-1));return}if(u&&u?.length>1){let t=u[0];this.output.write(p.cursor.move(0,t)),this.output.write(p.erase.down());let r=e.split(`
|
|
13
|
+
`).slice(t);this.output.write(r.join(`
|
|
14
|
+
`)),this._prevFrame=e;return}this.output.write(p.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}}class eD extends f{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(u)=>{this.output.write(p.cursor.move(0,-1)),this.value=u,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var SD=Object.defineProperty,TD=(e,u,t)=>(u in e)?SD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,Y=(e,u,t)=>(TD(e,typeof u!="symbol"?u+"":u,t),t),jD=class extends f{constructor(e){super(e,!1),Y(this,"options"),Y(this,"cursor",0),this.options=e.options,this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:u})=>u===e.cursorAt),0),this.on("key",(u)=>{u==="a"&&this.toggleAll()}),this.on("cursor",(u)=>{switch(u){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let e=this.value.length===this.options.length;this.value=e?[]:this.options.map((u)=>u.value)}toggleValue(){let e=this.value.includes(this._value);this.value=e?this.value.filter((u)=>u!==this._value):[...this.value,this._value]}},OD=Object.defineProperty,RD=(e,u,t)=>(u in e)?OD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,J=(e,u,t)=>(RD(e,typeof u!="symbol"?u+"":u,t),t);class tD extends f{constructor(e){super(e,!1),J(this,"options"),J(this,"cursor",0),this.options=e.options,this.cursor=this.options.findIndex(({value:u})=>u===e.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(u)=>{switch(u){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class rD extends f{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}█`;let e=this.value.slice(0,this.cursor),[u,...t]=this.value.slice(this.cursor);return`${e}${i.inverse(u)}${t.join("")}`}get cursor(){return this._cursor}constructor(e){super(e),this.on("finalize",()=>{this.value||(this.value=e.defaultValue)})}}function VD(){return m.platform!=="win32"?m.env.TERM!=="linux":!!m.env.CI||!!m.env.WT_SESSION||!!m.env.TERMINUS_SUBLIME||m.env.ConEmuTask==="{cmd::Cmder}"||m.env.TERM_PROGRAM==="Terminus-Sublime"||m.env.TERM_PROGRAM==="vscode"||m.env.TERM==="xterm-256color"||m.env.TERM==="alacritty"||m.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var ID=VD(),b=(e,u)=>ID?e:u,WD=b("❯",">"),PD=b("■","x"),LD=b("▲","x"),ND=b("✔","√"),E=b(""),g=b(""),S=b("●",">"),T=b("○"," "),qD=b("◻","[•]"),U=b("◼","[+]"),GD=b("◻","[ ]"),w=(e)=>{switch(e){case"initial":case"active":return i.cyan(WD);case"cancel":return i.red(PD);case"error":return i.yellow(LD);case"submit":return i.green(ND)}},j=(e)=>{let{cursor:u,options:t,style:r}=e,F=e.maxItems??Number.POSITIVE_INFINITY,n=Math.max(process.stdout.rows-4,0),D=Math.min(n,Math.max(F,5)),C=0;u>=C+D-3?C=Math.max(Math.min(u-D+3,t.length-D),0):u<C+2&&(C=Math.max(u-2,0));let s=D<t.length&&C>0,o=D<t.length&&C+D<t.length;return t.slice(C,C+D).map((c,a,h)=>{let d=a===0&&s,FD=a===h.length-1&&o;return d||FD?i.dim("..."):r(c,a+C===u)})},zD=(e)=>new rD({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,render(){let u=`${i.gray(E)}
|
|
15
|
+
${w(this.state)} ${e.message}
|
|
16
|
+
`,t=e.placeholder?i.inverse(e.placeholder[0])+i.dim(e.placeholder.slice(1)):i.inverse(i.hidden("_")),r=this.value?this.valueWithCursor:t;switch(this.state){case"error":return`${u.trim()}
|
|
17
|
+
${i.yellow(E)} ${r}
|
|
18
|
+
${i.yellow(g)} ${i.yellow(this.error)}
|
|
19
|
+
`;case"submit":return`${u}${i.gray(E)} ${i.dim(this.value||e.placeholder)}`;case"cancel":return`${u}${i.gray(E)} ${i.strikethrough(i.dim(this.value??""))}${this.value?.trim()?`
|
|
20
|
+
${i.gray(E)}`:""}`;default:return`${u}${i.cyan(E)} ${r}
|
|
21
|
+
${i.cyan(g)}
|
|
22
|
+
`}}}).prompt(),KD=(e)=>{let u=e.active??"Yes",t=e.inactive??"No";return new eD({active:u,inactive:t,initialValue:e.initialValue??!0,render(){let r=`${i.gray(E)}
|
|
23
|
+
${w(this.state)} ${e.message}
|
|
24
|
+
`,F=this.value?u:t;switch(this.state){case"submit":return`${r}${i.gray(E)} ${i.dim(F)}`;case"cancel":return`${r}${i.gray(E)} ${i.strikethrough(i.dim(F))}
|
|
25
|
+
${i.gray(E)}`;default:return`${r}${i.cyan(E)} ${this.value?`${i.green(S)} ${u}`:`${i.dim(T)} ${i.dim(u)}`} ${i.dim("/")} ${this.value?`${i.dim(T)} ${i.dim(t)}`:`${i.green(S)} ${t}`}
|
|
26
|
+
${i.cyan(g)}
|
|
27
|
+
`}}}).prompt()},YD=(e)=>{let u=(t,r)=>{let F=t.label??String(t.value);switch(r){case"selected":return`${i.dim(F)}`;case"active":return`${i.green(S)} ${F} ${t.hint?i.dim(`(${t.hint})`):""}`;case"cancelled":return`${i.strikethrough(i.dim(F))}`;default:return`${i.dim(T)} ${i.dim(F)}`}};return new tD({options:e.options,initialValue:e.initialValue,render(){let t=`${i.gray(E)}
|
|
28
|
+
${w(this.state)} ${e.message}
|
|
29
|
+
`;switch(this.state){case"submit":return`${t}${i.gray(E)} ${u(this.options[this.cursor],"selected")}`;case"cancel":return`${t}${i.gray(E)} ${u(this.options[this.cursor],"cancelled")}
|
|
30
|
+
${i.gray(E)}`;default:return`${t}${i.cyan(E)} ${j({cursor:this.cursor,options:this.options,maxItems:e.maxItems,style:(r,F)=>u(r,F?"active":"inactive")}).join(`
|
|
31
|
+
${i.cyan(E)} `)}
|
|
32
|
+
${i.cyan(g)}
|
|
33
|
+
`}}}).prompt()},JD=(e)=>{let u=(t,r)=>{let F=t.label??String(t.value);return r==="active"?`${i.cyan(qD)} ${F} ${t.hint?i.dim(`(${t.hint})`):""}`:r==="selected"?`${i.green(U)} ${i.dim(F)}`:r==="cancelled"?`${i.strikethrough(i.dim(F))}`:r==="active-selected"?`${i.green(U)} ${F} ${t.hint?i.dim(`(${t.hint})`):""}`:r==="submitted"?`${i.dim(F)}`:`${i.dim(GD)} ${i.dim(F)}`};return new jD({options:e.options,initialValues:e.initialValues,required:e.required??!0,cursorAt:e.cursorAt,validate(t){if(this.required&&t.length===0)return`Please select at least one option.
|
|
34
|
+
${i.reset(i.dim(`Press ${i.gray(i.bgWhite(i.inverse(" space ")))} to select, ${i.gray(i.bgWhite(i.inverse(" enter ")))} to submit`))}`},render(){let t=`${i.gray(E)}
|
|
35
|
+
${w(this.state)} ${e.message}
|
|
36
|
+
`,r=(F,n)=>{let D=this.value.includes(F.value);return n&&D?u(F,"active-selected"):D?u(F,"selected"):u(F,n?"active":"inactive")};switch(this.state){case"submit":return`${t}${i.gray(E)} ${this.options.filter(({value:F})=>this.value.includes(F)).map((F)=>u(F,"submitted")).join(i.dim(", "))||i.dim("none")}`;case"cancel":{let F=this.options.filter(({value:n})=>this.value.includes(n)).map((n)=>u(n,"cancelled")).join(i.dim(", "));return`${t}${i.gray(E)} ${F.trim()?`${F}
|
|
37
|
+
${i.gray(E)}`:""}`}case"error":{let F=this.error.split(`
|
|
38
|
+
`).map((n,D)=>D===0?`${i.yellow(g)} ${i.yellow(n)}`:` ${n}`).join(`
|
|
39
|
+
`);return`${t+i.yellow(E)} ${j({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:r}).join(`
|
|
40
|
+
${i.yellow(E)} `)}
|
|
41
|
+
${F}
|
|
42
|
+
`}default:return`${t}${i.cyan(E)} ${j({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:r}).join(`
|
|
43
|
+
${i.cyan(E)} `)}
|
|
44
|
+
${i.cyan(g)}
|
|
45
|
+
`}}}).prompt()},UD=Symbol.for("cancel");async function ZD(e,u={}){let t=(r)=>{if(typeof r!=="symbol"||r.toString()!=="Symbol(clack:cancel)")return r;switch(u.cancel){case"reject":{let F=new Error("Prompt cancelled.");if(F.name="ConsolaPromptCancelledError",Error.captureStackTrace)Error.captureStackTrace(F,ZD);throw F}case"undefined":return;case"null":return null;case"symbol":return UD;default:case"default":return u.default??u.initial}};if(!u.type||u.type==="text")return await zD({message:e,defaultValue:u.default,placeholder:u.placeholder,initialValue:u.initial}).then(t);if(u.type==="confirm")return await KD({message:e,initialValue:u.initial}).then(t);if(u.type==="select")return await YD({message:e,options:u.options.map((r)=>typeof r==="string"?{value:r,label:r}:r),initialValue:u.initial}).then(t);if(u.type==="multiselect")return await JD({message:e,options:u.options.map((r)=>typeof r==="string"?{value:r,label:r}:r),required:u.required,initialValues:u.initial}).then(t);throw new Error(`Unknown prompt type: ${u.type}`)}export{ZD as prompt,UD as kCancel};
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProxyConfig } from './types';
|
|
2
2
|
|
|
3
|
-
export declare const defaultConfig:
|
|
4
|
-
export declare const config:
|
|
3
|
+
export declare const defaultConfig: ProxyConfig;
|
|
4
|
+
export declare const config: ProxyConfig;
|
package/dist/https.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProxyConfigs, ProxyOption, ProxyOptions, TlsConfig } from './types';
|
|
2
2
|
|
|
3
|
-
export declare function resolveSSLPaths(options:
|
|
3
|
+
export declare function resolveSSLPaths(options: ProxyConfigs, defaultConfig: typeof config): TlsConfig;
|
|
4
4
|
export declare function generateWildcardPatterns(domain: string): string[];
|
|
5
|
-
export declare function generateSSLPaths(options?:
|
|
6
|
-
export declare function getAllDomains(options:
|
|
7
|
-
export declare function loadSSLConfig(options:
|
|
8
|
-
export declare function generateCertificate(options:
|
|
5
|
+
export declare function generateSSLPaths(options?: ProxyOptions): void;
|
|
6
|
+
export declare function getAllDomains(options: ProxyOption | ProxyOptions): Set<string>;
|
|
7
|
+
export declare function loadSSLConfig(options: ProxyOption): Promise<SSLConfig | null>;
|
|
8
|
+
export declare function generateCertificate(options: ProxyOptions): Promise<void>;
|
|
9
9
|
export declare function getSSLConfig(): void;
|
|
10
|
-
export declare function checkExistingCertificates(options?:
|
|
11
|
-
export declare function httpsConfig(options:
|
|
10
|
+
export declare function checkExistingCertificates(options?: ProxyOptions): Promise<SSLConfig | null>;
|
|
11
|
+
export declare function httpsConfig(options: ProxyOption | ProxyOptions, verbose?: boolean): TlsConfig;
|
|
12
12
|
export declare function cleanupCertificates(domain: string, verbose?: boolean): Promise<void>;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { ChildProcess } from 'node:child_process';
|
|
2
|
+
import type { StartOptions } from './types';
|
|
3
|
+
|
|
4
|
+
export declare interface ManagedProcess {
|
|
5
|
+
command: string
|
|
6
|
+
cwd: string
|
|
7
|
+
process: ChildProcess | null
|
|
8
|
+
env?: Record<string, string>
|
|
9
|
+
}
|
|
10
|
+
export declare class ProcessManager {
|
|
11
|
+
private processes: Map<string, ManagedProcess> = new Map()
|
|
12
|
+
private isShuttingDown = false
|
|
13
|
+
|
|
14
|
+
async startProcess(id: string, options: StartOptions, verbose?: boolean): Promise<void> {
|
|
15
|
+
if (this.processes.has(id)) {
|
|
16
|
+
debugLog('start', `Process ${id} is already running`, verbose)
|
|
17
|
+
return
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const [cmd, ...args] = options.command.split(' ')
|
|
21
|
+
const cwd = options.cwd || process.cwd()
|
|
22
|
+
|
|
23
|
+
debugLog('start', `Starting process ${id}:`, verbose)
|
|
24
|
+
debugLog('start', ` Command: ${cmd} ${args.join(' ')}`, verbose)
|
|
25
|
+
debugLog('start', ` Working directory: ${cwd}`, verbose)
|
|
26
|
+
debugLog('start', ` Environment variables: ${JSON.stringify(options.env)}`, verbose)
|
|
27
|
+
|
|
28
|
+
const childProcess = spawn(cmd, args, {
|
|
29
|
+
cwd,
|
|
30
|
+
env: { ...process.env, ...options.env },
|
|
31
|
+
shell: true,
|
|
32
|
+
stdio: 'inherit',
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
this.processes.set(id, {
|
|
36
|
+
command: options.command,
|
|
37
|
+
cwd,
|
|
38
|
+
process: childProcess,
|
|
39
|
+
env: options.env,
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
childProcess.on('error', (err) => {
|
|
44
|
+
if (!this.isShuttingDown) {
|
|
45
|
+
debugLog('start', `Process ${id} failed to start: ${err}`, verbose)
|
|
46
|
+
this.processes.delete(id)
|
|
47
|
+
reject(err)
|
|
48
|
+
process.emit('SIGINT')
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
childProcess.on('exit', (code) => {
|
|
53
|
+
if (!this.isShuttingDown && code !== null && code !== 0) {
|
|
54
|
+
debugLog('start', `Process ${id} exited with code ${code}`, verbose)
|
|
55
|
+
this.processes.delete(id)
|
|
56
|
+
reject(new Error(`Process ${id} exited with code ${code}`))
|
|
57
|
+
process.emit('SIGINT')
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
if (verbose) {
|
|
62
|
+
childProcess.stdout?.on('data', (data) => {
|
|
63
|
+
debugLog('process', `[${id}] ${data.toString().trim()}`, true)
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
childProcess.stderr?.on('data', (data) => {
|
|
67
|
+
debugLog('process', `[${id}] ERR: ${data.toString().trim()}`, true)
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
if (!this.isShuttingDown && childProcess.killed) {
|
|
73
|
+
this.processes.delete(id)
|
|
74
|
+
reject(new Error(`Process ${id} was killed during startup`))
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
debugLog('start', `Process ${id} started successfully`, verbose)
|
|
78
|
+
resolve()
|
|
79
|
+
}
|
|
80
|
+
}, 1000)
|
|
81
|
+
})
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async stopProcess(id: string, verbose?: boolean): Promise<void> {
|
|
85
|
+
const managed = this.processes.get(id)
|
|
86
|
+
if (!managed?.process) {
|
|
87
|
+
debugLog('start', `No process found for ${id}`, verbose)
|
|
88
|
+
return
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
debugLog('start', `Stopping process ${id}`, verbose)
|
|
92
|
+
|
|
93
|
+
return new Promise((resolve) => {
|
|
94
|
+
if (!managed.process) {
|
|
95
|
+
resolve()
|
|
96
|
+
return
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
managed.process.once('exit', () => {
|
|
100
|
+
this.processes.delete(id)
|
|
101
|
+
debugLog('start', `Process ${id} stopped`, verbose)
|
|
102
|
+
resolve()
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
managed.process.kill('SIGTERM')
|
|
107
|
+
|
|
108
|
+
setTimeout(() => {
|
|
109
|
+
if (managed.process) {
|
|
110
|
+
debugLog('start', `Force killing process ${id}`, verbose)
|
|
111
|
+
try {
|
|
112
|
+
managed.process.kill('SIGKILL')
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}, 3000)
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
debugLog('start', `Error stopping process ${id}: ${err}`, verbose)
|
|
121
|
+
this.processes.delete(id)
|
|
122
|
+
resolve()
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async stopAll(verbose?: boolean): Promise<void> {
|
|
128
|
+
if (this.isShuttingDown) {
|
|
129
|
+
debugLog('start', 'Already shutting down, skipping duplicate stopAll call', verbose)
|
|
130
|
+
return
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
this.isShuttingDown = true
|
|
134
|
+
debugLog('start', 'Stopping all processes', verbose)
|
|
135
|
+
|
|
136
|
+
const promises = Array.from(this.processes.keys()).map(id =>
|
|
137
|
+
this.stopProcess(id, verbose).catch((err) => {
|
|
138
|
+
log.error(`Failed to stop process ${id}:`, err)
|
|
139
|
+
}),
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
await Promise.allSettled(promises)
|
|
143
|
+
this.processes.clear()
|
|
144
|
+
this.isShuttingDown = false
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
isRunning(id: string): boolean {
|
|
148
|
+
const managed = this.processes.get(id)
|
|
149
|
+
return !!managed?.process && !managed.process.killed
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export declare const processManager: ProcessManager;
|
package/dist/src/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as
|
|
1
|
+
import{A as Q,B as R,C as S,D as T,E as U,F as o,b as r,c as j,d as k,e as n,f as q,g as v,h as w,i as y,j as z,k as A,l as B,m as C,n as D,o as E,p as F,q as G,r as H,s as I,t as J,u as K,v as L,w as M,x as N,y as O}from"../chunk-1rkjbws7.js";import"../chunk-ny83tnrp.js";import"../chunk-7am1svx0.js";var i=o;export{R as startServer,U as startProxy,o as startProxies,T as startHttpRedirectServer,S as setupProxy,A as safeDeleteFile,F as resolveSSLPaths,D as removeHosts,J as loadSSLConfig,n as isValidRootCA,y as isSingleProxyOptions,z as isSingleProxyConfig,w as isMultiProxyOptions,v as isMultiProxyConfig,N as httpsConfig,B as hostsFilePath,L as getSSLConfig,q as getPrimaryDomain,I as getAllDomains,G as generateWildcardPatterns,H as generateSSLPaths,K as generateCertificate,k as extractHostname,i as default,j as debugLog,r as config,O as cleanupCertificates,Q as cleanup,E as checkHosts,M as checkExistingCertificates,C as addHosts};
|
package/dist/start.d.ts
CHANGED
|
@@ -1,12 +1,94 @@
|
|
|
1
|
-
import type { CleanupOptions,
|
|
1
|
+
import type { CleanupOptions, ProxyOption } from './types';
|
|
2
|
+
import type { IncomingHttpHeaders } from 'node:http2';
|
|
2
3
|
|
|
3
4
|
declare const activeServers: Set<http.Server | https.Server>;
|
|
4
|
-
|
|
5
|
+
declare type AnyServerType = http.Server | https.Server | http2.Http2SecureServer
|
|
6
|
+
type AnyIncomingMessage = http.IncomingMessage | http2.Http2ServerRequest
|
|
7
|
+
type AnyServerResponse = http.ServerResponse | http2.Http2ServerResponse
|
|
8
|
+
|
|
9
|
+
let isCleaningUp = false
|
|
10
|
+
|
|
11
|
+
export async function cleanup(options?: CleanupOptions): Promise<void> {
|
|
12
|
+
if (isCleaningUp) {
|
|
13
|
+
debugLog('cleanup', 'Cleanup already in progress, skipping', options?.verbose)
|
|
14
|
+
return
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
isCleaningUp = true
|
|
18
|
+
debugLog('cleanup', 'Starting cleanup process', options?.verbose)
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
await processManager.stopAll(options?.verbose)
|
|
22
|
+
|
|
23
|
+
log.info('Shutting down proxy servers...')
|
|
24
|
+
|
|
25
|
+
const cleanupPromises: Promise<void>[] = []
|
|
26
|
+
|
|
27
|
+
const serverClosePromises = Array.from(activeServers).map(server =>
|
|
28
|
+
new Promise<void>((resolve) => {
|
|
29
|
+
server.close(() => {
|
|
30
|
+
debugLog('cleanup', 'Server closed successfully', options?.verbose)
|
|
31
|
+
resolve()
|
|
32
|
+
})
|
|
33
|
+
}),
|
|
34
|
+
)
|
|
35
|
+
cleanupPromises.push(...serverClosePromises)
|
|
36
|
+
|
|
37
|
+
if (options?.hosts && options.domains?.length) {
|
|
38
|
+
debugLog('cleanup', 'Cleaning up hosts file entries', options?.verbose)
|
|
39
|
+
const domainsToClean = options.domains.filter(domain => !domain.includes('localhost'))
|
|
40
|
+
|
|
41
|
+
if (domainsToClean.length > 0) {
|
|
42
|
+
log.info('Cleaning up hosts file entries...')
|
|
43
|
+
cleanupPromises.push(
|
|
44
|
+
removeHosts(domainsToClean, options?.verbose)
|
|
45
|
+
.then(() => {
|
|
46
|
+
debugLog('cleanup', `Removed hosts entries for ${domainsToClean.join(', ')}`, options?.verbose)
|
|
47
|
+
})
|
|
48
|
+
.catch((err) => {
|
|
49
|
+
debugLog('cleanup', `Failed to remove hosts entries: ${err}`, options?.verbose)
|
|
50
|
+
log.warn(`Failed to clean up hosts file entries for ${domainsToClean.join(', ')}:`, err)
|
|
51
|
+
}),
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (options?.certs && options.domains?.length) {
|
|
57
|
+
debugLog('cleanup', 'Cleaning up SSL certificates', options?.verbose)
|
|
58
|
+
log.info('Cleaning up SSL certificates...')
|
|
59
|
+
|
|
60
|
+
const certCleanupPromises = options.domains.map(async (domain) => {
|
|
61
|
+
try {
|
|
62
|
+
await cleanupCertificates(domain, options?.verbose)
|
|
63
|
+
debugLog('cleanup', `Removed certificates for ${domain}`, options?.verbose)
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
debugLog('cleanup', `Failed to remove certificates for ${domain}: ${err}`, options?.verbose)
|
|
67
|
+
log.warn(`Failed to clean up certificates for ${domain}:`, err)
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
cleanupPromises.push(...certCleanupPromises)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
await Promise.allSettled(cleanupPromises)
|
|
75
|
+
debugLog('cleanup', 'All cleanup tasks completed successfully', options?.verbose)
|
|
76
|
+
log.success('All cleanup tasks completed successfully')
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
debugLog('cleanup', `Error during cleanup: ${err}`, options?.verbose)
|
|
80
|
+
log.error('Error during cleanup:', err)
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
isCleaningUp = false
|
|
84
|
+
process.exit(0)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let isHandlingSignal = false
|
|
89
|
+
declare function signalHandler(): void;
|
|
5
90
|
declare function isPortInUse(port: number, hostname: string, verbose?: boolean): Promise<boolean>;
|
|
6
|
-
declare function
|
|
7
|
-
declare function
|
|
8
|
-
export declare function startServer(options: SingleReverseProxyConfig): Promise<void>;
|
|
9
|
-
export declare function setupReverseProxy(options: ProxySetupOptions): Promise<void>;
|
|
91
|
+
declare function normalizeHeaders(headers: IncomingHttpHeaders): http.OutgoingHttpHeaders;
|
|
92
|
+
declare function setupServer(serverInstance: AnyServerType): void;
|
|
10
93
|
export declare function startHttpRedirectServer(verbose?: boolean): void;
|
|
11
|
-
export declare function startProxy(options:
|
|
12
|
-
export declare function startProxies(options?: ReverseProxyOptions): Promise<void>;
|
|
94
|
+
export declare function startProxy(options: ProxyOption): void;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import type { TlsConfig, TlsOption } from '@stacksjs/tlsx';
|
|
2
2
|
|
|
3
3
|
export type { TlsConfig, TlsOption }
|
|
4
|
-
export declare interface
|
|
4
|
+
export declare interface StartOptions {
|
|
5
|
+
command: string
|
|
6
|
+
cwd?: string
|
|
7
|
+
env?: Record<string, string>
|
|
8
|
+
}
|
|
9
|
+
export declare interface BaseProxyConfig {
|
|
5
10
|
from: string
|
|
6
11
|
to: string
|
|
7
|
-
|
|
12
|
+
start?: StartOptions
|
|
8
13
|
}
|
|
9
|
-
export declare type
|
|
14
|
+
export declare type BaseProxyOptions = Partial<BaseProxyConfig>
|
|
10
15
|
|
|
11
16
|
export interface CleanupConfig {
|
|
12
17
|
domains: string[]
|
|
@@ -23,19 +28,24 @@ export interface SharedProxyConfig {
|
|
|
23
28
|
vitePluginUsage: boolean
|
|
24
29
|
verbose: boolean
|
|
25
30
|
_cachedSSLConfig?: SSLConfig | null
|
|
31
|
+
start?: StartOptions
|
|
32
|
+
cleanUrls: boolean
|
|
26
33
|
}
|
|
34
|
+
|
|
27
35
|
export type SharedProxyOptions = Partial<SharedProxyConfig>
|
|
28
36
|
|
|
29
|
-
export interface
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
export interface SingleProxyConfig extends BaseProxyConfig, SharedProxyConfig {}
|
|
38
|
+
|
|
39
|
+
export interface MultiProxyConfig extends SharedProxyConfig {
|
|
40
|
+
proxies: Array<BaseProxyConfig & { cleanUrls: boolean }>
|
|
32
41
|
}
|
|
33
|
-
export type ReverseProxyConfig = SingleReverseProxyConfig
|
|
34
|
-
export type ReverseProxyConfigs = SingleReverseProxyConfig | MultiReverseProxyConfig
|
|
35
42
|
|
|
36
|
-
export type
|
|
37
|
-
export type
|
|
38
|
-
|
|
43
|
+
export type ProxyConfig = SingleProxyConfig
|
|
44
|
+
export type ProxyConfigs = SingleProxyConfig | MultiProxyConfig
|
|
45
|
+
|
|
46
|
+
export type BaseProxyOption = Partial<BaseProxyConfig>
|
|
47
|
+
export type ProxyOption = Partial<SingleProxyConfig>
|
|
48
|
+
export type ProxyOptions = Partial<SingleProxyConfig> | Partial<MultiProxyConfig>
|
|
39
49
|
|
|
40
50
|
export interface SSLConfig {
|
|
41
51
|
key: string
|
|
@@ -43,24 +53,16 @@ export interface SSLConfig {
|
|
|
43
53
|
ca?: string | string[]
|
|
44
54
|
}
|
|
45
55
|
|
|
46
|
-
export interface ProxySetupOptions extends Omit<
|
|
56
|
+
export interface ProxySetupOptions extends Omit<ProxyOption, 'from'> {
|
|
47
57
|
fromPort: number
|
|
48
58
|
sourceUrl: Pick<URL, 'hostname' | 'host'>
|
|
49
59
|
ssl: SSLConfig | null
|
|
50
60
|
from: string
|
|
51
61
|
to: string
|
|
62
|
+
portManager?: PortManager
|
|
52
63
|
}
|
|
53
64
|
|
|
54
65
|
export interface PortManager {
|
|
55
66
|
usedPorts: Set<number>
|
|
56
67
|
getNextAvailablePort: (startPort: number) => Promise<number>
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export interface ProxySetupOptions extends Omit<ReverseProxyOption, 'from'> {
|
|
60
|
-
fromPort: number
|
|
61
|
-
sourceUrl: Pick<URL, 'hostname' | 'host'>
|
|
62
|
-
ssl: SSLConfig | null
|
|
63
|
-
from: string
|
|
64
|
-
to: string
|
|
65
|
-
portManager?: PortManager
|
|
66
68
|
}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProxyConfigs, ProxyOption } from './types';
|
|
2
2
|
|
|
3
3
|
export declare function debugLog(category: string, message: string, verbose?: boolean): void;
|
|
4
|
-
export declare function extractHostname(options:
|
|
4
|
+
export declare function extractHostname(options: ProxyOption | ProxyOptions): string[];
|
|
5
5
|
declare interface RootCA {
|
|
6
6
|
certificate: string
|
|
7
7
|
privateKey: string
|
|
8
8
|
}
|
|
9
9
|
export declare function isValidRootCA(value: unknown): value is RootCA;
|
|
10
|
-
export declare function getPrimaryDomain(options?:
|
|
11
|
-
export declare function isMultiProxyConfig(options:
|
|
12
|
-
export declare function isMultiProxyOptions(options:
|
|
13
|
-
export declare function isSingleProxyOptions(options:
|
|
10
|
+
export declare function getPrimaryDomain(options?: ProxyOption | ProxyOptions): string;
|
|
11
|
+
export declare function isMultiProxyConfig(options: ProxyConfigs | ProxyOptions): options is MultiProxyConfig;
|
|
12
|
+
export declare function isMultiProxyOptions(options: ProxyOption | ProxyOptions): options is MultiProxyConfig;
|
|
13
|
+
export declare function isSingleProxyOptions(options: ProxyOption | ProxyOptions): options is SingleProxyConfig;
|
|
14
|
+
export declare function isSingleProxyConfig(options: ProxyConfigs | ProxyOptions): options is SingleProxyConfig;
|
|
14
15
|
export declare function safeDeleteFile(filePath: string, verbose?: boolean): Promise<void>;
|