@herbertgao/surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
103 lines (102 loc) • 7.78 kB
TypeScript
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: ReadonlyArray<T>) => ReadonlyArray<T>;
readonly supportSort: true;
} | undefined>;
readonly youtubePremiumFilter: NonNullable<((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
readonly supportSort: true;
} | undefined>;
readonly customFilters: Record<string, ((nodeConfig: PossibleNodeConfigType) => boolean) | {
readonly filter: <T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
readonly supportSort: true;
}>;
readonly customParams: Readonly<Record<string, any>>;
readonly usFilter: import("../types").NodeFilterType;
readonly hkFilter: import("../types").NodeFilterType;
readonly japanFilter: import("../types").NodeFilterType;
readonly koreaFilter: import("../types").NodeFilterType;
readonly singaporeFilter: import("../types").NodeFilterType;
readonly germanyFilter: import("../types").NodeFilterType;
readonly taiwanFilter: import("../types").NodeFilterType;
readonly chinaBackFilter: import("../types").NodeFilterType;
readonly chinaOutFilter: import("../types").NodeFilterType;
readonly shadowsocksFilter: import("../types").NodeFilterType;
readonly shadowsocksrFilter: import("../types").NodeFilterType;
readonly vmessFilter: import("../types").NodeFilterType;
readonly v2rayFilter: import("../types").NodeFilterType;
readonly snellFilter: import("../types").NodeFilterType;
readonly tuicFilter: import("../types").NodeFilterType;
readonly httpFilter: import("../types").NodeFilterType;
readonly httpsFilter: import("../types").NodeFilterType;
readonly trojanFilter: import("../types").NodeFilterType;
readonly socks5Filter: import("../types").NodeFilterType;
readonly wireguardFilter: import("../types").NodeFilterType;
readonly hysteria2Filter: import("../types").NodeFilterType;
readonly vlessFilter: import("../types").NodeFilterType;
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: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType, separator?: string) => string;
readonly getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => Record<string, any>[];
readonly getClashNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType, prependNodeNames?: ReadonlyArray<string>, defaultNodeNames?: ReadonlyArray<string>) => ReadonlyArray<string>;
readonly getSingboxNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => Record<string, any>[];
readonly getSingboxNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => ReadonlyArray<string>;
readonly getSurgeNodes: (nodeList: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getSurgeNodeNames: (nodeList: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getSurgeWireguardNodes: (nodeList: ReadonlyArray<PossibleNodeConfigType>) => string;
readonly getSurfboardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getSurfboardNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getShadowsocksNodes: (list: ReadonlyArray<import("../types").ShadowsocksNodeConfig>, groupName?: string) => string;
readonly getShadowsocksNodesJSON: (list: ReadonlyArray<import("../types").ShadowsocksNodeConfig>) => string;
readonly getShadowsocksrNodes: (list: ReadonlyArray<import("../types").ShadowsocksrNodeConfig>, groupName: string) => string;
readonly getV2rayNNodes: (list: ReadonlyArray<import("../types").VmessNodeConfig>) => string;
readonly getQuantumultXNodes: (nodeList: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getQuantumultXNodeNames: (nodeList: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getLoonNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string;
readonly getLoonNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType, separator?: string) => 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;
}