SYMBOL INDEX (473 symbols across 76 files) FILE: backend/gulpfile.babel.js function peggy (line 13) | function peggy() { function lint (line 34) | function lint() { function styles (line 43) | function styles() { function scripts (line 57) | function scripts(src, dest) { function banner (line 82) | function banner(dest) { FILE: backend/src/constants.js constant SCHEMA_VERSION_KEY (line 1) | const SCHEMA_VERSION_KEY = 'schemaVersion'; constant SETTINGS_KEY (line 2) | const SETTINGS_KEY = 'settings'; constant SUBS_KEY (line 3) | const SUBS_KEY = 'subs'; constant COLLECTIONS_KEY (line 4) | const COLLECTIONS_KEY = 'collections'; constant FILES_KEY (line 5) | const FILES_KEY = 'files'; constant MODULES_KEY (line 6) | const MODULES_KEY = 'modules'; constant ARTIFACTS_KEY (line 7) | const ARTIFACTS_KEY = 'artifacts'; constant RULES_KEY (line 8) | const RULES_KEY = 'rules'; constant TOKENS_KEY (line 9) | const TOKENS_KEY = 'tokens'; constant GIST_BACKUP_KEY (line 10) | const GIST_BACKUP_KEY = 'Auto Generated Sub-Store Backup'; constant GIST_BACKUP_FILE_NAME (line 11) | const GIST_BACKUP_FILE_NAME = 'Sub-Store'; constant ARTIFACT_REPOSITORY_KEY (line 12) | const ARTIFACT_REPOSITORY_KEY = 'Sub-Store Artifacts Repository'; constant RESOURCE_CACHE_KEY (line 13) | const RESOURCE_CACHE_KEY = '#sub-store-cached-resource'; constant HEADERS_RESOURCE_CACHE_KEY (line 14) | const HEADERS_RESOURCE_CACHE_KEY = '#sub-store-cached-headers-resource'; constant SCRIPT_RESOURCE_CACHE_KEY (line 15) | const SCRIPT_RESOURCE_CACHE_KEY = '#sub-store-cached-script-resource'; constant DEFAULT_CACHE_TTL (line 16) | const DEFAULT_CACHE_TTL = 60 * 60 * 1000; constant DEFAULT_HEADERS_CACHE_TTL (line 17) | const DEFAULT_HEADERS_CACHE_TTL = 60 * 1000; constant DEFAULT_SCRIPT_CACHE_TTL (line 18) | const DEFAULT_SCRIPT_CACHE_TTL = 48 * 3600 * 1000; FILE: backend/src/core/proxy-utils/index.js function preprocess (line 30) | function preprocess(raw) { function parse (line 44) | function parse(raw) { function processFn (line 95) | async function processFn( function produce (line 237) | function produce(proxies, targetPlatform, type, opts = {}) { function tryParse (line 357) | function tryParse(parser, line) { function safeMatch (line 367) | function safeMatch(parser, line) { function formatTransportPath (line 375) | function formatTransportPath(path) { function lastParse (line 388) | function lastParse(proxy) { function isIP (line 704) | function isIP(ip) { FILE: backend/src/core/proxy-utils/parsers/index.js function surge_port_hopping (line 21) | function surge_port_hopping(raw) { function URI_PROXY (line 34) | function URI_PROXY() { function URI_SOCKS (line 82) | function URI_SOCKS() { function URI_SS (line 124) | function URI_SS() { function URI_SSR (line 364) | function URI_SSR() { function URI_VMess (line 433) | function URI_VMess() { function URI_VLESS (line 676) | function URI_VLESS() { function URI_AnyTLS (line 851) | function URI_AnyTLS() { function URI_Hysteria2 (line 908) | function URI_Hysteria2() { function URI_Hysteria (line 1006) | function URI_Hysteria() { function URI_TUIC (line 1077) | function URI_TUIC() { function URI_WireGuard (line 1135) | function URI_WireGuard() { function URI_Trojan (line 1222) | function URI_Trojan() { function Clash_All (line 1249) | function Clash_All() { function QX_SS (line 1324) | function QX_SS() { function QX_SSR (line 1339) | function QX_SSR() { function QX_VMess (line 1351) | function QX_VMess() { function QX_VLESS (line 1360) | function QX_VLESS() { function QX_Trojan (line 1369) | function QX_Trojan() { function QX_Http (line 1378) | function QX_Http() { function QX_Socks5 (line 1387) | function QX_Socks5() { function Loon_SS (line 1396) | function Loon_SS() { function Loon_SSR (line 1408) | function Loon_SSR() { function Loon_VMess (line 1420) | function Loon_VMess() { function Loon_Vless (line 1433) | function Loon_Vless() { function Loon_Trojan (line 1442) | function Loon_Trojan() { function Loon_AnyTLS (line 1451) | function Loon_AnyTLS() { function Loon_Hysteria2 (line 1460) | function Loon_Hysteria2() { function Loon_Http (line 1470) | function Loon_Http() { function Loon_Socks5 (line 1479) | function Loon_Socks5() { function Loon_WireGuard (line 1489) | function Loon_WireGuard() { function Surge_Direct (line 1597) | function Surge_Direct() { function Surge_AnyTLS (line 1605) | function Surge_AnyTLS() { function Surge_TrustTunnel (line 1613) | function Surge_TrustTunnel() { function Surge_SSH (line 1621) | function Surge_SSH() { function Surge_SS (line 1629) | function Surge_SS() { function Surge_VMess (line 1638) | function Surge_VMess() { function Surge_Trojan (line 1650) | function Surge_Trojan() { function Surge_Http (line 1659) | function Surge_Http() { function Surge_Socks5 (line 1668) | function Surge_Socks5() { function Surge_External (line 1677) | function Surge_External() { function Surge_Snell (line 1750) | function Surge_Snell() { function Surge_Tuic (line 1759) | function Surge_Tuic() { function Surge_WireGuard (line 1772) | function Surge_WireGuard() { function Surge_Hysteria2 (line 1781) | function Surge_Hysteria2() { function isIP (line 1795) | function isIP(ip) { FILE: backend/src/core/proxy-utils/parsers/peggy/loon.js function getParser (line 217) | function getParser() { FILE: backend/src/core/proxy-utils/parsers/peggy/qx.js function getParser (line 209) | function getParser() { FILE: backend/src/core/proxy-utils/parsers/peggy/surge.js function getParser (line 273) | function getParser() { FILE: backend/src/core/proxy-utils/parsers/peggy/trojan-uri.js function getParser (line 163) | function getParser() { FILE: backend/src/core/proxy-utils/preprocessors/index.js function HTML (line 5) | function HTML() { function Base64Encoded (line 13) | function Base64Encoded() { function fallbackBase64Encoded (line 53) | function fallbackBase64Encoded() { function Clash (line 73) | function Clash() { function SSD (line 121) | function SSD() { function FullConfig (line 165) | function FullConfig() { FILE: backend/src/core/proxy-utils/processors/index.js function isObject (line 26) | function isObject(item) { function trimWrap (line 29) | function trimWrap(str) { function deepMerge (line 35) | function deepMerge(target, _other) { function ConditionalFilter (line 85) | function ConditionalFilter({ rule }) { function isMatch (line 94) | function isMatch(rule, proxy) { function QuickSettingOperator (line 128) | function QuickSettingOperator(args) { function FlagOperator (line 169) | function FlagOperator({ mode, tw }) { function HandleDuplicateOperator (line 198) | function HandleDuplicateOperator(arg) { function SortOperator (line 271) | function SortOperator(order = 'asc') { function RegexSortOperator (line 293) | function RegexSortOperator(input) { function getRegexOrder (line 324) | function getRegexOrder(expressions, str) { function RegexRenameOperator (line 337) | function RegexRenameOperator(regex) { function RegexDeleteOperator (line 355) | function RegexDeleteOperator(regex) { function ScriptOperator (line 380) | function ScriptOperator( function parseIP4P (line 500) | function parseIP4P(IP4P) { constant DOMAIN_RESOLVERS (line 527) | const DOMAIN_RESOLVERS = { function ResolveDomainOperator (line 688) | function ResolveDomainOperator({ function isIP (line 833) | function isIP(ip) { function isAscii (line 839) | function isAscii(str) { function UselessFilter (line 847) | function UselessFilter() { function RegionFilter (line 882) | function RegionFilter(input) { function RegexFilter (line 912) | function RegexFilter({ regex = [], keep = true }) { function buildRegex (line 926) | function buildRegex(str, ...options) { function TypeFilter (line 937) | function TypeFilter(input) { function ScriptFilter (line 967) | function ScriptFilter( function ApplyFilter (line 1037) | async function ApplyFilter(filter, objs) { function ApplyOperator (line 1073) | async function ApplyOperator(operator, objs) { function ApplyProcessor (line 1116) | async function ApplyProcessor(processor, objs) { function shuffle (line 1125) | function shuffle(array) { function clone (line 1146) | function clone(object) { function createDynamicFunction (line 1150) | function createDynamicFunction(name, script, $arguments, $options) { FILE: backend/src/core/proxy-utils/producers/clash.js function Clash_Producer (line 4) | function Clash_Producer() { FILE: backend/src/core/proxy-utils/producers/clashmeta.js function ClashMeta_Producer (line 11) | function ClashMeta_Producer() { FILE: backend/src/core/proxy-utils/producers/egern.js function Egern_Producer (line 3) | function Egern_Producer() { FILE: backend/src/core/proxy-utils/producers/index.js function JSON_Producer (line 15) | function JSON_Producer() { FILE: backend/src/core/proxy-utils/producers/loon.js function Loon_Producer (line 15) | function Loon_Producer() { function shadowsocks (line 54) | function shadowsocks(proxy) { function shadowsocksr (line 190) | function shadowsocksr(proxy) { function trojan (line 267) | function trojan(proxy) { function anytls (line 329) | function anytls(proxy) { function vmess (line 384) | function vmess(proxy) { function vless (line 483) | function vless(proxy) { function http (line 589) | function http(proxy) { function socks5 (line 620) | function socks5(proxy) { function wireguard (line 658) | function wireguard(proxy) { function hysteria2 (line 732) | function hysteria2(proxy) { FILE: backend/src/core/proxy-utils/producers/qx.js function QX_Producer (line 5) | function QX_Producer() { function shadowsocks (line 57) | function shadowsocks(proxy) { function shadowsocksr (line 185) | function shadowsocksr(proxy) { function trojan (line 223) | function trojan(proxy) { function vmess (line 300) | function vmess(proxy) { function vless (line 405) | function vless(proxy) { function http (line 507) | function http(proxy) { function socks5 (line 568) | function socks5(proxy) { function needTls (line 629) | function needTls(proxy) { FILE: backend/src/core/proxy-utils/producers/shadowrocket.js function Shadowrocket_Producer (line 4) | function Shadowrocket_Producer() { FILE: backend/src/core/proxy-utils/producers/sing-box.js function singbox_Producer (line 944) | function singbox_Producer() { FILE: backend/src/core/proxy-utils/producers/stash.js function Stash_Producer (line 4) | function Stash_Producer() { FILE: backend/src/core/proxy-utils/producers/surfboard.js function Surfboard_Producer (line 7) | function Surfboard_Producer() { function anytls (line 42) | function anytls(proxy) { function snell (line 65) | function snell(proxy) { function shadowsocks (line 100) | function shadowsocks(proxy) { function trojan (line 157) | function trojan(proxy) { function vmess (line 184) | function vmess(proxy) { function http (line 215) | function http(proxy) { function socks5 (line 235) | function socks5(proxy) { function wireguard (line 255) | function wireguard(proxy) { function handleTransport (line 268) | function handleTransport(result, proxy) { FILE: backend/src/core/proxy-utils/producers/surge.js function Surge_Producer (line 15) | function Surge_Producer() { function shadowsocks (line 80) | function shadowsocks(proxy) { function trojan (line 224) | function trojan(proxy) { function anytls (line 307) | function anytls(proxy) { function trusttunnel (line 372) | function trusttunnel(proxy) { function vmess (line 439) | function vmess(proxy, includeUnsupportedProxy) { function ssh (line 529) | function ssh(proxy) { function http (line 595) | function http(proxy) { function direct (line 676) | function direct(proxy) { function socks5 (line 726) | function socks5(proxy) { function snell (line 807) | function snell(proxy) { function tuic (line 889) | function tuic(proxy) { function wireguard (line 991) | function wireguard(proxy) { function wireguard_surge (line 1106) | function wireguard_surge(proxy) { function hysteria2 (line 1168) | function hysteria2(proxy, includeUnsupportedProxy) { function handleTransport (line 1276) | function handleTransport(result, proxy, includeUnsupportedProxy) { FILE: backend/src/core/proxy-utils/producers/surgemac.js function SurgeMac_Producer (line 12) | function SurgeMac_Producer() { function external (line 39) | function external(proxy) { function shadowsocksr (line 83) | function shadowsocksr(proxy) { function mihomo (line 125) | function mihomo(proxy, type, opts) { function isIP (line 194) | function isIP(ip) { FILE: backend/src/core/proxy-utils/producers/uri.js function vless (line 5) | function vless(proxy) { function URI_Producer (line 138) | function URI_Producer() { FILE: backend/src/core/proxy-utils/producers/utils.js class Result (line 3) | class Result { method constructor (line 4) | constructor(proxy) { method append (line 9) | append(data) { method appendIfPresent (line 16) | appendIfPresent(data, attr) { method toString (line 22) | toString() { function isPresent (line 27) | function isPresent(obj, attr) { FILE: backend/src/core/proxy-utils/producers/v2ray.js constant URI (line 6) | const URI = URI_Producer(); function V2Ray_Producer (line 8) | function V2Ray_Producer() { FILE: backend/src/core/rule-utils/index.js function preprocess (line 7) | function preprocess(raw) { function parse (line 21) | function parse(raw) { function produce (line 37) | function produce(rules, targetPlatform) { FILE: backend/src/core/rule-utils/parsers.js constant RULE_TYPES_MAPPING (line 1) | const RULE_TYPES_MAPPING = [ function AllRuleParser (line 17) | function AllRuleParser() { FILE: backend/src/core/rule-utils/preprocessors.js function HTML (line 1) | function HTML() { function ClashProvider (line 9) | function ClashProvider() { FILE: backend/src/core/rule-utils/producers.js function QXFilter (line 3) | function QXFilter() { function SurgeRuleSet (line 31) | function SurgeRuleSet() { function LoonRules (line 46) | function LoonRules() { function ClashRuleProvider (line 63) | function ClashRuleProvider() { FILE: backend/src/products/cron-sync-artifacts.js function produceArtifacts (line 51) | async function produceArtifacts(names, type) { function doSync (line 73) | async function doSync() { FILE: backend/src/products/sub-store-0.js function serve (line 30) | function serve() { FILE: backend/src/products/sub-store-1.js function serve (line 25) | function serve() { FILE: backend/src/restful/artifacts.js function register (line 17) | function register($app) { function restoreArtifacts (line 35) | async function restoreArtifacts(_, res) { function getAllArtifacts (line 102) | function getAllArtifacts(req, res) { function replaceArtifact (line 107) | function replaceArtifact(req, res) { function getArtifact (line 113) | async function getArtifact(req, res) { function createArtifact (line 132) | function createArtifact(req, res) { function updateArtifact (line 162) | function updateArtifact(req, res) { function deleteArtifact (line 198) | async function deleteArtifact(req, res) { function validateArtifactName (line 241) | function validateArtifactName(name) { function syncToGist (line 245) | async function syncToGist(files) { FILE: backend/src/restful/collections.js function register (line 8) | function register($app) { function createCollection (line 23) | function createCollection(req, res) { function getCollection (line 52) | function getCollection(req, res) { function updateCollection (line 84) | function updateCollection(req, res) { function deleteCollection (line 137) | function deleteCollection(req, res) { function getAllCollections (line 146) | function getAllCollections(req, res) { function replaceCollection (line 151) | function replaceCollection(req, res) { FILE: backend/src/restful/download.js function register (line 18) | function register($app) { function downloadSubscription (line 89) | async function downloadSubscription(req, res) { function downloadCollection (line 408) | async function downloadCollection(req, res) { function nezhaMonitor (line 700) | async function nezhaMonitor(proxy, index, query) { function nezhaTransform (line 779) | function nezhaTransform(output) { FILE: backend/src/restful/errors/index.js class BaseError (line 1) | class BaseError { method constructor (line 2) | constructor(code, message, details) { class InternalServerError (line 9) | class InternalServerError extends BaseError { method constructor (line 10) | constructor(code, message, details) { class RequestInvalidError (line 16) | class RequestInvalidError extends BaseError { method constructor (line 17) | constructor(code, message, details) { class ResourceNotFoundError (line 23) | class ResourceNotFoundError extends BaseError { method constructor (line 24) | constructor(code, message, details) { class NetworkError (line 30) | class NetworkError extends BaseError { method constructor (line 31) | constructor(code, message, details) { FILE: backend/src/restful/file.js function register (line 14) | function register($app) { function createFile (line 31) | function createFile(req, res) { function getFile (line 52) | async function getFile(req, res, next) { function getWholeFile (line 236) | function getWholeFile(req, res) { function updateFile (line 268) | function updateFile(req, res) { function deleteFile (line 310) | function deleteFile(req, res) { function getAllFiles (line 319) | function getAllFiles(req, res) { function getAllWholeFiles (line 327) | function getAllWholeFiles(req, res) { function replaceFile (line 332) | function replaceFile(req, res) { FILE: backend/src/restful/index.js function serve (line 26) | function serve() { FILE: backend/src/restful/miscs.js function register (line 21) | function register($app) { function getEnv (line 98) | function getEnv(req, res) { function refresh (line 117) | async function refresh(_, res) { function gistBackupAction (line 129) | async function gistBackupAction(action, keep, encode) { function gistBackup (line 245) | async function gistBackup(req, res) { FILE: backend/src/restful/module.js function register (line 8) | function register($app) { function createModule (line 23) | function createModule(req, res) { function getModule (line 44) | function getModule(req, res) { function updateModule (line 64) | function updateModule(req, res) { function deleteModule (line 91) | function deleteModule(req, res) { function getAllModules (line 100) | function getAllModules(req, res) { function replaceModule (line 109) | function replaceModule(req, res) { FILE: backend/src/restful/node-info.js function register (line 6) | function register($app) { function getNodeInfo (line 10) | async function getNodeInfo(req, res) { FILE: backend/src/restful/parser.js function register (line 5) | function register($app) { function proxy_parser (line 22) | function proxy_parser(req, res) { function rule_parser (line 41) | function rule_parser(req, res) { FILE: backend/src/restful/preview.js function register (line 9) | function register($app) { function previewFile (line 15) | async function previewFile(req, res) { function compareSub (line 107) | async function compareSub(req, res) { function compareCollection (line 204) | async function compareCollection(req, res) { FILE: backend/src/restful/response.js function success (line 1) | function success(resp, data, statusCode) { function failed (line 8) | function failed(resp, error, statusCode) { FILE: backend/src/restful/settings.js function register (line 7) | function register($app) { function getSettings (line 13) | async function getSettings(req, res) { function updateSettings (line 38) | async function updateSettings(req, res) { function updateAvatar (line 81) | async function updateAvatar() { function updateArtifactStore (line 138) | async function updateArtifactStore() { FILE: backend/src/restful/sort.js function register (line 11) | function register($app) { function sortSubs (line 19) | function sortSubs(req, res) { function sortCollections (line 27) | function sortCollections(req, res) { function sortArtifacts (line 35) | function sortArtifacts(req, res) { function sortFiles (line 45) | function sortFiles(req, res) { function sortTokens (line 53) | function sortTokens(req, res) { FILE: backend/src/restful/subscriptions.js function register (line 25) | function register($app) { function getFlowInfo (line 40) | async function getFlowInfo(req, res) { function createSubscription (line 231) | function createSubscription(req, res) { function getSubscription (line 261) | function getSubscription(req, res) { function updateSubscription (line 294) | function updateSubscription(req, res) { function deleteSubscription (line 358) | function deleteSubscription(req, res) { function getAllSubscriptions (line 376) | function getAllSubscriptions(req, res) { function replaceSubscriptions (line 381) | function replaceSubscriptions(req, res) { FILE: backend/src/restful/sync.js function register (line 17) | function register($app) { function produceArtifact (line 26) | async function produceArtifact({ function syncArtifacts (line 603) | async function syncArtifacts() { function syncAllArtifacts (line 775) | async function syncAllArtifacts(_, res) { function syncArtifact (line 793) | async function syncArtifact(req, res) { FILE: backend/src/restful/token.js function register (line 7) | function register($app) { function deleteToken (line 17) | function deleteToken(req, res) { function getAllTokens (line 37) | function getAllTokens(req, res) { function signToken (line 52) | async function signToken(req, res) { FILE: backend/src/test/proxy-parsers/testcases.js function createTestCases (line 1) | function createTestCases() { FILE: backend/src/utils/database.js function findByName (line 1) | function findByName(list, name, field = 'name') { function findIndexByName (line 5) | function findIndexByName(list, name, field = 'name') { function deleteByName (line 9) | function deleteByName(list, name, field = 'name') { function updateByName (line 14) | function updateByName(list, name, newItem, field = 'name') { FILE: backend/src/utils/dns.js function doh (line 6) | async function doh({ url, domain, type = 'A', timeout, edns }) { FILE: backend/src/utils/download.js function download (line 25) | async function download( function downloadFile (line 357) | async function downloadFile(url, file) { FILE: backend/src/utils/flow.js function getFlowField (line 8) | function getFlowField(headers) { function getFlowHeaders (line 28) | async function getFlowHeaders( function parseFlowHeaders (line 235) | function parseFlowHeaders(flowHeaders) { function flowTransfer (line 284) | function flowTransfer(flow, unit = 'B') { function validCheck (line 293) | function validCheck(flow) { function getRmainingDays (line 316) | function getRmainingDays(opt = {}) { function normalizeFlowHeader (line 373) | function normalizeFlowHeader(flowHeaders, splitHeaders) { FILE: backend/src/utils/geo.js function getFlag (line 132) | function getFlag(name) { function getISO (line 503) | function getISO(name) { function removeFlag (line 508) | function removeFlag(str) { class MMDB (line 514) | class MMDB { method constructor (line 515) | constructor({ country, asn } = {}) { method geoip (line 544) | geoip(ip) { method ipaso (line 547) | ipaso(ip) { method ipasn (line 550) | ipasn(ip) { FILE: backend/src/utils/gist.js class Gist (line 9) | class Gist { method constructor (line 10) | constructor({ token, key, syncPlatform }) { method locate (line 110) | async locate() { method upload (line 138) | async upload(input) { method download (line 276) | async download(filename) { FILE: backend/src/utils/headers-resource-cache.js class ResourceCache (line 8) | class ResourceCache { method constructor (line 9) | constructor() { method _cleanup (line 27) | _cleanup(prefix, ttl) { method revokeAll (line 43) | revokeAll() { method _persist (line 48) | _persist() { method gettime (line 52) | gettime(id) { method get (line 60) | get(id, ttl, remove) { method set (line 74) | set(id, value, ttl) { function normalizeTTL (line 84) | function normalizeTTL(ttl) { function getTTL (line 91) | function getTTL() { FILE: backend/src/utils/index.js constant IPV4_REGEX (line 3) | const IPV4_REGEX = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$/; constant IPV6_REGEX (line 6) | const IPV6_REGEX = function isIPv4 (line 9) | function isIPv4(ip) { function isIPv6 (line 13) | function isIPv6(ip) { function isValidPortNumber (line 17) | function isValidPortNumber(port) { function isNotBlank (line 23) | function isNotBlank(str) { function getIfNotBlank (line 27) | function getIfNotBlank(str, defaultValue) { function isPresent (line 31) | function isPresent(obj) { function getIfPresent (line 35) | function getIfPresent(obj, defaultValue) { function getPolicyDescriptor (line 39) | function getPolicyDescriptor(str) { function getRandomInt (line 97) | function getRandomInt(min, max) { function getRandomPort (line 103) | function getRandomPort(portString) { function numberToString (line 114) | function numberToString(value) { function isValidUUID (line 120) | function isValidUUID(uuid) { function formatDateTime (line 129) | function formatDateTime(date, format = 'YYYY-MM-DD_HH-mm-ss') { function isPlainObject (line 153) | function isPlainObject(obj) { FILE: backend/src/utils/logical.js function AND (line 1) | function AND(...args) { function OR (line 5) | function OR(...args) { function NOT (line 9) | function NOT(array) { function FULL (line 13) | function FULL(length, bool) { FILE: backend/src/utils/migration.js function migrate (line 12) | function migrate() { function migrateV2 (line 16) | function migrateV2() { function doMigrationV2 (line 26) | function doMigrationV2() { FILE: backend/src/utils/resource-cache.js class ResourceCache (line 8) | class ResourceCache { method constructor (line 9) | constructor() { method _cleanup (line 27) | _cleanup(prefix, ttl) { method revokeAll (line 43) | revokeAll() { method _persist (line 48) | _persist() { method gettime (line 52) | gettime(id) { method get (line 60) | get(id, ttl, remove) { method set (line 74) | set(id, value, ttl) { function normalizeTTL (line 84) | function normalizeTTL(ttl) { function getTTL (line 91) | function getTTL() { FILE: backend/src/utils/rs.js function generateFingerprint (line 3) | function generateFingerprint(caStr) { FILE: backend/src/utils/script-resource-cache.js class ResourceCache (line 8) | class ResourceCache { method constructor (line 9) | constructor() { method _cleanup (line 27) | _cleanup(prefix, ttl) { method revokeAll (line 43) | revokeAll() { method _persist (line 48) | _persist() { method gettime (line 52) | gettime(id) { method get (line 60) | get(id, ttl, remove) { method set (line 74) | set(id, value, ttl) { function normalizeTTL (line 84) | function normalizeTTL(ttl) { function getTTL (line 91) | function getTTL() { FILE: backend/src/utils/user-agent.js function getUserAgentFromHeaders (line 5) | function getUserAgentFromHeaders(headers) { function getPlatformFromUserAgent (line 22) | function getPlatformFromUserAgent({ ua, UA, accept }) { function getPlatformFromHeaders (line 59) | function getPlatformFromHeaders(headers) { function shouldIncludeUnsupportedProxy (line 64) | function shouldIncludeUnsupportedProxy(platform, headers) { FILE: backend/src/utils/yaml.js function retry (line 3) | function retry(fn, content, ...args) { function safeLoad (line 19) | function safeLoad(content, ...args) { function load (line 22) | function load(content, ...args) { function safeDump (line 25) | function safeDump(content, ...args) { function dump (line 28) | function dump(content, ...args) { FILE: backend/src/vendor/express.js function express (line 4) | function express({ substore: $, port, host }) { function formatHeaders (line 272) | function formatHeaders(headers) { function patternMatched (line 280) | function patternMatched(pattern, path) { function extractURL (line 304) | function extractURL(url) { function extractPathParams (line 325) | function extractPathParams(pattern, path) { FILE: backend/src/vendor/md5.js function hex_md5 (line 21) | function hex_md5(s) { function b64_md5 (line 25) | function b64_md5(s) { function any_md5 (line 29) | function any_md5(s, e) { function hex_hmac_md5 (line 33) | function hex_hmac_md5(k, d) { function b64_hmac_md5 (line 37) | function b64_hmac_md5(k, d) { function any_hmac_md5 (line 41) | function any_hmac_md5(k, d, e) { function md5_vm_test (line 48) | function md5_vm_test() { function rstr_md5 (line 55) | function rstr_md5(s) { function rstr_hmac_md5 (line 62) | function rstr_hmac_md5(key, data) { function rstr2hex (line 80) | function rstr2hex(input) { function rstr2b64 (line 99) | function rstr2b64(input) { function rstr2any (line 125) | function rstr2any(input, encoding) { function str2rstr_utf8 (line 171) | function str2rstr_utf8(input) { function str2rstr_utf16le (line 212) | function str2rstr_utf16le(input) { function str2rstr_utf16be (line 222) | function str2rstr_utf16be(input) { function rstr2binl (line 236) | function rstr2binl(input) { function binl2rstr (line 247) | function binl2rstr(input) { function binl_md5 (line 257) | function binl_md5(x, len) { function md5_cmn (line 352) | function md5_cmn(q, a, b, x, s, t) { function md5_ff (line 356) | function md5_ff(a, b, c, d, x, s, t) { function md5_gg (line 360) | function md5_gg(a, b, c, d, x, s, t) { function md5_hh (line 364) | function md5_hh(a, b, c, d, x, s, t) { function md5_ii (line 368) | function md5_ii(a, b, c, d, x, s, t) { function safe_add (line 376) | function safe_add(x, y) { function bit_rol (line 385) | function bit_rol(num, cnt) { FILE: backend/src/vendor/open-api.js function isPlainObject (line 15) | function isPlainObject(obj) { function parseSocks5Uri (line 23) | function parseSocks5Uri(uri) { class OpenAPI (line 43) | class OpenAPI { method constructor (line 44) | constructor(name = 'untitled', debug = false) { method initCache (line 81) | initCache() { method persistCache (line 158) | persistCache() { method write (line 182) | write(data, key) { method read (line 204) | read(key) { method delete (line 225) | delete(key) { method notify (line 248) | notify(title, subtitle = '', content = '', options = {}) { method log (line 345) | log(msg) { method info (line 349) | info(msg) { method error (line 353) | error(msg) { method wait (line 357) | wait(millisec) { method done (line 361) | done(value = {}) { function ENV (line 374) | function ENV() { function HTTP (line 388) | function HTTP(defaultOptions = { baseURL: '' }) { FILE: scripts/demo.js function operator (line 1) | function operator(proxies = [], targetPlatform, context) { FILE: scripts/fancy-characters.js function operator (line 16) | function operator(proxies) { function isNumber (line 57) | function isNumber(code) { return code >= 48 && code <= 57; } FILE: scripts/ip-flag-node.js function operator (line 5) | async function operator(proxies) { function queryIpApi (line 34) | async function queryIpApi(proxy) { function getFlagEmoji (line 60) | function getFlagEmoji(countryCode) { function removeFlag (line 70) | function removeFlag(str) { function sleep (line 76) | function sleep(ms) { FILE: scripts/ip-flag.js constant RESOURCE_CACHE_KEY (line 1) | const RESOURCE_CACHE_KEY = '#sub-store-cached-resource'; constant CACHE_EXPIRATION_TIME_MS (line 2) | const CACHE_EXPIRATION_TIME_MS = 10 * 60 * 1000; class ResourceCache (line 5) | class ResourceCache { method constructor (line 6) | constructor(expires) { method _cleanup (line 15) | _cleanup() { method revokeAll (line 34) | revokeAll() { method _persist (line 39) | _persist() { method get (line 43) | get(id) { method set (line 51) | set(id, value) { function operator (line 59) | async function operator(proxies) { function queryIpApi (line 103) | async function queryIpApi(proxy) { function getId (line 151) | function getId(proxy) { function getFlagEmoji (line 155) | function getFlagEmoji(countryCode) { function removeFlag (line 165) | function removeFlag(str) { function sleep (line 171) | function sleep(ms) { function M (line 175) | function M(d) { for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d... function X (line 175) | function X(d) { for (var _ = Array(d.length >> 2), m = 0; m < _.length; ... function V (line 175) | function V(d) { for (var _ = "", m = 0; m < 32 * d.length; m += 8)_ += S... function Y (line 175) | function Y(d, _) { d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4... function md5_cmn (line 175) | function md5_cmn(d, _, m, f, r, i) { return safe_add(bit_rol(safe_add(sa... function md5_ff (line 175) | function md5_ff(d, _, m, f, r, i, n) { return md5_cmn(_ & m | ~_ & f, d,... function md5_gg (line 175) | function md5_gg(d, _, m, f, r, i, n) { return md5_cmn(_ & f | m & ~f, d,... function md5_hh (line 175) | function md5_hh(d, _, m, f, r, i, n) { return md5_cmn(_ ^ m ^ f, d, _, r... function md5_ii (line 175) | function md5_ii(d, _, m, f, r, i, n) { return md5_cmn(m ^ (_ | ~f), d, _... function safe_add (line 175) | function safe_add(d, _) { var m = (65535 & d) + (65535 & _); return (d >... function bit_rol (line 175) | function bit_rol(d, _) { return d << _ | d >>> 32 - _ } FILE: scripts/revert.js function ENV (line 5) | function ENV(){const e="function"==typeof require&&"undefined"!=typeof $... function HTTP (line 5) | function HTTP(e={baseURL:""}){const{isQX:t,isLoon:s,isSurge:o,isScriptab... function API (line 5) | function API(e="untitled",t=!1){const{isQX:s,isLoon:o,isSurge:n,isNode:i... FILE: scripts/tls-fingerprint.js function operator (line 6) | function operator(proxies) { FILE: scripts/udp-filter.js function filter (line 4) | function filter(proxies) { FILE: scripts/vmess-ws-obfs-host.js function operator (line 6) | function operator(proxies) {