diff --git a/.github/update.log b/.github/update.log index 5ea4eb5c8f..36dc2d5744 100644 --- a/.github/update.log +++ b/.github/update.log @@ -670,3 +670,4 @@ Update On Sat Jun 8 20:29:12 CEST 2024 Update On Sun Jun 9 20:29:25 CEST 2024 Update On Mon Jun 10 20:32:26 CEST 2024 Update On Tue Jun 11 20:31:29 CEST 2024 +Update On Wed Jun 12 20:32:18 CEST 2024 diff --git a/clash-meta/adapter/outbound/direct.go b/clash-meta/adapter/outbound/direct.go index 7e24ad2d88..09b9696b2f 100644 --- a/clash-meta/adapter/outbound/direct.go +++ b/clash-meta/adapter/outbound/direct.go @@ -4,6 +4,8 @@ import ( "context" "errors" "net/netip" + "os" + "strconv" N "github.com/metacubex/mihomo/common/net" "github.com/metacubex/mihomo/component/dialer" @@ -13,6 +15,8 @@ import ( "github.com/metacubex/mihomo/constant/features" ) +var DisableLoopBackDetector, _ = strconv.ParseBool(os.Getenv("DISABLE_LOOPBACK_DETECTOR")) + type Direct struct { *Base loopBack *loopback.Detector @@ -25,7 +29,7 @@ type DirectOption struct { // DialContext implements C.ProxyAdapter func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) { - if !features.CMFA { + if !features.CMFA && !DisableLoopBackDetector { if err := d.loopBack.CheckConn(metadata); err != nil { return nil, err } @@ -41,7 +45,7 @@ func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ... // ListenPacketContext implements C.ProxyAdapter func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) { - if !features.CMFA { + if !features.CMFA && !DisableLoopBackDetector { if err := d.loopBack.CheckPacketConn(metadata); err != nil { return nil, err } diff --git a/clash-meta/adapter/outbound/wireguard.go b/clash-meta/adapter/outbound/wireguard.go index 976f395933..56ade71c36 100644 --- a/clash-meta/adapter/outbound/wireguard.go +++ b/clash-meta/adapter/outbound/wireguard.go @@ -304,13 +304,16 @@ func (w *WireGuard) init(ctx context.Context) error { ipcConf := "private_key=" + w.option.PrivateKey if len(w.option.Peers) > 0 { for i, peer := range w.option.Peers { + ipcConf += "\npublic_key=" + peer.PublicKey destination, err := w.resolve(ctx, peer.Addr()) if err != nil { // !!! do not set initErr here !!! // let us can retry domain resolve in next time return E.Cause(err, "resolve endpoint domain for peer ", i) } - ipcConf += "\npublic_key=" + peer.PublicKey + if len(w.option.Peers) == 1 { // must call SetConnectAddr if isConnect == true + w.bind.SetConnectAddr(destination) + } ipcConf += "\nendpoint=" + destination.String() if peer.PreSharedKey != "" { ipcConf += "\npreshared_key=" + peer.PreSharedKey @@ -332,7 +335,7 @@ func (w *WireGuard) init(ctx context.Context) error { // let us can retry domain resolve in next time return E.Cause(err, "resolve endpoint domain") } - w.bind.SetConnectAddr(destination) + w.bind.SetConnectAddr(destination) // must call SetConnectAddr if isConnect == true ipcConf += "\nendpoint=" + destination.String() if w.option.PreSharedKey != "" { ipcConf += "\npreshared_key=" + w.option.PreSharedKey diff --git a/clash-meta/config/config.go b/clash-meta/config/config.go index 74a2053e33..fd12d2dbd5 100644 --- a/clash-meta/config/config.go +++ b/clash-meta/config/config.go @@ -212,6 +212,7 @@ type RawDNS struct { IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` UseHosts bool `yaml:"use-hosts" json:"use-hosts"` UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` + RespectRules bool `yaml:"respect-rules" json:"respect-rules"` NameServer []string `yaml:"nameserver" json:"nameserver"` Fallback []string `yaml:"fallback" json:"fallback"` FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` @@ -1039,7 +1040,7 @@ func hostWithDefaultPort(host string, defPort string) (string, error) { return net.JoinHostPort(hostname, port), nil } -func parseNameServer(servers []string, preferH3 bool) ([]dns.NameServer, error) { +func parseNameServer(servers []string, respectRules bool, preferH3 bool) ([]dns.NameServer, error) { var nameservers []dns.NameServer for idx, server := range servers { @@ -1114,6 +1115,10 @@ func parseNameServer(servers []string, preferH3 bool) ([]dns.NameServer, error) return nil, fmt.Errorf("DNS NameServer[%d] format error: %s", idx, err.Error()) } + if respectRules && len(proxyName) == 0 { + proxyName = dns.RespectRules + } + nameservers = append( nameservers, dns.NameServer{ @@ -1130,7 +1135,7 @@ func parseNameServer(servers []string, preferH3 bool) ([]dns.NameServer, error) func init() { dns.ParseNameServer = func(servers []string) ([]dns.NameServer, error) { // using by wireguard - return parseNameServer(servers, false) + return parseNameServer(servers, false, false) } } @@ -1156,7 +1161,7 @@ func parsePureDNSServer(server string) string { } } } -func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, preferH3 bool) (*orderedmap.OrderedMap[string, []dns.NameServer], error) { +func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, respectRules bool, preferH3 bool) (*orderedmap.OrderedMap[string, []dns.NameServer], error) { policy := orderedmap.New[string, []dns.NameServer]() updatedPolicy := orderedmap.New[string, any]() re := regexp.MustCompile(`[a-zA-Z0-9\-]+\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?`) @@ -1202,7 +1207,7 @@ func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], rulePro if err != nil { return nil, err } - nameservers, err := parseNameServer(servers, preferH3) + nameservers, err := parseNameServer(servers, respectRules, preferH3) if err != nil { return nil, err } @@ -1296,6 +1301,10 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul return nil, fmt.Errorf("if DNS configuration is turned on, NameServer cannot be empty") } + if cfg.RespectRules && len(cfg.ProxyServerNameserver) == 0 { + return nil, fmt.Errorf("if “respect-rules” is turned on, “proxy-server-nameserver” cannot be empty") + } + dnsCfg := &DNS{ Enable: cfg.Enable, Listen: cfg.Listen, @@ -1310,26 +1319,26 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul }, } var err error - if dnsCfg.NameServer, err = parseNameServer(cfg.NameServer, cfg.PreferH3); err != nil { + if dnsCfg.NameServer, err = parseNameServer(cfg.NameServer, cfg.RespectRules, cfg.PreferH3); err != nil { return nil, err } - if dnsCfg.Fallback, err = parseNameServer(cfg.Fallback, cfg.PreferH3); err != nil { + if dnsCfg.Fallback, err = parseNameServer(cfg.Fallback, cfg.RespectRules, cfg.PreferH3); err != nil { return nil, err } - if dnsCfg.NameServerPolicy, err = parseNameServerPolicy(cfg.NameServerPolicy, ruleProviders, cfg.PreferH3); err != nil { + if dnsCfg.NameServerPolicy, err = parseNameServerPolicy(cfg.NameServerPolicy, ruleProviders, cfg.RespectRules, cfg.PreferH3); err != nil { return nil, err } - if dnsCfg.ProxyServerNameserver, err = parseNameServer(cfg.ProxyServerNameserver, cfg.PreferH3); err != nil { + if dnsCfg.ProxyServerNameserver, err = parseNameServer(cfg.ProxyServerNameserver, false, cfg.PreferH3); err != nil { return nil, err } if len(cfg.DefaultNameserver) == 0 { return nil, errors.New("default nameserver should have at least one nameserver") } - if dnsCfg.DefaultNameserver, err = parseNameServer(cfg.DefaultNameserver, cfg.PreferH3); err != nil { + if dnsCfg.DefaultNameserver, err = parseNameServer(cfg.DefaultNameserver, false, cfg.PreferH3); err != nil { return nil, err } // check default nameserver is pure ip addr diff --git a/clash-meta/dns/dial.go b/clash-meta/dns/dial.go new file mode 100644 index 0000000000..431707c56f --- /dev/null +++ b/clash-meta/dns/dial.go @@ -0,0 +1,169 @@ +package dns + +import ( + "context" + "fmt" + "net" + "net/netip" + "strings" + + N "github.com/metacubex/mihomo/common/net" + "github.com/metacubex/mihomo/component/dialer" + "github.com/metacubex/mihomo/component/resolver" + C "github.com/metacubex/mihomo/constant" + "github.com/metacubex/mihomo/tunnel" + "github.com/metacubex/mihomo/tunnel/statistic" +) + +const RespectRules = "RULES" + +type dialHandler func(ctx context.Context, network, addr string) (net.Conn, error) + +func getDialHandler(r *Resolver, proxyAdapter C.ProxyAdapter, proxyName string, opts ...dialer.Option) dialHandler { + return func(ctx context.Context, network, addr string) (net.Conn, error) { + if len(proxyName) == 0 && proxyAdapter == nil { + opts = append(opts, dialer.WithResolver(r)) + return dialer.DialContext(ctx, network, addr, opts...) + } else { + metadata := &C.Metadata{ + NetWork: C.TCP, + Type: C.INNER, + } + err := metadata.SetRemoteAddress(addr) // tcp can resolve host by remote + if err != nil { + return nil, err + } + if !strings.Contains(network, "tcp") { + metadata.NetWork = C.UDP + if !metadata.Resolved() { + // udp must resolve host first + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + } + + var rule C.Rule + if proxyAdapter == nil { + if proxyName == RespectRules { + if !metadata.Resolved() { + // resolve here before ResolveMetadata to avoid its inner resolver.ResolveIP + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + proxyAdapter, rule, err = tunnel.ResolveMetadata(metadata) + if err != nil { + return nil, err + } + } else { + var ok bool + proxyAdapter, ok = tunnel.Proxies()[proxyName] + if !ok { + opts = append(opts, dialer.WithInterface(proxyName)) + } + } + } + + if strings.Contains(network, "tcp") { + if proxyAdapter == nil { + opts = append(opts, dialer.WithResolver(r)) + return dialer.DialContext(ctx, network, addr, opts...) + } + + if proxyAdapter.IsL3Protocol(metadata) { // L3 proxy should resolve domain before to avoid loopback + if !metadata.Resolved() { + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + metadata.Host = "" // clear host to avoid double resolve in proxy + } + + conn, err := proxyAdapter.DialContext(ctx, metadata, opts...) + if err != nil { + return nil, err + } + + conn = statistic.NewTCPTracker(conn, statistic.DefaultManager, metadata, rule, 0, 0, false) + + return conn, nil + } else { + if proxyAdapter == nil { + return dialer.DialContext(ctx, network, addr, opts...) + } + + if !proxyAdapter.SupportUDP() { + return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) + } + + packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...) + if err != nil { + return nil, err + } + + packetConn = statistic.NewUDPTracker(packetConn, statistic.DefaultManager, metadata, rule, 0, 0, false) + + return N.NewBindPacketConn(packetConn, metadata.UDPAddr()), nil + } + } + } +} + +func listenPacket(ctx context.Context, proxyAdapter C.ProxyAdapter, proxyName string, network string, addr string, r *Resolver, opts ...dialer.Option) (net.PacketConn, error) { + metadata := &C.Metadata{ + NetWork: C.UDP, + Type: C.INNER, + } + err := metadata.SetRemoteAddress(addr) + if err != nil { + return nil, err + } + if !metadata.Resolved() { + // udp must resolve host first + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + + var rule C.Rule + if proxyAdapter == nil { + if proxyName == RespectRules { + proxyAdapter, rule, err = tunnel.ResolveMetadata(metadata) + if err != nil { + return nil, err + } + } else { + var ok bool + proxyAdapter, ok = tunnel.Proxies()[proxyName] + if !ok { + opts = append(opts, dialer.WithInterface(proxyName)) + } + } + } + + if proxyAdapter == nil { + return dialer.NewDialer(opts...).ListenPacket(ctx, network, "", netip.AddrPortFrom(metadata.DstIP, metadata.DstPort)) + } + + if !proxyAdapter.SupportUDP() { + return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) + } + + packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...) + if err != nil { + return nil, err + } + + packetConn = statistic.NewUDPTracker(packetConn, statistic.DefaultManager, metadata, rule, 0, 0, false) + + return packetConn, nil +} diff --git a/clash-meta/dns/util.go b/clash-meta/dns/util.go index 516c63fb8d..9c5a0b585a 100644 --- a/clash-meta/dns/util.go +++ b/clash-meta/dns/util.go @@ -7,18 +7,13 @@ import ( "fmt" "net" "net/netip" - "strconv" "strings" "time" - N "github.com/metacubex/mihomo/common/net" "github.com/metacubex/mihomo/common/nnip" "github.com/metacubex/mihomo/common/picker" - "github.com/metacubex/mihomo/component/dialer" "github.com/metacubex/mihomo/component/resolver" - C "github.com/metacubex/mihomo/constant" "github.com/metacubex/mihomo/log" - "github.com/metacubex/mihomo/tunnel" D "github.com/miekg/dns" "github.com/samber/lo" @@ -175,120 +170,6 @@ func msgToDomain(msg *D.Msg) string { return "" } -type dialHandler func(ctx context.Context, network, addr string) (net.Conn, error) - -func getDialHandler(r *Resolver, proxyAdapter C.ProxyAdapter, proxyName string, opts ...dialer.Option) dialHandler { - return func(ctx context.Context, network, addr string) (net.Conn, error) { - if len(proxyName) == 0 && proxyAdapter == nil { - opts = append(opts, dialer.WithResolver(r)) - return dialer.DialContext(ctx, network, addr, opts...) - } else { - host, port, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - uintPort, err := strconv.ParseUint(port, 10, 16) - if err != nil { - return nil, err - } - if proxyAdapter == nil { - var ok bool - proxyAdapter, ok = tunnel.Proxies()[proxyName] - if !ok { - opts = append(opts, dialer.WithInterface(proxyName)) - } - } - - if strings.Contains(network, "tcp") { - // tcp can resolve host by remote - metadata := &C.Metadata{ - NetWork: C.TCP, - Host: host, - DstPort: uint16(uintPort), - } - if proxyAdapter != nil { - if proxyAdapter.IsL3Protocol(metadata) { // L3 proxy should resolve domain before to avoid loopback - dstIP, err := resolver.ResolveIPWithResolver(ctx, host, r) - if err != nil { - return nil, err - } - metadata.Host = "" - metadata.DstIP = dstIP - } - return proxyAdapter.DialContext(ctx, metadata, opts...) - } - opts = append(opts, dialer.WithResolver(r)) - return dialer.DialContext(ctx, network, addr, opts...) - } else { - // udp must resolve host first - dstIP, err := resolver.ResolveIPWithResolver(ctx, host, r) - if err != nil { - return nil, err - } - metadata := &C.Metadata{ - NetWork: C.UDP, - Host: "", - DstIP: dstIP, - DstPort: uint16(uintPort), - } - if proxyAdapter == nil { - return dialer.DialContext(ctx, network, addr, opts...) - } - - if !proxyAdapter.SupportUDP() { - return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) - } - - packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...) - if err != nil { - return nil, err - } - - return N.NewBindPacketConn(packetConn, metadata.UDPAddr()), nil - } - } - } -} - -func listenPacket(ctx context.Context, proxyAdapter C.ProxyAdapter, proxyName string, network string, addr string, r *Resolver, opts ...dialer.Option) (net.PacketConn, error) { - host, port, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - uintPort, err := strconv.ParseUint(port, 10, 16) - if err != nil { - return nil, err - } - if proxyAdapter == nil { - var ok bool - proxyAdapter, ok = tunnel.Proxies()[proxyName] - if !ok { - opts = append(opts, dialer.WithInterface(proxyName)) - } - } - - // udp must resolve host first - dstIP, err := resolver.ResolveIPWithResolver(ctx, host, r) - if err != nil { - return nil, err - } - metadata := &C.Metadata{ - NetWork: C.UDP, - Host: "", - DstIP: dstIP, - DstPort: uint16(uintPort), - } - if proxyAdapter == nil { - return dialer.NewDialer(opts...).ListenPacket(ctx, network, "", netip.AddrPortFrom(metadata.DstIP, metadata.DstPort)) - } - - if !proxyAdapter.SupportUDP() { - return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) - } - - return proxyAdapter.ListenPacketContext(ctx, metadata, opts...) -} - func batchExchange(ctx context.Context, clients []dnsClient, m *D.Msg) (msg *D.Msg, cache bool, err error) { cache = true fast, ctx := picker.WithTimeout[*D.Msg](ctx, resolver.DefaultDNSTimeout) diff --git a/clash-meta/docs/config.yaml b/clash-meta/docs/config.yaml index fe8501636e..bd263c1448 100644 --- a/clash-meta/docs/config.yaml +++ b/clash-meta/docs/config.yaml @@ -209,7 +209,7 @@ tunnels: # one line config dns: cache-algorithm: arc enable: false # 关闭将使用系统 DNS - prefer-h3: true # 开启 DoH 支持 HTTP/3,将并发尝试 + prefer-h3: false # 是否开启 DoH 支持 HTTP/3,将并发尝试 listen: 0.0.0.0:53 # 开启 DNS 服务器监听 # ipv6: false # false 将返回 AAAA 的空结果 # ipv6-timeout: 300 # 单位:ms,内部双栈并发时,向上游查询 AAAA 时,等待 AAAA 的时间,默认 100ms @@ -227,6 +227,13 @@ dns: # use-hosts: true # 查询 hosts + # 配置后面的nameserver、fallback和nameserver-policy向dns服务器的连接过程是否遵守遵守rules规则 + # 如果为false(默认值)则这三部分的dns服务器在未特别指定的情况下会直连 + # 如果为true,将会按照rules的规则匹配链接方式(走代理或直连),如果有特别指定则任然以指定值为准 + # 仅当proxy-server-nameserver非空时可以开启此选项, 强烈不建议和prefer-h3一起使用 + # 此外,这三者配置中的dns服务器如果出现域名会采用default-nameserver配置项解析,也请确保正确配置default-nameserver + respect-rules: false + # 配置不使用 fake-ip 的域名 # fake-ip-filter: # - '*.lan' @@ -244,6 +251,7 @@ dns: - https://mozilla.cloudflare-dns.com/dns-query#DNS&h3=true # 指定策略组和使用 HTTP/3 - dhcp://en0 # dns from dhcp - quic://dns.adguard.com:784 # DNS over QUIC + # - '8.8.8.8#RULES' # 效果同respect-rules,但仅对该服务器生效 # - '8.8.8.8#en0' # 兼容指定 DNS 出口网卡 # 当配置 fallback 时,会查询 nameserver 中返回的 IP 是否为 CN,非必要配置 diff --git a/clash-meta/tunnel/tunnel.go b/clash-meta/tunnel/tunnel.go index 608ab2c5bd..78628a5687 100644 --- a/clash-meta/tunnel/tunnel.go +++ b/clash-meta/tunnel/tunnel.go @@ -278,7 +278,7 @@ func preHandleMetadata(metadata *C.Metadata) error { return nil } -func resolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err error) { +func ResolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err error) { if metadata.SpecialProxy != "" { var exist bool proxy, exist = proxies[metadata.SpecialProxy] @@ -375,7 +375,7 @@ func handleUDPConn(packet C.PacketAdapter) { cond.Broadcast() }() - proxy, rule, err := resolveMetadata(metadata) + proxy, rule, err := ResolveMetadata(metadata) if err != nil { log.Warnln("[UDP] Parse metadata failed: %s", err.Error()) return @@ -486,7 +486,7 @@ func handleTCPConn(connCtx C.ConnContext) { }() } - proxy, rule, err := resolveMetadata(metadata) + proxy, rule, err := ResolveMetadata(metadata) if err != nil { log.Warnln("[Metadata] parse failed: %s", err.Error()) return diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index e436c85538..7722eddc42 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -56,8 +56,8 @@ "@typescript-eslint/eslint-plugin": "7.13.0", "@typescript-eslint/parser": "7.13.0", "@vitejs/plugin-react": "4.3.1", - "sass": "1.77.4", - "shiki": "1.6.3", + "sass": "1.77.5", + "shiki": "1.6.4", "vite": "5.2.13", "vite-plugin-monaco-editor": "1.1.3", "vite-plugin-sass-dts": "1.3.22", diff --git a/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts b/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts index b368e53283..10620bfb6e 100644 --- a/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts +++ b/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts @@ -1,5 +1,6 @@ import { useTheme } from "@mui/material"; -import { useEffect, useState } from "react"; +import { useSetState } from "ahooks"; +import { useEffect, useCallback, useMemo } from "react"; export const useBreakpoint = ( columnMapping: { [key: string]: number } = { @@ -12,21 +13,38 @@ export const useBreakpoint = ( ) => { const { breakpoints } = useTheme(); - const [breakpoint, setBreakpoint] = useState({ + const [breakpoint, setBreakpoint] = useSetState({ key: "sm", column: 1, }); - const getBreakpoint = (width: number) => { - for (const [key, value] of Object.entries(breakpoints.values)) { - if (value >= width) { - setBreakpoint({ key, column: columnMapping[key] }); - return; - } - } + const breakpointsValues = useMemo(() => { + return Object.entries(breakpoints.values); + }, [breakpoints.values]); - setBreakpoint((p) => ({ ...p, column: columnMapping["default"] })); - }; + const getBreakpoint = useCallback( + (width: number) => { + for (const [key, value] of breakpointsValues) { + if (value >= width) { + if (key !== breakpoint.key) { + setBreakpoint({ + key, + column: columnMapping[key], + }); + } + return; + } + } + + if (breakpoint.key !== "default") { + setBreakpoint({ + column: columnMapping["default"], + key: "default", + }); + } + }, + [breakpointsValues, columnMapping, breakpoint.key, setBreakpoint], + ); useEffect(() => { const observer = new ResizeObserver((entries) => { @@ -42,7 +60,7 @@ export const useBreakpoint = ( return () => { observer.disconnect(); }; - }, []); + }, [getBreakpoint]); return breakpoint; }; diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json index 9e475c764b..182d684918 100644 --- a/clash-nyanpasu/frontend/ui/package.json +++ b/clash-nyanpasu/frontend/ui/package.json @@ -16,7 +16,7 @@ "react-i18next": "14.1.2" }, "devDependencies": { - "sass": "1.77.4", + "sass": "1.77.5", "typescript-plugin-css-modules": "5.1.0" } } diff --git a/clash-nyanpasu/manifest/version.json b/clash-nyanpasu/manifest/version.json index 398c303201..8ef90c578c 100644 --- a/clash-nyanpasu/manifest/version.json +++ b/clash-nyanpasu/manifest/version.json @@ -2,7 +2,7 @@ "manifest_version": 1, "latest": { "mihomo": "v1.18.5", - "mihomo_alpha": "alpha-cacfefa", + "mihomo_alpha": "alpha-10f8ba4", "clash_rs": "v0.1.18", "clash_premium": "2023-09-05-gdcc8d87" }, @@ -36,5 +36,5 @@ "darwin-x64": "clash-darwin-amd64-n{}.gz" } }, - "updated_at": "2024-06-10T22:20:47.739Z" + "updated_at": "2024-06-11T22:19:49.011Z" } diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index 9ab8e66e24..c0a1642bec 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -89,7 +89,7 @@ "eslint-plugin-prettier": "5.1.3", "eslint-plugin-promise": "6.2.0", "eslint-plugin-react": "7.34.2", - "lint-staged": "15.2.5", + "lint-staged": "15.2.6", "npm-run-all2": "6.2.0", "postcss": "8.4.38", "postcss-html": "1.7.0", diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 0e21e57501..d677399c82 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -83,8 +83,8 @@ importers: specifier: 7.34.2 version: 7.34.2(eslint@8.57.0) lint-staged: - specifier: 15.2.5 - version: 15.2.5 + specifier: 15.2.6 + version: 15.2.6 npm-run-all2: specifier: 6.2.0 version: 6.2.0 @@ -178,7 +178,7 @@ importers: version: 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0) '@generouted/react-router': specifier: 1.19.5 - version: 1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)) + version: 1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)) '@juggle/resize-observer': specifier: 3.4.0 version: 3.4.0 @@ -299,28 +299,28 @@ importers: version: 7.13.0(eslint@8.57.0)(typescript@5.4.5) '@vitejs/plugin-react': specifier: 4.3.1 - version: 4.3.1(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)) + version: 4.3.1(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)) sass: - specifier: 1.77.4 - version: 1.77.4 + specifier: 1.77.5 + version: 1.77.5 shiki: - specifier: 1.6.3 - version: 1.6.3 + specifier: 1.6.4 + version: 1.6.4 vite: specifier: 5.2.13 - version: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + version: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) vite-plugin-monaco-editor: specifier: npm:vite-plugin-monaco-editor-new@1.1.3 version: vite-plugin-monaco-editor-new@1.1.3(monaco-editor@0.49.0) vite-plugin-sass-dts: specifier: 1.3.22 - version: 1.3.22(postcss@8.4.38)(prettier@3.3.2)(sass@1.77.4)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)) + version: 1.3.22(postcss@8.4.38)(prettier@3.3.2)(sass@1.77.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)) vite-plugin-svgr: specifier: 4.2.0 - version: 4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)) + version: 4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)) vite-tsconfig-paths: specifier: 4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)) + version: 4.3.2(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)) frontend/ui: dependencies: @@ -356,8 +356,8 @@ importers: version: 14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530) devDependencies: sass: - specifier: 1.77.4 - version: 1.77.4 + specifier: 1.77.5 + version: 1.77.5 typescript-plugin-css-modules: specifier: 5.1.0 version: 5.1.0(typescript@5.4.5) @@ -1502,8 +1502,8 @@ packages: cpu: [x64] os: [win32] - '@shikijs/core@1.6.3': - resolution: {integrity: sha512-QnJKHFUW95GnlJLJGP6QLx4M69HM0KlXk+R2Y8lr/x4nAx1Yb/lsuxq4XwybuUjTxbJk+BT0g/kvn0bcsjGGHg==} + '@shikijs/core@1.6.4': + resolution: {integrity: sha512-WTU9rzZae1p2v6LOxMf6LhtmZOkIHYYW160IuahUyJy7YXPPjyWZLR1ag+SgD22ZMxZtz1gfU6Tccc8t0Il/XA==} '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} @@ -2014,10 +2014,6 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2780,10 +2776,6 @@ packages: resolution: {integrity: sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==} engines: {node: '>=18'} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3479,8 +3471,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@15.2.5: - resolution: {integrity: sha512-j+DfX7W9YUvdzEZl3Rk47FhDF6xwDBV5wwsCPw6BwWZVPYJemusQmvb9bRsW23Sqsaa+vRloAWogbK4BUuU2zA==} + lint-staged@15.2.6: + resolution: {integrity: sha512-M/3PdijFXT/A5lnbSK3EQNLbIIrkE00JZaD39r7t4kfFOqT1Ly9LgSZSMMtvQ3p2/C8Nyj/ou0vkNHmEwqoB8g==} engines: {node: '>=18.12.0'} hasBin: true @@ -4432,8 +4424,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.77.4: - resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} + sass@1.77.5: + resolution: {integrity: sha512-oDfX1mukIlxacPdQqNb6mV2tVCrnE+P3nVYioy72V5tlk56CPNcO4TCuFcaCRKKfJ1M3lH95CleRS+dVKL2qMg==} engines: {node: '>=14.0.0'} hasBin: true @@ -4498,8 +4490,8 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - shiki@1.6.3: - resolution: {integrity: sha512-lE1/YGlzFY0hQSyEfsZj18xGrTWxyhFQkaiILALqTBZPbJeYFWpbUhlmTGPOupYB/qC+H6sV4UznJzcEh3WMHQ==} + shiki@1.6.4: + resolution: {integrity: sha512-X88chM7w8jnadoZtjPTi5ahCJx9pc9f8GfEkZAEYUTlcUZIEw2D/RY86HI/LkkE7Nj8TQWkiBfaFTJ3VJT6ESg==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -5849,13 +5841,13 @@ snapshots: '@floating-ui/utils@0.2.2': {} - '@generouted/react-router@1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0))': + '@generouted/react-router@1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))': dependencies: fast-glob: 3.3.2 - generouted: 1.19.5(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)) + generouted: 1.19.5(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)) react: 19.0.0-rc-9d4fba0788-20240530 react-router-dom: 6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530) - vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) '@humanwhocodes/config-array@0.11.14': dependencies: @@ -6162,7 +6154,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - '@shikijs/core@1.6.3': {} + '@shikijs/core@1.6.4': {} '@sindresorhus/is@4.6.0': {} @@ -6496,14 +6488,14 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.1(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0))': + '@vitejs/plugin-react@4.3.1(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))': dependencies: '@babel/core': 7.24.5 '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) transitivePeerDependencies: - supports-color @@ -6745,10 +6737,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -7692,10 +7680,6 @@ snapshots: dependencies: flat-cache: 5.0.0 - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -7785,9 +7769,9 @@ snapshots: functions-have-names@1.2.3: {} - generouted@1.19.5(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)): + generouted@1.19.5(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)): dependencies: - vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) gensync@1.0.0-beta.2: {} @@ -8382,7 +8366,7 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@15.2.5: + lint-staged@15.2.6: dependencies: chalk: 5.3.0 commander: 12.1.0 @@ -8730,7 +8714,7 @@ snapshots: micromatch@4.0.5: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 micromatch@4.0.7: @@ -9445,7 +9429,7 @@ snapshots: safer-buffer@2.1.2: optional: true - sass@1.77.4: + sass@1.77.5: dependencies: chokidar: 3.6.0 immutable: 4.3.5 @@ -9505,9 +9489,9 @@ snapshots: shell-quote@1.8.1: {} - shiki@1.6.3: + shiki@1.6.4: dependencies: - '@shikijs/core': 1.6.3 + '@shikijs/core': 1.6.4 side-channel@1.0.6: dependencies: @@ -9992,7 +9976,7 @@ snapshots: postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) postcss-modules-scope: 3.2.0(postcss@8.4.38) reserved-words: 0.1.2 - sass: 1.77.4 + sass: 1.77.5 source-map-js: 1.2.0 stylus: 0.62.0 tsconfig-paths: 4.2.0 @@ -10134,37 +10118,37 @@ snapshots: esbuild: 0.19.12 monaco-editor: 0.49.0 - vite-plugin-sass-dts@1.3.22(postcss@8.4.38)(prettier@3.3.2)(sass@1.77.4)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)): + vite-plugin-sass-dts@1.3.22(postcss@8.4.38)(prettier@3.3.2)(sass@1.77.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)): dependencies: postcss: 8.4.38 postcss-js: 4.0.1(postcss@8.4.38) prettier: 3.3.2 - sass: 1.77.4 - vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + sass: 1.77.5 + vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) - vite-plugin-svgr@4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)): + vite-plugin-svgr@4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.17.2) '@svgr/core': 8.1.0(typescript@5.4.5) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5)) - vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0)): + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)): dependencies: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.5) optionalDependencies: - vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0) + vite: 5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0) transitivePeerDependencies: - supports-color - typescript - vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.4)(stylus@0.62.0): + vite@5.2.13(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0): dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -10173,7 +10157,7 @@ snapshots: '@types/node': 20.14.2 fsevents: 2.3.3 less: 4.2.0 - sass: 1.77.4 + sass: 1.77.5 stylus: 0.62.0 void-elements@3.1.0: {} diff --git a/clash-verge-rev/.github/workflows/alpha.yml b/clash-verge-rev/.github/workflows/alpha.yml index f706828b7e..7b2cbe46ad 100644 --- a/clash-verge-rev/.github/workflows/alpha.yml +++ b/clash-verge-rev/.github/workflows/alpha.yml @@ -249,7 +249,7 @@ jobs: - MacOS apple M芯片: aarch64.dmg ### Linux - - Linux 64位: amd64.AppImage/amd64.deb/amd64.rpm + - Linux 64位: amd64.deb/amd64.rpm - Linux 32位: i386.deb/i386.rpm - Linux arm64架构: arm64.deb/aarch64.rpm - Linux armv7架构: armhf.deb/armhfp.rpm diff --git a/clash-verge-rev/.github/workflows/release.yml b/clash-verge-rev/.github/workflows/release.yml index 1cb30859b2..6e51a767bd 100644 --- a/clash-verge-rev/.github/workflows/release.yml +++ b/clash-verge-rev/.github/workflows/release.yml @@ -40,6 +40,9 @@ jobs: with: workspaces: src-tauri + - name: Install Tauri CLI + run: cargo install --git https://github.com/tauri-apps/tauri --branch 1.x tauri-cli + - name: Install Node uses: actions/setup-node@v4 with: @@ -72,7 +75,7 @@ jobs: tagName: v__VERSION__ releaseName: "Clash Verge Rev v__VERSION__" releaseBody: "More new features are now supported." - tauriScript: pnpm + tauriScript: cargo tauri args: --target ${{ matrix.target }} - name: Portable Bundle @@ -152,6 +155,9 @@ jobs: with: workspaces: src-tauri + - name: Install Tauri CLI + run: cargo install --git https://github.com/tauri-apps/tauri --branch 1.x tauri-cli + - name: Install Node uses: actions/setup-node@v4 with: @@ -183,7 +189,7 @@ jobs: TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} with: - tauriScript: pnpm + tauriScript: cargo tauri args: --target ${{ matrix.target }} - name: Rename diff --git a/clash-verge-rev/UPDATELOG.md b/clash-verge-rev/UPDATELOG.md index 77bbcdff82..057b015067 100644 --- a/clash-verge-rev/UPDATELOG.md +++ b/clash-verge-rev/UPDATELOG.md @@ -1,3 +1,20 @@ +## v1.6.6 + +### Features + +- MacOS 应用签名 +- 删除 AppImage +- 应用更新对话框添加下载按钮 +- 设置系统代理绕过时保留默认值 +- 系统代理绕过设置输入格式检查 + +### Bugs Fixes + +- MacOS 代理组图标无法显示 +- RPM 包依赖缺失 + +--- + ## v1.6.5 ### Features diff --git a/clash-verge-rev/package.json b/clash-verge-rev/package.json index 55e5088aec..2e20e6697d 100644 --- a/clash-verge-rev/package.json +++ b/clash-verge-rev/package.json @@ -1,6 +1,6 @@ { "name": "clash-verge", - "version": "1.6.5", + "version": "1.6.6", "license": "GPL-3.0-only", "scripts": { "dev": "tauri dev", @@ -27,7 +27,7 @@ "@mui/icons-material": "^5.15.19", "@mui/lab": "5.0.0-alpha.149", "@mui/material": "^5.15.19", - "@mui/x-data-grid": "^6.20.0", + "@mui/x-data-grid": "^6.20.1", "@tauri-apps/api": "^1.5.6", "@types/json-schema": "^7.0.15", "ahooks": "^3.8.0", @@ -38,7 +38,7 @@ "lodash-es": "^4.17.21", "meta-json-schema": "1.18.5-alpha4", "monaco-editor": "^0.49.0", - "monaco-yaml": "^5.1.1", + "monaco-yaml": "^5.2.0", "nanoid": "^5.0.7", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -63,8 +63,8 @@ "@types/react-dom": "^18.3.0", "@types/react-transition-group": "^4.4.10", "@vitejs/plugin-legacy": "^5.4.1", - "@vitejs/plugin-react": "^4.3.0", - "adm-zip": "^0.5.13", + "@vitejs/plugin-react": "^4.3.1", + "adm-zip": "^0.5.14", "cross-env": "^7.0.3", "fs-extra": "^11.2.0", "https-proxy-agent": "^5.0.1", @@ -72,10 +72,10 @@ "node-fetch": "^3.3.2", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", - "sass": "^1.77.4", - "terser": "^5.31.0", + "sass": "^1.77.5", + "terser": "^5.31.1", "typescript": "^5.4.5", - "vite": "^5.2.12", + "vite": "^5.2.13", "vite-plugin-monaco-editor": "^1.1.0", "vite-plugin-svgr": "^4.2.0" }, diff --git a/clash-verge-rev/pnpm-lock.yaml b/clash-verge-rev/pnpm-lock.yaml index f938789218..95d27aaf4e 100644 --- a/clash-verge-rev/pnpm-lock.yaml +++ b/clash-verge-rev/pnpm-lock.yaml @@ -35,8 +35,8 @@ importers: specifier: ^5.15.19 version: 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/x-data-grid": - specifier: ^6.20.0 - version: 6.20.0(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.20.1 + version: 6.20.1(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@tauri-apps/api": specifier: ^1.5.6 version: 1.5.6 @@ -68,8 +68,8 @@ importers: specifier: ^0.49.0 version: 0.49.0 monaco-yaml: - specifier: ^5.1.1 - version: 5.1.1(monaco-editor@0.49.0) + specifier: ^5.2.0 + version: 5.2.0(monaco-editor@0.49.0) nanoid: specifier: ^5.0.7 version: 5.0.7 @@ -136,13 +136,13 @@ importers: version: 4.4.10 "@vitejs/plugin-legacy": specifier: ^5.4.1 - version: 5.4.1(terser@5.31.0)(vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0)) + version: 5.4.1(terser@5.31.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)) "@vitejs/plugin-react": - specifier: ^4.3.0 - version: 4.3.0(vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0)) + specifier: ^4.3.1 + version: 4.3.1(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)) adm-zip: - specifier: ^0.5.13 - version: 0.5.13 + specifier: ^0.5.14 + version: 0.5.14 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -165,23 +165,23 @@ importers: specifier: ^3.3.1 version: 3.3.1(prettier@2.8.8) sass: - specifier: ^1.77.4 - version: 1.77.4 + specifier: ^1.77.5 + version: 1.77.5 terser: - specifier: ^5.31.0 - version: 5.31.0 + specifier: ^5.31.1 + version: 5.31.1 typescript: specifier: ^5.4.5 version: 5.4.5 vite: - specifier: ^5.2.12 - version: 5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0) + specifier: ^5.2.13 + version: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1) vite-plugin-monaco-editor: specifier: ^1.1.0 version: 1.1.0(monaco-editor@0.49.0) vite-plugin-svgr: specifier: ^4.2.0 - version: 4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0)) + version: 4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)) packages: "@actions/github@5.1.1": @@ -203,68 +203,68 @@ packages: } engines: { node: ">=6.0.0" } - "@babel/code-frame@7.24.6": + "@babel/code-frame@7.24.7": resolution: { - integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==, + integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==, } engines: { node: ">=6.9.0" } - "@babel/compat-data@7.24.6": + "@babel/compat-data@7.24.7": resolution: { - integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==, + integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==, } engines: { node: ">=6.9.0" } - "@babel/core@7.24.6": + "@babel/core@7.24.7": resolution: { - integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==, + integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==, } engines: { node: ">=6.9.0" } - "@babel/generator@7.24.6": + "@babel/generator@7.24.7": resolution: { - integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==, + integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==, } engines: { node: ">=6.9.0" } - "@babel/helper-annotate-as-pure@7.24.6": + "@babel/helper-annotate-as-pure@7.24.7": resolution: { - integrity: sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==, + integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==, } engines: { node: ">=6.9.0" } - "@babel/helper-builder-binary-assignment-operator-visitor@7.24.6": + "@babel/helper-builder-binary-assignment-operator-visitor@7.24.7": resolution: { - integrity: sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==, + integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==, } engines: { node: ">=6.9.0" } - "@babel/helper-compilation-targets@7.24.6": + "@babel/helper-compilation-targets@7.24.7": resolution: { - integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==, + integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==, } engines: { node: ">=6.9.0" } - "@babel/helper-create-class-features-plugin@7.24.6": + "@babel/helper-create-class-features-plugin@7.24.7": resolution: { - integrity: sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==, + integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-create-regexp-features-plugin@7.24.6": + "@babel/helper-create-regexp-features-plugin@7.24.7": resolution: { - integrity: sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==, + integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -278,184 +278,184 @@ packages: peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - "@babel/helper-environment-visitor@7.24.6": + "@babel/helper-environment-visitor@7.24.7": resolution: { - integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==, + integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==, } engines: { node: ">=6.9.0" } - "@babel/helper-function-name@7.24.6": + "@babel/helper-function-name@7.24.7": resolution: { - integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==, + integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==, } engines: { node: ">=6.9.0" } - "@babel/helper-hoist-variables@7.24.6": + "@babel/helper-hoist-variables@7.24.7": resolution: { - integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==, + integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==, } engines: { node: ">=6.9.0" } - "@babel/helper-member-expression-to-functions@7.24.6": + "@babel/helper-member-expression-to-functions@7.24.7": resolution: { - integrity: sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==, + integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-imports@7.24.6": + "@babel/helper-module-imports@7.24.7": resolution: { - integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==, + integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-transforms@7.24.6": + "@babel/helper-module-transforms@7.24.7": resolution: { - integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==, + integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-optimise-call-expression@7.24.6": + "@babel/helper-optimise-call-expression@7.24.7": resolution: { - integrity: sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==, + integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==, } engines: { node: ">=6.9.0" } - "@babel/helper-plugin-utils@7.24.6": + "@babel/helper-plugin-utils@7.24.7": resolution: { - integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==, + integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==, } engines: { node: ">=6.9.0" } - "@babel/helper-remap-async-to-generator@7.24.6": + "@babel/helper-remap-async-to-generator@7.24.7": resolution: { - integrity: sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==, + integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-replace-supers@7.24.6": + "@babel/helper-replace-supers@7.24.7": resolution: { - integrity: sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==, + integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-simple-access@7.24.6": + "@babel/helper-simple-access@7.24.7": resolution: { - integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==, + integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==, } engines: { node: ">=6.9.0" } - "@babel/helper-skip-transparent-expression-wrappers@7.24.6": + "@babel/helper-skip-transparent-expression-wrappers@7.24.7": resolution: { - integrity: sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==, + integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==, } engines: { node: ">=6.9.0" } - "@babel/helper-split-export-declaration@7.24.6": + "@babel/helper-split-export-declaration@7.24.7": resolution: { - integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==, + integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==, } engines: { node: ">=6.9.0" } - "@babel/helper-string-parser@7.24.6": + "@babel/helper-string-parser@7.24.7": resolution: { - integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==, + integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==, } engines: { node: ">=6.9.0" } - "@babel/helper-validator-identifier@7.24.6": + "@babel/helper-validator-identifier@7.24.7": resolution: { - integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==, + integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==, } engines: { node: ">=6.9.0" } - "@babel/helper-validator-option@7.24.6": + "@babel/helper-validator-option@7.24.7": resolution: { - integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==, + integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==, } engines: { node: ">=6.9.0" } - "@babel/helper-wrap-function@7.24.6": + "@babel/helper-wrap-function@7.24.7": resolution: { - integrity: sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==, + integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==, } engines: { node: ">=6.9.0" } - "@babel/helpers@7.24.6": + "@babel/helpers@7.24.7": resolution: { - integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==, + integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==, } engines: { node: ">=6.9.0" } - "@babel/highlight@7.24.6": + "@babel/highlight@7.24.7": resolution: { - integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==, + integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==, } engines: { node: ">=6.9.0" } - "@babel/parser@7.24.6": + "@babel/parser@7.24.7": resolution: { - integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==, + integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==, } engines: { node: ">=6.0.0" } hasBin: true - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6": + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7": resolution: { - integrity: sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==, + integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6": + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7": resolution: { - integrity: sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==, + integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6": + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7": resolution: { - integrity: sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==, + integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.13.0 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6": + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7": resolution: { - integrity: sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==, + integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -511,19 +511,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-syntax-import-assertions@7.24.6": + "@babel/plugin-syntax-import-assertions@7.24.7": resolution: { - integrity: sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==, + integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-syntax-import-attributes@7.24.6": + "@babel/plugin-syntax-import-attributes@7.24.7": resolution: { - integrity: sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==, + integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -620,460 +620,460 @@ packages: peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-transform-arrow-functions@7.24.6": + "@babel/plugin-transform-arrow-functions@7.24.7": resolution: { - integrity: sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==, + integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-async-generator-functions@7.24.6": + "@babel/plugin-transform-async-generator-functions@7.24.7": resolution: { - integrity: sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==, + integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-async-to-generator@7.24.6": + "@babel/plugin-transform-async-to-generator@7.24.7": resolution: { - integrity: sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==, + integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-block-scoped-functions@7.24.6": + "@babel/plugin-transform-block-scoped-functions@7.24.7": resolution: { - integrity: sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==, + integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-block-scoping@7.24.6": + "@babel/plugin-transform-block-scoping@7.24.7": resolution: { - integrity: sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==, + integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-class-properties@7.24.6": + "@babel/plugin-transform-class-properties@7.24.7": resolution: { - integrity: sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==, + integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-class-static-block@7.24.6": + "@babel/plugin-transform-class-static-block@7.24.7": resolution: { - integrity: sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==, + integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.12.0 - "@babel/plugin-transform-classes@7.24.6": + "@babel/plugin-transform-classes@7.24.7": resolution: { - integrity: sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==, + integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-computed-properties@7.24.6": + "@babel/plugin-transform-computed-properties@7.24.7": resolution: { - integrity: sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==, + integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-destructuring@7.24.6": + "@babel/plugin-transform-destructuring@7.24.7": resolution: { - integrity: sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==, + integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-dotall-regex@7.24.6": + "@babel/plugin-transform-dotall-regex@7.24.7": resolution: { - integrity: sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==, + integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-duplicate-keys@7.24.6": + "@babel/plugin-transform-duplicate-keys@7.24.7": resolution: { - integrity: sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==, + integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-dynamic-import@7.24.6": + "@babel/plugin-transform-dynamic-import@7.24.7": resolution: { - integrity: sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==, + integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-exponentiation-operator@7.24.6": + "@babel/plugin-transform-exponentiation-operator@7.24.7": resolution: { - integrity: sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==, + integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-export-namespace-from@7.24.6": + "@babel/plugin-transform-export-namespace-from@7.24.7": resolution: { - integrity: sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==, + integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-for-of@7.24.6": + "@babel/plugin-transform-for-of@7.24.7": resolution: { - integrity: sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==, + integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-function-name@7.24.6": + "@babel/plugin-transform-function-name@7.24.7": resolution: { - integrity: sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==, + integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-json-strings@7.24.6": + "@babel/plugin-transform-json-strings@7.24.7": resolution: { - integrity: sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==, + integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-literals@7.24.6": + "@babel/plugin-transform-literals@7.24.7": resolution: { - integrity: sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==, + integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-logical-assignment-operators@7.24.6": + "@babel/plugin-transform-logical-assignment-operators@7.24.7": resolution: { - integrity: sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==, + integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-member-expression-literals@7.24.6": + "@babel/plugin-transform-member-expression-literals@7.24.7": resolution: { - integrity: sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==, + integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-amd@7.24.6": + "@babel/plugin-transform-modules-amd@7.24.7": resolution: { - integrity: sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==, + integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-commonjs@7.24.6": + "@babel/plugin-transform-modules-commonjs@7.24.7": resolution: { - integrity: sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==, + integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-systemjs@7.24.6": + "@babel/plugin-transform-modules-systemjs@7.24.7": resolution: { - integrity: sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==, + integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-umd@7.24.6": + "@babel/plugin-transform-modules-umd@7.24.7": resolution: { - integrity: sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==, + integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-named-capturing-groups-regex@7.24.6": + "@babel/plugin-transform-named-capturing-groups-regex@7.24.7": resolution: { - integrity: sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==, + integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-transform-new-target@7.24.6": + "@babel/plugin-transform-new-target@7.24.7": resolution: { - integrity: sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==, + integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-nullish-coalescing-operator@7.24.6": + "@babel/plugin-transform-nullish-coalescing-operator@7.24.7": resolution: { - integrity: sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==, + integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-numeric-separator@7.24.6": + "@babel/plugin-transform-numeric-separator@7.24.7": resolution: { - integrity: sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==, + integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-object-rest-spread@7.24.6": + "@babel/plugin-transform-object-rest-spread@7.24.7": resolution: { - integrity: sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==, + integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-object-super@7.24.6": + "@babel/plugin-transform-object-super@7.24.7": resolution: { - integrity: sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==, + integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-optional-catch-binding@7.24.6": + "@babel/plugin-transform-optional-catch-binding@7.24.7": resolution: { - integrity: sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==, + integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-optional-chaining@7.24.6": + "@babel/plugin-transform-optional-chaining@7.24.7": resolution: { - integrity: sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==, + integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-parameters@7.24.6": + "@babel/plugin-transform-parameters@7.24.7": resolution: { - integrity: sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==, + integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-private-methods@7.24.6": + "@babel/plugin-transform-private-methods@7.24.7": resolution: { - integrity: sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==, + integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-private-property-in-object@7.24.6": + "@babel/plugin-transform-private-property-in-object@7.24.7": resolution: { - integrity: sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==, + integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-property-literals@7.24.6": + "@babel/plugin-transform-property-literals@7.24.7": resolution: { - integrity: sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==, + integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-react-jsx-self@7.24.6": + "@babel/plugin-transform-react-jsx-self@7.24.7": resolution: { - integrity: sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==, + integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-react-jsx-source@7.24.6": + "@babel/plugin-transform-react-jsx-source@7.24.7": resolution: { - integrity: sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA==, + integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-regenerator@7.24.6": + "@babel/plugin-transform-regenerator@7.24.7": resolution: { - integrity: sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==, + integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-reserved-words@7.24.6": + "@babel/plugin-transform-reserved-words@7.24.7": resolution: { - integrity: sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==, + integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-shorthand-properties@7.24.6": + "@babel/plugin-transform-shorthand-properties@7.24.7": resolution: { - integrity: sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==, + integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-spread@7.24.6": + "@babel/plugin-transform-spread@7.24.7": resolution: { - integrity: sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==, + integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-sticky-regex@7.24.6": + "@babel/plugin-transform-sticky-regex@7.24.7": resolution: { - integrity: sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==, + integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-template-literals@7.24.6": + "@babel/plugin-transform-template-literals@7.24.7": resolution: { - integrity: sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==, + integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-typeof-symbol@7.24.6": + "@babel/plugin-transform-typeof-symbol@7.24.7": resolution: { - integrity: sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==, + integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-escapes@7.24.6": + "@babel/plugin-transform-unicode-escapes@7.24.7": resolution: { - integrity: sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==, + integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-property-regex@7.24.6": + "@babel/plugin-transform-unicode-property-regex@7.24.7": resolution: { - integrity: sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==, + integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-regex@7.24.6": + "@babel/plugin-transform-unicode-regex@7.24.7": resolution: { - integrity: sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==, + integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-sets-regex@7.24.6": + "@babel/plugin-transform-unicode-sets-regex@7.24.7": resolution: { - integrity: sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==, + integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/preset-env@7.24.6": + "@babel/preset-env@7.24.7": resolution: { - integrity: sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==, + integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -1093,31 +1093,31 @@ packages: integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==, } - "@babel/runtime@7.24.6": + "@babel/runtime@7.24.7": resolution: { - integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==, + integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==, } engines: { node: ">=6.9.0" } - "@babel/template@7.24.6": + "@babel/template@7.24.7": resolution: { - integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==, + integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==, } engines: { node: ">=6.9.0" } - "@babel/traverse@7.24.6": + "@babel/traverse@7.24.7": resolution: { - integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==, + integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==, } engines: { node: ">=6.9.0" } - "@babel/types@7.24.6": + "@babel/types@7.24.7": resolution: { - integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==, + integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==, } engines: { node: ">=6.9.0" } @@ -1695,10 +1695,10 @@ packages: "@types/react": optional: true - "@mui/x-data-grid@6.20.0": + "@mui/x-data-grid@6.20.1": resolution: { - integrity: sha512-N9a4eJRmWgP5zT2AZ41BnBgCSQJiw4dc5Q2U9zQ5aOhOs+8Jb218tX79MIAfwt1s4rbTZmgAdsBUn9Xs93Kmrw==, + integrity: sha512-x1muWWIG9otkk4FuvoTxH3I4foyA1caFu8ZC9TvMQ+7NSBKcfy/JeLQfKkZk8ACUUosvENdrRIkhqU2xdIqIVg==, } engines: { node: ">=14.0.0" } peerDependencies: @@ -2220,10 +2220,10 @@ packages: integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==, } - "@types/lodash@4.17.4": + "@types/lodash@4.17.5": resolution: { - integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==, + integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==, } "@types/mdast@4.0.4": @@ -2238,10 +2238,10 @@ packages: integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==, } - "@types/node@20.14.1": + "@types/node@20.14.2": resolution: { - integrity: sha512-T2MzSGEu+ysB/FkWfqmhV3PLyQlowdptmmgD20C6QxsS8Fmv5SjpZ1ayXaEC0S21/h5UJ9iA6W/5vSNU5l00OA==, + integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==, } "@types/parse-json@4.0.2": @@ -2302,10 +2302,10 @@ packages: terser: ^5.4.0 vite: ^5.0.0 - "@vitejs/plugin-react@4.3.0": + "@vitejs/plugin-react@4.3.1": resolution: { - integrity: sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw==, + integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==, } engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: @@ -2319,10 +2319,10 @@ packages: engines: { node: ">=0.4.0" } hasBin: true - adm-zip@0.5.13: + adm-zip@0.5.14: resolution: { - integrity: sha512-4U51tTl9J8UVEcuKGr6zRzY95tWoAa9l+ureGBNmsfleszjZblm5NyEEL/ZQxkhi86co5mZhSvL2T7gkZ6feYQ==, + integrity: sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==, } engines: { node: ">=12.0" } @@ -2441,10 +2441,10 @@ packages: peerDependencies: browserslist: "*" - browserslist@4.23.0: + browserslist@4.23.1: resolution: { - integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==, + integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==, } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true @@ -2469,10 +2469,10 @@ packages: } engines: { node: ">=10" } - caniuse-lite@1.0.30001627: + caniuse-lite@1.0.30001632: resolution: { - integrity: sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==, + integrity: sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==, } ccount@2.0.1: @@ -2703,10 +2703,10 @@ packages: integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, } - electron-to-chromium@1.4.788: + electron-to-chromium@1.4.799: resolution: { - integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==, + integrity: sha512-3D3DwWkRTzrdEpntY0hMLYwj7SeBk1138CkPE8sBDSj3WzrzOiG2rHm3luw8jucpf+WiyLBCZyU9lMHyQI9M9Q==, } end-of-stream@1.4.4: @@ -3262,10 +3262,10 @@ packages: integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==, } - mdast-util-to-hast@13.1.0: + mdast-util-to-hast@13.2.0: resolution: { - integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==, + integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==, } mdast-util-to-markdown@2.1.0: @@ -3481,10 +3481,10 @@ packages: integrity: sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ==, } - monaco-languageserver-types@0.3.3: + monaco-languageserver-types@0.3.4: resolution: { - integrity: sha512-4uJ6XaVwVamOQ1SXfBGusAqL4fTn7ZJzaybEinr2U5ZX7AKSjsbXWlu0X3Ah+hyefn+85+Ca7GZwbI87g55C8Q==, + integrity: sha512-d58sP5yNhjs8uG1ESXs0hFnuX2YfdMhiGeWhdgTUZyG9aaWgyI4dDwrK1khf1mPF2u9Sljv42sfYqPFZnqYMYg==, } monaco-marker-data-provider@1.2.2: @@ -3507,10 +3507,10 @@ packages: peerDependencies: monaco-editor: ">=0.30.0" - monaco-yaml@5.1.1: + monaco-yaml@5.2.0: resolution: { - integrity: sha512-BuZ0/ZCGjrPNRzYMZ/MoxH8F/SdM+mATENXnpOhDYABi1Eh+QvxSszEct+ACSCarZiwLvy7m6yEF/pvW8XJkyQ==, + integrity: sha512-BK9qeabDtxNlKppGrbU4yd8WTcKbk9ODqQwWy8Pb27FHtHwCQ1lTssRuB9XM2+Z4HQf6uhj3P5vFi3nsRrerGw==, } peerDependencies: monaco-editor: ">=0.36" @@ -3972,10 +3972,10 @@ packages: engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true - sass@1.77.4: + sass@1.77.5: resolution: { - integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==, + integrity: sha512-oDfX1mukIlxacPdQqNb6mV2tVCrnE+P3nVYioy72V5tlk56CPNcO4TCuFcaCRKKfJ1M3lH95CleRS+dVKL2qMg==, } engines: { node: ">=14.0.0" } hasBin: true @@ -4131,10 +4131,10 @@ packages: } engines: { node: ">=10" } - terser@5.31.0: + terser@5.31.1: resolution: { - integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==, + integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==, } engines: { node: ">=10" } hasBin: true @@ -4171,10 +4171,10 @@ packages: integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==, } - tslib@2.6.2: + tslib@2.6.3: resolution: { - integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, + integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==, } tunnel@0.0.6: @@ -4331,10 +4331,10 @@ packages: peerDependencies: vite: ^2.6.0 || 3 || 4 || 5 - vite@5.2.12: + vite@5.2.13: resolution: { - integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==, + integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==, } engines: { node: ^18.0.0 || >=20.0.0 } hasBin: true @@ -4452,10 +4452,10 @@ packages: } engines: { node: ">= 6" } - yaml@2.4.3: + yaml@2.4.5: resolution: { - integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==, + integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==, } engines: { node: ">= 14" } hasBin: true @@ -4486,25 +4486,25 @@ snapshots: "@jridgewell/gen-mapping": 0.3.5 "@jridgewell/trace-mapping": 0.3.25 - "@babel/code-frame@7.24.6": + "@babel/code-frame@7.24.7": dependencies: - "@babel/highlight": 7.24.6 + "@babel/highlight": 7.24.7 picocolors: 1.0.1 - "@babel/compat-data@7.24.6": {} + "@babel/compat-data@7.24.7": {} - "@babel/core@7.24.6": + "@babel/core@7.24.7": dependencies: "@ampproject/remapping": 2.3.0 - "@babel/code-frame": 7.24.6 - "@babel/generator": 7.24.6 - "@babel/helper-compilation-targets": 7.24.6 - "@babel/helper-module-transforms": 7.24.6(@babel/core@7.24.6) - "@babel/helpers": 7.24.6 - "@babel/parser": 7.24.6 - "@babel/template": 7.24.6 - "@babel/traverse": 7.24.6 - "@babel/types": 7.24.6 + "@babel/code-frame": 7.24.7 + "@babel/generator": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-module-transforms": 7.24.7(@babel/core@7.24.7) + "@babel/helpers": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/template": 7.24.7 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 convert-source-map: 2.0.0 debug: 4.3.5 gensync: 1.0.0-beta.2 @@ -4513,699 +4513,761 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.24.6": + "@babel/generator@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 "@jridgewell/gen-mapping": 0.3.5 "@jridgewell/trace-mapping": 0.3.25 jsesc: 2.5.2 - "@babel/helper-annotate-as-pure@7.24.6": + "@babel/helper-annotate-as-pure@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 - "@babel/helper-builder-binary-assignment-operator-visitor@7.24.6": + "@babel/helper-builder-binary-assignment-operator-visitor@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-compilation-targets@7.24.6": + "@babel/helper-compilation-targets@7.24.7": dependencies: - "@babel/compat-data": 7.24.6 - "@babel/helper-validator-option": 7.24.6 - browserslist: 4.23.0 + "@babel/compat-data": 7.24.7 + "@babel/helper-validator-option": 7.24.7 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-create-class-features-plugin@7.24.6(@babel/core@7.24.6)": + "@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-annotate-as-pure": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-function-name": 7.24.6 - "@babel/helper-member-expression-to-functions": 7.24.6 - "@babel/helper-optimise-call-expression": 7.24.6 - "@babel/helper-replace-supers": 7.24.6(@babel/core@7.24.6) - "@babel/helper-skip-transparent-expression-wrappers": 7.24.6 - "@babel/helper-split-export-declaration": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-annotate-as-pure": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-function-name": 7.24.7 + "@babel/helper-member-expression-to-functions": 7.24.7 + "@babel/helper-optimise-call-expression": 7.24.7 + "@babel/helper-replace-supers": 7.24.7(@babel/core@7.24.7) + "@babel/helper-skip-transparent-expression-wrappers": 7.24.7 + "@babel/helper-split-export-declaration": 7.24.7 semver: 6.3.1 + transitivePeerDependencies: + - supports-color - "@babel/helper-create-regexp-features-plugin@7.24.6(@babel/core@7.24.6)": + "@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-annotate-as-pure": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-annotate-as-pure": 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - "@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.6)": + "@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-compilation-targets": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 debug: 4.3.5 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - "@babel/helper-environment-visitor@7.24.6": {} - - "@babel/helper-function-name@7.24.6": + "@babel/helper-environment-visitor@7.24.7": dependencies: - "@babel/template": 7.24.6 - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 - "@babel/helper-hoist-variables@7.24.6": + "@babel/helper-function-name@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/template": 7.24.7 + "@babel/types": 7.24.7 - "@babel/helper-member-expression-to-functions@7.24.6": + "@babel/helper-hoist-variables@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 - "@babel/helper-module-imports@7.24.6": + "@babel/helper-member-expression-to-functions@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)": + "@babel/helper-module-imports@7.24.7": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-module-imports": 7.24.6 - "@babel/helper-simple-access": 7.24.6 - "@babel/helper-split-export-declaration": 7.24.6 - "@babel/helper-validator-identifier": 7.24.6 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-optimise-call-expression@7.24.6": + "@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/types": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-module-imports": 7.24.7 + "@babel/helper-simple-access": 7.24.7 + "@babel/helper-split-export-declaration": 7.24.7 + "@babel/helper-validator-identifier": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-plugin-utils@7.24.6": {} - - "@babel/helper-remap-async-to-generator@7.24.6(@babel/core@7.24.6)": + "@babel/helper-optimise-call-expression@7.24.7": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-annotate-as-pure": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-wrap-function": 7.24.6 + "@babel/types": 7.24.7 - "@babel/helper-replace-supers@7.24.6(@babel/core@7.24.6)": + "@babel/helper-plugin-utils@7.24.7": {} + + "@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-member-expression-to-functions": 7.24.6 - "@babel/helper-optimise-call-expression": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-annotate-as-pure": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-wrap-function": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-simple-access@7.24.6": + "@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/types": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-member-expression-to-functions": 7.24.7 + "@babel/helper-optimise-call-expression": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-skip-transparent-expression-wrappers@7.24.6": + "@babel/helper-simple-access@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-split-export-declaration@7.24.6": + "@babel/helper-skip-transparent-expression-wrappers@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/helper-string-parser@7.24.6": {} - - "@babel/helper-validator-identifier@7.24.6": {} - - "@babel/helper-validator-option@7.24.6": {} - - "@babel/helper-wrap-function@7.24.6": + "@babel/helper-split-export-declaration@7.24.7": dependencies: - "@babel/helper-function-name": 7.24.6 - "@babel/template": 7.24.6 - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 - "@babel/helpers@7.24.6": - dependencies: - "@babel/template": 7.24.6 - "@babel/types": 7.24.6 + "@babel/helper-string-parser@7.24.7": {} - "@babel/highlight@7.24.6": + "@babel/helper-validator-identifier@7.24.7": {} + + "@babel/helper-validator-option@7.24.7": {} + + "@babel/helper-wrap-function@7.24.7": dependencies: - "@babel/helper-validator-identifier": 7.24.6 + "@babel/helper-function-name": 7.24.7 + "@babel/template": 7.24.7 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color + + "@babel/helpers@7.24.7": + dependencies: + "@babel/template": 7.24.7 + "@babel/types": 7.24.7 + + "@babel/highlight@7.24.7": + dependencies: + "@babel/helper-validator-identifier": 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 - "@babel/parser@7.24.6": + "@babel/parser@7.24.7": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-skip-transparent-expression-wrappers": 7.24.6 - "@babel/plugin-transform-optional-chaining": 7.24.6(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.24.7 + "@babel/plugin-transform-optional-chaining": 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6)": + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.6)": + "@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.6)": + "@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.6)": + "@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-import-assertions@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-import-attributes@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.6)": + "@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.6)": + "@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.6)": + "@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.6)": + "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.6)": + "@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.6)": + "@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.6)": + "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-regexp-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-regexp-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-arrow-functions@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-async-generator-functions@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-remap-async-to-generator": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-remap-async-to-generator": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-async-to-generator@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-module-imports": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-remap-async-to-generator": 7.24.6(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-module-imports": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-remap-async-to-generator": 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-block-scoped-functions@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-block-scoping@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-class-properties@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-class-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-class-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-class-static-block@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-class-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-create-class-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-classes@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-annotate-as-pure": 7.24.6 - "@babel/helper-compilation-targets": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-function-name": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-replace-supers": 7.24.6(@babel/core@7.24.6) - "@babel/helper-split-export-declaration": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-annotate-as-pure": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-function-name": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-replace-supers": 7.24.7(@babel/core@7.24.7) + "@babel/helper-split-export-declaration": 7.24.7 globals: 11.12.0 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-computed-properties@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/template": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/template": 7.24.7 - "@babel/plugin-transform-destructuring@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-dotall-regex@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-regexp-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-regexp-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-duplicate-keys@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-dynamic-import@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.24.7) - "@babel/plugin-transform-exponentiation-operator@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-builder-binary-assignment-operator-visitor": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-builder-binary-assignment-operator-visitor": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-export-namespace-from@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-export-namespace-from": 7.8.3(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-export-namespace-from": 7.8.3(@babel/core@7.24.7) - "@babel/plugin-transform-for-of@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-skip-transparent-expression-wrappers": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-function-name@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-compilation-targets": 7.24.6 - "@babel/helper-function-name": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-function-name": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-json-strings@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.24.7) - "@babel/plugin-transform-literals@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-logical-assignment-operators@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.24.7) - "@babel/plugin-transform-member-expression-literals@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-modules-amd@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-module-transforms": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-module-transforms": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-modules-commonjs@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-module-transforms": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-simple-access": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-module-transforms": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-simple-access": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-modules-systemjs@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-hoist-variables": 7.24.6 - "@babel/helper-module-transforms": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-validator-identifier": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-hoist-variables": 7.24.7 + "@babel/helper-module-transforms": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-validator-identifier": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-modules-umd@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-module-transforms": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-module-transforms": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-named-capturing-groups-regex@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-regexp-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-regexp-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-new-target@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-nullish-coalescing-operator@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.24.7) - "@babel/plugin-transform-numeric-separator@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.24.7) - "@babel/plugin-transform-object-rest-spread@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-compilation-targets": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-transform-parameters": 7.24.6(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-transform-parameters": 7.24.7(@babel/core@7.24.7) - "@babel/plugin-transform-object-super@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-replace-supers": 7.24.6(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-replace-supers": 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-optional-catch-binding@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.24.7) - "@babel/plugin-transform-optional-chaining@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-skip-transparent-expression-wrappers": 7.24.6 - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.24.7 + "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-parameters@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-private-methods@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-class-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-class-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-private-property-in-object@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-annotate-as-pure": 7.24.6 - "@babel/helper-create-class-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 - "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-annotate-as-pure": 7.24.7 + "@babel/helper-create-class-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-property-literals@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-react-jsx-self@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-react-jsx-source@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-regenerator@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 regenerator-transform: 0.15.2 - "@babel/plugin-transform-reserved-words@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-shorthand-properties@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-spread@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-skip-transparent-expression-wrappers": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-sticky-regex@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-template-literals@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-typeof-symbol@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-unicode-escapes@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-unicode-property-regex@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-regexp-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-regexp-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-unicode-regex@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-regexp-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-regexp-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-unicode-sets-regex@7.24.6(@babel/core@7.24.6)": + "@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-create-regexp-features-plugin": 7.24.6(@babel/core@7.24.6) - "@babel/helper-plugin-utils": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-create-regexp-features-plugin": 7.24.7(@babel/core@7.24.7) + "@babel/helper-plugin-utils": 7.24.7 - "@babel/preset-env@7.24.6(@babel/core@7.24.6)": + "@babel/preset-env@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/compat-data": 7.24.6 - "@babel/core": 7.24.6 - "@babel/helper-compilation-targets": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/helper-validator-option": 7.24.6 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6) - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.24.6) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.24.6) - "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.24.6) - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-export-namespace-from": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-import-assertions": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-syntax-import-attributes": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.24.6) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.24.6) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.24.6) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.24.6) - "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.24.6) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.24.6) - "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.24.6) - "@babel/plugin-transform-arrow-functions": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-async-generator-functions": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-async-to-generator": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-block-scoped-functions": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-block-scoping": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-class-properties": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-class-static-block": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-classes": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-computed-properties": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-destructuring": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-dotall-regex": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-duplicate-keys": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-dynamic-import": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-exponentiation-operator": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-export-namespace-from": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-for-of": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-function-name": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-json-strings": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-literals": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-logical-assignment-operators": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-member-expression-literals": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-modules-amd": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-modules-commonjs": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-modules-systemjs": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-modules-umd": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-named-capturing-groups-regex": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-new-target": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-nullish-coalescing-operator": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-numeric-separator": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-object-rest-spread": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-object-super": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-optional-catch-binding": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-optional-chaining": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-parameters": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-private-methods": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-private-property-in-object": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-property-literals": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-regenerator": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-reserved-words": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-shorthand-properties": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-spread": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-sticky-regex": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-template-literals": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-typeof-symbol": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-unicode-escapes": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-unicode-property-regex": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-unicode-regex": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-unicode-sets-regex": 7.24.6(@babel/core@7.24.6) - "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.24.6) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.6) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.6) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.6) + "@babel/compat-data": 7.24.7 + "@babel/core": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/helper-validator-option": 7.24.7 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7) + "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.24.7) + "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.24.7) + "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.24.7) + "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-export-namespace-from": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-import-assertions": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-syntax-import-attributes": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.24.7) + "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.24.7) + "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.24.7) + "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.24.7) + "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.24.7) + "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.24.7) + "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.24.7) + "@babel/plugin-transform-arrow-functions": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-async-generator-functions": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-async-to-generator": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-block-scoped-functions": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-block-scoping": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-class-properties": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-class-static-block": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-classes": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-computed-properties": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-destructuring": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-dotall-regex": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-duplicate-keys": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-dynamic-import": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-exponentiation-operator": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-export-namespace-from": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-for-of": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-function-name": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-json-strings": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-literals": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-logical-assignment-operators": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-member-expression-literals": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-modules-amd": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-modules-commonjs": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-modules-systemjs": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-modules-umd": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-named-capturing-groups-regex": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-new-target": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-nullish-coalescing-operator": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-numeric-separator": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-object-rest-spread": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-object-super": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-optional-catch-binding": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-optional-chaining": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-parameters": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-private-methods": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-private-property-in-object": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-property-literals": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-regenerator": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-reserved-words": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-shorthand-properties": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-spread": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-sticky-regex": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-template-literals": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-typeof-symbol": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-unicode-escapes": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-unicode-property-regex": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-unicode-regex": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-unicode-sets-regex": 7.24.7(@babel/core@7.24.7) + "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.24.7) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.6)": + "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@babel/helper-plugin-utils": 7.24.6 - "@babel/types": 7.24.6 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/types": 7.24.7 esutils: 2.0.3 "@babel/regjsgen@0.8.0": {} - "@babel/runtime@7.24.6": + "@babel/runtime@7.24.7": dependencies: regenerator-runtime: 0.14.1 - "@babel/template@7.24.6": + "@babel/template@7.24.7": dependencies: - "@babel/code-frame": 7.24.6 - "@babel/parser": 7.24.6 - "@babel/types": 7.24.6 + "@babel/code-frame": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 - "@babel/traverse@7.24.6": + "@babel/traverse@7.24.7": dependencies: - "@babel/code-frame": 7.24.6 - "@babel/generator": 7.24.6 - "@babel/helper-environment-visitor": 7.24.6 - "@babel/helper-function-name": 7.24.6 - "@babel/helper-hoist-variables": 7.24.6 - "@babel/helper-split-export-declaration": 7.24.6 - "@babel/parser": 7.24.6 - "@babel/types": 7.24.6 + "@babel/code-frame": 7.24.7 + "@babel/generator": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-function-name": 7.24.7 + "@babel/helper-hoist-variables": 7.24.7 + "@babel/helper-split-export-declaration": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color - "@babel/types@7.24.6": + "@babel/types@7.24.7": dependencies: - "@babel/helper-string-parser": 7.24.6 - "@babel/helper-validator-identifier": 7.24.6 + "@babel/helper-string-parser": 7.24.7 + "@babel/helper-validator-identifier": 7.24.7 to-fast-properties: 2.0.0 "@dnd-kit/accessibility@3.1.0(react@18.3.1)": dependencies: react: 18.3.1 - tslib: 2.6.2 + tslib: 2.6.3 "@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: @@ -5213,24 +5275,24 @@ snapshots: "@dnd-kit/utilities": 3.2.2(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - tslib: 2.6.2 + tslib: 2.6.3 "@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)": dependencies: "@dnd-kit/core": 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@dnd-kit/utilities": 3.2.2(react@18.3.1) react: 18.3.1 - tslib: 2.6.2 + tslib: 2.6.3 "@dnd-kit/utilities@3.2.2(react@18.3.1)": dependencies: react: 18.3.1 - tslib: 2.6.2 + tslib: 2.6.3 "@emotion/babel-plugin@11.11.0": dependencies: - "@babel/helper-module-imports": 7.24.6 - "@babel/runtime": 7.24.6 + "@babel/helper-module-imports": 7.24.7 + "@babel/runtime": 7.24.7 "@emotion/hash": 0.9.1 "@emotion/memoize": 0.8.1 "@emotion/serialize": 1.1.4 @@ -5240,6 +5302,8 @@ snapshots: find-root: 1.1.0 source-map: 0.5.7 stylis: 4.2.0 + transitivePeerDependencies: + - supports-color "@emotion/cache@11.11.0": dependencies: @@ -5259,7 +5323,7 @@ snapshots: "@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@emotion/babel-plugin": 11.11.0 "@emotion/cache": 11.11.0 "@emotion/serialize": 1.1.4 @@ -5270,6 +5334,8 @@ snapshots: react: 18.3.1 optionalDependencies: "@types/react": 18.3.3 + transitivePeerDependencies: + - supports-color "@emotion/serialize@1.1.4": dependencies: @@ -5283,7 +5349,7 @@ snapshots: "@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@emotion/babel-plugin": 11.11.0 "@emotion/is-prop-valid": 1.2.2 "@emotion/react": 11.11.4(@types/react@18.3.3)(react@18.3.1) @@ -5293,6 +5359,8 @@ snapshots: react: 18.3.1 optionalDependencies: "@types/react": 18.3.3 + transitivePeerDependencies: + - supports-color "@emotion/unitless@0.8.1": {} @@ -5418,7 +5486,7 @@ snapshots: "@mui/base@5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@floating-ui/react-dom": 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/types": 7.2.14(@types/react@18.3.3) "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1) @@ -5432,7 +5500,7 @@ snapshots: "@mui/base@5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@floating-ui/react-dom": 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/types": 7.2.14(@types/react@18.3.3) "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1) @@ -5448,7 +5516,7 @@ snapshots: "@mui/icons-material@5.15.19(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: @@ -5456,7 +5524,7 @@ snapshots: "@mui/lab@5.0.0-alpha.149(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@mui/base": 5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -5474,7 +5542,7 @@ snapshots: "@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@mui/base": 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/core-downloads-tracker": 5.15.19 "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -5495,7 +5563,7 @@ snapshots: "@mui/private-theming@5.15.14(@types/react@18.3.3)(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 @@ -5504,7 +5572,7 @@ snapshots: "@mui/styled-engine@5.15.14(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@emotion/cache": 11.11.0 csstype: 3.1.3 prop-types: 15.8.1 @@ -5515,7 +5583,7 @@ snapshots: "@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@mui/private-theming": 5.15.14(@types/react@18.3.3)(react@18.3.1) "@mui/styled-engine": 5.15.14(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) "@mui/types": 7.2.14(@types/react@18.3.3) @@ -5535,7 +5603,7 @@ snapshots: "@mui/utils@5.15.14(@types/react@18.3.3)(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@types/prop-types": 15.7.12 prop-types: 15.8.1 react: 18.3.1 @@ -5543,9 +5611,9 @@ snapshots: optionalDependencies: "@types/react": 18.3.3 - "@mui/x-data-grid@6.20.0(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + "@mui/x-data-grid@6.20.1(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1) @@ -5559,7 +5627,7 @@ snapshots: "@mui/x-tree-view@6.0.0-alpha.1(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/base@5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 "@emotion/react": 11.11.4(@types/react@18.3.3)(react@18.3.1) "@emotion/styled": 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) "@mui/base": 5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5699,54 +5767,54 @@ snapshots: "@rollup/rollup-win32-x64-msvc@4.18.0": optional: true - "@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.6)": + "@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 + "@babel/core": 7.24.7 - "@svgr/babel-preset@8.1.0(@babel/core@7.24.6)": + "@svgr/babel-preset@8.1.0(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.6 - "@svgr/babel-plugin-add-jsx-attribute": 8.0.0(@babel/core@7.24.6) - "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0(@babel/core@7.24.6) - "@svgr/babel-plugin-remove-jsx-empty-expression": 8.0.0(@babel/core@7.24.6) - "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0(@babel/core@7.24.6) - "@svgr/babel-plugin-svg-dynamic-title": 8.0.0(@babel/core@7.24.6) - "@svgr/babel-plugin-svg-em-dimensions": 8.0.0(@babel/core@7.24.6) - "@svgr/babel-plugin-transform-react-native-svg": 8.1.0(@babel/core@7.24.6) - "@svgr/babel-plugin-transform-svg-component": 8.0.0(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@svgr/babel-plugin-add-jsx-attribute": 8.0.0(@babel/core@7.24.7) + "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0(@babel/core@7.24.7) + "@svgr/babel-plugin-remove-jsx-empty-expression": 8.0.0(@babel/core@7.24.7) + "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0(@babel/core@7.24.7) + "@svgr/babel-plugin-svg-dynamic-title": 8.0.0(@babel/core@7.24.7) + "@svgr/babel-plugin-svg-em-dimensions": 8.0.0(@babel/core@7.24.7) + "@svgr/babel-plugin-transform-react-native-svg": 8.1.0(@babel/core@7.24.7) + "@svgr/babel-plugin-transform-svg-component": 8.0.0(@babel/core@7.24.7) "@svgr/core@8.1.0(typescript@5.4.5)": dependencies: - "@babel/core": 7.24.6 - "@svgr/babel-preset": 8.1.0(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@svgr/babel-preset": 8.1.0(@babel/core@7.24.7) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.4.5) snake-case: 3.0.4 @@ -5756,13 +5824,13 @@ snapshots: "@svgr/hast-util-to-babel-ast@8.0.0": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 entities: 4.5.0 "@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.4.5))": dependencies: - "@babel/core": 7.24.6 - "@svgr/babel-preset": 8.1.0(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@svgr/babel-preset": 8.1.0(@babel/core@7.24.7) "@svgr/core": 8.1.0(typescript@5.4.5) "@svgr/hast-util-to-babel-ast": 8.0.0 svg-parser: 2.0.4 @@ -5816,24 +5884,24 @@ snapshots: "@types/babel__core@7.20.5": dependencies: - "@babel/parser": 7.24.6 - "@babel/types": 7.24.6 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 "@types/babel__generator": 7.6.8 "@types/babel__template": 7.4.4 "@types/babel__traverse": 7.20.6 "@types/babel__generator@7.6.8": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 "@types/babel__template@7.4.4": dependencies: - "@babel/parser": 7.24.6 - "@babel/types": 7.24.6 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 "@types/babel__traverse@7.20.6": dependencies: - "@babel/types": 7.24.6 + "@babel/types": 7.24.7 "@types/debug@4.1.12": dependencies: @@ -5847,7 +5915,7 @@ snapshots: "@types/fs-extra@9.0.13": dependencies: - "@types/node": 20.14.1 + "@types/node": 20.14.2 "@types/hast@3.0.4": dependencies: @@ -5859,9 +5927,9 @@ snapshots: "@types/lodash-es@4.17.12": dependencies: - "@types/lodash": 4.17.4 + "@types/lodash": 4.17.5 - "@types/lodash@4.17.4": {} + "@types/lodash@4.17.5": {} "@types/mdast@4.0.4": dependencies: @@ -5869,7 +5937,7 @@ snapshots: "@types/ms@0.7.34": {} - "@types/node@20.14.1": + "@types/node@20.14.2": dependencies: undici-types: 5.26.5 @@ -5896,35 +5964,35 @@ snapshots: "@ungap/structured-clone@1.2.0": {} - "@vitejs/plugin-legacy@5.4.1(terser@5.31.0)(vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0))": + "@vitejs/plugin-legacy@5.4.1(terser@5.31.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))": dependencies: - "@babel/core": 7.24.6 - "@babel/preset-env": 7.24.6(@babel/core@7.24.6) - browserslist: 4.23.0 - browserslist-to-esbuild: 2.1.1(browserslist@4.23.0) + "@babel/core": 7.24.7 + "@babel/preset-env": 7.24.7(@babel/core@7.24.7) + browserslist: 4.23.1 + browserslist-to-esbuild: 2.1.1(browserslist@4.23.1) core-js: 3.37.1 magic-string: 0.30.10 regenerator-runtime: 0.14.1 systemjs: 6.15.1 - terser: 5.31.0 - vite: 5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0) + terser: 5.31.1 + vite: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1) transitivePeerDependencies: - supports-color - "@vitejs/plugin-react@4.3.0(vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0))": + "@vitejs/plugin-react@4.3.1(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))": dependencies: - "@babel/core": 7.24.6 - "@babel/plugin-transform-react-jsx-self": 7.24.6(@babel/core@7.24.6) - "@babel/plugin-transform-react-jsx-source": 7.24.6(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/plugin-transform-react-jsx-self": 7.24.7(@babel/core@7.24.7) + "@babel/plugin-transform-react-jsx-source": 7.24.7(@babel/core@7.24.7) "@types/babel__core": 7.20.5 react-refresh: 0.14.2 - vite: 5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0) + vite: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1) transitivePeerDependencies: - supports-color acorn@8.11.3: {} - adm-zip@0.5.13: {} + adm-zip@0.5.14: {} agent-base@6.0.2: dependencies: @@ -5934,7 +6002,7 @@ snapshots: ahooks@3.8.0(react@18.3.1): dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 dayjs: 1.11.5 intersection-observer: 0.12.2 js-cookie: 2.2.1 @@ -5943,7 +6011,7 @@ snapshots: react-fast-compare: 3.2.2 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 - tslib: 2.6.2 + tslib: 2.6.3 ansi-styles@3.2.1: dependencies: @@ -5968,31 +6036,31 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 cosmiconfig: 7.1.0 resolve: 1.22.8 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.6): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): dependencies: - "@babel/compat-data": 7.24.6 - "@babel/core": 7.24.6 - "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.24.6) + "@babel/compat-data": 7.24.7 + "@babel/core": 7.24.7 + "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.24.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.6): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): dependencies: - "@babel/core": 7.24.6 - "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.24.7) core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.6): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): dependencies: - "@babel/core": 7.24.6 - "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.24.6) + "@babel/core": 7.24.7 + "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.24.7) transitivePeerDependencies: - supports-color @@ -6006,17 +6074,17 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist-to-esbuild@2.1.1(browserslist@4.23.0): + browserslist-to-esbuild@2.1.1(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 meow: 13.2.0 - browserslist@4.23.0: + browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001627 - electron-to-chromium: 1.4.788 + caniuse-lite: 1.0.30001632 + electron-to-chromium: 1.4.799 node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.1) buffer-from@1.1.2: {} @@ -6024,7 +6092,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001627: {} + caniuse-lite@1.0.30001632: {} ccount@2.0.1: {} @@ -6080,7 +6148,7 @@ snapshots: core-js-compat@3.37.1: dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 core-js@3.37.1: {} @@ -6137,15 +6205,15 @@ snapshots: dom-helpers@5.2.1: dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 csstype: 3.1.3 dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 - electron-to-chromium@1.4.788: {} + electron-to-chromium@1.4.799: {} end-of-stream@1.4.4: dependencies: @@ -6326,7 +6394,7 @@ snapshots: i18next@23.11.5: dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 ignore@5.3.1: {} @@ -6422,7 +6490,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 lru-cache@5.1.1: dependencies: @@ -6494,7 +6562,7 @@ snapshots: "@types/mdast": 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.1.0: + mdast-util-to-hast@13.2.0: dependencies: "@types/hast": 3.0.4 "@types/mdast": 4.0.4 @@ -6683,7 +6751,7 @@ snapshots: monaco-editor@0.49.0: {} - monaco-languageserver-types@0.3.3: + monaco-languageserver-types@0.3.4: dependencies: monaco-types: 0.1.0 vscode-languageserver-protocol: 3.17.5 @@ -6699,12 +6767,12 @@ snapshots: dependencies: monaco-editor: 0.49.0 - monaco-yaml@5.1.1(monaco-editor@0.49.0): + monaco-yaml@5.2.0(monaco-editor@0.49.0): dependencies: "@types/json-schema": 7.0.15 jsonc-parser: 3.2.1 monaco-editor: 0.49.0 - monaco-languageserver-types: 0.3.3 + monaco-languageserver-types: 0.3.4 monaco-marker-data-provider: 1.2.2 monaco-types: 0.1.0 monaco-worker-manager: 2.0.1(monaco-editor@0.49.0) @@ -6713,7 +6781,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - yaml: 2.4.3 + yaml: 2.4.5 mri@1.2.0: {} @@ -6726,7 +6794,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.6.3 node-domexception@1.0.0: {} @@ -6785,7 +6853,7 @@ snapshots: parse-json@5.2.0: dependencies: - "@babel/code-frame": 7.24.6 + "@babel/code-frame": 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -6823,7 +6891,7 @@ snapshots: picocolors: 1.0.1 picomatch: 3.0.1 prettier: 2.8.8 - tslib: 2.6.2 + tslib: 2.6.3 prop-types@15.8.1: dependencies: @@ -6848,7 +6916,7 @@ snapshots: react-error-boundary@3.1.4(react@18.3.1): dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 react: 18.3.1 react-fast-compare@3.2.2: {} @@ -6859,7 +6927,7 @@ snapshots: react-i18next@13.5.0(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 html-parse-stringify: 3.0.1 i18next: 23.11.5 react: 18.3.1 @@ -6877,7 +6945,7 @@ snapshots: devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 react: 18.3.1 remark-parse: 11.0.0 remark-rehype: 11.1.0 @@ -6903,7 +6971,7 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -6933,7 +7001,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - "@babel/runtime": 7.24.6 + "@babel/runtime": 7.24.7 regexpu-core@5.3.2: dependencies: @@ -6961,7 +7029,7 @@ snapshots: dependencies: "@types/hast": 3.0.4 "@types/mdast": 4.0.4 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 unified: 11.0.4 vfile: 6.0.1 @@ -6999,7 +7067,7 @@ snapshots: "@rollup/rollup-win32-x64-msvc": 4.18.0 fsevents: 2.3.3 - sass@1.77.4: + sass@1.77.5: dependencies: chokidar: 3.6.0 immutable: 4.3.6 @@ -7026,7 +7094,7 @@ snapshots: snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 source-map-js@1.2.0: {} @@ -7077,7 +7145,7 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser@5.31.0: + terser@5.31.1: dependencies: "@jridgewell/source-map": 0.3.6 acorn: 8.11.3 @@ -7096,7 +7164,7 @@ snapshots: trough@2.2.0: {} - tslib@2.6.2: {} + tslib@2.6.3: {} tunnel@0.0.6: {} @@ -7163,9 +7231,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.0.16(browserslist@4.23.0): + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 escalade: 3.1.2 picocolors: 1.0.1 @@ -7184,27 +7252,27 @@ snapshots: dependencies: monaco-editor: 0.49.0 - vite-plugin-svgr@4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0)): + vite-plugin-svgr@4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)): dependencies: "@rollup/pluginutils": 5.1.0(rollup@4.18.0) "@svgr/core": 8.1.0(typescript@5.4.5) "@svgr/plugin-jsx": 8.1.0(@svgr/core@8.1.0(typescript@5.4.5)) - vite: 5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0) + vite: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite@5.2.12(@types/node@20.14.1)(sass@1.77.4)(terser@5.31.0): + vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1): dependencies: esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.18.0 optionalDependencies: - "@types/node": 20.14.1 + "@types/node": 20.14.2 fsevents: 2.3.3 - sass: 1.77.4 - terser: 5.31.0 + sass: 1.77.5 + terser: 5.31.1 void-elements@3.1.0: {} @@ -7242,6 +7310,6 @@ snapshots: yaml@1.10.2: {} - yaml@2.4.3: {} + yaml@2.4.5: {} zwitch@2.0.4: {} diff --git a/clash-verge-rev/src-tauri/Cargo.lock b/clash-verge-rev/src-tauri/Cargo.lock index d5bc587fc0..b751b1653d 100644 --- a/clash-verge-rev/src-tauri/Cargo.lock +++ b/clash-verge-rev/src-tauri/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329972aa325176e89114919f2a80fdae4f4c040f66a370b1a1159c6c0f94e7aa" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ "async-io 2.3.3", "async-lock 3.4.0", @@ -783,7 +783,7 @@ dependencies = [ [[package]] name = "clash-verge" -version = "1.6.5" +version = "1.6.6" dependencies = [ "anyhow", "auto-launch", @@ -1985,8 +1985,8 @@ dependencies = [ "aho-corasick 1.1.3", "bstr", "log 0.4.21", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2249,12 +2249,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", "http-body 1.0.0", "pin-project-lite", @@ -2268,9 +2268,9 @@ checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545" [[package]] name = "httpdate" @@ -2563,12 +2563,14 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", + "smallvec", + "utf8_iter", ] [[package]] @@ -2581,7 +2583,7 @@ dependencies = [ "globset", "log 0.4.21", "memchr", - "regex-automata 0.4.6", + "regex-automata 0.4.7", "same-file", "walkdir", "winapi-util", @@ -2711,7 +2713,7 @@ checksum = "c416c05ba2a10240e022887617af3128fccdbf69713214da0fc81a5690d00df7" dependencies = [ "ahash", "once_cell", - "regex 1.10.4", + "regex 1.10.5", ] [[package]] @@ -4338,14 +4340,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick 1.1.3", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -4359,13 +4361,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick 1.1.3", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", ] [[package]] @@ -4385,9 +4387,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "regress" @@ -5381,7 +5383,7 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tauri" version = "1.6.7" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "anyhow", "base64 0.21.7", @@ -5414,7 +5416,7 @@ dependencies = [ "png", "rand 0.8.5", "raw-window-handle", - "regex 1.10.4", + "regex 1.10.5", "reqwest 0.11.27", "rfd", "semver 1.0.23", @@ -5444,7 +5446,7 @@ dependencies = [ [[package]] name = "tauri-build" version = "1.5.2" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "anyhow", "cargo_toml", @@ -5462,7 +5464,7 @@ dependencies = [ [[package]] name = "tauri-codegen" version = "1.4.3" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "base64 0.21.7", "brotli", @@ -5472,7 +5474,7 @@ dependencies = [ "png", "proc-macro2", "quote", - "regex 1.10.4", + "regex 1.10.5", "semver 1.0.23", "serde", "serde_json", @@ -5487,7 +5489,7 @@ dependencies = [ [[package]] name = "tauri-macros" version = "1.4.4" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -5500,7 +5502,7 @@ dependencies = [ [[package]] name = "tauri-runtime" version = "0.14.3" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "gtk", "http 0.2.12", @@ -5520,7 +5522,7 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" version = "0.14.8" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "arboard", "cocoa 0.24.1", @@ -5540,7 +5542,7 @@ dependencies = [ [[package]] name = "tauri-utils" version = "1.5.4" -source = "git+https://github.com/tauri-apps/tauri?branch=1.x#3752eb1e6be2a8c31ea5519b5f1886d5721e4435" +source = "git+https://github.com/tauri-apps/tauri?branch=1.x#d2786bf699ffca1d5e9c234a3b1b4d5ec173af87" dependencies = [ "brotli", "ctor", @@ -5651,7 +5653,7 @@ dependencies = [ "num-derive", "num-traits", "ordered-float", - "regex 1.10.4", + "regex 1.10.5", "semver 0.11.0", "sha2 0.9.9", "signal-hook", @@ -5780,21 +5782,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.38.0" @@ -6030,7 +6017,7 @@ dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex 1.10.4", + "regex 1.10.5", "sharded-slab", "smallvec", "thread_local 1.1.8", @@ -6125,27 +6112,12 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.11.0" @@ -6175,9 +6147,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" dependencies = [ "form_urlencoded", "idna", @@ -6606,7 +6578,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" dependencies = [ - "regex 1.10.4", + "regex 1.10.5", "serde", "serde_json", "thiserror", @@ -7255,12 +7227,12 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] diff --git a/clash-verge-rev/src-tauri/Cargo.toml b/clash-verge-rev/src-tauri/Cargo.toml index da3165f932..946a56cc2d 100644 --- a/clash-verge-rev/src-tauri/Cargo.toml +++ b/clash-verge-rev/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "clash-verge" -version = "1.6.5" +version = "1.6.6" description = "clash verge" authors = ["zzzgydi", "wonfen", "MystiPanda"] license = "GPL-3.0-only" diff --git a/clash-verge-rev/src-tauri/src/cmds.rs b/clash-verge-rev/src-tauri/src/cmds.rs index c0e54ce623..68b2ac8024 100644 --- a/clash-verge-rev/src-tauri/src/cmds.rs +++ b/clash-verge-rev/src-tauri/src/cmds.rs @@ -327,7 +327,7 @@ pub fn copy_icon_file(path: String, name: String) -> CmdResult { Err(err) => Err(err.to_string()), } } else { - return Err("file not found".to_string()); + Err("file not found".to_string()) } } diff --git a/clash-verge-rev/src-tauri/src/config/mod.rs b/clash-verge-rev/src-tauri/src/config/mod.rs index 8ceaad6d0b..2f815800f7 100644 --- a/clash-verge-rev/src-tauri/src/config/mod.rs +++ b/clash-verge-rev/src-tauri/src/config/mod.rs @@ -1,4 +1,5 @@ mod clash; +#[allow(clippy::module_inception)] mod config; mod draft; mod prfitem; diff --git a/clash-verge-rev/src-tauri/src/config/prfitem.rs b/clash-verge-rev/src-tauri/src/config/prfitem.rs index f06fe4db67..2846a38fb3 100644 --- a/clash-verge-rev/src-tauri/src/config/prfitem.rs +++ b/clash-verge-rev/src-tauri/src/config/prfitem.rs @@ -103,7 +103,9 @@ impl PrfOption { a.user_agent = b.user_agent.or(a.user_agent); a.with_proxy = b.with_proxy.or(a.with_proxy); a.self_proxy = b.self_proxy.or(a.self_proxy); - a.danger_accept_invalid_certs = b.danger_accept_invalid_certs.or(a.danger_accept_invalid_certs); + a.danger_accept_invalid_certs = b + .danger_accept_invalid_certs + .or(a.danger_accept_invalid_certs); a.update_interval = b.update_interval.or(a.update_interval); Some(a) } @@ -182,7 +184,8 @@ impl PrfItem { let opt_ref = option.as_ref(); let with_proxy = opt_ref.map_or(false, |o| o.with_proxy.unwrap_or(false)); let self_proxy = opt_ref.map_or(false, |o| o.self_proxy.unwrap_or(false)); - let accept_invalid_certs = opt_ref.map_or(false, |o| o.danger_accept_invalid_certs.unwrap_or(false)); + let accept_invalid_certs = + opt_ref.map_or(false, |o| o.danger_accept_invalid_certs.unwrap_or(false)); let user_agent = opt_ref.and_then(|o| o.user_agent.clone()); let update_interval = opt_ref.and_then(|o| o.update_interval); @@ -300,7 +303,7 @@ impl PrfItem { Some(value) => { let str_value = value.to_str().unwrap_or(""); Some(str_value.to_string()) - }, + } None => None, }; diff --git a/clash-verge-rev/src-tauri/src/core/core.rs b/clash-verge-rev/src-tauri/src/core/core.rs index 34fd06c43a..a1c917d791 100644 --- a/clash-verge-rev/src-tauri/src/core/core.rs +++ b/clash-verge-rev/src-tauri/src/core/core.rs @@ -116,12 +116,12 @@ impl CoreManager { // 服务模式启动失败就直接运行sidecar log::debug!(target: "app", "try to run core in service mode"); - match (|| async { + let res = async { service::check_service().await?; service::run_core_by_service(&config_path).await - })() - .await - { + } + .await; + match res { Ok(_) => return Ok(()), Err(err) => { // 修改这个值,免得stop出错 diff --git a/clash-verge-rev/src-tauri/src/core/hotkey.rs b/clash-verge-rev/src-tauri/src/core/hotkey.rs index 1e4131b09c..14303ea063 100644 --- a/clash-verge-rev/src-tauri/src/core/hotkey.rs +++ b/clash-verge-rev/src-tauri/src/core/hotkey.rs @@ -43,7 +43,7 @@ impl Hotkey { } } } - *self.current.lock() = hotkeys.clone(); + self.current.lock().clone_from(hotkeys); } Ok(()) @@ -142,7 +142,7 @@ impl Hotkey { }); new_map.iter().for_each(|(&key, &func)| { - if old_map.get(key).is_none() { + if !old_map.contains_key(key) { add_list.push((key, func)); } }); diff --git a/clash-verge-rev/src-tauri/src/core/manager.rs b/clash-verge-rev/src-tauri/src/core/manager.rs index 2c05a5affa..de877382c3 100644 --- a/clash-verge-rev/src-tauri/src/core/manager.rs +++ b/clash-verge-rev/src-tauri/src/core/manager.rs @@ -22,7 +22,8 @@ pub fn grant_permission(core: String) -> anyhow::Result<()> { #[cfg(target_os = "linux")] let output = { let path = path.replace(' ', "\\ "); // 避免路径中有空格 - let shell = format!("setcap cap_net_bind_service,cap_net_admin,cap_dac_override=+ep {path}"); + let shell = + format!("setcap cap_net_bind_service,cap_net_admin,cap_dac_override=+ep {path}"); let sudo = match Command::new("which").arg("pkexec").output() { Ok(output) => { diff --git a/clash-verge-rev/src-tauri/src/core/mod.rs b/clash-verge-rev/src-tauri/src/core/mod.rs index 55067ec9f6..436ac51872 100644 --- a/clash-verge-rev/src-tauri/src/core/mod.rs +++ b/clash-verge-rev/src-tauri/src/core/mod.rs @@ -1,13 +1,14 @@ pub mod clash_api; +#[allow(clippy::module_inception)] mod core; pub mod handle; pub mod hotkey; pub mod logger; pub mod manager; +pub mod service; pub mod sysopt; pub mod timer; pub mod tray; -pub mod service; pub mod win_uwp; pub use self::core::*; diff --git a/clash-verge-rev/src-tauri/src/core/sysopt.rs b/clash-verge-rev/src-tauri/src/core/sysopt.rs index df25f6e7e9..a5a6a80608 100644 --- a/clash-verge-rev/src-tauri/src/core/sysopt.rs +++ b/clash-verge-rev/src-tauri/src/core/sysopt.rs @@ -44,11 +44,12 @@ static DEFAULT_BYPASS: &str = fn get_bypass() -> String { let bypass = DEFAULT_BYPASS.to_string(); - let custom_bypass = match { + let res = { let verge = Config::verge(); let verge = verge.latest(); verge.system_proxy_bypass.clone() - } { + }; + let custom_bypass = match res { Some(bypass) => bypass, None => "".to_string(), }; @@ -65,7 +66,7 @@ fn get_bypass() -> String { format!("{},{}", bypass, custom_bypass) }; - bypass.into() + bypass } impl Sysopt { @@ -152,19 +153,18 @@ impl Sysopt { verge.proxy_auto_config.unwrap_or(false), ) }; - if pac { - if cur_autoproxy.is_none() || old_autoproxy.is_none() { - drop(cur_autoproxy); - drop(old_autoproxy); - return self.init_sysproxy(); - } - } else { - if cur_sysproxy.is_none() || old_sysproxy.is_none() { - drop(cur_sysproxy); - drop(old_sysproxy); - return self.init_sysproxy(); - } + if pac && (cur_autoproxy.is_none() || old_autoproxy.is_none()) { + drop(cur_autoproxy); + drop(old_autoproxy); + return self.init_sysproxy(); } + + if !pac && (cur_sysproxy.is_none() || old_sysproxy.is_none()) { + drop(cur_sysproxy); + drop(old_sysproxy); + return self.init_sysproxy(); + } + let port = Config::verge() .latest() .verge_mixed_port diff --git a/clash-verge-rev/src-tauri/src/enhance/chain.rs b/clash-verge-rev/src-tauri/src/enhance/chain.rs index 88d98a2910..aa939b6dde 100644 --- a/clash-verge-rev/src-tauri/src/enhance/chain.rs +++ b/clash-verge-rev/src-tauri/src/enhance/chain.rs @@ -88,13 +88,13 @@ impl ChainItem { impl ChainSupport { pub fn is_support(&self, core: Option<&String>) -> bool { match core { - Some(core) => match (self, core.as_str()) { - (ChainSupport::All, _) => true, - (ChainSupport::Clash, "clash") => true, - (ChainSupport::ClashMeta, "clash-meta") => true, - (ChainSupport::ClashMetaAlpha, "clash-meta-alpha") => true, - _ => false, - }, + Some(core) => matches!( + (self, core.as_str()), + (ChainSupport::All, _) + | (ChainSupport::Clash, "clash") + | (ChainSupport::ClashMeta, "clash-meta") + | (ChainSupport::ClashMetaAlpha, "clash-meta-alpha") + ), None => true, } } diff --git a/clash-verge-rev/src-tauri/src/enhance/field.rs b/clash-verge-rev/src-tauri/src/enhance/field.rs index 0f84f9f2ce..adb9228bb9 100644 --- a/clash-verge-rev/src-tauri/src/enhance/field.rs +++ b/clash-verge-rev/src-tauri/src/enhance/field.rs @@ -60,11 +60,7 @@ pub fn use_sort(config: Mapping) -> Mapping { let supported_keys: HashSet<&str> = HANDLE_FIELDS.into_iter().chain(DEFAULT_FIELDS).collect(); - let config_keys: HashSet<&str> = config - .keys() - .filter_map(|e| e.as_str()) - .into_iter() - .collect(); + let config_keys: HashSet<&str> = config.keys().filter_map(|e| e.as_str()).collect(); config_keys.difference(&supported_keys).for_each(|&key| { let key = Value::from(key); diff --git a/clash-verge-rev/src-tauri/src/enhance/merge.rs b/clash-verge-rev/src-tauri/src/enhance/merge.rs index 5e947fd9c2..7a283ab34b 100644 --- a/clash-verge-rev/src-tauri/src/enhance/merge.rs +++ b/clash-verge-rev/src-tauri/src/enhance/merge.rs @@ -12,7 +12,7 @@ const MERGE_FIELDS: [&str; 6] = [ fn deep_merge(a: &mut Value, b: &Value) { match (a, b) { - (&mut Value::Mapping(ref mut a), &Value::Mapping(ref b)) => { + (&mut Value::Mapping(ref mut a), Value::Mapping(b)) => { for (k, v) in b { deep_merge(a.entry(k.clone()).or_insert(Value::Null), v); } diff --git a/clash-verge-rev/src-tauri/src/enhance/mod.rs b/clash-verge-rev/src-tauri/src/enhance/mod.rs index bf5fd01c8e..f93e841a6f 100644 --- a/clash-verge-rev/src-tauri/src/enhance/mod.rs +++ b/clash-verge-rev/src-tauri/src/enhance/mod.rs @@ -136,17 +136,15 @@ pub fn enhance() -> (Mapping, Vec, HashMap) { .map(|(_, c)| c) .for_each(|item| { log::debug!(target: "app", "run builtin script {}", item.uid); - - match item.data { - ChainType::Script(script) => match use_script(script, config.to_owned()) { + if let ChainType::Script(script) = item.data { + match use_script(script, config.to_owned()) { Ok((res_config, _)) => { config = res_config; } Err(err) => { log::error!(target: "app", "builtin script error `{err}`"); } - }, - _ => {} + } } }); } @@ -155,7 +153,7 @@ pub fn enhance() -> (Mapping, Vec, HashMap) { config = use_sort(config); let mut exists_set = HashSet::new(); - exists_set.extend(exists_keys.into_iter()); + exists_set.extend(exists_keys); exists_keys = exists_set.into_iter().collect(); (config, exists_keys, result_map) diff --git a/clash-verge-rev/src-tauri/src/enhance/script.rs b/clash-verge-rev/src-tauri/src/enhance/script.rs index 0d4e529a7a..8c6781543e 100644 --- a/clash-verge-rev/src-tauri/src/enhance/script.rs +++ b/clash-verge-rev/src-tauri/src/enhance/script.rs @@ -16,7 +16,7 @@ pub fn use_script(script: String, config: Mapping) -> Result<(Mapping, Vec<(Stri 2, NativeFunction::from_closure( move |_: &JsValue, args: &[JsValue], context: &mut Context| { - let level = args.get(0).unwrap().to_string(context)?; + let level = args.first().unwrap().to_string(context)?; let level = level.to_std_string().unwrap(); let data = args.get(1).unwrap().to_string(context)?; let data = data.to_std_string().unwrap(); diff --git a/clash-verge-rev/src-tauri/src/feat.rs b/clash-verge-rev/src-tauri/src/feat.rs index 8f0f2efd81..8ac9f09526 100644 --- a/clash-verge-rev/src-tauri/src/feat.rs +++ b/clash-verge-rev/src-tauri/src/feat.rs @@ -106,7 +106,7 @@ pub fn toggle_tun_mode() { pub async fn patch_clash(patch: Mapping) -> Result<()> { Config::clash().draft().patch_config(patch.clone()); - match { + let res = { let redir_port = patch.get("redir-port"); let tproxy_port = patch.get("tproxy-port"); let mixed_port = patch.get("mixed-port"); @@ -156,7 +156,8 @@ pub async fn patch_clash(patch: Mapping) -> Result<()> { Config::runtime().latest().patch_config(patch); >::Ok(()) - } { + }; + match res { Ok(()) => { Config::clash().apply(); Config::clash().data().save_config()?; @@ -193,7 +194,7 @@ pub async fn patch_verge(patch: IVerge) -> Result<()> { let tproxy_enabled = patch.verge_tproxy_enabled; let socks_enabled = patch.verge_socks_enabled; let http_enabled = patch.verge_http_enabled; - match { + let res = { let service_mode = patch.enable_service_mode; if service_mode.is_some() { @@ -255,7 +256,8 @@ pub async fn patch_verge(patch: IVerge) -> Result<()> { } >::Ok(()) - } { + }; + match res { Ok(()) => { Config::verge().apply(); Config::verge().data().save_file()?; diff --git a/clash-verge-rev/src-tauri/src/utils/init.rs b/clash-verge-rev/src-tauri/src/utils/init.rs index b81a12da45..8c7082b960 100644 --- a/clash-verge-rev/src-tauri/src/utils/init.rs +++ b/clash-verge-rev/src-tauri/src/utils/init.rs @@ -137,7 +137,7 @@ pub fn delete_log() -> Result<()> { } let service_log_dir = log_dir.join("service"); - for file in fs::read_dir(&service_log_dir)?.flatten() { + for file in fs::read_dir(service_log_dir)?.flatten() { let _ = process_file(file); } @@ -318,11 +318,11 @@ pub fn startup_script() -> Result<()> { Some(dir) => { let _ = Command::new(shell) .current_dir(dir.to_path_buf()) - .args(&[path]) + .args([path]) .output()?; } None => { - let _ = Command::new(shell).args(&[path]).output()?; + let _ = Command::new(shell).args([path]).output()?; } } } diff --git a/clash-verge-rev/src-tauri/src/utils/resolve.rs b/clash-verge-rev/src-tauri/src/utils/resolve.rs index 7bfa9c140d..666a8bc7b3 100644 --- a/clash-verge-rev/src-tauri/src/utils/resolve.rs +++ b/clash-verge-rev/src-tauri/src/utils/resolve.rs @@ -99,9 +99,12 @@ pub fn resolve_setup(app: &mut App) { let argvs: Vec = std::env::args().collect(); if argvs.len() > 1 { - tauri::async_runtime::block_on(async { - resolve_scheme(argvs[1].to_owned()).await; - }); + let param = argvs[1].as_str(); + if param.starts_with("clash:") { + tauri::async_runtime::block_on(async { + resolve_scheme(argvs[1].to_owned()).await; + }); + } } } @@ -205,7 +208,6 @@ pub fn create_window(app_handle: &AppHandle) { } Err(_) => { log::error!("failed to create window"); - return; } } } diff --git a/clash-verge-rev/src-tauri/src/utils/server.rs b/clash-verge-rev/src-tauri/src/utils/server.rs index a3a53ef5f4..daf9fb8650 100644 --- a/clash-verge-rev/src-tauri/src/utils/server.rs +++ b/clash-verge-rev/src-tauri/src/utils/server.rs @@ -30,7 +30,7 @@ pub fn check_singleton() -> Result<()> { let param = argvs[1].as_str(); if param.starts_with("clash:") { reqwest::get(format!( - "http://127.0.0.1:{port}/commands/scheme?param={param}" + "http://127.0.0.1:{port}/commands/scheme?param={param}" )) .await? .text() diff --git a/clash-verge-rev/src-tauri/tauri.conf.json b/clash-verge-rev/src-tauri/tauri.conf.json index 84d7d9a944..b5a1f8cefd 100644 --- a/clash-verge-rev/src-tauri/tauri.conf.json +++ b/clash-verge-rev/src-tauri/tauri.conf.json @@ -2,7 +2,7 @@ "$schema": "../node_modules/@tauri-apps/cli/schema.json", "package": { "productName": "Clash Verge", - "version": "1.6.5" + "version": "1.6.6" }, "build": { "distDir": "../dist", @@ -22,8 +22,9 @@ "icons/icon.ico" ], "resources": ["resources"], + "publisher": "Clash Verge Rev", "externalBin": ["sidecar/clash-meta", "sidecar/clash-meta-alpha"], - "copyright": "© 2022 zzzgydi All Rights Reserved", + "copyright": "GNU General Public License v3.0", "category": "DeveloperTool", "shortDescription": "A Clash Meta GUI based on tauri.", "longDescription": "A Clash Meta GUI based on tauri." diff --git a/hysteria/app/cmd/server.go b/hysteria/app/cmd/server.go index 2bf4efe136..d2c9f4cf73 100644 --- a/hysteria/app/cmd/server.go +++ b/hysteria/app/cmd/server.go @@ -16,6 +16,12 @@ import ( "time" "github.com/caddyserver/certmagic" + "github.com/libdns/cloudflare" + "github.com/libdns/duckdns" + "github.com/libdns/gandi" + "github.com/libdns/godaddy" + "github.com/libdns/namedotcom" + "github.com/libdns/vultr" "github.com/mholt/acmez/acme" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -79,15 +85,38 @@ type serverConfigTLS struct { } type serverConfigACME struct { - Domains []string `mapstructure:"domains"` - Email string `mapstructure:"email"` - CA string `mapstructure:"ca"` - DisableHTTP bool `mapstructure:"disableHTTP"` - DisableTLSALPN bool `mapstructure:"disableTLSALPN"` - ListenHost string `mapstructure:"listenHost"` - AltHTTPPort int `mapstructure:"altHTTPPort"` - AltTLSALPNPort int `mapstructure:"altTLSALPNPort"` - Dir string `mapstructure:"dir"` + // Common fields + Domains []string `mapstructure:"domains"` + Email string `mapstructure:"email"` + CA string `mapstructure:"ca"` + ListenHost string `mapstructure:"listenHost"` + Dir string `mapstructure:"dir"` + + // Type selection + Type string `mapstructure:"type"` + HTTP serverConfigACMEHTTP `mapstructure:"http"` + TLS serverConfigACMETLS `mapstructure:"tls"` + DNS serverConfigACMEDNS `mapstructure:"dns"` + + // Legacy fields for backwards compatibility + // Only applicable when Type is empty + DisableHTTP bool `mapstructure:"disableHTTP"` + DisableTLSALPN bool `mapstructure:"disableTLSALPN"` + AltHTTPPort int `mapstructure:"altHTTPPort"` + AltTLSALPNPort int `mapstructure:"altTLSALPNPort"` +} + +type serverConfigACMEHTTP struct { + AltPort int `mapstructure:"altPort"` +} + +type serverConfigACMETLS struct { + AltPort int `mapstructure:"altPort"` +} + +type serverConfigACMEDNS struct { + Name string `mapstructure:"name"` + Config map[string]string `mapstructure:"config"` } type serverConfigQUIC struct { @@ -292,14 +321,10 @@ func (c *serverConfig) fillTLSConfig(hyConfig *server.Config) error { Logger: logger, } cmIssuer := certmagic.NewACMEIssuer(cmCfg, certmagic.ACMEIssuer{ - Email: c.ACME.Email, - Agreed: true, - DisableHTTPChallenge: c.ACME.DisableHTTP, - DisableTLSALPNChallenge: c.ACME.DisableTLSALPN, - ListenHost: c.ACME.ListenHost, - AltHTTPPort: c.ACME.AltHTTPPort, - AltTLSALPNPort: c.ACME.AltTLSALPNPort, - Logger: logger, + Email: c.ACME.Email, + Agreed: true, + ListenHost: c.ACME.ListenHost, + Logger: logger, }) switch strings.ToLower(c.ACME.CA) { case "letsencrypt", "le", "": @@ -313,8 +338,82 @@ func (c *serverConfig) fillTLSConfig(hyConfig *server.Config) error { } cmIssuer.ExternalAccount = eab default: - return configError{Field: "acme.ca", Err: errors.New("unknown CA")} + return configError{Field: "acme.ca", Err: errors.New("unsupported CA")} } + + switch strings.ToLower(c.ACME.Type) { + case "http": + cmIssuer.DisableHTTPChallenge = false + cmIssuer.DisableTLSALPNChallenge = true + cmIssuer.DNS01Solver = nil + cmIssuer.AltHTTPPort = c.ACME.HTTP.AltPort + case "tls": + cmIssuer.DisableHTTPChallenge = true + cmIssuer.DisableTLSALPNChallenge = false + cmIssuer.DNS01Solver = nil + cmIssuer.AltTLSALPNPort = c.ACME.TLS.AltPort + case "dns": + cmIssuer.DisableHTTPChallenge = true + cmIssuer.DisableTLSALPNChallenge = true + if c.ACME.DNS.Name == "" { + return configError{Field: "acme.dns.name", Err: errors.New("empty DNS provider name")} + } + if c.ACME.DNS.Config == nil { + return configError{Field: "acme.dns.config", Err: errors.New("empty DNS provider config")} + } + switch strings.ToLower(c.ACME.DNS.Name) { + case "cloudflare": + cmIssuer.DNS01Solver = &certmagic.DNS01Solver{ + DNSProvider: &cloudflare.Provider{ + APIToken: c.ACME.DNS.Config["cloudflare_api_token"], + }, + } + case "duckdns": + cmIssuer.DNS01Solver = &certmagic.DNS01Solver{ + DNSProvider: &duckdns.Provider{ + APIToken: c.ACME.DNS.Config["duckdns_api_token"], + OverrideDomain: c.ACME.DNS.Config["duckdns_override_domain"], + }, + } + case "gandi": + cmIssuer.DNS01Solver = &certmagic.DNS01Solver{ + DNSProvider: &gandi.Provider{ + BearerToken: c.ACME.DNS.Config["gandi_api_token"], + }, + } + case "godaddy": + cmIssuer.DNS01Solver = &certmagic.DNS01Solver{ + DNSProvider: &godaddy.Provider{ + APIToken: c.ACME.DNS.Config["godaddy_api_token"], + }, + } + case "namedotcom": + cmIssuer.DNS01Solver = &certmagic.DNS01Solver{ + DNSProvider: &namedotcom.Provider{ + Token: c.ACME.DNS.Config["namedotcom_token"], + User: c.ACME.DNS.Config["namedotcom_user"], + Server: c.ACME.DNS.Config["namedotcom_server"], + }, + } + case "vultr": + cmIssuer.DNS01Solver = &certmagic.DNS01Solver{ + DNSProvider: &vultr.Provider{ + APIToken: c.ACME.DNS.Config["vultr_api_token"], + }, + } + default: + return configError{Field: "acme.dns.name", Err: errors.New("unsupported DNS provider")} + } + case "": + // Legacy compatibility mode + cmIssuer.DisableHTTPChallenge = c.ACME.DisableHTTP + cmIssuer.DisableTLSALPNChallenge = c.ACME.DisableTLSALPN + cmIssuer.AltHTTPPort = c.ACME.AltHTTPPort + cmIssuer.AltTLSALPNPort = c.ACME.AltTLSALPNPort + default: + return configError{Field: "acme.type", Err: errors.New("unsupported ACME type")} + } + cmCfg.Issuers = []certmagic.Issuer{cmIssuer} cmCache := certmagic.NewCache(certmagic.CacheOptions{ GetConfigForCert: func(cert certmagic.Certificate) (*certmagic.Config, error) { diff --git a/hysteria/app/cmd/server_test.go b/hysteria/app/cmd/server_test.go index 935a998c60..d81a61a095 100644 --- a/hysteria/app/cmd/server_test.go +++ b/hysteria/app/cmd/server_test.go @@ -34,13 +34,28 @@ func TestServerConfig(t *testing.T) { "sub1.example.com", "sub2.example.com", }, - Email: "haha@cringe.net", - CA: "zero", + Email: "haha@cringe.net", + CA: "zero", + ListenHost: "127.0.0.9", + Dir: "random_dir", + Type: "dns", + HTTP: serverConfigACMEHTTP{ + AltPort: 8888, + }, + TLS: serverConfigACMETLS{ + AltPort: 44333, + }, + DNS: serverConfigACMEDNS{ + Name: "gomommy", + Config: map[string]string{ + "key1": "value1", + "key2": "value2", + }, + }, DisableHTTP: true, DisableTLSALPN: true, - AltHTTPPort: 9980, - AltTLSALPNPort: 9443, - Dir: "random_dir", + AltHTTPPort: 8080, + AltTLSALPNPort: 4433, }, QUIC: serverConfigQUIC{ InitStreamReceiveWindow: 77881, diff --git a/hysteria/app/cmd/server_test.yaml b/hysteria/app/cmd/server_test.yaml index 1ab5d5f6ef..86a2dcf2ae 100644 --- a/hysteria/app/cmd/server_test.yaml +++ b/hysteria/app/cmd/server_test.yaml @@ -15,11 +15,22 @@ acme: - sub2.example.com email: haha@cringe.net ca: zero + listenHost: 127.0.0.9 + dir: random_dir + type: dns + http: + altPort: 8888 + tls: + altPort: 44333 + dns: + name: gomommy + config: + key1: value1 + key2: value2 disableHTTP: true disableTLSALPN: true - altHTTPPort: 9980 - altTLSALPNPort: 9443 - dir: random_dir + altHTTPPort: 8080 + altTLSALPNPort: 4433 quic: initStreamReceiveWindow: 77881 diff --git a/hysteria/app/go.mod b/hysteria/app/go.mod index 692b0661e6..46cf92ca4a 100644 --- a/hysteria/app/go.mod +++ b/hysteria/app/go.mod @@ -8,12 +8,18 @@ require ( github.com/apernet/hysteria/extras/v2 v2.0.0-00010101000000-000000000000 github.com/apernet/sing-tun v0.2.6-0.20240323130332-b9f6511036ad github.com/caddyserver/certmagic v0.17.2 + github.com/libdns/cloudflare v0.1.1 + github.com/libdns/duckdns v0.2.0 + github.com/libdns/gandi v1.0.3 + github.com/libdns/godaddy v1.0.3 + github.com/libdns/namedotcom v0.3.3 + github.com/libdns/vultr v1.0.0 github.com/mdp/qrterminal/v3 v3.1.1 github.com/mholt/acmez v1.0.4 github.com/sagernet/sing v0.3.2 github.com/spf13/cobra v1.7.0 github.com/spf13/viper v1.15.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301 go.uber.org/zap v1.24.0 golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 @@ -27,30 +33,38 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/go-querystring v1.1.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-retryablehttp v0.7.6 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/klauspost/cpuid/v2 v2.1.1 // indirect - github.com/libdns/libdns v0.2.1 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/libdns/libdns v0.2.2 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/miekg/dns v1.1.55 // indirect + github.com/miekg/dns v1.1.59 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/onsi/ginkgo/v2 v2.9.5 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 // indirect github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/txthinking/runnergroup v0.0.0-20210608031112-152c7c4432bf // indirect github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 // indirect + github.com/vultr/govultr/v3 v3.6.4 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/mock v0.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -58,10 +72,12 @@ require ( golang.org/x/crypto v0.23.0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.25.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/tools v0.21.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/qr v0.2.0 // indirect diff --git a/hysteria/app/go.sum b/hysteria/app/go.sum index 5527a24739..8f074986c2 100644 --- a/hysteria/app/go.sum +++ b/hysteria/app/go.sum @@ -59,6 +59,7 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -68,6 +69,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= @@ -106,8 +109,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -121,6 +124,8 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -141,6 +146,12 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-retryablehttp v0.7.6 h1:TwRYfx2z2C4cLbXmT8I5PgP/xmuqASDyiVuGYfs9GZM= +github.com/hashicorp/go-retryablehttp v0.7.6/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4= @@ -158,27 +169,44 @@ github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdy github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/libdns/libdns v0.2.1 h1:Wu59T7wSHRgtA0cfxC+n1c/e+O3upJGWytknkmFEDis= -github.com/libdns/libdns v0.2.1/go.mod h1:yQCXzk1lEZmmCPa857bnk4TsOiqYasqpyOEeSObbb40= +github.com/libdns/cloudflare v0.1.1 h1:FVPfWwP8zZCqj268LZjmkDleXlHPlFU9KC4OJ3yn054= +github.com/libdns/cloudflare v0.1.1/go.mod h1:9VK91idpOjg6v7/WbjkEW49bSCxj00ALesIFDhJ8PBU= +github.com/libdns/duckdns v0.2.0 h1:vd3pE09G2qTx1Zh1o3LmrivWSByD3Z5FbL7csX5vDgE= +github.com/libdns/duckdns v0.2.0/go.mod h1:jCQ/7+qvhLK39+28qXvKEYGBBvmHBCmIwNqdJTCUmVs= +github.com/libdns/gandi v1.0.3 h1:FIvipWOg/O4zi75fPRmtcolRKqI6MgrbpFy2p5KYdUk= +github.com/libdns/gandi v1.0.3/go.mod h1:G6dw58Xnji2xX+lb+uZxGbtmfxKllm1CGHE2bOPG3WA= +github.com/libdns/godaddy v1.0.3 h1:PX1FOYDQ1HGQzz8mVOmtwm3aa6Sv5MwCkNzivUUTA44= +github.com/libdns/godaddy v1.0.3/go.mod h1:vuKWUXnvblDvcaiRwutOoLl7DuB21x8tI06owsF/JTM= +github.com/libdns/libdns v0.2.0/go.mod h1:yQCXzk1lEZmmCPa857bnk4TsOiqYasqpyOEeSObbb40= +github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s= +github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ= +github.com/libdns/namedotcom v0.3.3 h1:R10C7+IqQGVeC4opHHMiFNBxdNBg1bi65ZwqLESl+jE= +github.com/libdns/namedotcom v0.3.3/go.mod h1:GbYzsAF2yRUpI0WgIK5fs5UX+kDVUPaYCFLpTnKQm0s= +github.com/libdns/vultr v1.0.0 h1:W8B4+k2bm9ro3bZLSZV9hMOQI+uO6Svu+GmD+Olz7ZI= +github.com/libdns/vultr v1.0.0/go.mod h1:8K1HJExcbeHS4YPkFHRZpqpXZzZ+DZAA0m0VikJgEqk= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mdp/qrterminal/v3 v3.1.1 h1:cIPwg3QU0OIm9+ce/lRfWXhPwEjOSKwk3HBwL3HBTyc= github.com/mdp/qrterminal/v3 v3.1.1/go.mod h1:5lJlXe7Jdr8wlPDdcsJttv1/knsRgzXASyr4dcGZqNU= github.com/mholt/acmez v1.0.4 h1:N3cE4Pek+dSolbsofIkAYz6H1d3pE+2G0os7QHslf80= github.com/mholt/acmez v1.0.4/go.mod h1:qFGLZ4u+ehWINeJZjzPlsnjJBCPAADWTcIqE/7DAYQY= +github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.51/go.mod h1:2Z9d3CP1LQWihRZUf29mQ19yDThaI4DAYzte2CaQW5c= -github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= -github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= +github.com/miekg/dns v1.1.59/go.mod h1:nZpewl5p6IvctfgrckopVx2OlSEHPRO/U4SYkRklrEk= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= @@ -187,6 +215,7 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -197,8 +226,9 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 h1:iL5gZI3uFp0X6EslacyapiRz7LLSJyr4RajF/BhMVyE= github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= @@ -220,8 +250,9 @@ github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -231,8 +262,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/txthinking/runnergroup v0.0.0-20210608031112-152c7c4432bf h1:7PflaKRtU4np/epFxRXlFhlzLXZzKFrH5/I4so5Ove0= @@ -241,6 +272,8 @@ github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301 h1:d/Wr/Vl/wiJHc github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301/go.mod h1:ntmMHL/xPq1WLeKiw8p/eRATaae6PiVRNipHFJxI8PM= github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 h1:gga7acRE695APm9hlsSMoOoE65U4/TcqNj90mc69Rlg= github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vultr/govultr/v3 v3.6.4 h1:unvY9eXlBw667ECQZDbBDOIaWB8wkk6Bx+yB0IMKXJ4= +github.com/vultr/govultr/v3 v3.6.4/go.mod h1:rt9v2x114jZmmLAE/h5N5jnxTmsK9ewwS2oQZ0UBQzM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -331,6 +364,7 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -365,6 +399,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -389,6 +425,7 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -462,6 +499,7 @@ golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -586,12 +624,12 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= diff --git a/hysteria/core/go.mod b/hysteria/core/go.mod index aacf34cf87..66a89380b4 100644 --- a/hysteria/core/go.mod +++ b/hysteria/core/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/apernet/quic-go v0.44.1-0.20240520215222-bb2e53664023 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/goleak v1.2.1 golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 golang.org/x/time v0.5.0 @@ -13,13 +13,14 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/onsi/ginkgo/v2 v2.9.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect go.uber.org/mock v0.4.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/mod v0.17.0 // indirect @@ -27,7 +28,7 @@ require ( golang.org/x/sys v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/tools v0.21.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect + google.golang.org/protobuf v1.34.1 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/hysteria/core/go.sum b/hysteria/core/go.sum index d46bf432b0..96fd988507 100644 --- a/hysteria/core/go.sum +++ b/hysteria/core/go.sum @@ -11,19 +11,17 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= @@ -32,15 +30,11 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= @@ -64,11 +58,9 @@ golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/hysteria/extras/go.mod b/hysteria/extras/go.mod index 0cfa7321ba..efc111111b 100644 --- a/hysteria/extras/go.mod +++ b/hysteria/extras/go.mod @@ -6,24 +6,27 @@ require ( github.com/apernet/hysteria/core/v2 v2.0.0-00010101000000-000000000000 github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6 github.com/hashicorp/golang-lru/v2 v2.0.5 - github.com/miekg/dns v1.1.55 - github.com/stretchr/testify v1.8.4 + github.com/miekg/dns v1.1.59 + github.com/stretchr/testify v1.9.0 github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301 golang.org/x/crypto v0.23.0 golang.org/x/net v0.25.0 - google.golang.org/protobuf v1.33.0 + google.golang.org/protobuf v1.34.1 ) require ( github.com/apernet/quic-go v0.44.1-0.20240520215222-bb2e53664023 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/onsi/ginkgo/v2 v2.9.5 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/txthinking/runnergroup v0.0.0-20210608031112-152c7c4432bf // indirect go.uber.org/mock v0.4.0 // indirect golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect @@ -32,6 +35,7 @@ require ( golang.org/x/sys v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/tools v0.21.0 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/hysteria/extras/go.sum b/hysteria/extras/go.sum index 898bff331a..4ef8205011 100644 --- a/hysteria/extras/go.sum +++ b/hysteria/extras/go.sum @@ -12,8 +12,7 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= @@ -21,13 +20,11 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4= github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/miekg/dns v1.1.51/go.mod h1:2Z9d3CP1LQWihRZUf29mQ19yDThaI4DAYzte2CaQW5c= -github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= -github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= @@ -38,15 +35,11 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/txthinking/runnergroup v0.0.0-20210608031112-152c7c4432bf h1:7PflaKRtU4np/epFxRXlFhlzLXZzKFrH5/I4so5Ove0= github.com/txthinking/runnergroup v0.0.0-20210608031112-152c7c4432bf/go.mod h1:CLUSJbazqETbaR+i0YAhXBICV9TrKH93pziccMhmhpM= github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301 h1:d/Wr/Vl/wiJHc3AHYbYs5I3PucJvRuw3SvbmlIRf+oM= @@ -104,11 +97,9 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/hysteria/go.work.sum b/hysteria/go.work.sum index eb36f69ecb..4370b0e538 100644 --- a/hysteria/go.work.sum +++ b/hysteria/go.work.sum @@ -7,6 +7,8 @@ cloud.google.com/go/compute v1.14.0 h1:hfm2+FfxVmnRlh6LpB7cg1ZNU+5edAHmW679JePzt cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/firestore v1.9.0 h1:IBlRyxgGySXu5VuW0RgGFlTtLukSnNkpDiEOMkQkmpA= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= @@ -53,6 +55,8 @@ github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzA github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415 h1:q1oJaUPdmpDm/VyXosjgPgr6wS7c5iV2p0PwJD73bUI= @@ -83,7 +87,9 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4er github.com/golang/lint v0.0.0-20180702182130-06c8688daad7 h1:2hRPrmiwPrp3fQX967rNJIhQPtiGXdlQWAxKbKw3VHA= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= @@ -108,8 +114,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.5.0 h1:WcmKMm43DR7RdtlkEXQJyo5ws8iTp98 github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/hashicorp/consul/api v1.18.0 h1:R7PPNzTCeN6VuQNDwwhZWJvzCtGSrNpJqfb22h3yH9g= github.com/hashicorp/consul/api v1.18.0/go.mod h1:owRRGJ9M5xReDC5nfT8FTJrNAPbT4NM6p/k+d03q2v4= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= @@ -123,6 +127,8 @@ github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfE github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1 h1:ujPKutqRlJtcfWk6toYVYagwra7HQHbXOaS171b4Tg8= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= +github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= @@ -136,8 +142,6 @@ github.com/lunixbochs/vtclean v1.0.0 h1:xu2sLAri4lGiovBDQKxl5mrXyESr3gUr5m5SM5+L github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe h1:W/GaMY0y69G4cFlmsC6B9sbuo2fP8OFP1ABjt4kPz+w= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= @@ -151,12 +155,17 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5 h1:8Q0qkMVC/MmWkpIdlvZgcv2o2jrlF6zqVOh7W5YHdMA= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86 h1:D6paGObi5Wud7xg83MaEFyjxQB1W5bz5d0IFppr+ymk= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab h1:eFXv9Nu1lGbrNbj619aWwZfVF5HBrm9Plte8aNptuTI= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/openzipkin/zipkin-go v0.1.1 h1:A/ADD6HaPnAKj3yS7HjGHRK77qi41Hi0DirOOIQAeIw= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -252,8 +261,10 @@ golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -263,6 +274,7 @@ golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= @@ -270,6 +282,7 @@ golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852 h1:xYq6+9AtI+xP3M4r0N1hCkHrInHDBohhquRgx9Kk6gI= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -278,6 +291,7 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= @@ -305,6 +319,7 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= @@ -326,13 +341,15 @@ google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9M google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk= google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919 h1:tmXTu+dfa+d9Evp8NpJdgOy6+rt8/x4yG7qPBrtNfLY= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts deleted file mode 100644 index 27ef19c46d..0000000000 --- a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0 OR MIT) -/* - * Copyright (C) 2022 MediaTek Inc. - * Author: Sam.Shih - */ - -/dts-v1/; -#include "mt7988a-rfb-spim-nand.dtsi" -#include -#include - -/ { - model = "MediaTek MT7988A DSA 10G SPIM-NAND RFB"; - compatible = "mediatek,mt7988a-dsa-10g-spim-snand", - "mediatek,mt7988a-rfb-snand", - "mediatek,mt7988"; - - chosen { - bootargs = "console=ttyS0,115200n1 loglevel=8 \ - earlycon=uart8250,mmio32,0x11000000 \ - pci=pcie_bus_perf"; - }; - - memory { - reg = <0 0x40000000 0 0x40000000>; - }; -}; - -ð { - pinctrl-0 = <&mdio0_pins>; - pinctrl-names = "default"; - status = "okay"; -}; - -&gmac0 { - status = "okay"; -}; - -&gmac1 { - status = "okay"; - phy-mode = "internal"; - phy-connection-type = "internal"; - phy = <&int_2p5g_phy>; -}; - -&gmac2 { - status = "okay"; - phy-mode = "usxgmii"; - phy-connection-type = "usxgmii"; - phy = <&phy8>; -}; - -&mdio_bus { - /* external Aquantia AQR113C */ - phy0: ethernet-phy@0 { - reg = <0>; - compatible = "ethernet-phy-ieee802.3-c45"; - reset-gpios = <&pio 72 1>; - reset-assert-us = <100000>; - reset-deassert-us = <221000>; - }; - - /* external Aquantia AQR113C */ - phy8: ethernet-phy@8 { - reg = <8>; - compatible = "ethernet-phy-ieee802.3-c45"; - reset-gpios = <&pio 71 1>; - reset-assert-us = <100000>; - reset-deassert-us = <221000>; - }; - - /* external Maxlinear GPY211C */ - phy5: ethernet-phy@5 { - reg = <5>; - compatible = "ethernet-phy-ieee802.3-c45"; - phy-mode = "2500base-x"; - }; - - /* external Maxlinear GPY211C */ - phy13: ethernet-phy@13 { - reg = <13>; - compatible = "ethernet-phy-ieee802.3-c45"; - phy-mode = "2500base-x"; - }; -}; - -&int_2p5g_phy { - pinctrl-names = "i2p5gbe-led"; - pinctrl-0 = <&i2p5gbe_led0_pins>; -}; - -&switch { - status = "okay"; -}; - -&gsw_phy0 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe0_led0_pins>; -}; - -&gsw_phy0_led0 { - status = "okay"; - color = ; -}; - -&gsw_phy1 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe1_led0_pins>; -}; - -&gsw_phy1_led0 { - status = "okay"; - color = ; -}; - -&gsw_phy2 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe2_led0_pins>; -}; - -&gsw_phy2_led0 { - status = "okay"; - color = ; -}; - -&gsw_phy3 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe3_led0_pins>; -}; - -&gsw_phy3_led0 { - status = "okay"; - color = ; -}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso new file mode 100644 index 0000000000..3f8ac2ae38 --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2021 MediaTek Inc. + * Author: Frank Wunderlich + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mmc0>; + __overlay__ { + pinctrl-names = "default", "state_uhs"; + pinctrl-0 = <&mmc0_pins_emmc_51>; + pinctrl-1 = <&mmc0_pins_emmc_51>; + bus-width = <8>; + max-frequency = <200000000>; + cap-mmc-highspeed; + mmc-hs200-1_8v; + mmc-hs400-1_8v; + hs400-ds-delay = <0x12814>; + vqmmc-supply = <®_1p8v>; + vmmc-supply = <®_3p3v>; + non-removable; + no-sd; + no-sdio; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso new file mode 100644 index 0000000000..d21a61ad19 --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Aquantia AQR113C */ + phy0: ethernet-phy@0 { + reg = <0>; + compatible = "ethernet-phy-ieee802.3-c45"; + reset-gpios = <&pio 72 GPIO_ACTIVE_LOW>; + reset-assert-us = <100000>; + reset-deassert-us = <221000>; + }; + }; + }; + + fragment@1 { + target = <&gmac1>; + __overlay__ { + phy-mode = "usxgmii"; + phy-connection-type = "usxgmii"; + phy = <&phy0>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso new file mode 100644 index 0000000000..86ab7566dc --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&gmac1>; + __overlay__ { + phy-mode = "internal"; + phy-connection-type = "internal"; + phy = <&int_2p5g_phy>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&int_2p5g_phy>; + __overlay__ { + pinctrl-names = "i2p5gbe-led"; + pinctrl-0 = <&i2p5gbe_led0_pins>; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso new file mode 100644 index 0000000000..34a23bbd7e --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Maxlinear GPY211C */ + phy13: ethernet-phy@13 { + reg = <13>; + compatible = "ethernet-phy-ieee802.3-c45"; + phy-mode = "2500base-x"; + }; + }; + }; + + fragment@1 { + target = <&gmac1>; + __overlay__ { + phy-mode = "2500base-x"; + phy-connection-type = "2500base-x"; + phy = <&phy13>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso new file mode 100644 index 0000000000..ba40a119cb --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&i2c2>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_0_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target-path = "/"; + __overlay__ { + sfp_esp1: sfp@1 { + compatible = "sff,sfp"; + i2c-bus = <&i2c2>; + mod-def0-gpios = <&pio 82 GPIO_ACTIVE_LOW>; + los-gpios = <&pio 81 GPIO_ACTIVE_HIGH>; + tx-disable-gpios = <&pio 36 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <3000>; + }; + }; + }; + + fragment@2 { + target = <&gmac1>; + __overlay__ { + phy-mode = "10gbase-r"; + managed = "in-band-status"; + sfp = <&sfp_esp1>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso new file mode 100644 index 0000000000..140391fc45 --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Aquantia AQR113C */ + phy8: ethernet-phy@8 { + reg = <8>; + compatible = "ethernet-phy-ieee802.3-c45"; + reset-gpios = <&pio 71 GPIO_ACTIVE_LOW>; + reset-assert-us = <100000>; + reset-deassert-us = <221000>; + }; + }; + }; + + fragment@1 { + target = <&gmac2>; + __overlay__ { + phy-mode = "usxgmii"; + phy-connection-type = "usxgmii"; + phy = <&phy8>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso new file mode 100644 index 0000000000..19e0b2799f --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Maxlinear GPY211C */ + phy5: ethernet-phy@5 { + reg = <5>; + compatible = "ethernet-phy-ieee802.3-c45"; + phy-mode = "2500base-x"; + }; + }; + }; + + fragment@1 { + target = <&gmac2>; + __overlay__ { + phy-mode = "2500base-x"; + phy-connection-type = "2500base-x"; + phy = <&phy5>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso new file mode 100644 index 0000000000..b9aabd2726 --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&i2c1>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_sfp_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target-path = "/"; + __overlay__ { + sfp_esp0: sfp@0 { + compatible = "sff,sfp"; + i2c-bus = <&i2c1>; + mod-def0-gpios = <&pio 35 GPIO_ACTIVE_LOW>; + los-gpios = <&pio 33 GPIO_ACTIVE_HIGH>; + tx-disable-gpios = <&pio 29 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <3000>; + }; + }; + }; + + fragment@2 { + target = <&gmac2>; + __overlay__ { + phy-mode = "10gbase-r"; + managed = "in-band-status"; + sfp = <&sfp_esp0>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso new file mode 100644 index 0000000000..04472cc12d --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2023 MediaTek Inc. + * Author: Frank Wunderlich + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@1 { + target-path = <&mmc0>; + __overlay__ { + pinctrl-names = "default", "state_uhs"; + pinctrl-0 = <&mmc0_pins_sdcard>; + pinctrl-1 = <&mmc0_pins_sdcard>; + cd-gpios = <&pio 69 GPIO_ACTIVE_LOW>; + bus-width = <4>; + max-frequency = <52000000>; + cap-sd-highspeed; + vmmc-supply = <®_3p3v>; + vqmmc-supply = <®_3p3v>; + no-mmc; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso new file mode 100644 index 0000000000..6180165177 --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&snand>; + __overlay__ { + status = "okay"; + + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <52000000>; + spi-tx-buswidth = <4>; + spi-rx-buswidth = <4>; + mediatek,nmbm; + mediatek,bmt-max-ratio = <1>; + mediatek,bmt-max-reserved-blocks = <64>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "BL2"; + reg = <0x00000 0x0100000>; + read-only; + }; + + partition@100000 { + label = "u-boot-env"; + reg = <0x0100000 0x0080000>; + }; + + partition@180000 { + label = "Factory"; + reg = <0x180000 0x0400000>; + }; + + partition@580000 { + label = "FIP"; + reg = <0x580000 0x0200000>; + }; + + partition@780000 { + label = "ubi"; + reg = <0x780000 0x7080000>; + }; + }; + }; + }; + }; + + fragment@1 { + target = <&bch>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtsi b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtsi deleted file mode 100644 index e4c0571250..0000000000 --- a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtsi +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0 OR MIT) -/* - * Copyright (C) 2022 MediaTek Inc. - * Author: Sam.Shih - */ - -/dts-v1/; -#include "mt7988a-rfb.dtsi" - -&pio { - spi0_flash_pins: spi0-pins { - mux { - function = "spi"; - groups = "spi0", "spi0_wp_hold"; - }; - }; -}; - -&spi0 { - pinctrl-names = "default"; - pinctrl-0 = <&spi0_flash_pins>; - status = "okay"; - - spi_nand: spi_nand@0 { - compatible = "spi-nand"; - reg = <0>; - spi-max-frequency = <52000000>; - spi-tx-buswidth = <4>; - spi-rx-buswidth = <4>; - }; - -}; - -&spi_nand { - mediatek,nmbm; - mediatek,bmt-max-ratio = <1>; - mediatek,bmt-max-reserved-blocks = <64>; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - partition@0 { - label = "BL2"; - reg = <0x00000 0x0100000>; - read-only; - }; - - partition@100000 { - label = "u-boot-env"; - reg = <0x0100000 0x0080000>; - }; - - factory: partition@180000 { - label = "Factory"; - reg = <0x180000 0x0400000>; - }; - - partition@580000 { - label = "FIP"; - reg = <0x580000 0x0200000>; - }; - - partition@780000 { - label = "ubi"; - reg = <0x780000 0x7080000>; - }; - }; -}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso new file mode 100644 index 0000000000..e63436fa55 --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_flash_pins>; + status = "okay"; + + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <52000000>; + spi-tx-buswidth = <4>; + spi-rx-buswidth = <4>; + mediatek,nmbm; + mediatek,bmt-max-ratio = <1>; + mediatek,bmt-max-reserved-blocks = <64>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "BL2"; + reg = <0x00000 0x0100000>; + read-only; + }; + + partition@100000 { + label = "u-boot-env"; + reg = <0x0100000 0x0080000>; + }; + + partition@180000 { + label = "Factory"; + reg = <0x180000 0x0400000>; + }; + + partition@580000 { + label = "FIP"; + reg = <0x580000 0x0200000>; + }; + + partition@780000 { + label = "ubi"; + reg = <0x780000 0x7080000>; + }; + }; + }; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso new file mode 100644 index 0000000000..33bd57b3fb --- /dev/null +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&spi2>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&spi2_flash_pins>; + status = "okay"; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + spi-cal-enable; + spi-cal-mode = "read-data"; + spi-cal-datalen = <7>; + spi-cal-data = /bits/ 8 < + 0x53 0x46 0x5F 0x42 0x4F 0x4F 0x54>; /* SF_BOOT */ + spi-cal-addrlen = <1>; + spi-cal-addr = /bits/ 32 <0x0>; + reg = <0>; + spi-max-frequency = <52000000>; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + + partition@00000 { + label = "BL2"; + reg = <0x00000 0x0040000>; + }; + partition@40000 { + label = "u-boot-env"; + reg = <0x40000 0x0010000>; + }; + partition@50000 { + label = "Factory"; + reg = <0x50000 0x0200000>; + }; + partition@250000 { + label = "FIP"; + reg = <0x250000 0x0080000>; + }; + partition@2D0000 { + label = "firmware"; + reg = <0x2D0000 0x1D30000>; + }; + }; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dtsi b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts similarity index 68% rename from lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dtsi rename to lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts index 423b3860c6..11dbf98301 100644 --- a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dtsi +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts @@ -6,8 +6,35 @@ /dts-v1/; #include "mt7988a.dtsi" +#include +#include #include +/ { + model = "MediaTek MT7988A Reference Board"; + compatible = "mediatek,mt7988a-rfb", + "mediatek,mt7988"; + + chosen { + bootargs = "console=ttyS0,115200n1 loglevel=8 \ + earlycon=uart8250,mmio32,0x11000000 \ + pci=pcie_bus_perf"; + }; + + memory { + reg = <0 0x40000000 0 0x40000000>; + }; +}; + +ð { + pinctrl-0 = <&mdio0_pins>; + pinctrl-names = "default"; +}; + +&gmac0 { + status = "okay"; +}; + &cpu0 { proc-supply = <&rt5190_buck3>; }; @@ -32,6 +59,50 @@ status = "okay"; }; +&switch { + status = "okay"; +}; + +&gsw_phy0 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe0_led0_pins>; +}; + +&gsw_phy0_led0 { + status = "okay"; + color = ; +}; + +&gsw_phy1 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe1_led0_pins>; +}; + +&gsw_phy1_led0 { + status = "okay"; + color = ; +}; + +&gsw_phy2 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe2_led0_pins>; +}; + +&gsw_phy2_led0 { + status = "okay"; + color = ; +}; + +&gsw_phy3 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe3_led0_pins>; +}; + +&gsw_phy3_led0 { + status = "okay"; + color = ; +}; + &i2c0 { pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins>; @@ -89,26 +160,18 @@ }; &pcie0 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie0_pins>; status = "okay"; }; &pcie1 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie1_pins>; status = "okay"; }; &pcie2 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie2_pins>; status = "disabled"; }; &pcie3 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie3_pins>; status = "okay"; }; @@ -124,44 +187,6 @@ status = "okay"; }; -&pio { - pcie0_pins: pcie0-pins { - mux { - function = "pcie"; - groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0", - "pcie_wake_n0_0"; - }; - }; - - pcie1_pins: pcie1-pins { - mux { - function = "pcie"; - groups = "pcie_2l_1_pereset", "pcie_clk_req_n1", - "pcie_wake_n1_0"; - }; - }; - - pcie2_pins: pcie2-pins { - mux { - function = "pcie"; - groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0", - "pcie_wake_n2_0"; - }; - }; - - pcie3_pins: pcie3-pins { - mux { - function = "pcie"; - groups = "pcie_1l_1_pereset", "pcie_clk_req_n3", - "pcie_wake_n3_0"; - }; - }; -}; - -&spi0 { - status = "disabled"; -}; - &uart0 { status = "okay"; }; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a.dtsi index 462218c65d..7fed1e1384 100644 --- a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a.dtsi +++ b/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a.dtsi @@ -152,6 +152,65 @@ }; }; + thermal-zones { + cpu_thermal: cpu-thermal { + polling-delay-passive = <1000>; + polling-delay = <1000>; + thermal-sensors = <&lvts 0>; + trips { + cpu_trip_crit: crit { + temperature = <125000>; + hysteresis = <2000>; + type = "critical"; + }; + + cpu_trip_hot: hot { + temperature = <120000>; + hysteresis = <2000>; + type = "hot"; + }; + + cpu_trip_active_high: active-high { + temperature = <115000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_trip_active_med: active-med { + temperature = <85000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_trip_active_low: active-low { + temperature = <40000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cpu-active-high { + /* active: set fan to cooling level 2 */ + cooling-device = <&fan 3 3>; + trip = <&cpu_trip_active_high>; + }; + + cpu-active-low { + /* active: set fan to cooling level 1 */ + cooling-device = <&fan 2 2>; + trip = <&cpu_trip_active_med>; + }; + + cpu-passive { + /* passive: set fan to cooling level 0 */ + cooling-device = <&fan 1 1>; + trip = <&cpu_trip_active_low>; + }; + }; + }; + }; + timer { compatible = "arm,armv8-timer"; interrupt-parent = <&gic>; @@ -161,6 +220,24 @@ ; }; + reg_1p8v: regulator-1p8v { + compatible = "regulator-fixed"; + regulator-name = "fixed-1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + soc { #address-cells = <2>; #size-cells = <2>; @@ -386,6 +463,80 @@ groups = "uart0"; }; }; + + snfi_pins: snfi-pins { + mux { + function = "flash"; + groups = "snfi"; + }; + }; + + spi0_pins: spi0-pins { + mux { + function = "spi"; + groups = "spi0"; + }; + }; + + spi0_flash_pins: spi0-flash-pins { + mux { + function = "spi"; + groups = "spi0", "spi0_wp_hold"; + }; + }; + + spi1_pins: spi1-pins { + mux { + function = "spi"; + groups = "spi1"; + }; + }; + + spi2_pins: spi2-pins { + mux { + function = "spi"; + groups = "spi2"; + }; + }; + + spi2_flash_pins: spi2-flash-pins { + mux { + function = "spi"; + groups = "spi2", "spi2_wp_hold"; + }; + }; + + pcie0_pins: pcie0-pins { + mux { + function = "pcie"; + groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0", + "pcie_wake_n0_0"; + }; + }; + + pcie1_pins: pcie1-pins { + mux { + function = "pcie"; + groups = "pcie_2l_1_pereset", "pcie_clk_req_n1", + "pcie_wake_n1_0"; + }; + }; + + pcie2_pins: pcie2-pins { + mux { + function = "pcie"; + groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0", + "pcie_wake_n2_0"; + }; + }; + + pcie3_pins: pcie3-pins { + mux { + function = "pcie"; + groups = "pcie_1l_1_pereset", "pcie_clk_req_n3", + "pcie_wake_n3_0"; + }; + }; }; sgmiisys0: syscon@10060000 { @@ -420,24 +571,24 @@ #clock-cells = <1>; }; - xfi_pextp0: xfi_pextp@11f20000 { - compatible = "mediatek,mt7988-xfi_pextp", - "mediatek,mt7988-xfi_pextp_0", + xfi_pextp0: xfi-pextp@11f20000 { + compatible = "mediatek,mt7988-xfi-pextp", + "mediatek,mt7988-xfi-pextp_0", "syscon"; reg = <0 0x11f20000 0 0x10000>; #clock-cells = <1>; }; - xfi_pextp1: xfi_pextp@11f30000 { - compatible = "mediatek,mt7988-xfi_pextp", - "mediatek,mt7988-xfi_pextp_1", + xfi_pextp1: xfi-pextp@11f30000 { + compatible = "mediatek,mt7988-xfi-pextp", + "mediatek,mt7988-xfi-pextp_1", "syscon"; reg = <0 0x11f30000 0 0x10000>; #clock-cells = <1>; }; - xfi_pll: xfi_pll@11f40000 { - compatible = "mediatek,mt7988-xfi_pll", "syscon"; + xfi_pll: xfi-pll@11f40000 { + compatible = "mediatek,mt7988-xfi-pll", "syscon"; reg = <0 0x11f40000 0 0x1000>; #clock-cells = <1>; }; @@ -470,6 +621,35 @@ status = "disabled"; }; + snand: spi@11001000 { + compatible = "mediatek,mt7986-snand"; + reg = <0 0x11001000 0 0x1000>; + interrupts = ; + clocks = <&infracfg CLK_INFRA_SPINFI>, + <&infracfg CLK_INFRA_NFI>; + clock-names = "pad_clk", "nfi_clk"; + assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>, + <&topckgen CLK_TOP_NFI1X_SEL>; + assigned-clock-parents = <&topckgen CLK_TOP_MPLL_D8>, + <&topckgen CLK_TOP_MPLL_D8>; + nand-ecc-engine = <&bch>; + mediatek,quad-spi; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&snfi_pins>; + status = "disabled"; + }; + + bch: ecc@11002000 { + compatible = "mediatek,mt7686-ecc"; + reg = <0 0x11002000 0 0x1000>; + interrupts = ; + clocks = <&topckgen CLK_TOP_NFI1X_SEL>; + clock-names = "nfiecc_clk"; + status = "disabled"; + }; + i2c0: i2c@11003000 { compatible = "mediatek,mt7988-i2c", "mediatek,mt7981-i2c"; @@ -525,10 +705,118 @@ <&infracfg CLK_INFRA_66M_SPI0_HCK>; clock-names = "parent-clk", "sel-clk", "spi-clk", "spi-hclk"; - #address-cells = <1>; #size-cells = <0>; + status = "disabled"; + }; + spi1: spi@11008000 { + compatible = "mediatek,ipm-spi-single", "mediatek,spi-ipm"; + reg = <0 0x11008000 0 0x100>; + interrupts = ; + clocks = <&topckgen CLK_TOP_MPLL_D2>, + <&topckgen CLK_TOP_SPI_SEL>, + <&infracfg CLK_INFRA_104M_SPI1>, + <&infracfg CLK_INFRA_66M_SPI1_HCK>; + clock-names = "parent-clk", "sel-clk", "spi-clk", + "spi-hclk"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_pins>; + status = "disabled"; + }; + + spi2: spi@11009000 { + compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm"; + reg = <0 0x11009000 0 0x100>; + interrupts = ; + clocks = <&topckgen CLK_TOP_MPLL_D2>, + <&topckgen CLK_TOP_SPI_SEL>, + <&infracfg CLK_INFRA_104M_SPI2_BCK>, + <&infracfg CLK_INFRA_66M_SPI2_HCK>; + clock-names = "parent-clk", "sel-clk", "spi-clk", + "spi-hclk"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + pwm: pwm@10048000 { + compatible = "mediatek,mt7988-pwm"; + reg = <0 0x10048000 0 0x1000>; + #pwm-cells = <2>; + clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>, + <&infracfg CLK_INFRA_66M_PWM_HCK>, + <&infracfg CLK_INFRA_66M_PWM_CK1>, + <&infracfg CLK_INFRA_66M_PWM_CK2>, + <&infracfg CLK_INFRA_66M_PWM_CK3>, + <&infracfg CLK_INFRA_66M_PWM_CK4>, + <&infracfg CLK_INFRA_66M_PWM_CK5>, + <&infracfg CLK_INFRA_66M_PWM_CK6>, + <&infracfg CLK_INFRA_66M_PWM_CK7>, + <&infracfg CLK_INFRA_66M_PWM_CK8>; + clock-names = "top", "main", "pwm1", "pwm2", "pwm3", + "pwm4","pwm5","pwm6","pwm7","pwm8"; + status = "disabled"; + }; + + fan: pwm-fan { + compatible = "pwm-fan"; + /* cooling level (0, 1, 2) : (0% duty, 50% duty, 100% duty) */ + cooling-levels = <0 128 255>; + #cooling-cells = <2>; + #thermal-sensor-cells = <1>; + status = "disabled"; + }; + + lvts: lvts@1100a000 { + compatible = "mediatek,mt7988-lvts"; + #thermal-sensor-cells = <1>; + reg = <0 0x1100a000 0 0x1000>; + clocks = <&infracfg CLK_INFRA_26M_THERM_SYSTEM>; + clock-names = "lvts_clk"; + nvmem-cells = <&lvts_calibration>; + nvmem-cell-names = "e_data1"; + }; + + crypto: crypto@15600000 { + compatible = "inside-secure,safexcel-eip197b"; + reg = <0 0x15600000 0 0x180000>; + interrupts = , + , + , + ; + interrupt-names = "ring0", "ring1", "ring2", "ring3"; + status = "okay"; + }; + + afe: audio-controller@11210000 { + compatible = "mediatek,mt79xx-audio"; + reg = <0 0x11210000 0 0x9000>; + interrupts = ; + clocks = <&infracfg CLK_INFRA_66M_AUD_SLV_BCK>, + <&infracfg CLK_INFRA_AUD_26M>, + <&infracfg CLK_INFRA_AUD_L>, + <&infracfg CLK_INFRA_AUD_AUD>, + <&infracfg CLK_INFRA_AUD_EG2>, + <&topckgen CLK_TOP_AUD_SEL>, + <&topckgen CLK_TOP_AUD_I2S_M>; + clock-names = "aud_bus_ck", + "aud_26m_ck", + "aud_l_ck", + "aud_aud_ck", + "aud_eg2_ck", + "aud_sel", + "aud_i2s_m"; + assigned-clocks = <&topckgen CLK_TOP_AUD_SEL>, + <&topckgen CLK_TOP_A1SYS_SEL>, + <&topckgen CLK_TOP_AUD_L_SEL>, + <&topckgen CLK_TOP_A_TUNER_SEL>; + assigned-clock-parents = <&apmixedsys CLK_APMIXED_APLL2>, + <&topckgen CLK_TOP_APLL2_D4>, + <&apmixedsys CLK_APMIXED_APLL2>, + <&topckgen CLK_TOP_APLL2_D4>; status = "disabled"; }; @@ -554,6 +842,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P2>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie2_pins>; status = "disabled"; phys = <&xphyu3port0 PHY_TYPE_PCIE>; @@ -594,6 +884,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P3>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie3_pins>; status = "disabled"; #interrupt-cells = <1>; @@ -631,6 +923,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P0>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie0_pins>; status = "disabled"; #interrupt-cells = <1>; @@ -668,6 +962,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P1>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie1_pins>; status = "disabled"; #interrupt-cells = <1>; @@ -909,7 +1205,7 @@ mediatek,pio = <&pio>; gsw_phy0: ethernet-phy@0 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <0>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p0>; @@ -934,7 +1230,7 @@ }; gsw_phy1: ethernet-phy@1 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <1>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p1>; @@ -959,7 +1255,7 @@ }; gsw_phy2: ethernet-phy@2 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <2>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p2>; @@ -984,7 +1280,7 @@ }; gsw_phy3: ethernet-phy@3 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <3>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p3>; @@ -1096,19 +1392,19 @@ mediatek,ethsys = <ðsys>; mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>; mediatek,usxgmiisys = <&usxgmiisys0>, <&usxgmiisys1>; - mediatek,xfi_pextp = <&xfi_pextp0>, <&xfi_pextp1>; - mediatek,xfi_pll = <&xfi_pll>; + mediatek,xfi-pextp = <&xfi_pextp0>, <&xfi_pextp1>; + mediatek,xfi-pll = <&xfi_pll>; mediatek,infracfg = <&topmisc>; mediatek,toprgu = <&watchdog>; #reset-cells = <1>; #address-cells = <1>; #size-cells = <0>; - status = "disabled"; gmac0: mac@0 { compatible = "mediatek,eth-mac"; reg = <0>; phy-mode = "internal"; + status = "disabled"; fixed-link { speed = <10000>; @@ -1120,11 +1416,13 @@ gmac1: mac@1 { compatible = "mediatek,eth-mac"; reg = <1>; + status = "disabled"; }; gmac2: mac@2 { compatible = "mediatek,eth-mac"; reg = <2>; + status = "disabled"; }; mdio_bus: mdio-bus { diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts deleted file mode 100644 index 27ef19c46d..0000000000 --- a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0 OR MIT) -/* - * Copyright (C) 2022 MediaTek Inc. - * Author: Sam.Shih - */ - -/dts-v1/; -#include "mt7988a-rfb-spim-nand.dtsi" -#include -#include - -/ { - model = "MediaTek MT7988A DSA 10G SPIM-NAND RFB"; - compatible = "mediatek,mt7988a-dsa-10g-spim-snand", - "mediatek,mt7988a-rfb-snand", - "mediatek,mt7988"; - - chosen { - bootargs = "console=ttyS0,115200n1 loglevel=8 \ - earlycon=uart8250,mmio32,0x11000000 \ - pci=pcie_bus_perf"; - }; - - memory { - reg = <0 0x40000000 0 0x40000000>; - }; -}; - -ð { - pinctrl-0 = <&mdio0_pins>; - pinctrl-names = "default"; - status = "okay"; -}; - -&gmac0 { - status = "okay"; -}; - -&gmac1 { - status = "okay"; - phy-mode = "internal"; - phy-connection-type = "internal"; - phy = <&int_2p5g_phy>; -}; - -&gmac2 { - status = "okay"; - phy-mode = "usxgmii"; - phy-connection-type = "usxgmii"; - phy = <&phy8>; -}; - -&mdio_bus { - /* external Aquantia AQR113C */ - phy0: ethernet-phy@0 { - reg = <0>; - compatible = "ethernet-phy-ieee802.3-c45"; - reset-gpios = <&pio 72 1>; - reset-assert-us = <100000>; - reset-deassert-us = <221000>; - }; - - /* external Aquantia AQR113C */ - phy8: ethernet-phy@8 { - reg = <8>; - compatible = "ethernet-phy-ieee802.3-c45"; - reset-gpios = <&pio 71 1>; - reset-assert-us = <100000>; - reset-deassert-us = <221000>; - }; - - /* external Maxlinear GPY211C */ - phy5: ethernet-phy@5 { - reg = <5>; - compatible = "ethernet-phy-ieee802.3-c45"; - phy-mode = "2500base-x"; - }; - - /* external Maxlinear GPY211C */ - phy13: ethernet-phy@13 { - reg = <13>; - compatible = "ethernet-phy-ieee802.3-c45"; - phy-mode = "2500base-x"; - }; -}; - -&int_2p5g_phy { - pinctrl-names = "i2p5gbe-led"; - pinctrl-0 = <&i2p5gbe_led0_pins>; -}; - -&switch { - status = "okay"; -}; - -&gsw_phy0 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe0_led0_pins>; -}; - -&gsw_phy0_led0 { - status = "okay"; - color = ; -}; - -&gsw_phy1 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe1_led0_pins>; -}; - -&gsw_phy1_led0 { - status = "okay"; - color = ; -}; - -&gsw_phy2 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe2_led0_pins>; -}; - -&gsw_phy2_led0 { - status = "okay"; - color = ; -}; - -&gsw_phy3 { - pinctrl-names = "gbe-led"; - pinctrl-0 = <&gbe3_led0_pins>; -}; - -&gsw_phy3_led0 { - status = "okay"; - color = ; -}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso new file mode 100644 index 0000000000..3f8ac2ae38 --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2021 MediaTek Inc. + * Author: Frank Wunderlich + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mmc0>; + __overlay__ { + pinctrl-names = "default", "state_uhs"; + pinctrl-0 = <&mmc0_pins_emmc_51>; + pinctrl-1 = <&mmc0_pins_emmc_51>; + bus-width = <8>; + max-frequency = <200000000>; + cap-mmc-highspeed; + mmc-hs200-1_8v; + mmc-hs400-1_8v; + hs400-ds-delay = <0x12814>; + vqmmc-supply = <®_1p8v>; + vmmc-supply = <®_3p3v>; + non-removable; + no-sd; + no-sdio; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso new file mode 100644 index 0000000000..d21a61ad19 --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Aquantia AQR113C */ + phy0: ethernet-phy@0 { + reg = <0>; + compatible = "ethernet-phy-ieee802.3-c45"; + reset-gpios = <&pio 72 GPIO_ACTIVE_LOW>; + reset-assert-us = <100000>; + reset-deassert-us = <221000>; + }; + }; + }; + + fragment@1 { + target = <&gmac1>; + __overlay__ { + phy-mode = "usxgmii"; + phy-connection-type = "usxgmii"; + phy = <&phy0>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso new file mode 100644 index 0000000000..86ab7566dc --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&gmac1>; + __overlay__ { + phy-mode = "internal"; + phy-connection-type = "internal"; + phy = <&int_2p5g_phy>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&int_2p5g_phy>; + __overlay__ { + pinctrl-names = "i2p5gbe-led"; + pinctrl-0 = <&i2p5gbe_led0_pins>; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso new file mode 100644 index 0000000000..34a23bbd7e --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Maxlinear GPY211C */ + phy13: ethernet-phy@13 { + reg = <13>; + compatible = "ethernet-phy-ieee802.3-c45"; + phy-mode = "2500base-x"; + }; + }; + }; + + fragment@1 { + target = <&gmac1>; + __overlay__ { + phy-mode = "2500base-x"; + phy-connection-type = "2500base-x"; + phy = <&phy13>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso new file mode 100644 index 0000000000..ba40a119cb --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&i2c2>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_0_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target-path = "/"; + __overlay__ { + sfp_esp1: sfp@1 { + compatible = "sff,sfp"; + i2c-bus = <&i2c2>; + mod-def0-gpios = <&pio 82 GPIO_ACTIVE_LOW>; + los-gpios = <&pio 81 GPIO_ACTIVE_HIGH>; + tx-disable-gpios = <&pio 36 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <3000>; + }; + }; + }; + + fragment@2 { + target = <&gmac1>; + __overlay__ { + phy-mode = "10gbase-r"; + managed = "in-band-status"; + sfp = <&sfp_esp1>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso new file mode 100644 index 0000000000..140391fc45 --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Aquantia AQR113C */ + phy8: ethernet-phy@8 { + reg = <8>; + compatible = "ethernet-phy-ieee802.3-c45"; + reset-gpios = <&pio 71 GPIO_ACTIVE_LOW>; + reset-assert-us = <100000>; + reset-deassert-us = <221000>; + }; + }; + }; + + fragment@1 { + target = <&gmac2>; + __overlay__ { + phy-mode = "usxgmii"; + phy-connection-type = "usxgmii"; + phy = <&phy8>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso new file mode 100644 index 0000000000..19e0b2799f --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&mdio_bus>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + /* external Maxlinear GPY211C */ + phy5: ethernet-phy@5 { + reg = <5>; + compatible = "ethernet-phy-ieee802.3-c45"; + phy-mode = "2500base-x"; + }; + }; + }; + + fragment@1 { + target = <&gmac2>; + __overlay__ { + phy-mode = "2500base-x"; + phy-connection-type = "2500base-x"; + phy = <&phy5>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso new file mode 100644 index 0000000000..b9aabd2726 --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&i2c1>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_sfp_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target-path = "/"; + __overlay__ { + sfp_esp0: sfp@0 { + compatible = "sff,sfp"; + i2c-bus = <&i2c1>; + mod-def0-gpios = <&pio 35 GPIO_ACTIVE_LOW>; + los-gpios = <&pio 33 GPIO_ACTIVE_HIGH>; + tx-disable-gpios = <&pio 29 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <3000>; + }; + }; + }; + + fragment@2 { + target = <&gmac2>; + __overlay__ { + phy-mode = "10gbase-r"; + managed = "in-band-status"; + sfp = <&sfp_esp0>; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso new file mode 100644 index 0000000000..04472cc12d --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2023 MediaTek Inc. + * Author: Frank Wunderlich + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@1 { + target-path = <&mmc0>; + __overlay__ { + pinctrl-names = "default", "state_uhs"; + pinctrl-0 = <&mmc0_pins_sdcard>; + pinctrl-1 = <&mmc0_pins_sdcard>; + cd-gpios = <&pio 69 GPIO_ACTIVE_LOW>; + bus-width = <4>; + max-frequency = <52000000>; + cap-sd-highspeed; + vmmc-supply = <®_3p3v>; + vqmmc-supply = <®_3p3v>; + no-mmc; + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso new file mode 100644 index 0000000000..6180165177 --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&snand>; + __overlay__ { + status = "okay"; + + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <52000000>; + spi-tx-buswidth = <4>; + spi-rx-buswidth = <4>; + mediatek,nmbm; + mediatek,bmt-max-ratio = <1>; + mediatek,bmt-max-reserved-blocks = <64>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "BL2"; + reg = <0x00000 0x0100000>; + read-only; + }; + + partition@100000 { + label = "u-boot-env"; + reg = <0x0100000 0x0080000>; + }; + + partition@180000 { + label = "Factory"; + reg = <0x180000 0x0400000>; + }; + + partition@580000 { + label = "FIP"; + reg = <0x580000 0x0200000>; + }; + + partition@780000 { + label = "ubi"; + reg = <0x780000 0x7080000>; + }; + }; + }; + }; + }; + + fragment@1 { + target = <&bch>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtsi b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtsi deleted file mode 100644 index e4c0571250..0000000000 --- a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtsi +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0 OR MIT) -/* - * Copyright (C) 2022 MediaTek Inc. - * Author: Sam.Shih - */ - -/dts-v1/; -#include "mt7988a-rfb.dtsi" - -&pio { - spi0_flash_pins: spi0-pins { - mux { - function = "spi"; - groups = "spi0", "spi0_wp_hold"; - }; - }; -}; - -&spi0 { - pinctrl-names = "default"; - pinctrl-0 = <&spi0_flash_pins>; - status = "okay"; - - spi_nand: spi_nand@0 { - compatible = "spi-nand"; - reg = <0>; - spi-max-frequency = <52000000>; - spi-tx-buswidth = <4>; - spi-rx-buswidth = <4>; - }; - -}; - -&spi_nand { - mediatek,nmbm; - mediatek,bmt-max-ratio = <1>; - mediatek,bmt-max-reserved-blocks = <64>; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - partition@0 { - label = "BL2"; - reg = <0x00000 0x0100000>; - read-only; - }; - - partition@100000 { - label = "u-boot-env"; - reg = <0x0100000 0x0080000>; - }; - - factory: partition@180000 { - label = "Factory"; - reg = <0x180000 0x0400000>; - }; - - partition@580000 { - label = "FIP"; - reg = <0x580000 0x0200000>; - }; - - partition@780000 { - label = "ubi"; - reg = <0x780000 0x7080000>; - }; - }; -}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso new file mode 100644 index 0000000000..e63436fa55 --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_flash_pins>; + status = "okay"; + + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <52000000>; + spi-tx-buswidth = <4>; + spi-rx-buswidth = <4>; + mediatek,nmbm; + mediatek,bmt-max-ratio = <1>; + mediatek,bmt-max-reserved-blocks = <64>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "BL2"; + reg = <0x00000 0x0100000>; + read-only; + }; + + partition@100000 { + label = "u-boot-env"; + reg = <0x0100000 0x0080000>; + }; + + partition@180000 { + label = "Factory"; + reg = <0x180000 0x0400000>; + }; + + partition@580000 { + label = "FIP"; + reg = <0x580000 0x0200000>; + }; + + partition@780000 { + label = "ubi"; + reg = <0x780000 0x7080000>; + }; + }; + }; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso new file mode 100644 index 0000000000..33bd57b3fb --- /dev/null +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 MediaTek Inc. + * Author: Sam.Shih + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a"; + + fragment@0 { + target = <&spi2>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&spi2_flash_pins>; + status = "okay"; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + spi-cal-enable; + spi-cal-mode = "read-data"; + spi-cal-datalen = <7>; + spi-cal-data = /bits/ 8 < + 0x53 0x46 0x5F 0x42 0x4F 0x4F 0x54>; /* SF_BOOT */ + spi-cal-addrlen = <1>; + spi-cal-addr = /bits/ 32 <0x0>; + reg = <0>; + spi-max-frequency = <52000000>; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + + partition@00000 { + label = "BL2"; + reg = <0x00000 0x0040000>; + }; + partition@40000 { + label = "u-boot-env"; + reg = <0x40000 0x0010000>; + }; + partition@50000 { + label = "Factory"; + reg = <0x50000 0x0200000>; + }; + partition@250000 { + label = "FIP"; + reg = <0x250000 0x0080000>; + }; + partition@2D0000 { + label = "firmware"; + reg = <0x2D0000 0x1D30000>; + }; + }; + }; + }; +}; diff --git a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dtsi b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts similarity index 68% rename from lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dtsi rename to lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts index 423b3860c6..11dbf98301 100644 --- a/lede/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dtsi +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts @@ -6,8 +6,35 @@ /dts-v1/; #include "mt7988a.dtsi" +#include +#include #include +/ { + model = "MediaTek MT7988A Reference Board"; + compatible = "mediatek,mt7988a-rfb", + "mediatek,mt7988"; + + chosen { + bootargs = "console=ttyS0,115200n1 loglevel=8 \ + earlycon=uart8250,mmio32,0x11000000 \ + pci=pcie_bus_perf"; + }; + + memory { + reg = <0 0x40000000 0 0x40000000>; + }; +}; + +ð { + pinctrl-0 = <&mdio0_pins>; + pinctrl-names = "default"; +}; + +&gmac0 { + status = "okay"; +}; + &cpu0 { proc-supply = <&rt5190_buck3>; }; @@ -32,6 +59,50 @@ status = "okay"; }; +&switch { + status = "okay"; +}; + +&gsw_phy0 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe0_led0_pins>; +}; + +&gsw_phy0_led0 { + status = "okay"; + color = ; +}; + +&gsw_phy1 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe1_led0_pins>; +}; + +&gsw_phy1_led0 { + status = "okay"; + color = ; +}; + +&gsw_phy2 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe2_led0_pins>; +}; + +&gsw_phy2_led0 { + status = "okay"; + color = ; +}; + +&gsw_phy3 { + pinctrl-names = "gbe-led"; + pinctrl-0 = <&gbe3_led0_pins>; +}; + +&gsw_phy3_led0 { + status = "okay"; + color = ; +}; + &i2c0 { pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins>; @@ -89,26 +160,18 @@ }; &pcie0 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie0_pins>; status = "okay"; }; &pcie1 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie1_pins>; status = "okay"; }; &pcie2 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie2_pins>; status = "disabled"; }; &pcie3 { - pinctrl-names = "default"; - pinctrl-0 = <&pcie3_pins>; status = "okay"; }; @@ -124,44 +187,6 @@ status = "okay"; }; -&pio { - pcie0_pins: pcie0-pins { - mux { - function = "pcie"; - groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0", - "pcie_wake_n0_0"; - }; - }; - - pcie1_pins: pcie1-pins { - mux { - function = "pcie"; - groups = "pcie_2l_1_pereset", "pcie_clk_req_n1", - "pcie_wake_n1_0"; - }; - }; - - pcie2_pins: pcie2-pins { - mux { - function = "pcie"; - groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0", - "pcie_wake_n2_0"; - }; - }; - - pcie3_pins: pcie3-pins { - mux { - function = "pcie"; - groups = "pcie_1l_1_pereset", "pcie_clk_req_n3", - "pcie_wake_n3_0"; - }; - }; -}; - -&spi0 { - status = "disabled"; -}; - &uart0 { status = "okay"; }; diff --git a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi index 462218c65d..7fed1e1384 100644 --- a/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi +++ b/lede/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi @@ -152,6 +152,65 @@ }; }; + thermal-zones { + cpu_thermal: cpu-thermal { + polling-delay-passive = <1000>; + polling-delay = <1000>; + thermal-sensors = <&lvts 0>; + trips { + cpu_trip_crit: crit { + temperature = <125000>; + hysteresis = <2000>; + type = "critical"; + }; + + cpu_trip_hot: hot { + temperature = <120000>; + hysteresis = <2000>; + type = "hot"; + }; + + cpu_trip_active_high: active-high { + temperature = <115000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_trip_active_med: active-med { + temperature = <85000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_trip_active_low: active-low { + temperature = <40000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cpu-active-high { + /* active: set fan to cooling level 2 */ + cooling-device = <&fan 3 3>; + trip = <&cpu_trip_active_high>; + }; + + cpu-active-low { + /* active: set fan to cooling level 1 */ + cooling-device = <&fan 2 2>; + trip = <&cpu_trip_active_med>; + }; + + cpu-passive { + /* passive: set fan to cooling level 0 */ + cooling-device = <&fan 1 1>; + trip = <&cpu_trip_active_low>; + }; + }; + }; + }; + timer { compatible = "arm,armv8-timer"; interrupt-parent = <&gic>; @@ -161,6 +220,24 @@ ; }; + reg_1p8v: regulator-1p8v { + compatible = "regulator-fixed"; + regulator-name = "fixed-1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + soc { #address-cells = <2>; #size-cells = <2>; @@ -386,6 +463,80 @@ groups = "uart0"; }; }; + + snfi_pins: snfi-pins { + mux { + function = "flash"; + groups = "snfi"; + }; + }; + + spi0_pins: spi0-pins { + mux { + function = "spi"; + groups = "spi0"; + }; + }; + + spi0_flash_pins: spi0-flash-pins { + mux { + function = "spi"; + groups = "spi0", "spi0_wp_hold"; + }; + }; + + spi1_pins: spi1-pins { + mux { + function = "spi"; + groups = "spi1"; + }; + }; + + spi2_pins: spi2-pins { + mux { + function = "spi"; + groups = "spi2"; + }; + }; + + spi2_flash_pins: spi2-flash-pins { + mux { + function = "spi"; + groups = "spi2", "spi2_wp_hold"; + }; + }; + + pcie0_pins: pcie0-pins { + mux { + function = "pcie"; + groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0", + "pcie_wake_n0_0"; + }; + }; + + pcie1_pins: pcie1-pins { + mux { + function = "pcie"; + groups = "pcie_2l_1_pereset", "pcie_clk_req_n1", + "pcie_wake_n1_0"; + }; + }; + + pcie2_pins: pcie2-pins { + mux { + function = "pcie"; + groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0", + "pcie_wake_n2_0"; + }; + }; + + pcie3_pins: pcie3-pins { + mux { + function = "pcie"; + groups = "pcie_1l_1_pereset", "pcie_clk_req_n3", + "pcie_wake_n3_0"; + }; + }; }; sgmiisys0: syscon@10060000 { @@ -420,24 +571,24 @@ #clock-cells = <1>; }; - xfi_pextp0: xfi_pextp@11f20000 { - compatible = "mediatek,mt7988-xfi_pextp", - "mediatek,mt7988-xfi_pextp_0", + xfi_pextp0: xfi-pextp@11f20000 { + compatible = "mediatek,mt7988-xfi-pextp", + "mediatek,mt7988-xfi-pextp_0", "syscon"; reg = <0 0x11f20000 0 0x10000>; #clock-cells = <1>; }; - xfi_pextp1: xfi_pextp@11f30000 { - compatible = "mediatek,mt7988-xfi_pextp", - "mediatek,mt7988-xfi_pextp_1", + xfi_pextp1: xfi-pextp@11f30000 { + compatible = "mediatek,mt7988-xfi-pextp", + "mediatek,mt7988-xfi-pextp_1", "syscon"; reg = <0 0x11f30000 0 0x10000>; #clock-cells = <1>; }; - xfi_pll: xfi_pll@11f40000 { - compatible = "mediatek,mt7988-xfi_pll", "syscon"; + xfi_pll: xfi-pll@11f40000 { + compatible = "mediatek,mt7988-xfi-pll", "syscon"; reg = <0 0x11f40000 0 0x1000>; #clock-cells = <1>; }; @@ -470,6 +621,35 @@ status = "disabled"; }; + snand: spi@11001000 { + compatible = "mediatek,mt7986-snand"; + reg = <0 0x11001000 0 0x1000>; + interrupts = ; + clocks = <&infracfg CLK_INFRA_SPINFI>, + <&infracfg CLK_INFRA_NFI>; + clock-names = "pad_clk", "nfi_clk"; + assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>, + <&topckgen CLK_TOP_NFI1X_SEL>; + assigned-clock-parents = <&topckgen CLK_TOP_MPLL_D8>, + <&topckgen CLK_TOP_MPLL_D8>; + nand-ecc-engine = <&bch>; + mediatek,quad-spi; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&snfi_pins>; + status = "disabled"; + }; + + bch: ecc@11002000 { + compatible = "mediatek,mt7686-ecc"; + reg = <0 0x11002000 0 0x1000>; + interrupts = ; + clocks = <&topckgen CLK_TOP_NFI1X_SEL>; + clock-names = "nfiecc_clk"; + status = "disabled"; + }; + i2c0: i2c@11003000 { compatible = "mediatek,mt7988-i2c", "mediatek,mt7981-i2c"; @@ -525,10 +705,118 @@ <&infracfg CLK_INFRA_66M_SPI0_HCK>; clock-names = "parent-clk", "sel-clk", "spi-clk", "spi-hclk"; - #address-cells = <1>; #size-cells = <0>; + status = "disabled"; + }; + spi1: spi@11008000 { + compatible = "mediatek,ipm-spi-single", "mediatek,spi-ipm"; + reg = <0 0x11008000 0 0x100>; + interrupts = ; + clocks = <&topckgen CLK_TOP_MPLL_D2>, + <&topckgen CLK_TOP_SPI_SEL>, + <&infracfg CLK_INFRA_104M_SPI1>, + <&infracfg CLK_INFRA_66M_SPI1_HCK>; + clock-names = "parent-clk", "sel-clk", "spi-clk", + "spi-hclk"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_pins>; + status = "disabled"; + }; + + spi2: spi@11009000 { + compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm"; + reg = <0 0x11009000 0 0x100>; + interrupts = ; + clocks = <&topckgen CLK_TOP_MPLL_D2>, + <&topckgen CLK_TOP_SPI_SEL>, + <&infracfg CLK_INFRA_104M_SPI2_BCK>, + <&infracfg CLK_INFRA_66M_SPI2_HCK>; + clock-names = "parent-clk", "sel-clk", "spi-clk", + "spi-hclk"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + pwm: pwm@10048000 { + compatible = "mediatek,mt7988-pwm"; + reg = <0 0x10048000 0 0x1000>; + #pwm-cells = <2>; + clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>, + <&infracfg CLK_INFRA_66M_PWM_HCK>, + <&infracfg CLK_INFRA_66M_PWM_CK1>, + <&infracfg CLK_INFRA_66M_PWM_CK2>, + <&infracfg CLK_INFRA_66M_PWM_CK3>, + <&infracfg CLK_INFRA_66M_PWM_CK4>, + <&infracfg CLK_INFRA_66M_PWM_CK5>, + <&infracfg CLK_INFRA_66M_PWM_CK6>, + <&infracfg CLK_INFRA_66M_PWM_CK7>, + <&infracfg CLK_INFRA_66M_PWM_CK8>; + clock-names = "top", "main", "pwm1", "pwm2", "pwm3", + "pwm4","pwm5","pwm6","pwm7","pwm8"; + status = "disabled"; + }; + + fan: pwm-fan { + compatible = "pwm-fan"; + /* cooling level (0, 1, 2) : (0% duty, 50% duty, 100% duty) */ + cooling-levels = <0 128 255>; + #cooling-cells = <2>; + #thermal-sensor-cells = <1>; + status = "disabled"; + }; + + lvts: lvts@1100a000 { + compatible = "mediatek,mt7988-lvts"; + #thermal-sensor-cells = <1>; + reg = <0 0x1100a000 0 0x1000>; + clocks = <&infracfg CLK_INFRA_26M_THERM_SYSTEM>; + clock-names = "lvts_clk"; + nvmem-cells = <&lvts_calibration>; + nvmem-cell-names = "e_data1"; + }; + + crypto: crypto@15600000 { + compatible = "inside-secure,safexcel-eip197b"; + reg = <0 0x15600000 0 0x180000>; + interrupts = , + , + , + ; + interrupt-names = "ring0", "ring1", "ring2", "ring3"; + status = "okay"; + }; + + afe: audio-controller@11210000 { + compatible = "mediatek,mt79xx-audio"; + reg = <0 0x11210000 0 0x9000>; + interrupts = ; + clocks = <&infracfg CLK_INFRA_66M_AUD_SLV_BCK>, + <&infracfg CLK_INFRA_AUD_26M>, + <&infracfg CLK_INFRA_AUD_L>, + <&infracfg CLK_INFRA_AUD_AUD>, + <&infracfg CLK_INFRA_AUD_EG2>, + <&topckgen CLK_TOP_AUD_SEL>, + <&topckgen CLK_TOP_AUD_I2S_M>; + clock-names = "aud_bus_ck", + "aud_26m_ck", + "aud_l_ck", + "aud_aud_ck", + "aud_eg2_ck", + "aud_sel", + "aud_i2s_m"; + assigned-clocks = <&topckgen CLK_TOP_AUD_SEL>, + <&topckgen CLK_TOP_A1SYS_SEL>, + <&topckgen CLK_TOP_AUD_L_SEL>, + <&topckgen CLK_TOP_A_TUNER_SEL>; + assigned-clock-parents = <&apmixedsys CLK_APMIXED_APLL2>, + <&topckgen CLK_TOP_APLL2_D4>, + <&apmixedsys CLK_APMIXED_APLL2>, + <&topckgen CLK_TOP_APLL2_D4>; status = "disabled"; }; @@ -554,6 +842,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P2>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie2_pins>; status = "disabled"; phys = <&xphyu3port0 PHY_TYPE_PCIE>; @@ -594,6 +884,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P3>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie3_pins>; status = "disabled"; #interrupt-cells = <1>; @@ -631,6 +923,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P0>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie0_pins>; status = "disabled"; #interrupt-cells = <1>; @@ -668,6 +962,8 @@ <&infracfg CLK_INFRA_133M_PCIE_CK_P1>; clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m"; + pinctrl-names = "default"; + pinctrl-0 = <&pcie1_pins>; status = "disabled"; #interrupt-cells = <1>; @@ -909,7 +1205,7 @@ mediatek,pio = <&pio>; gsw_phy0: ethernet-phy@0 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <0>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p0>; @@ -934,7 +1230,7 @@ }; gsw_phy1: ethernet-phy@1 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <1>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p1>; @@ -959,7 +1255,7 @@ }; gsw_phy2: ethernet-phy@2 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <2>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p2>; @@ -984,7 +1280,7 @@ }; gsw_phy3: ethernet-phy@3 { - compatible = "ethernet-phy-id03a2.9481"; + compatible = "ethernet-phy-ieee802.3-c22"; reg = <3>; phy-mode = "internal"; nvmem-cells = <&phy_calibration_p3>; @@ -1096,19 +1392,19 @@ mediatek,ethsys = <ðsys>; mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>; mediatek,usxgmiisys = <&usxgmiisys0>, <&usxgmiisys1>; - mediatek,xfi_pextp = <&xfi_pextp0>, <&xfi_pextp1>; - mediatek,xfi_pll = <&xfi_pll>; + mediatek,xfi-pextp = <&xfi_pextp0>, <&xfi_pextp1>; + mediatek,xfi-pll = <&xfi_pll>; mediatek,infracfg = <&topmisc>; mediatek,toprgu = <&watchdog>; #reset-cells = <1>; #address-cells = <1>; #size-cells = <0>; - status = "disabled"; gmac0: mac@0 { compatible = "mediatek,eth-mac"; reg = <0>; phy-mode = "internal"; + status = "disabled"; fixed-link { speed = <10000>; @@ -1120,11 +1416,13 @@ gmac1: mac@1 { compatible = "mediatek,eth-mac"; reg = <1>; + status = "disabled"; }; gmac2: mac@2 { compatible = "mediatek,eth-mac"; reg = <2>; + status = "disabled"; }; mdio_bus: mdio-bus { diff --git a/lede/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/lede/target/linux/mediatek/filogic/base-files/etc/board.d/02_network index ff9dac6ec5..35d568f125 100644 --- a/lede/target/linux/mediatek/filogic/base-files/etc/board.d/02_network +++ b/lede/target/linux/mediatek/filogic/base-files/etc/board.d/02_network @@ -38,8 +38,8 @@ mediatek_setup_interfaces() mediatek,mt7986b-rfb) ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3" eth1 ;; - mediatek,mt7988a-dsa-10g-spim-snand) - ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3" "eth1 eth2" + mediatek,mt7988a-rfb) + ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3 eth1" eth2 ;; glinet,gl-mt6000|\ tplink,tl-xdr4288|\ diff --git a/lede/target/linux/mediatek/image/filogic.mk b/lede/target/linux/mediatek/image/filogic.mk index eab8f25921..b9f43f5ef4 100644 --- a/lede/target/linux/mediatek/image/filogic.mk +++ b/lede/target/linux/mediatek/image/filogic.mk @@ -6,14 +6,30 @@ define Image/Prepare echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark endef -define Build/bl2 +define Build/mt7981-bl2 + cat $(STAGING_DIR_IMAGE)/mt7981-$1-bl2.img >> $@ +endef + +define Build/mt7981-bl31-uboot + cat $(STAGING_DIR_IMAGE)/mt7981_$1-u-boot.fip >> $@ +endef + +define Build/mt7986-bl2 cat $(STAGING_DIR_IMAGE)/mt7986-$1-bl2.img >> $@ endef -define Build/bl31-uboot +define Build/mt7986-bl31-uboot cat $(STAGING_DIR_IMAGE)/mt7986_$1-u-boot.fip >> $@ endef +define Build/mt7988-bl2 + cat $(STAGING_DIR_IMAGE)/mt7988-$1-bl2.img >> $@ +endef + +define Build/mt7988-bl31-uboot + cat $(STAGING_DIR_IMAGE)/mt7988_$1-u-boot.fip >> $@ +endef + define Build/mt7986-gpt cp $@ $@.tmp 2>/dev/null || true ptgen -g -o $@.tmp -a 1 -l 1024 \ @@ -97,25 +113,25 @@ define Device/bananapi_bpi-r3 nor-preloader.bin nor-bl31-uboot.fip \ sdcard.img.gz \ snand-preloader.bin snand-bl31-uboot.fip - ARTIFACT/emmc-preloader.bin := bl2 emmc-ddr4 - ARTIFACT/emmc-bl31-uboot.fip := bl31-uboot bananapi_bpi-r3-emmc - ARTIFACT/nor-preloader.bin := bl2 nor-ddr4 - ARTIFACT/nor-bl31-uboot.fip := bl31-uboot bananapi_bpi-r3-nor - ARTIFACT/snand-preloader.bin := bl2 spim-nand-ddr4 - ARTIFACT/snand-bl31-uboot.fip := bl31-uboot bananapi_bpi-r3-snand - ARTIFACT/sdcard.img.gz := mt7986-gpt sdmmc |\ - pad-to 17k | bl2 sdmmc-ddr4 |\ - pad-to 6656k | bl31-uboot bananapi_bpi-r3-sdmmc |\ + ARTIFACT/emmc-preloader.bin := mt7986-bl2 emmc-ddr4 + ARTIFACT/emmc-bl31-uboot.fip := mt7986-bl31-uboot bananapi_bpi-r3-emmc + ARTIFACT/nor-preloader.bin := mt7986-bl2 nor-ddr4 + ARTIFACT/nor-bl31-uboot.fip := mt7986-bl31-uboot bananapi_bpi-r3-nor + ARTIFACT/snand-preloader.bin := mt7986-bl2 spim-nand-ddr4 + ARTIFACT/snand-bl31-uboot.fip := mt7986-bl31-uboot bananapi_bpi-r3-snand + ARTIFACT/sdcard.img.gz := mt798x-gpt sdmmc |\ + pad-to 17k | mt7986-bl2 sdmmc-ddr4 |\ + pad-to 6656k | mt7986-bl31-uboot bananapi_bpi-r3-sdmmc |\ $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),\ pad-to 12M | append-image-stage initramfs-recovery.itb | check-size 44m |\ ) \ - pad-to 44M | bl2 spim-nand-ddr4 |\ - pad-to 45M | bl31-uboot bananapi_bpi-r3-snand |\ - pad-to 49M | bl2 nor-ddr4 |\ - pad-to 50M | bl31-uboot bananapi_bpi-r3-nor |\ - pad-to 51M | bl2 emmc-ddr4 |\ - pad-to 52M | bl31-uboot bananapi_bpi-r3-emmc |\ - pad-to 56M | mt7986-gpt emmc |\ + pad-to 44M | mt7986-bl2 spim-nand-ddr4 |\ + pad-to 45M | mt7986-bl31-uboot bananapi_bpi-r3-snand |\ + pad-to 49M | mt7986-bl2 nor-ddr4 |\ + pad-to 50M | mt7986-bl31-uboot bananapi_bpi-r3-nor |\ + pad-to 51M | mt7986-bl2 emmc-ddr4 |\ + pad-to 52M | mt7986-bl31-uboot bananapi_bpi-r3-emmc |\ + pad-to 56M | mt798x-gpt emmc |\ $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),\ pad-to 64M | append-image squashfs-sysupgrade.itb | check-size |\ ) \ @@ -343,23 +359,67 @@ define Device/mediatek_mt7986b-rfb endef TARGET_DEVICES += mediatek_mt7986b-rfb -define Device/mediatek_mt7988a-rfb-nand +define Device/mediatek_mt7988a-rfb DEVICE_VENDOR := MediaTek - DEVICE_MODEL := MT7988a nand rfb - DEVICE_DTS := mt7988a-dsa-10g-spim-nand + DEVICE_MODEL := MT7988A rfb + DEVICE_DTS := mt7988a-rfb + DEVICE_DTS_OVERLAY:= \ + mt7988a-rfb-emmc \ + mt7988a-rfb-sd \ + mt7988a-rfb-snfi-nand \ + mt7988a-rfb-spim-nand \ + mt7988a-rfb-spim-nor \ + mt7988a-rfb-eth1-aqr \ + mt7988a-rfb-eth1-i2p5g-phy \ + mt7988a-rfb-eth1-mxl \ + mt7988a-rfb-eth1-sfp \ + mt7988a-rfb-eth2-aqr \ + mt7988a-rfb-eth2-mxl \ + mt7988a-rfb-eth2-sfp DEVICE_DTS_DIR := $(DTS_DIR)/ - KERNEL_LOADADDR := 0x48000000 - SUPPORTED_DEVICES := mediatek,mt7988a-rfb - UBINIZE_OPTS := -E 5 - BLOCKSIZE := 128k - PAGESIZE := 2048 - IMAGE_SIZE := 65536k + DEVICE_DTC_FLAGS := --pad 4096 + DEVICE_DTS_LOADADDR := 0x45f00000 + DEVICE_PACKAGES := kmod-sfp + KERNEL_LOADADDR := 0x46000000 + KERNEL := kernel-bin | gzip + KERNEL_INITRAMFS := kernel-bin | lzma | \ + fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k + KERNEL_INITRAMFS_SUFFIX := .itb KERNEL_IN_UBI := 1 - IMAGES += factory.bin - IMAGE/factory.bin := append-ubi | check-size $$$$(IMAGE_SIZE) - IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata + IMAGE_SIZE := $$(shell expr 64 + $$(CONFIG_TARGET_ROOTFS_PARTSIZE))m + IMAGES := sysupgrade.itb + IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-with-rootfs | pad-rootfs | append-metadata + ARTIFACTS := \ + emmc-gpt.bin emmc-preloader.bin emmc-bl31-uboot.fip \ + nor-preloader.bin nor-bl31-uboot.fip \ + sdcard.img.gz \ + snand-preloader.bin snand-bl31-uboot.fip + ARTIFACT/emmc-gpt.bin := mt798x-gpt emmc + ARTIFACT/emmc-preloader.bin := mt7988-bl2 emmc-comb + ARTIFACT/emmc-bl31-uboot.fip := mt7988-bl31-uboot rfb-emmc + ARTIFACT/nor-preloader.bin := mt7988-bl2 nor-comb + ARTIFACT/nor-bl31-uboot.fip := mt7988-bl31-uboot rfb-nor + ARTIFACT/snand-preloader.bin := mt7988-bl2 spim-nand-comb + ARTIFACT/snand-bl31-uboot.fip := mt7988-bl31-uboot rfb-snand + ARTIFACT/sdcard.img.gz := mt798x-gpt sdmmc |\ + pad-to 17k | mt7988-bl2 sdmmc-comb |\ + pad-to 6656k | mt7988-bl31-uboot rfb-sd |\ + $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),\ + pad-to 12M | append-image-stage initramfs.itb | check-size 44m |\ + ) \ + pad-to 44M | mt7988-bl2 spim-nand-comb |\ + pad-to 45M | mt7988-bl31-uboot rfb-snand |\ + pad-to 51M | mt7988-bl2 nor-comb |\ + pad-to 51M | mt7988-bl31-uboot rfb-nor |\ + pad-to 55M | mt7988-bl2 emmc-comb |\ + pad-to 56M | mt7988-bl31-uboot rfb-emmc |\ + pad-to 62M | mt798x-gpt emmc |\ + $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),\ + pad-to 64M | append-image squashfs-sysupgrade.itb | check-size |\ + ) \ + gzip endef -TARGET_DEVICES += mediatek_mt7988a-rfb-nand +TARGET_DEVICES += mediatek_mt7988a-rfb define Device/netcore_n60 DEVICE_VENDOR := Netcore diff --git a/mihomo/adapter/outbound/direct.go b/mihomo/adapter/outbound/direct.go index 7e24ad2d88..09b9696b2f 100644 --- a/mihomo/adapter/outbound/direct.go +++ b/mihomo/adapter/outbound/direct.go @@ -4,6 +4,8 @@ import ( "context" "errors" "net/netip" + "os" + "strconv" N "github.com/metacubex/mihomo/common/net" "github.com/metacubex/mihomo/component/dialer" @@ -13,6 +15,8 @@ import ( "github.com/metacubex/mihomo/constant/features" ) +var DisableLoopBackDetector, _ = strconv.ParseBool(os.Getenv("DISABLE_LOOPBACK_DETECTOR")) + type Direct struct { *Base loopBack *loopback.Detector @@ -25,7 +29,7 @@ type DirectOption struct { // DialContext implements C.ProxyAdapter func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) { - if !features.CMFA { + if !features.CMFA && !DisableLoopBackDetector { if err := d.loopBack.CheckConn(metadata); err != nil { return nil, err } @@ -41,7 +45,7 @@ func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ... // ListenPacketContext implements C.ProxyAdapter func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) { - if !features.CMFA { + if !features.CMFA && !DisableLoopBackDetector { if err := d.loopBack.CheckPacketConn(metadata); err != nil { return nil, err } diff --git a/mihomo/adapter/outbound/wireguard.go b/mihomo/adapter/outbound/wireguard.go index 976f395933..56ade71c36 100644 --- a/mihomo/adapter/outbound/wireguard.go +++ b/mihomo/adapter/outbound/wireguard.go @@ -304,13 +304,16 @@ func (w *WireGuard) init(ctx context.Context) error { ipcConf := "private_key=" + w.option.PrivateKey if len(w.option.Peers) > 0 { for i, peer := range w.option.Peers { + ipcConf += "\npublic_key=" + peer.PublicKey destination, err := w.resolve(ctx, peer.Addr()) if err != nil { // !!! do not set initErr here !!! // let us can retry domain resolve in next time return E.Cause(err, "resolve endpoint domain for peer ", i) } - ipcConf += "\npublic_key=" + peer.PublicKey + if len(w.option.Peers) == 1 { // must call SetConnectAddr if isConnect == true + w.bind.SetConnectAddr(destination) + } ipcConf += "\nendpoint=" + destination.String() if peer.PreSharedKey != "" { ipcConf += "\npreshared_key=" + peer.PreSharedKey @@ -332,7 +335,7 @@ func (w *WireGuard) init(ctx context.Context) error { // let us can retry domain resolve in next time return E.Cause(err, "resolve endpoint domain") } - w.bind.SetConnectAddr(destination) + w.bind.SetConnectAddr(destination) // must call SetConnectAddr if isConnect == true ipcConf += "\nendpoint=" + destination.String() if w.option.PreSharedKey != "" { ipcConf += "\npreshared_key=" + w.option.PreSharedKey diff --git a/mihomo/config/config.go b/mihomo/config/config.go index 74a2053e33..fd12d2dbd5 100644 --- a/mihomo/config/config.go +++ b/mihomo/config/config.go @@ -212,6 +212,7 @@ type RawDNS struct { IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` UseHosts bool `yaml:"use-hosts" json:"use-hosts"` UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` + RespectRules bool `yaml:"respect-rules" json:"respect-rules"` NameServer []string `yaml:"nameserver" json:"nameserver"` Fallback []string `yaml:"fallback" json:"fallback"` FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` @@ -1039,7 +1040,7 @@ func hostWithDefaultPort(host string, defPort string) (string, error) { return net.JoinHostPort(hostname, port), nil } -func parseNameServer(servers []string, preferH3 bool) ([]dns.NameServer, error) { +func parseNameServer(servers []string, respectRules bool, preferH3 bool) ([]dns.NameServer, error) { var nameservers []dns.NameServer for idx, server := range servers { @@ -1114,6 +1115,10 @@ func parseNameServer(servers []string, preferH3 bool) ([]dns.NameServer, error) return nil, fmt.Errorf("DNS NameServer[%d] format error: %s", idx, err.Error()) } + if respectRules && len(proxyName) == 0 { + proxyName = dns.RespectRules + } + nameservers = append( nameservers, dns.NameServer{ @@ -1130,7 +1135,7 @@ func parseNameServer(servers []string, preferH3 bool) ([]dns.NameServer, error) func init() { dns.ParseNameServer = func(servers []string) ([]dns.NameServer, error) { // using by wireguard - return parseNameServer(servers, false) + return parseNameServer(servers, false, false) } } @@ -1156,7 +1161,7 @@ func parsePureDNSServer(server string) string { } } } -func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, preferH3 bool) (*orderedmap.OrderedMap[string, []dns.NameServer], error) { +func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, respectRules bool, preferH3 bool) (*orderedmap.OrderedMap[string, []dns.NameServer], error) { policy := orderedmap.New[string, []dns.NameServer]() updatedPolicy := orderedmap.New[string, any]() re := regexp.MustCompile(`[a-zA-Z0-9\-]+\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?`) @@ -1202,7 +1207,7 @@ func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], rulePro if err != nil { return nil, err } - nameservers, err := parseNameServer(servers, preferH3) + nameservers, err := parseNameServer(servers, respectRules, preferH3) if err != nil { return nil, err } @@ -1296,6 +1301,10 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul return nil, fmt.Errorf("if DNS configuration is turned on, NameServer cannot be empty") } + if cfg.RespectRules && len(cfg.ProxyServerNameserver) == 0 { + return nil, fmt.Errorf("if “respect-rules” is turned on, “proxy-server-nameserver” cannot be empty") + } + dnsCfg := &DNS{ Enable: cfg.Enable, Listen: cfg.Listen, @@ -1310,26 +1319,26 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul }, } var err error - if dnsCfg.NameServer, err = parseNameServer(cfg.NameServer, cfg.PreferH3); err != nil { + if dnsCfg.NameServer, err = parseNameServer(cfg.NameServer, cfg.RespectRules, cfg.PreferH3); err != nil { return nil, err } - if dnsCfg.Fallback, err = parseNameServer(cfg.Fallback, cfg.PreferH3); err != nil { + if dnsCfg.Fallback, err = parseNameServer(cfg.Fallback, cfg.RespectRules, cfg.PreferH3); err != nil { return nil, err } - if dnsCfg.NameServerPolicy, err = parseNameServerPolicy(cfg.NameServerPolicy, ruleProviders, cfg.PreferH3); err != nil { + if dnsCfg.NameServerPolicy, err = parseNameServerPolicy(cfg.NameServerPolicy, ruleProviders, cfg.RespectRules, cfg.PreferH3); err != nil { return nil, err } - if dnsCfg.ProxyServerNameserver, err = parseNameServer(cfg.ProxyServerNameserver, cfg.PreferH3); err != nil { + if dnsCfg.ProxyServerNameserver, err = parseNameServer(cfg.ProxyServerNameserver, false, cfg.PreferH3); err != nil { return nil, err } if len(cfg.DefaultNameserver) == 0 { return nil, errors.New("default nameserver should have at least one nameserver") } - if dnsCfg.DefaultNameserver, err = parseNameServer(cfg.DefaultNameserver, cfg.PreferH3); err != nil { + if dnsCfg.DefaultNameserver, err = parseNameServer(cfg.DefaultNameserver, false, cfg.PreferH3); err != nil { return nil, err } // check default nameserver is pure ip addr diff --git a/mihomo/dns/dial.go b/mihomo/dns/dial.go new file mode 100644 index 0000000000..431707c56f --- /dev/null +++ b/mihomo/dns/dial.go @@ -0,0 +1,169 @@ +package dns + +import ( + "context" + "fmt" + "net" + "net/netip" + "strings" + + N "github.com/metacubex/mihomo/common/net" + "github.com/metacubex/mihomo/component/dialer" + "github.com/metacubex/mihomo/component/resolver" + C "github.com/metacubex/mihomo/constant" + "github.com/metacubex/mihomo/tunnel" + "github.com/metacubex/mihomo/tunnel/statistic" +) + +const RespectRules = "RULES" + +type dialHandler func(ctx context.Context, network, addr string) (net.Conn, error) + +func getDialHandler(r *Resolver, proxyAdapter C.ProxyAdapter, proxyName string, opts ...dialer.Option) dialHandler { + return func(ctx context.Context, network, addr string) (net.Conn, error) { + if len(proxyName) == 0 && proxyAdapter == nil { + opts = append(opts, dialer.WithResolver(r)) + return dialer.DialContext(ctx, network, addr, opts...) + } else { + metadata := &C.Metadata{ + NetWork: C.TCP, + Type: C.INNER, + } + err := metadata.SetRemoteAddress(addr) // tcp can resolve host by remote + if err != nil { + return nil, err + } + if !strings.Contains(network, "tcp") { + metadata.NetWork = C.UDP + if !metadata.Resolved() { + // udp must resolve host first + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + } + + var rule C.Rule + if proxyAdapter == nil { + if proxyName == RespectRules { + if !metadata.Resolved() { + // resolve here before ResolveMetadata to avoid its inner resolver.ResolveIP + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + proxyAdapter, rule, err = tunnel.ResolveMetadata(metadata) + if err != nil { + return nil, err + } + } else { + var ok bool + proxyAdapter, ok = tunnel.Proxies()[proxyName] + if !ok { + opts = append(opts, dialer.WithInterface(proxyName)) + } + } + } + + if strings.Contains(network, "tcp") { + if proxyAdapter == nil { + opts = append(opts, dialer.WithResolver(r)) + return dialer.DialContext(ctx, network, addr, opts...) + } + + if proxyAdapter.IsL3Protocol(metadata) { // L3 proxy should resolve domain before to avoid loopback + if !metadata.Resolved() { + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + metadata.Host = "" // clear host to avoid double resolve in proxy + } + + conn, err := proxyAdapter.DialContext(ctx, metadata, opts...) + if err != nil { + return nil, err + } + + conn = statistic.NewTCPTracker(conn, statistic.DefaultManager, metadata, rule, 0, 0, false) + + return conn, nil + } else { + if proxyAdapter == nil { + return dialer.DialContext(ctx, network, addr, opts...) + } + + if !proxyAdapter.SupportUDP() { + return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) + } + + packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...) + if err != nil { + return nil, err + } + + packetConn = statistic.NewUDPTracker(packetConn, statistic.DefaultManager, metadata, rule, 0, 0, false) + + return N.NewBindPacketConn(packetConn, metadata.UDPAddr()), nil + } + } + } +} + +func listenPacket(ctx context.Context, proxyAdapter C.ProxyAdapter, proxyName string, network string, addr string, r *Resolver, opts ...dialer.Option) (net.PacketConn, error) { + metadata := &C.Metadata{ + NetWork: C.UDP, + Type: C.INNER, + } + err := metadata.SetRemoteAddress(addr) + if err != nil { + return nil, err + } + if !metadata.Resolved() { + // udp must resolve host first + dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r) + if err != nil { + return nil, err + } + metadata.DstIP = dstIP + } + + var rule C.Rule + if proxyAdapter == nil { + if proxyName == RespectRules { + proxyAdapter, rule, err = tunnel.ResolveMetadata(metadata) + if err != nil { + return nil, err + } + } else { + var ok bool + proxyAdapter, ok = tunnel.Proxies()[proxyName] + if !ok { + opts = append(opts, dialer.WithInterface(proxyName)) + } + } + } + + if proxyAdapter == nil { + return dialer.NewDialer(opts...).ListenPacket(ctx, network, "", netip.AddrPortFrom(metadata.DstIP, metadata.DstPort)) + } + + if !proxyAdapter.SupportUDP() { + return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) + } + + packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...) + if err != nil { + return nil, err + } + + packetConn = statistic.NewUDPTracker(packetConn, statistic.DefaultManager, metadata, rule, 0, 0, false) + + return packetConn, nil +} diff --git a/mihomo/dns/util.go b/mihomo/dns/util.go index 516c63fb8d..9c5a0b585a 100644 --- a/mihomo/dns/util.go +++ b/mihomo/dns/util.go @@ -7,18 +7,13 @@ import ( "fmt" "net" "net/netip" - "strconv" "strings" "time" - N "github.com/metacubex/mihomo/common/net" "github.com/metacubex/mihomo/common/nnip" "github.com/metacubex/mihomo/common/picker" - "github.com/metacubex/mihomo/component/dialer" "github.com/metacubex/mihomo/component/resolver" - C "github.com/metacubex/mihomo/constant" "github.com/metacubex/mihomo/log" - "github.com/metacubex/mihomo/tunnel" D "github.com/miekg/dns" "github.com/samber/lo" @@ -175,120 +170,6 @@ func msgToDomain(msg *D.Msg) string { return "" } -type dialHandler func(ctx context.Context, network, addr string) (net.Conn, error) - -func getDialHandler(r *Resolver, proxyAdapter C.ProxyAdapter, proxyName string, opts ...dialer.Option) dialHandler { - return func(ctx context.Context, network, addr string) (net.Conn, error) { - if len(proxyName) == 0 && proxyAdapter == nil { - opts = append(opts, dialer.WithResolver(r)) - return dialer.DialContext(ctx, network, addr, opts...) - } else { - host, port, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - uintPort, err := strconv.ParseUint(port, 10, 16) - if err != nil { - return nil, err - } - if proxyAdapter == nil { - var ok bool - proxyAdapter, ok = tunnel.Proxies()[proxyName] - if !ok { - opts = append(opts, dialer.WithInterface(proxyName)) - } - } - - if strings.Contains(network, "tcp") { - // tcp can resolve host by remote - metadata := &C.Metadata{ - NetWork: C.TCP, - Host: host, - DstPort: uint16(uintPort), - } - if proxyAdapter != nil { - if proxyAdapter.IsL3Protocol(metadata) { // L3 proxy should resolve domain before to avoid loopback - dstIP, err := resolver.ResolveIPWithResolver(ctx, host, r) - if err != nil { - return nil, err - } - metadata.Host = "" - metadata.DstIP = dstIP - } - return proxyAdapter.DialContext(ctx, metadata, opts...) - } - opts = append(opts, dialer.WithResolver(r)) - return dialer.DialContext(ctx, network, addr, opts...) - } else { - // udp must resolve host first - dstIP, err := resolver.ResolveIPWithResolver(ctx, host, r) - if err != nil { - return nil, err - } - metadata := &C.Metadata{ - NetWork: C.UDP, - Host: "", - DstIP: dstIP, - DstPort: uint16(uintPort), - } - if proxyAdapter == nil { - return dialer.DialContext(ctx, network, addr, opts...) - } - - if !proxyAdapter.SupportUDP() { - return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) - } - - packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...) - if err != nil { - return nil, err - } - - return N.NewBindPacketConn(packetConn, metadata.UDPAddr()), nil - } - } - } -} - -func listenPacket(ctx context.Context, proxyAdapter C.ProxyAdapter, proxyName string, network string, addr string, r *Resolver, opts ...dialer.Option) (net.PacketConn, error) { - host, port, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - uintPort, err := strconv.ParseUint(port, 10, 16) - if err != nil { - return nil, err - } - if proxyAdapter == nil { - var ok bool - proxyAdapter, ok = tunnel.Proxies()[proxyName] - if !ok { - opts = append(opts, dialer.WithInterface(proxyName)) - } - } - - // udp must resolve host first - dstIP, err := resolver.ResolveIPWithResolver(ctx, host, r) - if err != nil { - return nil, err - } - metadata := &C.Metadata{ - NetWork: C.UDP, - Host: "", - DstIP: dstIP, - DstPort: uint16(uintPort), - } - if proxyAdapter == nil { - return dialer.NewDialer(opts...).ListenPacket(ctx, network, "", netip.AddrPortFrom(metadata.DstIP, metadata.DstPort)) - } - - if !proxyAdapter.SupportUDP() { - return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter) - } - - return proxyAdapter.ListenPacketContext(ctx, metadata, opts...) -} - func batchExchange(ctx context.Context, clients []dnsClient, m *D.Msg) (msg *D.Msg, cache bool, err error) { cache = true fast, ctx := picker.WithTimeout[*D.Msg](ctx, resolver.DefaultDNSTimeout) diff --git a/mihomo/docs/config.yaml b/mihomo/docs/config.yaml index fe8501636e..bd263c1448 100644 --- a/mihomo/docs/config.yaml +++ b/mihomo/docs/config.yaml @@ -209,7 +209,7 @@ tunnels: # one line config dns: cache-algorithm: arc enable: false # 关闭将使用系统 DNS - prefer-h3: true # 开启 DoH 支持 HTTP/3,将并发尝试 + prefer-h3: false # 是否开启 DoH 支持 HTTP/3,将并发尝试 listen: 0.0.0.0:53 # 开启 DNS 服务器监听 # ipv6: false # false 将返回 AAAA 的空结果 # ipv6-timeout: 300 # 单位:ms,内部双栈并发时,向上游查询 AAAA 时,等待 AAAA 的时间,默认 100ms @@ -227,6 +227,13 @@ dns: # use-hosts: true # 查询 hosts + # 配置后面的nameserver、fallback和nameserver-policy向dns服务器的连接过程是否遵守遵守rules规则 + # 如果为false(默认值)则这三部分的dns服务器在未特别指定的情况下会直连 + # 如果为true,将会按照rules的规则匹配链接方式(走代理或直连),如果有特别指定则任然以指定值为准 + # 仅当proxy-server-nameserver非空时可以开启此选项, 强烈不建议和prefer-h3一起使用 + # 此外,这三者配置中的dns服务器如果出现域名会采用default-nameserver配置项解析,也请确保正确配置default-nameserver + respect-rules: false + # 配置不使用 fake-ip 的域名 # fake-ip-filter: # - '*.lan' @@ -244,6 +251,7 @@ dns: - https://mozilla.cloudflare-dns.com/dns-query#DNS&h3=true # 指定策略组和使用 HTTP/3 - dhcp://en0 # dns from dhcp - quic://dns.adguard.com:784 # DNS over QUIC + # - '8.8.8.8#RULES' # 效果同respect-rules,但仅对该服务器生效 # - '8.8.8.8#en0' # 兼容指定 DNS 出口网卡 # 当配置 fallback 时,会查询 nameserver 中返回的 IP 是否为 CN,非必要配置 diff --git a/mihomo/tunnel/tunnel.go b/mihomo/tunnel/tunnel.go index 608ab2c5bd..78628a5687 100644 --- a/mihomo/tunnel/tunnel.go +++ b/mihomo/tunnel/tunnel.go @@ -278,7 +278,7 @@ func preHandleMetadata(metadata *C.Metadata) error { return nil } -func resolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err error) { +func ResolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err error) { if metadata.SpecialProxy != "" { var exist bool proxy, exist = proxies[metadata.SpecialProxy] @@ -375,7 +375,7 @@ func handleUDPConn(packet C.PacketAdapter) { cond.Broadcast() }() - proxy, rule, err := resolveMetadata(metadata) + proxy, rule, err := ResolveMetadata(metadata) if err != nil { log.Warnln("[UDP] Parse metadata failed: %s", err.Error()) return @@ -486,7 +486,7 @@ func handleTCPConn(connCtx C.ConnContext) { }() } - proxy, rule, err := resolveMetadata(metadata) + proxy, rule, err := ResolveMetadata(metadata) if err != nil { log.Warnln("[Metadata] parse failed: %s", err.Error()) return diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/Makefile b/openwrt-packages/luci-app-ikoolproxy/Makefile similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/Makefile rename to openwrt-packages/luci-app-ikoolproxy/Makefile diff --git a/openwrt-packages/luci-app-ikoolproxy/README.md b/openwrt-packages/luci-app-ikoolproxy/README.md index a882cd9e4a..d5070022cd 100644 --- a/openwrt-packages/luci-app-ikoolproxy/README.md +++ b/openwrt-packages/luci-app-ikoolproxy/README.md @@ -1,5 +1,5 @@ ## How to build -git clone -b main --single-branch https://github.com/ilxp/luci-app-ikoolproxy.git package/diy/ikoolproxy +git clone -b main https://github.com/ilxp/luci-app-ikoolproxy.git package/diy/luci-app-ikoolproxy ## 无法下载证书声明(2024.06.10版本已经解决此问题,感谢[Black-Steel](https://github.com/Black-Steel)): 目前因为openwrt的openssl升级为3.0了。导致ikoolproxy无法下载证书。lean大佬的lede可以回退。openwrt则不行。 @@ -74,7 +74,7 @@ CONFIG_PACKAGE_lua-openssl=y 此文件为 UCI 配置文件, 配置方式可参考 Wiki -> Use-UCI-system 和 OpenWrt Wiki ## 6、编译 -git clone https://github.com/1wrt/luci-app-ikoolproxy.git package/luci-app-ikoolproxy +git clone -b main https://github.com/ilxp/luci-app-ikoolproxy.git package/diy/luci-app-ikoolproxy make && sudo make install diff --git a/openwrt-packages/luci-app-ikoolproxy/change.log b/openwrt-packages/luci-app-ikoolproxy/change.log index 9e182de618..065c2c3940 100644 --- a/openwrt-packages/luci-app-ikoolproxy/change.log +++ b/openwrt-packages/luci-app-ikoolproxy/change.log @@ -1,7 +1,6 @@ ## 更新:2024年6月10日: 1、修复openssl3.0无法下载证书问题,感谢[Black-Steel](https://github.com/Black-Steel) 2、修复init.d目录下的脚本有stop实现,但是没定义停止编号。会导致一些异常。感谢[lnc1995](https://github.com/lnc1995) -3、重新移动目录,方便编译ipk。 ## 更新:2024年1月24日: 1、支持5.10以及以上内核。但是因为openssl升级可能会导致证书无法下载。目前lean的openssl可以回退到老的版本即可。 diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/controller/koolproxy.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/controller/koolproxy.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/controller/koolproxy.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/controller/koolproxy.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/add_rule.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/add_rule.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/add_rule.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/add_rule.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/basic.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/basic.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/basic.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/basic.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/black_list.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/black_list.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/black_list.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/black_list.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/cert.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/cert.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/cert.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/cert.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/control.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/control.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/control.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/control.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/custom_rule.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/custom_rule.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/custom_rule.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/custom_rule.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_black_list.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_black_list.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_black_list.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_black_list.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_white_list.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_white_list.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_white_list.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/ip_white_list.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/rss_rule.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/rss_rule.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/rss_rule.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/rss_rule.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/tips.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/tips.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/tips.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/tips.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/update_log.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/update_log.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/update_log.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/update_log.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/white_list.lua b/openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/white_list.lua similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/white_list.lua rename to openwrt-packages/luci-app-ikoolproxy/luasrc/model/cbi/koolproxy/white_list.lua diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/cadvalue.htm b/openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/cadvalue.htm similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/cadvalue.htm rename to openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/cadvalue.htm diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/caupload.htm b/openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/caupload.htm similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/caupload.htm rename to openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/caupload.htm diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/koolproxy_status.htm b/openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/koolproxy_status.htm similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/koolproxy_status.htm rename to openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/koolproxy_status.htm diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/tips.htm b/openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/tips.htm similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/luasrc/view/koolproxy/tips.htm rename to openwrt-packages/luci-app-ikoolproxy/luasrc/view/koolproxy/tips.htm diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adblock b/openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adblock similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adblock rename to openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adblock diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adblockip b/openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adblockip similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adblockip rename to openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adblockip diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adbypass b/openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adbypass similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adbypass rename to openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adbypass diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adbypassip b/openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adbypassip similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/adblocklist/adbypassip rename to openwrt-packages/luci-app-ikoolproxy/root/etc/adblocklist/adbypassip diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/config/koolproxy b/openwrt-packages/luci-app-ikoolproxy/root/etc/config/koolproxy similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/config/koolproxy rename to openwrt-packages/luci-app-ikoolproxy/root/etc/config/koolproxy diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/init.d/koolproxy b/openwrt-packages/luci-app-ikoolproxy/root/etc/init.d/koolproxy old mode 100644 new mode 100755 similarity index 99% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/init.d/koolproxy rename to openwrt-packages/luci-app-ikoolproxy/root/etc/init.d/koolproxy index fe2635b7dc..6e615f6c2c --- a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/init.d/koolproxy +++ b/openwrt-packages/luci-app-ikoolproxy/root/etc/init.d/koolproxy @@ -8,6 +8,7 @@ # START=99 +STOP=99 USE_PROCD=1 CONFIG=koolproxy diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/uci-defaults/luci-koolproxy b/openwrt-packages/luci-app-ikoolproxy/root/etc/uci-defaults/luci-koolproxy old mode 100644 new mode 100755 similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/etc/uci-defaults/luci-koolproxy rename to openwrt-packages/luci-app-ikoolproxy/root/etc/uci-defaults/luci-koolproxy diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/lib/upgrade/keep.d/koolproxy b/openwrt-packages/luci-app-ikoolproxy/root/lib/upgrade/keep.d/koolproxy similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/lib/upgrade/keep.d/koolproxy rename to openwrt-packages/luci-app-ikoolproxy/root/lib/upgrade/keep.d/koolproxy diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/sbin/adblockplus b/openwrt-packages/luci-app-ikoolproxy/root/usr/sbin/adblockplus old mode 100644 new mode 100755 similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/sbin/adblockplus rename to openwrt-packages/luci-app-ikoolproxy/root/usr/sbin/adblockplus diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/adblock.conf b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/adblock.conf similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/adblock.conf rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/adblock.conf diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/camanagement b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/camanagement old mode 100644 new mode 100755 similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/camanagement rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/camanagement diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/gen_ca.sh b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/gen_ca.sh old mode 100644 new mode 100755 similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/gen_ca.sh rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/gen_ca.sh diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/openssl.cnf b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/openssl.cnf similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/openssl.cnf rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/openssl.cnf diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/rules/user.txt b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/rules/user.txt similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/rules/user.txt rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/rules/user.txt diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/source.list b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/source.list similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/source.list rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/source.list diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/user.txt b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/user.txt similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/data/user.txt rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/data/user.txt diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/dnsmasq.adblock b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/dnsmasq.adblock similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/dnsmasq.adblock rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/dnsmasq.adblock diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/koolproxy_ipset.conf b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/koolproxy_ipset.conf similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/koolproxy_ipset.conf rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/koolproxy_ipset.conf diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/kpupdate b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/kpupdate old mode 100644 new mode 100755 similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/koolproxy/kpupdate rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/koolproxy/kpupdate diff --git a/openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/rpcd/acl.d/luci-app-ikoolproxy.json b/openwrt-packages/luci-app-ikoolproxy/root/usr/share/rpcd/acl.d/luci-app-ikoolproxy.json similarity index 100% rename from openwrt-packages/luci-app-ikoolproxy/luci-app-ikoolproxy/root/usr/share/rpcd/acl.d/luci-app-ikoolproxy.json rename to openwrt-packages/luci-app-ikoolproxy/root/usr/share/rpcd/acl.d/luci-app-ikoolproxy.json diff --git a/openwrt-packages/smartdns/Makefile b/openwrt-packages/smartdns/Makefile index 90395bb9cd..37b2e91829 100644 --- a/openwrt-packages/smartdns/Makefile +++ b/openwrt-packages/smartdns/Makefile @@ -5,12 +5,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=smartdns -PKG_VERSION:=45 +PKG_VERSION:=46 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/pymumu/smartdns/tar.gz/Release$(PKG_VERSION)? -PKG_HASH:=b17d82738f3ae73f5a60ad25c824e1000c05a6d060d08ebd1ec295a2caa5b495 +PKG_HASH:=6594d21c0e354b67d4b5918e11eff21e6314e247b9e6e28be1ece4168c368fc1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-Release$(PKG_VERSION) PKG_MAINTAINER:=Nick Peng @@ -61,4 +61,4 @@ define Package/smartdns/install $(INSTALL_CONF) $(CURDIR)/conf/smartdns.conf $(1)/etc/config/smartdns endef -$(eval $(call BuildPackage,smartdns)) \ No newline at end of file +$(eval $(call BuildPackage,smartdns)) diff --git a/shadowsocks-rust/Cargo.lock b/shadowsocks-rust/Cargo.lock index 4c67757650..34323cf3dc 100644 --- a/shadowsocks-rust/Cargo.lock +++ b/shadowsocks-rust/Cargo.lock @@ -233,9 +233,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.72" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -1410,9 +1410,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3935c160d00ac752e09787e6e6bfc26494c2183cc922f1bc678a60d4733bc2" +checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545" [[package]] name = "httpdate" @@ -2114,9 +2114,9 @@ dependencies = [ [[package]] name = "object" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" +checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" dependencies = [ "memchr", ] @@ -3098,7 +3098,7 @@ dependencies = [ [[package]] name = "shadowsocks" -version = "1.19.0" +version = "1.19.1" dependencies = [ "aes", "arc-swap", @@ -3164,7 +3164,7 @@ dependencies = [ [[package]] name = "shadowsocks-rust" -version = "1.19.3" +version = "1.19.4" dependencies = [ "base64 0.22.1", "build-time", @@ -3184,7 +3184,6 @@ dependencies = [ "log4rs", "mimalloc", "mime", - "num_cpus", "qrcode", "rand", "reqwest", @@ -3206,10 +3205,11 @@ dependencies = [ [[package]] name = "shadowsocks-service" -version = "1.19.3" +version = "1.19.4" dependencies = [ "arc-swap", "async-trait", + "brotli", "bson", "byte_string", "byteorder", @@ -3217,6 +3217,7 @@ dependencies = [ "cfg-if", "env_logger", "etherparse", + "flate2", "futures", "hickory-resolver", "http 1.1.0", @@ -3250,6 +3251,7 @@ dependencies = [ "tun2", "webpki-roots 0.26.2", "windows-sys 0.52.0", + "zstd", ] [[package]] diff --git a/shadowsocks-rust/Cargo.toml b/shadowsocks-rust/Cargo.toml index c41c5578ef..a7fb48c33a 100644 --- a/shadowsocks-rust/Cargo.toml +++ b/shadowsocks-rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-rust" -version = "1.19.3" +version = "1.19.4" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -239,7 +239,6 @@ rand = "0.8" futures = "0.3" tokio = { version = "1", features = ["rt", "signal"] } -num_cpus = "1.15" ipnet = { version = "2.9", optional = true } @@ -249,7 +248,7 @@ jemallocator = { version = "0.5", optional = true } snmalloc-rs = { version = "0.3", optional = true } rpmalloc = { version = "0.2", optional = true } -shadowsocks-service = { version = "1.19.3", path = "./crates/shadowsocks-service" } +shadowsocks-service = { version = "1.19.4", path = "./crates/shadowsocks-service" } windows-service = { version = "0.7", optional = true } diff --git a/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml b/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml index 3eaa9de071..74fcfd8518 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml +++ b/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-service" -version = "1.19.3" +version = "1.19.4" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -98,7 +98,15 @@ local-tun = ["local", "etherparse", "tun2", "smoltcp"] local-fake-dns = ["local", "trust-dns", "sled", "bson"] # sslocal support online URL (SIP008 Online Configuration Delivery) # https://shadowsocks.org/doc/sip008.html -local-online-config = ["local", "local-http", "mime", "http"] +local-online-config = [ + "local", + "local-http", + "mime", + "http", + "flate2", + "brotli", + "zstd", +] # Enable Stream Cipher Protocol # WARN: Stream Cipher Protocol is proved to be insecure @@ -136,7 +144,7 @@ rand = { version = "0.8", features = ["small_rng"] } sled = { version = "0.34.7", optional = true } futures = "0.3" -tokio = { version = "1.5", features = [ +tokio = { version = "1.38", features = [ "io-util", "macros", "net", @@ -167,7 +175,11 @@ idna = "1.0" ipnet = "2.9" iprange = "0.6" regex = "1.4" + mime = { version = "0.3", optional = true } +flate2 = { version = "1.0", optional = true } +brotli = { version = "6.0", optional = true } +zstd = { version = "0.13", optional = true } tun2 = { version = "1", optional = true, features = ["async"] } etherparse = { version = "0.15", optional = true } diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/config.rs b/shadowsocks-rust/crates/shadowsocks-service/src/config.rs index 5f7e80faa3..5301ebdf91 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/config.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/config.rs @@ -70,7 +70,14 @@ use serde::{Deserialize, Serialize}; use shadowsocks::relay::socks5::Address; use shadowsocks::{ config::{ - ManagerAddr, Mode, ReplayAttackPolicy, ServerAddr, ServerConfig, ServerSource, ServerUser, ServerUserManager, + ManagerAddr, + Mode, + ReplayAttackPolicy, + ServerAddr, + ServerConfig, + ServerSource, + ServerUser, + ServerUserManager, ServerWeight, }, crypto::CipherKind, @@ -1352,11 +1359,6 @@ pub struct Config { /// This is normally for auto-reloading if implementation supports. pub config_path: Option, - #[doc(hidden)] - /// Workers in runtime - /// It should be replaced with metrics APIs: https://github.com/tokio-rs/tokio/issues/4073 - pub worker_count: usize, - /// OnlineConfiguration (SIP008) /// https://shadowsocks.org/doc/sip008.html #[cfg(feature = "local-online-config")] @@ -1481,8 +1483,6 @@ impl Config { config_path: None, - worker_count: 1, - #[cfg(feature = "local-online-config")] online_config: None, } diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs b/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs index 2db5426a15..07fab66ece 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs @@ -64,7 +64,7 @@ impl Timer for TokioTimer { fn reset(&self, sleep: &mut Pin>, new_deadline: Instant) { if let Some(sleep) = sleep.as_mut().downcast_mut_pin::() { - sleep.reset(new_deadline.into()) + sleep.reset(new_deadline) } } } @@ -105,6 +105,17 @@ impl Clone for HttpClient { } } +impl Default for HttpClient +where + B: Body + Send + Unpin + Debug + 'static, + B::Data: Send, + B::Error: Into>, +{ + fn default() -> Self { + HttpClient::new() + } +} + impl HttpClient where B: Body + Send + Unpin + Debug + 'static, diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs b/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs index 8bc709e60f..98f38f1dc1 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs @@ -232,8 +232,8 @@ impl Server { balancer_builder.check_best_interval(intv); } - for server in &config.server { - balancer_builder.add_server(server.clone()); + for server in config.server { + balancer_builder.add_server(server); } balancer_builder.build().await? diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/content_encoding.rs b/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/content_encoding.rs new file mode 100644 index 0000000000..550c0e4b72 --- /dev/null +++ b/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/content_encoding.rs @@ -0,0 +1,92 @@ +//! HTTP Body Content-Encoding + +use std::io::{self, Cursor, Read}; + +use futures::StreamExt; +use http::HeaderValue; +use http_body_util::BodyExt; +use hyper::body::Body; + +/// HTTP Content-Encoding +#[derive(Debug, Clone, Copy, Default)] +pub enum ContentEncoding { + #[default] + Identity, + Deflate, + Gzip, + Br, + Zstd, +} + +#[derive(Debug, Clone, Copy)] +pub struct ContentEncodingError; + +impl<'a> TryFrom<&'a HeaderValue> for ContentEncoding { + type Error = ContentEncodingError; + + fn try_from(value: &'a HeaderValue) -> Result { + if value == HeaderValue::from_static("identity") { + Ok(ContentEncoding::Identity) + } else if value == HeaderValue::from_static("deflate") { + Ok(ContentEncoding::Deflate) + } else if value == HeaderValue::from_static("gzip") { + Ok(ContentEncoding::Gzip) + } else if value == HeaderValue::from_static("br") { + Ok(ContentEncoding::Br) + } else if value == HeaderValue::from_static("zstd") { + Ok(ContentEncoding::Zstd) + } else { + Err(ContentEncodingError) + } + } +} + +/// Read data from body, decode automatically with specific Content-Encoding +pub async fn read_body(encoding: ContentEncoding, body: &mut B) -> io::Result> +where + B: Body + Sized + Unpin + 'static, + B::Data: AsRef<[u8]>, + B::Error: Into>, +{ + let mut raw_body = Vec::new(); + + let mut body_stream = body.into_data_stream(); + while let Some(data) = body_stream.next().await { + match data { + Ok(data) => raw_body.extend_from_slice(data.as_ref()), + Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), + } + } + + match encoding { + ContentEncoding::Identity => Ok(raw_body), + + ContentEncoding::Deflate => { + use flate2::read::DeflateDecoder; + + let mut decoder = DeflateDecoder::new(&raw_body[..]); + let mut decoded_body = Vec::new(); + decoder.read_to_end(&mut decoded_body)?; + + Ok(decoded_body) + } + + ContentEncoding::Gzip => { + use flate2::read::GzDecoder; + + let mut decoder = GzDecoder::new(&raw_body[..]); + let mut decoded_body = Vec::new(); + decoder.read_to_end(&mut decoded_body)?; + + Ok(decoded_body) + } + + ContentEncoding::Br => { + let mut decoded_body = Vec::new(); + brotli::BrotliDecompress(&mut Cursor::new(&raw_body[..]), &mut decoded_body)?; + Ok(decoded_body) + } + + ContentEncoding::Zstd => zstd::decode_all(Cursor::new(&raw_body[..])), + } +} diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs b/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs index 09b2e9b784..7dfa0b4a41 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs @@ -13,13 +13,16 @@ use crate::{ local::{context::ServiceContext, http::HttpClient, loadbalancing::PingBalancer}, }; -use futures::StreamExt; -use http_body_util::BodyExt; +use http::StatusCode; use log::{debug, error, trace, warn}; use mime::Mime; use shadowsocks::config::ServerSource; use tokio::time; +use self::content_encoding::{read_body, ContentEncoding}; + +mod content_encoding; + /// OnlineConfigService builder pattern pub struct OnlineConfigServiceBuilder { context: Arc, @@ -87,6 +90,7 @@ impl OnlineConfigService { let req = match hyper::Request::builder() .header("User-Agent", SHADOWSOCKS_USER_AGENT) + .header("Accept-Encoding", "deflate, gzip, br, zstd") .method("GET") .uri(&self.config_url) .body(String::new()) @@ -98,7 +102,7 @@ impl OnlineConfigService { } }; - let rsp = match self.http_client.send_request(self.context.clone(), req, None).await { + let mut rsp = match self.http_client.send_request(self.context.clone(), req, None).await { Ok(r) => r, Err(err) => { error!("server-loader task failed to get {}, error: {}", self.config_url, err); @@ -106,8 +110,23 @@ impl OnlineConfigService { } }; + trace!("sever-loader task fetch response: {:?}", rsp); + let fetch_time = Instant::now(); + // Check status=200 + if rsp.status() != StatusCode::OK { + error!( + "server-loader task failed to get {}, status: {}", + self.config_url, + rsp.status() + ); + return Err(io::Error::new( + io::ErrorKind::Other, + format!("status: {}", rsp.status()), + )); + } + // Content-Type: application/json; charset=utf-8 // mandatory in standard SIP008 match rsp.headers().get("Content-Type") { @@ -139,32 +158,21 @@ impl OnlineConfigService { } } - let mut collected_body = Vec::new(); - if let Some(content_length) = rsp.headers().get(http::header::CONTENT_LENGTH) { - if let Ok(content_length) = content_length.to_str() { - if let Ok(content_length) = content_length.parse::() { - collected_body.reserve(content_length); + let content_encoding = match rsp.headers().get(http::header::CONTENT_ENCODING) { + None => ContentEncoding::Identity, + Some(ce) => match ContentEncoding::try_from(ce) { + Ok(ce) => ce, + Err(..) => { + error!("unrecognized Content-Encoding: {:?}", ce); + return Err(io::Error::new(io::ErrorKind::Other, "unrecognized Content-Encoding")); } - } + }, }; - let mut body = rsp.into_data_stream(); - while let Some(data) = body.next().await { - match data { - Ok(data) => collected_body.extend_from_slice(&data), - Err(err) => { - error!( - "server-loader task failed to read body, url: {}, error: {}", - self.config_url, err - ); - return Err(io::Error::new(io::ErrorKind::Other, err)); - } - } - } - - let parsed_body = match String::from_utf8(collected_body) { + let body = read_body(content_encoding, &mut rsp).await?; + let parsed_body = match String::from_utf8(body) { Ok(b) => b, - Err(..) => return Err(io::Error::new(io::ErrorKind::Other, "body contains non-utf8 bytes").into()), + Err(..) => return Err(io::Error::new(io::ErrorKind::Other, "body contains non-utf8 bytes")), }; let online_config = match Config::load_from_str(&parsed_body, ConfigType::OnlineConfig) { @@ -174,7 +182,7 @@ impl OnlineConfigService { "server-loader task failed to load from url: {}, error: {}", self.config_url, err ); - return Err(io::Error::new(io::ErrorKind::Other, err).into()); + return Err(io::Error::new(io::ErrorKind::Other, err)); } }; @@ -183,7 +191,7 @@ impl OnlineConfigService { "server-loader task failed to load from url: {}, error: {}", self.config_url, err ); - return Err(io::Error::new(io::ErrorKind::Other, err).into()); + return Err(io::Error::new(io::ErrorKind::Other, err)); } let after_read_time = Instant::now(); diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs b/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs index f5db629dad..ae27acee60 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs @@ -85,7 +85,6 @@ pub struct ManagerBuilder { acl: Option>, ipv6_first: bool, security: SecurityConfig, - worker_count: usize, } impl ManagerBuilder { @@ -106,7 +105,6 @@ impl ManagerBuilder { acl: None, ipv6_first: false, security: SecurityConfig::default(), - worker_count: 1, } } @@ -156,14 +154,6 @@ impl ManagerBuilder { self.security = security; } - /// Set runtime worker count - /// - /// Should be replaced with tokio's metric API when it is stablized. - /// https://github.com/tokio-rs/tokio/issues/4073 - pub fn set_worker_count(&mut self, worker_count: usize) { - self.worker_count = worker_count; - } - /// Build the manager server instance pub async fn build(self) -> io::Result { let listener = ManagerListener::bind(&self.context, &self.svr_cfg.addr).await?; @@ -178,7 +168,6 @@ impl ManagerBuilder { acl: self.acl, ipv6_first: self.ipv6_first, security: self.security, - worker_count: self.worker_count, listener, }) } @@ -196,7 +185,6 @@ pub struct Manager { acl: Option>, ipv6_first: bool, security: SecurityConfig, - worker_count: usize, listener: ManagerListener, } @@ -293,8 +281,6 @@ impl Manager { server_builder.set_security_config(&self.security); - server_builder.set_worker_count(self.worker_count); - let server_port = server_builder.server_config().addr().port(); let mut servers = self.servers.lock().await; diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs b/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs index bb4c6b47b4..d58ab45013 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs @@ -150,10 +150,6 @@ pub async fn run(config: Config) -> io::Result<()> { server_builder.set_ipv6_first(config.ipv6_first); } - if config.worker_count >= 1 { - server_builder.set_worker_count(config.worker_count); - } - server_builder.set_security_config(&config.security); let server = server_builder.build().await?; diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs b/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs index f06811aee3..2bd0d03371 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs @@ -30,7 +30,6 @@ pub struct ServerBuilder { udp_capacity: Option, manager_addr: Option, accept_opts: AcceptOpts, - worker_count: usize, } impl ServerBuilder { @@ -48,7 +47,6 @@ impl ServerBuilder { udp_capacity: None, manager_addr: None, accept_opts: AcceptOpts::default(), - worker_count: 1, } } @@ -83,14 +81,6 @@ impl ServerBuilder { self.manager_addr = Some(manager_addr); } - /// Set runtime worker count - /// - /// Should be replaced with tokio's metric API when it is stablized. - /// https://github.com/tokio-rs/tokio/issues/4073 - pub fn set_worker_count(&mut self, worker_count: usize) { - self.worker_count = worker_count; - } - /// Get server's configuration pub fn server_config(&self) -> &ServerConfig { &self.svr_cfg @@ -147,7 +137,7 @@ impl ServerBuilder { let mut udp_server = None; if self.svr_cfg.mode().enable_udp() { - let mut server = UdpServer::new( + let server = UdpServer::new( self.context.clone(), self.svr_cfg.clone(), self.udp_expiry_duration, @@ -155,7 +145,6 @@ impl ServerBuilder { self.accept_opts.clone(), ) .await?; - server.set_worker_count(self.worker_count); udp_server = Some(server); } diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs b/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs index 0cc3cb45f6..9efbdfcea7 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs @@ -27,7 +27,7 @@ use shadowsocks::{ }, ServerConfig, }; -use tokio::{sync::mpsc, task::JoinHandle, time}; +use tokio::{runtime::Handle, sync::mpsc, task::JoinHandle, time}; #[cfg(windows)] use windows_sys::Win32::Networking::WinSock::WSAEAFNOSUPPORT; @@ -93,7 +93,6 @@ pub struct UdpServer { keepalive_tx: mpsc::Sender, keepalive_rx: mpsc::Receiver, time_to_live: Duration, - worker_count: usize, listener: Arc, svr_cfg: ServerConfig, } @@ -140,17 +139,11 @@ impl UdpServer { keepalive_tx, keepalive_rx, time_to_live, - worker_count: 1, listener, svr_cfg, }) } - #[inline] - pub(crate) fn set_worker_count(&mut self, worker_count: usize) { - self.worker_count = worker_count; - } - /// Server's configuration pub fn server_config(&self) -> &ServerConfig { &self.svr_cfg @@ -173,7 +166,7 @@ impl UdpServer { let mut orx_opt = None; - let cpus = self.worker_count; + let cpus = Handle::current().metrics().num_workers(); let mut other_receivers = Vec::new(); if cpus > 1 { let (otx, orx) = mpsc::channel((cpus - 1) * 16); diff --git a/shadowsocks-rust/crates/shadowsocks/Cargo.toml b/shadowsocks-rust/crates/shadowsocks/Cargo.toml index 92adbcda5a..736a4c63e4 100644 --- a/shadowsocks-rust/crates/shadowsocks/Cargo.toml +++ b/shadowsocks-rust/crates/shadowsocks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks" -version = "1.19.0" +version = "1.19.1" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" diff --git a/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs b/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs index 0915b70958..d2ee79919b 100644 --- a/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs +++ b/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs @@ -40,9 +40,9 @@ pub trait DnsResolve { #[cfg(feature = "hickory-dns")] pub struct HickoryDnsSystemResolver { resolver: ArcSwap, - #[cfg_attr(windows, allow(dead_code))] + #[cfg_attr(any(windows, target_os = "android"), allow(dead_code))] connect_opts: ConnectOpts, - #[cfg_attr(windows, allow(dead_code))] + #[cfg_attr(any(windows, target_os = "android"), allow(dead_code))] opts: Option, } diff --git a/shadowsocks-rust/debian/changelog b/shadowsocks-rust/debian/changelog index 51a74b159b..f535a66cef 100644 --- a/shadowsocks-rust/debian/changelog +++ b/shadowsocks-rust/debian/changelog @@ -1,3 +1,13 @@ +shadowsocks-rust (1.19.4) unstable; urgency=medium + + ## Features + + - `local-online-config`: Making HTTP requests with `local-http`'s HttpClient implementation, mainly for supporting `outbound_*` socket configurations. + + ## Miscellaneous + + - Fixed build failures on some platforms. + shadowsocks-rust (1.19.3) unstable; urgency=medium ## Breaking Changes diff --git a/shadowsocks-rust/src/service/local.rs b/shadowsocks-rust/src/service/local.rs index d5bc5d5837..78a0f86281 100644 --- a/shadowsocks-rust/src/service/local.rs +++ b/shadowsocks-rust/src/service/local.rs @@ -24,7 +24,12 @@ use shadowsocks_service::shadowsocks::relay::socks5::Address; use shadowsocks_service::{ acl::AccessControl, config::{ - read_variable_field_value, Config, ConfigType, LocalConfig, LocalInstanceConfig, ProtocolType, + read_variable_field_value, + Config, + ConfigType, + LocalConfig, + LocalInstanceConfig, + ProtocolType, ServerInstanceConfig, }, local::{loadbalancing::PingBalancer, Server}, @@ -39,7 +44,8 @@ use shadowsocks_service::{ use crate::logging; use crate::{ config::{Config as ServiceConfig, RuntimeMode}, - monitor, vparser, + monitor, + vparser, }; #[cfg(feature = "local-dns")] diff --git a/shadowsocks-rust/src/service/manager.rs b/shadowsocks-rust/src/service/manager.rs index b232da3054..0d44a8fad9 100644 --- a/shadowsocks-rust/src/service/manager.rs +++ b/shadowsocks-rust/src/service/manager.rs @@ -500,23 +500,18 @@ pub fn create(matches: &ArgMatches) -> Result<(Runtime, impl Future Builder::new_current_thread(), #[cfg(feature = "multi-threaded")] RuntimeMode::MultiThread => { let mut builder = Builder::new_multi_thread(); if let Some(worker_threads) = service_config.runtime.worker_count { - worker_count = worker_threads; builder.worker_threads(worker_threads); - } else { - worker_count = num_cpus::get(); } builder } }; - config.worker_count = worker_count; let runtime = builder.enable_all().build().expect("create tokio Runtime"); diff --git a/shadowsocks-rust/src/service/server.rs b/shadowsocks-rust/src/service/server.rs index 4efaacbc11..bdb01262c2 100644 --- a/shadowsocks-rust/src/service/server.rs +++ b/shadowsocks-rust/src/service/server.rs @@ -520,23 +520,18 @@ pub fn create(matches: &ArgMatches) -> Result<(Runtime, impl Future Builder::new_current_thread(), #[cfg(feature = "multi-threaded")] RuntimeMode::MultiThread => { let mut builder = Builder::new_multi_thread(); if let Some(worker_threads) = service_config.runtime.worker_count { - worker_count = worker_threads; builder.worker_threads(worker_threads); - } else { - worker_count = num_cpus::get(); } builder } }; - config.worker_count = worker_count; let runtime = builder.enable_all().build().expect("create tokio Runtime"); diff --git a/sing-box/adapter/router.go b/sing-box/adapter/router.go index 54dc3396dc..fc15d323b8 100644 --- a/sing-box/adapter/router.go +++ b/sing-box/adapter/router.go @@ -10,15 +10,18 @@ import ( "github.com/sagernet/sing-tun" "github.com/sagernet/sing/common/control" N "github.com/sagernet/sing/common/network" + "github.com/sagernet/sing/common/x/list" "github.com/sagernet/sing/service" mdns "github.com/miekg/dns" + "go4.org/netipx" ) type Router interface { Service PreStarter PostStarter + Cleanup() error Outbounds() []Outbound Outbound(tag string) (Outbound, bool) @@ -92,12 +95,21 @@ type DNSRule interface { } type RuleSet interface { + Name() string StartContext(ctx context.Context, startContext RuleSetStartContext) error Metadata() RuleSetMetadata + ExtractIPSet() []*netipx.IPSet + IncRef() + DecRef() + Cleanup() + RegisterCallback(callback RuleSetUpdateCallback) *list.Element[RuleSetUpdateCallback] + UnregisterCallback(element *list.Element[RuleSetUpdateCallback]) Close() error HeadlessRule } +type RuleSetUpdateCallback func(it RuleSet) + type RuleSetMetadata struct { ContainsProcessRule bool ContainsWIFIRule bool diff --git a/sing-box/box.go b/sing-box/box.go index 4e7a9879b8..75646de585 100644 --- a/sing-box/box.go +++ b/sing-box/box.go @@ -303,7 +303,11 @@ func (s *Box) start() error { return E.Cause(err, "initialize inbound/", in.Type(), "[", tag, "]") } } - return s.postStart() + err = s.postStart() + if err != nil { + return err + } + return s.router.Cleanup() } func (s *Box) postStart() error { @@ -313,16 +317,28 @@ func (s *Box) postStart() error { return E.Cause(err, "start ", serviceName) } } - for _, outbound := range s.outbounds { - if lateOutbound, isLateOutbound := outbound.(adapter.PostStarter); isLateOutbound { + // TODO: reorganize ALL start order + for _, out := range s.outbounds { + if lateOutbound, isLateOutbound := out.(adapter.PostStarter); isLateOutbound { err := lateOutbound.PostStart() if err != nil { - return E.Cause(err, "post-start outbound/", outbound.Tag()) + return E.Cause(err, "post-start outbound/", out.Tag()) } } } - - return s.router.PostStart() + err := s.router.PostStart() + if err != nil { + return err + } + for _, in := range s.inbounds { + if lateInbound, isLateInbound := in.(adapter.PostStarter); isLateInbound { + err = lateInbound.PostStart() + if err != nil { + return E.Cause(err, "post-start inbound/", in.Tag()) + } + } + } + return nil } func (s *Box) Close() error { diff --git a/sing-box/go.mod b/sing-box/go.mod index 5680cd7f0c..982c8c5e71 100644 --- a/sing-box/go.mod +++ b/sing-box/go.mod @@ -33,7 +33,7 @@ require ( github.com/sagernet/sing-shadowsocks v0.2.6 github.com/sagernet/sing-shadowsocks2 v0.2.0 github.com/sagernet/sing-shadowtls v0.1.4 - github.com/sagernet/sing-tun v0.4.0-beta.9 + github.com/sagernet/sing-tun v0.4.0-beta.9.0.20240612134350-d9e105f31ddc github.com/sagernet/sing-vmess v0.1.8 github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6 @@ -81,7 +81,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/qtls-go1-20 v0.4.1 // indirect - github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba // indirect + github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a // indirect github.com/sagernet/nftables v0.3.0-beta.2 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect diff --git a/sing-box/go.sum b/sing-box/go.sum index b999efc28a..4bf2f32c33 100644 --- a/sing-box/go.sum +++ b/sing-box/go.sum @@ -104,8 +104,8 @@ github.com/sagernet/gomobile v0.1.3 h1:ohjIb1Ou2+1558PnZour3od69suSuvkdSVOlO1tC4 github.com/sagernet/gomobile v0.1.3/go.mod h1:Pqq2+ZVvs10U7xK+UwJgwYWUykewi8H6vlslAO73n9E= github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f h1:NkhuupzH5ch7b/Y/6ZHJWrnNLoiNnSJaow6DPb8VW2I= github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f/go.mod h1:KXmw+ouSJNOsuRpg4wgwwCQuunrGz4yoAqQjsLjc6N0= -github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba h1:EY5AS7CCtfmARNv2zXUOrsEMPFDGYxaw65JzA2p51Vk= -github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= +github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZNjr6sGeT00J8uU7JF4cNUdb44/Duis= +github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= github.com/sagernet/nftables v0.3.0-beta.2 h1:yKqMl4Dpb6nKxAmlE6fXjJRlLO2c1f2wyNFBg4hBr8w= github.com/sagernet/nftables v0.3.0-beta.2/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8= github.com/sagernet/quic-go v0.45.0-beta.2 h1:nWq9KJTR+cGU8UU4E20XNjdM6QgbLkBgpq+NCExg5RY= @@ -127,8 +127,8 @@ github.com/sagernet/sing-shadowsocks2 v0.2.0 h1:wpZNs6wKnR7mh1wV9OHwOyUr21VkS3wK github.com/sagernet/sing-shadowsocks2 v0.2.0/go.mod h1:RnXS0lExcDAovvDeniJ4IKa2IuChrdipolPYWBv9hWQ= github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k= github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4= -github.com/sagernet/sing-tun v0.4.0-beta.9 h1:/5hXQ0u7tHtngfXozRc+o/gt6zfHBHMOwSIHXF0+S3I= -github.com/sagernet/sing-tun v0.4.0-beta.9/go.mod h1:uoRiCzWHzHLw/angVqXDzUNiQcMRl/ZrElJryQLJFhY= +github.com/sagernet/sing-tun v0.4.0-beta.9.0.20240612134350-d9e105f31ddc h1:PQ4nwGJnKc7R0Ko7ve/1+63C30BQ58OaTwfSAwNkIl0= +github.com/sagernet/sing-tun v0.4.0-beta.9.0.20240612134350-d9e105f31ddc/go.mod h1:yJeD6MuK7/UWrl7Y1IN8PHYuz1T0Qo4L8vrgrTz3k+k= github.com/sagernet/sing-vmess v0.1.8 h1:XVWad1RpTy9b5tPxdm5MCU8cGfrTGdR8qCq6HV2aCNc= github.com/sagernet/sing-vmess v0.1.8/go.mod h1:vhx32UNzTDUkNwOyIjcZQohre1CaytquC5mPplId8uA= github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ= diff --git a/sing-box/inbound/tun.go b/sing-box/inbound/tun.go index a0e7f5fa51..6c77b8222e 100644 --- a/sing-box/inbound/tun.go +++ b/sing-box/inbound/tun.go @@ -20,25 +20,34 @@ import ( M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/ranges" + "github.com/sagernet/sing/common/x/list" + + "go4.org/netipx" ) var _ adapter.Inbound = (*Tun)(nil) type Tun struct { - tag string - ctx context.Context - router adapter.Router - logger log.ContextLogger - inboundOptions option.InboundOptions - tunOptions tun.Options - endpointIndependentNat bool - udpTimeout int64 - stack string - tunIf tun.Tun - tunStack tun.Stack - platformInterface platform.Interface - platformOptions option.TunPlatformOptions - autoRedirect tun.AutoRedirect + tag string + ctx context.Context + router adapter.Router + logger log.ContextLogger + inboundOptions option.InboundOptions + tunOptions tun.Options + endpointIndependentNat bool + udpTimeout int64 + stack string + tunIf tun.Tun + tunStack tun.Stack + platformInterface platform.Interface + platformOptions option.TunPlatformOptions + autoRedirect tun.AutoRedirect + routeRuleSet []adapter.RuleSet + routeRuleSetCallback []*list.Element[adapter.RuleSetUpdateCallback] + routeExcludeRuleSet []adapter.RuleSet + routeExcludeRuleSetCallback []*list.Element[adapter.RuleSetUpdateCallback] + routeAddressSet []*netipx.IPSet + routeExcludeAddressSet []*netipx.IPSet } func NewTun(ctx context.Context, router adapter.Router, logger log.ContextLogger, tag string, options option.TunInboundOptions, platformInterface platform.Interface) (*Tun, error) { @@ -81,6 +90,7 @@ func NewTun(ctx context.Context, router adapter.Router, logger log.ContextLogger Inet4Address: options.Inet4Address, Inet6Address: options.Inet6Address, AutoRoute: options.AutoRoute, + AutoRedirect: options.AutoRedirect, StrictRoute: options.StrictRoute, IncludeInterface: options.IncludeInterface, ExcludeInterface: options.ExcludeInterface, @@ -108,15 +118,33 @@ func NewTun(ctx context.Context, router adapter.Router, logger log.ContextLogger } disableNFTables, dErr := strconv.ParseBool(os.Getenv("DISABLE_NFTABLES")) inbound.autoRedirect, err = tun.NewAutoRedirect(tun.AutoRedirectOptions{ - TunOptions: &inbound.tunOptions, - Context: ctx, - Handler: inbound, - Logger: logger, - TableName: "sing-box", - DisableNFTables: dErr == nil && disableNFTables, + TunOptions: &inbound.tunOptions, + Context: ctx, + Handler: inbound, + Logger: logger, + TableName: "sing-box", + DisableNFTables: dErr == nil && disableNFTables, + RouteAddressSet: &inbound.routeAddressSet, + RouteExcludeAddressSet: &inbound.routeExcludeAddressSet, }) if err != nil { - return nil, E.Cause(err, "initialize auto redirect") + return nil, E.Cause(err, "initialize auto-redirect") + } + for _, routeAddressSet := range options.RouteAddressSet { + ruleSet, loaded := router.RuleSet(routeAddressSet) + if !loaded { + return nil, E.New("parse route_address_set: rule-set not found: ", routeAddressSet) + } + ruleSet.IncRef() + inbound.routeRuleSet = append(inbound.routeRuleSet, ruleSet) + } + for _, routeExcludeAddressSet := range options.RouteExcludeAddressSet { + ruleSet, loaded := router.RuleSet(routeExcludeAddressSet) + if !loaded { + return nil, E.New("parse route_exclude_address_set: rule-set not found: ", routeExcludeAddressSet) + } + ruleSet.IncRef() + inbound.routeExcludeRuleSet = append(inbound.routeExcludeRuleSet, ruleSet) } } return inbound, nil @@ -215,18 +243,46 @@ func (t *Tun) Start() error { if err != nil { return err } - if t.autoRedirect != nil { - monitor.Start("initiating auto redirect") - err = t.autoRedirect.Start() - monitor.Finish() - if err != nil { - return E.Cause(err, "auto redirect") - } - } t.logger.Info("started at ", t.tunOptions.Name) return nil } +func (t *Tun) PostStart() error { + monitor := taskmonitor.New(t.logger, C.StartTimeout) + if t.autoRedirect != nil { + t.routeAddressSet = common.FlatMap(t.routeRuleSet, adapter.RuleSet.ExtractIPSet) + t.routeExcludeAddressSet = common.FlatMap(t.routeExcludeRuleSet, adapter.RuleSet.ExtractIPSet) + monitor.Start("initiating auto-redirect") + err := t.autoRedirect.Start() + monitor.Finish() + if err != nil { + return E.Cause(err, "auto-redirect") + } + for _, routeRuleSet := range t.routeRuleSet { + t.routeRuleSetCallback = append(t.routeRuleSetCallback, routeRuleSet.RegisterCallback(t.updateRouteAddressSet)) + routeRuleSet.DecRef() + } + for _, routeExcludeRuleSet := range t.routeExcludeRuleSet { + t.routeExcludeRuleSetCallback = append(t.routeExcludeRuleSetCallback, routeExcludeRuleSet.RegisterCallback(t.updateRouteAddressSet)) + routeExcludeRuleSet.DecRef() + } + t.routeAddressSet = nil + t.routeExcludeAddressSet = nil + } + return nil +} + +func (t *Tun) updateRouteAddressSet(it adapter.RuleSet) { + t.routeAddressSet = common.FlatMap(t.routeRuleSet, adapter.RuleSet.ExtractIPSet) + t.routeExcludeAddressSet = common.FlatMap(t.routeExcludeRuleSet, adapter.RuleSet.ExtractIPSet) + err := t.autoRedirect.UpdateRouteAddressSet() + if err != nil { + t.logger.Error("update route address set ", it.Name(), ": ", err) + } + t.routeAddressSet = nil + t.routeExcludeAddressSet = nil +} + func (t *Tun) Close() error { return common.Close( t.tunStack, diff --git a/sing-box/option/tun.go b/sing-box/option/tun.go index 91930866ac..34cc84ba4a 100644 --- a/sing-box/option/tun.go +++ b/sing-box/option/tun.go @@ -3,30 +3,42 @@ package option import "net/netip" type TunInboundOptions struct { - InterfaceName string `json:"interface_name,omitempty"` - MTU uint32 `json:"mtu,omitempty"` - GSO bool `json:"gso,omitempty"` - Inet4Address Listable[netip.Prefix] `json:"inet4_address,omitempty"` - Inet6Address Listable[netip.Prefix] `json:"inet6_address,omitempty"` - AutoRoute bool `json:"auto_route,omitempty"` - AutoRedirect bool `json:"auto_redirect,omitempty"` - StrictRoute bool `json:"strict_route,omitempty"` - Inet4RouteAddress Listable[netip.Prefix] `json:"inet4_route_address,omitempty"` - Inet6RouteAddress Listable[netip.Prefix] `json:"inet6_route_address,omitempty"` - Inet4RouteExcludeAddress Listable[netip.Prefix] `json:"inet4_route_exclude_address,omitempty"` - Inet6RouteExcludeAddress Listable[netip.Prefix] `json:"inet6_route_exclude_address,omitempty"` - IncludeInterface Listable[string] `json:"include_interface,omitempty"` - ExcludeInterface Listable[string] `json:"exclude_interface,omitempty"` - IncludeUID Listable[uint32] `json:"include_uid,omitempty"` - IncludeUIDRange Listable[string] `json:"include_uid_range,omitempty"` - ExcludeUID Listable[uint32] `json:"exclude_uid,omitempty"` - ExcludeUIDRange Listable[string] `json:"exclude_uid_range,omitempty"` - IncludeAndroidUser Listable[int] `json:"include_android_user,omitempty"` - IncludePackage Listable[string] `json:"include_package,omitempty"` - ExcludePackage Listable[string] `json:"exclude_package,omitempty"` - EndpointIndependentNat bool `json:"endpoint_independent_nat,omitempty"` - UDPTimeout UDPTimeoutCompat `json:"udp_timeout,omitempty"` - Stack string `json:"stack,omitempty"` - Platform *TunPlatformOptions `json:"platform,omitempty"` + InterfaceName string `json:"interface_name,omitempty"` + MTU uint32 `json:"mtu,omitempty"` + GSO bool `json:"gso,omitempty"` + Address Listable[netip.Prefix] `json:"address,omitempty"` + AutoRoute bool `json:"auto_route,omitempty"` + AutoRedirect bool `json:"auto_redirect,omitempty"` + StrictRoute bool `json:"strict_route,omitempty"` + RouteAddress Listable[netip.Prefix] `json:"route_address,omitempty"` + RouteAddressSet Listable[string] `json:"route_address_set,omitempty"` + RouteExcludeAddress Listable[netip.Prefix] `json:"route_exclude_address,omitempty"` + RouteExcludeAddressSet Listable[string] `json:"route_exclude_address_set,omitempty"` + IncludeInterface Listable[string] `json:"include_interface,omitempty"` + ExcludeInterface Listable[string] `json:"exclude_interface,omitempty"` + IncludeUID Listable[uint32] `json:"include_uid,omitempty"` + IncludeUIDRange Listable[string] `json:"include_uid_range,omitempty"` + ExcludeUID Listable[uint32] `json:"exclude_uid,omitempty"` + ExcludeUIDRange Listable[string] `json:"exclude_uid_range,omitempty"` + IncludeAndroidUser Listable[int] `json:"include_android_user,omitempty"` + IncludePackage Listable[string] `json:"include_package,omitempty"` + ExcludePackage Listable[string] `json:"exclude_package,omitempty"` + EndpointIndependentNat bool `json:"endpoint_independent_nat,omitempty"` + UDPTimeout UDPTimeoutCompat `json:"udp_timeout,omitempty"` + Stack string `json:"stack,omitempty"` + Platform *TunPlatformOptions `json:"platform,omitempty"` InboundOptions + + // Deprecated: merged to `address` + Inet4Address Listable[netip.Prefix] `json:"inet4_address,omitempty"` + // Deprecated: merged to `address` + Inet6Address Listable[netip.Prefix] `json:"inet6_address,omitempty"` + // Deprecated: merged to `route_address` + Inet4RouteAddress Listable[netip.Prefix] `json:"inet4_route_address,omitempty"` + // Deprecated: merged to `route_address` + Inet6RouteAddress Listable[netip.Prefix] `json:"inet6_route_address,omitempty"` + // Deprecated: merged to `route_exclude_address` + Inet4RouteExcludeAddress Listable[netip.Prefix] `json:"inet4_route_exclude_address,omitempty"` + // Deprecated: merged to `route_exclude_address` + Inet6RouteExcludeAddress Listable[netip.Prefix] `json:"inet6_route_exclude_address,omitempty"` } diff --git a/sing-box/route/router.go b/sing-box/route/router.go index bc068b6fd1..21a1d56d35 100644 --- a/sing-box/route/router.go +++ b/sing-box/route/router.go @@ -728,6 +728,14 @@ func (r *Router) PostStart() error { return nil } +func (r *Router) Cleanup() error { + for _, ruleSet := range r.ruleSetMap { + ruleSet.Cleanup() + } + runtime.GC() + return nil +} + func (r *Router) Outbound(tag string) (adapter.Outbound, bool) { outbound, loaded := r.outboundByTag[tag] return outbound, loaded diff --git a/sing-box/route/rule_item_rule_set.go b/sing-box/route/rule_item_rule_set.go index 482a9c7b45..4ecf8c18f0 100644 --- a/sing-box/route/rule_item_rule_set.go +++ b/sing-box/route/rule_item_rule_set.go @@ -32,6 +32,7 @@ func (r *RuleSetItem) Start() error { if !loaded { return E.New("rule-set not found: ", tag) } + ruleSet.IncRef() r.setList = append(r.setList, ruleSet) } return nil diff --git a/sing-box/route/rule_set.go b/sing-box/route/rule_set.go index f644fb406f..ff28858e58 100644 --- a/sing-box/route/rule_set.go +++ b/sing-box/route/rule_set.go @@ -9,10 +9,13 @@ import ( "github.com/sagernet/sing-box/adapter" C "github.com/sagernet/sing-box/constant" "github.com/sagernet/sing-box/option" + "github.com/sagernet/sing/common" E "github.com/sagernet/sing/common/exceptions" "github.com/sagernet/sing/common/logger" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" + + "go4.org/netipx" ) func NewRuleSet(ctx context.Context, router adapter.Router, logger logger.ContextLogger, options option.RuleSet) (adapter.RuleSet, error) { @@ -26,6 +29,24 @@ func NewRuleSet(ctx context.Context, router adapter.Router, logger logger.Contex } } +func extractIPSetFromRule(rawRule adapter.HeadlessRule) []*netipx.IPSet { + switch rule := rawRule.(type) { + case *DefaultHeadlessRule: + return common.FlatMap(rule.destinationIPCIDRItems, func(rawItem RuleItem) []*netipx.IPSet { + switch item := rawItem.(type) { + case *IPCIDRItem: + return []*netipx.IPSet{item.ipSet} + default: + return nil + } + }) + case *LogicalHeadlessRule: + return common.FlatMap(rule.rules, extractIPSetFromRule) + default: + panic("unexpected rule type") + } +} + var _ adapter.RuleSetStartContext = (*RuleSetStartContext)(nil) type RuleSetStartContext struct { diff --git a/sing-box/route/rule_set_local.go b/sing-box/route/rule_set_local.go index 3945826708..e6d12882ac 100644 --- a/sing-box/route/rule_set_local.go +++ b/sing-box/route/rule_set_local.go @@ -9,16 +9,23 @@ import ( "github.com/sagernet/sing-box/common/srs" C "github.com/sagernet/sing-box/constant" "github.com/sagernet/sing-box/option" + "github.com/sagernet/sing/common" + "github.com/sagernet/sing/common/atomic" E "github.com/sagernet/sing/common/exceptions" F "github.com/sagernet/sing/common/format" "github.com/sagernet/sing/common/json" + "github.com/sagernet/sing/common/x/list" + + "go4.org/netipx" ) var _ adapter.RuleSet = (*LocalRuleSet)(nil) type LocalRuleSet struct { + tag string rules []adapter.HeadlessRule metadata adapter.RuleSetMetadata + refs atomic.Int32 } func NewLocalRuleSet(router adapter.Router, options option.RuleSet) (*LocalRuleSet, error) { @@ -58,16 +65,11 @@ func NewLocalRuleSet(router adapter.Router, options option.RuleSet) (*LocalRuleS metadata.ContainsProcessRule = hasHeadlessRule(plainRuleSet.Rules, isProcessHeadlessRule) metadata.ContainsWIFIRule = hasHeadlessRule(plainRuleSet.Rules, isWIFIHeadlessRule) metadata.ContainsIPCIDRRule = hasHeadlessRule(plainRuleSet.Rules, isIPCIDRHeadlessRule) - return &LocalRuleSet{rules, metadata}, nil + return &LocalRuleSet{tag: options.Tag, rules: rules, metadata: metadata}, nil } -func (s *LocalRuleSet) Match(metadata *adapter.InboundContext) bool { - for _, rule := range s.rules { - if rule.Match(metadata) { - return true - } - } - return false +func (s *LocalRuleSet) Name() string { + return s.tag } func (s *LocalRuleSet) String() string { @@ -82,6 +84,43 @@ func (s *LocalRuleSet) Metadata() adapter.RuleSetMetadata { return s.metadata } -func (s *LocalRuleSet) Close() error { +func (s *LocalRuleSet) ExtractIPSet() []*netipx.IPSet { + return common.FlatMap(s.rules, extractIPSetFromRule) +} + +func (s *LocalRuleSet) IncRef() { + s.refs.Add(1) +} + +func (s *LocalRuleSet) DecRef() { + if s.refs.Add(-1) < 0 { + panic("rule-set: negative refs") + } +} + +func (s *LocalRuleSet) Cleanup() { + if s.refs.Load() == 0 { + s.rules = nil + } +} + +func (s *LocalRuleSet) RegisterCallback(callback adapter.RuleSetUpdateCallback) *list.Element[adapter.RuleSetUpdateCallback] { return nil } + +func (s *LocalRuleSet) UnregisterCallback(element *list.Element[adapter.RuleSetUpdateCallback]) { +} + +func (s *LocalRuleSet) Close() error { + s.rules = nil + return nil +} + +func (s *LocalRuleSet) Match(metadata *adapter.InboundContext) bool { + for _, rule := range s.rules { + if rule.Match(metadata) { + return true + } + } + return false +} diff --git a/sing-box/route/rule_set_remote.go b/sing-box/route/rule_set_remote.go index 8389c2f46b..a37dc3ff34 100644 --- a/sing-box/route/rule_set_remote.go +++ b/sing-box/route/rule_set_remote.go @@ -8,20 +8,26 @@ import ( "net/http" "runtime" "strings" + "sync" "time" "github.com/sagernet/sing-box/adapter" "github.com/sagernet/sing-box/common/srs" C "github.com/sagernet/sing-box/constant" "github.com/sagernet/sing-box/option" + "github.com/sagernet/sing/common" + "github.com/sagernet/sing/common/atomic" E "github.com/sagernet/sing/common/exceptions" F "github.com/sagernet/sing/common/format" "github.com/sagernet/sing/common/json" "github.com/sagernet/sing/common/logger" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" + "github.com/sagernet/sing/common/x/list" "github.com/sagernet/sing/service" "github.com/sagernet/sing/service/pause" + + "go4.org/netipx" ) var _ adapter.RuleSet = (*RemoteRuleSet)(nil) @@ -40,6 +46,9 @@ type RemoteRuleSet struct { lastEtag string updateTicker *time.Ticker pauseManager pause.Manager + callbackAccess sync.Mutex + callbacks list.List[adapter.RuleSetUpdateCallback] + refs atomic.Int32 } func NewRemoteRuleSet(ctx context.Context, router adapter.Router, logger logger.ContextLogger, options option.RuleSet) *RemoteRuleSet { @@ -61,13 +70,8 @@ func NewRemoteRuleSet(ctx context.Context, router adapter.Router, logger logger. } } -func (s *RemoteRuleSet) Match(metadata *adapter.InboundContext) bool { - for _, rule := range s.rules { - if rule.Match(metadata) { - return true - } - } - return false +func (s *RemoteRuleSet) Name() string { + return s.options.Tag } func (s *RemoteRuleSet) String() string { @@ -116,6 +120,38 @@ func (s *RemoteRuleSet) Metadata() adapter.RuleSetMetadata { return s.metadata } +func (s *RemoteRuleSet) ExtractIPSet() []*netipx.IPSet { + return common.FlatMap(s.rules, extractIPSetFromRule) +} + +func (s *RemoteRuleSet) IncRef() { + s.refs.Add(1) +} + +func (s *RemoteRuleSet) DecRef() { + if s.refs.Add(-1) < 0 { + panic("rule-set: negative refs") + } +} + +func (s *RemoteRuleSet) Cleanup() { + if s.refs.Load() == 0 { + s.rules = nil + } +} + +func (s *RemoteRuleSet) RegisterCallback(callback adapter.RuleSetUpdateCallback) *list.Element[adapter.RuleSetUpdateCallback] { + s.callbackAccess.Lock() + defer s.callbackAccess.Unlock() + return s.callbacks.PushBack(callback) +} + +func (s *RemoteRuleSet) UnregisterCallback(element *list.Element[adapter.RuleSetUpdateCallback]) { + s.callbackAccess.Lock() + defer s.callbackAccess.Unlock() + s.callbacks.Remove(element) +} + func (s *RemoteRuleSet) loadBytes(content []byte) error { var ( plainRuleSet option.PlainRuleSet @@ -148,6 +184,16 @@ func (s *RemoteRuleSet) loadBytes(content []byte) error { s.metadata.ContainsWIFIRule = hasHeadlessRule(plainRuleSet.Rules, isWIFIHeadlessRule) s.metadata.ContainsIPCIDRRule = hasHeadlessRule(plainRuleSet.Rules, isIPCIDRHeadlessRule) s.rules = rules + s.callbackAccess.Lock() + callbacks := s.callbacks.Array() + s.callbackAccess.Unlock() + for _, callback := range callbacks { + callback(s) + } + if s.refs.Load() == 0 { + s.rules = nil + runtime.GC() + } return nil } @@ -253,7 +299,17 @@ func (s *RemoteRuleSet) fetchOnce(ctx context.Context, startContext adapter.Rule } func (s *RemoteRuleSet) Close() error { + s.rules = nil s.updateTicker.Stop() s.cancel() return nil } + +func (s *RemoteRuleSet) Match(metadata *adapter.InboundContext) bool { + for _, rule := range s.rules { + if rule.Match(metadata) { + return true + } + } + return false +} diff --git a/small/shadowsocks-rust/Makefile b/small/shadowsocks-rust/Makefile index 1b58225a28..78485cf4af 100644 --- a/small/shadowsocks-rust/Makefile +++ b/small/shadowsocks-rust/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=shadowsocks-rust -PKG_VERSION:=1.19.3 +PKG_VERSION:=1.19.4 PKG_RELEASE:=1 PKG_SOURCE_HEADER:=shadowsocks-v$(PKG_VERSION) @@ -21,29 +21,29 @@ endif ifeq ($(ARCH),aarch64) PKG_SOURCE:=$(PKG_SOURCE_HEADER).aarch64-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=5a4740b3c64b6118ec1e6f72e8ecb77a279470690c293adf9d255ba093b2095e + PKG_HASH:=833810b329ca8ef7bb2f0b10c8b23e9d10de5a484c173c79189ce1ea381fa5f2 else ifeq ($(ARCH),arm) # Referred to golang/golang-values.mk ARM_CPU_FEATURES:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))) ifeq ($(ARM_CPU_FEATURES),) PKG_SOURCE:=$(PKG_SOURCE_HEADER).arm-$(PKG_SOURCE_BODY)eabi.$(PKG_SOURCE_FOOTER) - PKG_HASH:=1d42b799ed2e506ca8204959a52054848e7081636206f6de8671e61be64e3177 + PKG_HASH:=8b4aa7f4ded1f25ea4ff18e79018ac2f8b1cd6889d0a119aff2841262f8465d3 else PKG_SOURCE:=$(PKG_SOURCE_HEADER).arm-$(PKG_SOURCE_BODY)eabihf.$(PKG_SOURCE_FOOTER) - PKG_HASH:=c336237bcd4f8a4b74ca216efdc5103e0400ed2254d985a35a7cfcd286cf17f1 + PKG_HASH:=fa87e3c89473d91102d60b1e72f467489925eea89464770228b71336ea389861 endif else ifeq ($(ARCH),i386) PKG_SOURCE:=$(PKG_SOURCE_HEADER).i686-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=ca5ae276a39a477d0d135938107a7b897fd332c2927b5560357e0fd908ae89b5 + PKG_HASH:=2cef2eef04c51a520d270b8a52f6778e1f13c5918f92b6f3490219cc72c2725f else ifeq ($(ARCH),x86_64) PKG_SOURCE:=$(PKG_SOURCE_HEADER).x86_64-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=95f884cfd436d931e5da133eda888f81b9a71aa969bc756526bd19a5f8431cfb + PKG_HASH:=99c2625d374cd248074acf97f162e7244062da6763a0f4eb2115b1bd190fc7e1 else ifeq ($(ARCH),mips) PKG_SOURCE:=$(PKG_SOURCE_HEADER).mips-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=71571f2f14a9c586a62be5da1dd16e70a713580c4527a43766f14fa5d0f05975 + PKG_HASH:=d547ae3db20816583d23d426654ec04a91646bfc679d04b1e32b66e0d8b3d67c else ifeq ($(ARCH),mipsel) PKG_SOURCE:=$(PKG_SOURCE_HEADER).mipsel-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=72e7dde0ee1f07854bb79ec885a1fce766570592cc84bbb5dfae59fda6ebf397 + PKG_HASH:=90d1d80fa269000364ead815b5349224b244da9ba3f4e30883db97aa85deb11b # Set the default value to make OpenWrt Package Checker happy else PKG_SOURCE:=dummy diff --git a/small/v2ray-geodata/Makefile b/small/v2ray-geodata/Makefile index 863ab4506d..ed36a2a812 100644 --- a/small/v2ray-geodata/Makefile +++ b/small/v2ray-geodata/Makefile @@ -21,13 +21,13 @@ define Download/geoip HASH:=19d53a38cfaaac6e5a2be6d0b2710ebf094979d33380cdcb5fd5d073f07a2248 endef -GEOSITE_VER:=20240604215500 +GEOSITE_VER:=20240612095513 GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER) define Download/geosite URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/ URL_FILE:=dlc.dat FILE:=$(GEOSITE_FILE) - HASH:=146800cbe3ec546a8ca3ed75524ad34bb3bf9d77d6f707b361eef67e4cf45d07 + HASH:=ca5a94f102523bcac15ffac41fde6e924345ea8d94f0c4a804b0264054efdb4d endef GEOSITE_IRAN_VER:=202406100028 diff --git a/xray-core/go.mod b/xray-core/go.mod index 9cf19cee51..34bc60c351 100644 --- a/xray-core/go.mod +++ b/xray-core/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0 - github.com/cloudflare/circl v1.3.8 + github.com/cloudflare/circl v1.3.9 github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344 github.com/golang/mock v1.7.0-rc.1 github.com/google/go-cmp v0.6.0 @@ -28,7 +28,7 @@ require ( golang.org/x/sys v0.21.0 golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 google.golang.org/grpc v1.64.0 - google.golang.org/protobuf v1.34.1 + google.golang.org/protobuf v1.34.2 gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489 h12.io/socks v1.0.3 lukechampine.com/blake3 v1.3.0 diff --git a/xray-core/go.sum b/xray-core/go.sum index 47787bb566..f12acf4bd2 100644 --- a/xray-core/go.sum +++ b/xray-core/go.sum @@ -17,8 +17,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= -github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= +github.com/cloudflare/circl v1.3.9 h1:QFrlgFYf2Qpi8bSpVPK1HBvWpx16v/1TZivyo7pGuBE= +github.com/cloudflare/circl v1.3.9/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -275,8 +275,8 @@ google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= diff --git a/yass/src/core/utils.cpp b/yass/src/core/utils.cpp index d033c785c0..f08e2e8310 100644 --- a/yass/src/core/utils.cpp +++ b/yass/src/core/utils.cpp @@ -22,6 +22,10 @@ #include #endif +#if defined(ADDRESS_SANITIZER) || defined(THREAD_SANITIZER) || defined(MEMORY_SANITIZER) +#include +#endif + #if defined(HAVE_MALLINFO) || defined(HAVE_MALLINFO2) || BUILDFLAG(IS_FREEBSD) #include #endif @@ -420,6 +424,11 @@ void PrintMallocStats() { #elif defined(HAVE_MIMALLOC) auto printer = [](const char* msg, void* arg) { LOG(ERROR) << "MIMALLOC: " << msg; }; mi_stats_print_out(printer, nullptr); +#elif defined(ADDRESS_SANITIZER) || defined(THREAD_SANITIZER) || defined(MEMORY_SANITIZER) + LOG(ERROR) << "SANITIZER: current allocated: " << __sanitizer_get_current_allocated_bytes() << " bytes"; + LOG(ERROR) << "SANITIZER: heap size: " << __sanitizer_get_heap_size() << " bytes"; + LOG(ERROR) << "SANITIZER: free size: " << __sanitizer_get_free_bytes() << " bytes"; + LOG(ERROR) << "SANITIZER: unmap size: " << __sanitizer_get_unmapped_bytes() << " bytes"; #elif defined(HAVE_MALLINFO2) && !defined(MEMORY_SANITIZER) struct mallinfo2 info = mallinfo2(); LOG(ERROR) << "MALLOC: non-mmapped space allocated from system: " << info.arena; diff --git a/yass/src/mac/YassViewController.mm b/yass/src/mac/YassViewController.mm index 1213e4703c..a29fa244a6 100644 --- a/yass/src/mac/YassViewController.mm +++ b/yass/src/mac/YassViewController.mm @@ -13,6 +13,7 @@ #include "core/logging.hpp" #include "core/utils.hpp" #include "crypto/crypter_export.hpp" +#include "mac/YassAppDelegate.h" #include "mac/YassWindowController.h" #include "mac/utils.h" @@ -39,11 +40,25 @@ [self.autoStart setState:(CheckLoginItemStatus(nullptr) ? NSControlStateValueOn : NSControlStateValueOff)]; [self.systemProxy setState:(GetSystemProxy() ? NSControlStateValueOn : NSControlStateValueOff)]; [self LoadChanges]; - [self.startButton setEnabled:TRUE]; - [self.stopButton setEnabled:FALSE]; } - (void)viewWillAppear { + // vc might be dismissed in starting/stopping state, refresh the state + YassAppDelegate* appDelegate = (YassAppDelegate*)NSApplication.sharedApplication.delegate; + switch ([appDelegate getState]) { + case STARTED: + [self Started]; + break; + case START_FAILED: + [self StartFailed]; + break; + case STOPPED: + [self Stopped]; + break; + default: + break; + } + [self.view.window center]; } diff --git a/yt-dlp/CONTRIBUTING.md b/yt-dlp/CONTRIBUTING.md index 837b600e31..aeba3c44d1 100644 --- a/yt-dlp/CONTRIBUTING.md +++ b/yt-dlp/CONTRIBUTING.md @@ -266,7 +266,7 @@ After you have ensured this site is distributing its content legally, you can fo $ hatch fmt --check ``` - You can use `hatch fmt` to automatically fix problems. + You can use `hatch fmt` to automatically fix problems. Rules that the linter/formatter enforces should not be disabled with `# noqa` unless a maintainer requests it. The only exception allowed is for old/printf-style string formatting in GraphQL query templates (use `# noqa: UP031`). 1. Make sure your code works under all [Python](https://www.python.org/) versions supported by yt-dlp, namely CPython and PyPy for Python 3.8 and above. Backward compatibility is not required for even older versions of Python. 1. When the tests pass, [add](https://git-scm.com/docs/git-add) the new files, [commit](https://git-scm.com/docs/git-commit) them and [push](https://git-scm.com/docs/git-push) the result, like this: diff --git a/yt-dlp/bundle/py2exe.py b/yt-dlp/bundle/py2exe.py index 5fbe55e465..5b7f4883bc 100755 --- a/yt-dlp/bundle/py2exe.py +++ b/yt-dlp/bundle/py2exe.py @@ -44,7 +44,7 @@ def main(): 'Cryptodome', # requests >=2.32.0 breaks py2exe builds due to certifi dependency 'requests', - 'urllib3' + 'urllib3', ], 'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'], # Modules that are only imported dynamically must be added here diff --git a/yt-dlp/bundle/pyinstaller.py b/yt-dlp/bundle/pyinstaller.py index db9dbfde51..4184c4bc9f 100755 --- a/yt-dlp/bundle/pyinstaller.py +++ b/yt-dlp/bundle/pyinstaller.py @@ -68,7 +68,7 @@ def exe(onedir): 'dist/', onedir and f'{name}/', name, - OS_NAME == 'win32' and '.exe' + OS_NAME == 'win32' and '.exe', ))) @@ -113,7 +113,7 @@ def windows_set_version(exe, version): ), kids=[ StringFileInfo([StringTable('040904B0', [ - StringStruct('Comments', 'yt-dlp%s Command Line Interface' % suffix), + StringStruct('Comments', f'yt-dlp{suffix} Command Line Interface'), StringStruct('CompanyName', 'https://github.com/yt-dlp'), StringStruct('FileDescription', 'yt-dlp%s' % (MACHINE and f' ({MACHINE})')), StringStruct('FileVersion', version), @@ -123,8 +123,8 @@ def windows_set_version(exe, version): StringStruct('ProductName', f'yt-dlp{suffix}'), StringStruct( 'ProductVersion', f'{version}{suffix} on Python {platform.python_version()}'), - ])]), VarFileInfo([VarStruct('Translation', [0, 1200])]) - ] + ])]), VarFileInfo([VarStruct('Translation', [0, 1200])]), + ], )) diff --git a/yt-dlp/devscripts/bash-completion.py b/yt-dlp/devscripts/bash-completion.py index 9b4a9d4e2f..3918ebde86 100755 --- a/yt-dlp/devscripts/bash-completion.py +++ b/yt-dlp/devscripts/bash-completion.py @@ -9,8 +9,8 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import yt_dlp -BASH_COMPLETION_FILE = "completions/bash/yt-dlp" -BASH_COMPLETION_TEMPLATE = "devscripts/bash-completion.in" +BASH_COMPLETION_FILE = 'completions/bash/yt-dlp' +BASH_COMPLETION_TEMPLATE = 'devscripts/bash-completion.in' def build_completion(opt_parser): @@ -21,9 +21,9 @@ def build_completion(opt_parser): opts_flag.append(option.get_opt_string()) with open(BASH_COMPLETION_TEMPLATE) as f: template = f.read() - with open(BASH_COMPLETION_FILE, "w") as f: + with open(BASH_COMPLETION_FILE, 'w') as f: # just using the special char - filled_template = template.replace("{{flags}}", " ".join(opts_flag)) + filled_template = template.replace('{{flags}}', ' '.join(opts_flag)) f.write(filled_template) diff --git a/yt-dlp/devscripts/make_changelog.py b/yt-dlp/devscripts/make_changelog.py index 8e199e7d0e..00634fb911 100644 --- a/yt-dlp/devscripts/make_changelog.py +++ b/yt-dlp/devscripts/make_changelog.py @@ -223,10 +223,10 @@ class Changelog: return message if not sep else f'{message}{sep}{rest}' - def _format_message_link(self, message, hash): - assert message or hash, 'Improperly defined commit message or override' - message = message if message else hash[:HASH_LENGTH] - return f'[{message}]({self.repo_url}/commit/{hash})' if hash else message + def _format_message_link(self, message, commit_hash): + assert message or commit_hash, 'Improperly defined commit message or override' + message = message if message else commit_hash[:HASH_LENGTH] + return f'[{message}]({self.repo_url}/commit/{commit_hash})' if commit_hash else message def _format_issues(self, issues): return ', '.join(f'[#{issue}]({self.repo_url}/issues/{issue})' for issue in issues) @@ -356,7 +356,7 @@ class CommitRange: logger.info(f'CHANGE {self._commits[commit.hash]} -> {commit}') self._commits[commit.hash] = commit - self._commits = {key: value for key, value in reversed(self._commits.items())} + self._commits = dict(reversed(self._commits.items())) def groups(self): group_dict = defaultdict(list) diff --git a/yt-dlp/devscripts/make_readme.py b/yt-dlp/devscripts/make_readme.py index 2270b31d3b..cbb5859aa1 100755 --- a/yt-dlp/devscripts/make_readme.py +++ b/yt-dlp/devscripts/make_readme.py @@ -51,7 +51,7 @@ PATCHES = ( ), ( # Headings r'(?m)^ (\w.+\n)( (?=\w))?', - r'## \1' + r'## \1', ), ( # Fixup `--date` formatting rf'(?m)( --date DATE.+({delim}[^\[]+)*)\[.+({delim}.+)*$', @@ -61,26 +61,26 @@ PATCHES = ( ), ( # Do not split URLs rf'({delim[:-1]})? (?P