@herbertgao/surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
101 lines • 3.68 kB
JavaScript
"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