surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
142 lines (141 loc) • 9.86 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import _ from 'lodash';
import { Environment } from 'nunjucks';
import { GetNodeListParams, PossibleProviderType } from '../provider';
import { ArtifactConfig, ArtifactConfigInput, CommandConfig, PossibleNodeConfigType, RemoteSnippet } from '../types';
export interface ArtifactOptions {
readonly remoteSnippetList?: ReadonlyArray<RemoteSnippet>;
readonly templateEngine?: Environment;
}
export type ExtendableRenderContext = Record<string, string>;
export declare class Artifact extends EventEmitter {
surgioConfig: CommandConfig;
private options;
initProgress: number;
artifact: ArtifactConfig;
providerNameList: ReadonlyArray<string>;
nodeConfigListMap: Map<string, ReadonlyArray<PossibleNodeConfigType>>;
providerMap: Map<string, PossibleProviderType>;
nodeList: PossibleNodeConfigType[];
private customFilters;
private netflixFilter;
private youtubePremiumFilter;
constructor(surgioConfig: CommandConfig, artifactConfig: ArtifactConfigInput, options?: ArtifactOptions);
get isReady(): boolean;
getRenderContext(extendRenderContext?: ExtendableRenderContext): {
readonly netflixFilter: NonNullable<((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined>;
readonly youtubePremiumFilter: NonNullable<((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined>;
readonly customFilters: Record<string, ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
}>;
readonly customParams: Readonly<Record<string, any>>;
readonly usFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly hkFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly japanFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly koreaFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly singaporeFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly taiwanFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly chinaBackFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly chinaOutFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly shadowsocksFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly shadowsocksrFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly vmessFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly v2rayFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly snellFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly tuicFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly httpFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly httpsFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly trojanFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly socks5Filter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly wireguardFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly hysteria2Filter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly vlessFilter: (nodeConfig: PossibleNodeConfigType) => boolean;
readonly proxyTestUrl: string | undefined;
readonly proxyTestInterval: number | undefined;
readonly internetTestUrl: string | undefined;
readonly internetTestInterval: number | undefined;
readonly downloadUrl: string;
readonly snippet: (filePath: string) => RemoteSnippet;
readonly remoteSnippets: _.Dictionary<RemoteSnippet>;
readonly nodeList: PossibleNodeConfigType[];
readonly provider: string;
readonly providerName: string;
readonly artifactName: string;
readonly getDownloadUrl: (name: string) => string;
readonly getUrl: (p: string) => string;
readonly getNodeNames: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined, separator?: string | undefined) => string;
readonly getClashNodes: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => Record<string, any>[];
readonly getClashNodeNames: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined, prependNodeNames?: readonly string[] | undefined, defaultNodeNames?: readonly string[] | undefined) => readonly string[];
readonly getSingboxNodes: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => Record<string, any>[];
readonly getSingboxNodeNames: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => readonly string[];
readonly getSurgeNodes: (nodeList: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getSurgeNodeNames: (nodeList: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getSurgeWireguardNodes: (nodeList: readonly PossibleNodeConfigType[]) => string;
readonly getSurfboardNodes: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getSurfboardNodeNames: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getShadowsocksNodes: (list: readonly import("../types").ShadowsocksNodeConfig[], groupName?: string) => string;
readonly getShadowsocksNodesJSON: (list: readonly import("../types").ShadowsocksNodeConfig[]) => string;
readonly getShadowsocksrNodes: (list: readonly import("../types").ShadowsocksrNodeConfig[], groupName: string) => string;
readonly getV2rayNNodes: (list: readonly import("../types").VmessNodeConfig[]) => string;
readonly getQuantumultXNodes: (nodeList: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getQuantumultXNodeNames: (nodeList: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getLoonNodes: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined) => string;
readonly getLoonNodeNames: (list: readonly PossibleNodeConfigType[], filter?: ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: readonly T[]) => readonly T[];
readonly supportSort: true;
} | undefined, separator?: string | undefined) => string;
readonly toUrlSafeBase64: (str: string) => string;
readonly toBase64: (str: string) => string;
readonly encodeURIComponent: typeof encodeURIComponent;
};
init(params?: {
getNodeListParams?: GetNodeListParams;
}): Promise<this>;
getMergedCustomParams(extendableCustomParams?: Record<string, any>): Readonly<Record<string, any>>;
render(templateEngine?: Environment, extendRenderContext?: ExtendableRenderContext): string;
private providerMapper;
}