@herbertgao/surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
86 lines • 3.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.VmessNodeConfigValidator = exports.VmessHttpUpgradeOptsValidator = exports.VmessQuicOptsValidator = exports.VmessGRPCOptsValidator = exports.VmessHttpOptsValidator = exports.VmessH2OptsValidator = exports.VmessWSOptsValidator = exports.VmessMethodValidator = exports.VmessNetworkValidator = void 0;
const zod_1 = require("zod");
const types_1 = require("../types");
const common_1 = require("./common");
exports.VmessNetworkValidator = zod_1.z.union([
zod_1.z.literal('tcp'),
zod_1.z.literal('ws'),
zod_1.z.literal('h2'),
zod_1.z.literal('http'),
zod_1.z.literal('grpc'),
zod_1.z.literal('quic'),
zod_1.z.literal('httpupgrade'),
]);
exports.VmessMethodValidator = zod_1.z.union([
zod_1.z.literal('none'),
zod_1.z.literal('aes-128-gcm'),
zod_1.z.literal('chacha20-poly1305'),
zod_1.z.literal('auto'),
]);
exports.VmessWSOptsValidator = zod_1.z.object({
path: zod_1.z.string(),
headers: zod_1.z.record(zod_1.z.string()).optional(),
});
exports.VmessH2OptsValidator = zod_1.z.object({
path: zod_1.z.string(),
host: zod_1.z.array(zod_1.z.string()).nonempty(),
});
exports.VmessHttpOptsValidator = zod_1.z.object({
path: zod_1.z.array(zod_1.z.string()),
headers: zod_1.z.record(zod_1.z.string()).optional(),
method: zod_1.z.ostring().default('GET'),
});
exports.VmessGRPCOptsValidator = zod_1.z.object({
serviceName: zod_1.z.string(),
});
exports.VmessQuicOptsValidator = zod_1.z.object({
// no field now
});
exports.VmessHttpUpgradeOptsValidator = zod_1.z.object({
path: zod_1.z.string(),
host: zod_1.z.string().optional(),
headers: zod_1.z.record(zod_1.z.string()).optional(),
});
/**
* @see https://stash.wiki/proxy-protocols/proxy-types#vmess
* @see https://wiki.metacubex.one/config/proxies/vmess/
*/
exports.VmessNodeConfigValidator = common_1.SimpleNodeConfigValidator.extend({
type: zod_1.z.literal(types_1.NodeTypeEnum.Vmess),
hostname: zod_1.z.string(),
port: common_1.PortValidator,
method: exports.VmessMethodValidator,
uuid: zod_1.z.string().uuid(),
alterId: common_1.AlterIdValiator.optional(),
network: exports.VmessNetworkValidator.default('tcp'),
udpRelay: zod_1.z.oboolean(),
wsOpts: exports.VmessWSOptsValidator.optional(),
h2Opts: exports.VmessH2OptsValidator.optional(),
httpOpts: exports.VmessHttpOptsValidator.optional(),
grpcOpts: exports.VmessGRPCOptsValidator.optional(),
quicOpts: exports.VmessQuicOptsValidator.optional(),
httpUpgradeOpts: exports.VmessHttpUpgradeOptsValidator.optional(),
tls: zod_1.z.oboolean(),
sni: zod_1.z.ostring(),
tls13: zod_1.z.oboolean(),
skipCertVerify: zod_1.z.oboolean(),
serverCertFingerprintSha256: zod_1.z.ostring(),
alpn: zod_1.z.array(zod_1.z.string()).nonempty().optional(),
clientFingerprint: zod_1.z.ostring(),
multiplex: common_1.MultiplexValidator.optional(),
/**
* @deprecated
*/
host: zod_1.z.ostring(),
/**
* @deprecated
*/
path: zod_1.z.ostring(),
/**
* @deprecated
*/
wsHeaders: zod_1.z.record(zod_1.z.string()).optional(),
});
//# sourceMappingURL=vmess.js.map