UNPKG

@herbertgao/surgio

Version:

Generating rules for Surge, Clash, Quantumult like a PRO

101 lines 3.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SurgioConfigValidator = exports.QuantumultXConfigValidator = exports.SurfboardConfigValidator = exports.SurgeConfigValidator = exports.ClashConfigValidator = exports.RemoteSnippetValidator = exports.ClashCoreValidator = void 0; const zod_1 = require("zod"); const artifact_1 = require("./artifact"); const filter_1 = require("./filter"); const isRegExp = (val) => { return val instanceof RegExp; }; const RegexValidatior = zod_1.z.custom((val) => { return isRegExp(val); }); exports.ClashCoreValidator = zod_1.z.union([ zod_1.z.literal('clash'), zod_1.z.literal('clash.meta'), zod_1.z.literal('stash'), ]); exports.RemoteSnippetValidator = zod_1.z.object({ name: zod_1.z.string(), url: zod_1.z.string().url(), surgioSnippet: zod_1.z.oboolean(), }); exports.ClashConfigValidator = zod_1.z.object({ enableTuic: zod_1.z.oboolean(), enableShadowTls: zod_1.z.oboolean(), enableHysteria2: zod_1.z.oboolean(), enableVless: zod_1.z.oboolean(), clashCore: exports.ClashCoreValidator.optional(), }); exports.SurgeConfigValidator = zod_1.z.object({ resolveHostname: zod_1.z.oboolean(), vmessAEAD: zod_1.z.oboolean(), }); exports.SurfboardConfigValidator = zod_1.z.object({ vmessAEAD: zod_1.z.oboolean(), }); exports.QuantumultXConfigValidator = zod_1.z.object({ vmessAEAD: zod_1.z.oboolean(), }); exports.SurgioConfigValidator = zod_1.z.object({ artifacts: zod_1.z.array(artifact_1.ArtifactValidator), remoteSnippets: zod_1.z.array(exports.RemoteSnippetValidator).optional(), urlBase: zod_1.z.ostring(), upload: zod_1.z .object({ prefix: zod_1.z.ostring(), region: zod_1.z.ostring(), endpoint: zod_1.z.ostring(), bucket: zod_1.z.string(), accessKeyId: zod_1.z.string(), accessKeySecret: zod_1.z.string(), }) .optional(), binPath: zod_1.z .object({ shadowsocksr: zod_1.z.string().regex(/^\//), }) .optional(), flags: zod_1.z .record(zod_1.z.union([ zod_1.z.string(), RegexValidatior, zod_1.z.array(zod_1.z.union([zod_1.z.string(), RegexValidatior])), ])) .optional(), surgeConfig: exports.SurgeConfigValidator.optional(), surfboardConfig: exports.SurfboardConfigValidator.optional(), quantumultXConfig: exports.QuantumultXConfigValidator.optional(), clashConfig: exports.ClashConfigValidator.optional(), gateway: zod_1.z .object({ accessToken: zod_1.z.ostring(), viewerToken: zod_1.z.ostring(), auth: zod_1.z.oboolean(), cookieMaxAge: zod_1.z.onumber(), useCacheOnError: zod_1.z.oboolean(), passRequestUserAgent: zod_1.z.oboolean(), }) .optional(), checkHostname: zod_1.z.oboolean(), resolveHostname: zod_1.z.oboolean(), proxyTestUrl: zod_1.z.string().url().optional(), proxyTestInterval: zod_1.z.onumber(), internetTestUrl: zod_1.z.string().url().optional(), internetTestInterval: zod_1.z.onumber(), customFilters: zod_1.z .record(zod_1.z.union([filter_1.NodeFilterTypeValidator, filter_1.SortedNodeFilterTypeValidator])) .optional(), customParams: zod_1.z.record(zod_1.z.any()).optional(), analytics: zod_1.z.oboolean(), cache: zod_1.z .object({ type: zod_1.z.union([zod_1.z.literal('redis'), zod_1.z.literal('default')]).optional(), redisUrl: zod_1.z .string() .regex(/rediss?/) .optional(), }) .optional(), }); //# sourceMappingURL=surgio-config.js.map