surgio 4.0.0-beta.1 → 4.0.0-beta.3
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/build/config-normalize.d.ts +5 -1
- package/build/generator/artifact.d.ts +45 -41
- package/build/generator/artifact.js.map +1 -1
- package/build/runtime/artifact.d.ts +10 -6
- package/build/runtime/artifact.js +4 -3
- package/build/runtime/artifact.js.map +1 -1
- package/build/runtime/cache-key.d.ts +16 -0
- package/build/runtime/cache-key.js +81 -0
- package/build/runtime/cache-key.js.map +1 -0
- package/build/runtime/format.js +48 -2
- package/build/runtime/format.js.map +1 -1
- package/build/runtime/node.js +11 -5
- package/build/runtime/node.js.map +1 -1
- package/build/utils/dns.js +14 -5
- package/build/utils/dns.js.map +1 -1
- package/build/utils/flag.js +26 -35
- package/build/utils/flag.js.map +1 -1
- package/build/utils/linter.js +18 -34
- package/build/utils/linter.js.map +1 -1
- package/build/utils/remote-snippet.js +22 -24
- package/build/utils/remote-snippet.js.map +1 -1
- package/build/utils/surfboard.d.ts +3 -4
- package/build/utils/surfboard.js +274 -163
- package/build/utils/surfboard.js.map +1 -1
- package/build/utils/surge.d.ts +5 -1
- package/build/utils/surge.js +78 -74
- package/build/utils/surge.js.map +1 -1
- package/build/validators/anytls.d.ts +5 -0
- package/build/validators/artifact.d.ts +15 -3
- package/build/validators/artifact.js +4 -1
- package/build/validators/artifact.js.map +1 -1
- package/build/validators/common.d.ts +10 -0
- package/build/validators/http.d.ts +10 -0
- package/build/validators/hysteria2.d.ts +7 -0
- package/build/validators/masque.d.ts +14 -0
- package/build/validators/shadowsocks.d.ts +5 -0
- package/build/validators/shadowsocksr.d.ts +5 -0
- package/build/validators/snell.d.ts +11 -0
- package/build/validators/snell.js +2 -0
- package/build/validators/snell.js.map +1 -1
- package/build/validators/socks5.d.ts +5 -0
- package/build/validators/surgio-config.d.ts +31 -5
- package/build/validators/surgio-config.js +1 -0
- package/build/validators/surgio-config.js.map +1 -1
- package/build/validators/tailscale.d.ts +5 -0
- package/build/validators/trojan.d.ts +5 -0
- package/build/validators/trust-tunnel.d.ts +7 -0
- package/build/validators/tuic.d.ts +26 -0
- package/build/validators/tuic.js +1 -0
- package/build/validators/tuic.js.map +1 -1
- package/build/validators/vless.d.ts +5 -0
- package/build/validators/vmess.d.ts +5 -0
- package/build/validators/wireguard.d.ts +5 -0
- package/build/worker/runtime.js +13 -5
- package/build/worker/runtime.js.map +1 -1
- package/package.json +2 -2
|
@@ -56,7 +56,10 @@ export declare const normalizeCommonConfig: (input: Partial<CommandConfigBeforeN
|
|
|
56
56
|
categories?: string[] | undefined;
|
|
57
57
|
combineProviders?: string[] | undefined;
|
|
58
58
|
customParams?: Record<string, any> | undefined;
|
|
59
|
-
customFilters?: Record<string, (
|
|
59
|
+
customFilters?: Record<string, ((nodeConfig: import("./types.js").PossibleNodeConfigType) => boolean) | {
|
|
60
|
+
readonly filter: <T extends import("./types.js").PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
|
|
61
|
+
readonly supportSort: true;
|
|
62
|
+
}> | undefined;
|
|
60
63
|
destDir?: string | undefined;
|
|
61
64
|
destDirs?: string[] | undefined;
|
|
62
65
|
downloadUrl?: string | undefined;
|
|
@@ -79,6 +82,7 @@ export declare const normalizeCommonConfig: (input: Partial<CommandConfigBeforeN
|
|
|
79
82
|
vmessAEAD: boolean;
|
|
80
83
|
};
|
|
81
84
|
surfboardConfig: {
|
|
85
|
+
geckoPassword?: string | undefined;
|
|
82
86
|
vmessAEAD: boolean;
|
|
83
87
|
};
|
|
84
88
|
proxyTestUrl: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { GetNodeListParams, PossibleProviderType } from '../provider/index.js';
|
|
3
|
-
import { ArtifactConfig, ArtifactConfigInput, CommandConfig, PossibleNodeConfigType, RemoteSnippet, SubscriptionUserinfo } from '../types.js';
|
|
3
|
+
import { ArtifactConfig, ArtifactConfigInput, CommandConfig, NodeFilterType, PossibleNodeConfigType, RemoteSnippet, SortedNodeFilterType, SubscriptionUserinfo } from '../types.js';
|
|
4
4
|
import type { Renderer } from '../runtime/renderer.js';
|
|
5
5
|
import type { ProjectProviderDefinition } from '../project/types.js';
|
|
6
6
|
import type { ProviderRuntimeContext } from '../runtime/types.js';
|
|
@@ -12,7 +12,7 @@ export interface ArtifactOptions {
|
|
|
12
12
|
readonly providers?: Readonly<Record<string, ProjectProviderDefinition>>;
|
|
13
13
|
readonly providerRuntime?: ProviderRuntimeContext;
|
|
14
14
|
}
|
|
15
|
-
export type ExtendableRenderContext = Record<string,
|
|
15
|
+
export type ExtendableRenderContext = Record<string, any>;
|
|
16
16
|
export declare class Artifact extends EventEmitter {
|
|
17
17
|
surgioConfig: CommandConfig;
|
|
18
18
|
private options;
|
|
@@ -28,30 +28,30 @@ export declare class Artifact extends EventEmitter {
|
|
|
28
28
|
constructor(surgioConfig: CommandConfig, artifactConfig: ArtifactConfigInput, options?: ArtifactOptions);
|
|
29
29
|
get isReady(): boolean;
|
|
30
30
|
getRenderContext(extendRenderContext?: ExtendableRenderContext): {
|
|
31
|
-
readonly usFilter:
|
|
32
|
-
readonly hkFilter:
|
|
33
|
-
readonly japanFilter:
|
|
34
|
-
readonly koreaFilter:
|
|
35
|
-
readonly singaporeFilter:
|
|
36
|
-
readonly germanyFilter:
|
|
37
|
-
readonly taiwanFilter:
|
|
38
|
-
readonly chinaBackFilter:
|
|
39
|
-
readonly chinaOutFilter:
|
|
40
|
-
readonly shadowsocksFilter:
|
|
41
|
-
readonly shadowsocksrFilter:
|
|
42
|
-
readonly vmessFilter:
|
|
43
|
-
readonly v2rayFilter:
|
|
44
|
-
readonly snellFilter:
|
|
45
|
-
readonly tuicFilter:
|
|
46
|
-
readonly httpFilter:
|
|
47
|
-
readonly httpsFilter:
|
|
48
|
-
readonly trojanFilter:
|
|
49
|
-
readonly socks5Filter:
|
|
50
|
-
readonly wireguardFilter:
|
|
51
|
-
readonly hysteria2Filter:
|
|
52
|
-
readonly vlessFilter:
|
|
53
|
-
readonly anytlsFilter:
|
|
54
|
-
readonly tailscaleFilter:
|
|
31
|
+
readonly usFilter: NodeFilterType;
|
|
32
|
+
readonly hkFilter: NodeFilterType;
|
|
33
|
+
readonly japanFilter: NodeFilterType;
|
|
34
|
+
readonly koreaFilter: NodeFilterType;
|
|
35
|
+
readonly singaporeFilter: NodeFilterType;
|
|
36
|
+
readonly germanyFilter: NodeFilterType;
|
|
37
|
+
readonly taiwanFilter: NodeFilterType;
|
|
38
|
+
readonly chinaBackFilter: NodeFilterType;
|
|
39
|
+
readonly chinaOutFilter: NodeFilterType;
|
|
40
|
+
readonly shadowsocksFilter: NodeFilterType;
|
|
41
|
+
readonly shadowsocksrFilter: NodeFilterType;
|
|
42
|
+
readonly vmessFilter: NodeFilterType;
|
|
43
|
+
readonly v2rayFilter: NodeFilterType;
|
|
44
|
+
readonly snellFilter: NodeFilterType;
|
|
45
|
+
readonly tuicFilter: NodeFilterType;
|
|
46
|
+
readonly httpFilter: NodeFilterType;
|
|
47
|
+
readonly httpsFilter: NodeFilterType;
|
|
48
|
+
readonly trojanFilter: NodeFilterType;
|
|
49
|
+
readonly socks5Filter: NodeFilterType;
|
|
50
|
+
readonly wireguardFilter: NodeFilterType;
|
|
51
|
+
readonly hysteria2Filter: NodeFilterType;
|
|
52
|
+
readonly vlessFilter: NodeFilterType;
|
|
53
|
+
readonly anytlsFilter: NodeFilterType;
|
|
54
|
+
readonly tailscaleFilter: NodeFilterType;
|
|
55
55
|
readonly proxyTestUrl: string | undefined;
|
|
56
56
|
readonly proxyTestInterval: number | undefined;
|
|
57
57
|
readonly internetTestUrl: string | undefined;
|
|
@@ -68,25 +68,26 @@ export declare class Artifact extends EventEmitter {
|
|
|
68
68
|
readonly getDownloadUrl: (name: string) => string;
|
|
69
69
|
readonly getUrl: (path: string) => string;
|
|
70
70
|
readonly getNodeNames: typeof import("../utils/portable.js").getNodeNames;
|
|
71
|
-
readonly getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
72
|
-
readonly getClashNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
73
|
-
readonly getSingboxNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
74
|
-
readonly getSingboxNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
71
|
+
readonly getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => Record<string, any>[];
|
|
72
|
+
readonly getClashNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType, prependNodeNames?: ReadonlyArray<string>, defaultNodeNames?: ReadonlyArray<string>) => ReadonlyArray<string>;
|
|
73
|
+
readonly getSingboxNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => Record<string, any>[];
|
|
74
|
+
readonly getSingboxNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => readonly string[];
|
|
75
75
|
readonly getSingboxEndpoints: typeof import("../utils/singbox.js").getSingboxEndpoints;
|
|
76
76
|
readonly getSingboxRules: (ruleText: string, outbound?: string) => import("../utils/singbox-rules.js").SingboxRouteRule[];
|
|
77
77
|
readonly getSingboxHeadlessRules: (ruleText: string) => import("../utils/singbox-rules.js").SingboxHeadlessRule[];
|
|
78
|
-
readonly getSurgeNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
79
|
-
readonly getSurgeNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
78
|
+
readonly getSurgeNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
79
|
+
readonly getSurgeNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
80
80
|
readonly getSurgeTailscaleNodes: typeof import("../utils/surge.js").getSurgeTailscaleNodes;
|
|
81
|
-
readonly getSurgeWireguardNodes:
|
|
82
|
-
readonly getSurfboardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
83
|
-
readonly getSurfboardNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
81
|
+
readonly getSurgeWireguardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
82
|
+
readonly getSurfboardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
83
|
+
readonly getSurfboardNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
84
|
+
readonly getSurfboardWireguardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
84
85
|
readonly getShadowsocksNodes: typeof import("../utils/portable.js").getShadowsocksNodes;
|
|
85
86
|
readonly getShadowsocksrNodes: typeof import("../utils/portable.js").getShadowsocksrNodes;
|
|
86
|
-
readonly getV2rayNNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
87
|
-
readonly getQuantumultXNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
88
|
-
readonly getQuantumultXNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
89
|
-
readonly getLoonNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
87
|
+
readonly getV2rayNNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
88
|
+
readonly getQuantumultXNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
89
|
+
readonly getQuantumultXNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
90
|
+
readonly getLoonNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
90
91
|
readonly getLoonNodeNames: typeof import("../utils/loon.js").getLoonNodeNames;
|
|
91
92
|
readonly toUrlSafeBase64: typeof import("../utils/portable.js").toUrlSafeBase64;
|
|
92
93
|
readonly toBase64: typeof import("../utils/portable.js").toBase64;
|
|
@@ -99,8 +100,11 @@ export declare class Artifact extends EventEmitter {
|
|
|
99
100
|
readonly filter: <T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
|
|
100
101
|
readonly supportSort: true;
|
|
101
102
|
};
|
|
102
|
-
readonly customFilters: Readonly<Record<string,
|
|
103
|
-
|
|
103
|
+
readonly customFilters: Readonly<Record<string, ((nodeConfig: PossibleNodeConfigType) => boolean) | {
|
|
104
|
+
readonly filter: <T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
|
|
105
|
+
readonly supportSort: true;
|
|
106
|
+
}>>;
|
|
107
|
+
readonly customParams: Readonly<Record<string, any>>;
|
|
104
108
|
};
|
|
105
109
|
init(params?: {
|
|
106
110
|
getNodeListParams?: GetNodeListParams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/generator/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,OAAO,EAEL,cAAc,EACd,WAAW,GAEZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,2BAA2B,EAC3B,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/generator/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getLoonNodeNames } from '../utils/loon.js';
|
|
2
2
|
import { getNodeNames, getShadowsocksNodes, getShadowsocksrNodes, toBase64, toUrlSafeBase64 } from '../utils/portable.js';
|
|
3
3
|
import { getSingboxEndpoints } from '../utils/singbox.js';
|
|
4
|
-
import { getSurgeTailscaleNodes
|
|
4
|
+
import { getSurgeTailscaleNodes } from '../utils/surge.js';
|
|
5
5
|
import type { Logger } from '@surgio/logger';
|
|
6
6
|
import type { ArtifactConfig, CommandConfigAfterNormalize, NodeFilterType, PossibleNodeConfigType, RemoteSnippet, SortedNodeFilterType, SubscriptionUserinfo } from '../types.js';
|
|
7
7
|
import type { GetNodeListParams, PossibleProviderType } from '../provider/types.js';
|
|
@@ -33,8 +33,8 @@ export declare const createArtifactRenderContext: (options: {
|
|
|
33
33
|
readonly config: ArtifactRuntimeConfig;
|
|
34
34
|
readonly nodeList: ReadonlyArray<PossibleNodeConfigType>;
|
|
35
35
|
readonly mainProvider: PossibleProviderType;
|
|
36
|
-
readonly customFilters: Readonly<Record<string,
|
|
37
|
-
readonly customParams: Readonly<Record<string,
|
|
36
|
+
readonly customFilters: Readonly<Record<string, NodeFilterType | SortedNodeFilterType>>;
|
|
37
|
+
readonly customParams: Readonly<Record<string, any>>;
|
|
38
38
|
readonly remoteSnippetList?: ReadonlyArray<RemoteSnippet>;
|
|
39
39
|
readonly loadSnippet: (name: string) => RemoteSnippet;
|
|
40
40
|
readonly downloadUrl?: string;
|
|
@@ -90,9 +90,10 @@ export declare const createArtifactRenderContext: (options: {
|
|
|
90
90
|
readonly getSurgeNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
91
91
|
readonly getSurgeNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
92
92
|
readonly getSurgeTailscaleNodes: typeof getSurgeTailscaleNodes;
|
|
93
|
-
readonly getSurgeWireguardNodes:
|
|
93
|
+
readonly getSurgeWireguardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
94
94
|
readonly getSurfboardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
95
95
|
readonly getSurfboardNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
96
|
+
readonly getSurfboardWireguardNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
96
97
|
readonly getShadowsocksNodes: typeof getShadowsocksNodes;
|
|
97
98
|
readonly getShadowsocksrNodes: typeof getShadowsocksrNodes;
|
|
98
99
|
readonly getV2rayNNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
|
|
@@ -111,8 +112,11 @@ export declare const createArtifactRenderContext: (options: {
|
|
|
111
112
|
readonly filter: <T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
|
|
112
113
|
readonly supportSort: true;
|
|
113
114
|
};
|
|
114
|
-
readonly customFilters: Readonly<Record<string,
|
|
115
|
-
|
|
115
|
+
readonly customFilters: Readonly<Record<string, ((nodeConfig: PossibleNodeConfigType) => boolean) | {
|
|
116
|
+
readonly filter: <T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
|
|
117
|
+
readonly supportSort: true;
|
|
118
|
+
}>>;
|
|
119
|
+
readonly customParams: Readonly<Record<string, any>>;
|
|
116
120
|
};
|
|
117
121
|
/** 渲染模板和 `extendTemplate` 回调时拿到的完整上下文。 */
|
|
118
122
|
export type ArtifactRenderContext = ReturnType<typeof createArtifactRenderContext>;
|
|
@@ -8,7 +8,7 @@ import { getDownloadUrl, getNodeNames, getShadowsocksNodes, getShadowsocksrNodes
|
|
|
8
8
|
import { getQuantumultXNodeNames, getQuantumultXNodes, } from '../utils/quantumult.js';
|
|
9
9
|
import { getSingboxEndpoints, getSingboxNodeNames, getSingboxNodes, } from '../utils/singbox.js';
|
|
10
10
|
import { convertRulesToSingbox, convertRulesToSingboxHeadless, } from '../utils/singbox-rules.js';
|
|
11
|
-
import { getSurfboardNodeNames, getSurfboardNodes } from '../utils/surfboard.js';
|
|
11
|
+
import { getSurfboardNodeNames, getSurfboardNodes, getSurfboardWireguardNodes, } from '../utils/surfboard.js';
|
|
12
12
|
import { getSurgeNodeNames, getSurgeNodes, getSurgeTailscaleNodes, getSurgeWireguardNodes, } from '../utils/surge.js';
|
|
13
13
|
import { getV2rayNNodes } from '../utils/v2rayn.js';
|
|
14
14
|
import { SurgioError } from '../utils/errors.js';
|
|
@@ -174,7 +174,7 @@ export const createArtifactRenderContext = (options) => {
|
|
|
174
174
|
};
|
|
175
175
|
const gatewayToken = config.gateway?.viewerToken ?? config.gateway?.accessToken;
|
|
176
176
|
const onUnsupportedSingboxRule = (line, reason) => {
|
|
177
|
-
logger.warn('sing-box
|
|
177
|
+
logger.warn('sing-box 不支持的规则已忽略:%s (%s)', line, reason);
|
|
178
178
|
};
|
|
179
179
|
return {
|
|
180
180
|
proxyTestUrl: config.proxyTestUrl,
|
|
@@ -208,9 +208,10 @@ export const createArtifactRenderContext = (options) => {
|
|
|
208
208
|
getSurgeNodes: bindFormatter(getSurgeNodes),
|
|
209
209
|
getSurgeNodeNames: bindFormatter(getSurgeNodeNames),
|
|
210
210
|
getSurgeTailscaleNodes,
|
|
211
|
-
getSurgeWireguardNodes,
|
|
211
|
+
getSurgeWireguardNodes: bindFormatter(getSurgeWireguardNodes),
|
|
212
212
|
getSurfboardNodes: bindFormatter(getSurfboardNodes),
|
|
213
213
|
getSurfboardNodeNames: bindFormatter(getSurfboardNodeNames),
|
|
214
|
+
getSurfboardWireguardNodes: bindFormatter(getSurfboardWireguardNodes),
|
|
214
215
|
getShadowsocksNodes,
|
|
215
216
|
getShadowsocksrNodes,
|
|
216
217
|
getV2rayNNodes: bindFormatter(getV2rayNNodes),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/runtime/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,cAAc,MAAM,+BAA+B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAA;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/runtime/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ArtifactConfig } from '../types.js';
|
|
2
|
+
import type { RenderArtifactOptions } from './public.js';
|
|
3
|
+
export type CacheKeyScope = 'node-runtime' | 'worker';
|
|
4
|
+
export type RenderedArtifactCacheKey = {
|
|
5
|
+
readonly cacheable: true;
|
|
6
|
+
readonly key: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly cacheable: false;
|
|
9
|
+
readonly reason: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* `renderProviders` 构造的临时 Artifact 只把 Provider 名编进 `name`,模板名单独放在
|
|
13
|
+
* `template` 上,两者都必须参与 key。
|
|
14
|
+
*/
|
|
15
|
+
export type CacheKeyArtifact = Pick<ArtifactConfig, 'name' | 'template'>;
|
|
16
|
+
export declare const buildRenderedArtifactCacheKey: (scope: CacheKeyScope, artifact: CacheKeyArtifact, options?: RenderArtifactOptions) => RenderedArtifactCacheKey;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { CACHE_KEYS } from '../constant/index.js';
|
|
2
|
+
import { toMD5 } from '../utils/portable.js';
|
|
3
|
+
/**
|
|
4
|
+
* 渲染参数中唯一允许参与缓存 key 的两个字段。其余字段(任意 URL query 参数)会被模板和
|
|
5
|
+
* 自定义 Provider 以无法预知的方式消费,基数不可枚举。
|
|
6
|
+
*/
|
|
7
|
+
const ENUMERABLE_PARAM_KEYS = new Set(['requestUserAgent', 'requestHeaders']);
|
|
8
|
+
const sortObjectKeys = (value) => {
|
|
9
|
+
if (Array.isArray(value)) {
|
|
10
|
+
return value.map(sortObjectKeys);
|
|
11
|
+
}
|
|
12
|
+
if (value && typeof value === 'object') {
|
|
13
|
+
return Object.fromEntries(Object.entries(value)
|
|
14
|
+
.sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
|
|
15
|
+
.map(([key, item]) => [key, sortObjectKeys(item)]));
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
const normalizeDownloadUrl = (value) => {
|
|
20
|
+
try {
|
|
21
|
+
const url = new URL(value);
|
|
22
|
+
url.searchParams.sort();
|
|
23
|
+
return url.toString();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const normalizeHeaders = (value) => {
|
|
30
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [
|
|
34
|
+
key.toLowerCase(),
|
|
35
|
+
item,
|
|
36
|
+
]));
|
|
37
|
+
};
|
|
38
|
+
const findUnknownParamKey = (params) => Object.keys(params ?? {}).find((key) => !ENUMERABLE_PARAM_KEYS.has(key));
|
|
39
|
+
export const buildRenderedArtifactCacheKey = (scope, artifact, options = {}) => {
|
|
40
|
+
if (typeof options.filter === 'function') {
|
|
41
|
+
return {
|
|
42
|
+
cacheable: false,
|
|
43
|
+
reason: 'filter 是函数,无法参与缓存 key 计算',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
for (const [name, params] of [
|
|
47
|
+
['customParams', options.customParams],
|
|
48
|
+
['getNodeListParams', options.getNodeListParams],
|
|
49
|
+
]) {
|
|
50
|
+
const unknownKey = findUnknownParamKey(params);
|
|
51
|
+
if (unknownKey) {
|
|
52
|
+
return {
|
|
53
|
+
cacheable: false,
|
|
54
|
+
reason: `${name}.${unknownKey} 的取值不可枚举`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (options.customParams?.requestUserAgent !== undefined ||
|
|
59
|
+
options.getNodeListParams?.requestUserAgent !== undefined) {
|
|
60
|
+
return {
|
|
61
|
+
cacheable: false,
|
|
62
|
+
reason: 'requestUserAgent 参与渲染,客户端 UA 基数不可枚举',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const payload = sortObjectKeys({
|
|
66
|
+
artifact: artifact.name,
|
|
67
|
+
downloadUrl: options.downloadUrl === undefined
|
|
68
|
+
? undefined
|
|
69
|
+
: normalizeDownloadUrl(options.downloadUrl),
|
|
70
|
+
filter: options.filter,
|
|
71
|
+
format: options.format,
|
|
72
|
+
requestHeaders: normalizeHeaders(options.getNodeListParams?.requestHeaders ??
|
|
73
|
+
options.customParams?.requestHeaders),
|
|
74
|
+
template: artifact.template,
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
cacheable: true,
|
|
78
|
+
key: `${CACHE_KEYS.RenderedArtifact}:${scope}:${toMD5(JSON.stringify(payload))}`,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=cache-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../src/runtime/cache-key.ts"],"names":[],"mappings":"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"}
|
package/build/runtime/format.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import YAML from 'yaml';
|
|
2
|
+
import { logger as defaultLogger } from '@surgio/logger';
|
|
3
|
+
import { applyFilter } from '../filters/index.js';
|
|
4
|
+
import { NodeTypeEnum } from '../types.js';
|
|
2
5
|
import { getClashNodes } from '../utils/clash.js';
|
|
3
6
|
import { getLoonNodes } from '../utils/loon.js';
|
|
4
7
|
import { getShadowsocksNodes, getShadowsocksrNodes } from '../utils/portable.js';
|
|
@@ -7,6 +10,35 @@ import { getSingboxEndpoints, getSingboxNodes } from '../utils/singbox.js';
|
|
|
7
10
|
import { getSurfboardNodes } from '../utils/surfboard.js';
|
|
8
11
|
import { getSurgeNodes } from '../utils/surge.js';
|
|
9
12
|
import { getV2rayNNodes } from '../utils/v2rayn.js';
|
|
13
|
+
/**
|
|
14
|
+
* Provider 输出的是纯节点列表,装不下独立配置段。留下 section-name 引用会让
|
|
15
|
+
* 客户端加载失败,所以这些节点类型在 Provider 输出中省略,并提示改用能同时
|
|
16
|
+
* 生成配置段的 Artifact 模板方法。
|
|
17
|
+
*/
|
|
18
|
+
const SECTION_NODES = {
|
|
19
|
+
surge: {
|
|
20
|
+
client: 'Surge',
|
|
21
|
+
hints: {
|
|
22
|
+
[NodeTypeEnum.Wireguard]: {
|
|
23
|
+
sectionName: 'WireGuard',
|
|
24
|
+
formatter: 'getSurgeWireguardNodes',
|
|
25
|
+
},
|
|
26
|
+
[NodeTypeEnum.Tailscale]: {
|
|
27
|
+
sectionName: 'Tailscale',
|
|
28
|
+
formatter: 'getSurgeTailscaleNodes',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
surfboard: {
|
|
33
|
+
client: 'Surfboard',
|
|
34
|
+
hints: {
|
|
35
|
+
[NodeTypeEnum.Wireguard]: {
|
|
36
|
+
sectionName: 'WireGuard',
|
|
37
|
+
formatter: 'getSurfboardWireguardNodes',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
10
42
|
export const formatProviderNodes = (format, nodeList, filter, options = {}) => {
|
|
11
43
|
const callFormatter = (formatter, formatterOptions) => {
|
|
12
44
|
if (formatterOptions)
|
|
@@ -15,6 +47,20 @@ export const formatProviderNodes = (format, nodeList, filter, options = {}) => {
|
|
|
15
47
|
? formatter(nodeList)
|
|
16
48
|
: formatter(nodeList, filter);
|
|
17
49
|
};
|
|
50
|
+
const withoutSectionNodes = () => {
|
|
51
|
+
const filtered = applyFilter(nodeList, filter);
|
|
52
|
+
const entry = SECTION_NODES[format];
|
|
53
|
+
if (!entry)
|
|
54
|
+
return filtered;
|
|
55
|
+
const logger = options.logger ?? defaultLogger;
|
|
56
|
+
return filtered.filter((node) => {
|
|
57
|
+
const hint = entry.hints[node.type];
|
|
58
|
+
if (!hint)
|
|
59
|
+
return true;
|
|
60
|
+
logger.warn(`${entry.client} Provider 纯节点列表无法包含 ${hint.sectionName} 配置段,节点 ${node.nodeName} 会被省略;请使用完整 Artifact 模板和 ${hint.formatter}`);
|
|
61
|
+
return false;
|
|
62
|
+
});
|
|
63
|
+
};
|
|
18
64
|
switch (format) {
|
|
19
65
|
case 'clash':
|
|
20
66
|
case 'clash-provider':
|
|
@@ -25,9 +71,9 @@ export const formatProviderNodes = (format, nodeList, filter, options = {}) => {
|
|
|
25
71
|
endpoints: callFormatter(getSingboxEndpoints),
|
|
26
72
|
}, null, 2);
|
|
27
73
|
case 'surge':
|
|
28
|
-
return
|
|
74
|
+
return getSurgeNodes(withoutSectionNodes(), undefined, options);
|
|
29
75
|
case 'surfboard':
|
|
30
|
-
return
|
|
76
|
+
return getSurfboardNodes(withoutSectionNodes(), undefined, options);
|
|
31
77
|
case 'quantumultx':
|
|
32
78
|
return callFormatter(getQuantumultXNodes, options);
|
|
33
79
|
case 'loon':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/runtime/format.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/runtime/format.ts"],"names":[],"mappings":"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"}
|
package/build/runtime/node.js
CHANGED
|
@@ -3,13 +3,13 @@ import fs from 'fs-extra';
|
|
|
3
3
|
import { logger as nodeLogger } from '@surgio/logger';
|
|
4
4
|
import packageJson from '../../package.json' with { type: 'json' };
|
|
5
5
|
import { unifiedCache } from '../cache/singleton.js';
|
|
6
|
-
import { CACHE_KEYS } from '../constant/index.js';
|
|
7
6
|
import { Artifact, createNodeRenderer } from '../generator/index.js';
|
|
8
7
|
import { createProvider } from '../provider/create-provider.js';
|
|
9
8
|
import { ArtifactValidator } from '../validators/index.js';
|
|
10
9
|
import { loadRemoteSnippetList } from '../utils/remote-snippet.js';
|
|
11
10
|
import { loadModuleSync } from '../utils/module-loader.js';
|
|
12
|
-
import {
|
|
11
|
+
import { getRenderedArtifactCacheMaxage } from '../utils/env-flag.js';
|
|
12
|
+
import { buildRenderedArtifactCacheKey } from './cache-key.js';
|
|
13
13
|
import { createHttpClient } from './http-client.js';
|
|
14
14
|
import { formatProviderNodes } from './format.js';
|
|
15
15
|
export const createNodeSurgioRuntime = (project, options = {}) => {
|
|
@@ -55,8 +55,8 @@ export const createNodeSurgioRuntime = (project, options = {}) => {
|
|
|
55
55
|
: undefined;
|
|
56
56
|
};
|
|
57
57
|
const render = async (artifactConfig, renderOptions = {}) => {
|
|
58
|
-
const cacheKey =
|
|
59
|
-
const
|
|
58
|
+
const cacheKey = buildRenderedArtifactCacheKey('node-runtime', artifactConfig, renderOptions);
|
|
59
|
+
const renderFresh = async () => {
|
|
60
60
|
const snippets = await loadRemoteSnippetList(config.remoteSnippets ?? [], true, {
|
|
61
61
|
cache,
|
|
62
62
|
cacheTtl: network.remoteSnippetCacheTtl,
|
|
@@ -101,7 +101,13 @@ export const createNodeSurgioRuntime = (project, options = {}) => {
|
|
|
101
101
|
subscriptionUserInfo: artifact.subscriptionUserInfo,
|
|
102
102
|
subscriptionUserInfoMap: Object.fromEntries(artifact.subscriptionUserInfoMap),
|
|
103
103
|
};
|
|
104
|
-
}
|
|
104
|
+
};
|
|
105
|
+
if (!cacheKey.cacheable) {
|
|
106
|
+
logger.debug('Artifact %s 跳过渲染缓存:%s', artifactConfig.name, cacheKey.reason);
|
|
107
|
+
const data = await renderFresh();
|
|
108
|
+
return { ...data, artifact: artifactConfig };
|
|
109
|
+
}
|
|
110
|
+
const data = await cache.wrap(cacheKey.key, renderFresh, network.artifactCacheTtl ?? getRenderedArtifactCacheMaxage());
|
|
105
111
|
return { ...data, artifact: artifactConfig };
|
|
106
112
|
};
|
|
107
113
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/runtime/node.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/runtime/node.ts"],"names":[],"mappings":"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"}
|
package/build/utils/dns.js
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import { promises as dns } from 'dns';
|
|
2
2
|
import { createLogger } from '@surgio/logger';
|
|
3
|
-
import Bluebird from 'bluebird';
|
|
4
3
|
import { coalesceAsync } from '../runtime/dns.js';
|
|
5
4
|
import { getNetworkResolveTimeout } from './env-flag.js';
|
|
6
5
|
const logger = createLogger({ service: 'surgio:utils:dns' });
|
|
7
6
|
export const resolveDomain = async (domain, timeout = getNetworkResolveTimeout()) => {
|
|
8
7
|
logger.debug(`try to resolve domain ${domain}`);
|
|
9
8
|
const now = Date.now();
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
let timer;
|
|
10
|
+
let records;
|
|
11
|
+
try {
|
|
12
|
+
records = await Promise.race([
|
|
13
|
+
resolve4And6Once(domain),
|
|
14
|
+
new Promise((resolve) => {
|
|
15
|
+
timer = setTimeout(() => resolve([]), timeout);
|
|
16
|
+
}),
|
|
17
|
+
]);
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
if (timer !== undefined)
|
|
21
|
+
clearTimeout(timer);
|
|
22
|
+
}
|
|
14
23
|
logger.debug(`resolved domain ${domain}: ${JSON.stringify(records)} ${Date.now() - now}ms`);
|
|
15
24
|
if (records.length) {
|
|
16
25
|
return records.map((item) => item.address);
|