@stacksjs/rpx 0.9.1 → 0.11.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/LICENSE.md +21 -0
- package/README.md +35 -21
- package/dist/bin/cli.js +7 -7
- package/dist/{chunk-e794mmrn.js → chunk-4960052z.js} +1 -1
- package/dist/chunk-4csm61sj.js +19 -0
- package/dist/chunk-b6654twv.js +24 -0
- package/dist/chunk-pyeywqa0.js +45 -0
- package/dist/chunk-q7w0fwv3.js +1 -0
- package/dist/chunk-s4etpr6b.js +1 -0
- package/dist/chunk-szmp12hh.js +88 -0
- package/dist/config.d.ts +5 -4
- package/dist/dns.d.ts +21 -0
- package/dist/hosts.d.ts +2 -4
- package/dist/https.d.ts +38 -11
- package/dist/index.d.ts +21 -12
- package/dist/logger.d.ts +10 -0
- package/dist/port-manager.d.ts +25 -0
- package/dist/process-manager.d.ts +17 -0
- package/dist/src/index.js +1 -1
- package/dist/start.d.ts +8 -10
- package/dist/types.d.ts +37 -42
- package/dist/utils.d.ts +33 -10
- package/package.json +26 -26
- package/dist/chunk-2y0c08hn.js +0 -24
- package/dist/chunk-45dw2f5f.js +0 -45
- package/dist/chunk-9v712d8y.js +0 -45
- package/dist/chunk-en36kajt.js +0 -24
- package/dist/chunk-wn28gp4d.js +0 -37
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export declare const defaultConfig:
|
|
4
|
-
|
|
1
|
+
import type { ProxyConfig } from './types';
|
|
2
|
+
export declare function getConfig(): Promise<ProxyConfig>;
|
|
3
|
+
export declare const defaultConfig: ProxyConfig;
|
|
4
|
+
// For backwards compatibility - synchronous access with default fallback
|
|
5
|
+
export declare const config: ProxyConfig;
|
package/dist/dns.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Start the DNS server
|
|
3
|
+
*/
|
|
4
|
+
export declare function startDnsServer(domains: string[], verbose?: boolean): Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Stop the DNS server
|
|
7
|
+
*/
|
|
8
|
+
export declare function stopDnsServer(verbose?: boolean): void;
|
|
9
|
+
/**
|
|
10
|
+
* Check if DNS server is running
|
|
11
|
+
*/
|
|
12
|
+
export declare function isDnsServerRunning(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Set up the macOS resolver for configured domains
|
|
15
|
+
* Creates /etc/resolver/<tld> files pointing to our local DNS server
|
|
16
|
+
*/
|
|
17
|
+
export declare function setupResolver(verbose?: boolean, domains?: string[]): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Remove the macOS resolver files we created
|
|
20
|
+
*/
|
|
21
|
+
export declare function removeResolver(verbose?: boolean): Promise<void>;
|
package/dist/hosts.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
declare const execAsync: unknown;
|
|
2
|
-
export declare const hostsFilePath: string;
|
|
3
|
-
declare function execSudo(command: string): Promise<void>;
|
|
4
1
|
export declare function addHosts(hosts: string[], verbose?: boolean): Promise<void>;
|
|
5
2
|
export declare function removeHosts(hosts: string[], verbose?: boolean): Promise<void>;
|
|
6
|
-
export declare function checkHosts(hosts: string[], verbose?: boolean): Promise<boolean[]>;
|
|
3
|
+
export declare function checkHosts(hosts: string[], verbose?: boolean): Promise<boolean[]>;
|
|
4
|
+
export declare const hostsFilePath: string;
|
package/dist/https.d.ts
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { config } from './config';
|
|
2
|
+
import type { ProxyConfigs, ProxyOption, ProxyOptions, SSLConfig, TlsConfig } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves SSL paths based on configuration
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveSSLPaths(options: ProxyConfigs, defaultConfig: typeof config): TlsConfig;
|
|
7
|
+
// Generate wildcard patterns for a domain
|
|
4
8
|
export declare function generateWildcardPatterns(domain: string): string[];
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export declare function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Generates SSL file paths based on domain
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateSSLPaths(options?: ProxyOptions): {
|
|
13
|
+
caCertPath: string
|
|
14
|
+
certPath: string
|
|
15
|
+
keyPath: string
|
|
16
|
+
};
|
|
17
|
+
export declare function getAllDomains(options: ProxyOption | ProxyOptions): Set<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Load SSL certificates from files or use provided strings
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadSSLConfig(options: ProxyOption): Promise<SSLConfig | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Force trust a certificate - exposing for direct use
|
|
24
|
+
*/
|
|
25
|
+
export declare function forceTrustCertificate(certPath: string): Promise<boolean>;
|
|
26
|
+
export declare function generateCertificate(options: ProxyOptions): Promise<void>;
|
|
27
|
+
export declare function getSSLConfig(): { key: string, cert: string, ca?: string } | null;
|
|
28
|
+
// needs to accept the options
|
|
29
|
+
export declare function checkExistingCertificates(options?: ProxyOptions): Promise<SSLConfig | null>;
|
|
30
|
+
export declare function httpsConfig(options: ProxyOption | ProxyOptions, verbose?: boolean): TlsConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Clean up SSL certificates for a specific domain
|
|
33
|
+
*/
|
|
34
|
+
export declare function cleanupCertificates(domain: string, verbose?: boolean): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Checks if a certificate is trusted by the system (macOS only for now)
|
|
37
|
+
* If options.regenerateUntrustedCerts is false, always returns true (skips trust check)
|
|
38
|
+
*/
|
|
39
|
+
export declare function isCertTrusted(certPath: string, options?: { verbose?: boolean, regenerateUntrustedCerts?: boolean }): Promise<boolean>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
export { config, config as defaultConfig } from './config';
|
|
2
|
+
export {
|
|
3
|
+
addHosts,
|
|
4
|
+
checkHosts,
|
|
5
|
+
removeHosts,
|
|
6
|
+
} from './hosts';
|
|
7
|
+
export {
|
|
8
|
+
checkExistingCertificates,
|
|
9
|
+
cleanupCertificates,
|
|
10
|
+
forceTrustCertificate,
|
|
11
|
+
generateCertificate,
|
|
12
|
+
httpsConfig,
|
|
13
|
+
isCertTrusted,
|
|
14
|
+
loadSSLConfig,
|
|
15
|
+
} from './https';
|
|
16
|
+
export { DefaultPortManager, findAvailablePort, isPortInUse, portManager } from './port-manager';
|
|
17
|
+
export { cleanup } from './start';
|
|
18
|
+
export { startProxies, startProxy, startServer } from './start';
|
|
19
|
+
export * from './types';
|
|
20
|
+
export * from './utils';
|
|
21
|
+
export default startProxiesFunc;
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const log: {
|
|
2
|
+
info: (...args: any[]) => void
|
|
3
|
+
success: (...args: any[]) => void
|
|
4
|
+
warn: (...args: any[]) => void
|
|
5
|
+
error: (...args: any[]) => void
|
|
6
|
+
debug: (...args: any[]) => void
|
|
7
|
+
log: (...args: any[]) => void
|
|
8
|
+
start: (...args: any[]) => void
|
|
9
|
+
box: (...args: any[]) => void
|
|
10
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PortManager } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Check if a port is in use
|
|
4
|
+
*/
|
|
5
|
+
export declare function isPortInUse(port: number, hostname: string, verbose?: boolean): Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Find next available port
|
|
8
|
+
*/
|
|
9
|
+
export declare function findAvailablePort(startPort: number, hostname: string, verbose?: boolean, maxAttempts?: any): Promise<number>;
|
|
10
|
+
/**
|
|
11
|
+
* Test if a port is actually connectable
|
|
12
|
+
*/
|
|
13
|
+
export declare function testPortConnectivity(port: number, hostname: string, timeout?: any, verbose?: boolean): Promise<boolean>;
|
|
14
|
+
// Global port manager instance
|
|
15
|
+
export declare const portManager: DefaultPortManager;
|
|
16
|
+
export declare class DefaultPortManager implements PortManager {
|
|
17
|
+
usedPorts: Set<number>;
|
|
18
|
+
private hostname: string;
|
|
19
|
+
private verbose?: boolean;
|
|
20
|
+
private maxRetries: number;
|
|
21
|
+
constructor(hostname?: string, verbose?: boolean, maxRetries?: any);
|
|
22
|
+
getNextAvailablePort(startPort: number, testConnectivity?: any): Promise<number>;
|
|
23
|
+
private findNextAvailablePort(startPort: number, testConnectivity?: any): Promise<number>;
|
|
24
|
+
releasePort(port: number): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChildProcess } from 'node:child_process';
|
|
2
|
+
import type { StartOptions } from './types';
|
|
3
|
+
export declare const processManager: ProcessManager;
|
|
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>;
|
|
12
|
+
private isShuttingDown: any;
|
|
13
|
+
startProcess(id: string, options: StartOptions, verbose?: boolean): Promise<void>;
|
|
14
|
+
stopProcess(id: string, verbose?: boolean): Promise<void>;
|
|
15
|
+
stopAll(verbose?: boolean): Promise<void>;
|
|
16
|
+
isRunning(id: string): boolean;
|
|
17
|
+
}
|
package/dist/src/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as o,c as t,d as e,e as f,f as a,g as i,h as s,i as p,j as c,k as x,l as n,m,n as g,o as C,p as P,r as l,s as d,t as u,u as r}from"../chunk-szmp12hh.js";import"../chunk-b6654twv.js";import{C as L,D as U,E as j,F as q,G as z,H as B,I as G,J as I,K as J,L as K,M as N}from"../chunk-4csm61sj.js";import"../chunk-4960052z.js";var F=r;export{d as startServer,u as startProxy,r as startProxies,N as safeDeleteFile,e as removeHosts,P as portManager,a as loadSSLConfig,z as isValidRootCA,J as isSingleProxyOptions,K as isSingleProxyConfig,m as isPortInUse,I as isMultiProxyOptions,G as isMultiProxyConfig,n as isCertTrusted,c as httpsConfig,L as getSudoPassword,B as getPrimaryDomain,s as generateCertificate,i as forceTrustCertificate,g as findAvailablePort,q as extractHostname,U as execSudoSync,o as defaultConfig,F as default,j as debugLog,o as config,x as cleanupCertificates,l as cleanup,f as checkHosts,p as checkExistingCertificates,t as addHosts,C as DefaultPortManager};
|
package/dist/start.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import type { CleanupOptions,
|
|
2
|
-
|
|
3
|
-
declare const activeServers: Set<http.Server | https.Server>;
|
|
1
|
+
import type { CleanupOptions, ProxyOption, ProxyOptions, ProxySetupOptions, SingleProxyConfig } from './types';
|
|
4
2
|
export declare function cleanup(options?: CleanupOptions): Promise<void>;
|
|
5
|
-
declare function
|
|
6
|
-
declare function
|
|
7
|
-
declare function testConnection(hostname: string, port: number, verbose?: boolean): Promise<void>;
|
|
8
|
-
export declare function startServer(options: SingleReverseProxyConfig): Promise<void>;
|
|
9
|
-
export declare function setupReverseProxy(options: ProxySetupOptions): Promise<void>;
|
|
3
|
+
export declare function startServer(options: SingleProxyConfig): Promise<void>;
|
|
4
|
+
export declare function setupProxy(options: ProxySetupOptions): Promise<void>;
|
|
10
5
|
export declare function startHttpRedirectServer(verbose?: boolean): void;
|
|
11
|
-
export declare function startProxy(options:
|
|
12
|
-
export declare function startProxies(options?:
|
|
6
|
+
export declare function startProxy(options: ProxyOption): void;
|
|
7
|
+
export declare function startProxies(options?: ProxyOptions): Promise<void>;
|
|
8
|
+
declare type AnyServerType = http.Server | https.Server | http2.Http2SecureServer
|
|
9
|
+
declare type AnyIncomingMessage = http.IncomingMessage | http2.Http2ServerRequest
|
|
10
|
+
declare type AnyServerResponse = http.ServerResponse | http2.Http2ServerResponse
|
package/dist/types.d.ts
CHANGED
|
@@ -1,66 +1,61 @@
|
|
|
1
1
|
import type { TlsConfig, TlsOption } from '@stacksjs/tlsx';
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
cleanUrls: boolean
|
|
2
|
+
export type { TlsConfig, TlsOption };
|
|
3
|
+
export declare interface StartOptions {
|
|
4
|
+
command: string
|
|
5
|
+
cwd?: string
|
|
6
|
+
env?: Record<string, string>
|
|
8
7
|
}
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
hosts: boolean
|
|
14
|
-
certs: boolean
|
|
15
|
-
verbose: boolean
|
|
8
|
+
export declare interface BaseProxyConfig {
|
|
9
|
+
from: string
|
|
10
|
+
to: string
|
|
11
|
+
start?: StartOptions
|
|
16
12
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
export declare interface CleanupConfig {
|
|
14
|
+
domains: string[]
|
|
15
|
+
hosts: boolean
|
|
16
|
+
certs: boolean
|
|
17
|
+
verbose: boolean
|
|
18
|
+
vitePluginUsage?: boolean
|
|
19
|
+
}
|
|
20
|
+
export declare interface SharedProxyConfig {
|
|
21
21
|
https: boolean | TlsOption
|
|
22
22
|
cleanup: boolean | CleanupOptions
|
|
23
23
|
vitePluginUsage: boolean
|
|
24
24
|
verbose: boolean
|
|
25
25
|
_cachedSSLConfig?: SSLConfig | null
|
|
26
|
+
start?: StartOptions
|
|
27
|
+
cleanUrls: boolean
|
|
28
|
+
changeOrigin?: boolean
|
|
29
|
+
regenerateUntrustedCerts?: boolean
|
|
26
30
|
}
|
|
27
|
-
export
|
|
31
|
+
export declare interface SingleProxyConfig extends BaseProxyConfig, SharedProxyConfig {
|
|
28
32
|
|
|
29
|
-
export interface SingleReverseProxyConfig extends BaseReverseProxyConfig, SharedProxyConfig {}
|
|
30
|
-
export interface MultiReverseProxyConfig extends SharedProxyConfig {
|
|
31
|
-
proxies: BaseReverseProxyConfig[]
|
|
32
33
|
}
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
export
|
|
37
|
-
export type ReverseProxyOption = Partial<SingleReverseProxyConfig>
|
|
38
|
-
export type ReverseProxyOptions = Partial<SingleReverseProxyConfig> | Partial<MultiReverseProxyConfig>
|
|
39
|
-
|
|
40
|
-
export interface SSLConfig {
|
|
34
|
+
export declare interface MultiProxyConfig extends SharedProxyConfig {
|
|
35
|
+
proxies: Array<BaseProxyConfig & { cleanUrls: boolean }>
|
|
36
|
+
}
|
|
37
|
+
export declare interface SSLConfig {
|
|
41
38
|
key: string
|
|
42
39
|
cert: string
|
|
43
40
|
ca?: string | string[]
|
|
44
41
|
}
|
|
45
|
-
|
|
46
|
-
export interface ProxySetupOptions extends Omit<ReverseProxyOption, 'from'> {
|
|
42
|
+
export declare interface ProxySetupOptions extends Omit<ProxyOption, 'from'> {
|
|
47
43
|
fromPort: number
|
|
48
44
|
sourceUrl: Pick<URL, 'hostname' | 'host'>
|
|
49
45
|
ssl: SSLConfig | null
|
|
50
46
|
from: string
|
|
51
47
|
to: string
|
|
48
|
+
portManager?: PortManager
|
|
52
49
|
}
|
|
53
|
-
|
|
54
|
-
export interface PortManager {
|
|
50
|
+
export declare interface PortManager {
|
|
55
51
|
usedPorts: Set<number>
|
|
56
52
|
getNextAvailablePort: (startPort: number) => Promise<number>
|
|
57
53
|
}
|
|
58
|
-
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
54
|
+
export type BaseProxyOptions = Partial<BaseProxyConfig>
|
|
55
|
+
export type CleanupOptions = Partial<CleanupConfig>
|
|
56
|
+
export type SharedProxyOptions = Partial<SharedProxyConfig>
|
|
57
|
+
export type ProxyConfig = SingleProxyConfig
|
|
58
|
+
export type ProxyConfigs = SingleProxyConfig | MultiProxyConfig
|
|
59
|
+
export type BaseProxyOption = Partial<BaseProxyConfig>
|
|
60
|
+
export type ProxyOption = Partial<SingleProxyConfig>
|
|
61
|
+
export type ProxyOptions = Partial<SingleProxyConfig> | Partial<MultiProxyConfig>
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,14 +1,37 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { MultiProxyConfig, ProxyConfigs, ProxyOption, ProxyOptions, SingleProxyConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Get sudo password from environment variable if set
|
|
4
|
+
*/
|
|
5
|
+
export declare function getSudoPassword(): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Execute a command with sudo, using SUDO_PASSWORD if available
|
|
8
|
+
*/
|
|
9
|
+
export declare function execSudoSync(command: string): string;
|
|
3
10
|
export declare function debugLog(category: string, message: string, verbose?: boolean): void;
|
|
4
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Extracts hostnames from proxy configuration
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractHostname(options: ProxyOption | ProxyOptions): string[];
|
|
15
|
+
export declare function isValidRootCA(value: unknown): value is RootCA;
|
|
16
|
+
export declare function getPrimaryDomain(options?: ProxyOption | ProxyOptions): string;
|
|
17
|
+
/**
|
|
18
|
+
* Type guard for multi-proxy configuration
|
|
19
|
+
*/
|
|
20
|
+
export declare function isMultiProxyConfig(options: ProxyConfigs | ProxyOptions): options is MultiProxyConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Type guard to check if options are for multi-proxy configuration
|
|
23
|
+
*/
|
|
24
|
+
export declare function isMultiProxyOptions(options: ProxyOption | ProxyOptions): options is MultiProxyConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Type guard to check if options are for single-proxy configuration
|
|
27
|
+
*/
|
|
28
|
+
export declare function isSingleProxyOptions(options: ProxyOption | ProxyOptions): options is SingleProxyConfig;
|
|
29
|
+
export declare function isSingleProxyConfig(options: ProxyConfigs | ProxyOptions): options is SingleProxyConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Safely delete a file if it exists
|
|
32
|
+
*/
|
|
33
|
+
export declare function safeDeleteFile(filePath: string, verbose?: boolean): Promise<void>;
|
|
5
34
|
declare interface RootCA {
|
|
6
35
|
certificate: string
|
|
7
36
|
privateKey: string
|
|
8
|
-
}
|
|
9
|
-
export declare function isValidRootCA(value: unknown): value is RootCA;
|
|
10
|
-
export declare function getPrimaryDomain(options?: ReverseProxyOption | ReverseProxyOptions): string;
|
|
11
|
-
export declare function isMultiProxyConfig(options: ReverseProxyConfigs): options is MultiReverseProxyConfig;
|
|
12
|
-
export declare function isMultiProxyOptions(options: ReverseProxyOption | ReverseProxyOptions): options is MultiReverseProxyConfig;
|
|
13
|
-
export declare function isSingleProxyOptions(options: ReverseProxyOption | ReverseProxyOptions): options is SingleReverseProxyConfig;
|
|
14
|
-
export declare function safeDeleteFile(filePath: string, verbose?: boolean): Promise<void>;
|
|
37
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stacksjs/rpx",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.11.0",
|
|
5
5
|
"description": "A modern and smart reverse proxy.",
|
|
6
6
|
"author": "Chris Breuer <chris@stacksjs.org>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
],
|
|
27
27
|
"exports": {
|
|
28
28
|
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
29
30
|
"import": "./dist/src/index.js"
|
|
30
31
|
}
|
|
31
32
|
},
|
|
@@ -35,7 +36,10 @@
|
|
|
35
36
|
"rpx": "./dist/bin/cli.js",
|
|
36
37
|
"reverse-proxy": "./dist/bin/cli.js"
|
|
37
38
|
},
|
|
38
|
-
"files": [
|
|
39
|
+
"files": [
|
|
40
|
+
"README.md",
|
|
41
|
+
"dist"
|
|
42
|
+
],
|
|
39
43
|
"scripts": {
|
|
40
44
|
"build": "bun build.ts && bun run compile",
|
|
41
45
|
"compile": "bun build ./bin/cli.ts --compile --minify --outfile bin/rpx",
|
|
@@ -45,40 +49,36 @@
|
|
|
45
49
|
"compile:windows-x64": "bun build ./bin/cli.ts --compile --minify --target=bun-windows-x64 --outfile bin/rpx-windows-x64.exe",
|
|
46
50
|
"compile:darwin-x64": "bun build ./bin/cli.ts --compile --minify --target=bun-darwin-x64 --outfile bin/rpx-darwin-x64",
|
|
47
51
|
"compile:darwin-arm64": "bun build ./bin/cli.ts --compile --minify --target=bun-darwin-arm64 --outfile bin/rpx-darwin-arm64",
|
|
48
|
-
"lint": "bunx --bun eslint
|
|
49
|
-
"lint:fix": "bunx --bun eslint
|
|
52
|
+
"lint": "bunx --bun eslint .",
|
|
53
|
+
"lint:fix": "bunx --bun eslint . --fix",
|
|
50
54
|
"fresh": "bunx rimraf node_modules/ bun.lock && bun i",
|
|
51
|
-
"changelog": "
|
|
52
|
-
"prepublishOnly": "bun --bun run build && bun run compile:all",
|
|
53
|
-
"release": "bun run changelog && bunx bumpp package.json --all",
|
|
55
|
+
"changelog": "changelogen --output CHANGELOG.md",
|
|
56
|
+
"prepublishOnly": "bun --bun run build && bun run compile:all && bun run zip",
|
|
54
57
|
"test": "bun test",
|
|
55
58
|
"typecheck": "bunx tsc --noEmit",
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
+
"zip": "bun run zip:all",
|
|
60
|
+
"zip:all": "bun run zip:linux-x64 && bun run zip:linux-arm64 && bun run zip:windows-x64 && bun run zip:darwin-x64 && bun run zip:darwin-arm64",
|
|
61
|
+
"zip:linux-x64": "zip -j bin/rpx-linux-x64.zip bin/rpx-linux-x64",
|
|
62
|
+
"zip:linux-arm64": "zip -j bin/rpx-linux-arm64.zip bin/rpx-linux-arm64",
|
|
63
|
+
"zip:windows-x64": "zip -j bin/rpx-windows-x64.zip bin/rpx-windows-x64.exe",
|
|
64
|
+
"zip:darwin-x64": "zip -j bin/rpx-darwin-x64.zip bin/rpx-darwin-x64",
|
|
65
|
+
"zip:darwin-arm64": "zip -j bin/rpx-darwin-arm64.zip bin/rpx-darwin-arm64"
|
|
59
66
|
},
|
|
60
67
|
"devDependencies": {
|
|
61
|
-
"@
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"@stacksjs/tlsx": "^0.9.0",
|
|
65
|
-
"@types/bun": "^1.1.14",
|
|
66
|
-
"@vite-pwa/vitepress": "^0.5.3",
|
|
67
|
-
"bun-config": "^0.3.2",
|
|
68
|
-
"bun-plugin-dtsx": "^0.21.9",
|
|
68
|
+
"@stacksjs/tlsx": "^0.10.0",
|
|
69
|
+
"bun-plugin-dtsx": "^0.21.17",
|
|
70
|
+
"bunfig": "^0.15.6",
|
|
69
71
|
"cac": "^6.7.14",
|
|
70
|
-
"consola": "^3.2
|
|
71
|
-
"typescript": "^5.
|
|
72
|
-
"unocss": "0.61.0",
|
|
73
|
-
"unplugin-icons": "^0.22.0",
|
|
74
|
-
"unplugin-vue-components": "^0.28.0",
|
|
75
|
-
"vite-plugin-pwa": "^0.21.1",
|
|
76
|
-
"vitepress": "^1.5.0"
|
|
72
|
+
"consola": "^3.4.2",
|
|
73
|
+
"typescript": "^5.9.3"
|
|
77
74
|
},
|
|
78
75
|
"simple-git-hooks": {
|
|
79
76
|
"pre-commit": "bunx lint-staged"
|
|
80
77
|
},
|
|
81
78
|
"lint-staged": {
|
|
82
|
-
"*.{js,ts}": "bunx eslint
|
|
79
|
+
"*.{js,ts}": "bunx eslint . --fix"
|
|
80
|
+
},
|
|
81
|
+
"dependencies": {
|
|
82
|
+
"picocolors": "^1.1.1"
|
|
83
83
|
}
|
|
84
84
|
}
|
package/dist/chunk-2y0c08hn.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import{P as q,R as X}from"./chunk-e794mmrn.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
|
-
`);F.args.push(`
|
|
3
|
-
`+F.additional.join(`
|
|
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(`
|
|
5
|
-
`).splice(1).map((e)=>e.trim().replace("file://","").replace(t,""))}function sD(u,t){return(t.__write||t.write).call(t,u)}var R=(u)=>u?`[${u}]`:"";class w{formatStack(u,t){return" "+j(u).join(`
|
|
6
|
-
`)}formatArgs(u,t){let e=u.map((F)=>{if(F&&typeof F.stack==="string")return F.message+`
|
|
7
|
-
`+this.formatStack(F.stack,t);return F});return iD(t,...e)}formatDate(u,t){return t.date?u.toLocaleTimeString():""}filterAndJoin(u){return u.filter(Boolean).join(" ")}formatLogObj(u,t){let e=this.formatArgs(u.args,t);if(u.type==="box")return`
|
|
8
|
-
`+[R(u.tag),u.title&&u.title,...e.split(`
|
|
9
|
-
`)].filter(Boolean).map((F)=>" > "+F).join(`
|
|
10
|
-
`)+`
|
|
11
|
-
`;return this.filterAndJoin([R(u.type),R(u.tag),e])}log(u,t){let e=this.formatLogObj(u,{columns:t.options.stdout.columns||0,...t.options.formatOptions});return sD(e+`
|
|
12
|
-
`,u.level<2?t.options.stderr||process.stderr:t.options.stdout||process.stdout)}}var{env:h={},argv:G=[],platform:lD=""}=typeof process==="undefined"?{}:process,aD="NO_COLOR"in h||G.includes("--no-color"),BD="FORCE_COLOR"in h||G.includes("--color"),pD=lD==="win32",W=h.TERM==="dumb",gD=b&&b.isatty&&b.isatty(1)&&h.TERM&&!W,cD="CI"in h&&(("GITHUB_ACTIONS"in h)||("GITLAB_CI"in h)||("CIRCLECI"in h)),AD=!aD&&(BD||pD&&!W||gD||cD);function Y(u,t,e,F,r=t.slice(0,Math.max(0,u))+F,o=t.slice(Math.max(0,u+e.length)),D=o.indexOf(e)){return r+(D<0?o:Y(D,o,e,F))}function hD(u,t,e,F,r){return u<0?e+t+F:e+Y(u,t,F,r)+F}function dD(u,t,e=u,F=u.length+1){return(r)=>r||!(r===""||r===void 0)?hD((""+r).indexOf(t,F),r,u,t,e):""}function C(u,t,e){return dD(`\x1B[${u}m`,`\x1B[${t}m`,e)}var $={reset:C(0,0),bold:C(1,22,"\x1B[22m\x1B[1m"),dim:C(2,22,"\x1B[22m\x1B[2m"),italic:C(3,23),underline:C(4,24),inverse:C(7,27),hidden:C(8,28),strikethrough:C(9,29),black:C(30,39),red:C(31,39),green:C(32,39),yellow:C(33,39),blue:C(34,39),magenta:C(35,39),cyan:C(36,39),white:C(37,39),gray:C(90,39),bgBlack:C(40,49),bgRed:C(41,49),bgGreen:C(42,49),bgYellow:C(43,49),bgBlue:C(44,49),bgMagenta:C(45,49),bgCyan:C(46,49),bgWhite:C(47,49),blackBright:C(90,39),redBright:C(91,39),greenBright:C(92,39),yellowBright:C(93,39),blueBright:C(94,39),magentaBright:C(95,39),cyanBright:C(96,39),whiteBright:C(97,39),bgBlackBright:C(100,49),bgRedBright:C(101,49),bgGreenBright:C(102,49),bgYellowBright:C(103,49),bgBlueBright:C(104,49),bgMagentaBright:C(105,49),bgCyanBright:C(106,49),bgWhiteBright:C(107,49)};function mD(u=AD){return u?$:Object.fromEntries(Object.keys($).map((t)=>[t,String]))}var B=mD();function fD(u,t="reset"){return B[u]||B[t]}var yD=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");function m(u){return u.replace(new RegExp(yD,"g"),"")}var x={solid:{tl:"┌",tr:"┐",bl:"└",br:"┘",h:"─",v:"│"},double:{tl:"╔",tr:"╗",bl:"╚",br:"╝",h:"═",v:"║"},doubleSingle:{tl:"╓",tr:"╖",bl:"╙",br:"╜",h:"─",v:"║"},doubleSingleRounded:{tl:"╭",tr:"╮",bl:"╰",br:"╯",h:"─",v:"║"},singleThick:{tl:"┏",tr:"┓",bl:"┗",br:"┛",h:"━",v:"┃"},singleDouble:{tl:"╒",tr:"╕",bl:"╘",br:"╛",h:"═",v:"│"},singleDoubleRounded:{tl:"╭",tr:"╮",bl:"╰",br:"╯",h:"═",v:"│"},rounded:{tl:"╭",tr:"╮",bl:"╰",br:"╯",h:"─",v:"│"}},_D={borderColor:"white",borderStyle:"rounded",valign:"center",padding:2,marginLeft:1,marginTop:1,marginBottom:1};function vD(u,t={}){let e={...t,style:{..._D,...t.style}},F=u.split(`
|
|
13
|
-
`),r=[],o=fD(e.style.borderColor),D={...typeof e.style.borderStyle==="string"?x[e.style.borderStyle]||x.solid:e.style.borderStyle};if(o)for(let s in D)D[s]=o(D[s]);let E=e.style.padding%2===0?e.style.padding:e.style.padding+1,p=F.length+E,l=Math.max(...F.map((s)=>s.length))+E,c=l+E,a=e.style.marginLeft>0?" ".repeat(e.style.marginLeft):"";if(e.style.marginTop>0)r.push("".repeat(e.style.marginTop));if(e.title){let s=D.h.repeat(Math.floor((l-m(e.title).length)/2)),_=D.h.repeat(l-m(e.title).length-m(s).length+E);r.push(`${a}${D.tl}${s}${e.title}${_}${D.tr}`)}else r.push(`${a}${D.tl}${D.h.repeat(c)}${D.tr}`);let d=e.style.valign==="center"?Math.floor((p-F.length)/2):e.style.valign==="top"?p-F.length-E:p-F.length;for(let s=0;s<p;s++)if(s<d||s>=d+F.length)r.push(`${a}${D.v}${" ".repeat(c)}${D.v}`);else{let _=F[s-d],K=" ".repeat(E),Q=" ".repeat(l-m(_).length);r.push(`${a}${D.v}${K}${_}${Q}${D.v}`)}if(r.push(`${a}${D.bl}${D.h.repeat(c)}${D.br}`),e.style.marginBottom>0)r.push("".repeat(e.style.marginBottom));return r.join(`
|
|
14
|
-
`)}var bD=[["APPVEYOR"],["AZURE_PIPELINES","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],["AZURE_STATIC","INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],["APPCIRCLE","AC_APPCIRCLE"],["BAMBOO","bamboo_planKey"],["BITBUCKET","BITBUCKET_COMMIT"],["BITRISE","BITRISE_IO"],["BUDDY","BUDDY_WORKSPACE_ID"],["BUILDKITE"],["CIRCLE","CIRCLECI"],["CIRRUS","CIRRUS_CI"],["CLOUDFLARE_PAGES","CF_PAGES",{ci:!0}],["CODEBUILD","CODEBUILD_BUILD_ARN"],["CODEFRESH","CF_BUILD_ID"],["DRONE"],["DRONE","DRONE_BUILD_EVENT"],["DSARI"],["GITHUB_ACTIONS"],["GITLAB","GITLAB_CI"],["GITLAB","CI_MERGE_REQUEST_ID"],["GOCD","GO_PIPELINE_LABEL"],["LAYERCI"],["HUDSON","HUDSON_URL"],["JENKINS","JENKINS_URL"],["MAGNUM"],["NETLIFY"],["NETLIFY","NETLIFY_LOCAL",{ci:!1}],["NEVERCODE"],["RENDER"],["SAIL","SAILCI"],["SEMAPHORE"],["SCREWDRIVER"],["SHIPPABLE"],["SOLANO","TDDIUM"],["STRIDER"],["TEAMCITY","TEAMCITY_VERSION"],["TRAVIS"],["VERCEL","NOW_BUILDER"],["APPCENTER","APPCENTER_BUILD_ID"],["CODESANDBOX","CODESANDBOX_SSE",{ci:!1}],["STACKBLITZ"],["STORMKIT"],["CLEAVR"]];function ID(u){for(let t of bD){let e=t[1]||t[0];if(u[e])return{name:t[0].toLowerCase(),...t[2]}}if(u.SHELL&&u.SHELL==="/bin/jsh")return{name:"stackblitz",ci:!1};return{name:"",ci:!1}}var I=typeof process!=="undefined"?process:{},f=I.env||{},V=ID(f),LD=typeof process!=="undefined"&&process.env&&"development"||"";I.platform;V.name;var TD=y(f.CI)||V.ci!==!1,Du=y(I.stdout&&I.stdout.isTTY),SD=y(f.DEBUG),Z=LD==="test"||y(f.TEST);y(f.MINIMAL);function y(u){return u?u!=="false":!1}function RD({onlyFirst:u=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,u?void 0:"g")}var OD=RD();function wD(u){if(typeof u!=="string")throw new TypeError(`Expected a \`string\`, got \`${typeof u}\``);return u.replace(OD,"")}function ND(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}var z={exports:{}};(function(u){var t={};u.exports=t,t.eastAsianWidth=function(F){var r=F.charCodeAt(0),o=F.length==2?F.charCodeAt(1):0,D=r;if(55296<=r&&r<=56319&&(56320<=o&&o<=57343))r&=1023,o&=1023,D=r<<10|o,D+=65536;if(D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510)return"F";if(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)return"H";if(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)return"W";if(32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630)return"Na";if(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)return"A";return"N"},t.characterLength=function(F){var r=this.eastAsianWidth(F);if(r=="F"||r=="W"||r=="A")return 2;else return 1};function e(F){return F.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(F){var r=e(F),o=0;for(var D=0;D<r.length;D++)o=o+this.characterLength(r[D]);return o},t.slice=function(F,r,o){if(textLen=t.length(F),r=r?r:0,o=o?o:1,r<0)r=textLen+r;if(o<0)o=textLen+o;var D="",E=0,p=e(F);for(var l=0;l<p.length;l++){var c=p[l],a=t.length(c);if(E>=r-(a==2?1:0))if(E+a<=o)D+=c;else break;E+=a}return D}})(z);var MD=z.exports,UD=ND(MD),$D=()=>{return/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\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]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\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?|[\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](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\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\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g};function xD(u,t){if(typeof u!=="string"||u.length===0)return 0;if(t={ambiguousIsNarrow:!0,countAnsiEscapeCodes:!1,...t},!t.countAnsiEscapeCodes)u=wD(u);if(u.length===0)return 0;let e=t.ambiguousIsNarrow?1:2,F=0;for(let{segment:r}of new Intl.Segmenter().segment(u)){let o=r.codePointAt(0);if(o<=31||o>=127&&o<=159)continue;if(o>=768&&o<=879)continue;if($D().test(r)){F+=2;continue}switch(UD.eastAsianWidth(r)){case"F":case"W":{F+=2;break}case"A":{F+=e;break}default:F+=1}}return F}function PD(){if(g.platform!=="win32")return g.env.TERM!=="linux";return Boolean(g.env.CI)||Boolean(g.env.WT_SESSION)||Boolean(g.env.TERMINUS_SUBLIME)||g.env.ConEmuTask==="{cmd::Cmder}"||g.env.TERM_PROGRAM==="Terminus-Sublime"||g.env.TERM_PROGRAM==="vscode"||g.env.TERM==="xterm-256color"||g.env.TERM==="alacritty"||g.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var kD={info:"cyan",fail:"red",success:"green",ready:"green",start:"magenta"},jD={0:"red",1:"yellow"},GD=PD(),A=(u,t)=>GD?u:t,P={error:A("✖","×"),fatal:A("✖","×"),ready:A("✔","√"),warn:A("⚠","‼"),info:A("ℹ","i"),success:A("✔","√"),debug:A("⚙","D"),trace:A("→","→"),fail:A("✖","×"),start:A("◐","o"),log:""};function k(u){if(!Intl.Segmenter)return m(u).length;return xD(u)}class H extends w{formatStack(u){return`
|
|
15
|
-
`+j(u).map((t)=>" "+t.replace(/^at +/,(e)=>B.gray(e)).replace(/\((.+)\)/,(e,F)=>`(${B.cyan(F)})`)).join(`
|
|
16
|
-
`)}formatType(u,t,e){let F=kD[u.type]||jD[u.level]||"gray";if(t)return YD(F)(B.black(` ${u.type.toUpperCase()} `));let r=typeof P[u.type]==="string"?P[u.type]:u.icon||u.type;return r?WD(F)(r):""}formatLogObj(u,t){let[e,...F]=this.formatArgs(u.args,t).split(`
|
|
17
|
-
`);if(u.type==="box")return vD(v(e+(F.length>0?`
|
|
18
|
-
`+F.join(`
|
|
19
|
-
`):"")),{title:u.title?v(u.title):void 0,style:u.style});let r=this.formatDate(u.date,t),o=r&&B.gray(r),D=u.badge??u.level<2,E=this.formatType(u,D,t),p=u.tag?B.gray(u.tag):"",l,c=this.filterAndJoin([E,v(e)]),a=this.filterAndJoin(t.columns?[p,o]:[p]),d=(t.columns||0)-k(c)-k(a)-2;if(l=d>0&&(t.columns||0)>=80?c+" ".repeat(d)+a:(a?`${B.gray(`[${a}]`)} `:"")+c,l+=v(F.length>0?`
|
|
20
|
-
`+F.join(`
|
|
21
|
-
`):""),u.type==="trace"){let s=new Error("Trace: "+u.message);l+=this.formatStack(s.stack||"")}return D?`
|
|
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-45dw2f5f.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 I,KD as J,QD as K,B as L,ND as M,PD as N,uu as O};
|