├── .dockerignore ├── .github ├── ISSUE_TEMPLATE │ ├── bug-反馈.md │ ├── 使用问题.md │ └── 功能请求.md └── workflows │ ├── deploy.yml │ ├── docker-image.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── api └── index.js ├── docker-compose.yml ├── package.json ├── pnpm-lock.yaml ├── public ├── favicon.ico └── favicon.png ├── redis.conf ├── scripts ├── build-vercel.mjs ├── release.sh └── setup-kv.cjs ├── src ├── adapters │ ├── assets │ │ └── fileAssetFetcher.js │ └── kv │ │ ├── cloudflareKv.js │ │ ├── memoryKv.js │ │ ├── redisKv.js │ │ └── upstashKv.js ├── app │ └── createApp.jsx ├── assets │ └── favicon.js ├── builders │ ├── BaseConfigBuilder.js │ ├── ClashConfigBuilder.js │ ├── SingboxConfigBuilder.js │ ├── SurgeConfigBuilder.js │ └── helpers │ │ ├── clashConfigUtils.js │ │ ├── groupBuilder.js │ │ └── proxyHelpers.js ├── components │ ├── CustomRules.jsx │ ├── Footer.jsx │ ├── Form.jsx │ ├── Layout.jsx │ ├── Navbar.jsx │ ├── SubscribeLinks.jsx │ ├── TextareaWithActions.jsx │ ├── UpdateChecker.jsx │ ├── ValidatedTextarea.jsx │ └── formLogic.js ├── config │ ├── clashConfig.js │ ├── index.js │ ├── ruleGenerators.js │ ├── ruleUrls.js │ ├── rules.js │ ├── singboxConfig.js │ └── surgeConfig.js ├── constants.js ├── i18n │ └── index.js ├── parsers │ ├── ProxyParser.js │ ├── convertSurgeProxyToObject.js │ ├── convertYamlProxyToObject.js │ ├── index.js │ ├── protocols │ │ ├── hysteria2Parser.js │ │ ├── shadowsocksParser.js │ │ ├── trojanParser.js │ │ ├── tuicParser.js │ │ ├── vlessParser.js │ │ └── vmessParser.js │ └── subscription │ │ ├── httpSubscriptionFetcher.js │ │ └── subscriptionContentParser.js ├── platforms │ ├── node-server.js │ └── nodeHttpServer.js ├── runtime │ ├── cloudflare.js │ ├── node.js │ ├── runtimeConfig.js │ └── vercel.js ├── services │ ├── configStorageService.js │ ├── errors.js │ └── shortLinkService.js ├── utils.js ├── utils │ └── surgeConfigParser.js └── worker.jsx ├── test ├── clash-builder.test.js ├── country-group.test.js ├── index.test.js ├── redisKvAdapter.test.js ├── selectedRules-compatibility.test.js ├── singbox-input-parsing.test.js ├── surge-config-parser.test.js ├── surge-input-parsing.test.js ├── udp-handling.test.js ├── worker.test.js └── yaml-parsing.test.js ├── vercel.json ├── vitest.config.js └── wrangler.toml /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.dockerignore -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-反馈.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/ISSUE_TEMPLATE/bug-反馈.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/使用问题.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/ISSUE_TEMPLATE/使用问题.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/功能请求.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/ISSUE_TEMPLATE/功能请求.md -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/workflows/deploy.yml -------------------------------------------------------------------------------- /.github/workflows/docker-image.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/workflows/docker-image.yml -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/.gitignore -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/README.md -------------------------------------------------------------------------------- /api/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/api/index.js -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/package.json -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/pnpm-lock.yaml -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/public/favicon.png -------------------------------------------------------------------------------- /redis.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/redis.conf -------------------------------------------------------------------------------- /scripts/build-vercel.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/scripts/build-vercel.mjs -------------------------------------------------------------------------------- /scripts/release.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/scripts/release.sh -------------------------------------------------------------------------------- /scripts/setup-kv.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/scripts/setup-kv.cjs -------------------------------------------------------------------------------- /src/adapters/assets/fileAssetFetcher.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/adapters/assets/fileAssetFetcher.js -------------------------------------------------------------------------------- /src/adapters/kv/cloudflareKv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/adapters/kv/cloudflareKv.js -------------------------------------------------------------------------------- /src/adapters/kv/memoryKv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/adapters/kv/memoryKv.js -------------------------------------------------------------------------------- /src/adapters/kv/redisKv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/adapters/kv/redisKv.js -------------------------------------------------------------------------------- /src/adapters/kv/upstashKv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/adapters/kv/upstashKv.js -------------------------------------------------------------------------------- /src/app/createApp.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/app/createApp.jsx -------------------------------------------------------------------------------- /src/assets/favicon.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/assets/favicon.js -------------------------------------------------------------------------------- /src/builders/BaseConfigBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/BaseConfigBuilder.js -------------------------------------------------------------------------------- /src/builders/ClashConfigBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/ClashConfigBuilder.js -------------------------------------------------------------------------------- /src/builders/SingboxConfigBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/SingboxConfigBuilder.js -------------------------------------------------------------------------------- /src/builders/SurgeConfigBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/SurgeConfigBuilder.js -------------------------------------------------------------------------------- /src/builders/helpers/clashConfigUtils.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/helpers/clashConfigUtils.js -------------------------------------------------------------------------------- /src/builders/helpers/groupBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/helpers/groupBuilder.js -------------------------------------------------------------------------------- /src/builders/helpers/proxyHelpers.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/builders/helpers/proxyHelpers.js -------------------------------------------------------------------------------- /src/components/CustomRules.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/CustomRules.jsx -------------------------------------------------------------------------------- /src/components/Footer.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/Footer.jsx -------------------------------------------------------------------------------- /src/components/Form.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/Form.jsx -------------------------------------------------------------------------------- /src/components/Layout.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/Layout.jsx -------------------------------------------------------------------------------- /src/components/Navbar.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/Navbar.jsx -------------------------------------------------------------------------------- /src/components/SubscribeLinks.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/SubscribeLinks.jsx -------------------------------------------------------------------------------- /src/components/TextareaWithActions.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/TextareaWithActions.jsx -------------------------------------------------------------------------------- /src/components/UpdateChecker.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/UpdateChecker.jsx -------------------------------------------------------------------------------- /src/components/ValidatedTextarea.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/ValidatedTextarea.jsx -------------------------------------------------------------------------------- /src/components/formLogic.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/components/formLogic.js -------------------------------------------------------------------------------- /src/config/clashConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/clashConfig.js -------------------------------------------------------------------------------- /src/config/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/index.js -------------------------------------------------------------------------------- /src/config/ruleGenerators.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/ruleGenerators.js -------------------------------------------------------------------------------- /src/config/ruleUrls.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/ruleUrls.js -------------------------------------------------------------------------------- /src/config/rules.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/rules.js -------------------------------------------------------------------------------- /src/config/singboxConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/singboxConfig.js -------------------------------------------------------------------------------- /src/config/surgeConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/config/surgeConfig.js -------------------------------------------------------------------------------- /src/constants.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/constants.js -------------------------------------------------------------------------------- /src/i18n/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/i18n/index.js -------------------------------------------------------------------------------- /src/parsers/ProxyParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/ProxyParser.js -------------------------------------------------------------------------------- /src/parsers/convertSurgeProxyToObject.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/convertSurgeProxyToObject.js -------------------------------------------------------------------------------- /src/parsers/convertYamlProxyToObject.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/convertYamlProxyToObject.js -------------------------------------------------------------------------------- /src/parsers/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/index.js -------------------------------------------------------------------------------- /src/parsers/protocols/hysteria2Parser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/protocols/hysteria2Parser.js -------------------------------------------------------------------------------- /src/parsers/protocols/shadowsocksParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/protocols/shadowsocksParser.js -------------------------------------------------------------------------------- /src/parsers/protocols/trojanParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/protocols/trojanParser.js -------------------------------------------------------------------------------- /src/parsers/protocols/tuicParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/protocols/tuicParser.js -------------------------------------------------------------------------------- /src/parsers/protocols/vlessParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/protocols/vlessParser.js -------------------------------------------------------------------------------- /src/parsers/protocols/vmessParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/protocols/vmessParser.js -------------------------------------------------------------------------------- /src/parsers/subscription/httpSubscriptionFetcher.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/subscription/httpSubscriptionFetcher.js -------------------------------------------------------------------------------- /src/parsers/subscription/subscriptionContentParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/parsers/subscription/subscriptionContentParser.js -------------------------------------------------------------------------------- /src/platforms/node-server.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/platforms/node-server.js -------------------------------------------------------------------------------- /src/platforms/nodeHttpServer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/platforms/nodeHttpServer.js -------------------------------------------------------------------------------- /src/runtime/cloudflare.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/runtime/cloudflare.js -------------------------------------------------------------------------------- /src/runtime/node.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/runtime/node.js -------------------------------------------------------------------------------- /src/runtime/runtimeConfig.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/runtime/runtimeConfig.js -------------------------------------------------------------------------------- /src/runtime/vercel.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/runtime/vercel.js -------------------------------------------------------------------------------- /src/services/configStorageService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/services/configStorageService.js -------------------------------------------------------------------------------- /src/services/errors.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/services/errors.js -------------------------------------------------------------------------------- /src/services/shortLinkService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/services/shortLinkService.js -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/utils.js -------------------------------------------------------------------------------- /src/utils/surgeConfigParser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/utils/surgeConfigParser.js -------------------------------------------------------------------------------- /src/worker.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/src/worker.jsx -------------------------------------------------------------------------------- /test/clash-builder.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/clash-builder.test.js -------------------------------------------------------------------------------- /test/country-group.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/country-group.test.js -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/index.test.js -------------------------------------------------------------------------------- /test/redisKvAdapter.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/redisKvAdapter.test.js -------------------------------------------------------------------------------- /test/selectedRules-compatibility.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/selectedRules-compatibility.test.js -------------------------------------------------------------------------------- /test/singbox-input-parsing.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/singbox-input-parsing.test.js -------------------------------------------------------------------------------- /test/surge-config-parser.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/surge-config-parser.test.js -------------------------------------------------------------------------------- /test/surge-input-parsing.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/surge-input-parsing.test.js -------------------------------------------------------------------------------- /test/udp-handling.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/udp-handling.test.js -------------------------------------------------------------------------------- /test/worker.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/worker.test.js -------------------------------------------------------------------------------- /test/yaml-parsing.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/test/yaml-parsing.test.js -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/vercel.json -------------------------------------------------------------------------------- /vitest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/vitest.config.js -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/7Sageer/sublink-worker/HEAD/wrangler.toml --------------------------------------------------------------------------------