@frp-bridge/shared 0.0.2 → 0.0.4

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/index.d.ts CHANGED
@@ -1,4 +1,80 @@
1
+ //#region logger/logger.d.ts
2
+ /**
3
+ * Logging utility for FRP Bridge
4
+ * Supports both console output and file logging with daily rotation
5
+ */
6
+ type LogLevel = 'debug' | 'info' | 'success' | 'warn' | 'error';
7
+ interface LogData {
8
+ [key: string]: unknown;
9
+ }
10
+ interface LoggerOptions {
11
+ level?: LogLevel;
12
+ dir?: string;
13
+ workspaceRoot?: string;
14
+ enableConsole?: boolean;
15
+ enableFile?: boolean;
16
+ }
17
+ interface Logger {
18
+ debug: (message: string, data?: LogData) => void;
19
+ info: (message: string, data?: LogData) => void;
20
+ success: (message: string, data?: LogData) => void;
21
+ warn: (message: string, data?: LogData) => void;
22
+ error: (message: string, error?: Error | LogData) => void;
23
+ setLevel: (level: LogLevel) => void;
24
+ }
25
+ /**
26
+ * Get default workspace root directory
27
+ * Uses user's home directory as the base
28
+ */
29
+ declare function getDefaultWorkspaceRoot(): string;
30
+ /**
31
+ * Resolve log directory to absolute path
32
+ * - If dir is absolute, use it as-is
33
+ * - If dir is relative, join with workspaceRoot
34
+ * - Default is workspaceRoot/.frp-web/logs
35
+ */
36
+ declare function resolveLogDir(dir: string, workspaceRoot: string): string;
37
+ /**
38
+ * Global logger options
39
+ */
40
+ interface GlobalLoggerOptions {
41
+ workspaceRoot?: string;
42
+ logDir?: string;
43
+ enableConsole?: boolean;
44
+ enableFile?: boolean;
45
+ }
46
+ /**
47
+ * Set global logging options that will be used for all new loggers
48
+ */
49
+ declare function setGlobalLoggerOptions(options: GlobalLoggerOptions): void;
50
+ /**
51
+ * Get global logging options
52
+ */
53
+ declare function getGlobalLoggerOptions(): GlobalLoggerOptions;
54
+ /**
55
+ * Create a logger instance with optional file output
56
+ */
57
+ declare function createLogger(tag: string, optionsOrLevel?: LogLevel | LoggerOptions): Logger;
58
+ //#endregion
59
+ //#region logger/index.d.ts
60
+ declare const coreLogger: Logger;
61
+ declare const configMergerLogger: Logger;
62
+ declare const nodeManagerLogger: Logger;
63
+ declare const rpcClientLogger: Logger;
64
+ declare const rpcServerLogger: Logger;
65
+ declare const rpcMiddlewareLogger: Logger;
66
+ declare const processControllerLogger: Logger;
67
+ declare const nodeControllerLogger: Logger;
68
+ declare const tunnelManagerLogger: Logger;
69
+ declare const binaryManagerLogger: Logger;
70
+ declare const presetConfigLogger: Logger;
71
+ declare const configurationStoreLogger: Logger;
72
+ declare const clientCollectorLogger: Logger;
73
+ declare const runtimeLogger: Logger;
74
+ declare const processLogger: Logger;
75
+ //#endregion
76
+ //#region src/index.d.ts
1
77
  /** Execute function with loading spinner */
2
78
  declare function loadingFunction<T>(message: string, fn: () => Promise<T>): Promise<T>;
3
-
4
- export { loadingFunction };
79
+ //#endregion
80
+ export { type LogData, type LogLevel, type Logger, type LoggerOptions, binaryManagerLogger, clientCollectorLogger, configMergerLogger, configurationStoreLogger, coreLogger, createLogger, getDefaultWorkspaceRoot, getGlobalLoggerOptions, loadingFunction, nodeControllerLogger, nodeManagerLogger, presetConfigLogger, processControllerLogger, processLogger, resolveLogDir, rpcClientLogger, rpcMiddlewareLogger, rpcServerLogger, runtimeLogger, setGlobalLoggerOptions, tunnelManagerLogger };
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ import e from"node:process";import{stripVTControlCharacters as t}from"node:util";import n,{homedir as r}from"node:os";import i from"node:tty";import{appendFileSync as a,existsSync as o,mkdirSync as s}from"node:fs";import{join as c}from"node:path";const l=(e=0)=>t=>`\u001B[${t+e}m`,u=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,d=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,f={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(f.modifier);const ee=Object.keys(f.color),te=Object.keys(f.bgColor);[...ee,...te];function ne(){let e=new Map;for(let[t,n]of Object.entries(f)){for(let[t,r]of Object.entries(n))f[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=f[t],e.set(r[0],r[1]);Object.defineProperty(f,t,{value:n,enumerable:!1})}return Object.defineProperty(f,`codes`,{value:e,enumerable:!1}),f.color.close=`\x1B[39m`,f.bgColor.close=`\x1B[49m`,f.color.ansi=l(),f.color.ansi256=u(),f.color.ansi16m=d(),f.bgColor.ansi=l(10),f.bgColor.ansi256=u(10),f.bgColor.ansi16m=d(10),Object.defineProperties(f,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>f.rgbToAnsi256(...f.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>f.ansi256ToAnsi(f.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>f.ansi256ToAnsi(f.hexToAnsi256(e)),enumerable:!1}}),f}const p=ne();function m(t,n=globalThis.Deno?globalThis.Deno.args:e.argv){let r=t.startsWith(`-`)?``:t.length===1?`-`:`--`,i=n.indexOf(r+t),a=n.indexOf(`--`);return i!==-1&&(a===-1||i<a)}const{env:h}=e;let g;m(`no-color`)||m(`no-colors`)||m(`color=false`)||m(`color=never`)?g=0:(m(`color`)||m(`colors`)||m(`color=true`)||m(`color=always`))&&(g=1);function re(){if(`FORCE_COLOR`in h)return h.FORCE_COLOR===`true`?1:h.FORCE_COLOR===`false`?0:h.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(h.FORCE_COLOR,10),3)}function ie(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function ae(t,{streamIsTTY:r,sniffFlags:i=!0}={}){let a=re();a!==void 0&&(g=a);let o=i?g:a;if(o===0)return 0;if(i){if(m(`color=16m`)||m(`color=full`)||m(`color=truecolor`))return 3;if(m(`color=256`))return 2}if(`TF_BUILD`in h&&`AGENT_NAME`in h)return 1;if(t&&!r&&o===void 0)return 0;let s=o||0;if(h.TERM===`dumb`)return s;if(e.platform===`win32`){let e=n.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in h)return[`GITHUB_ACTIONS`,`GITEA_ACTIONS`,`CIRCLECI`].some(e=>e in h)?3:[`TRAVIS`,`APPVEYOR`,`GITLAB_CI`,`BUILDKITE`,`DRONE`].some(e=>e in h)||h.CI_NAME===`codeship`?1:s;if(`TEAMCITY_VERSION`in h)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(h.TEAMCITY_VERSION)?1:0;if(h.COLORTERM===`truecolor`||h.TERM===`xterm-kitty`||h.TERM===`xterm-ghostty`||h.TERM===`wezterm`)return 3;if(`TERM_PROGRAM`in h){let e=Number.parseInt((h.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(h.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(h.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(h.TERM)||`COLORTERM`in h?1:s}function _(e,t={}){return ie(ae(e,{streamIsTTY:e&&e.isTTY,...t}))}const oe={stdout:_({isTTY:i.isatty(1)}),stderr:_({isTTY:i.isatty(2)})};function se(e,t,n){let r=e.indexOf(t);if(r===-1)return e;let i=t.length,a=0,o=``;do o+=e.slice(a,r)+t+n,a=r+i,r=e.indexOf(t,a);while(r!==-1);return o+=e.slice(a),o}function ce(e,t,n,r){let i=0,a=``;do{let o=e[r-1]===`\r`;a+=e.slice(i,o?r-1:r)+t+(o?`\r
2
+ `:`
3
+ `)+n,i=r+1,r=e.indexOf(`
4
+ `,i)}while(r!==-1);return a+=e.slice(i),a}const{stdout:v,stderr:y}=oe,b=Symbol(`GENERATOR`),x=Symbol(`STYLER`),S=Symbol(`IS_EMPTY`),C=[`ansi`,`ansi`,`ansi256`,`ansi16m`],w=Object.create(null),le=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=v?v.level:0;e.level=t.level===void 0?n:t.level},ue=e=>{let t=(...e)=>e.join(` `);return le(t,e),Object.setPrototypeOf(t,T.prototype),t};function T(e){return ue(e)}Object.setPrototypeOf(T.prototype,Function.prototype);for(let[e,t]of Object.entries(p))w[e]={get(){let n=O(this,D(t.open,t.close,this[x]),this[S]);return Object.defineProperty(this,e,{value:n}),n}};w.visible={get(){let e=O(this,this[x],!0);return Object.defineProperty(this,`visible`,{value:e}),e}};const E=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?p[n].ansi16m(...r):t===`ansi256`?p[n].ansi256(p.rgbToAnsi256(...r)):p[n].ansi(p.rgbToAnsi(...r)):e===`hex`?E(`rgb`,t,n,...p.hexToRgb(...r)):p[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){w[e]={get(){let{level:t}=this;return function(...n){let r=D(E(e,C[t],`color`,...n),p.color.close,this[x]);return O(this,r,this[S])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);w[t]={get(){let{level:t}=this;return function(...n){let r=D(E(e,C[t],`bgColor`,...n),p.bgColor.close,this[x]);return O(this,r,this[S])}}}}const de=Object.defineProperties(()=>{},{...w,level:{enumerable:!0,get(){return this[b].level},set(e){this[b].level=e}}}),D=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},O=(e,t,n)=>{let r=(...e)=>fe(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,de),r[b]=e,r[x]=t,r[S]=n,r},fe=(e,t)=>{if(e.level<=0||!t)return e[S]?``:t;let n=e[x];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=se(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
5
+ `);return a!==-1&&(t=ce(t,i,r,a)),r+t+i};Object.defineProperties(T.prototype,w);const pe=T();T({level:y?y.level:0});const me=(e,t,n,r)=>{if(n===`length`||n===`prototype`||n===`arguments`||n===`caller`)return;let i=Object.getOwnPropertyDescriptor(e,n),a=Object.getOwnPropertyDescriptor(t,n);!he(i,a)&&r||Object.defineProperty(e,n,a)},he=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},ge=(e,t)=>{let n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n)},_e=(e,t)=>`/* Wrapped ${e}*/\n${t}`,ve=Object.getOwnPropertyDescriptor(Function.prototype,`toString`),ye=Object.getOwnPropertyDescriptor(Function.prototype.toString,`name`),be=(e,t,n)=>{let r=n===``?``:`with ${n.trim()}() `,i=_e.bind(null,r,t.toString());Object.defineProperty(i,`name`,ye);let{writable:a,enumerable:o,configurable:s}=ve;Object.defineProperty(e,`toString`,{value:i,writable:a,enumerable:o,configurable:s})};function xe(e,t,{ignoreNonConfigurable:n=!1}={}){let{name:r}=e;for(let r of Reflect.ownKeys(t))me(e,t,r,n);return ge(e,t),be(e,t,r),e}const k=new WeakMap,A=(e,t={})=>{if(typeof e!=`function`)throw TypeError(`Expected a function`);let n,r=0,i=e.displayName||e.name||`<anonymous>`,a=function(...o){if(k.set(a,++r),r===1)n=e.apply(this,o),e=void 0;else if(t.throw===!0)throw Error(`Function \`${i}\` can only be called once`);return n};return xe(a,e),k.set(a,r),a};A.callCount=e=>{if(!k.has(e))throw Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return k.get(e)};const j=[];j.push(`SIGHUP`,`SIGINT`,`SIGTERM`),process.platform!==`win32`&&j.push(`SIGALRM`,`SIGABRT`,`SIGVTALRM`,`SIGXCPU`,`SIGXFSZ`,`SIGUSR2`,`SIGTRAP`,`SIGSYS`,`SIGQUIT`,`SIGIOT`),process.platform===`linux`&&j.push(`SIGIO`,`SIGPOLL`,`SIGPWR`,`SIGSTKFLT`);const M=e=>!!e&&typeof e==`object`&&typeof e.removeListener==`function`&&typeof e.emit==`function`&&typeof e.reallyExit==`function`&&typeof e.listeners==`function`&&typeof e.kill==`function`&&typeof e.pid==`number`&&typeof e.on==`function`,N=Symbol.for(`signal-exit emitter`),P=globalThis,Se=Object.defineProperty.bind(Object);var Ce=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(P[N])return P[N];Se(P,N,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,t){this.listeners[e].push(t)}removeListener(e,t){let n=this.listeners[e],r=n.indexOf(t);r!==-1&&(r===0&&n.length===1?n.length=0:n.splice(r,1))}emit(e,t,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let r=!1;for(let i of this.listeners[e])r=i(t,n)===!0||r;return e===`exit`&&(r=this.emit(`afterExit`,t,n)||r),r}},F=class{};const we=e=>({onExit(t,n){return e.onExit(t,n)},load(){return e.load()},unload(){return e.unload()}});var Te=class extends F{onExit(){return()=>{}}load(){}unload(){}},Ee=class extends F{#e=I.platform===`win32`?`SIGINT`:`SIGHUP`;#t=new Ce;#n;#r;#i;#a={};#o=!1;constructor(e){super(),this.#n=e,this.#a={};for(let t of j)this.#a[t]=()=>{let n=this.#n.listeners(t),{count:r}=this.#t,i=e;if(typeof i.__signal_exit_emitter__==`object`&&typeof i.__signal_exit_emitter__.count==`number`&&(r+=i.__signal_exit_emitter__.count),n.length===r){this.unload();let n=this.#t.emit(`exit`,null,t),r=t===`SIGHUP`?this.#e:t;n||e.kill(e.pid,r)}};this.#i=e.reallyExit,this.#r=e.emit}onExit(e,t){if(!M(this.#n))return()=>{};this.#o===!1&&this.load();let n=t?.alwaysLast?`afterExit`:`exit`;return this.#t.on(n,e),()=>{this.#t.removeListener(n,e),this.#t.listeners.exit.length===0&&this.#t.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#t.count+=1;for(let e of j)try{let t=this.#a[e];t&&this.#n.on(e,t)}catch{}this.#n.emit=(e,...t)=>this.#c(e,...t),this.#n.reallyExit=e=>this.#s(e)}}unload(){this.#o&&(this.#o=!1,j.forEach(e=>{let t=this.#a[e];if(!t)throw Error(`Listener not defined for signal: `+e);try{this.#n.removeListener(e,t)}catch{}}),this.#n.emit=this.#r,this.#n.reallyExit=this.#i,--this.#t.count)}#s(e){return M(this.#n)?(this.#n.exitCode=e||0,this.#t.emit(`exit`,this.#n.exitCode,null),this.#i.call(this.#n,this.#n.exitCode)):0}#c(e,...t){let n=this.#r;if(e===`exit`&&M(this.#n)){typeof t[0]==`number`&&(this.#n.exitCode=t[0]);let r=n.call(this.#n,e,...t);return this.#t.emit(`exit`,this.#n.exitCode,null),r}else return n.call(this.#n,e,...t)}};const I=globalThis.process,{onExit:De,load:Oe,unload:ke}=we(M(I)?new Ee(I):new Te),L=e.stderr.isTTY?e.stderr:e.stdout.isTTY?e.stdout:void 0,Ae=L?A(()=>{De(()=>{L.write(`\x1B[?25h`)},{alwaysLast:!0})}):()=>{};let R=!1;const z={};z.show=(t=e.stderr)=>{t.isTTY&&(R=!1,t.write(`\x1B[?25h`))},z.hide=(t=e.stderr)=>{t.isTTY&&(Ae(),R=!0,t.write(`\x1B[?25l`))},z.toggle=(e,t)=>{e!==void 0&&(R=e),R?z.show(t):z.hide(t)};var B={dots:{interval:80,frames:[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`]},dots2:{interval:80,frames:[`⣾`,`⣽`,`⣻`,`⢿`,`⡿`,`⣟`,`⣯`,`⣷`]},dots3:{interval:80,frames:[`⠋`,`⠙`,`⠚`,`⠞`,`⠖`,`⠦`,`⠴`,`⠲`,`⠳`,`⠓`]},dots4:{interval:80,frames:[`⠄`,`⠆`,`⠇`,`⠋`,`⠙`,`⠸`,`⠰`,`⠠`,`⠰`,`⠸`,`⠙`,`⠋`,`⠇`,`⠆`]},dots5:{interval:80,frames:[`⠋`,`⠙`,`⠚`,`⠒`,`⠂`,`⠂`,`⠒`,`⠲`,`⠴`,`⠦`,`⠖`,`⠒`,`⠐`,`⠐`,`⠒`,`⠓`,`⠋`]},dots6:{interval:80,frames:[`⠁`,`⠉`,`⠙`,`⠚`,`⠒`,`⠂`,`⠂`,`⠒`,`⠲`,`⠴`,`⠤`,`⠄`,`⠄`,`⠤`,`⠴`,`⠲`,`⠒`,`⠂`,`⠂`,`⠒`,`⠚`,`⠙`,`⠉`,`⠁`]},dots7:{interval:80,frames:[`⠈`,`⠉`,`⠋`,`⠓`,`⠒`,`⠐`,`⠐`,`⠒`,`⠖`,`⠦`,`⠤`,`⠠`,`⠠`,`⠤`,`⠦`,`⠖`,`⠒`,`⠐`,`⠐`,`⠒`,`⠓`,`⠋`,`⠉`,`⠈`]},dots8:{interval:80,frames:`⠁.⠁.⠉.⠙.⠚.⠒.⠂.⠂.⠒.⠲.⠴.⠤.⠄.⠄.⠤.⠠.⠠.⠤.⠦.⠖.⠒.⠐.⠐.⠒.⠓.⠋.⠉.⠈.⠈`.split(`.`)},dots9:{interval:80,frames:[`⢹`,`⢺`,`⢼`,`⣸`,`⣇`,`⡧`,`⡗`,`⡏`]},dots10:{interval:80,frames:[`⢄`,`⢂`,`⢁`,`⡁`,`⡈`,`⡐`,`⡠`]},dots11:{interval:100,frames:[`⠁`,`⠂`,`⠄`,`⡀`,`⢀`,`⠠`,`⠐`,`⠈`]},dots12:{interval:80,frames:`⢀⠀.⡀⠀.⠄⠀.⢂⠀.⡂⠀.⠅⠀.⢃⠀.⡃⠀.⠍⠀.⢋⠀.⡋⠀.⠍⠁.⢋⠁.⡋⠁.⠍⠉.⠋⠉.⠋⠉.⠉⠙.⠉⠙.⠉⠩.⠈⢙.⠈⡙.⢈⠩.⡀⢙.⠄⡙.⢂⠩.⡂⢘.⠅⡘.⢃⠨.⡃⢐.⠍⡐.⢋⠠.⡋⢀.⠍⡁.⢋⠁.⡋⠁.⠍⠉.⠋⠉.⠋⠉.⠉⠙.⠉⠙.⠉⠩.⠈⢙.⠈⡙.⠈⠩.⠀⢙.⠀⡙.⠀⠩.⠀⢘.⠀⡘.⠀⠨.⠀⢐.⠀⡐.⠀⠠.⠀⢀.⠀⡀`.split(`.`)},dots13:{interval:80,frames:[`⣼`,`⣹`,`⢻`,`⠿`,`⡟`,`⣏`,`⣧`,`⣶`]},dots14:{interval:80,frames:[`⠉⠉`,`⠈⠙`,`⠀⠹`,`⠀⢸`,`⠀⣰`,`⢀⣠`,`⣀⣀`,`⣄⡀`,`⣆⠀`,`⡇⠀`,`⠏⠀`,`⠋⠁`]},dots8Bit:{interval:80,frames:`⠀.⠁.⠂.⠃.⠄.⠅.⠆.⠇.⡀.⡁.⡂.⡃.⡄.⡅.⡆.⡇.⠈.⠉.⠊.⠋.⠌.⠍.⠎.⠏.⡈.⡉.⡊.⡋.⡌.⡍.⡎.⡏.⠐.⠑.⠒.⠓.⠔.⠕.⠖.⠗.⡐.⡑.⡒.⡓.⡔.⡕.⡖.⡗.⠘.⠙.⠚.⠛.⠜.⠝.⠞.⠟.⡘.⡙.⡚.⡛.⡜.⡝.⡞.⡟.⠠.⠡.⠢.⠣.⠤.⠥.⠦.⠧.⡠.⡡.⡢.⡣.⡤.⡥.⡦.⡧.⠨.⠩.⠪.⠫.⠬.⠭.⠮.⠯.⡨.⡩.⡪.⡫.⡬.⡭.⡮.⡯.⠰.⠱.⠲.⠳.⠴.⠵.⠶.⠷.⡰.⡱.⡲.⡳.⡴.⡵.⡶.⡷.⠸.⠹.⠺.⠻.⠼.⠽.⠾.⠿.⡸.⡹.⡺.⡻.⡼.⡽.⡾.⡿.⢀.⢁.⢂.⢃.⢄.⢅.⢆.⢇.⣀.⣁.⣂.⣃.⣄.⣅.⣆.⣇.⢈.⢉.⢊.⢋.⢌.⢍.⢎.⢏.⣈.⣉.⣊.⣋.⣌.⣍.⣎.⣏.⢐.⢑.⢒.⢓.⢔.⢕.⢖.⢗.⣐.⣑.⣒.⣓.⣔.⣕.⣖.⣗.⢘.⢙.⢚.⢛.⢜.⢝.⢞.⢟.⣘.⣙.⣚.⣛.⣜.⣝.⣞.⣟.⢠.⢡.⢢.⢣.⢤.⢥.⢦.⢧.⣠.⣡.⣢.⣣.⣤.⣥.⣦.⣧.⢨.⢩.⢪.⢫.⢬.⢭.⢮.⢯.⣨.⣩.⣪.⣫.⣬.⣭.⣮.⣯.⢰.⢱.⢲.⢳.⢴.⢵.⢶.⢷.⣰.⣱.⣲.⣳.⣴.⣵.⣶.⣷.⢸.⢹.⢺.⢻.⢼.⢽.⢾.⢿.⣸.⣹.⣺.⣻.⣼.⣽.⣾.⣿`.split(`.`)},dotsCircle:{interval:80,frames:[`⢎ `,`⠎⠁`,`⠊⠑`,`⠈⠱`,` ⡱`,`⢀⡰`,`⢄⡠`,`⢆⡀`]},sand:{interval:80,frames:`⠁.⠂.⠄.⡀.⡈.⡐.⡠.⣀.⣁.⣂.⣄.⣌.⣔.⣤.⣥.⣦.⣮.⣶.⣷.⣿.⡿.⠿.⢟.⠟.⡛.⠛.⠫.⢋.⠋.⠍.⡉.⠉.⠑.⠡.⢁`.split(`.`)},line:{interval:130,frames:[`-`,`\\`,`|`,`/`]},line2:{interval:100,frames:[`⠂`,`-`,`–`,`—`,`–`,`-`]},rollingLine:{interval:80,frames:[`/ `,` - `,` \\ `,` |`,` |`,` \\ `,` - `,`/ `]},pipe:{interval:100,frames:[`┤`,`┘`,`┴`,`└`,`├`,`┌`,`┬`,`┐`]},simpleDots:{interval:400,frames:[`. `,`.. `,`...`,` `]},simpleDotsScrolling:{interval:200,frames:[`. `,`.. `,`...`,` ..`,` .`,` `]},star:{interval:70,frames:[`✶`,`✸`,`✹`,`✺`,`✹`,`✷`]},star2:{interval:80,frames:[`+`,`x`,`*`]},flip:{interval:70,frames:[`_`,`_`,`_`,`-`,"`","`",`'`,`´`,`-`,`_`,`_`,`_`]},hamburger:{interval:100,frames:[`☱`,`☲`,`☴`]},growVertical:{interval:120,frames:[`▁`,`▃`,`▄`,`▅`,`▆`,`▇`,`▆`,`▅`,`▄`,`▃`]},growHorizontal:{interval:120,frames:[`▏`,`▎`,`▍`,`▌`,`▋`,`▊`,`▉`,`▊`,`▋`,`▌`,`▍`,`▎`]},balloon:{interval:140,frames:[` `,`.`,`o`,`O`,`@`,`*`,` `]},balloon2:{interval:120,frames:[`.`,`o`,`O`,`°`,`O`,`o`,`.`]},noise:{interval:100,frames:[`▓`,`▒`,`░`]},bounce:{interval:120,frames:[`⠁`,`⠂`,`⠄`,`⠂`]},boxBounce:{interval:120,frames:[`▖`,`▘`,`▝`,`▗`]},boxBounce2:{interval:100,frames:[`▌`,`▀`,`▐`,`▄`]},triangle:{interval:50,frames:[`◢`,`◣`,`◤`,`◥`]},binary:{interval:80,frames:[`010010`,`001100`,`100101`,`111010`,`111101`,`010111`,`101011`,`111000`,`110011`,`110101`]},arc:{interval:100,frames:[`◜`,`◠`,`◝`,`◞`,`◡`,`◟`]},circle:{interval:120,frames:[`◡`,`⊙`,`◠`]},squareCorners:{interval:180,frames:[`◰`,`◳`,`◲`,`◱`]},circleQuarters:{interval:120,frames:[`◴`,`◷`,`◶`,`◵`]},circleHalves:{interval:50,frames:[`◐`,`◓`,`◑`,`◒`]},squish:{interval:100,frames:[`╫`,`╪`]},toggle:{interval:250,frames:[`⊶`,`⊷`]},toggle2:{interval:80,frames:[`▫`,`▪`]},toggle3:{interval:120,frames:[`□`,`■`]},toggle4:{interval:100,frames:[`■`,`□`,`▪`,`▫`]},toggle5:{interval:100,frames:[`▮`,`▯`]},toggle6:{interval:300,frames:[`ဝ`,`၀`]},toggle7:{interval:80,frames:[`⦾`,`⦿`]},toggle8:{interval:100,frames:[`◍`,`◌`]},toggle9:{interval:100,frames:[`◉`,`◎`]},toggle10:{interval:100,frames:[`㊂`,`㊀`,`㊁`]},toggle11:{interval:50,frames:[`⧇`,`⧆`]},toggle12:{interval:120,frames:[`☗`,`☖`]},toggle13:{interval:80,frames:[`=`,`*`,`-`]},arrow:{interval:100,frames:[`←`,`↖`,`↑`,`↗`,`→`,`↘`,`↓`,`↙`]},arrow2:{interval:80,frames:[`⬆️ `,`↗️ `,`➡️ `,`↘️ `,`⬇️ `,`↙️ `,`⬅️ `,`↖️ `]},arrow3:{interval:120,frames:[`▹▹▹▹▹`,`▸▹▹▹▹`,`▹▸▹▹▹`,`▹▹▸▹▹`,`▹▹▹▸▹`,`▹▹▹▹▸`]},bouncingBar:{interval:80,frames:[`[ ]`,`[= ]`,`[== ]`,`[=== ]`,`[====]`,`[ ===]`,`[ ==]`,`[ =]`,`[ ]`,`[ =]`,`[ ==]`,`[ ===]`,`[====]`,`[=== ]`,`[== ]`,`[= ]`]},bouncingBall:{interval:80,frames:[`( ● )`,`( ● )`,`( ● )`,`( ● )`,`( ●)`,`( ● )`,`( ● )`,`( ● )`,`( ● )`,`(● )`]},smiley:{interval:200,frames:[`😄 `,`😝 `]},monkey:{interval:300,frames:[`🙈 `,`🙈 `,`🙉 `,`🙊 `]},hearts:{interval:100,frames:[`💛 `,`💙 `,`💜 `,`💚 `,`💗 `]},clock:{interval:100,frames:[`🕛 `,`🕐 `,`🕑 `,`🕒 `,`🕓 `,`🕔 `,`🕕 `,`🕖 `,`🕗 `,`🕘 `,`🕙 `,`🕚 `]},earth:{interval:180,frames:[`🌍 `,`🌎 `,`🌏 `]},material:{interval:17,frames:`█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁.██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁.███████▁▁▁▁▁▁▁▁▁▁▁▁▁.████████▁▁▁▁▁▁▁▁▁▁▁▁.█████████▁▁▁▁▁▁▁▁▁▁▁.█████████▁▁▁▁▁▁▁▁▁▁▁.██████████▁▁▁▁▁▁▁▁▁▁.███████████▁▁▁▁▁▁▁▁▁.█████████████▁▁▁▁▁▁▁.██████████████▁▁▁▁▁▁.██████████████▁▁▁▁▁▁.▁██████████████▁▁▁▁▁.▁██████████████▁▁▁▁▁.▁██████████████▁▁▁▁▁.▁▁██████████████▁▁▁▁.▁▁▁██████████████▁▁▁.▁▁▁▁█████████████▁▁▁.▁▁▁▁██████████████▁▁.▁▁▁▁██████████████▁▁.▁▁▁▁▁██████████████▁.▁▁▁▁▁██████████████▁.▁▁▁▁▁██████████████▁.▁▁▁▁▁▁██████████████.▁▁▁▁▁▁██████████████.▁▁▁▁▁▁▁█████████████.▁▁▁▁▁▁▁█████████████.▁▁▁▁▁▁▁▁████████████.▁▁▁▁▁▁▁▁████████████.▁▁▁▁▁▁▁▁▁███████████.▁▁▁▁▁▁▁▁▁███████████.▁▁▁▁▁▁▁▁▁▁██████████.▁▁▁▁▁▁▁▁▁▁██████████.▁▁▁▁▁▁▁▁▁▁▁▁████████.▁▁▁▁▁▁▁▁▁▁▁▁▁███████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████.█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████.██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███.██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███.███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███.████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██.█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█.█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█.██████▁▁▁▁▁▁▁▁▁▁▁▁▁█.████████▁▁▁▁▁▁▁▁▁▁▁▁.█████████▁▁▁▁▁▁▁▁▁▁▁.█████████▁▁▁▁▁▁▁▁▁▁▁.█████████▁▁▁▁▁▁▁▁▁▁▁.█████████▁▁▁▁▁▁▁▁▁▁▁.███████████▁▁▁▁▁▁▁▁▁.████████████▁▁▁▁▁▁▁▁.████████████▁▁▁▁▁▁▁▁.██████████████▁▁▁▁▁▁.██████████████▁▁▁▁▁▁.▁██████████████▁▁▁▁▁.▁██████████████▁▁▁▁▁.▁▁▁█████████████▁▁▁▁.▁▁▁▁▁████████████▁▁▁.▁▁▁▁▁████████████▁▁▁.▁▁▁▁▁▁███████████▁▁▁.▁▁▁▁▁▁▁▁█████████▁▁▁.▁▁▁▁▁▁▁▁█████████▁▁▁.▁▁▁▁▁▁▁▁▁█████████▁▁.▁▁▁▁▁▁▁▁▁█████████▁▁.▁▁▁▁▁▁▁▁▁▁█████████▁.▁▁▁▁▁▁▁▁▁▁▁████████▁.▁▁▁▁▁▁▁▁▁▁▁████████▁.▁▁▁▁▁▁▁▁▁▁▁▁███████▁.▁▁▁▁▁▁▁▁▁▁▁▁███████▁.▁▁▁▁▁▁▁▁▁▁▁▁▁███████.▁▁▁▁▁▁▁▁▁▁▁▁▁███████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁.▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁`.split(`.`)},moon:{interval:80,frames:[`🌑 `,`🌒 `,`🌓 `,`🌔 `,`🌕 `,`🌖 `,`🌗 `,`🌘 `]},runner:{interval:140,frames:[`🚶 `,`🏃 `]},pong:{interval:80,frames:`▐⠂ ▌.▐⠈ ▌.▐ ⠂ ▌.▐ ⠠ ▌.▐ ⡀ ▌.▐ ⠠ ▌.▐ ⠂ ▌.▐ ⠈ ▌.▐ ⠂ ▌.▐ ⠠ ▌.▐ ⡀ ▌.▐ ⠠ ▌.▐ ⠂ ▌.▐ ⠈ ▌.▐ ⠂▌.▐ ⠠▌.▐ ⡀▌.▐ ⠠ ▌.▐ ⠂ ▌.▐ ⠈ ▌.▐ ⠂ ▌.▐ ⠠ ▌.▐ ⡀ ▌.▐ ⠠ ▌.▐ ⠂ ▌.▐ ⠈ ▌.▐ ⠂ ▌.▐ ⠠ ▌.▐ ⡀ ▌.▐⠠ ▌`.split(`.`)},shark:{interval:120,frames:`▐|\\____________▌.▐_|\\___________▌.▐__|\\__________▌.▐___|\\_________▌.▐____|\\________▌.▐_____|\\_______▌.▐______|\\______▌.▐_______|\\_____▌.▐________|\\____▌.▐_________|\\___▌.▐__________|\\__▌.▐___________|\\_▌.▐____________|\\▌.▐____________/|▌.▐___________/|_▌.▐__________/|__▌.▐_________/|___▌.▐________/|____▌.▐_______/|_____▌.▐______/|______▌.▐_____/|_______▌.▐____/|________▌.▐___/|_________▌.▐__/|__________▌.▐_/|___________▌.▐/|____________▌`.split(`.`)},dqpb:{interval:100,frames:[`d`,`q`,`p`,`b`]},weather:{interval:100,frames:[`☀️ `,`☀️ `,`☀️ `,`🌤 `,`⛅️ `,`🌥 `,`☁️ `,`🌧 `,`🌨 `,`🌧 `,`🌨 `,`🌧 `,`🌨 `,`⛈ `,`🌨 `,`🌧 `,`🌨 `,`☁️ `,`🌥 `,`⛅️ `,`🌤 `,`☀️ `,`☀️ `]},christmas:{interval:400,frames:[`🌲`,`🎄`]},grenade:{interval:80,frames:[`، `,`′ `,` ´ `,` ‾ `,` ⸌`,` ⸊`,` |`,` ⁎`,` ⁕`,` ෴ `,` ⁓`,` `,` `,` `]},point:{interval:125,frames:[`∙∙∙`,`●∙∙`,`∙●∙`,`∙∙●`,`∙∙∙`]},layer:{interval:150,frames:[`-`,`=`,`≡`]},betaWave:{interval:80,frames:[`ρββββββ`,`βρβββββ`,`ββρββββ`,`βββρβββ`,`ββββρββ`,`βββββρβ`,`ββββββρ`]},fingerDance:{interval:160,frames:[`🤘 `,`🤟 `,`🖖 `,`✋ `,`🤚 `,`👆 `]},fistBump:{interval:80,frames:[`🤜    🤛 `,`🤜    🤛 `,`🤜    🤛 `,` 🤜  🤛  `,`  🤜🤛   `,` 🤜✨🤛   `,`🤜 ✨ 🤛  `]},soccerHeader:{interval:80,frames:[` 🧑⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `,`🧑 ⚽️ 🧑 `]},mindblown:{interval:160,frames:[`😐 `,`😐 `,`😮 `,`😮 `,`😦 `,`😦 `,`😧 `,`😧 `,`🤯 `,`💥 `,`✨ `,`  `,`  `,`  `]},speaker:{interval:160,frames:[`🔈 `,`🔉 `,`🔊 `,`🔉 `]},orangePulse:{interval:100,frames:[`🔸 `,`🔶 `,`🟠 `,`🟠 `,`🔶 `]},bluePulse:{interval:100,frames:[`🔹 `,`🔷 `,`🔵 `,`🔵 `,`🔷 `]},orangeBluePulse:{interval:100,frames:[`🔸 `,`🔶 `,`🟠 `,`🟠 `,`🔶 `,`🔹 `,`🔷 `,`🔵 `,`🔵 `,`🔷 `]},timeTravel:{interval:100,frames:[`🕛 `,`🕚 `,`🕙 `,`🕘 `,`🕗 `,`🕖 `,`🕕 `,`🕔 `,`🕓 `,`🕒 `,`🕑 `,`🕐 `]},aesthetic:{interval:80,frames:[`▰▱▱▱▱▱▱`,`▰▰▱▱▱▱▱`,`▰▰▰▱▱▱▱`,`▰▰▰▰▱▱▱`,`▰▰▰▰▰▱▱`,`▰▰▰▰▰▰▱`,`▰▰▰▰▰▰▰`,`▰▱▱▱▱▱▱`]},dwarfFortress:{interval:80,frames:` ██████£££ .☺██████£££ .☺██████£££ .☺▓█████£££ .☺▓█████£££ .☺▒█████£££ .☺▒█████£££ .☺░█████£££ .☺░█████£££ .☺ █████£££ . ☺█████£££ . ☺█████£££ . ☺▓████£££ . ☺▓████£££ . ☺▒████£££ . ☺▒████£££ . ☺░████£££ . ☺░████£££ . ☺ ████£££ . ☺████£££ . ☺████£££ . ☺▓███£££ . ☺▓███£££ . ☺▒███£££ . ☺▒███£££ . ☺░███£££ . ☺░███£££ . ☺ ███£££ . ☺███£££ . ☺███£££ . ☺▓██£££ . ☺▓██£££ . ☺▒██£££ . ☺▒██£££ . ☺░██£££ . ☺░██£££ . ☺ ██£££ . ☺██£££ . ☺██£££ . ☺▓█£££ . ☺▓█£££ . ☺▒█£££ . ☺▒█£££ . ☺░█£££ . ☺░█£££ . ☺ █£££ . ☺█£££ . ☺█£££ . ☺▓£££ . ☺▓£££ . ☺▒£££ . ☺▒£££ . ☺░£££ . ☺░£££ . ☺ £££ . ☺£££ . ☺£££ . ☺▓££ . ☺▓££ . ☺▒££ . ☺▒££ . ☺░££ . ☺░££ . ☺ ££ . ☺££ . ☺££ . ☺▓£ . ☺▓£ . ☺▒£ . ☺▒£ . ☺░£ . ☺░£ . ☺ £ . ☺£ . ☺£ . ☺▓ . ☺▓ . ☺▒ . ☺▒ . ☺░ . ☺░ . ☺ . ☺ &. ☺ ☼&. ☺ ☼ &. ☺☼ &. ☺☼ & . ‼ & . ☺ & . ‼ & . ☺ & . ‼ & . ☺ & .‼ & . & . & . & ░ . & ▒ . & ▓ . & £ . & ░£ . & ▒£ . & ▓£ . & ££ . & ░££ . & ▒££ .& ▓££ .& £££ . ░£££ . ▒£££ . ▓£££ . █£££ . ░█£££ . ▒█£££ . ▓█£££ . ██£££ . ░██£££ . ▒██£££ . ▓██£££ . ███£££ . ░███£££ . ▒███£££ . ▓███£££ . ████£££ . ░████£££ . ▒████£££ . ▓████£££ . █████£££ . ░█████£££ . ▒█████£££ . ▓█████£££ . ██████£££ . ██████£££ `.split(`.`)}};const je=i?.WriteStream?.prototype?.hasColors?.()??!1,V=(e,t)=>{if(!je)return e=>e;let n=`\u001B[${e}m`,r=`\u001B[${t}m`;return e=>{let i=e+``,a=i.indexOf(r);if(a===-1)return n+i+r;let o=n,s=0,c=(t===22?r:``)+n;for(;a!==-1;)o+=i.slice(s,a)+c,s=a+r.length,a=i.indexOf(r,s);return o+=i.slice(s)+r,o}};V(0,0),V(1,22),V(2,22),V(3,23),V(4,24),V(53,55),V(7,27),V(8,28),V(9,29),V(30,39);const Me=V(31,39),Ne=V(32,39),Pe=V(33,39),Fe=V(34,39);V(35,39),V(36,39),V(37,39),V(90,39),V(40,49),V(41,49),V(42,49),V(43,49),V(44,49),V(45,49),V(46,49),V(47,49),V(100,49),V(91,39),V(92,39),V(93,39),V(94,39),V(95,39),V(96,39),V(97,39),V(101,49),V(102,49),V(103,49),V(104,49),V(105,49),V(106,49),V(107,49);function H(){let{env:t}=e,{TERM:n,TERM_PROGRAM:r}=t;return e.platform===`win32`?!!t.WT_SESSION||!!t.TERMINUS_SUBLIME||t.ConEmuTask===`{cmd::Cmder}`||r===`Terminus-Sublime`||r===`vscode`||n===`xterm-256color`||n===`alacritty`||n===`rxvt-unicode`||n===`rxvt-unicode-256color`||t.TERMINAL_EMULATOR===`JetBrains-JediTerm`:n!==`linux`}const U=H(),Ie=Fe(U?`ℹ`:`i`),Le=Ne(U?`✔`:`√`),Re=Pe(U?`⚠`:`‼`),ze=Me(U?`✖`:`×`);function Be({onlyFirst:e=!1}={}){let t=[`[\\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(t,e?void 0:`g`)}const Ve=Be();function He(e){if(typeof e!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Ve,``)}function Ue(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function We(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function Ge(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function Ke(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function W(e,{ambiguousAsWide:t=!1}={}){return Ke(e),We(e)||Ge(e)||t&&Ue(e)?2:1}const qe=new Intl.Segmenter,Je=/^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Mark}|\p{Surrogate})+$/v,Ye=/^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v,Xe=/^\p{RGI_Emoji}$/v;function Ze(e){return e.replace(Ye,``)}function Qe(e){return Je.test(e)}function $e(e,t){let n=0;if(e.length>1)for(let r of e.slice(1))r>=`＀`&&r<=`￯`&&(n+=W(r.codePointAt(0),t));return n}function et(e,t={}){if(typeof e!=`string`||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t,i=e;if(r||(i=He(i)),i.length===0)return 0;let a=0,o={ambiguousAsWide:!n};for(let{segment:e}of qe.segment(i)){if(Qe(e))continue;if(Xe.test(e)){a+=2;continue}let t=Ze(e).codePointAt(0);a+=W(t,o),a+=$e(e,o)}return a}function tt({stream:e=process.stdout}={}){return!!(e&&e.isTTY&&process.env.TERM!==`dumb`&&!(`CI`in process.env))}const nt=new class{#e=0;#t;#n=!1;#r=!1;#i=t=>{t?.length&&(typeof t==`string`?t.codePointAt(0):t[0])===3&&(e.listenerCount(`SIGINT`)>0?e.emit(`SIGINT`):e.kill(e.pid,`SIGINT`))};start(){this.#e++,this.#e===1&&this.#a()}stop(){this.#e!==0&&--this.#e===0&&this.#o()}#a(){let{stdin:t}=e;if(e.platform===`win32`||!t?.isTTY||typeof t.setRawMode!=`function`){this.#t=void 0;return}this.#t=t,this.#n=t.isPaused(),this.#r=!!t.isRaw,t.setRawMode(!0),t.prependListener(`data`,this.#i),this.#n&&t.resume()}#o(){if(!this.#t)return;let e=this.#t;e.off(`data`,this.#i),e.isTTY&&e.setRawMode?.(this.#r),this.#n&&e.pause(),this.#t=void 0,this.#n=!1,this.#r=!1}};var G=Object.freeze(nt);const K=new Map;var rt=class{#e=0;#t=-1;#n=0;#r;#i;#a;#o;#s=new Map;#c=!1;#l;#u;#d=!1;color;#f(e){this.#c=!0;try{return e()}finally{this.#c=!1}}#p(){this.isSpinning&&this.render()}#m(e,t){if(e==null)return``;if(typeof e==`string`)return e;if(Buffer.isBuffer(e)||ArrayBuffer.isView(e)){let n=typeof t==`string`&&t&&t!==`buffer`?t:`utf8`;return Buffer.from(e).toString(n)}return String(e)}#h(e){if(!e)return!1;let t=e.at(-1);return t===`
6
+ `||t===`\r`}#g(){this.#u||(this.#u=setTimeout(()=>{this.#u=void 0,this.isSpinning&&this.#p()},200),typeof this.#u?.unref==`function`&&this.#u.unref())}#_(){this.#u&&=(clearTimeout(this.#u),void 0)}#v(e,t,n,r){let i=this.#b(n,` `),a=typeof t==`string`?(e?` `:``)+t:``,o=this.#x(r,` `);return i+e+a+o}constructor(t){typeof t==`string`&&(t={text:t}),this.#r={color:`cyan`,stream:e.stderr,discardStdin:!0,hideCursor:!0,...t},this.color=this.#r.color,this.#a=this.#r.stream,typeof this.#r.isEnabled!=`boolean`&&(this.#r.isEnabled=tt({stream:this.#a})),typeof this.#r.isSilent!=`boolean`&&(this.#r.isSilent=!1);let n=this.#r.interval;this.spinner=this.#r.spinner,this.#r.interval=n,this.text=this.#r.text,this.prefixText=this.#r.prefixText,this.suffixText=this.#r.suffixText,this.indent=this.#r.indent,e.env.NODE_ENV===`test`&&(this._stream=this.#a,this._isEnabled=this.#r.isEnabled,Object.defineProperty(this,`_linesToClear`,{get(){return this.#e},set(e){this.#e=e}}),Object.defineProperty(this,`_frameIndex`,{get(){return this.#t}}),Object.defineProperty(this,`_lineCount`,{get(){let e=this.#a.columns??80,t=typeof this.#r.prefixText==`function`?``:this.#r.prefixText,n=typeof this.#r.suffixText==`function`?``:this.#r.suffixText,r=typeof t==`string`&&t!==``?t+` `:``,i=typeof n==`string`&&n!==``?` `+n:``,a=` `.repeat(this.#r.indent)+r+`-`+(typeof this.#r.text==`string`?` `+this.#r.text:``)+i;return this.#S(a,e)}}))}get indent(){return this.#r.indent}set indent(e=0){if(!(e>=0&&Number.isInteger(e)))throw Error("The `indent` option must be an integer from 0 and up");this.#r.indent=e}get interval(){return this.#r.interval??this.#i.interval??100}get spinner(){return this.#i}set spinner(e){if(this.#t=-1,this.#r.interval=void 0,typeof e==`object`){if(!Array.isArray(e.frames)||e.frames.length===0||e.frames.some(e=>typeof e!=`string`))throw Error("The given spinner must have a non-empty `frames` array of strings");if(e.interval!==void 0&&!(Number.isInteger(e.interval)&&e.interval>0))throw Error("`spinner.interval` must be a positive integer if provided");this.#i=e}else if(!H())this.#i=B.line;else if(e===void 0)this.#i=B.dots;else if(e!==`default`&&B[e])this.#i=B[e];else throw Error(`There is no built-in spinner named '${e}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#r.text}set text(e=``){this.#r.text=e}get prefixText(){return this.#r.prefixText}set prefixText(e=``){this.#r.prefixText=e}get suffixText(){return this.#r.suffixText}set suffixText(e=``){this.#r.suffixText=e}get isSpinning(){return this.#o!==void 0}#y(e,t,n=!1){let r=typeof e==`function`?e():e;return typeof r==`string`&&r!==``?n?t+r:r+t:``}#b(e=this.#r.prefixText,t=` `){return this.#y(e,t,!1)}#x(e=this.#r.suffixText,t=` `){return this.#y(e,t,!0)}#S(e,n){let r=0;for(let i of t(e).split(`
7
+ `))r+=Math.max(1,Math.ceil(et(i)/n));return r}get isEnabled(){return this.#r.isEnabled&&!this.#r.isSilent}set isEnabled(e){if(typeof e!=`boolean`)throw TypeError("The `isEnabled` option must be a boolean");this.#r.isEnabled=e}get isSilent(){return this.#r.isSilent}set isSilent(e){if(typeof e!=`boolean`)throw TypeError("The `isSilent` option must be a boolean");this.#r.isSilent=e}frame(){let e=Date.now();(this.#t===-1||e-this.#n>=this.interval)&&(this.#t=(this.#t+1)%this.#i.frames.length,this.#n=e);let{frames:t}=this.#i,n=t[this.#t];this.color&&(n=pe[this.color](n));let r=this.#b(this.#r.prefixText,` `),i=typeof this.text==`string`?` `+this.text:``,a=this.#x(this.#r.suffixText,` `);return r+n+i+a}clear(){return!this.isEnabled||!this.#a.isTTY?this:(this.#f(()=>{this.#a.cursorTo(0);for(let e=0;e<this.#e;e++)e>0&&this.#a.moveCursor(0,-1),this.#a.clearLine(1);this.#r.indent&&this.#a.cursorTo(this.#r.indent)}),this.#e=0,this)}#C(e){if(!e||this.#s.has(e)||!e.isTTY||typeof e.write!=`function`)return;K.has(e)&&console.warn(`[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.`);let t=e.write;this.#s.set(e,t),K.set(e,this),e.write=(n,r,i)=>this.#E(e,t,n,r,i)}#w(){if(!this.isEnabled||this.#s.size>0)return;let t=new Set([this.#a,e.stdout,e.stderr]);for(let e of t)this.#C(e)}#T(){for(let[e,t]of this.#s)e.write=t,K.get(e)===this&&K.delete(e);this.#s.clear()}#E(e,t,n,r,i){if(typeof r==`function`&&(i=r,r=void 0),this.#c)return t.call(e,n,r,i);this.clear();let a=this.#m(n,r),o=this.#h(a),s=t.call(e,n,r,i);return o?this.#_():a.length>0&&this.#g(),this.isSpinning&&!this.#u&&this.render(),s}render(){if(!this.isEnabled||this.#l||this.#u)return this;let e=this.#a.isTTY,t=!1;try{e&&(this.#f(()=>this.#a.write(`\x1B[?2026h`)),t=!0),this.clear();let n=this.frame(),r=this.#a.columns??80,i=this.#S(n,r),a=this.#a.rows;if(a&&a>1&&i>a){let e=n.split(`
8
+ `),t=a-1;n=[...e.slice(0,t),`... (content truncated to fit terminal)`].join(`
9
+ `)}this.#f(()=>this.#a.write(n))===!1&&this.#a.isTTY&&(this.#l=()=>{this.#l=void 0,this.#p()},this.#a.once(`drain`,this.#l)),this.#e=this.#S(n,r)}finally{t&&this.#f(()=>this.#a.write(`\x1B[?2026l`))}return this}start(t){if(t&&(this.text=t),this.isSilent)return this;if(!this.isEnabled){let e=this.text?`-`:``,t=` `.repeat(this.#r.indent)+this.#v(e,this.text,this.#r.prefixText,this.#r.suffixText);return t.trim()!==``&&this.#f(()=>this.#a.write(t+`
10
+ `)),this}return this.isSpinning?this:(this.#r.hideCursor&&z.hide(this.#a),this.#r.discardStdin&&e.stdin.isTTY&&(G.start(),this.#d=!0),this.#w(),this.render(),this.#o=setInterval(this.render.bind(this),this.interval),this)}stop(){return clearInterval(this.#o),this.#o=void 0,this.#t=-1,this.#n=0,this.#_(),this.#T(),this.#l&&=(this.#a.removeListener(`drain`,this.#l),void 0),this.isEnabled&&(this.clear(),this.#r.hideCursor&&z.show(this.#a)),this.#d&&(this.#d=!1,G.stop()),this}succeed(e){return this.stopAndPersist({symbol:Le,text:e})}fail(e){return this.stopAndPersist({symbol:ze,text:e})}warn(e){return this.stopAndPersist({symbol:Re,text:e})}info(e){return this.stopAndPersist({symbol:Ie,text:e})}stopAndPersist(e={}){if(this.isSilent)return this;let t=e.symbol??` `,n=e.text??this.text,r=e.prefixText??this.#r.prefixText,i=e.suffixText??this.#r.suffixText,a=this.#v(t,n,r,i)+`
11
+ `;return this.stop(),this.#f(()=>this.#a.write(a)),this}};function it(e){return new rt(e)}const at=/^[a-z]:/i,q={debug:0,info:1,success:1,warn:2,error:3},J={reset:`\x1B[0m`,dim:`\x1B[2m`,debug:`\x1B[36m`,info:`\x1B[34m`,success:`\x1B[32m`,warn:`\x1B[33m`,error:`\x1B[31m`};function ot(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}function Y(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function st(e){return e.padEnd(7)}function X(){return r()}function Z(e,t){return e.startsWith(`/`)||at.test(e)?e:c(t,e)}var ct=class{currentDate;logFilePath;logDir;constructor(e){this.logDir=e,this.currentDate=Y(new Date),this.ensureLogDir(),this.logFilePath=this.getLogFilePath()}ensureLogDir(){o(this.logDir)||s(this.logDir,{recursive:!0})}getLogFilePath(){return c(this.logDir,`frp-bridge-${this.currentDate}.log`)}write(e){let t=Y(new Date);t!==this.currentDate&&(this.currentDate=t,this.logFilePath=this.getLogFilePath());try{a(this.logFilePath,`${e}\n`,`utf-8`)}catch{}}};let Q={};function lt(e){Q={...Q,...e}}function ut(){return{...Q}}function $(e,t){let n={};n=typeof t==`string`?{level:t}:t??{};let{level:r=`info`,dir:i=`logs`,workspaceRoot:a=Q.workspaceRoot??X(),enableConsole:o=!0,enableFile:s=!0}=n,c=Z(i,a),l={value:r},u=s?new ct(c):null;function d(e,t){return(n,r)=>{if(q[t]<q[l.value])return;let i=ot(new Date),a=`[${e}]`,s=st(t.toUpperCase()),c=``;r&&(c=r instanceof Error?` ${r.message}${r.stack?`\n${r.stack}`:``}`:` ${JSON.stringify(r)}`);let d=`${i} ${s} ${a} ${n}${c}`;if(o){let e=J[t],r=`${J.dim}${i}${J.reset} ${e}${s}${J.reset} ${a} ${n}${c}`;console.log(r)}u&&u.write(d)}}return{debug:d(e,`debug`),info:d(e,`info`),success:d(e,`success`),warn:d(e,`warn`),error:d(e,`error`),setLevel(e){l.value=e}}}const dt=$(`Core`),ft=$(`ConfigMerger`),pt=$(`NodeMgr`),mt=$(`RpcClient`),ht=$(`RpcServer`),gt=$(`RpcMiddleware`),_t=$(`Process`),vt=$(`Node`),yt=$(`Tunnel`),bt=$(`BinaryManager`),xt=$(`PresetConfig`),St=$(`ConfigStore`),Ct=$(`ClientCollector`),wt=$(`Runtime`),Tt=$(`ProcessManager`);async function Et(e,t){let n=it(e).start();return t().finally(()=>{n.stop()})}export{bt as binaryManagerLogger,Ct as clientCollectorLogger,ft as configMergerLogger,St as configurationStoreLogger,dt as coreLogger,$ as createLogger,X as getDefaultWorkspaceRoot,ut as getGlobalLoggerOptions,Et as loadingFunction,vt as nodeControllerLogger,pt as nodeManagerLogger,xt as presetConfigLogger,_t as processControllerLogger,Tt as processLogger,Z as resolveLogDir,mt as rpcClientLogger,gt as rpcMiddlewareLogger,ht as rpcServerLogger,wt as runtimeLogger,lt as setGlobalLoggerOptions,yt as tunnelManagerLogger};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frp-bridge/shared",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.4",
5
5
  "description": "Frp bridge shared utilities",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/frp-web/bridge#readme",
@@ -17,6 +17,16 @@
17
17
  "bridge",
18
18
  "shared"
19
19
  ],
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.mjs"
24
+ },
25
+ "./logger": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.mjs"
28
+ }
29
+ },
20
30
  "main": "dist/index.mjs",
21
31
  "module": "dist/index.mjs",
22
32
  "types": "dist/index.d.ts",
@@ -24,10 +34,10 @@
24
34
  "dist"
25
35
  ],
26
36
  "dependencies": {
27
- "ora": "^9.0.0"
37
+ "ora": "^9.3.0"
28
38
  },
29
39
  "scripts": {
30
- "stub": "unbuild --stub",
31
- "build": "unbuild"
40
+ "dev": "rolldown -c --watch",
41
+ "build": "rolldown -c"
32
42
  }
33
43
  }
package/dist/index.d.mts DELETED
@@ -1,4 +0,0 @@
1
- /** Execute function with loading spinner */
2
- declare function loadingFunction<T>(message: string, fn: () => Promise<T>): Promise<T>;
3
-
4
- export { loadingFunction };
package/dist/index.mjs DELETED
@@ -1 +0,0 @@
1
- import r from"ora";async function i(t,n){const o=r(t).start();return n().finally(()=>{o.stop()})}export{i as loadingFunction};