UNPKG

@herbertgao/surgio

Version:

Generating rules for Surge, Clash, Quantumult like a PRO

86 lines 3.25 kB
"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