Merge master into staging-next

authored by nixpkgs-ci[bot] and committed by GitHub bb90e78d c9252789

+3848 -3730
+6
.github/workflows/check-shell.yml
··· 44 44 45 45 - uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31 46 46 47 + - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 48 + with: 49 + # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere. 50 + name: nixpkgs-ci 51 + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" 52 + 47 53 - name: Build shell 48 54 run: nix-build untrusted/ci -A shell
+6
.github/workflows/lib-tests.yml
··· 32 32 with: 33 33 extra_nix_config: sandbox = true 34 34 35 + - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 36 + with: 37 + # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere. 38 + name: nixpkgs-ci 39 + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" 40 + 35 41 - name: Building Nixpkgs lib-tests 36 42 run: | 37 43 nix-build untrusted/ci -A lib-tests
+3 -6
ci/OWNERS
··· 15 15 16 16 # CI 17 17 /.github/*_TEMPLATE* @SigmaSquadron 18 - /.github/actions @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther 19 - /.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther 20 - /.github/workflows/check-format.yml @infinisil @wolfgangwalther 21 - /.github/workflows/codeowners-v2.yml @infinisil @wolfgangwalther 22 - /.github/workflows/nixpkgs-vet.yml @infinisil @philiptaron @wolfgangwalther 23 - /ci @infinisil @philiptaron @NixOS/Security @wolfgangwalther 18 + /.github/actions @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron 19 + /.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron 20 + /ci @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron 24 21 /ci/OWNERS @infinisil @philiptaron 25 22 26 23 # Development support
+4
doc/release-notes/rl-2505.section.md
··· 28 28 - Applications linked against different Mesa versions than installed on the system should now work correctly going forward (however, applications against older Mesa, e.g. from Nixpkgs releases before 25.05, remain broken) 29 29 - Packages that used to depend on Mesa for libgbm or libdri should use `libgbm` or `dri-pkgconfig-stub` as inputs, respectively 30 30 31 + - GNU Taler has been updated to version 1.0. 32 + This marks a significant milestone as the GNU Taler payment system is now available in Swiss Francs for individuals and businesses in Switzerland. 33 + For more details, see the [upstream release notes](https://www.taler.net/en/news/2025-01.html). 34 + 31 35 - OpenSSH has been updated from 9.9p2 to 10.0p2, dropping support for DSA keys and adding a new `ssh-auth` binary to handle user authentication in a different address space from unauthenticated sessions. See the [full changelog](https://www.openwall.com/lists/oss-security/2025/04/09/1) for more details. 32 36 33 37 - Emacs has been updated to 30.1.
+1 -1
lib/tests/maintainers.nix
··· 54 54 55 55 missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers); 56 56 57 - success = pkgs.runCommand "checked-maintainers-success" { } ">$out"; 57 + success = pkgs.runCommand "checked-maintainers-success" { } "mkdir $out"; 58 58 59 59 failure = 60 60 pkgs.runCommand "checked-maintainers-failure"
+10 -1
lib/tests/release.nix
··· 28 28 in 29 29 pkgsBB.symlinkJoin { 30 30 name = "nixpkgs-lib-tests"; 31 - paths = map testWithNix nixVersions; 31 + paths = map testWithNix nixVersions ++ [ 32 + (import ./maintainers.nix { 33 + inherit pkgs; 34 + lib = import ../.; 35 + }) 36 + (import ./teams.nix { 37 + inherit pkgs; 38 + lib = import ../.; 39 + }) 40 + ]; 32 41 }
-8
lib/tests/test-with-nix.nix
··· 19 19 buildInputs = [ 20 20 (import ./check-eval.nix) 21 21 (import ./fetchers.nix) 22 - (import ./maintainers.nix { 23 - inherit pkgs; 24 - lib = import ../.; 25 - }) 26 - (import ./teams.nix { 27 - inherit pkgs; 28 - lib = import ../.; 29 - }) 30 22 (import ../path/tests { 31 23 inherit pkgs; 32 24 })
+15 -1
maintainers/maintainer-list.nix
··· 2644 2644 githubId = 9315; 2645 2645 name = "Zhong Jianxin"; 2646 2646 }; 2647 + b-m-f = { 2648 + email = "maximilian@sodawa.com"; 2649 + github = "b-m-f"; 2650 + githubId = 2843450; 2651 + name = "Maximilian Ehlers"; 2652 + }; 2647 2653 b-rodrigues = { 2648 2654 email = "bruno@brodrigues.co"; 2649 2655 github = "b-rodrigues"; ··· 15567 15573 name = "Max Niederman"; 15568 15574 keys = [ { fingerprint = "1DE4 424D BF77 1192 5DC4 CF5E 9AED 8814 81D8 444E"; } ]; 15569 15575 }; 15576 + max06 = { 15577 + email = "max06.net@outlook.com"; 15578 + github = "max06"; 15579 + githubId = 7556827; 15580 + name = "Flo"; 15581 + }; 15570 15582 maxbrunet = { 15571 15583 email = "max@brnt.mx"; 15572 15584 github = "maxbrunet"; ··· 18099 18111 github = "numinit"; 18100 18112 githubId = 369111; 18101 18113 keys = [ 18102 - # >=2025 18114 + # >=2025, stays in one place 18103 18115 { fingerprint = "FD28 F9C9 81C5 D78E 56E8 8311 5C3E B94D 198F 1491"; } 18116 + # >=2025, travels with me 18117 + { fingerprint = "C48F 475F 30A9 B192 3213 D5D5 C6E2 4809 77B2 F2F4"; } 18104 18118 # <=2024 18105 18119 { fingerprint = "190B DA97 F616 DE35 6899 ED17 F819 F1AF 2FC1 C1FF"; } 18106 18120 ];
+1 -1
nixos/modules/programs/vivid.nix
··· 59 59 ]; 60 60 }; 61 61 62 - meta.maintainers = with lib.maintainers; [ blackheaven ]; 62 + meta.maintainers = with lib.maintainers; [ gdifolco ]; 63 63 }
+2 -1
nixos/modules/services/finance/libeufin/common.nix
··· 35 35 cfg.settings."libeufin-${libeufinComponent}db-postgres".CONFIG; 36 36 37 37 bankPort = cfg.settings."${if isNexus then "nexus-httpd" else "libeufin-bank"}".PORT; 38 + bankHost = lib.elemAt (lib.splitString "/" cfg.settings.libeufin-bank.BASE_URL) 2; 38 39 in 39 40 lib.mkIf cfg.enable { 40 41 services.libeufin.settings = cfg.settings; ··· 82 83 args = lib.cli.toGNUCommandLineShell { } { 83 84 c = configFile; 84 85 inherit (account) username password name; 85 - payto_uri = "payto://x-taler-bank/bank:${toString bankPort}/${account.username}?receiver-name=${account.name}"; 86 + payto_uri = "payto://x-taler-bank/${bankHost}/${account.username}?receiver-name=${account.name}"; 86 87 exchange = lib.toLower account.username == "exchange"; 87 88 }; 88 89 in
+3 -2
nixos/modules/services/finance/taler/common.nix
··· 51 51 (lib.genAttrs (map (n: "taler-${talerComponent}-${n}") services) (name: { 52 52 serviceConfig = { 53 53 DynamicUser = true; 54 - User = name; 54 + User = dbName; 55 55 Group = groupName; 56 56 ExecStart = toString [ 57 57 (lib.getExe' cfg.package name) ··· 85 85 Type = "oneshot"; 86 86 DynamicUser = true; 87 87 User = dbName; 88 + Group = groupName; 88 89 Restart = "on-failure"; 89 90 RestartSec = "5s"; 90 91 }; ··· 116 117 services.postgresql = { 117 118 enable = true; 118 119 ensureDatabases = [ dbName ]; 119 - ensureUsers = map (service: { name = "taler-${talerComponent}-${service}"; }) servicesDB ++ [ 120 + ensureUsers = [ 120 121 { 121 122 name = dbName; 122 123 ensureDBOwnership = true;
+17 -23
nixos/modules/services/finance/taler/exchange.nix
··· 25 25 "secmod-eddsa" 26 26 "secmod-rsa" 27 27 ]; 28 + 29 + configFile = config.environment.etc."taler/taler.conf".source; 28 30 in 29 31 30 32 { ··· 44 46 options = { 45 47 # TODO: do we want this to be a sub-attribute or only define the exchange set of options here 46 48 exchange = { 47 - AML_THRESHOLD = lib.mkOption { 49 + CURRENCY = lib.mkOption { 50 + type = lib.types.nonEmptyStr; 51 + description = '' 52 + The currency which the exchange will operate with. This cannot be changed later. 53 + ''; 54 + }; 55 + CURRENCY_ROUND_UNIT = lib.mkOption { 48 56 type = lib.types.str; 49 - default = "${cfgTaler.settings.taler.CURRENCY}:1000000"; 50 - defaultText = "1000000 in {option}`CURRENCY`"; 51 - description = "Monthly transaction volume until an account is considered suspicious and flagged for AML review."; 57 + default = "${cfg.settings.exchange.CURRENCY}:0.01"; 58 + defaultText = "0.01 in {option}`CURRENCY`"; 59 + description = '' 60 + Smallest amount in this currency that can be transferred using the underlying RTGS. For example: "EUR:0.01" or "JPY:1" 61 + ''; 52 62 }; 53 63 DB = lib.mkOption { 54 64 type = lib.types.enum [ "postgres" ]; ··· 131 141 after = [ "taler-exchange-httpd.service" ]; 132 142 }; 133 143 134 - # Taken from https://docs.taler.net/taler-exchange-manual.html#exchange-database-setup 135 - # TODO: Why does aggregator need DELETE? 136 - systemd.services."taler-${talerComponent}-dbinit".script = 137 - let 138 - deletePerm = name: lib.optionalString (name == "aggregator") ",DELETE"; 139 - dbScript = pkgs.writers.writeText "taler-exchange-db-permissions.sql" ( 140 - lib.pipe servicesDB [ 141 - (map (name: '' 142 - GRANT SELECT,INSERT,UPDATE${deletePerm name} ON ALL TABLES IN SCHEMA exchange TO "taler-exchange-${name}"; 143 - GRANT USAGE ON SCHEMA exchange TO "taler-exchange-${name}"; 144 - '')) 145 - lib.concatStrings 146 - ] 147 - ); 148 - in 149 - '' 150 - ${lib.getExe' cfg.package "taler-exchange-dbinit"} 151 - psql -U taler-exchange-httpd -f ${dbScript} 152 - ''; 144 + systemd.services."taler-${talerComponent}-dbinit".script = '' 145 + ${lib.getExe' cfg.package "taler-exchange-dbinit"} -c ${configFile} 146 + ''; 153 147 }; 154 148 }
+6 -17
nixos/modules/services/finance/taler/merchant.nix
··· 17 17 "webhook" 18 18 "wirewatch" 19 19 "depositcheck" 20 - "exchange" 20 + "exchangekeyupdate" 21 21 ]; 22 + 23 + configFile = config.environment.etc."taler/taler.conf".source; 22 24 in 23 25 { 24 26 imports = [ ··· 88 90 path = [ cfg.package ]; 89 91 }; 90 92 91 - systemd.services."taler-${talerComponent}-dbinit".script = 92 - let 93 - # NOTE: not documented, but is necessary 94 - dbScript = pkgs.writers.writeText "taler-merchant-db-permissions.sql" ( 95 - lib.concatStrings ( 96 - map (name: '' 97 - GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA merchant TO "taler-merchant-${name}"; 98 - GRANT USAGE ON SCHEMA merchant TO "taler-merchant-${name}"; 99 - '') servicesDB 100 - ) 101 - ); 102 - in 103 - '' 104 - ${lib.getExe' cfg.package "taler-merchant-dbinit"} 105 - psql -U taler-${talerComponent}-httpd -f ${dbScript} 106 - ''; 93 + systemd.services."taler-${talerComponent}-dbinit".script = '' 94 + ${lib.getExe' cfg.package "taler-merchant-dbinit"} -c ${configFile} 95 + ''; 107 96 }; 108 97 }
+22 -1
nixos/modules/services/networking/monero.nix
··· 32 32 restricted-rpc=1 33 33 ''} 34 34 35 + ${lib.optionalString (banlist != null) '' 36 + ban-list=${banlist} 37 + ''} 38 + 35 39 limit-rate-up=${toString limits.upload} 36 40 limit-rate-down=${toString limits.download} 37 41 max-concurrency=${toString limits.threads} ··· 61 65 default = "/var/lib/monero"; 62 66 description = '' 63 67 The directory where Monero stores its data files. 68 + ''; 69 + }; 70 + 71 + banlist = lib.mkOption { 72 + type = lib.types.nullOr lib.types.path; 73 + default = null; 74 + description = '' 75 + Path to a text file containing IPs to block. 76 + Useful to prevent DDoS/deanonymization attacks. 77 + 78 + https://github.com/monero-project/meta/issues/1124 79 + ''; 80 + example = lib.literalExpression '' 81 + builtins.fetchurl { 82 + url = "https://raw.githubusercontent.com/rblaine95/monero-banlist/c6eb9413ddc777e7072d822f49923df0b2a94d88/block.txt"; 83 + hash = ""; 84 + }; 64 85 ''; 65 86 }; 66 87 ··· 225 246 serviceConfig = { 226 247 User = "monero"; 227 248 Group = "monero"; 228 - ExecStart = "${pkgs.monero-cli}/bin/monerod --config-file=${configFile} --non-interactive"; 249 + ExecStart = "${lib.getExe' pkgs.monero-cli "monerod"} --config-file=${configFile} --non-interactive"; 229 250 Restart = "always"; 230 251 SuccessExitStatus = [ 231 252 0
+1
nixos/tests/all-tests.nix
··· 529 529 ft2-clone = runTest ./ft2-clone.nix; 530 530 legit = runTest ./legit.nix; 531 531 mimir = runTest ./mimir.nix; 532 + galene = discoverTests (import ./galene.nix); 532 533 gancio = runTest ./gancio.nix; 533 534 garage = handleTest ./garage { }; 534 535 gatus = runTest ./gatus.nix;
+211
nixos/tests/galene.nix
··· 1 + let 2 + makeTest = import ./make-test-python.nix; 3 + galeneTestGroupsDir = "/var/lib/galene/groups"; 4 + galeneTestGroupFile = "galene-test-config.json"; 5 + galenePort = 8443; 6 + galeneTestGroupAdminName = "admin"; 7 + galeneTestGroupAdminPassword = "1234"; 8 + in 9 + { 10 + basic = makeTest ( 11 + { pkgs, lib, ... }: 12 + { 13 + name = "galene-works"; 14 + meta = { 15 + inherit (pkgs.galene.meta) maintainers; 16 + platforms = lib.platforms.linux; 17 + }; 18 + 19 + nodes.machine = 20 + { config, pkgs, ... }: 21 + { 22 + imports = [ ./common/x11.nix ]; 23 + 24 + services.xserver.enable = true; 25 + 26 + environment = { 27 + # https://galene.org/INSTALL.html 28 + etc.${galeneTestGroupFile}.source = (pkgs.formats.json { }).generate galeneTestGroupFile { 29 + op = [ 30 + { 31 + username = galeneTestGroupAdminName; 32 + password = galeneTestGroupAdminPassword; 33 + } 34 + ]; 35 + other = [ { } ]; 36 + }; 37 + 38 + systemPackages = with pkgs; [ 39 + firefox 40 + ]; 41 + }; 42 + 43 + services.galene = { 44 + enable = true; 45 + insecure = true; 46 + httpPort = galenePort; 47 + groupsDir = galeneTestGroupsDir; 48 + }; 49 + }; 50 + 51 + enableOCR = true; 52 + 53 + testScript = '' 54 + machine.wait_for_x() 55 + 56 + with subtest("galene starts"): 57 + # Starts? 58 + machine.wait_for_unit("galene") 59 + 60 + # Keeps running after startup? 61 + machine.sleep(10) 62 + machine.wait_for_unit("galene") 63 + 64 + # Reponds fine? 65 + machine.succeed("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}' >&2") 66 + 67 + machine.succeed("cp -v /etc/${galeneTestGroupFile} ${galeneTestGroupsDir}/test.json >&2") 68 + machine.wait_until_succeeds("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}/group/test/' >&2") 69 + 70 + with subtest("galene can join group"): 71 + # Open site 72 + machine.succeed("firefox --new-window 'http://localhost:${builtins.toString galenePort}/group/test/' >&2 &") 73 + # Note: Firefox doesn't use a regular "-" in the window title, but "—" (Hex: 0xe2 0x80 0x94) 74 + machine.wait_for_window("Test — Mozilla Firefox") 75 + machine.send_key("ctrl-minus") 76 + machine.send_key("ctrl-minus") 77 + machine.send_key("alt-f10") 78 + machine.wait_for_text(r"(Galène|Username|Password|Connect)") 79 + machine.screenshot("galene-group-test-join") 80 + 81 + # Log in as admin 82 + machine.send_chars("${galeneTestGroupAdminName}") 83 + machine.send_key("tab") 84 + machine.send_chars("${galeneTestGroupAdminPassword}") 85 + machine.send_key("ret") 86 + machine.sleep(5) 87 + # Close "Remember credentials?" FF prompt 88 + machine.send_key("esc") 89 + machine.sleep(5) 90 + machine.wait_for_text(r"(Enable|Share|Screen)") 91 + machine.screenshot("galene-group-test-logged-in") 92 + ''; 93 + } 94 + ); 95 + 96 + file-transfer = makeTest ( 97 + { pkgs, lib, ... }: 98 + { 99 + name = "galene-file-transfer-works"; 100 + meta = { 101 + inherit (pkgs.galene-file-transfer.meta) maintainers; 102 + platforms = lib.platforms.linux; 103 + }; 104 + 105 + nodes.machine = 106 + { config, pkgs, ... }: 107 + { 108 + imports = [ ./common/x11.nix ]; 109 + 110 + services.xserver.enable = true; 111 + 112 + environment = { 113 + # https://galene.org/INSTALL.html 114 + etc.${galeneTestGroupFile}.source = (pkgs.formats.json { }).generate galeneTestGroupFile { 115 + op = [ 116 + { 117 + username = galeneTestGroupAdminName; 118 + password = galeneTestGroupAdminPassword; 119 + } 120 + ]; 121 + other = [ { } ]; 122 + }; 123 + 124 + systemPackages = with pkgs; [ 125 + firefox 126 + galene-file-transfer 127 + ]; 128 + }; 129 + 130 + services.galene = { 131 + enable = true; 132 + insecure = true; 133 + httpPort = galenePort; 134 + groupsDir = galeneTestGroupsDir; 135 + }; 136 + }; 137 + 138 + enableOCR = true; 139 + 140 + testScript = '' 141 + machine.wait_for_x() 142 + 143 + with subtest("galene starts"): 144 + # Starts? 145 + machine.wait_for_unit("galene") 146 + 147 + # Keeps running after startup? 148 + machine.sleep(10) 149 + machine.wait_for_unit("galene") 150 + 151 + # Reponds fine? 152 + machine.succeed("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}' >&2") 153 + 154 + machine.succeed("cp -v /etc/${galeneTestGroupFile} ${galeneTestGroupsDir}/test.json >&2") 155 + machine.wait_until_succeeds("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}/group/test/' >&2") 156 + 157 + with subtest("galene can join group"): 158 + # Open site 159 + machine.succeed("firefox --new-window 'http://localhost:${builtins.toString galenePort}/group/test/' >&2 &") 160 + # Note: Firefox doesn't use a regular "-" in the window title, but "—" (Hex: 0xe2 0x80 0x94) 161 + machine.wait_for_window("Test — Mozilla Firefox") 162 + machine.send_key("ctrl-minus") 163 + machine.send_key("ctrl-minus") 164 + machine.send_key("alt-f10") 165 + machine.wait_for_text(r"(Galène|Username|Password|Connect)") 166 + machine.screenshot("galene-group-test-join") 167 + 168 + # Log in as admin 169 + machine.send_chars("${galeneTestGroupAdminName}") 170 + machine.send_key("tab") 171 + machine.send_chars("${galeneTestGroupAdminPassword}") 172 + machine.send_key("ret") 173 + machine.sleep(5) 174 + # Close "Remember credentials?" FF prompt 175 + machine.send_key("esc") 176 + machine.sleep(5) 177 + machine.wait_for_text(r"(Enable|Share|Screen)") 178 + machine.screenshot("galene-group-test-logged-in") 179 + 180 + with subtest("galene-file-transfer works"): 181 + machine.succeed( 182 + "galene-file-transfer " 183 + + "-to '${galeneTestGroupAdminName}' " 184 + + "-insecure 'http://localhost:${builtins.toString galenePort}/group/test/' " 185 + + "${galeneTestGroupsDir}/test.json " # just try sending the groups file 186 + + " >&2 &" 187 + ) 188 + machine.sleep(5) # Give pop-up some time to appear 189 + machine.wait_for_text(r"(offered to send us a file|Accept|Reject|disclose your IP)") 190 + machine.screenshot("galene-file-transfer-dislogue") 191 + 192 + # Focus on Accept button 193 + machine.send_key("shift-tab") 194 + machine.send_key("shift-tab") 195 + machine.send_key("shift-tab") 196 + machine.send_key("shift-tab") 197 + 198 + # Accept download 199 + machine.sleep(2) 200 + machine.send_key("ret") 201 + 202 + # Wait until complete & matching 203 + machine.wait_until_succeeds( 204 + "diff " 205 + + "${galeneTestGroupsDir}/test.json " # original 206 + + "/root/Downloads/test.json" # Received via file-transfer 207 + ) 208 + ''; 209 + } 210 + ); 211 + }
+10 -2
nixos/tests/taler/common/nodes.nix
··· 55 55 settings = { 56 56 taler.CURRENCY = CURRENCY; 57 57 }; 58 - includes = [ ../conf/taler-accounts.conf ]; 58 + includes = [ 59 + ../conf/taler-accounts.conf 60 + # The exchange requires a token from the bank, so its credentials 61 + # need to be set at runtime 62 + "/etc/taler/secrets/exchange-account.secret.conf" 63 + ]; 59 64 exchange = { 60 65 enable = true; 61 66 debug = true; 62 67 openFirewall = true; 68 + # https://docs.taler.net/taler-exchange-manual.html#coins-denomination-keys 69 + # NOTE: use `taler-harness`, not `taler-wallet-cli` 63 70 denominationConfig = lib.readFile ../conf/taler-denominations.conf; 64 71 settings = { 65 72 exchange = { 73 + inherit CURRENCY; 66 74 MASTER_PUBLIC_KEY = "2TQSTPFZBC2MC4E52NHPA050YXYG02VC3AB50QESM6JX1QJEYVQ0"; 67 75 BASE_URL = "http://exchange:8081/"; 68 76 }; ··· 103 111 # WIRE_TYPE = "iban"; 104 112 X_TALER_BANK_PAYTO_HOSTNAME = "bank:8082"; 105 113 # IBAN_PAYTO_BIC = "SANDBOXX"; 106 - BASE_URL = "bank:8082"; 114 + BASE_URL = "http://bank:8082/"; 107 115 108 116 # Allow creating new accounts 109 117 ALLOW_REGISTRATION = "yes";
+28 -3
nixos/tests/taler/common/scripts.nix
··· 7 7 8 8 let 9 9 cfgNodes = pkgs.callPackage ./nodes.nix { inherit lib; }; 10 - bankConfig = nodes.bank.config.environment.etc."libeufin/libeufin.conf".source; 10 + bankConfig = nodes.bank.environment.etc."libeufin/libeufin.conf".source; 11 11 12 12 inherit (cfgNodes) CURRENCY FIAT_CURRENCY; 13 13 in ··· 68 68 + command 69 69 ) 70 70 71 + # https://docs.taler.net/core/api-corebank.html#authentication 72 + def create_token(machine, username, password): 73 + """Create a read-write bank access token for a user""" 74 + response = succeed(machine, [ 75 + "curl -X POST", 76 + f"-u {username}:{password}", 77 + "-H 'Content-Type: application/json'", 78 + """ 79 + --data '{ "scope": "readwrite" }' 80 + """, 81 + f"-sSfL 'http://bank:8082/accounts/{username}/token'" 82 + ]) 83 + return json.loads(response)["access_token"] 84 + 85 + 86 + # Basic auth is deprecated, so exchange credentials must be set at 87 + # runtime because it requires a token from the bank. 88 + def create_exchange_auth(token: str): 89 + template = f""" 90 + [exchange-accountcredentials-test] 91 + WIRE_GATEWAY_URL = http://bank:8082/accounts/exchange/taler-wire-gateway/ 92 + WIRE_GATEWAY_AUTH_METHOD = BEARER 93 + TOKEN = "{token}" 94 + """ 95 + return "\n".join([line.strip() for line in template.splitlines()]) 71 96 72 97 def verify_balance(balanceWanted: str): 73 98 """Compare Taler CLI wallet balance with expected amount""" ··· 84 109 client.succeed(f"echo Withdraw successfully made. New balance: {balanceWanted}") 85 110 86 111 87 - def verify_conversion(regionalWanted: str): 112 + def verify_conversion(regionalWanted: str, accessToken: str): 88 113 """Compare converted Libeufin Nexus funds with expected regional currency""" 89 114 # Get transaction details 90 115 response = json.loads( 91 116 succeed(bank, [ 92 117 "curl -sSfL", 118 + f"-H 'Authorization: Bearer {accessToken}'", 93 119 # TODO: get exchange from config? 94 - "-u exchange:exchange", 95 120 "http://bank:8082/accounts/exchange/transactions" 96 121 ]) 97 122 )
-6
nixos/tests/taler/conf/taler-accounts.conf
··· 2 2 PAYTO_URI = payto://x-taler-bank/bank:8082/exchange?receiver-name=Exchange 3 3 ENABLE_DEBIT = YES 4 4 ENABLE_CREDIT = YES 5 - 6 - [exchange-accountcredentials-test] 7 - WIRE_GATEWAY_URL = http://bank:8082/accounts/exchange/taler-wire-gateway/ 8 - WIRE_GATEWAY_AUTH_METHOD = BASIC 9 - USERNAME = exchange 10 - PASSWORD = exchange
+43 -18
nixos/tests/taler/tests/basic.nix
··· 35 35 inherit (cfgNodes) CURRENCY FIAT_CURRENCY; 36 36 inherit (cfgScripts) commonScripts; 37 37 38 - bankConfig = nodes.bank.config.environment.etc."libeufin/libeufin.conf".source; 38 + configFile = nodes.exchange.environment.etc."taler/taler.conf".source; 39 + bankConfig = nodes.bank.environment.etc."libeufin/libeufin.conf".source; 39 40 bankSettings = nodes.bank.services.libeufin.settings.libeufin-bank; 40 41 nexusSettings = nodes.bank.services.libeufin.nexus.settings; 41 42 42 43 # Bank admin account credentials 43 44 AUSER = "admin"; 44 - APASS = "admin"; 45 + APASS = "testAdmin"; 45 46 46 47 TUSER = "testUser"; 47 48 TPASS = "testUser"; ··· 76 77 77 78 78 79 exchange.start() 80 + 81 + # exchange credentials must be set at runtime because it requires a token from the bank 82 + exchange.succeed("mkdir -p /etc/taler/secrets/") 83 + exchange.succeed("touch /etc/taler/secrets/exchange-account.secret.conf") 84 + 79 85 exchange.wait_for_open_port(8081) 80 86 87 + # Create access token for exchange 88 + accessTokenExchange = create_token(exchange, "exchange", "exchange") 89 + 90 + exchange.succeed(f'echo "{create_exchange_auth(accessTokenExchange)}" > /etc/taler/secrets/exchange-account.secret.conf') 81 91 82 92 with subtest("Set up exchange"): 83 - exchange.wait_until_succeeds("taler-exchange-offline download sign upload") 93 + # Set up exchange keys 94 + exchange.wait_until_succeeds('taler-exchange-offline -c "${configFile}" download sign upload') 95 + 84 96 # Enable exchange wire account 85 - exchange.succeed('taler-exchange-offline upload < ${exchangeAccount}') 97 + exchange.succeed('taler-exchange-offline -c "${configFile}" upload < ${exchangeAccount}') 86 98 87 - # NOTE: cannot deposit coins/pay merchant if wire fees are not set up 88 - exchange.succeed('taler-exchange-offline wire-fee now x-taler-bank "${CURRENCY}:0" "${CURRENCY}:0" upload') 89 - exchange.succeed('taler-exchange-offline global-fee now "${CURRENCY}:0" "${CURRENCY}:0" "${CURRENCY}:0" 1h 6a 0 upload') 99 + # Set up wire fees, needed in order to deposit coins/pay merchant 100 + exchange.succeed('taler-exchange-offline -c "${configFile}" wire-fee now x-taler-bank "${CURRENCY}:0.01" "${CURRENCY}:0.01" upload') 101 + exchange.succeed('taler-exchange-offline -c "${configFile}" global-fee now "${CURRENCY}:0.01" "${CURRENCY}:0.0" "${CURRENCY}:0" 1h 6a 0 upload') 90 102 91 103 92 104 # Verify that exchange keys exist ··· 96 108 merchant.start() 97 109 merchant.wait_for_open_port(8083) 98 110 111 + # Create access token for merchant 112 + accessTokenMerchant = create_token(client, "merchant", "merchant") 99 113 100 114 with subtest("Set up merchant"): 101 115 # Create default instance (similar to admin) 102 116 succeed(merchant, [ 103 117 "curl -X POST", 104 - "-H 'Authorization: Bearer secret-token:super_secret'", 118 + f"-H 'Authorization: Bearer {accessTokenMerchant}'", 105 119 """ 106 120 --data '{ 107 121 "auth": { "method": "external" }, ··· 128 142 "credit_facade_credentials":{"type":"basic","username":"merchant","password":"merchant"} 129 143 }' 130 144 """, 131 - "-sSfL 'http://merchant:8083/private/accounts'" 145 + "-sSfL 'http://merchant:8083/instances/default/private/accounts'" 132 146 ]) 133 147 # Register a new product to be ordered 134 148 succeed(merchant, [ ··· 144 158 "next_restock": { "t_s": "never" } 145 159 }' 146 160 """, 147 - "-sSfL 'http://merchant:8083/private/products'" 161 + "-sSfL 'http://merchant:8083/instances/default/private/products'" 148 162 ]) 149 163 150 164 151 165 client.succeed("curl -s http://exchange:8081/") 152 166 167 + # Create access token for user 168 + accessTokenUser = create_token(client, "${TUSER}", "${TPASS}") 153 169 154 170 # Make a withdrawal from the CLI wallet 155 171 with subtest("Make a withdrawal from the CLI wallet"): ··· 164 180 withdrawal = json.loads( 165 181 succeed(client, [ 166 182 "curl -X POST", 167 - "-u ${TUSER}:${TPASS}", 183 + f"-H 'Authorization: Bearer {accessTokenUser}'", 168 184 "-H 'Content-Type: application/json'", 169 185 f"""--data '{{"amount": "{balanceWanted}"}}'""", # double brackets escapes them 170 186 "-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals'" ··· 173 189 174 190 # Accept & confirm withdrawal 175 191 with subtest("Accept & confirm withdrawal"): 176 - wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange http://exchange:8081/") 192 + # the withdrawal can only be confirmed if this is executed twice, for some reason 193 + for i in range(2): 194 + wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange 'http://exchange:8081/'") 195 + client.sleep(5) # needs some time to process things 196 + 177 197 succeed(client, [ 178 198 "curl -X POST", 179 - "-u ${TUSER}:${TPASS}", 199 + f"-H 'Authorization: Bearer {accessTokenUser}'", 180 200 "-H 'Content-Type: application/json'", 201 + f"""--data '{{"amount": "{balanceWanted}"}}'""", # double brackets escapes them 181 202 f"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals/{withdrawal["withdrawal_id"]}/confirm'" 182 203 ]) 183 204 ··· 188 209 189 210 190 211 with subtest("Pay for an order"): 191 - balanceWanted = "${CURRENCY}:9" # after paying 212 + # after paying (1 for the order and 0.1 as fee) 213 + balanceWanted = "${CURRENCY}:8.9" 192 214 193 215 # Create an order to be paid 194 216 response = json.loads( ··· 201 223 "inventory_products": [{ "product_id": "1", "quantity": 1 }] 202 224 }' 203 225 """, 204 - "-sSfL 'http://merchant:8083/private/orders'" 226 + "-sSfL 'http://merchant:8083/instances/default/private/orders'" 205 227 ]) 206 228 ) 207 229 order_id = response["order_id"] ··· 211 233 response = json.loads( 212 234 succeed(merchant, [ 213 235 "curl -sSfL", 214 - f"http://merchant:8083/private/orders/{order_id}" 236 + f"http://merchant:8083/instances/default/private/orders/{order_id}" 215 237 ]) 216 238 ) 217 239 wallet_cli("run-until-done") ··· 231 253 with subtest("Libeufin Nexus currency conversion"): 232 254 regionalWanted = "20" 233 255 256 + # Create access token 257 + accessTokenAdmin = create_token(bank, "${AUSER}", "${APASS}") 258 + 234 259 # Setup Nexus ebics keys 235 260 systemd_run(bank, "libeufin-nexus ebics-setup -L debug -c /etc/libeufin/libeufin.conf", "libeufin-nexus") 236 261 237 262 # Set currency conversion rates (1:1) 238 263 succeed(bank, [ 239 264 "curl -X POST", 265 + f"-H 'Authorization: Bearer {accessTokenAdmin}'", 240 266 "-H 'Content-Type: application/json'", 241 - "-u ${AUSER}:${APASS}", 242 267 """ 243 268 --data '{ 244 269 "cashin_ratio": "1", ··· 264 289 systemd_run(bank, f"""libeufin-nexus testing fake-incoming -c ${bankConfig} --amount="${FIAT_CURRENCY}:{regionalWanted}" --subject="{reservePub}" "payto://iban/CH4740123RW4167362694" """, "libeufin-nexus") 265 290 wallet_cli("run-until-done") 266 291 267 - verify_conversion(regionalWanted) 292 + verify_conversion(regionalWanted, accessTokenExchange) 268 293 ''; 269 294 } 270 295 )
+3 -3
pkgs/applications/emulators/libretro/cores/bsnes.nix
··· 5 5 }: 6 6 mkLibretroCore { 7 7 core = "bsnes"; 8 - version = "0-unstable-2025-05-16"; 8 + version = "0-unstable-2025-05-30"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "libretro"; 12 12 repo = "bsnes-libretro"; 13 - rev = "aadae1cd3d8175a6e71525ab122e6b7a949091a7"; 14 - hash = "sha256-Tf/mJ4B3PuAbfYJCrFoC0sHOQgf+UCwp6jNlSau7XH0="; 13 + rev = "c2df3ccaeb8f40852a63a4b66a381d82d4e9b95d"; 14 + hash = "sha256-bPW4ftbdUXsgAs/CEi5/x4iq1NKvgRmHOpMiNJ2W/Gc="; 15 15 }; 16 16 17 17 makefile = "Makefile";
+3 -3
pkgs/applications/emulators/libretro/cores/flycast.nix
··· 8 8 }: 9 9 mkLibretroCore { 10 10 core = "flycast"; 11 - version = "0-unstable-2025-05-22"; 11 + version = "0-unstable-2025-06-01"; 12 12 13 13 src = fetchFromGitHub { 14 14 owner = "flyinghead"; 15 15 repo = "flycast"; 16 - rev = "1953eb0eea10f6ddc780bea743ad74c57983b554"; 17 - hash = "sha256-Y0QmDzML8bSQi1DxFErBptSB31TrXmFGVoTYnd3Ppr0="; 16 + rev = "d9ec0cb3ab0ce383f24f86d023e1889b7f37c5c7"; 17 + hash = "sha256-MwXq+qhba+PNS1e2LS3CduWcdO3Tm0OS8ny1Gq3Zo5s="; 18 18 fetchSubmodules = true; 19 19 }; 20 20
+3 -3
pkgs/applications/networking/browsers/firefox-bin/default.nix
··· 163 163 }; 164 164 }; 165 165 166 - meta = with lib; { 166 + meta = { 167 167 changelog = "https://www.mozilla.org/en-US/firefox/${version}/releasenotes/"; 168 168 description = "Mozilla Firefox, free web browser (binary package)"; 169 169 homepage = "https://www.mozilla.org/firefox/"; ··· 188 188 free = false; 189 189 redistributable = true; # since MPL-2.0 still applies 190 190 }; 191 - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; 191 + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; 192 192 platforms = builtins.attrNames mozillaPlatforms; 193 193 hydraPlatforms = [ ]; 194 - maintainers = with maintainers; [ 194 + maintainers = with lib.maintainers; [ 195 195 taku0 196 196 lovesegfault 197 197 ];
+1 -1
pkgs/by-name/_7/_7zz/package.nix
··· 106 106 runHook preInstall 107 107 108 108 install -Dm555 -t $out/bin b/*/7zz${stdenv.hostPlatform.extensions.executable} 109 - install -Dm444 -t $out/share/doc/${finalAttrs.pname} ../../../../DOC/*.txt 109 + install -Dm444 -t $out/share/doc/7zz ../../../../DOC/*.txt 110 110 111 111 runHook postInstall 112 112 '';
+51
pkgs/by-name/ar/arpa2-leaf/package.nix
··· 1 + { 2 + lib, 3 + stdenv, 4 + fetchFromGitLab, 5 + cmake, 6 + arpa2cm, 7 + quickder, 8 + quickmem, 9 + quick-sasl, 10 + lillydap, 11 + nix-update-script, 12 + }: 13 + 14 + stdenv.mkDerivation (finalAttrs: { 15 + # leaf is already used 16 + pname = "arpa2-leaf"; 17 + version = "0.2"; 18 + 19 + src = fetchFromGitLab { 20 + owner = "arpa2"; 21 + repo = "leaf"; 22 + tag = "v${finalAttrs.version}"; 23 + hash = "sha256-s52gtxM+BmG7oVrB5F0ORjkb4F3fWONiOxIWdDn2P5k="; 24 + }; 25 + 26 + strictDeps = true; 27 + 28 + nativeBuildInputs = [ 29 + cmake 30 + ]; 31 + 32 + buildInputs = [ 33 + arpa2cm 34 + quickder 35 + quickmem 36 + quick-sasl 37 + lillydap 38 + ]; 39 + 40 + passthru.updateScript = nix-update-script { }; 41 + 42 + meta = { 43 + description = "LDAP Extended Attribute Filter"; 44 + homepage = "https://gitlab.com/arpa2/leaf"; 45 + changelog = "https://gitlab.com/arpa2/leaf/-/blob/v${finalAttrs.version}/CHANGES"; 46 + license = lib.licenses.bsd2; 47 + teams = with lib.teams; [ ngi ]; 48 + maintainers = with lib.maintainers; [ ethancedwards8 ]; 49 + platforms = lib.platforms.linux; 50 + }; 51 + })
+1 -1
pkgs/by-name/as/as31/package.nix
··· 11 11 version = "2.3.1"; 12 12 13 13 src = fetchurl { 14 - url = "mirror://debian/pool/main/a/as31/${finalAttrs.pname}_${finalAttrs.version}.orig.tar.gz"; 14 + url = "mirror://debian/pool/main/a/as31/as31_${finalAttrs.version}.orig.tar.gz"; 15 15 name = "${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; 16 16 hash = "sha256-zSEyWHFon5nyq717Mpmdv1XZ5Hz0e8ZABqsP8M83c1U="; 17 17 };
+1 -2
pkgs/by-name/au/audio-sharing/package.nix
··· 33 33 }; 34 34 35 35 cargoDeps = rustPlatform.fetchCargoVendor { 36 - inherit (finalAttrs) src; 37 - name = "${finalAttrs.pname}-${finalAttrs.version}"; 36 + inherit (finalAttrs) pname version src; 38 37 hash = "sha256-ePgEAVYXLOHWQXG92Grb9nmenyGj0JkgVy1UDsQF0xw="; 39 38 }; 40 39
+13 -9
pkgs/by-name/av/avrdudess/package.nix
··· 10 10 xdg-utils, 11 11 }: 12 12 13 - stdenv.mkDerivation { 13 + stdenv.mkDerivation (finalAttrs: { 14 14 pname = "avrdudess"; 15 15 version = "2.18"; 16 16 17 17 src = fetchurl { 18 - url = "https://github.com/ZakKemble/AVRDUDESS/releases/download/v2.18/AVRDUDESS-2.18-portable.zip"; 19 - sha256 = "sha256-N93FLiXp1WwhI5KwH6sho2wyFtkbODwCHOpEVbVnYdc="; 18 + url = "https://github.com/ZakKemble/AVRDUDESS/releases/download/v${finalAttrs.version}/AVRDUDESS-${finalAttrs.version}-portable.zip"; 19 + hash = "sha256-N93FLiXp1WwhI5KwH6sho2wyFtkbODwCHOpEVbVnYdc="; 20 20 }; 21 21 22 22 nativeBuildInputs = [ unzip ]; ··· 25 25 dontInstall = true; 26 26 27 27 buildPhase = '' 28 + runHook preBuild 29 + 28 30 mkdir -p "$out/avrdudess" 29 31 mkdir -p "$out/bin" 30 32 ··· 52 54 __EOF__ 53 55 54 56 chmod a+x "$out/bin/"* 57 + 58 + runHook postBuild 55 59 ''; 56 60 57 - meta = with lib; { 61 + meta = { 58 62 description = "GUI for AVRDUDE (AVR microcontroller programmer)"; 59 63 homepage = "https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/"; 60 - changelog = "https://github.com/ZakKemble/AVRDUDESS/blob/v${version}/Changelog.txt"; 61 - license = licenses.gpl3; 62 - platforms = platforms.linux; 63 - maintainers = [ maintainers.bjornfor ]; 64 + changelog = "https://github.com/ZakKemble/AVRDUDESS/blob/v${finalAttrs.version}/Changelog.txt"; 65 + license = lib.licenses.gpl3; 66 + platforms = lib.platforms.linux; 67 + maintainers = [ lib.maintainers.bjornfor ]; 64 68 mainProgram = "avrdudess"; 65 69 }; 66 - } 70 + })
+1 -1
pkgs/by-name/bi/bind/package.nix
··· 30 30 version = "9.20.9"; 31 31 32 32 src = fetchurl { 33 - url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; 33 + url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/bind-${finalAttrs.version}.tar.xz"; 34 34 hash = "sha256-PSaQDtnJqFkHP/6puX4pLBJI2tGCebF7BfyyPDCR+G0="; 35 35 }; 36 36
+2 -2
pkgs/by-name/bp/bpftrace/package.nix
··· 21 21 22 22 stdenv.mkDerivation rec { 23 23 pname = "bpftrace"; 24 - version = "0.23.3"; 24 + version = "0.23.4"; 25 25 26 26 src = fetchFromGitHub { 27 27 owner = "bpftrace"; 28 28 repo = "bpftrace"; 29 29 rev = "v${version}"; 30 - hash = "sha256-Jvl8Up3IH2/G0QMb0pZmQ2SSXOmjTj08KXoJXOR3Z48="; 30 + hash = "sha256-fJOc5M+DhYjmooDb8p/kZbUOhQX27/6aau7Ff9dgjbs="; 31 31 }; 32 32 33 33 buildInputs = with llvmPackages; [
+3 -3
pkgs/by-name/ca/cargo-nextest/package.nix
··· 7 7 8 8 rustPlatform.buildRustPackage rec { 9 9 pname = "cargo-nextest"; 10 - version = "0.9.95"; 10 + version = "0.9.97"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "nextest-rs"; 14 14 repo = "nextest"; 15 15 rev = "cargo-nextest-${version}"; 16 - hash = "sha256-OtCFehXzcdE8kBUkDg8y5ygTOtH2eP5aMzTpugDSg/E="; 16 + hash = "sha256-5UhmWewLj3bjtvqyb6FcC1qZQbAutRPXnBi7e/lyArM="; 17 17 }; 18 18 19 19 useFetchCargoVendor = true; 20 - cargoHash = "sha256-nrRq5ET++jplx5argN04Ax+HTE6VqvBhnSsS/ZFNYr8="; 20 + cargoHash = "sha256-mTKcQ76A++LK+54ChmCUF/7dsubdz7GZpOZUp+afqfQ="; 21 21 22 22 cargoBuildFlags = [ 23 23 "-p"
+3 -3
pkgs/by-name/ch/changie/package.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "changie"; 10 - version = "1.21.1"; 10 + version = "1.22.0"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "miniscruff"; 14 14 repo = "changie"; 15 15 rev = "v${version}"; 16 - hash = "sha256-zLRMH5TxEz/fspMOPAMTEqO19fj9PZsRh6zddbTqSXM="; 16 + hash = "sha256-tq29L9YlzhjbHkUfE0ZZhSrH+rcAwgYjcEAUjP/lHm8="; 17 17 }; 18 18 19 - vendorHash = "sha256-LWf10MM9SBU9sHb59c6ILlsHs8E8ETYAR34296aeHlI="; 19 + vendorHash = "sha256-nAwBVa+UssbfFbcOWFcsWUllBTeW89xPcgS+ofXDPf0="; 20 20 21 21 nativeBuildInputs = [ 22 22 installShellFiles
+1 -1
pkgs/by-name/co/coal/package.nix
··· 75 75 ]; 76 76 postFixup = '' 77 77 moveToOutput share/ament_index "$dev" 78 - moveToOutput share/${finalAttrs.pname} "$dev" 78 + moveToOutput share/coal "$dev" 79 79 ''; 80 80 81 81 meta = {
+2 -2
pkgs/by-name/da/davis/package.nix
··· 21 21 postInstall = '' 22 22 chmod -R u+w $out/share 23 23 # Only include the files needed for runtime in the derivation 24 - mv $out/share/php/${finalAttrs.pname}/{migrations,public,src,config,bin,templates,tests,translations,vendor,symfony.lock,composer.json,composer.lock} $out 24 + mv $out/share/php/davis/{migrations,public,src,config,bin,templates,tests,translations,vendor,symfony.lock,composer.json,composer.lock} $out 25 25 # Save the upstream .env file for reference, but rename it so it is not loaded 26 - mv $out/share/php/${finalAttrs.pname}/.env $out/env-upstream 26 + mv $out/share/php/davis/.env $out/env-upstream 27 27 rm -rf "$out/share" 28 28 ''; 29 29
+1 -1
pkgs/by-name/di/dirdiff/package.nix
··· 13 13 version = "2.1"; 14 14 15 15 src = fetchurl { 16 - url = "mirror://samba/paulus/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; 16 + url = "mirror://samba/paulus/dirdiff-${finalAttrs.version}.tar.gz"; 17 17 hash = "sha256-yzc2VNV4gCeAQ1XjVd8GlYYsO/wfaj/GAUcisxVqklI="; 18 18 }; 19 19
+1 -1
pkgs/by-name/ef/efibooteditor/package.nix
··· 44 44 cmakeFlags = [ "-DQT_VERSION_MAJOR=6" ]; 45 45 46 46 postInstall = '' 47 - install -Dm644 $src/LICENSE.txt $out/share/licenses/${finalAttrs.pname}/LICENSE 47 + install -Dm644 $src/LICENSE.txt $out/share/licenses/efibooteditor/LICENSE 48 48 ''; 49 49 50 50 meta = {
-1
pkgs/by-name/en/ente-auth/git-hashes.json
··· 1 1 { 2 2 "ente_crypto_dart": "sha256-xBBK9BdXh4+OTj+Jkf3zh5sMZjXtvhyuE1R5LFE8iTY=", 3 3 "flutter_local_authentication": "sha256-r50jr+81ho+7q2PWHLf4VnvNJmhiARZ3s4HUpThCgc0=", 4 - "flutter_secure_storage_linux": "sha256-Rp+b6ZRH7F5AnM5UvYzfVjprXkpeeA7V6Ep/oYqDeiM=", 5 4 "sqflite": "sha256-+XTVtkFJ94VifwnutvUuAqqiyWwrcEiZ3Uz0H4D9zWA=" 6 5 }
+2 -2
pkgs/by-name/en/ente-auth/package.nix
··· 18 18 in 19 19 flutter324.buildFlutterApplication rec { 20 20 pname = "ente-auth"; 21 - version = "4.3.5"; 21 + version = "4.3.6"; 22 22 23 23 src = fetchFromGitHub { 24 24 owner = "ente-io"; 25 25 repo = "ente"; 26 26 sparseCheckout = [ "auth" ]; 27 27 tag = "auth-v${version}"; 28 - hash = "sha256-kM1y3Q5Z8J84qHhki9A+I/uY7xYQNMlfh2ZhxzpUBHM="; 28 + hash = "sha256-6S0sgxiPrakqtQ/KoEKR10yWxOk6Rs5MOHjFZXkAbcg="; 29 29 }; 30 30 31 31 sourceRoot = "${src.name}/auth";
+55 -56
pkgs/by-name/en/ente-auth/pubspec.lock.json
··· 4 4 "dependency": "transitive", 5 5 "description": { 6 6 "name": "_fe_analyzer_shared", 7 - "sha256": "f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834", 7 + "sha256": "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab", 8 8 "url": "https://pub.dev" 9 9 }, 10 10 "source": "hosted", 11 - "version": "72.0.0" 11 + "version": "76.0.0" 12 12 }, 13 13 "_macros": { 14 14 "dependency": "transitive", 15 15 "description": "dart", 16 16 "source": "sdk", 17 - "version": "0.3.2" 17 + "version": "0.3.3" 18 18 }, 19 19 "adaptive_theme": { 20 20 "dependency": "direct main", ··· 30 30 "dependency": "transitive", 31 31 "description": { 32 32 "name": "analyzer", 33 - "sha256": "b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139", 33 + "sha256": "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e", 34 34 "url": "https://pub.dev" 35 35 }, 36 36 "source": "hosted", 37 - "version": "6.7.0" 37 + "version": "6.11.0" 38 38 }, 39 39 "ansicolor": { 40 40 "dependency": "transitive", ··· 110 110 "dependency": "transitive", 111 111 "description": { 112 112 "name": "async", 113 - "sha256": "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c", 113 + "sha256": "d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63", 114 114 "url": "https://pub.dev" 115 115 }, 116 116 "source": "hosted", 117 - "version": "2.11.0" 117 + "version": "2.12.0" 118 118 }, 119 119 "auto_size_text": { 120 120 "dependency": "direct main", ··· 160 160 "dependency": "transitive", 161 161 "description": { 162 162 "name": "boolean_selector", 163 - "sha256": "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66", 163 + "sha256": "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea", 164 164 "url": "https://pub.dev" 165 165 }, 166 166 "source": "hosted", 167 - "version": "2.1.1" 167 + "version": "2.1.2" 168 168 }, 169 169 "build": { 170 170 "dependency": "transitive", ··· 250 250 "dependency": "transitive", 251 251 "description": { 252 252 "name": "characters", 253 - "sha256": "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605", 253 + "sha256": "f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803", 254 254 "url": "https://pub.dev" 255 255 }, 256 256 "source": "hosted", 257 - "version": "1.3.0" 257 + "version": "1.4.0" 258 258 }, 259 259 "checked_yaml": { 260 260 "dependency": "transitive", ··· 290 290 "dependency": "transitive", 291 291 "description": { 292 292 "name": "clock", 293 - "sha256": "cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf", 293 + "sha256": "fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b", 294 294 "url": "https://pub.dev" 295 295 }, 296 296 "source": "hosted", 297 - "version": "1.1.1" 297 + "version": "1.1.2" 298 298 }, 299 299 "code_builder": { 300 300 "dependency": "transitive", ··· 310 310 "dependency": "direct main", 311 311 "description": { 312 312 "name": "collection", 313 - "sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a", 313 + "sha256": "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76", 314 314 "url": "https://pub.dev" 315 315 }, 316 316 "source": "hosted", 317 - "version": "1.18.0" 317 + "version": "1.19.1" 318 318 }, 319 319 "confetti": { 320 320 "dependency": "direct main", ··· 541 541 "dependency": "transitive", 542 542 "description": { 543 543 "name": "fake_async", 544 - "sha256": "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78", 544 + "sha256": "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc", 545 545 "url": "https://pub.dev" 546 546 }, 547 547 "source": "hosted", 548 - "version": "1.3.1" 548 + "version": "1.3.2" 549 549 }, 550 550 "ffi": { 551 551 "dependency": "direct main", ··· 841 841 "version": "9.2.2" 842 842 }, 843 843 "flutter_secure_storage_linux": { 844 - "dependency": "direct overridden", 844 + "dependency": "transitive", 845 845 "description": { 846 - "path": "flutter_secure_storage_linux", 847 - "ref": "develop", 848 - "resolved-ref": "5a5692b609b3886cdd49b2ed06b9c079ecdff996", 849 - "url": "https://github.com/mogol/flutter_secure_storage.git" 846 + "name": "flutter_secure_storage_linux", 847 + "sha256": "be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688", 848 + "url": "https://pub.dev" 850 849 }, 851 - "source": "git", 852 - "version": "1.2.1" 850 + "source": "hosted", 851 + "version": "1.2.3" 853 852 }, 854 853 "flutter_secure_storage_macos": { 855 854 "dependency": "transitive", ··· 1177 1176 "dependency": "transitive", 1178 1177 "description": { 1179 1178 "name": "leak_tracker", 1180 - "sha256": "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05", 1179 + "sha256": "c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec", 1181 1180 "url": "https://pub.dev" 1182 1181 }, 1183 1182 "source": "hosted", 1184 - "version": "10.0.5" 1183 + "version": "10.0.8" 1185 1184 }, 1186 1185 "leak_tracker_flutter_testing": { 1187 1186 "dependency": "transitive", 1188 1187 "description": { 1189 1188 "name": "leak_tracker_flutter_testing", 1190 - "sha256": "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806", 1189 + "sha256": "f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573", 1191 1190 "url": "https://pub.dev" 1192 1191 }, 1193 1192 "source": "hosted", 1194 - "version": "3.0.5" 1193 + "version": "3.0.9" 1195 1194 }, 1196 1195 "leak_tracker_testing": { 1197 1196 "dependency": "transitive", ··· 1277 1276 "dependency": "transitive", 1278 1277 "description": { 1279 1278 "name": "macros", 1280 - "sha256": "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536", 1279 + "sha256": "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656", 1281 1280 "url": "https://pub.dev" 1282 1281 }, 1283 1282 "source": "hosted", 1284 - "version": "0.1.2-main.4" 1283 + "version": "0.1.3-main.0" 1285 1284 }, 1286 1285 "matcher": { 1287 1286 "dependency": "transitive", 1288 1287 "description": { 1289 1288 "name": "matcher", 1290 - "sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb", 1289 + "sha256": "dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2", 1291 1290 "url": "https://pub.dev" 1292 1291 }, 1293 1292 "source": "hosted", 1294 - "version": "0.12.16+1" 1293 + "version": "0.12.17" 1295 1294 }, 1296 1295 "material_color_utilities": { 1297 1296 "dependency": "transitive", ··· 1317 1316 "dependency": "transitive", 1318 1317 "description": { 1319 1318 "name": "meta", 1320 - "sha256": "bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7", 1319 + "sha256": "e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c", 1321 1320 "url": "https://pub.dev" 1322 1321 }, 1323 1322 "source": "hosted", 1324 - "version": "1.15.0" 1323 + "version": "1.16.0" 1325 1324 }, 1326 1325 "mime": { 1327 1326 "dependency": "transitive", ··· 1457 1456 "dependency": "direct main", 1458 1457 "description": { 1459 1458 "name": "path", 1460 - "sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af", 1459 + "sha256": "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5", 1461 1460 "url": "https://pub.dev" 1462 1461 }, 1463 1462 "source": "hosted", 1464 - "version": "1.9.0" 1463 + "version": "1.9.1" 1465 1464 }, 1466 1465 "path_drawing": { 1467 1466 "dependency": "transitive", ··· 1697 1696 "dependency": "direct main", 1698 1697 "description": { 1699 1698 "name": "sentry", 1700 - "sha256": "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd", 1699 + "sha256": "599701ca0693a74da361bc780b0752e1abc98226cf5095f6b069648116c896bb", 1701 1700 "url": "https://pub.dev" 1702 1701 }, 1703 1702 "source": "hosted", 1704 - "version": "8.9.0" 1703 + "version": "8.14.2" 1705 1704 }, 1706 1705 "sentry_flutter": { 1707 1706 "dependency": "direct main", 1708 1707 "description": { 1709 1708 "name": "sentry_flutter", 1710 - "sha256": "3780b5a0bb6afd476857cfbc6c7444d969c29a4d9bd1aa5b6960aa76c65b737a", 1709 + "sha256": "5ba2cf40646a77d113b37a07bd69f61bb3ec8a73cbabe5537b05a7c89d2656f8", 1711 1710 "url": "https://pub.dev" 1712 1711 }, 1713 1712 "source": "hosted", 1714 - "version": "8.9.0" 1713 + "version": "8.14.2" 1715 1714 }, 1716 1715 "share_plus": { 1717 1716 "dependency": "direct main", ··· 1837 1836 "dependency": "transitive", 1838 1837 "description": "flutter", 1839 1838 "source": "sdk", 1840 - "version": "0.0.99" 1839 + "version": "0.0.0" 1841 1840 }, 1842 1841 "sodium": { 1843 1842 "dependency": "transitive", ··· 1883 1882 "dependency": "transitive", 1884 1883 "description": { 1885 1884 "name": "source_span", 1886 - "sha256": "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c", 1885 + "sha256": "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c", 1887 1886 "url": "https://pub.dev" 1888 1887 }, 1889 1888 "source": "hosted", 1890 - "version": "1.10.0" 1889 + "version": "1.10.1" 1891 1890 }, 1892 1891 "sprintf": { 1893 1892 "dependency": "transitive", ··· 1944 1943 "dependency": "transitive", 1945 1944 "description": { 1946 1945 "name": "stack_trace", 1947 - "sha256": "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b", 1946 + "sha256": "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1", 1948 1947 "url": "https://pub.dev" 1949 1948 }, 1950 1949 "source": "hosted", 1951 - "version": "1.11.1" 1950 + "version": "1.12.1" 1952 1951 }, 1953 1952 "steam_totp": { 1954 1953 "dependency": "direct main", ··· 1974 1973 "dependency": "transitive", 1975 1974 "description": { 1976 1975 "name": "stream_channel", 1977 - "sha256": "ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7", 1976 + "sha256": "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d", 1978 1977 "url": "https://pub.dev" 1979 1978 }, 1980 1979 "source": "hosted", 1981 - "version": "2.1.2" 1980 + "version": "2.1.4" 1982 1981 }, 1983 1982 "stream_transform": { 1984 1983 "dependency": "transitive", ··· 1994 1993 "dependency": "transitive", 1995 1994 "description": { 1996 1995 "name": "string_scanner", 1997 - "sha256": "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde", 1996 + "sha256": "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43", 1998 1997 "url": "https://pub.dev" 1999 1998 }, 2000 1999 "source": "hosted", 2001 - "version": "1.2.0" 2000 + "version": "1.4.1" 2002 2001 }, 2003 2002 "styled_text": { 2004 2003 "dependency": "direct main", ··· 2024 2023 "dependency": "transitive", 2025 2024 "description": { 2026 2025 "name": "term_glyph", 2027 - "sha256": "a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84", 2026 + "sha256": "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e", 2028 2027 "url": "https://pub.dev" 2029 2028 }, 2030 2029 "source": "hosted", 2031 - "version": "1.2.1" 2030 + "version": "1.2.2" 2032 2031 }, 2033 2032 "test_api": { 2034 2033 "dependency": "transitive", 2035 2034 "description": { 2036 2035 "name": "test_api", 2037 - "sha256": "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb", 2036 + "sha256": "fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd", 2038 2037 "url": "https://pub.dev" 2039 2038 }, 2040 2039 "source": "hosted", 2041 - "version": "0.7.2" 2040 + "version": "0.7.4" 2042 2041 }, 2043 2042 "timezone": { 2044 2043 "dependency": "transitive", ··· 2244 2243 "dependency": "transitive", 2245 2244 "description": { 2246 2245 "name": "vm_service", 2247 - "sha256": "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d", 2246 + "sha256": "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14", 2248 2247 "url": "https://pub.dev" 2249 2248 }, 2250 2249 "source": "hosted", 2251 - "version": "14.2.5" 2250 + "version": "14.3.1" 2252 2251 }, 2253 2252 "watcher": { 2254 2253 "dependency": "transitive", ··· 2362 2361 } 2363 2362 }, 2364 2363 "sdks": { 2365 - "dart": ">=3.5.0 <4.0.0", 2364 + "dart": ">=3.7.0-0 <4.0.0", 2366 2365 "flutter": ">=3.24.0" 2367 2366 } 2368 2367 }
+1 -1
pkgs/by-name/ex/example-robot-data/package.nix
··· 49 49 # The package expect to find an `example-robot-data/robots` folder somewhere 50 50 # either in install prefix or in the sources 51 51 # where it can find the meshes for unit tests 52 - preCheck = "ln -s source ../../${finalAttrs.pname}"; 52 + preCheck = "ln -s source ../../example-robot-data"; 53 53 pythonImportsCheck = [ "example_robot_data" ]; 54 54 55 55 meta = with lib; {
+8 -8
pkgs/by-name/fa/fastlane/Gemfile.lock
··· 11 11 artifactory (3.0.17) 12 12 atomos (0.1.3) 13 13 aws-eventstream (1.3.2) 14 - aws-partitions (1.1090.0) 15 - aws-sdk-core (3.222.2) 14 + aws-partitions (1.1106.0) 15 + aws-sdk-core (3.224.0) 16 16 aws-eventstream (~> 1, >= 1.3.0) 17 17 aws-partitions (~> 1, >= 1.992.0) 18 18 aws-sigv4 (~> 1.9) 19 19 base64 20 20 jmespath (~> 1, >= 1.6.1) 21 21 logger 22 - aws-sdk-kms (1.99.0) 22 + aws-sdk-kms (1.101.0) 23 23 aws-sdk-core (~> 3, >= 3.216.0) 24 24 aws-sigv4 (~> 1.5) 25 - aws-sdk-s3 (1.183.0) 25 + aws-sdk-s3 (1.186.1) 26 26 aws-sdk-core (~> 3, >= 3.216.0) 27 27 aws-sdk-kms (~> 1) 28 28 aws-sigv4 (~> 1.5) ··· 71 71 faraday_middleware (1.2.1) 72 72 faraday (~> 1.0) 73 73 fastimage (2.4.0) 74 - fastlane (2.227.1) 74 + fastlane (2.227.2) 75 75 CFPropertyList (>= 2.3, < 4.0.0) 76 76 addressable (>= 2.8, < 3.0.0) 77 77 artifactory (~> 3.0) ··· 158 158 httpclient (2.9.0) 159 159 mutex_m 160 160 jmespath (1.6.2) 161 - json (2.10.2) 161 + json (2.12.1) 162 162 jwt (2.10.1) 163 163 base64 164 164 logger (1.7.0) ··· 173 173 optparse (0.6.0) 174 174 os (1.1.4) 175 175 plist (3.7.2) 176 - public_suffix (6.0.1) 176 + public_suffix (6.0.2) 177 177 rake (13.2.1) 178 178 representable (3.2.0) 179 179 declarative (< 0.1.0) ··· 185 185 ruby2_keywords (0.0.5) 186 186 rubyzip (2.4.1) 187 187 security (0.1.5) 188 - signet (0.19.0) 188 + signet (0.20.0) 189 189 addressable (~> 2.8) 190 190 faraday (>= 0.17.5, < 3.a) 191 191 jwt (>= 1.5, < 3.0)
+16 -16
pkgs/by-name/fa/fastlane/gemset.nix
··· 55 55 platforms = [ ]; 56 56 source = { 57 57 remotes = [ "https://rubygems.org" ]; 58 - sha256 = "15nkd4iskiy2c2lh1w499978zvnxkirpdm2i0y5i0yvym43kkycx"; 58 + sha256 = "12svi07s5hss8wq9xpaxwy1ibl64bd00hsn12v810wvz19fw823l"; 59 59 type = "gem"; 60 60 }; 61 - version = "1.1090.0"; 61 + version = "1.1106.0"; 62 62 }; 63 63 aws-sdk-core = { 64 64 dependencies = [ ··· 73 73 platforms = [ ]; 74 74 source = { 75 75 remotes = [ "https://rubygems.org" ]; 76 - sha256 = "1lf8aykj9ybs7mvfk27ccs221z7rhqm3lxqx6zy27lf6jl2hff86"; 76 + sha256 = "1b0pi1iibp644dn78g53s7hs7gcxghfa7h8rz3lvz8ivykisl5y6"; 77 77 type = "gem"; 78 78 }; 79 - version = "3.222.2"; 79 + version = "3.224.0"; 80 80 }; 81 81 aws-sdk-kms = { 82 82 dependencies = [ ··· 87 87 platforms = [ ]; 88 88 source = { 89 89 remotes = [ "https://rubygems.org" ]; 90 - sha256 = "1a3mh89kfh6flqxw48wfv9wfwkj2zxazw096mqm56wnnzz1jyads"; 90 + sha256 = "1mv8jc8sbvim2m3y3zxm8z4i5sh4x9ds7y9h5z04qfg7kjvbbn24"; 91 91 type = "gem"; 92 92 }; 93 - version = "1.99.0"; 93 + version = "1.101.0"; 94 94 }; 95 95 aws-sdk-s3 = { 96 96 dependencies = [ ··· 102 102 platforms = [ ]; 103 103 source = { 104 104 remotes = [ "https://rubygems.org" ]; 105 - sha256 = "0k4zg6i7xrgqv4s66hxj0l5icx44bb1ax52al2s5gz3n1hrv01lc"; 105 + sha256 = "00sq22mfibxq3rjy9c4vj1s8yjszv8988di7z7rs8v62my53nw2v"; 106 106 type = "gem"; 107 107 }; 108 - version = "1.183.0"; 108 + version = "1.186.1"; 109 109 }; 110 110 aws-sigv4 = { 111 111 dependencies = [ "aws-eventstream" ]; ··· 461 461 platforms = [ ]; 462 462 source = { 463 463 remotes = [ "https://rubygems.org" ]; 464 - sha256 = "124ijrgr9w709093g7p7hvhg1l4wy4kr1c8rn82krri89pl4q6y2"; 464 + sha256 = "1dw9smmpzhlca2zzp2pgmr2slhwnz8926s5rnjfjrclilz33p22z"; 465 465 type = "gem"; 466 466 }; 467 - version = "2.227.1"; 467 + version = "2.227.2"; 468 468 }; 469 469 fastlane-sirp = { 470 470 dependencies = [ "sysrandom" ]; ··· 668 668 platforms = [ ]; 669 669 source = { 670 670 remotes = [ "https://rubygems.org" ]; 671 - sha256 = "01lbdaizhkxmrw4y8j3wpvsryvnvzmg0pfs56c52laq2jgdfmq1l"; 671 + sha256 = "0fr0dxwn5a7z5m3i16v66pc35wmwc6mgj9f8dg7ch2bwq42y73zw"; 672 672 type = "gem"; 673 673 }; 674 - version = "2.10.2"; 674 + version = "2.12.1"; 675 675 }; 676 676 jwt = { 677 677 dependencies = [ "base64" ]; ··· 809 809 platforms = [ ]; 810 810 source = { 811 811 remotes = [ "https://rubygems.org" ]; 812 - sha256 = "0vqcw3iwby3yc6avs1vb3gfd0vcp2v7q310665dvxfswmcf4xm31"; 812 + sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; 813 813 type = "gem"; 814 814 }; 815 - version = "6.0.1"; 815 + version = "6.0.2"; 816 816 }; 817 817 rake = { 818 818 groups = [ "default" ]; ··· 910 910 platforms = [ ]; 911 911 source = { 912 912 remotes = [ "https://rubygems.org" ]; 913 - sha256 = "0cfxa11wy1nv9slmnzjczkdgld0gqizajsb03rliy53zylwkjzsk"; 913 + sha256 = "18s7xiclzajp9w9cmq8k28iy5ig1zpx1zv1mrm416cb2c0m0wrmw"; 914 914 type = "gem"; 915 915 }; 916 - version = "0.19.0"; 916 + version = "0.20.0"; 917 917 }; 918 918 simctl = { 919 919 dependencies = [
+1 -1
pkgs/by-name/fc/fcitx5-material-color/package.nix
··· 19 19 runHook preInstall 20 20 21 21 # https://gitlab.archlinux.org/archlinux/packaging/packages/fcitx5-material-color/-/blob/main/PKGBUILD?ref_type=heads#L16 22 - install -Dm644 arrow.png radio.png -t $out/share/${finalAttrs.pname}/ 22 + install -Dm644 arrow.png radio.png -t $out/share/fcitx5-material-color/ 23 23 for _variant in black blue brown deepPurple indigo orange pink red sakuraPink teal; do 24 24 _variant_name=Material-Color-$_variant 25 25 install -dm755 $_variant_name $out/share/fcitx5/themes/$_variant_name
+1 -1
pkgs/by-name/fi/figma-linux/package.nix
··· 82 82 83 83 postFixup = '' 84 84 substituteInPlace $out/share/applications/figma-linux.desktop \ 85 - --replace "Exec=/opt/figma-linux/figma-linux" "Exec=$out/bin/${finalAttrs.pname}" 85 + --replace "Exec=/opt/figma-linux/figma-linux" "Exec=$out/bin/figma-linux" 86 86 ''; 87 87 88 88 meta = with lib; {
+1 -1
pkgs/by-name/fm/fmi-reference-fmus/package.nix
··· 20 20 version = "0.0.38"; 21 21 src = fetchFromGitHub { 22 22 owner = "modelica"; 23 - repo = finalAttrs.pname; 23 + repo = "reference-fmus"; 24 24 rev = "v${finalAttrs.version}"; 25 25 hash = "sha256-FeDKYcm9K670q1FGqy41Tp2Ag8p2JidH4z78zpHOngw="; 26 26 };
+1 -2
pkgs/by-name/fr/fretboard/package.nix
··· 29 29 }; 30 30 31 31 cargoDeps = rustPlatform.fetchCargoVendor { 32 - src = finalAttrs.src; 33 - name = "${finalAttrs.pname}-${finalAttrs.version}"; 32 + inherit (finalAttrs) pname version src; 34 33 hash = "sha256-Gl78z9FR/sB14uFDLKgnfN4B5yOi6A6MH64gDXcLiWA="; 35 34 }; 36 35
+1 -2
pkgs/by-name/fu/furtherance/package.nix
··· 30 30 }; 31 31 32 32 cargoDeps = rustPlatform.fetchCargoVendor { 33 - inherit (finalAttrs) src; 34 - name = "${finalAttrs.pname}-${finalAttrs.version}"; 33 + inherit (finalAttrs) pname version src; 35 34 hash = "sha256-SFp9YCmneOll2pItWmg2b2jrpRqPnvV9vwz4mjjvwM4="; 36 35 }; 37 36
+75
pkgs/by-name/ga/galene-file-transfer/package.nix
··· 1 + { 2 + lib, 3 + buildGoModule, 4 + fetchFromGitHub, 5 + gitUpdater, 6 + nixosTests, 7 + writeShellApplication, 8 + _experimental-update-script-combinators, 9 + galene, 10 + nix, 11 + sd, 12 + }: 13 + 14 + buildGoModule (finalAttrs: { 15 + pname = "galene-file-transfer"; 16 + version = "0.2"; 17 + 18 + src = fetchFromGitHub { 19 + owner = "jech"; 20 + repo = "galene-file-transfer"; 21 + tag = "galene-file-transfer-${finalAttrs.version}"; 22 + hash = "sha256-T3OtEsHysAmHwvDIkxqXMKLqIeXEeX9uhEG4WFUgQL4="; 23 + }; 24 + 25 + vendorHash = "sha256-Z2IYZtB2PAxJD8993reu+ldTG3LdPLNMbr9pP2NUBMA="; 26 + 27 + strictDeps = true; 28 + 29 + ldflags = [ 30 + "-s" 31 + "-w" 32 + ]; 33 + 34 + passthru = { 35 + tests.vm = nixosTests.galene.file-transfer; 36 + updateScriptSrc = gitUpdater { 37 + rev-prefix = "galene-file-transfer-"; 38 + }; 39 + updateScriptVendor = writeShellApplication { 40 + name = "update-galene-file-transfer-vendorHash"; 41 + runtimeInputs = [ 42 + nix 43 + sd 44 + ]; 45 + text = '' 46 + export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-galene-file-transfer}" 47 + 48 + oldhash="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.goModules.drvAttrs.outputHash" | cut -d'"' -f2)" 49 + newhash="$(nix-build -A "$UPDATE_NIX_ATTR_PATH.goModules" --no-out-link 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" 50 + 51 + if [ "$newhash" == "" ]; then 52 + echo "No new vendorHash." 53 + exit 0 54 + fi 55 + 56 + fname="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)" 57 + 58 + ${sd.meta.mainProgram} --string-mode "$oldhash" "$newhash" "$fname" 59 + ''; 60 + }; 61 + updateScript = _experimental-update-script-combinators.sequence [ 62 + finalAttrs.passthru.updateScriptSrc.command 63 + (lib.getExe finalAttrs.passthru.updateScriptVendor) 64 + ]; 65 + }; 66 + 67 + meta = { 68 + description = "Command-line file transfer client for the Galene videoconferencing server"; 69 + homepage = "https://github.com/jech/galene-file-transfer"; 70 + changelog = "https://github.com/jech/galene-file-transfer/raw/${finalAttrs.src.rev}/CHANGES"; 71 + license = lib.licenses.mit; 72 + platforms = lib.platforms.linux; 73 + inherit (galene.meta) maintainers; 74 + }; 75 + })
+73
pkgs/by-name/ga/galene-ldap/package.nix
··· 1 + { 2 + lib, 3 + buildGoModule, 4 + fetchFromGitHub, 5 + gitUpdater, 6 + writeShellApplication, 7 + _experimental-update-script-combinators, 8 + galene, 9 + nix, 10 + sd, 11 + }: 12 + 13 + buildGoModule (finalAttrs: { 14 + pname = "galene-ldap"; 15 + version = "0.2"; 16 + 17 + src = fetchFromGitHub { 18 + owner = "jech"; 19 + repo = "galene-ldap"; 20 + tag = "galene-ldap-${finalAttrs.version}"; 21 + hash = "sha256-FXD90ishU3FBRj16tQx8wr+lSFl1dffNM1rU81Kfe1I="; 22 + }; 23 + 24 + vendorHash = "sha256-i/pWXgcd01PgH1Q+WEm0gP1leTFBhqGxVGnl6c+J1aQ="; 25 + 26 + strictDeps = true; 27 + 28 + ldflags = [ 29 + "-s" 30 + "-w" 31 + ]; 32 + 33 + passthru = { 34 + updateScriptSrc = gitUpdater { 35 + rev-prefix = "galene-ldap-"; 36 + }; 37 + updateScriptVendor = writeShellApplication { 38 + name = "update-galene-ldap-vendorHash"; 39 + runtimeInputs = [ 40 + nix 41 + sd 42 + ]; 43 + text = '' 44 + export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-galene-ldap}" 45 + 46 + oldhash="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.goModules.drvAttrs.outputHash" | cut -d'"' -f2)" 47 + newhash="$(nix-build -A "$UPDATE_NIX_ATTR_PATH.goModules" --no-out-link 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" 48 + 49 + if [ "$newhash" == "" ]; then 50 + echo "No new vendorHash." 51 + exit 0 52 + fi 53 + 54 + fname="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)" 55 + 56 + ${sd.meta.mainProgram} --string-mode "$oldhash" "$newhash" "$fname" 57 + ''; 58 + }; 59 + updateScript = _experimental-update-script-combinators.sequence [ 60 + finalAttrs.passthru.updateScriptSrc.command 61 + (lib.getExe finalAttrs.passthru.updateScriptVendor) 62 + ]; 63 + }; 64 + 65 + meta = { 66 + description = "LDAP support for the Galene videoconferencing server"; 67 + homepage = "https://github.com/jech/galene-ldap"; 68 + changelog = "https://github.com/jech/galene-ldap/raw/${finalAttrs.src.rev}/CHANGES"; 69 + license = lib.licenses.mit; 70 + platforms = lib.platforms.linux; 71 + inherit (galene.meta) maintainers; 72 + }; 73 + })
+91
pkgs/by-name/ga/galene-stt/package.nix
··· 1 + { 2 + lib, 3 + buildGoModule, 4 + fetchFromGitHub, 5 + gitUpdater, 6 + writeShellApplication, 7 + _experimental-update-script-combinators, 8 + galene, 9 + libopus, 10 + nix, 11 + pkg-config, 12 + sd, 13 + whisper-cpp, 14 + }: 15 + 16 + buildGoModule (finalAttrs: { 17 + pname = "galene-stt"; 18 + version = "0.1"; 19 + 20 + src = fetchFromGitHub { 21 + owner = "jech"; 22 + repo = "galene-stt"; 23 + tag = "galene-stt-${finalAttrs.version}"; 24 + hash = "sha256-uW1b5T+p7KGvqt+PlR9d7bo62V+URHniS45sZP/VuLQ="; 25 + }; 26 + 27 + vendorHash = "sha256-UFOxo8jq+gxN1dkM2A/BQqtT9ggIp7qovFRLv3Q6Io0="; 28 + 29 + # Not necessary, but feels cleaner to pull it in like that 30 + postPatch = '' 31 + substituteInPlace whisper.go \ 32 + --replace-fail 'cgo LDFLAGS: -lwhisper' 'cgo pkg-config: whisper' 33 + ''; 34 + 35 + strictDeps = true; 36 + 37 + nativeBuildInputs = [ 38 + pkg-config 39 + ]; 40 + 41 + buildInputs = [ 42 + libopus 43 + whisper-cpp 44 + ]; 45 + 46 + ldflags = [ 47 + "-s" 48 + "-w" 49 + ]; 50 + 51 + passthru = { 52 + updateScriptSrc = gitUpdater { 53 + rev-prefix = "galene-stt-"; 54 + }; 55 + updateScriptVendor = writeShellApplication { 56 + name = "update-galene-stt-vendorHash"; 57 + runtimeInputs = [ 58 + nix 59 + sd 60 + ]; 61 + text = '' 62 + export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-galene-stt}" 63 + 64 + oldhash="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.goModules.drvAttrs.outputHash" | cut -d'"' -f2)" 65 + newhash="$(nix-build -A "$UPDATE_NIX_ATTR_PATH.goModules" --no-out-link 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" 66 + 67 + if [ "$newhash" == "" ]; then 68 + echo "No new vendorHash." 69 + exit 0 70 + fi 71 + 72 + fname="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)" 73 + 74 + ${sd.meta.mainProgram} --string-mode "$oldhash" "$newhash" "$fname" 75 + ''; 76 + }; 77 + updateScript = _experimental-update-script-combinators.sequence [ 78 + finalAttrs.passthru.updateScriptSrc.command 79 + (lib.getExe finalAttrs.passthru.updateScriptVendor) 80 + ]; 81 + }; 82 + 83 + meta = { 84 + description = "Speech-to-text support for Galene"; 85 + homepage = "https://github.com/jech/galene-stt"; 86 + changelog = "https://github.com/jech/galene-stt/raw/${finalAttrs.src.rev}/CHANGES"; 87 + license = lib.licenses.mit; 88 + platforms = lib.platforms.linux; 89 + inherit (galene.meta) maintainers; 90 + }; 91 + })
+6
pkgs/by-name/ga/galene/package.nix
··· 2 2 lib, 3 3 fetchFromGitHub, 4 4 buildGoModule, 5 + nixosTests, 5 6 }: 6 7 7 8 buildGoModule rec { ··· 33 34 cp -r ./static $static 34 35 ''; 35 36 37 + passthru = { 38 + tests.vm = nixosTests.galene.basic; 39 + }; 40 + 36 41 meta = with lib; { 37 42 description = "Videoconferencing server that is easy to deploy, written in Go"; 38 43 homepage = "https://github.com/jech/galene"; 39 44 changelog = "https://github.com/jech/galene/raw/galene-${version}/CHANGES"; 40 45 license = licenses.mit; 41 46 platforms = platforms.linux; 47 + teams = [ lib.teams.ngi ]; 42 48 maintainers = with maintainers; [ 43 49 rgrunbla 44 50 erdnaxe
+1 -1
pkgs/by-name/ge/genesys/package.nix
··· 27 27 28 28 mkdir -p $out 29 29 mv bin lib $out 30 - wrapProgram $out/bin/${finalAttrs.pname} \ 30 + wrapProgram $out/bin/genesys \ 31 31 --set JAVA_HOME "${jre.home}" \ 32 32 --prefix PATH : "${graphviz}/bin" 33 33
-3329
pkgs/by-name/gi/github-copilot-cli/package-lock.json
··· 1 - { 2 - "name": "@githubnext/github-copilot-cli", 3 - "version": "0.1.36", 4 - "lockfileVersion": 3, 5 - "requires": true, 6 - "packages": { 7 - "": { 8 - "name": "@githubnext/github-copilot-cli", 9 - "version": "0.1.36", 10 - "dependencies": { 11 - "applicationinsights": "^2.9.1", 12 - "axios": "^1.6.0", 13 - "chalk": "^5.1.0", 14 - "cli-highlight": "^2.1.11", 15 - "commander": "^9.4.1", 16 - "get-stream": "^6.0.1", 17 - "immer": "^9.0.16", 18 - "ink": "^3.2.0", 19 - "ink-divider": "^3.0.0", 20 - "ink-select-input": "^4.2.1", 21 - "ink-spinner": "^4.0.3", 22 - "ink-text-input": "^4.0.3", 23 - "inquirer": "^9.1.4", 24 - "marked": "^4.2.12", 25 - "marked-terminal": "^5.1.1", 26 - "ora": "^6.1.2", 27 - "radash": "^9.1.0", 28 - "react": "17", 29 - "react-devtools-core": "^4.28.4", 30 - "react-dom": "17", 31 - "react-query": "^3.39.2", 32 - "semver": "^5.7.2", 33 - "simple-update-notifier": "^1.1.0", 34 - "tiny-invariant": "^1.3.1", 35 - "tough-cookie": "^4.1.3", 36 - "ts-dedent": "^2.2.0", 37 - "use-zustand": "^0.0.1", 38 - "uuid": "^9.0.0", 39 - "zustand": "^4.1.4" 40 - }, 41 - "bin": { 42 - "github-copilot-cli": "cli.js" 43 - }, 44 - "devDependencies": { 45 - "@types/inquirer": "^9.0.2", 46 - "@types/node": "^18.8.3", 47 - "@types/react": "^18.0.25", 48 - "@types/uuid": "^8.3.4", 49 - "esbuild": "^0.15.10", 50 - "genversion": "^3.1.1", 51 - "typescript": "^4.8.4" 52 - } 53 - }, 54 - "node_modules/@azure/abort-controller": { 55 - "version": "1.1.0", 56 - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", 57 - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", 58 - "dependencies": { 59 - "tslib": "^2.2.0" 60 - }, 61 - "engines": { 62 - "node": ">=12.0.0" 63 - } 64 - }, 65 - "node_modules/@azure/core-auth": { 66 - "version": "1.5.0", 67 - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz", 68 - "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==", 69 - "dependencies": { 70 - "@azure/abort-controller": "^1.0.0", 71 - "@azure/core-util": "^1.1.0", 72 - "tslib": "^2.2.0" 73 - }, 74 - "engines": { 75 - "node": ">=14.0.0" 76 - } 77 - }, 78 - "node_modules/@azure/core-rest-pipeline": { 79 - "version": "1.10.1", 80 - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz", 81 - "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==", 82 - "dependencies": { 83 - "@azure/abort-controller": "^1.0.0", 84 - "@azure/core-auth": "^1.4.0", 85 - "@azure/core-tracing": "^1.0.1", 86 - "@azure/core-util": "^1.0.0", 87 - "@azure/logger": "^1.0.0", 88 - "form-data": "^4.0.0", 89 - "http-proxy-agent": "^5.0.0", 90 - "https-proxy-agent": "^5.0.0", 91 - "tslib": "^2.2.0", 92 - "uuid": "^8.3.0" 93 - }, 94 - "engines": { 95 - "node": ">=14.0.0" 96 - } 97 - }, 98 - "node_modules/@azure/core-rest-pipeline/node_modules/uuid": { 99 - "version": "8.3.2", 100 - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 101 - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 102 - "bin": { 103 - "uuid": "dist/bin/uuid" 104 - } 105 - }, 106 - "node_modules/@azure/core-tracing": { 107 - "version": "1.0.1", 108 - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", 109 - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", 110 - "dependencies": { 111 - "tslib": "^2.2.0" 112 - }, 113 - "engines": { 114 - "node": ">=12.0.0" 115 - } 116 - }, 117 - "node_modules/@azure/core-util": { 118 - "version": "1.2.0", 119 - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz", 120 - "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==", 121 - "dependencies": { 122 - "@azure/abort-controller": "^1.0.0", 123 - "tslib": "^2.2.0" 124 - }, 125 - "engines": { 126 - "node": ">=14.0.0" 127 - } 128 - }, 129 - "node_modules/@azure/logger": { 130 - "version": "1.0.4", 131 - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz", 132 - "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==", 133 - "dependencies": { 134 - "tslib": "^2.2.0" 135 - }, 136 - "engines": { 137 - "node": ">=14.0.0" 138 - } 139 - }, 140 - "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { 141 - "version": "1.0.0-beta.5", 142 - "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz", 143 - "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==", 144 - "dependencies": { 145 - "@azure/core-tracing": "^1.0.0", 146 - "@azure/logger": "^1.0.0", 147 - "@opentelemetry/api": "^1.4.1", 148 - "@opentelemetry/core": "^1.15.2", 149 - "@opentelemetry/instrumentation": "^0.41.2", 150 - "tslib": "^2.2.0" 151 - }, 152 - "engines": { 153 - "node": ">=14.0.0" 154 - } 155 - }, 156 - "node_modules/@babel/runtime": { 157 - "version": "7.23.8", 158 - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", 159 - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", 160 - "dependencies": { 161 - "regenerator-runtime": "^0.14.0" 162 - }, 163 - "engines": { 164 - "node": ">=6.9.0" 165 - } 166 - }, 167 - "node_modules/@colors/colors": { 168 - "version": "1.5.0", 169 - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 170 - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 171 - "optional": true, 172 - "engines": { 173 - "node": ">=0.1.90" 174 - } 175 - }, 176 - "node_modules/@esbuild/android-arm": { 177 - "version": "0.15.18", 178 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", 179 - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", 180 - "cpu": [ 181 - "arm" 182 - ], 183 - "dev": true, 184 - "optional": true, 185 - "os": [ 186 - "android" 187 - ], 188 - "engines": { 189 - "node": ">=12" 190 - } 191 - }, 192 - "node_modules/@esbuild/linux-loong64": { 193 - "version": "0.15.18", 194 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", 195 - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", 196 - "cpu": [ 197 - "loong64" 198 - ], 199 - "dev": true, 200 - "optional": true, 201 - "os": [ 202 - "linux" 203 - ], 204 - "engines": { 205 - "node": ">=12" 206 - } 207 - }, 208 - "node_modules/@ljharb/through": { 209 - "version": "2.3.11", 210 - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.11.tgz", 211 - "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", 212 - "dependencies": { 213 - "call-bind": "^1.0.2" 214 - }, 215 - "engines": { 216 - "node": ">= 0.4" 217 - } 218 - }, 219 - "node_modules/@microsoft/applicationinsights-web-snippet": { 220 - "version": "1.0.1", 221 - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz", 222 - "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==" 223 - }, 224 - "node_modules/@opentelemetry/api": { 225 - "version": "1.7.0", 226 - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", 227 - "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==", 228 - "engines": { 229 - "node": ">=8.0.0" 230 - } 231 - }, 232 - "node_modules/@opentelemetry/core": { 233 - "version": "1.20.0", 234 - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.20.0.tgz", 235 - "integrity": "sha512-lSRvk5AIdD6CtgYJcJXh0wGibQ3S/8bC2qbqKs9wK8e0K1tsWV6YkGFOqVc+jIRlCbZoIBeZzDe5UI+vb94uvg==", 236 - "dependencies": { 237 - "@opentelemetry/semantic-conventions": "1.20.0" 238 - }, 239 - "engines": { 240 - "node": ">=14" 241 - }, 242 - "peerDependencies": { 243 - "@opentelemetry/api": ">=1.0.0 <1.8.0" 244 - } 245 - }, 246 - "node_modules/@opentelemetry/instrumentation": { 247 - "version": "0.41.2", 248 - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", 249 - "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", 250 - "dependencies": { 251 - "@types/shimmer": "^1.0.2", 252 - "import-in-the-middle": "1.4.2", 253 - "require-in-the-middle": "^7.1.1", 254 - "semver": "^7.5.1", 255 - "shimmer": "^1.2.1" 256 - }, 257 - "engines": { 258 - "node": ">=14" 259 - }, 260 - "peerDependencies": { 261 - "@opentelemetry/api": "^1.3.0" 262 - } 263 - }, 264 - "node_modules/@opentelemetry/instrumentation/node_modules/semver": { 265 - "version": "7.5.4", 266 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 267 - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 268 - "dependencies": { 269 - "lru-cache": "^6.0.0" 270 - }, 271 - "bin": { 272 - "semver": "bin/semver.js" 273 - }, 274 - "engines": { 275 - "node": ">=10" 276 - } 277 - }, 278 - "node_modules/@opentelemetry/resources": { 279 - "version": "1.20.0", 280 - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.20.0.tgz", 281 - "integrity": "sha512-nOpV0vGegSq+9ze2cEDvO3BMA5pGBhmhKZiAlj+xQZjiEjPmJtdHIuBLRvptu2ahcbFJw85gIB9BYHZOvZK1JQ==", 282 - "dependencies": { 283 - "@opentelemetry/core": "1.20.0", 284 - "@opentelemetry/semantic-conventions": "1.20.0" 285 - }, 286 - "engines": { 287 - "node": ">=14" 288 - }, 289 - "peerDependencies": { 290 - "@opentelemetry/api": ">=1.0.0 <1.8.0" 291 - } 292 - }, 293 - "node_modules/@opentelemetry/sdk-trace-base": { 294 - "version": "1.20.0", 295 - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.20.0.tgz", 296 - "integrity": "sha512-BAIZ0hUgnhdb3OBQjn1FKGz/Iwie4l+uOMKklP7FGh7PTqEAbbzDNMJKaZQh6KepF7Fq+CZDRKslD3yrYy2Tzw==", 297 - "dependencies": { 298 - "@opentelemetry/core": "1.20.0", 299 - "@opentelemetry/resources": "1.20.0", 300 - "@opentelemetry/semantic-conventions": "1.20.0" 301 - }, 302 - "engines": { 303 - "node": ">=14" 304 - }, 305 - "peerDependencies": { 306 - "@opentelemetry/api": ">=1.0.0 <1.8.0" 307 - } 308 - }, 309 - "node_modules/@opentelemetry/semantic-conventions": { 310 - "version": "1.20.0", 311 - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.20.0.tgz", 312 - "integrity": "sha512-3zLJJCgTKYpbqFX8drl8hOCHtdchELC+kGqlVcV4mHW1DiElTtv1Nt9EKBptTd1IfL56QkuYnWJ3DeHd2Gtu/A==", 313 - "engines": { 314 - "node": ">=14" 315 - } 316 - }, 317 - "node_modules/@tootallnate/once": { 318 - "version": "2.0.0", 319 - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 320 - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", 321 - "engines": { 322 - "node": ">= 10" 323 - } 324 - }, 325 - "node_modules/@types/inquirer": { 326 - "version": "9.0.7", 327 - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.7.tgz", 328 - "integrity": "sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==", 329 - "dev": true, 330 - "dependencies": { 331 - "@types/through": "*", 332 - "rxjs": "^7.2.0" 333 - } 334 - }, 335 - "node_modules/@types/node": { 336 - "version": "18.19.8", 337 - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.8.tgz", 338 - "integrity": "sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg==", 339 - "dev": true, 340 - "dependencies": { 341 - "undici-types": "~5.26.4" 342 - } 343 - }, 344 - "node_modules/@types/prop-types": { 345 - "version": "15.7.11", 346 - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", 347 - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", 348 - "devOptional": true 349 - }, 350 - "node_modules/@types/react": { 351 - "version": "18.2.48", 352 - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", 353 - "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", 354 - "devOptional": true, 355 - "dependencies": { 356 - "@types/prop-types": "*", 357 - "@types/scheduler": "*", 358 - "csstype": "^3.0.2" 359 - } 360 - }, 361 - "node_modules/@types/scheduler": { 362 - "version": "0.16.8", 363 - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", 364 - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", 365 - "devOptional": true 366 - }, 367 - "node_modules/@types/shimmer": { 368 - "version": "1.0.5", 369 - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.5.tgz", 370 - "integrity": "sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==" 371 - }, 372 - "node_modules/@types/through": { 373 - "version": "0.0.33", 374 - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz", 375 - "integrity": "sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==", 376 - "dev": true, 377 - "dependencies": { 378 - "@types/node": "*" 379 - } 380 - }, 381 - "node_modules/@types/uuid": { 382 - "version": "8.3.4", 383 - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", 384 - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", 385 - "dev": true 386 - }, 387 - "node_modules/@types/yoga-layout": { 388 - "version": "1.9.2", 389 - "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", 390 - "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" 391 - }, 392 - "node_modules/acorn": { 393 - "version": "8.11.3", 394 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 395 - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 396 - "bin": { 397 - "acorn": "bin/acorn" 398 - }, 399 - "engines": { 400 - "node": ">=0.4.0" 401 - } 402 - }, 403 - "node_modules/acorn-import-assertions": { 404 - "version": "1.9.0", 405 - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", 406 - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", 407 - "peerDependencies": { 408 - "acorn": "^8" 409 - } 410 - }, 411 - "node_modules/agent-base": { 412 - "version": "6.0.2", 413 - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 414 - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 415 - "dependencies": { 416 - "debug": "4" 417 - }, 418 - "engines": { 419 - "node": ">= 6.0.0" 420 - } 421 - }, 422 - "node_modules/ansi-escapes": { 423 - "version": "4.3.2", 424 - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 425 - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 426 - "dependencies": { 427 - "type-fest": "^0.21.3" 428 - }, 429 - "engines": { 430 - "node": ">=8" 431 - }, 432 - "funding": { 433 - "url": "https://github.com/sponsors/sindresorhus" 434 - } 435 - }, 436 - "node_modules/ansi-escapes/node_modules/type-fest": { 437 - "version": "0.21.3", 438 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 439 - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 440 - "engines": { 441 - "node": ">=10" 442 - }, 443 - "funding": { 444 - "url": "https://github.com/sponsors/sindresorhus" 445 - } 446 - }, 447 - "node_modules/ansi-regex": { 448 - "version": "5.0.1", 449 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 450 - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 451 - "engines": { 452 - "node": ">=8" 453 - } 454 - }, 455 - "node_modules/ansi-styles": { 456 - "version": "4.3.0", 457 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 458 - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 459 - "dependencies": { 460 - "color-convert": "^2.0.1" 461 - }, 462 - "engines": { 463 - "node": ">=8" 464 - }, 465 - "funding": { 466 - "url": "https://github.com/chalk/ansi-styles?sponsor=1" 467 - } 468 - }, 469 - "node_modules/ansicolors": { 470 - "version": "0.3.2", 471 - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", 472 - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" 473 - }, 474 - "node_modules/any-promise": { 475 - "version": "1.3.0", 476 - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 477 - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" 478 - }, 479 - "node_modules/applicationinsights": { 480 - "version": "2.9.2", 481 - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.9.2.tgz", 482 - "integrity": "sha512-wlDiD7v0BQNM8oNzsf9C836R5ze25u+CuCEZsbA5xMIXYYBxkqkWE/mo9GFJM7rsKaiGqpxEwWmePHKD2Lwy2w==", 483 - "dependencies": { 484 - "@azure/core-auth": "^1.5.0", 485 - "@azure/core-rest-pipeline": "1.10.1", 486 - "@azure/core-util": "1.2.0", 487 - "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", 488 - "@microsoft/applicationinsights-web-snippet": "^1.0.1", 489 - "@opentelemetry/api": "^1.7.0", 490 - "@opentelemetry/core": "^1.19.0", 491 - "@opentelemetry/sdk-trace-base": "^1.19.0", 492 - "@opentelemetry/semantic-conventions": "^1.19.0", 493 - "cls-hooked": "^4.2.2", 494 - "continuation-local-storage": "^3.2.1", 495 - "diagnostic-channel": "1.1.1", 496 - "diagnostic-channel-publishers": "1.0.8" 497 - }, 498 - "engines": { 499 - "node": ">=8.0.0" 500 - }, 501 - "peerDependencies": { 502 - "applicationinsights-native-metrics": "*" 503 - }, 504 - "peerDependenciesMeta": { 505 - "applicationinsights-native-metrics": { 506 - "optional": true 507 - } 508 - } 509 - }, 510 - "node_modules/arr-rotate": { 511 - "version": "1.0.0", 512 - "resolved": "https://registry.npmjs.org/arr-rotate/-/arr-rotate-1.0.0.tgz", 513 - "integrity": "sha512-yOzOZcR9Tn7enTF66bqKorGGH0F36vcPaSWg8fO0c0UYb3LX3VMXj5ZxEqQLNOecAhlRJ7wYZja5i4jTlnbIfQ==", 514 - "engines": { 515 - "node": ">=4" 516 - } 517 - }, 518 - "node_modules/astral-regex": { 519 - "version": "2.0.0", 520 - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 521 - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 522 - "engines": { 523 - "node": ">=8" 524 - } 525 - }, 526 - "node_modules/async": { 527 - "version": "3.2.5", 528 - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", 529 - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", 530 - "dev": true 531 - }, 532 - "node_modules/async-hook-jl": { 533 - "version": "1.7.6", 534 - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 535 - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 536 - "dependencies": { 537 - "stack-chain": "^1.3.7" 538 - }, 539 - "engines": { 540 - "node": "^4.7 || >=6.9 || >=7.3" 541 - } 542 - }, 543 - "node_modules/async-listener": { 544 - "version": "0.6.10", 545 - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", 546 - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", 547 - "dependencies": { 548 - "semver": "^5.3.0", 549 - "shimmer": "^1.1.0" 550 - }, 551 - "engines": { 552 - "node": "<=0.11.8 || >0.11.10" 553 - } 554 - }, 555 - "node_modules/asynckit": { 556 - "version": "0.4.0", 557 - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 558 - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 559 - }, 560 - "node_modules/auto-bind": { 561 - "version": "4.0.0", 562 - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", 563 - "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", 564 - "engines": { 565 - "node": ">=8" 566 - }, 567 - "funding": { 568 - "url": "https://github.com/sponsors/sindresorhus" 569 - } 570 - }, 571 - "node_modules/axios": { 572 - "version": "1.6.5", 573 - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", 574 - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", 575 - "dependencies": { 576 - "follow-redirects": "^1.15.4", 577 - "form-data": "^4.0.0", 578 - "proxy-from-env": "^1.1.0" 579 - } 580 - }, 581 - "node_modules/balanced-match": { 582 - "version": "1.0.2", 583 - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 584 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 585 - }, 586 - "node_modules/base64-js": { 587 - "version": "1.5.1", 588 - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 589 - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 590 - "funding": [ 591 - { 592 - "type": "github", 593 - "url": "https://github.com/sponsors/feross" 594 - }, 595 - { 596 - "type": "patreon", 597 - "url": "https://www.patreon.com/feross" 598 - }, 599 - { 600 - "type": "consulting", 601 - "url": "https://feross.org/support" 602 - } 603 - ] 604 - }, 605 - "node_modules/big-integer": { 606 - "version": "1.6.52", 607 - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", 608 - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", 609 - "engines": { 610 - "node": ">=0.6" 611 - } 612 - }, 613 - "node_modules/bl": { 614 - "version": "5.1.0", 615 - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", 616 - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", 617 - "dependencies": { 618 - "buffer": "^6.0.3", 619 - "inherits": "^2.0.4", 620 - "readable-stream": "^3.4.0" 621 - } 622 - }, 623 - "node_modules/brace-expansion": { 624 - "version": "1.1.11", 625 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 626 - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 627 - "dependencies": { 628 - "balanced-match": "^1.0.0", 629 - "concat-map": "0.0.1" 630 - } 631 - }, 632 - "node_modules/broadcast-channel": { 633 - "version": "3.7.0", 634 - "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", 635 - "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", 636 - "dependencies": { 637 - "@babel/runtime": "^7.7.2", 638 - "detect-node": "^2.1.0", 639 - "js-sha3": "0.8.0", 640 - "microseconds": "0.2.0", 641 - "nano-time": "1.0.0", 642 - "oblivious-set": "1.0.0", 643 - "rimraf": "3.0.2", 644 - "unload": "2.2.0" 645 - } 646 - }, 647 - "node_modules/buffer": { 648 - "version": "6.0.3", 649 - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 650 - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 651 - "funding": [ 652 - { 653 - "type": "github", 654 - "url": "https://github.com/sponsors/feross" 655 - }, 656 - { 657 - "type": "patreon", 658 - "url": "https://www.patreon.com/feross" 659 - }, 660 - { 661 - "type": "consulting", 662 - "url": "https://feross.org/support" 663 - } 664 - ], 665 - "dependencies": { 666 - "base64-js": "^1.3.1", 667 - "ieee754": "^1.2.1" 668 - } 669 - }, 670 - "node_modules/call-bind": { 671 - "version": "1.0.5", 672 - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", 673 - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", 674 - "dependencies": { 675 - "function-bind": "^1.1.2", 676 - "get-intrinsic": "^1.2.1", 677 - "set-function-length": "^1.1.1" 678 - }, 679 - "funding": { 680 - "url": "https://github.com/sponsors/ljharb" 681 - } 682 - }, 683 - "node_modules/cardinal": { 684 - "version": "2.1.1", 685 - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", 686 - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", 687 - "dependencies": { 688 - "ansicolors": "~0.3.2", 689 - "redeyed": "~2.1.0" 690 - }, 691 - "bin": { 692 - "cdl": "bin/cdl.js" 693 - } 694 - }, 695 - "node_modules/chalk": { 696 - "version": "5.3.0", 697 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 698 - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 699 - "engines": { 700 - "node": "^12.17.0 || ^14.13 || >=16.0.0" 701 - }, 702 - "funding": { 703 - "url": "https://github.com/chalk/chalk?sponsor=1" 704 - } 705 - }, 706 - "node_modules/chardet": { 707 - "version": "0.7.0", 708 - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 709 - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 710 - }, 711 - "node_modules/ci-info": { 712 - "version": "2.0.0", 713 - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 714 - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" 715 - }, 716 - "node_modules/cjs-module-lexer": { 717 - "version": "1.2.3", 718 - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", 719 - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" 720 - }, 721 - "node_modules/cli-boxes": { 722 - "version": "2.2.1", 723 - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", 724 - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", 725 - "engines": { 726 - "node": ">=6" 727 - }, 728 - "funding": { 729 - "url": "https://github.com/sponsors/sindresorhus" 730 - } 731 - }, 732 - "node_modules/cli-cursor": { 733 - "version": "3.1.0", 734 - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 735 - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 736 - "dependencies": { 737 - "restore-cursor": "^3.1.0" 738 - }, 739 - "engines": { 740 - "node": ">=8" 741 - } 742 - }, 743 - "node_modules/cli-highlight": { 744 - "version": "2.1.11", 745 - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", 746 - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", 747 - "dependencies": { 748 - "chalk": "^4.0.0", 749 - "highlight.js": "^10.7.1", 750 - "mz": "^2.4.0", 751 - "parse5": "^5.1.1", 752 - "parse5-htmlparser2-tree-adapter": "^6.0.0", 753 - "yargs": "^16.0.0" 754 - }, 755 - "bin": { 756 - "highlight": "bin/highlight" 757 - }, 758 - "engines": { 759 - "node": ">=8.0.0", 760 - "npm": ">=5.0.0" 761 - } 762 - }, 763 - "node_modules/cli-highlight/node_modules/chalk": { 764 - "version": "4.1.2", 765 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 766 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 767 - "dependencies": { 768 - "ansi-styles": "^4.1.0", 769 - "supports-color": "^7.1.0" 770 - }, 771 - "engines": { 772 - "node": ">=10" 773 - }, 774 - "funding": { 775 - "url": "https://github.com/chalk/chalk?sponsor=1" 776 - } 777 - }, 778 - "node_modules/cli-spinners": { 779 - "version": "2.9.2", 780 - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", 781 - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", 782 - "engines": { 783 - "node": ">=6" 784 - }, 785 - "funding": { 786 - "url": "https://github.com/sponsors/sindresorhus" 787 - } 788 - }, 789 - "node_modules/cli-table3": { 790 - "version": "0.6.3", 791 - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", 792 - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", 793 - "dependencies": { 794 - "string-width": "^4.2.0" 795 - }, 796 - "engines": { 797 - "node": "10.* || >= 12.*" 798 - }, 799 - "optionalDependencies": { 800 - "@colors/colors": "1.5.0" 801 - } 802 - }, 803 - "node_modules/cli-truncate": { 804 - "version": "2.1.0", 805 - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", 806 - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", 807 - "dependencies": { 808 - "slice-ansi": "^3.0.0", 809 - "string-width": "^4.2.0" 810 - }, 811 - "engines": { 812 - "node": ">=8" 813 - }, 814 - "funding": { 815 - "url": "https://github.com/sponsors/sindresorhus" 816 - } 817 - }, 818 - "node_modules/cli-width": { 819 - "version": "4.1.0", 820 - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", 821 - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", 822 - "engines": { 823 - "node": ">= 12" 824 - } 825 - }, 826 - "node_modules/cliui": { 827 - "version": "7.0.4", 828 - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 829 - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 830 - "dependencies": { 831 - "string-width": "^4.2.0", 832 - "strip-ansi": "^6.0.0", 833 - "wrap-ansi": "^7.0.0" 834 - } 835 - }, 836 - "node_modules/cliui/node_modules/wrap-ansi": { 837 - "version": "7.0.0", 838 - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 839 - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 840 - "dependencies": { 841 - "ansi-styles": "^4.0.0", 842 - "string-width": "^4.1.0", 843 - "strip-ansi": "^6.0.0" 844 - }, 845 - "engines": { 846 - "node": ">=10" 847 - }, 848 - "funding": { 849 - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 850 - } 851 - }, 852 - "node_modules/clone": { 853 - "version": "1.0.4", 854 - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 855 - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", 856 - "engines": { 857 - "node": ">=0.8" 858 - } 859 - }, 860 - "node_modules/cls-hooked": { 861 - "version": "4.2.2", 862 - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 863 - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 864 - "dependencies": { 865 - "async-hook-jl": "^1.7.6", 866 - "emitter-listener": "^1.0.1", 867 - "semver": "^5.4.1" 868 - }, 869 - "engines": { 870 - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" 871 - } 872 - }, 873 - "node_modules/code-excerpt": { 874 - "version": "3.0.0", 875 - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-3.0.0.tgz", 876 - "integrity": "sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==", 877 - "dependencies": { 878 - "convert-to-spaces": "^1.0.1" 879 - }, 880 - "engines": { 881 - "node": ">=10" 882 - } 883 - }, 884 - "node_modules/color-convert": { 885 - "version": "2.0.1", 886 - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 887 - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 888 - "dependencies": { 889 - "color-name": "~1.1.4" 890 - }, 891 - "engines": { 892 - "node": ">=7.0.0" 893 - } 894 - }, 895 - "node_modules/color-name": { 896 - "version": "1.1.4", 897 - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 898 - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 899 - }, 900 - "node_modules/combined-stream": { 901 - "version": "1.0.8", 902 - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 903 - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 904 - "dependencies": { 905 - "delayed-stream": "~1.0.0" 906 - }, 907 - "engines": { 908 - "node": ">= 0.8" 909 - } 910 - }, 911 - "node_modules/commander": { 912 - "version": "9.5.0", 913 - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", 914 - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", 915 - "engines": { 916 - "node": "^12.20.0 || >=14" 917 - } 918 - }, 919 - "node_modules/concat-map": { 920 - "version": "0.0.1", 921 - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 922 - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 923 - }, 924 - "node_modules/continuation-local-storage": { 925 - "version": "3.2.1", 926 - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", 927 - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", 928 - "dependencies": { 929 - "async-listener": "^0.6.0", 930 - "emitter-listener": "^1.1.1" 931 - } 932 - }, 933 - "node_modules/convert-to-spaces": { 934 - "version": "1.0.2", 935 - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", 936 - "integrity": "sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==", 937 - "engines": { 938 - "node": ">= 4" 939 - } 940 - }, 941 - "node_modules/csstype": { 942 - "version": "3.1.3", 943 - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 944 - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 945 - "devOptional": true 946 - }, 947 - "node_modules/debug": { 948 - "version": "4.3.4", 949 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 950 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 951 - "dependencies": { 952 - "ms": "2.1.2" 953 - }, 954 - "engines": { 955 - "node": ">=6.0" 956 - }, 957 - "peerDependenciesMeta": { 958 - "supports-color": { 959 - "optional": true 960 - } 961 - } 962 - }, 963 - "node_modules/defaults": { 964 - "version": "1.0.4", 965 - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", 966 - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", 967 - "dependencies": { 968 - "clone": "^1.0.2" 969 - }, 970 - "funding": { 971 - "url": "https://github.com/sponsors/sindresorhus" 972 - } 973 - }, 974 - "node_modules/define-data-property": { 975 - "version": "1.1.1", 976 - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", 977 - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", 978 - "dependencies": { 979 - "get-intrinsic": "^1.2.1", 980 - "gopd": "^1.0.1", 981 - "has-property-descriptors": "^1.0.0" 982 - }, 983 - "engines": { 984 - "node": ">= 0.4" 985 - } 986 - }, 987 - "node_modules/delayed-stream": { 988 - "version": "1.0.0", 989 - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 990 - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 991 - "engines": { 992 - "node": ">=0.4.0" 993 - } 994 - }, 995 - "node_modules/detect-node": { 996 - "version": "2.1.0", 997 - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", 998 - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" 999 - }, 1000 - "node_modules/diagnostic-channel": { 1001 - "version": "1.1.1", 1002 - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz", 1003 - "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==", 1004 - "dependencies": { 1005 - "semver": "^7.5.3" 1006 - } 1007 - }, 1008 - "node_modules/diagnostic-channel-publishers": { 1009 - "version": "1.0.8", 1010 - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.8.tgz", 1011 - "integrity": "sha512-HmSm9hXxSPxA9BaLGY98QU1zsdjeCk113KjAYGPCen1ZP6mhVaTPzHd6UYv5r21DnWANi+f+NyPOHruGT9jpqQ==", 1012 - "peerDependencies": { 1013 - "diagnostic-channel": "*" 1014 - } 1015 - }, 1016 - "node_modules/diagnostic-channel/node_modules/semver": { 1017 - "version": "7.5.4", 1018 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 1019 - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 1020 - "dependencies": { 1021 - "lru-cache": "^6.0.0" 1022 - }, 1023 - "bin": { 1024 - "semver": "bin/semver.js" 1025 - }, 1026 - "engines": { 1027 - "node": ">=10" 1028 - } 1029 - }, 1030 - "node_modules/ejs": { 1031 - "version": "3.1.9", 1032 - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", 1033 - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", 1034 - "dev": true, 1035 - "dependencies": { 1036 - "jake": "^10.8.5" 1037 - }, 1038 - "bin": { 1039 - "ejs": "bin/cli.js" 1040 - }, 1041 - "engines": { 1042 - "node": ">=0.10.0" 1043 - } 1044 - }, 1045 - "node_modules/emitter-listener": { 1046 - "version": "1.1.2", 1047 - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 1048 - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 1049 - "dependencies": { 1050 - "shimmer": "^1.2.0" 1051 - } 1052 - }, 1053 - "node_modules/emoji-regex": { 1054 - "version": "8.0.0", 1055 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1056 - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1057 - }, 1058 - "node_modules/esbuild": { 1059 - "version": "0.15.18", 1060 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", 1061 - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", 1062 - "dev": true, 1063 - "hasInstallScript": true, 1064 - "bin": { 1065 - "esbuild": "bin/esbuild" 1066 - }, 1067 - "engines": { 1068 - "node": ">=12" 1069 - }, 1070 - "optionalDependencies": { 1071 - "@esbuild/android-arm": "0.15.18", 1072 - "@esbuild/linux-loong64": "0.15.18", 1073 - "esbuild-android-64": "0.15.18", 1074 - "esbuild-android-arm64": "0.15.18", 1075 - "esbuild-darwin-64": "0.15.18", 1076 - "esbuild-darwin-arm64": "0.15.18", 1077 - "esbuild-freebsd-64": "0.15.18", 1078 - "esbuild-freebsd-arm64": "0.15.18", 1079 - "esbuild-linux-32": "0.15.18", 1080 - "esbuild-linux-64": "0.15.18", 1081 - "esbuild-linux-arm": "0.15.18", 1082 - "esbuild-linux-arm64": "0.15.18", 1083 - "esbuild-linux-mips64le": "0.15.18", 1084 - "esbuild-linux-ppc64le": "0.15.18", 1085 - "esbuild-linux-riscv64": "0.15.18", 1086 - "esbuild-linux-s390x": "0.15.18", 1087 - "esbuild-netbsd-64": "0.15.18", 1088 - "esbuild-openbsd-64": "0.15.18", 1089 - "esbuild-sunos-64": "0.15.18", 1090 - "esbuild-windows-32": "0.15.18", 1091 - "esbuild-windows-64": "0.15.18", 1092 - "esbuild-windows-arm64": "0.15.18" 1093 - } 1094 - }, 1095 - "node_modules/esbuild-android-64": { 1096 - "version": "0.15.18", 1097 - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", 1098 - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", 1099 - "cpu": [ 1100 - "x64" 1101 - ], 1102 - "dev": true, 1103 - "optional": true, 1104 - "os": [ 1105 - "android" 1106 - ], 1107 - "engines": { 1108 - "node": ">=12" 1109 - } 1110 - }, 1111 - "node_modules/esbuild-android-arm64": { 1112 - "version": "0.15.18", 1113 - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", 1114 - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", 1115 - "cpu": [ 1116 - "arm64" 1117 - ], 1118 - "dev": true, 1119 - "optional": true, 1120 - "os": [ 1121 - "android" 1122 - ], 1123 - "engines": { 1124 - "node": ">=12" 1125 - } 1126 - }, 1127 - "node_modules/esbuild-darwin-64": { 1128 - "version": "0.15.18", 1129 - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", 1130 - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", 1131 - "cpu": [ 1132 - "x64" 1133 - ], 1134 - "dev": true, 1135 - "optional": true, 1136 - "os": [ 1137 - "darwin" 1138 - ], 1139 - "engines": { 1140 - "node": ">=12" 1141 - } 1142 - }, 1143 - "node_modules/esbuild-darwin-arm64": { 1144 - "version": "0.15.18", 1145 - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", 1146 - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", 1147 - "cpu": [ 1148 - "arm64" 1149 - ], 1150 - "dev": true, 1151 - "optional": true, 1152 - "os": [ 1153 - "darwin" 1154 - ], 1155 - "engines": { 1156 - "node": ">=12" 1157 - } 1158 - }, 1159 - "node_modules/esbuild-freebsd-64": { 1160 - "version": "0.15.18", 1161 - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", 1162 - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", 1163 - "cpu": [ 1164 - "x64" 1165 - ], 1166 - "dev": true, 1167 - "optional": true, 1168 - "os": [ 1169 - "freebsd" 1170 - ], 1171 - "engines": { 1172 - "node": ">=12" 1173 - } 1174 - }, 1175 - "node_modules/esbuild-freebsd-arm64": { 1176 - "version": "0.15.18", 1177 - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", 1178 - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", 1179 - "cpu": [ 1180 - "arm64" 1181 - ], 1182 - "dev": true, 1183 - "optional": true, 1184 - "os": [ 1185 - "freebsd" 1186 - ], 1187 - "engines": { 1188 - "node": ">=12" 1189 - } 1190 - }, 1191 - "node_modules/esbuild-linux-32": { 1192 - "version": "0.15.18", 1193 - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", 1194 - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", 1195 - "cpu": [ 1196 - "ia32" 1197 - ], 1198 - "dev": true, 1199 - "optional": true, 1200 - "os": [ 1201 - "linux" 1202 - ], 1203 - "engines": { 1204 - "node": ">=12" 1205 - } 1206 - }, 1207 - "node_modules/esbuild-linux-64": { 1208 - "version": "0.15.18", 1209 - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", 1210 - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", 1211 - "cpu": [ 1212 - "x64" 1213 - ], 1214 - "dev": true, 1215 - "optional": true, 1216 - "os": [ 1217 - "linux" 1218 - ], 1219 - "engines": { 1220 - "node": ">=12" 1221 - } 1222 - }, 1223 - "node_modules/esbuild-linux-arm": { 1224 - "version": "0.15.18", 1225 - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", 1226 - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", 1227 - "cpu": [ 1228 - "arm" 1229 - ], 1230 - "dev": true, 1231 - "optional": true, 1232 - "os": [ 1233 - "linux" 1234 - ], 1235 - "engines": { 1236 - "node": ">=12" 1237 - } 1238 - }, 1239 - "node_modules/esbuild-linux-arm64": { 1240 - "version": "0.15.18", 1241 - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", 1242 - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", 1243 - "cpu": [ 1244 - "arm64" 1245 - ], 1246 - "dev": true, 1247 - "optional": true, 1248 - "os": [ 1249 - "linux" 1250 - ], 1251 - "engines": { 1252 - "node": ">=12" 1253 - } 1254 - }, 1255 - "node_modules/esbuild-linux-mips64le": { 1256 - "version": "0.15.18", 1257 - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", 1258 - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", 1259 - "cpu": [ 1260 - "mips64el" 1261 - ], 1262 - "dev": true, 1263 - "optional": true, 1264 - "os": [ 1265 - "linux" 1266 - ], 1267 - "engines": { 1268 - "node": ">=12" 1269 - } 1270 - }, 1271 - "node_modules/esbuild-linux-ppc64le": { 1272 - "version": "0.15.18", 1273 - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", 1274 - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", 1275 - "cpu": [ 1276 - "ppc64" 1277 - ], 1278 - "dev": true, 1279 - "optional": true, 1280 - "os": [ 1281 - "linux" 1282 - ], 1283 - "engines": { 1284 - "node": ">=12" 1285 - } 1286 - }, 1287 - "node_modules/esbuild-linux-riscv64": { 1288 - "version": "0.15.18", 1289 - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", 1290 - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", 1291 - "cpu": [ 1292 - "riscv64" 1293 - ], 1294 - "dev": true, 1295 - "optional": true, 1296 - "os": [ 1297 - "linux" 1298 - ], 1299 - "engines": { 1300 - "node": ">=12" 1301 - } 1302 - }, 1303 - "node_modules/esbuild-linux-s390x": { 1304 - "version": "0.15.18", 1305 - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", 1306 - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", 1307 - "cpu": [ 1308 - "s390x" 1309 - ], 1310 - "dev": true, 1311 - "optional": true, 1312 - "os": [ 1313 - "linux" 1314 - ], 1315 - "engines": { 1316 - "node": ">=12" 1317 - } 1318 - }, 1319 - "node_modules/esbuild-netbsd-64": { 1320 - "version": "0.15.18", 1321 - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", 1322 - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", 1323 - "cpu": [ 1324 - "x64" 1325 - ], 1326 - "dev": true, 1327 - "optional": true, 1328 - "os": [ 1329 - "netbsd" 1330 - ], 1331 - "engines": { 1332 - "node": ">=12" 1333 - } 1334 - }, 1335 - "node_modules/esbuild-openbsd-64": { 1336 - "version": "0.15.18", 1337 - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", 1338 - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", 1339 - "cpu": [ 1340 - "x64" 1341 - ], 1342 - "dev": true, 1343 - "optional": true, 1344 - "os": [ 1345 - "openbsd" 1346 - ], 1347 - "engines": { 1348 - "node": ">=12" 1349 - } 1350 - }, 1351 - "node_modules/esbuild-sunos-64": { 1352 - "version": "0.15.18", 1353 - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", 1354 - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", 1355 - "cpu": [ 1356 - "x64" 1357 - ], 1358 - "dev": true, 1359 - "optional": true, 1360 - "os": [ 1361 - "sunos" 1362 - ], 1363 - "engines": { 1364 - "node": ">=12" 1365 - } 1366 - }, 1367 - "node_modules/esbuild-windows-32": { 1368 - "version": "0.15.18", 1369 - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", 1370 - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", 1371 - "cpu": [ 1372 - "ia32" 1373 - ], 1374 - "dev": true, 1375 - "optional": true, 1376 - "os": [ 1377 - "win32" 1378 - ], 1379 - "engines": { 1380 - "node": ">=12" 1381 - } 1382 - }, 1383 - "node_modules/esbuild-windows-64": { 1384 - "version": "0.15.18", 1385 - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", 1386 - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", 1387 - "cpu": [ 1388 - "x64" 1389 - ], 1390 - "dev": true, 1391 - "optional": true, 1392 - "os": [ 1393 - "win32" 1394 - ], 1395 - "engines": { 1396 - "node": ">=12" 1397 - } 1398 - }, 1399 - "node_modules/esbuild-windows-arm64": { 1400 - "version": "0.15.18", 1401 - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", 1402 - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", 1403 - "cpu": [ 1404 - "arm64" 1405 - ], 1406 - "dev": true, 1407 - "optional": true, 1408 - "os": [ 1409 - "win32" 1410 - ], 1411 - "engines": { 1412 - "node": ">=12" 1413 - } 1414 - }, 1415 - "node_modules/escalade": { 1416 - "version": "3.1.1", 1417 - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1418 - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1419 - "engines": { 1420 - "node": ">=6" 1421 - } 1422 - }, 1423 - "node_modules/escape-string-regexp": { 1424 - "version": "1.0.5", 1425 - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1426 - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1427 - "engines": { 1428 - "node": ">=0.8.0" 1429 - } 1430 - }, 1431 - "node_modules/esprima": { 1432 - "version": "4.0.1", 1433 - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1434 - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1435 - "bin": { 1436 - "esparse": "bin/esparse.js", 1437 - "esvalidate": "bin/esvalidate.js" 1438 - }, 1439 - "engines": { 1440 - "node": ">=4" 1441 - } 1442 - }, 1443 - "node_modules/external-editor": { 1444 - "version": "3.1.0", 1445 - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 1446 - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 1447 - "dependencies": { 1448 - "chardet": "^0.7.0", 1449 - "iconv-lite": "^0.4.24", 1450 - "tmp": "^0.0.33" 1451 - }, 1452 - "engines": { 1453 - "node": ">=4" 1454 - } 1455 - }, 1456 - "node_modules/figures": { 1457 - "version": "3.2.0", 1458 - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 1459 - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 1460 - "dependencies": { 1461 - "escape-string-regexp": "^1.0.5" 1462 - }, 1463 - "engines": { 1464 - "node": ">=8" 1465 - }, 1466 - "funding": { 1467 - "url": "https://github.com/sponsors/sindresorhus" 1468 - } 1469 - }, 1470 - "node_modules/filelist": { 1471 - "version": "1.0.4", 1472 - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", 1473 - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", 1474 - "dev": true, 1475 - "dependencies": { 1476 - "minimatch": "^5.0.1" 1477 - } 1478 - }, 1479 - "node_modules/filelist/node_modules/brace-expansion": { 1480 - "version": "2.0.1", 1481 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1482 - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1483 - "dev": true, 1484 - "dependencies": { 1485 - "balanced-match": "^1.0.0" 1486 - } 1487 - }, 1488 - "node_modules/filelist/node_modules/minimatch": { 1489 - "version": "5.1.6", 1490 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1491 - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1492 - "dev": true, 1493 - "dependencies": { 1494 - "brace-expansion": "^2.0.1" 1495 - }, 1496 - "engines": { 1497 - "node": ">=10" 1498 - } 1499 - }, 1500 - "node_modules/find-package": { 1501 - "version": "1.0.0", 1502 - "resolved": "https://registry.npmjs.org/find-package/-/find-package-1.0.0.tgz", 1503 - "integrity": "sha512-yVn71XCCaNgxz58ERTl8nA/8YYtIQDY9mHSrgFBfiFtdNNfY0h183Vh8BRkKxD8x9TUw3ec290uJKhDVxqGZBw==", 1504 - "dev": true, 1505 - "dependencies": { 1506 - "parents": "^1.0.1" 1507 - } 1508 - }, 1509 - "node_modules/follow-redirects": { 1510 - "version": "1.15.5", 1511 - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", 1512 - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", 1513 - "funding": [ 1514 - { 1515 - "type": "individual", 1516 - "url": "https://github.com/sponsors/RubenVerborgh" 1517 - } 1518 - ], 1519 - "engines": { 1520 - "node": ">=4.0" 1521 - }, 1522 - "peerDependenciesMeta": { 1523 - "debug": { 1524 - "optional": true 1525 - } 1526 - } 1527 - }, 1528 - "node_modules/form-data": { 1529 - "version": "4.0.0", 1530 - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1531 - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1532 - "dependencies": { 1533 - "asynckit": "^0.4.0", 1534 - "combined-stream": "^1.0.8", 1535 - "mime-types": "^2.1.12" 1536 - }, 1537 - "engines": { 1538 - "node": ">= 6" 1539 - } 1540 - }, 1541 - "node_modules/fs.realpath": { 1542 - "version": "1.0.0", 1543 - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1544 - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1545 - }, 1546 - "node_modules/function-bind": { 1547 - "version": "1.1.2", 1548 - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1549 - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1550 - "funding": { 1551 - "url": "https://github.com/sponsors/ljharb" 1552 - } 1553 - }, 1554 - "node_modules/genversion": { 1555 - "version": "3.2.0", 1556 - "resolved": "https://registry.npmjs.org/genversion/-/genversion-3.2.0.tgz", 1557 - "integrity": "sha512-OIYSX6XYA8PHecLDCTri30hadSZfAjZ8Iq1+BBDXqLWP4dRLuJNLoNjsSWtTpw97IccK2LDWzkEstxAB8GdN7g==", 1558 - "dev": true, 1559 - "dependencies": { 1560 - "commander": "^7.2.0", 1561 - "ejs": "^3.1.9", 1562 - "find-package": "^1.0.0" 1563 - }, 1564 - "bin": { 1565 - "genversion": "bin/genversion.js" 1566 - }, 1567 - "engines": { 1568 - "node": ">=10.0.0" 1569 - } 1570 - }, 1571 - "node_modules/genversion/node_modules/commander": { 1572 - "version": "7.2.0", 1573 - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 1574 - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 1575 - "dev": true, 1576 - "engines": { 1577 - "node": ">= 10" 1578 - } 1579 - }, 1580 - "node_modules/get-caller-file": { 1581 - "version": "2.0.5", 1582 - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1583 - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1584 - "engines": { 1585 - "node": "6.* || 8.* || >= 10.*" 1586 - } 1587 - }, 1588 - "node_modules/get-intrinsic": { 1589 - "version": "1.2.2", 1590 - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", 1591 - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", 1592 - "dependencies": { 1593 - "function-bind": "^1.1.2", 1594 - "has-proto": "^1.0.1", 1595 - "has-symbols": "^1.0.3", 1596 - "hasown": "^2.0.0" 1597 - }, 1598 - "funding": { 1599 - "url": "https://github.com/sponsors/ljharb" 1600 - } 1601 - }, 1602 - "node_modules/get-stream": { 1603 - "version": "6.0.1", 1604 - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 1605 - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 1606 - "engines": { 1607 - "node": ">=10" 1608 - }, 1609 - "funding": { 1610 - "url": "https://github.com/sponsors/sindresorhus" 1611 - } 1612 - }, 1613 - "node_modules/glob": { 1614 - "version": "7.2.3", 1615 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1616 - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1617 - "dependencies": { 1618 - "fs.realpath": "^1.0.0", 1619 - "inflight": "^1.0.4", 1620 - "inherits": "2", 1621 - "minimatch": "^3.1.1", 1622 - "once": "^1.3.0", 1623 - "path-is-absolute": "^1.0.0" 1624 - }, 1625 - "engines": { 1626 - "node": "*" 1627 - }, 1628 - "funding": { 1629 - "url": "https://github.com/sponsors/isaacs" 1630 - } 1631 - }, 1632 - "node_modules/gopd": { 1633 - "version": "1.0.1", 1634 - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 1635 - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 1636 - "dependencies": { 1637 - "get-intrinsic": "^1.1.3" 1638 - }, 1639 - "funding": { 1640 - "url": "https://github.com/sponsors/ljharb" 1641 - } 1642 - }, 1643 - "node_modules/has-flag": { 1644 - "version": "4.0.0", 1645 - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1646 - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1647 - "engines": { 1648 - "node": ">=8" 1649 - } 1650 - }, 1651 - "node_modules/has-property-descriptors": { 1652 - "version": "1.0.1", 1653 - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", 1654 - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", 1655 - "dependencies": { 1656 - "get-intrinsic": "^1.2.2" 1657 - }, 1658 - "funding": { 1659 - "url": "https://github.com/sponsors/ljharb" 1660 - } 1661 - }, 1662 - "node_modules/has-proto": { 1663 - "version": "1.0.1", 1664 - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 1665 - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 1666 - "engines": { 1667 - "node": ">= 0.4" 1668 - }, 1669 - "funding": { 1670 - "url": "https://github.com/sponsors/ljharb" 1671 - } 1672 - }, 1673 - "node_modules/has-symbols": { 1674 - "version": "1.0.3", 1675 - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1676 - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1677 - "engines": { 1678 - "node": ">= 0.4" 1679 - }, 1680 - "funding": { 1681 - "url": "https://github.com/sponsors/ljharb" 1682 - } 1683 - }, 1684 - "node_modules/hasown": { 1685 - "version": "2.0.0", 1686 - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", 1687 - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", 1688 - "dependencies": { 1689 - "function-bind": "^1.1.2" 1690 - }, 1691 - "engines": { 1692 - "node": ">= 0.4" 1693 - } 1694 - }, 1695 - "node_modules/highlight.js": { 1696 - "version": "10.7.3", 1697 - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", 1698 - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", 1699 - "engines": { 1700 - "node": "*" 1701 - } 1702 - }, 1703 - "node_modules/http-proxy-agent": { 1704 - "version": "5.0.0", 1705 - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 1706 - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 1707 - "dependencies": { 1708 - "@tootallnate/once": "2", 1709 - "agent-base": "6", 1710 - "debug": "4" 1711 - }, 1712 - "engines": { 1713 - "node": ">= 6" 1714 - } 1715 - }, 1716 - "node_modules/https-proxy-agent": { 1717 - "version": "5.0.1", 1718 - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1719 - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1720 - "dependencies": { 1721 - "agent-base": "6", 1722 - "debug": "4" 1723 - }, 1724 - "engines": { 1725 - "node": ">= 6" 1726 - } 1727 - }, 1728 - "node_modules/iconv-lite": { 1729 - "version": "0.4.24", 1730 - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1731 - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1732 - "dependencies": { 1733 - "safer-buffer": ">= 2.1.2 < 3" 1734 - }, 1735 - "engines": { 1736 - "node": ">=0.10.0" 1737 - } 1738 - }, 1739 - "node_modules/ieee754": { 1740 - "version": "1.2.1", 1741 - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1742 - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1743 - "funding": [ 1744 - { 1745 - "type": "github", 1746 - "url": "https://github.com/sponsors/feross" 1747 - }, 1748 - { 1749 - "type": "patreon", 1750 - "url": "https://www.patreon.com/feross" 1751 - }, 1752 - { 1753 - "type": "consulting", 1754 - "url": "https://feross.org/support" 1755 - } 1756 - ] 1757 - }, 1758 - "node_modules/immer": { 1759 - "version": "9.0.21", 1760 - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", 1761 - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", 1762 - "funding": { 1763 - "type": "opencollective", 1764 - "url": "https://opencollective.com/immer" 1765 - } 1766 - }, 1767 - "node_modules/import-in-the-middle": { 1768 - "version": "1.4.2", 1769 - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz", 1770 - "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==", 1771 - "dependencies": { 1772 - "acorn": "^8.8.2", 1773 - "acorn-import-assertions": "^1.9.0", 1774 - "cjs-module-lexer": "^1.2.2", 1775 - "module-details-from-path": "^1.0.3" 1776 - } 1777 - }, 1778 - "node_modules/indent-string": { 1779 - "version": "4.0.0", 1780 - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1781 - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1782 - "engines": { 1783 - "node": ">=8" 1784 - } 1785 - }, 1786 - "node_modules/inflight": { 1787 - "version": "1.0.6", 1788 - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1789 - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1790 - "dependencies": { 1791 - "once": "^1.3.0", 1792 - "wrappy": "1" 1793 - } 1794 - }, 1795 - "node_modules/inherits": { 1796 - "version": "2.0.4", 1797 - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1798 - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1799 - }, 1800 - "node_modules/ink": { 1801 - "version": "3.2.0", 1802 - "resolved": "https://registry.npmjs.org/ink/-/ink-3.2.0.tgz", 1803 - "integrity": "sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==", 1804 - "dependencies": { 1805 - "ansi-escapes": "^4.2.1", 1806 - "auto-bind": "4.0.0", 1807 - "chalk": "^4.1.0", 1808 - "cli-boxes": "^2.2.0", 1809 - "cli-cursor": "^3.1.0", 1810 - "cli-truncate": "^2.1.0", 1811 - "code-excerpt": "^3.0.0", 1812 - "indent-string": "^4.0.0", 1813 - "is-ci": "^2.0.0", 1814 - "lodash": "^4.17.20", 1815 - "patch-console": "^1.0.0", 1816 - "react-devtools-core": "^4.19.1", 1817 - "react-reconciler": "^0.26.2", 1818 - "scheduler": "^0.20.2", 1819 - "signal-exit": "^3.0.2", 1820 - "slice-ansi": "^3.0.0", 1821 - "stack-utils": "^2.0.2", 1822 - "string-width": "^4.2.2", 1823 - "type-fest": "^0.12.0", 1824 - "widest-line": "^3.1.0", 1825 - "wrap-ansi": "^6.2.0", 1826 - "ws": "^7.5.5", 1827 - "yoga-layout-prebuilt": "^1.9.6" 1828 - }, 1829 - "engines": { 1830 - "node": ">=10" 1831 - }, 1832 - "peerDependencies": { 1833 - "@types/react": ">=16.8.0", 1834 - "react": ">=16.8.0" 1835 - }, 1836 - "peerDependenciesMeta": { 1837 - "@types/react": { 1838 - "optional": true 1839 - } 1840 - } 1841 - }, 1842 - "node_modules/ink-divider": { 1843 - "version": "3.0.0", 1844 - "resolved": "https://registry.npmjs.org/ink-divider/-/ink-divider-3.0.0.tgz", 1845 - "integrity": "sha512-Mqb9WArtEZCtXw622aHhJqPK157QNc+8ssl9/RvAZlS6nZRCKyW4mYOYCudQh6dSuFGt9eG5yaqT1mJaGmwu+w==", 1846 - "dependencies": { 1847 - "prop-types": "^15.7.2", 1848 - "string-width": "^4.0.0" 1849 - }, 1850 - "engines": { 1851 - "node": ">=6" 1852 - }, 1853 - "peerDependencies": { 1854 - "ink": ">=3.0.0", 1855 - "react": ">=16.8.0" 1856 - } 1857 - }, 1858 - "node_modules/ink-select-input": { 1859 - "version": "4.2.2", 1860 - "resolved": "https://registry.npmjs.org/ink-select-input/-/ink-select-input-4.2.2.tgz", 1861 - "integrity": "sha512-E5AS2Vnd4CSzEa7Rm+hG47wxRQo1ASfh4msKxO7FHmn/ym+GKSSsFIfR+FonqjKNDPXYJClw8lM47RdN3Pi+nw==", 1862 - "dependencies": { 1863 - "arr-rotate": "^1.0.0", 1864 - "figures": "^3.2.0", 1865 - "lodash.isequal": "^4.5.0" 1866 - }, 1867 - "engines": { 1868 - "node": ">=10" 1869 - }, 1870 - "peerDependencies": { 1871 - "ink": "^3.0.5", 1872 - "react": "^16.5.2 || ^17.0.0" 1873 - } 1874 - }, 1875 - "node_modules/ink-spinner": { 1876 - "version": "4.0.3", 1877 - "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-4.0.3.tgz", 1878 - "integrity": "sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ==", 1879 - "dependencies": { 1880 - "cli-spinners": "^2.3.0" 1881 - }, 1882 - "engines": { 1883 - "node": ">=10" 1884 - }, 1885 - "peerDependencies": { 1886 - "ink": ">=3.0.5", 1887 - "react": ">=16.8.2" 1888 - } 1889 - }, 1890 - "node_modules/ink-text-input": { 1891 - "version": "4.0.3", 1892 - "resolved": "https://registry.npmjs.org/ink-text-input/-/ink-text-input-4.0.3.tgz", 1893 - "integrity": "sha512-eQD01ik9ltmNoHmkeQ2t8LszYkv2XwuPSUz3ie/85qer6Ll/j0QSlSaLNl6ENHZakBHdCBVZY04iOXcLLXA0PQ==", 1894 - "dependencies": { 1895 - "chalk": "^4.1.0", 1896 - "type-fest": "^0.15.1" 1897 - }, 1898 - "engines": { 1899 - "node": ">=10" 1900 - }, 1901 - "peerDependencies": { 1902 - "ink": "^3.0.0-3", 1903 - "react": "^16.5.2 || ^17.0.0" 1904 - } 1905 - }, 1906 - "node_modules/ink-text-input/node_modules/chalk": { 1907 - "version": "4.1.2", 1908 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1909 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1910 - "dependencies": { 1911 - "ansi-styles": "^4.1.0", 1912 - "supports-color": "^7.1.0" 1913 - }, 1914 - "engines": { 1915 - "node": ">=10" 1916 - }, 1917 - "funding": { 1918 - "url": "https://github.com/chalk/chalk?sponsor=1" 1919 - } 1920 - }, 1921 - "node_modules/ink-text-input/node_modules/type-fest": { 1922 - "version": "0.15.1", 1923 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.15.1.tgz", 1924 - "integrity": "sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A==", 1925 - "engines": { 1926 - "node": ">=10" 1927 - }, 1928 - "funding": { 1929 - "url": "https://github.com/sponsors/sindresorhus" 1930 - } 1931 - }, 1932 - "node_modules/ink/node_modules/chalk": { 1933 - "version": "4.1.2", 1934 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1935 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1936 - "dependencies": { 1937 - "ansi-styles": "^4.1.0", 1938 - "supports-color": "^7.1.0" 1939 - }, 1940 - "engines": { 1941 - "node": ">=10" 1942 - }, 1943 - "funding": { 1944 - "url": "https://github.com/chalk/chalk?sponsor=1" 1945 - } 1946 - }, 1947 - "node_modules/inquirer": { 1948 - "version": "9.2.12", 1949 - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", 1950 - "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", 1951 - "dependencies": { 1952 - "@ljharb/through": "^2.3.11", 1953 - "ansi-escapes": "^4.3.2", 1954 - "chalk": "^5.3.0", 1955 - "cli-cursor": "^3.1.0", 1956 - "cli-width": "^4.1.0", 1957 - "external-editor": "^3.1.0", 1958 - "figures": "^5.0.0", 1959 - "lodash": "^4.17.21", 1960 - "mute-stream": "1.0.0", 1961 - "ora": "^5.4.1", 1962 - "run-async": "^3.0.0", 1963 - "rxjs": "^7.8.1", 1964 - "string-width": "^4.2.3", 1965 - "strip-ansi": "^6.0.1", 1966 - "wrap-ansi": "^6.2.0" 1967 - }, 1968 - "engines": { 1969 - "node": ">=14.18.0" 1970 - } 1971 - }, 1972 - "node_modules/inquirer/node_modules/bl": { 1973 - "version": "4.1.0", 1974 - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1975 - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1976 - "dependencies": { 1977 - "buffer": "^5.5.0", 1978 - "inherits": "^2.0.4", 1979 - "readable-stream": "^3.4.0" 1980 - } 1981 - }, 1982 - "node_modules/inquirer/node_modules/buffer": { 1983 - "version": "5.7.1", 1984 - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1985 - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1986 - "funding": [ 1987 - { 1988 - "type": "github", 1989 - "url": "https://github.com/sponsors/feross" 1990 - }, 1991 - { 1992 - "type": "patreon", 1993 - "url": "https://www.patreon.com/feross" 1994 - }, 1995 - { 1996 - "type": "consulting", 1997 - "url": "https://feross.org/support" 1998 - } 1999 - ], 2000 - "dependencies": { 2001 - "base64-js": "^1.3.1", 2002 - "ieee754": "^1.1.13" 2003 - } 2004 - }, 2005 - "node_modules/inquirer/node_modules/escape-string-regexp": { 2006 - "version": "5.0.0", 2007 - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 2008 - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 2009 - "engines": { 2010 - "node": ">=12" 2011 - }, 2012 - "funding": { 2013 - "url": "https://github.com/sponsors/sindresorhus" 2014 - } 2015 - }, 2016 - "node_modules/inquirer/node_modules/figures": { 2017 - "version": "5.0.0", 2018 - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", 2019 - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", 2020 - "dependencies": { 2021 - "escape-string-regexp": "^5.0.0", 2022 - "is-unicode-supported": "^1.2.0" 2023 - }, 2024 - "engines": { 2025 - "node": ">=14" 2026 - }, 2027 - "funding": { 2028 - "url": "https://github.com/sponsors/sindresorhus" 2029 - } 2030 - }, 2031 - "node_modules/inquirer/node_modules/is-interactive": { 2032 - "version": "1.0.0", 2033 - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 2034 - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", 2035 - "engines": { 2036 - "node": ">=8" 2037 - } 2038 - }, 2039 - "node_modules/inquirer/node_modules/log-symbols": { 2040 - "version": "4.1.0", 2041 - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 2042 - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 2043 - "dependencies": { 2044 - "chalk": "^4.1.0", 2045 - "is-unicode-supported": "^0.1.0" 2046 - }, 2047 - "engines": { 2048 - "node": ">=10" 2049 - }, 2050 - "funding": { 2051 - "url": "https://github.com/sponsors/sindresorhus" 2052 - } 2053 - }, 2054 - "node_modules/inquirer/node_modules/log-symbols/node_modules/chalk": { 2055 - "version": "4.1.2", 2056 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2057 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2058 - "dependencies": { 2059 - "ansi-styles": "^4.1.0", 2060 - "supports-color": "^7.1.0" 2061 - }, 2062 - "engines": { 2063 - "node": ">=10" 2064 - }, 2065 - "funding": { 2066 - "url": "https://github.com/chalk/chalk?sponsor=1" 2067 - } 2068 - }, 2069 - "node_modules/inquirer/node_modules/log-symbols/node_modules/is-unicode-supported": { 2070 - "version": "0.1.0", 2071 - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 2072 - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 2073 - "engines": { 2074 - "node": ">=10" 2075 - }, 2076 - "funding": { 2077 - "url": "https://github.com/sponsors/sindresorhus" 2078 - } 2079 - }, 2080 - "node_modules/inquirer/node_modules/ora": { 2081 - "version": "5.4.1", 2082 - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", 2083 - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", 2084 - "dependencies": { 2085 - "bl": "^4.1.0", 2086 - "chalk": "^4.1.0", 2087 - "cli-cursor": "^3.1.0", 2088 - "cli-spinners": "^2.5.0", 2089 - "is-interactive": "^1.0.0", 2090 - "is-unicode-supported": "^0.1.0", 2091 - "log-symbols": "^4.1.0", 2092 - "strip-ansi": "^6.0.0", 2093 - "wcwidth": "^1.0.1" 2094 - }, 2095 - "engines": { 2096 - "node": ">=10" 2097 - }, 2098 - "funding": { 2099 - "url": "https://github.com/sponsors/sindresorhus" 2100 - } 2101 - }, 2102 - "node_modules/inquirer/node_modules/ora/node_modules/chalk": { 2103 - "version": "4.1.2", 2104 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2105 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2106 - "dependencies": { 2107 - "ansi-styles": "^4.1.0", 2108 - "supports-color": "^7.1.0" 2109 - }, 2110 - "engines": { 2111 - "node": ">=10" 2112 - }, 2113 - "funding": { 2114 - "url": "https://github.com/chalk/chalk?sponsor=1" 2115 - } 2116 - }, 2117 - "node_modules/inquirer/node_modules/ora/node_modules/is-unicode-supported": { 2118 - "version": "0.1.0", 2119 - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 2120 - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 2121 - "engines": { 2122 - "node": ">=10" 2123 - }, 2124 - "funding": { 2125 - "url": "https://github.com/sponsors/sindresorhus" 2126 - } 2127 - }, 2128 - "node_modules/is-ci": { 2129 - "version": "2.0.0", 2130 - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", 2131 - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 2132 - "dependencies": { 2133 - "ci-info": "^2.0.0" 2134 - }, 2135 - "bin": { 2136 - "is-ci": "bin.js" 2137 - } 2138 - }, 2139 - "node_modules/is-core-module": { 2140 - "version": "2.13.1", 2141 - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", 2142 - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 2143 - "dependencies": { 2144 - "hasown": "^2.0.0" 2145 - }, 2146 - "funding": { 2147 - "url": "https://github.com/sponsors/ljharb" 2148 - } 2149 - }, 2150 - "node_modules/is-fullwidth-code-point": { 2151 - "version": "3.0.0", 2152 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2153 - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2154 - "engines": { 2155 - "node": ">=8" 2156 - } 2157 - }, 2158 - "node_modules/is-interactive": { 2159 - "version": "2.0.0", 2160 - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", 2161 - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", 2162 - "engines": { 2163 - "node": ">=12" 2164 - }, 2165 - "funding": { 2166 - "url": "https://github.com/sponsors/sindresorhus" 2167 - } 2168 - }, 2169 - "node_modules/is-unicode-supported": { 2170 - "version": "1.3.0", 2171 - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", 2172 - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", 2173 - "engines": { 2174 - "node": ">=12" 2175 - }, 2176 - "funding": { 2177 - "url": "https://github.com/sponsors/sindresorhus" 2178 - } 2179 - }, 2180 - "node_modules/jake": { 2181 - "version": "10.8.7", 2182 - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", 2183 - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", 2184 - "dev": true, 2185 - "dependencies": { 2186 - "async": "^3.2.3", 2187 - "chalk": "^4.0.2", 2188 - "filelist": "^1.0.4", 2189 - "minimatch": "^3.1.2" 2190 - }, 2191 - "bin": { 2192 - "jake": "bin/cli.js" 2193 - }, 2194 - "engines": { 2195 - "node": ">=10" 2196 - } 2197 - }, 2198 - "node_modules/jake/node_modules/chalk": { 2199 - "version": "4.1.2", 2200 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2201 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2202 - "dev": true, 2203 - "dependencies": { 2204 - "ansi-styles": "^4.1.0", 2205 - "supports-color": "^7.1.0" 2206 - }, 2207 - "engines": { 2208 - "node": ">=10" 2209 - }, 2210 - "funding": { 2211 - "url": "https://github.com/chalk/chalk?sponsor=1" 2212 - } 2213 - }, 2214 - "node_modules/js-sha3": { 2215 - "version": "0.8.0", 2216 - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", 2217 - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" 2218 - }, 2219 - "node_modules/js-tokens": { 2220 - "version": "4.0.0", 2221 - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2222 - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2223 - }, 2224 - "node_modules/lodash": { 2225 - "version": "4.17.21", 2226 - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2227 - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2228 - }, 2229 - "node_modules/lodash.isequal": { 2230 - "version": "4.5.0", 2231 - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 2232 - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" 2233 - }, 2234 - "node_modules/log-symbols": { 2235 - "version": "5.1.0", 2236 - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", 2237 - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", 2238 - "dependencies": { 2239 - "chalk": "^5.0.0", 2240 - "is-unicode-supported": "^1.1.0" 2241 - }, 2242 - "engines": { 2243 - "node": ">=12" 2244 - }, 2245 - "funding": { 2246 - "url": "https://github.com/sponsors/sindresorhus" 2247 - } 2248 - }, 2249 - "node_modules/loose-envify": { 2250 - "version": "1.4.0", 2251 - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2252 - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2253 - "dependencies": { 2254 - "js-tokens": "^3.0.0 || ^4.0.0" 2255 - }, 2256 - "bin": { 2257 - "loose-envify": "cli.js" 2258 - } 2259 - }, 2260 - "node_modules/lru-cache": { 2261 - "version": "6.0.0", 2262 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2263 - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2264 - "dependencies": { 2265 - "yallist": "^4.0.0" 2266 - }, 2267 - "engines": { 2268 - "node": ">=10" 2269 - } 2270 - }, 2271 - "node_modules/marked": { 2272 - "version": "4.3.0", 2273 - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", 2274 - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", 2275 - "bin": { 2276 - "marked": "bin/marked.js" 2277 - }, 2278 - "engines": { 2279 - "node": ">= 12" 2280 - } 2281 - }, 2282 - "node_modules/marked-terminal": { 2283 - "version": "5.2.0", 2284 - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", 2285 - "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", 2286 - "dependencies": { 2287 - "ansi-escapes": "^6.2.0", 2288 - "cardinal": "^2.1.1", 2289 - "chalk": "^5.2.0", 2290 - "cli-table3": "^0.6.3", 2291 - "node-emoji": "^1.11.0", 2292 - "supports-hyperlinks": "^2.3.0" 2293 - }, 2294 - "engines": { 2295 - "node": ">=14.13.1 || >=16.0.0" 2296 - }, 2297 - "peerDependencies": { 2298 - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" 2299 - } 2300 - }, 2301 - "node_modules/marked-terminal/node_modules/ansi-escapes": { 2302 - "version": "6.2.0", 2303 - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", 2304 - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", 2305 - "dependencies": { 2306 - "type-fest": "^3.0.0" 2307 - }, 2308 - "engines": { 2309 - "node": ">=14.16" 2310 - }, 2311 - "funding": { 2312 - "url": "https://github.com/sponsors/sindresorhus" 2313 - } 2314 - }, 2315 - "node_modules/marked-terminal/node_modules/type-fest": { 2316 - "version": "3.13.1", 2317 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", 2318 - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", 2319 - "engines": { 2320 - "node": ">=14.16" 2321 - }, 2322 - "funding": { 2323 - "url": "https://github.com/sponsors/sindresorhus" 2324 - } 2325 - }, 2326 - "node_modules/match-sorter": { 2327 - "version": "6.3.3", 2328 - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.3.tgz", 2329 - "integrity": "sha512-sgiXxrRijEe0SzHKGX4HouCpfHRPnqteH42UdMEW7BlWy990ZkzcvonJGv4Uu9WE7Y1f8Yocm91+4qFPCbmNww==", 2330 - "dependencies": { 2331 - "@babel/runtime": "^7.23.8", 2332 - "remove-accents": "0.5.0" 2333 - } 2334 - }, 2335 - "node_modules/microseconds": { 2336 - "version": "0.2.0", 2337 - "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", 2338 - "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" 2339 - }, 2340 - "node_modules/mime-db": { 2341 - "version": "1.52.0", 2342 - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2343 - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2344 - "engines": { 2345 - "node": ">= 0.6" 2346 - } 2347 - }, 2348 - "node_modules/mime-types": { 2349 - "version": "2.1.35", 2350 - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2351 - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2352 - "dependencies": { 2353 - "mime-db": "1.52.0" 2354 - }, 2355 - "engines": { 2356 - "node": ">= 0.6" 2357 - } 2358 - }, 2359 - "node_modules/mimic-fn": { 2360 - "version": "2.1.0", 2361 - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2362 - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2363 - "engines": { 2364 - "node": ">=6" 2365 - } 2366 - }, 2367 - "node_modules/minimatch": { 2368 - "version": "3.1.2", 2369 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2370 - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2371 - "dependencies": { 2372 - "brace-expansion": "^1.1.7" 2373 - }, 2374 - "engines": { 2375 - "node": "*" 2376 - } 2377 - }, 2378 - "node_modules/module-details-from-path": { 2379 - "version": "1.0.3", 2380 - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", 2381 - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" 2382 - }, 2383 - "node_modules/ms": { 2384 - "version": "2.1.2", 2385 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2386 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2387 - }, 2388 - "node_modules/mute-stream": { 2389 - "version": "1.0.0", 2390 - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", 2391 - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", 2392 - "engines": { 2393 - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2394 - } 2395 - }, 2396 - "node_modules/mz": { 2397 - "version": "2.7.0", 2398 - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 2399 - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 2400 - "dependencies": { 2401 - "any-promise": "^1.0.0", 2402 - "object-assign": "^4.0.1", 2403 - "thenify-all": "^1.0.0" 2404 - } 2405 - }, 2406 - "node_modules/nano-time": { 2407 - "version": "1.0.0", 2408 - "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", 2409 - "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==", 2410 - "dependencies": { 2411 - "big-integer": "^1.6.16" 2412 - } 2413 - }, 2414 - "node_modules/node-emoji": { 2415 - "version": "1.11.0", 2416 - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", 2417 - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", 2418 - "dependencies": { 2419 - "lodash": "^4.17.21" 2420 - } 2421 - }, 2422 - "node_modules/object-assign": { 2423 - "version": "4.1.1", 2424 - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2425 - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 2426 - "engines": { 2427 - "node": ">=0.10.0" 2428 - } 2429 - }, 2430 - "node_modules/oblivious-set": { 2431 - "version": "1.0.0", 2432 - "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", 2433 - "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" 2434 - }, 2435 - "node_modules/once": { 2436 - "version": "1.4.0", 2437 - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2438 - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2439 - "dependencies": { 2440 - "wrappy": "1" 2441 - } 2442 - }, 2443 - "node_modules/onetime": { 2444 - "version": "5.1.2", 2445 - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 2446 - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 2447 - "dependencies": { 2448 - "mimic-fn": "^2.1.0" 2449 - }, 2450 - "engines": { 2451 - "node": ">=6" 2452 - }, 2453 - "funding": { 2454 - "url": "https://github.com/sponsors/sindresorhus" 2455 - } 2456 - }, 2457 - "node_modules/ora": { 2458 - "version": "6.3.1", 2459 - "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", 2460 - "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", 2461 - "dependencies": { 2462 - "chalk": "^5.0.0", 2463 - "cli-cursor": "^4.0.0", 2464 - "cli-spinners": "^2.6.1", 2465 - "is-interactive": "^2.0.0", 2466 - "is-unicode-supported": "^1.1.0", 2467 - "log-symbols": "^5.1.0", 2468 - "stdin-discarder": "^0.1.0", 2469 - "strip-ansi": "^7.0.1", 2470 - "wcwidth": "^1.0.1" 2471 - }, 2472 - "engines": { 2473 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2474 - }, 2475 - "funding": { 2476 - "url": "https://github.com/sponsors/sindresorhus" 2477 - } 2478 - }, 2479 - "node_modules/ora/node_modules/ansi-regex": { 2480 - "version": "6.0.1", 2481 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 2482 - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 2483 - "engines": { 2484 - "node": ">=12" 2485 - }, 2486 - "funding": { 2487 - "url": "https://github.com/chalk/ansi-regex?sponsor=1" 2488 - } 2489 - }, 2490 - "node_modules/ora/node_modules/cli-cursor": { 2491 - "version": "4.0.0", 2492 - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 2493 - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 2494 - "dependencies": { 2495 - "restore-cursor": "^4.0.0" 2496 - }, 2497 - "engines": { 2498 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2499 - }, 2500 - "funding": { 2501 - "url": "https://github.com/sponsors/sindresorhus" 2502 - } 2503 - }, 2504 - "node_modules/ora/node_modules/restore-cursor": { 2505 - "version": "4.0.0", 2506 - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 2507 - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 2508 - "dependencies": { 2509 - "onetime": "^5.1.0", 2510 - "signal-exit": "^3.0.2" 2511 - }, 2512 - "engines": { 2513 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2514 - }, 2515 - "funding": { 2516 - "url": "https://github.com/sponsors/sindresorhus" 2517 - } 2518 - }, 2519 - "node_modules/ora/node_modules/strip-ansi": { 2520 - "version": "7.1.0", 2521 - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2522 - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2523 - "dependencies": { 2524 - "ansi-regex": "^6.0.1" 2525 - }, 2526 - "engines": { 2527 - "node": ">=12" 2528 - }, 2529 - "funding": { 2530 - "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2531 - } 2532 - }, 2533 - "node_modules/os-tmpdir": { 2534 - "version": "1.0.2", 2535 - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2536 - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 2537 - "engines": { 2538 - "node": ">=0.10.0" 2539 - } 2540 - }, 2541 - "node_modules/parents": { 2542 - "version": "1.0.1", 2543 - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", 2544 - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", 2545 - "dev": true, 2546 - "dependencies": { 2547 - "path-platform": "~0.11.15" 2548 - } 2549 - }, 2550 - "node_modules/parse5": { 2551 - "version": "5.1.1", 2552 - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", 2553 - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" 2554 - }, 2555 - "node_modules/parse5-htmlparser2-tree-adapter": { 2556 - "version": "6.0.1", 2557 - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", 2558 - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", 2559 - "dependencies": { 2560 - "parse5": "^6.0.1" 2561 - } 2562 - }, 2563 - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { 2564 - "version": "6.0.1", 2565 - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 2566 - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" 2567 - }, 2568 - "node_modules/patch-console": { 2569 - "version": "1.0.0", 2570 - "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-1.0.0.tgz", 2571 - "integrity": "sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==", 2572 - "engines": { 2573 - "node": ">=10" 2574 - } 2575 - }, 2576 - "node_modules/path-is-absolute": { 2577 - "version": "1.0.1", 2578 - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2579 - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2580 - "engines": { 2581 - "node": ">=0.10.0" 2582 - } 2583 - }, 2584 - "node_modules/path-parse": { 2585 - "version": "1.0.7", 2586 - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2587 - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 2588 - }, 2589 - "node_modules/path-platform": { 2590 - "version": "0.11.15", 2591 - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", 2592 - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", 2593 - "dev": true, 2594 - "engines": { 2595 - "node": ">= 0.8.0" 2596 - } 2597 - }, 2598 - "node_modules/prop-types": { 2599 - "version": "15.8.1", 2600 - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2601 - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2602 - "dependencies": { 2603 - "loose-envify": "^1.4.0", 2604 - "object-assign": "^4.1.1", 2605 - "react-is": "^16.13.1" 2606 - } 2607 - }, 2608 - "node_modules/proxy-from-env": { 2609 - "version": "1.1.0", 2610 - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 2611 - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 2612 - }, 2613 - "node_modules/psl": { 2614 - "version": "1.9.0", 2615 - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 2616 - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 2617 - }, 2618 - "node_modules/punycode": { 2619 - "version": "2.3.1", 2620 - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2621 - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2622 - "engines": { 2623 - "node": ">=6" 2624 - } 2625 - }, 2626 - "node_modules/querystringify": { 2627 - "version": "2.2.0", 2628 - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2629 - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 2630 - }, 2631 - "node_modules/radash": { 2632 - "version": "9.5.0", 2633 - "resolved": "https://registry.npmjs.org/radash/-/radash-9.5.0.tgz", 2634 - "integrity": "sha512-t0s8BJlvrk8YPaOS8X0J2xzqAsBlXAUkDEjoBXwlzaXsXNCpBILjT9OvWlabLa2KB/r4XrhThdXjxMs7SiCyIw==", 2635 - "engines": { 2636 - "node": ">=14.18.0" 2637 - } 2638 - }, 2639 - "node_modules/react": { 2640 - "version": "17.0.2", 2641 - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 2642 - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 2643 - "dependencies": { 2644 - "loose-envify": "^1.1.0", 2645 - "object-assign": "^4.1.1" 2646 - }, 2647 - "engines": { 2648 - "node": ">=0.10.0" 2649 - } 2650 - }, 2651 - "node_modules/react-devtools-core": { 2652 - "version": "4.28.5", 2653 - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", 2654 - "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", 2655 - "dependencies": { 2656 - "shell-quote": "^1.6.1", 2657 - "ws": "^7" 2658 - } 2659 - }, 2660 - "node_modules/react-dom": { 2661 - "version": "17.0.2", 2662 - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 2663 - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 2664 - "dependencies": { 2665 - "loose-envify": "^1.1.0", 2666 - "object-assign": "^4.1.1", 2667 - "scheduler": "^0.20.2" 2668 - }, 2669 - "peerDependencies": { 2670 - "react": "17.0.2" 2671 - } 2672 - }, 2673 - "node_modules/react-is": { 2674 - "version": "16.13.1", 2675 - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2676 - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 2677 - }, 2678 - "node_modules/react-query": { 2679 - "version": "3.39.3", 2680 - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", 2681 - "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", 2682 - "dependencies": { 2683 - "@babel/runtime": "^7.5.5", 2684 - "broadcast-channel": "^3.4.1", 2685 - "match-sorter": "^6.0.2" 2686 - }, 2687 - "funding": { 2688 - "type": "github", 2689 - "url": "https://github.com/sponsors/tannerlinsley" 2690 - }, 2691 - "peerDependencies": { 2692 - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 2693 - }, 2694 - "peerDependenciesMeta": { 2695 - "react-dom": { 2696 - "optional": true 2697 - }, 2698 - "react-native": { 2699 - "optional": true 2700 - } 2701 - } 2702 - }, 2703 - "node_modules/react-reconciler": { 2704 - "version": "0.26.2", 2705 - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", 2706 - "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", 2707 - "dependencies": { 2708 - "loose-envify": "^1.1.0", 2709 - "object-assign": "^4.1.1", 2710 - "scheduler": "^0.20.2" 2711 - }, 2712 - "engines": { 2713 - "node": ">=0.10.0" 2714 - }, 2715 - "peerDependencies": { 2716 - "react": "^17.0.2" 2717 - } 2718 - }, 2719 - "node_modules/readable-stream": { 2720 - "version": "3.6.2", 2721 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 2722 - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 2723 - "dependencies": { 2724 - "inherits": "^2.0.3", 2725 - "string_decoder": "^1.1.1", 2726 - "util-deprecate": "^1.0.1" 2727 - }, 2728 - "engines": { 2729 - "node": ">= 6" 2730 - } 2731 - }, 2732 - "node_modules/redeyed": { 2733 - "version": "2.1.1", 2734 - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", 2735 - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", 2736 - "dependencies": { 2737 - "esprima": "~4.0.0" 2738 - } 2739 - }, 2740 - "node_modules/regenerator-runtime": { 2741 - "version": "0.14.1", 2742 - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 2743 - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" 2744 - }, 2745 - "node_modules/remove-accents": { 2746 - "version": "0.5.0", 2747 - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", 2748 - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" 2749 - }, 2750 - "node_modules/require-directory": { 2751 - "version": "2.1.1", 2752 - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2753 - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 2754 - "engines": { 2755 - "node": ">=0.10.0" 2756 - } 2757 - }, 2758 - "node_modules/require-in-the-middle": { 2759 - "version": "7.2.0", 2760 - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", 2761 - "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", 2762 - "dependencies": { 2763 - "debug": "^4.1.1", 2764 - "module-details-from-path": "^1.0.3", 2765 - "resolve": "^1.22.1" 2766 - }, 2767 - "engines": { 2768 - "node": ">=8.6.0" 2769 - } 2770 - }, 2771 - "node_modules/requires-port": { 2772 - "version": "1.0.0", 2773 - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2774 - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 2775 - }, 2776 - "node_modules/resolve": { 2777 - "version": "1.22.8", 2778 - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 2779 - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 2780 - "dependencies": { 2781 - "is-core-module": "^2.13.0", 2782 - "path-parse": "^1.0.7", 2783 - "supports-preserve-symlinks-flag": "^1.0.0" 2784 - }, 2785 - "bin": { 2786 - "resolve": "bin/resolve" 2787 - }, 2788 - "funding": { 2789 - "url": "https://github.com/sponsors/ljharb" 2790 - } 2791 - }, 2792 - "node_modules/restore-cursor": { 2793 - "version": "3.1.0", 2794 - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 2795 - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 2796 - "dependencies": { 2797 - "onetime": "^5.1.0", 2798 - "signal-exit": "^3.0.2" 2799 - }, 2800 - "engines": { 2801 - "node": ">=8" 2802 - } 2803 - }, 2804 - "node_modules/rimraf": { 2805 - "version": "3.0.2", 2806 - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2807 - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2808 - "dependencies": { 2809 - "glob": "^7.1.3" 2810 - }, 2811 - "bin": { 2812 - "rimraf": "bin.js" 2813 - }, 2814 - "funding": { 2815 - "url": "https://github.com/sponsors/isaacs" 2816 - } 2817 - }, 2818 - "node_modules/run-async": { 2819 - "version": "3.0.0", 2820 - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", 2821 - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", 2822 - "engines": { 2823 - "node": ">=0.12.0" 2824 - } 2825 - }, 2826 - "node_modules/rxjs": { 2827 - "version": "7.8.1", 2828 - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", 2829 - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", 2830 - "dependencies": { 2831 - "tslib": "^2.1.0" 2832 - } 2833 - }, 2834 - "node_modules/safe-buffer": { 2835 - "version": "5.2.1", 2836 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2837 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2838 - "funding": [ 2839 - { 2840 - "type": "github", 2841 - "url": "https://github.com/sponsors/feross" 2842 - }, 2843 - { 2844 - "type": "patreon", 2845 - "url": "https://www.patreon.com/feross" 2846 - }, 2847 - { 2848 - "type": "consulting", 2849 - "url": "https://feross.org/support" 2850 - } 2851 - ] 2852 - }, 2853 - "node_modules/safer-buffer": { 2854 - "version": "2.1.2", 2855 - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2856 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2857 - }, 2858 - "node_modules/scheduler": { 2859 - "version": "0.20.2", 2860 - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 2861 - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 2862 - "dependencies": { 2863 - "loose-envify": "^1.1.0", 2864 - "object-assign": "^4.1.1" 2865 - } 2866 - }, 2867 - "node_modules/semver": { 2868 - "version": "5.7.2", 2869 - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 2870 - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 2871 - "bin": { 2872 - "semver": "bin/semver" 2873 - } 2874 - }, 2875 - "node_modules/set-function-length": { 2876 - "version": "1.2.0", 2877 - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", 2878 - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", 2879 - "dependencies": { 2880 - "define-data-property": "^1.1.1", 2881 - "function-bind": "^1.1.2", 2882 - "get-intrinsic": "^1.2.2", 2883 - "gopd": "^1.0.1", 2884 - "has-property-descriptors": "^1.0.1" 2885 - }, 2886 - "engines": { 2887 - "node": ">= 0.4" 2888 - } 2889 - }, 2890 - "node_modules/shell-quote": { 2891 - "version": "1.8.1", 2892 - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", 2893 - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", 2894 - "funding": { 2895 - "url": "https://github.com/sponsors/ljharb" 2896 - } 2897 - }, 2898 - "node_modules/shimmer": { 2899 - "version": "1.2.1", 2900 - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 2901 - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 2902 - }, 2903 - "node_modules/signal-exit": { 2904 - "version": "3.0.7", 2905 - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2906 - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 2907 - }, 2908 - "node_modules/simple-update-notifier": { 2909 - "version": "1.1.0", 2910 - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", 2911 - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", 2912 - "dependencies": { 2913 - "semver": "~7.0.0" 2914 - }, 2915 - "engines": { 2916 - "node": ">=8.10.0" 2917 - } 2918 - }, 2919 - "node_modules/simple-update-notifier/node_modules/semver": { 2920 - "version": "7.0.0", 2921 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 2922 - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", 2923 - "bin": { 2924 - "semver": "bin/semver.js" 2925 - } 2926 - }, 2927 - "node_modules/slice-ansi": { 2928 - "version": "3.0.0", 2929 - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", 2930 - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", 2931 - "dependencies": { 2932 - "ansi-styles": "^4.0.0", 2933 - "astral-regex": "^2.0.0", 2934 - "is-fullwidth-code-point": "^3.0.0" 2935 - }, 2936 - "engines": { 2937 - "node": ">=8" 2938 - } 2939 - }, 2940 - "node_modules/stack-chain": { 2941 - "version": "1.3.7", 2942 - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 2943 - "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" 2944 - }, 2945 - "node_modules/stack-utils": { 2946 - "version": "2.0.6", 2947 - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", 2948 - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", 2949 - "dependencies": { 2950 - "escape-string-regexp": "^2.0.0" 2951 - }, 2952 - "engines": { 2953 - "node": ">=10" 2954 - } 2955 - }, 2956 - "node_modules/stack-utils/node_modules/escape-string-regexp": { 2957 - "version": "2.0.0", 2958 - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 2959 - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 2960 - "engines": { 2961 - "node": ">=8" 2962 - } 2963 - }, 2964 - "node_modules/stdin-discarder": { 2965 - "version": "0.1.0", 2966 - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", 2967 - "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", 2968 - "dependencies": { 2969 - "bl": "^5.0.0" 2970 - }, 2971 - "engines": { 2972 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2973 - }, 2974 - "funding": { 2975 - "url": "https://github.com/sponsors/sindresorhus" 2976 - } 2977 - }, 2978 - "node_modules/string_decoder": { 2979 - "version": "1.3.0", 2980 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2981 - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2982 - "dependencies": { 2983 - "safe-buffer": "~5.2.0" 2984 - } 2985 - }, 2986 - "node_modules/string-width": { 2987 - "version": "4.2.3", 2988 - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2989 - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2990 - "dependencies": { 2991 - "emoji-regex": "^8.0.0", 2992 - "is-fullwidth-code-point": "^3.0.0", 2993 - "strip-ansi": "^6.0.1" 2994 - }, 2995 - "engines": { 2996 - "node": ">=8" 2997 - } 2998 - }, 2999 - "node_modules/strip-ansi": { 3000 - "version": "6.0.1", 3001 - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3002 - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3003 - "dependencies": { 3004 - "ansi-regex": "^5.0.1" 3005 - }, 3006 - "engines": { 3007 - "node": ">=8" 3008 - } 3009 - }, 3010 - "node_modules/supports-color": { 3011 - "version": "7.2.0", 3012 - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3013 - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3014 - "dependencies": { 3015 - "has-flag": "^4.0.0" 3016 - }, 3017 - "engines": { 3018 - "node": ">=8" 3019 - } 3020 - }, 3021 - "node_modules/supports-hyperlinks": { 3022 - "version": "2.3.0", 3023 - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", 3024 - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", 3025 - "dependencies": { 3026 - "has-flag": "^4.0.0", 3027 - "supports-color": "^7.0.0" 3028 - }, 3029 - "engines": { 3030 - "node": ">=8" 3031 - } 3032 - }, 3033 - "node_modules/supports-preserve-symlinks-flag": { 3034 - "version": "1.0.0", 3035 - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3036 - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3037 - "engines": { 3038 - "node": ">= 0.4" 3039 - }, 3040 - "funding": { 3041 - "url": "https://github.com/sponsors/ljharb" 3042 - } 3043 - }, 3044 - "node_modules/thenify": { 3045 - "version": "3.3.1", 3046 - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 3047 - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 3048 - "dependencies": { 3049 - "any-promise": "^1.0.0" 3050 - } 3051 - }, 3052 - "node_modules/thenify-all": { 3053 - "version": "1.6.0", 3054 - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 3055 - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 3056 - "dependencies": { 3057 - "thenify": ">= 3.1.0 < 4" 3058 - }, 3059 - "engines": { 3060 - "node": ">=0.8" 3061 - } 3062 - }, 3063 - "node_modules/tiny-invariant": { 3064 - "version": "1.3.1", 3065 - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", 3066 - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" 3067 - }, 3068 - "node_modules/tmp": { 3069 - "version": "0.0.33", 3070 - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3071 - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3072 - "dependencies": { 3073 - "os-tmpdir": "~1.0.2" 3074 - }, 3075 - "engines": { 3076 - "node": ">=0.6.0" 3077 - } 3078 - }, 3079 - "node_modules/tough-cookie": { 3080 - "version": "4.1.3", 3081 - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", 3082 - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", 3083 - "dependencies": { 3084 - "psl": "^1.1.33", 3085 - "punycode": "^2.1.1", 3086 - "universalify": "^0.2.0", 3087 - "url-parse": "^1.5.3" 3088 - }, 3089 - "engines": { 3090 - "node": ">=6" 3091 - } 3092 - }, 3093 - "node_modules/ts-dedent": { 3094 - "version": "2.2.0", 3095 - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", 3096 - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", 3097 - "engines": { 3098 - "node": ">=6.10" 3099 - } 3100 - }, 3101 - "node_modules/tslib": { 3102 - "version": "2.6.2", 3103 - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 3104 - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 3105 - }, 3106 - "node_modules/type-fest": { 3107 - "version": "0.12.0", 3108 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", 3109 - "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", 3110 - "engines": { 3111 - "node": ">=10" 3112 - }, 3113 - "funding": { 3114 - "url": "https://github.com/sponsors/sindresorhus" 3115 - } 3116 - }, 3117 - "node_modules/typescript": { 3118 - "version": "4.9.5", 3119 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 3120 - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 3121 - "dev": true, 3122 - "bin": { 3123 - "tsc": "bin/tsc", 3124 - "tsserver": "bin/tsserver" 3125 - }, 3126 - "engines": { 3127 - "node": ">=4.2.0" 3128 - } 3129 - }, 3130 - "node_modules/undici-types": { 3131 - "version": "5.26.5", 3132 - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 3133 - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 3134 - "dev": true 3135 - }, 3136 - "node_modules/universalify": { 3137 - "version": "0.2.0", 3138 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 3139 - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", 3140 - "engines": { 3141 - "node": ">= 4.0.0" 3142 - } 3143 - }, 3144 - "node_modules/unload": { 3145 - "version": "2.2.0", 3146 - "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", 3147 - "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", 3148 - "dependencies": { 3149 - "@babel/runtime": "^7.6.2", 3150 - "detect-node": "^2.0.4" 3151 - } 3152 - }, 3153 - "node_modules/url-parse": { 3154 - "version": "1.5.10", 3155 - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 3156 - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 3157 - "dependencies": { 3158 - "querystringify": "^2.1.1", 3159 - "requires-port": "^1.0.0" 3160 - } 3161 - }, 3162 - "node_modules/use-sync-external-store": { 3163 - "version": "1.2.0", 3164 - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", 3165 - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", 3166 - "peerDependencies": { 3167 - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 3168 - } 3169 - }, 3170 - "node_modules/use-zustand": { 3171 - "version": "0.0.1", 3172 - "resolved": "https://registry.npmjs.org/use-zustand/-/use-zustand-0.0.1.tgz", 3173 - "integrity": "sha512-axjswesUfXirTQ1CC1F4r0dkaI7g2nMEftyvg23Wq4PnAbLogswzj+o5gbnnnQaQOMXKHxNZIlYpKfuTnL466Q==", 3174 - "peerDependencies": { 3175 - "react": "*" 3176 - } 3177 - }, 3178 - "node_modules/util-deprecate": { 3179 - "version": "1.0.2", 3180 - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3181 - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 3182 - }, 3183 - "node_modules/uuid": { 3184 - "version": "9.0.1", 3185 - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", 3186 - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", 3187 - "funding": [ 3188 - "https://github.com/sponsors/broofa", 3189 - "https://github.com/sponsors/ctavan" 3190 - ], 3191 - "bin": { 3192 - "uuid": "dist/bin/uuid" 3193 - } 3194 - }, 3195 - "node_modules/wcwidth": { 3196 - "version": "1.0.1", 3197 - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 3198 - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", 3199 - "dependencies": { 3200 - "defaults": "^1.0.3" 3201 - } 3202 - }, 3203 - "node_modules/widest-line": { 3204 - "version": "3.1.0", 3205 - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 3206 - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 3207 - "dependencies": { 3208 - "string-width": "^4.0.0" 3209 - }, 3210 - "engines": { 3211 - "node": ">=8" 3212 - } 3213 - }, 3214 - "node_modules/wrap-ansi": { 3215 - "version": "6.2.0", 3216 - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 3217 - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 3218 - "dependencies": { 3219 - "ansi-styles": "^4.0.0", 3220 - "string-width": "^4.1.0", 3221 - "strip-ansi": "^6.0.0" 3222 - }, 3223 - "engines": { 3224 - "node": ">=8" 3225 - } 3226 - }, 3227 - "node_modules/wrappy": { 3228 - "version": "1.0.2", 3229 - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3230 - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 3231 - }, 3232 - "node_modules/ws": { 3233 - "version": "7.5.9", 3234 - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", 3235 - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", 3236 - "engines": { 3237 - "node": ">=8.3.0" 3238 - }, 3239 - "peerDependencies": { 3240 - "bufferutil": "^4.0.1", 3241 - "utf-8-validate": "^5.0.2" 3242 - }, 3243 - "peerDependenciesMeta": { 3244 - "bufferutil": { 3245 - "optional": true 3246 - }, 3247 - "utf-8-validate": { 3248 - "optional": true 3249 - } 3250 - } 3251 - }, 3252 - "node_modules/y18n": { 3253 - "version": "5.0.8", 3254 - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3255 - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3256 - "engines": { 3257 - "node": ">=10" 3258 - } 3259 - }, 3260 - "node_modules/yallist": { 3261 - "version": "4.0.0", 3262 - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3263 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 3264 - }, 3265 - "node_modules/yargs": { 3266 - "version": "16.2.0", 3267 - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3268 - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3269 - "dependencies": { 3270 - "cliui": "^7.0.2", 3271 - "escalade": "^3.1.1", 3272 - "get-caller-file": "^2.0.5", 3273 - "require-directory": "^2.1.1", 3274 - "string-width": "^4.2.0", 3275 - "y18n": "^5.0.5", 3276 - "yargs-parser": "^20.2.2" 3277 - }, 3278 - "engines": { 3279 - "node": ">=10" 3280 - } 3281 - }, 3282 - "node_modules/yargs-parser": { 3283 - "version": "20.2.9", 3284 - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 3285 - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 3286 - "engines": { 3287 - "node": ">=10" 3288 - } 3289 - }, 3290 - "node_modules/yoga-layout-prebuilt": { 3291 - "version": "1.10.0", 3292 - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", 3293 - "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", 3294 - "dependencies": { 3295 - "@types/yoga-layout": "1.9.2" 3296 - }, 3297 - "engines": { 3298 - "node": ">=8" 3299 - } 3300 - }, 3301 - "node_modules/zustand": { 3302 - "version": "4.4.7", 3303 - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", 3304 - "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", 3305 - "dependencies": { 3306 - "use-sync-external-store": "1.2.0" 3307 - }, 3308 - "engines": { 3309 - "node": ">=12.7.0" 3310 - }, 3311 - "peerDependencies": { 3312 - "@types/react": ">=16.8", 3313 - "immer": ">=9.0", 3314 - "react": ">=16.8" 3315 - }, 3316 - "peerDependenciesMeta": { 3317 - "@types/react": { 3318 - "optional": true 3319 - }, 3320 - "immer": { 3321 - "optional": true 3322 - }, 3323 - "react": { 3324 - "optional": true 3325 - } 3326 - } 3327 - } 3328 - } 3329 - }
-32
pkgs/by-name/gi/github-copilot-cli/package.nix
··· 1 - { 2 - lib, 3 - buildNpmPackage, 4 - fetchzip, 5 - }: 6 - 7 - buildNpmPackage rec { 8 - pname = "github-copilot-cli"; 9 - version = "0.1.36"; 10 - 11 - src = fetchzip { 12 - url = "https://registry.npmjs.org/@githubnext/github-copilot-cli/-/github-copilot-cli-${version}.tgz"; 13 - hash = "sha256-7n+7sN61OrqMVGaKll85+HwX7iGG9M/UW5lf2Pd5sRU="; 14 - }; 15 - 16 - npmDepsHash = "sha256-h0StxzGbl3ZeOQ4Jy1BgJ5sJ0pAbubMCRsiIOYpU04w="; 17 - 18 - postPatch = '' 19 - cp ${./package-lock.json} package-lock.json 20 - ''; 21 - 22 - dontNpmBuild = true; 23 - 24 - meta = with lib; { 25 - description = "CLI experience for letting GitHub Copilot help you on the command line"; 26 - homepage = "https://githubnext.com/projects/copilot-cli/"; 27 - license = licenses.unfree; # upstream has no license 28 - maintainers = [ maintainers.malo ]; 29 - platforms = platforms.all; 30 - mainProgram = "github-copilot-cli"; 31 - }; 32 - }
+1 -2
pkgs/by-name/gn/gnome-obfuscate/package.nix
··· 33 33 }; 34 34 35 35 cargoDeps = rustPlatform.fetchCargoVendor { 36 - inherit (finalAttrs) src; 37 - name = "${finalAttrs.pname}-${finalAttrs.version}"; 36 + inherit (finalAttrs) pname version src; 38 37 hash = "sha256-Llgn+dYNKZ9Mles9f9Xor+GZoCCQ0cERkXz4MicZglY="; 39 38 }; 40 39
+1 -1
pkgs/by-name/go/go-jsonnet/package.nix
··· 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "google"; 14 - repo = finalAttrs.pname; 14 + repo = "go-jsonnet"; 15 15 tag = "v${finalAttrs.version}"; 16 16 hash = "sha256-J92xNDpCidbiSsN6NveS6BX6Tx+qDQqkgm6pjk1wBTQ="; 17 17 };
+3 -3
pkgs/by-name/ho/hottext/package.nix
··· 24 24 desktopItem = makeDesktopItem { 25 25 categories = [ "Utility" ]; 26 26 comment = finalAttrs.meta.description; 27 - desktopName = finalAttrs.pname; 28 - exec = finalAttrs.pname; 29 - name = finalAttrs.pname; 27 + desktopName = "hottext"; 28 + exec = "hottext"; 29 + name = "hottext"; 30 30 }; 31 31 32 32 postInstall = ''
+7 -7
pkgs/by-name/id/ideamaker/package.nix
··· 135 135 runHook preInstall 136 136 137 137 install -D usr/lib/x86_64-linux-gnu/ideamaker/ideamaker \ 138 - $out/bin/${finalAttrs.pname} 138 + $out/bin/ideamaker 139 139 140 140 patchelf --replace-needed libquazip.so.1 libquazip1-qt5.so \ 141 - $out/bin/${finalAttrs.pname} 141 + $out/bin/ideamaker 142 142 143 143 mimetypeDir=$out/share/icons/hicolor/128x128/mimetypes 144 144 mkdir -p ''$mimetypeDir ··· 146 146 mv $file ''$mimetypeDir/''$(basename ''${file%.ico}).png 147 147 done 148 148 install -D ${./mimetypes.xml} \ 149 - $out/share/mime/packages/${finalAttrs.pname}.xml 149 + $out/share/mime/packages/ideamaker.xml 150 150 151 151 install -D usr/share/ideamaker/icons/ideamaker-icon.png \ 152 - $out/share/pixmaps/${finalAttrs.pname}.png 152 + $out/share/pixmaps/ideamaker.png 153 153 154 154 ln -s ${finalAttrs.desktopItem}/share/applications $out/share/ 155 155 ··· 157 157 ''; 158 158 159 159 desktopItem = makeDesktopItem { 160 - name = finalAttrs.pname; 161 - exec = finalAttrs.pname; 162 - icon = finalAttrs.pname; 160 + name = "ideamaker"; 161 + exec = "ideamaker"; 162 + icon = "ideamaker"; 163 163 desktopName = "Ideamaker"; 164 164 comment = "ideaMaker - www.raise3d.com"; 165 165 categories = [
+1 -1
pkgs/by-name/id/idnkit/package.nix
··· 10 10 version = "2.3"; 11 11 12 12 src = fetchurl { 13 - url = "https://jprs.co.jp/idn/${finalAttrs.pname}-${finalAttrs.version}.tar.bz2"; 13 + url = "https://jprs.co.jp/idn/idnkit-${finalAttrs.version}.tar.bz2"; 14 14 hash = "sha256-JtBxF2UAQqtGk/DgCWAnXVihvnc+bRPFA7o4RxDz6X4="; 15 15 }; 16 16
+5 -5
pkgs/by-name/ir/irpf/package.nix
··· 44 44 45 45 desktopItems = [ 46 46 (makeDesktopItem { 47 - name = finalAttrs.pname; 48 - exec = finalAttrs.pname; 47 + name = "irpf"; 48 + exec = "irpf"; 49 49 icon = "rfb64"; 50 50 desktopName = "Imposto de Renda Pessoa Física"; 51 51 comment = "Programa Oficial da Receita para elaboração do IRPF"; ··· 56 56 installPhase = '' 57 57 runHook preInstall 58 58 59 - BASEDIR="$out/share/${finalAttrs.pname}" 59 + BASEDIR="$out/share/irpf" 60 60 mkdir -p "$BASEDIR" 61 61 62 62 cp --no-preserve=mode -r help lib lib-modulos "$BASEDIR" ··· 64 64 install -Dm644 irpf.jar Leia-me.htm offline.png online.png pgd-updater.jar "$BASEDIR" 65 65 66 66 # make xdg-open overrideable at runtime 67 - makeWrapper ${jdk11}/bin/java $out/bin/${finalAttrs.pname} \ 67 + makeWrapper ${jdk11}/bin/java $out/bin/irpf \ 68 68 --add-flags "-Dawt.useSystemAAFontSettings=on" \ 69 69 --add-flags "-Dswing.aatext=true" \ 70 - --add-flags "-jar $BASEDIR/${finalAttrs.pname}.jar" \ 70 + --add-flags "-jar $BASEDIR/irpf.jar" \ 71 71 --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} \ 72 72 --set _JAVA_AWT_WM_NONREPARENTING 1 \ 73 73 --set AWT_TOOLKIT MToolkit
+3 -3
pkgs/by-name/it/itamae/Gemfile.lock
··· 7 7 docker-api (2.4.0) 8 8 excon (>= 0.64.0) 9 9 multi_json 10 - ed25519 (1.3.0) 10 + ed25519 (1.4.0) 11 11 excon (1.2.5) 12 12 logger 13 13 hashie (5.0.0) ··· 25 25 net-telnet (0.2.0) 26 26 schash (0.1.2) 27 27 sfl (2.3) 28 - specinfra (2.92.0) 28 + specinfra (2.94.0) 29 29 base64 30 30 net-scp 31 31 net-ssh (>= 2.7) ··· 43 43 itamae 44 44 45 45 BUNDLED WITH 46 - 2.6.2 46 + 2.6.6
+4 -4
pkgs/by-name/it/itamae/gemset.nix
··· 48 48 platforms = [ ]; 49 49 source = { 50 50 remotes = [ "https://rubygems.org" ]; 51 - sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji"; 51 + sha256 = "01n5rbyws1ijwc5dw7s88xx3zzacxx9k97qn8x11b6k8k18pzs8n"; 52 52 type = "gem"; 53 53 }; 54 - version = "1.3.0"; 54 + version = "1.4.0"; 55 55 }; 56 56 excon = { 57 57 dependencies = [ "logger" ]; ··· 174 174 platforms = [ ]; 175 175 source = { 176 176 remotes = [ "https://rubygems.org" ]; 177 - sha256 = "0aswlmhh152c974i8bn8d90kjbwadp0bjgs9kgpxxb3vffsfxc1w"; 177 + sha256 = "1m7vplx6w0w0mmij6n7zgc68kd1xbkhyb4qg25vmk8p21nbjbw6j"; 178 178 type = "gem"; 179 179 }; 180 - version = "2.92.0"; 180 + version = "2.94.0"; 181 181 }; 182 182 thor = { 183 183 groups = [ "default" ];
+1 -1
pkgs/by-name/ke/keepass/package.nix
··· 123 123 installPhase = '' 124 124 runHook preInstall 125 125 126 - target="$out/lib/dotnet/${finalAttrs.pname}" 126 + target="$out/lib/dotnet/keepass" 127 127 mkdir -p "$target" 128 128 129 129 cp -rv $outputFiles "$target"
+1 -1
pkgs/by-name/li/libconfig/package.nix
··· 13 13 version = "1.8"; 14 14 15 15 src = fetchurl { 16 - url = "https://hyperrealm.github.io/${finalAttrs.pname}/dist/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; 16 + url = "https://hyperrealm.github.io/libconfig/dist/libconfig-${finalAttrs.version}.tar.gz"; 17 17 hash = "sha256-BR4V3Q6QfESQXzF5M/VIcxTypW6MZybIMEzpkIhIUKo="; 18 18 }; 19 19
+12 -10
pkgs/by-name/li/libgourou/package.nix
··· 1 1 { 2 2 lib, 3 3 stdenv, 4 - fetchzip, 4 + fetchFromGitea, 5 5 pugixml, 6 6 updfparser, 7 7 curl, ··· 10 10 installShellFiles, 11 11 }: 12 12 13 - stdenv.mkDerivation rec { 13 + stdenv.mkDerivation (finalAttrs: { 14 14 pname = "libgourou"; 15 - version = "0.8.2"; 15 + version = "0.8.7"; 16 16 17 - src = fetchzip { 18 - url = "https://indefero.soutade.fr/p/libgourou/source/download/v${version}/"; 19 - sha256 = "sha256-adkrvBCgN07Ir+J3JFCy+X9p9609lj1w8nElrlHXTxc"; 20 - extension = "zip"; 17 + src = fetchFromGitea { 18 + domain = "forge.soutade.fr"; 19 + owner = "soutade"; 20 + repo = "libgourou"; 21 + tag = "v${finalAttrs.version}"; 22 + hash = "sha256-Tkft/pe3lH07pmyVibTEutIIvconUWDH1ZVN3qV4sSY="; 21 23 }; 22 24 23 25 postPatch = '' ··· 47 49 runHook preInstall 48 50 install -Dt $out/include include/libgourou*.h 49 51 install -Dt $out/lib libgourou.so 50 - install -Dt $out/lib libgourou.so.${version} 52 + install -Dt $out/lib libgourou.so.${finalAttrs.version} 51 53 install -Dt $out/lib libgourou.a 52 54 install -Dt $out/bin utils/acsmdownloader 53 55 install -Dt $out/bin utils/adept_{activate,loan_mgt,remove} ··· 57 59 58 60 meta = with lib; { 59 61 description = "Implementation of Adobe's ADEPT protocol for ePub/PDF DRM"; 60 - homepage = "https://indefero.soutade.fr/p/libgourou"; 62 + homepage = "https://forge.soutade.fr/soutade/libgourou"; 61 63 license = licenses.lgpl3Plus; 62 64 maintainers = with maintainers; [ autumnal ]; 63 65 platforms = platforms.all; 64 66 broken = stdenv.hostPlatform.isDarwin; 65 67 }; 66 - } 68 + })
+46
pkgs/by-name/li/lillydap/package.nix
··· 1 + { 2 + lib, 3 + stdenv, 4 + fetchFromGitLab, 5 + cmake, 6 + gperf, 7 + arpa2cm, 8 + quickder, 9 + nix-update-script, 10 + }: 11 + 12 + stdenv.mkDerivation (finalAttrs: { 13 + pname = "lillydap"; 14 + version = "1.0.1"; 15 + 16 + src = fetchFromGitLab { 17 + owner = "arpa2"; 18 + repo = "lillydap"; 19 + tag = "v${finalAttrs.version}"; 20 + hash = "sha256-SQuvu1A9Iq/fKthfYyVQGWFuyHYnhIry/wvnwgdMKHY="; 21 + }; 22 + 23 + strictDeps = true; 24 + 25 + nativeBuildInputs = [ 26 + cmake 27 + gperf 28 + ]; 29 + 30 + buildInputs = [ 31 + arpa2cm 32 + quickder 33 + ]; 34 + 35 + passthru.updateScript = nix-update-script { }; 36 + 37 + meta = { 38 + description = "Little LDAP: Event-driven, lock-free kernel for dynamic data servers, clients, filters"; 39 + homepage = "https://gitlab.com/arpa2/lillydap"; 40 + changelog = "https://gitlab.com/arpa2/lillydap/-/blob/v${finalAttrs.version}/CHANGES"; 41 + license = lib.licenses.bsd2; 42 + teams = with lib.teams; [ ngi ]; 43 + maintainers = with lib.maintainers; [ ethancedwards8 ]; 44 + platforms = lib.platforms.unix; 45 + }; 46 + })
+1 -2
pkgs/by-name/lo/lorem/package.nix
··· 29 29 }; 30 30 31 31 cargoDeps = rustPlatform.fetchCargoVendor { 32 - src = finalAttrs.src; 33 - name = "${finalAttrs.pname}-${finalAttrs.version}"; 32 + inherit (finalAttrs) pname version src; 34 33 hash = "sha256-4JYYcfsEoCGJWZCp0273gXrf8hfuHL/QSsLEHvNa4uA="; 35 34 }; 36 35
+2 -2
pkgs/by-name/ma/mapproxy/package.nix
··· 7 7 8 8 python3Packages.buildPythonApplication rec { 9 9 pname = "mapproxy"; 10 - version = "4.1.1"; 10 + version = "4.1.2"; 11 11 disabled = python3Packages.pythonOlder "3.8"; 12 12 13 13 src = fetchFromGitHub { 14 14 owner = "mapproxy"; 15 15 repo = "mapproxy"; 16 16 tag = version; 17 - hash = "sha256-rsravNSmvx1/291VvfRm0Yx1eg32UJd+egeG4S2SNnk="; 17 + hash = "sha256-sh0kViv1Ax/2YPL2ON+X03d5Moa2oPWhb4Rp6Ni5AAY="; 18 18 }; 19 19 20 20 prePatch = ''
+2 -2
pkgs/by-name/ma/markdownlint-cli2/package.nix
··· 11 11 12 12 stdenvNoCC.mkDerivation (finalAttrs: { 13 13 pname = "markdownlint-cli2"; 14 - version = "0.17.2"; 14 + version = "0.18.1"; 15 15 16 16 # upstream is not interested in including package-lock.json in the source 17 17 # https://github.com/DavidAnson/markdownlint-cli2/issues/198#issuecomment-1690529976 ··· 19 19 # so use the tarball from the archlinux mirror 20 20 src = fetchurl { 21 21 url = "https://us.mirrors.cicku.me/archlinux/extra/os/x86_64/markdownlint-cli2-${finalAttrs.version}-1-any.pkg.tar.zst"; 22 - hash = "sha256-TuiLFP/XItJh5VQWdwCvXRQCVzmqst4Sxna0eLobEQ4="; 22 + hash = "sha256-M7qmhRDJGm2MhgS2oMfRrkLAst1Ye/rPCwP78UBbyyY="; 23 23 }; 24 24 25 25 nativeBuildInputs = [
+1 -1
pkgs/by-name/mo/movim/package.nix
··· 154 154 mkdir -p $out/bin 155 155 cat << EOF > $out/bin/movim 156 156 #!${lib.getExe dash} 157 - ${lib.getExe finalAttrs.php} $out/share/php/${finalAttrs.pname}/daemon.php "\$@" 157 + ${lib.getExe finalAttrs.php} $out/share/php/movim/daemon.php "\$@" 158 158 EOF 159 159 chmod +x $out/bin/movim 160 160
+2 -2
pkgs/by-name/my/mya/package.nix
··· 44 44 runHook preInstall 45 45 46 46 # Based on the upstream PKGBUILD 47 - mkdir -p $out/share/doc/${finalAttrs.pname} 47 + mkdir -p $out/share/doc/mya 48 48 cp -a bin $out 49 - cp $cmakeDir/README.md $out/share/doc/${finalAttrs.pname} 49 + cp $cmakeDir/README.md $out/share/doc/mya 50 50 51 51 runHook postInstall 52 52 '';
+5 -5
pkgs/by-name/ne/netgen/package.nix
··· 126 126 (lib.cmakeFeature "NETGEN_VERSION_GIT" "v${finalAttrs.version}-0") 127 127 (lib.cmakeFeature "NG_INSTALL_DIR_BIN" "bin") 128 128 (lib.cmakeFeature "NG_INSTALL_DIR_LIB" "lib") 129 - (lib.cmakeFeature "NG_INSTALL_DIR_CMAKE" "lib/cmake/${finalAttrs.pname}") 129 + (lib.cmakeFeature "NG_INSTALL_DIR_CMAKE" "lib/cmake/netgen") 130 130 (lib.cmakeFeature "NG_INSTALL_DIR_PYTHON" python3Packages.python.sitePackages) 131 131 (lib.cmakeFeature "NG_INSTALL_DIR_RES" "share") 132 132 (lib.cmakeFeature "NG_INSTALL_DIR_INCLUDE" "include") ··· 160 160 postInstall = 161 161 lib.optionalString stdenv.hostPlatform.isDarwin '' 162 162 rm $out/bin/{Netgen1,startup.sh} 163 - mkdir -p $out/Applications/${finalAttrs.pname}.app/Contents/{MacOS,Resouces} 163 + mkdir -p $out/Applications/netgen.app/Contents/{MacOS,Resouces} 164 164 substituteInPlace $out/Info.plist --replace-fail "Netgen1" "netgen" 165 - mv $out/Info.plist $out/Applications/${finalAttrs.pname}.app/Contents 166 - mv $out/Netgen.icns $out/Applications/${finalAttrs.pname}.app/Contents/Resouces 167 - ln -s $out/bin/netgen $out/Applications/${finalAttrs.pname}.app/Contents/MacOS/netgen 165 + mv $out/Info.plist $out/Applications/netgen.app/Contents 166 + mv $out/Netgen.icns $out/Applications/netgen.app/Contents/Resouces 167 + ln -s $out/bin/netgen $out/Applications/netgen.app/Contents/MacOS/netgen 168 168 '' 169 169 + lib.optionalString stdenv.hostPlatform.isLinux '' 170 170 # Extract pngs from the Apple icon image and create
+1 -1
pkgs/by-name/oa/oakctl/package.nix
··· 57 57 runHook preInstall 58 58 59 59 mkdir -p $out/bin 60 - install -D -m 0755 $src $out/bin/${finalAttrs.pname} 60 + install -D -m 0755 $src $out/bin/oakctl 61 61 62 62 runHook postInstall 63 63 '';
+4 -4
pkgs/by-name/oc/ocelot-desktop/package.nix
··· 77 77 '' 78 78 runHook preInstall 79 79 80 - mkdir -p $out/{bin,share/${finalAttrs.pname}} 81 - install -Dm644 ${finalAttrs.src} $out/share/${finalAttrs.pname}/ocelot-desktop.jar 80 + mkdir -p $out/{bin,share/ocelot-desktop} 81 + install -Dm644 ${finalAttrs.src} $out/share/ocelot-desktop/ocelot-desktop.jar 82 82 83 83 makeBinaryWrapper ${jre}/bin/java $out/bin/ocelot-desktop \ 84 84 --set JAVA_HOME ${jre.home} \ 85 85 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeLibs}" \ 86 86 --prefix PATH : "${lib.makeBinPath runtimePrograms}" \ 87 - --add-flags "-jar $out/share/${finalAttrs.pname}/ocelot-desktop.jar" 87 + --add-flags "-jar $out/share/ocelot-desktop/ocelot-desktop.jar" 88 88 89 89 # copy icons from zip file 90 90 # ocelot/desktop/images/icon*.png ··· 92 92 93 93 for size in 16 32 64 128 256; do 94 94 mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps 95 - unzip -p $out/share/${finalAttrs.pname}/ocelot-desktop.jar \ 95 + unzip -p $out/share/ocelot-desktop/ocelot-desktop.jar \ 96 96 ocelot/desktop/images/icon"$size".png > $out/share/icons/hicolor/"$size"x"$size"/apps/ocelot-desktop.png 97 97 done 98 98
+1 -1
pkgs/by-name/pa/payload_dumper/package.nix
··· 27 27 installPhase = '' 28 28 runHook preInstall 29 29 30 - sitePackages=$out/${python3.sitePackages}/${finalAttrs.pname} 30 + sitePackages=$out/${python3.sitePackages}/payload_dumper 31 31 32 32 install -D ./payload_dumper.py $out/bin/payload_dumper 33 33 install -D ./update_metadata_pb2.py $sitePackages/update_metadata_pb2.py
+5 -5
pkgs/by-name/pb/pb/package.nix
··· 4 4 fetchFromGitHub, 5 5 }: 6 6 7 - buildGoModule rec { 7 + buildGoModule (finalAttrs: { 8 8 pname = "pb"; 9 9 version = "0.6.0"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "parseablehq"; 13 13 repo = "pb"; 14 - tag = "v${version}"; 14 + tag = "v${finalAttrs.version}"; 15 15 hash = "sha256-OXxLHi7v/xJZVvxHZvJ0eH4MYrlLFxDAMT9CVG2mWTM="; 16 16 }; 17 17 ··· 20 20 ldflags = [ 21 21 "-s" 22 22 "-w" 23 - "-X main.Version=${version}" 23 + "-X main.Version=${finalAttrs.version}" 24 24 ]; 25 25 26 26 tags = [ "kqueue" ]; ··· 29 29 30 30 meta = { 31 31 homepage = "https://github.com/parseablehq/pb"; 32 - changelog = "https://github.com/parseablehq/pb/releases/tag/v${version}"; 32 + changelog = "https://github.com/parseablehq/pb/releases/tag/v${finalAttrs.version}"; 33 33 description = "CLI client for Parseable server"; 34 34 license = lib.licenses.agpl3Plus; 35 35 maintainers = with lib.maintainers; [ aaronjheng ]; 36 36 mainProgram = "pb"; 37 37 }; 38 - } 38 + })
+1 -1
pkgs/by-name/pi/picolibc/package.nix
··· 106 106 107 107 src = fetchFromGitHub { 108 108 owner = "picolibc"; 109 - repo = finalAttrs.pname; 109 + repo = "picolibc"; 110 110 tag = finalAttrs.version; 111 111 hash = "sha256-djOZKkinsaaYD4tUEA6mKdo+5em0GP1/+rI0mIm7Vs8="; 112 112 };
+1 -1
pkgs/by-name/pi/pixelfed/package.nix
··· 23 23 24 24 postInstall = '' 25 25 chmod -R u+w $out/share 26 - mv "$out/share/php/${finalAttrs.pname}"/* $out 26 + mv "$out/share/php/pixelfed"/* $out 27 27 rm -R $out/bootstrap/cache 28 28 # Move static contents for the NixOS module to pick it up, if needed. 29 29 mv $out/bootstrap $out/bootstrap-static
+3 -3
pkgs/by-name/pm/pmbootstrap/package.nix
··· 15 15 16 16 python3Packages.buildPythonApplication rec { 17 17 pname = "pmbootstrap"; 18 - version = "3.4.0"; 18 + version = "3.4.2"; 19 19 pyproject = true; 20 20 21 21 src = fetchFromGitLab { 22 22 owner = "postmarketOS"; 23 23 repo = "pmbootstrap"; 24 24 tag = version; 25 - hash = "sha256-vNa0MMU5NHO8RjgfKxNjhQDKQ2Rd/ZGU0HndOD2Sypo="; 25 + hash = "sha256-5N8yAd/1gSzHP2wXpqZb+LpylQ/LYspJ+YaY2YaWCSs="; 26 26 domain = "gitlab.postmarketos.org"; 27 27 }; 28 28 ··· 80 80 81 81 meta = { 82 82 description = "Sophisticated chroot/build/flash tool to develop and install postmarketOS"; 83 - homepage = "https://gitlab.com/postmarketOS/pmbootstrap"; 83 + homepage = "https://gitlab.postmarketos.org/postmarketOS/pmbootstrap"; 84 84 license = lib.licenses.gpl3Plus; 85 85 maintainers = with lib.maintainers; [ 86 86 onny
+2 -2
pkgs/by-name/pr/proton-ge-bin/package.nix
··· 9 9 }: 10 10 stdenvNoCC.mkDerivation (finalAttrs: { 11 11 pname = "proton-ge-bin"; 12 - version = "GE-Proton10-3"; 12 + version = "GE-Proton10-4"; 13 13 14 14 src = fetchzip { 15 15 url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz"; 16 - hash = "sha256-V4znOni53KMZ0rs7O7TuBst5kDSaEOyWUGgL7EESVAU="; 16 + hash = "sha256-Si/CQ2PINfhmsC+uW3iFBUoSczZdkqwCZ8FAFuipu68="; 17 17 }; 18 18 19 19 dontUnpack = true;
+4 -4
pkgs/by-name/qo/qownnotes/package.nix
··· 5 5 qt6Packages, 6 6 cmake, 7 7 makeWrapper, 8 - botan2, 8 + botan3, 9 9 pkg-config, 10 10 nixosTests, 11 11 installShellFiles, ··· 17 17 stdenv.mkDerivation (finalAttrs: { 18 18 pname = "qownnotes"; 19 19 appname = "QOwnNotes"; 20 - version = "25.5.10"; 20 + version = "25.6.0"; 21 21 22 22 src = fetchurl { 23 23 url = "https://github.com/pbek/QOwnNotes/releases/download/v${finalAttrs.version}/qownnotes-${finalAttrs.version}.tar.xz"; 24 - hash = "sha256-P8vBLDnkBjTU/x47ka0Ps3nR+Wi4C6Gx+d0sP8lF/xM="; 24 + hash = "sha256-RUW8fWPJxTq7Ya+uZ6xGg7URHc+ojuBs9g++UXrK9I0="; 25 25 }; 26 26 27 27 nativeBuildInputs = ··· 40 40 qt6Packages.qtdeclarative 41 41 qt6Packages.qtsvg 42 42 qt6Packages.qtwebsockets 43 - botan2 43 + botan3 44 44 ] ++ lib.optionals stdenv.hostPlatform.isLinux [ qt6Packages.qtwayland ]; 45 45 46 46 cmakeFlags = [
+1 -2
pkgs/by-name/ru/rustls-ffi/package.nix
··· 25 25 }; 26 26 27 27 cargoDeps = rustPlatform.fetchCargoVendor { 28 - src = finalAttrs.src; 29 - name = "${finalAttrs.pname}-${finalAttrs.version}"; 28 + inherit (finalAttrs) pname version src; 30 29 hash = "sha256-gqc6en59QQpD14hOgRuGEPWLvrkyGn9tPR9vQmRAxIg="; 31 30 }; 32 31
+1 -1
pkgs/by-name/sc/scmutils/package.nix
··· 9 9 version = "20230902"; 10 10 11 11 src = fetchurl { 12 - url = "https://groups.csail.mit.edu/mac/users/gjs/6946/mechanics-system-installation/native-code/${finalAttrs.pname}-src-${finalAttrs.version}.tar.gz"; 12 + url = "https://groups.csail.mit.edu/mac/users/gjs/6946/mechanics-system-installation/native-code/scmutils-src-${finalAttrs.version}.tar.gz"; 13 13 hash = "sha256-9/shOxoKwJ4uDTHmvXqhemgy3W+GUCmoqFm5e1t3W0M="; 14 14 }; 15 15
+2 -2
pkgs/by-name/sh/shopware-cli/package.nix
··· 10 10 11 11 buildGoModule rec { 12 12 pname = "shopware-cli"; 13 - version = "0.6.1"; 13 + version = "0.6.3"; 14 14 src = fetchFromGitHub { 15 15 repo = "shopware-cli"; 16 16 owner = "FriendsOfShopware"; 17 17 tag = version; 18 - hash = "sha256-GdZq3Jn+SAtf0SqJSc+52JA+VR3cFJ5DzQo3cMu9Ahs="; 18 + hash = "sha256-UkLzjW3Ak+bMw+nRqlaojeJ67cxadkvufZ/pn1nTmoM="; 19 19 }; 20 20 21 21 nativeBuildInputs = [
+2 -2
pkgs/by-name/si/sigil/package.nix
··· 12 12 13 13 stdenv.mkDerivation rec { 14 14 pname = "sigil"; 15 - version = "2.4.2"; 15 + version = "2.5.1"; 16 16 17 17 src = fetchFromGitHub { 18 18 repo = "Sigil"; 19 19 owner = "Sigil-Ebook"; 20 20 tag = version; 21 - hash = "sha256-/lnSNamLkPLG8tn0w8F0zFyypMUXyMhgxA2WyQFegKw="; 21 + hash = "sha256-1Z+OosEZJEHiUz+62wYuNeAyQXARh14WAtqBVjq1FZw="; 22 22 }; 23 23 24 24 pythonPath = with python3Packages; [ lxml ];
+2 -2
pkgs/by-name/sl/slurm/package.nix
··· 41 41 42 42 stdenv.mkDerivation rec { 43 43 pname = "slurm"; 44 - version = "24.11.5.1"; 44 + version = "25.05.0.1"; 45 45 46 46 # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php 47 47 # because the latter does not keep older releases. ··· 50 50 repo = "slurm"; 51 51 # The release tags use - instead of . 52 52 rev = "${pname}-${builtins.replaceStrings [ "." ] [ "-" ] version}"; 53 - hash = "sha256-0c8b+quLeWpCyuCOcp/B8Yd0dxr90UtSV/tgeTi7tbk="; 53 + hash = "sha256-C1euW/twT3AhwtNUmUDtmFjMUi5B4I7r488YcT+N/zM="; 54 54 }; 55 55 56 56 outputs = [
+2 -2
pkgs/by-name/sn/snes9x/package.nix
··· 106 106 runHook preInstall 107 107 108 108 install -Dm755 snes9x -t "$out/bin/" 109 - install -Dm644 snes9x.conf.default -t "$out/share/doc/${finalAttrs.pname}/" 109 + install -Dm644 snes9x.conf.default -t "$out/share/doc/snes9x/" 110 110 install -Dm644 ../docs/{control-inputs,controls,snapshots}.txt -t \ 111 - "$out/share/doc/${finalAttrs.pname}/" 111 + "$out/share/doc/snes9x/" 112 112 113 113 runHook postInstall 114 114 '';
+2 -2
pkgs/by-name/sr/srb2/package.nix
··· 90 90 desktopItems = [ 91 91 (makeDesktopItem rec { 92 92 name = "Sonic Robo Blast 2"; 93 - exec = finalAttrs.pname; 94 - icon = finalAttrs.pname; 93 + exec = "srb2"; 94 + icon = "srb2"; 95 95 comment = finalAttrs.meta.description; 96 96 desktopName = name; 97 97 genericName = name;
+2 -2
pkgs/by-name/sr/srb2kart/package.nix
··· 73 73 desktopItems = [ 74 74 (makeDesktopItem rec { 75 75 name = "Sonic Robo Blast 2 Kart"; 76 - exec = finalAttrs.pname; 77 - icon = finalAttrs.pname; 76 + exec = "srb2kart"; 77 + icon = "srb2kart"; 78 78 comment = "Kart racing mod based on SRB2"; 79 79 desktopName = name; 80 80 genericName = name;
+1 -1
pkgs/by-name/st/stardust/package.nix
··· 19 19 version = "0.1.13"; 20 20 21 21 src = fetchurl { 22 - url = "http://iwar.free.fr/spip/IMG/gz/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; 22 + url = "http://iwar.free.fr/spip/IMG/gz/stardust-${finalAttrs.version}.tar.gz"; 23 23 hash = "sha256-t5cykB5zHYYj4tlk9QDhL7YQVgEScBZw9OIVXz5NOqc="; 24 24 }; 25 25
+2 -2
pkgs/by-name/st/stegsolve/package.nix
··· 23 23 desktopItems = [ 24 24 (makeDesktopItem { 25 25 type = "Application"; 26 - name = finalAttrs.pname; 26 + name = "stegsolve"; 27 27 desktopName = "Stegsolve"; 28 28 comment = "A steganographic image analyzer, solver and data extractor for challanges"; 29 - exec = finalAttrs.pname; 29 + exec = "stegsolve"; 30 30 categories = [ "Graphics" ]; 31 31 }) 32 32 ];
+6 -6
pkgs/by-name/st/stretchly/package.nix
··· 27 27 installPhase = '' 28 28 runHook preInstall 29 29 30 - mkdir -p $out/bin $out/share/${finalAttrs.pname}/ 31 - mv resources/app.asar* $out/share/${finalAttrs.pname}/ 30 + mkdir -p $out/bin $out/share/stretchly/ 31 + mv resources/app.asar* $out/share/stretchly/ 32 32 33 33 mkdir -p $out/share/applications 34 34 ln -s ${finalAttrs.desktopItem}/share/applications/* $out/share/applications/ 35 35 36 - makeWrapper ${electron}/bin/electron $out/bin/${finalAttrs.pname} \ 37 - --add-flags $out/share/${finalAttrs.pname}/app.asar 36 + makeWrapper ${electron}/bin/electron $out/bin/stretchly \ 37 + --add-flags $out/share/stretchly/app.asar 38 38 39 39 runHook postInstall 40 40 ''; 41 41 42 42 desktopItem = makeDesktopItem { 43 - name = finalAttrs.pname; 44 - exec = finalAttrs.pname; 43 + name = "stretchly"; 44 + exec = "stretchly"; 45 45 icon = finalAttrs.icon; 46 46 desktopName = "Stretchly"; 47 47 genericName = "Stretchly";
+4 -4
pkgs/by-name/st/stylelint-lsp/package.nix
··· 51 51 installPhase = '' 52 52 runHook preInstall 53 53 54 - mkdir -p $out/{bin,lib/${finalAttrs.pname}} 55 - mv {dist,node_modules} $out/lib/${finalAttrs.pname} 56 - chmod a+x $out/lib/${finalAttrs.pname}/dist/index.js 57 - ln -s $out/lib/${finalAttrs.pname}/dist/index.js $out/bin/stylelint-lsp 54 + mkdir -p $out/{bin,lib/stylelint-lsp} 55 + mv {dist,node_modules} $out/lib/stylelint-lsp 56 + chmod a+x $out/lib/stylelint-lsp/dist/index.js 57 + ln -s $out/lib/stylelint-lsp/dist/index.js $out/bin/stylelint-lsp 58 58 59 59 runHook postInstall 60 60 '';
+2 -2
pkgs/by-name/st/styluslabs-write/package.nix
··· 75 75 76 76 for i in 16 24 48 64 96 128 256 512; do 77 77 mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps 78 - magick scribbleres/write_512.png -resize ''${i}x''${i} $out/share/icons/hicolor/''${i}x''${i}/apps/${finalAttrs.pname}.png 78 + magick scribbleres/write_512.png -resize ''${i}x''${i} $out/share/icons/hicolor/''${i}x''${i}/apps/styluslabs-write.png 79 79 done 80 80 81 81 install -Dm444 scribbleres/linux/Write.desktop -t $out/share/applications 82 82 substituteInPlace $out/share/applications/Write.desktop \ 83 83 --replace-fail 'Exec=/opt/Write/Write' 'Exec=Write' \ 84 - --replace-fail 'Icon=Write144x144' 'Icon=${finalAttrs.pname}' 84 + --replace-fail 'Icon=Write144x144' 'Icon=styluslabs-write' 85 85 ''; 86 86 87 87 enableParallelBuilding = true;
+2 -2
pkgs/by-name/sw/swayimg/package.nix
··· 31 31 32 32 stdenv.mkDerivation (finalAttrs: { 33 33 pname = "swayimg"; 34 - version = "4.0"; 34 + version = "4.1"; 35 35 36 36 src = fetchFromGitHub { 37 37 owner = "artemsen"; 38 38 repo = "swayimg"; 39 39 tag = "v${finalAttrs.version}"; 40 - hash = "sha256-2UmaU60+5NNj2CVJt4oJXyBPjVeA0zBfEqZOOSI2vvk="; 40 + hash = "sha256-xwhEt+FhHPgfXJL1zTPsMD8ia5s+rr/eIJLlAlG8QzY="; 41 41 }; 42 42 43 43 strictDeps = true;
+3
pkgs/by-name/ta/taler-exchange/package.nix
··· 19 19 gettext, 20 20 texinfo, 21 21 libtool, 22 + nixosTests, 22 23 }: 23 24 24 25 stdenv.mkDerivation (finalAttrs: { ··· 108 109 ]; 109 110 110 111 checkTarget = "check"; 112 + 113 + passthru.tests = nixosTests.taler.basic; 111 114 112 115 meta = { 113 116 description = "Exchange component for the GNU Taler electronic payment system";
+11
pkgs/by-name/ta/taler-merchant/package.nix
··· 14 14 libgcrypt, 15 15 texinfo, 16 16 curl, 17 + nixosTests, 17 18 }: 18 19 19 20 stdenv.mkDerivation (finalAttrs: { ··· 82 83 done 83 84 ''; 84 85 86 + postFixup = '' 87 + # - taler-merchant-dbinit expects `versioning.sql` under `share/taler/sql` 88 + # - taler-merchant-httpd expects `share/taler/merchant/templates` 89 + mkdir -p $out/share/taler/sql 90 + ln -s $out/share/taler-merchant $out/share/taler/merchant 91 + ln -s $out/share/taler-merchant/sql $out/share/taler/sql/merchant 92 + ''; 93 + 85 94 enableParallelBuilding = true; 86 95 87 96 doInstallCheck = true; ··· 89 98 nativeCheckInputs = [ jq ]; 90 99 91 100 checkTarget = "check"; 101 + 102 + passthru.tests = nixosTests.taler.basic; 92 103 93 104 meta = { 94 105 description = "Merchant component for the GNU Taler electronic payment system";
+5
pkgs/by-name/ta/taler-wallet-core/package.nix
··· 95 95 done 96 96 ''; 97 97 98 + postFixup = '' 99 + # else it fails to find the python interpreter 100 + patchShebangs --build $out/bin/taler-helper-sqlite3 101 + ''; 102 + 98 103 env.ESBUILD_BINARY_PATH = lib.getExe esbuild'; 99 104 100 105 meta = {
+3 -3
pkgs/by-name/ta/tasks/package.nix
··· 13 13 14 14 rustPlatform.buildRustPackage rec { 15 15 pname = "tasks"; 16 - version = "0.1.1"; 16 + version = "0.2.0"; 17 17 18 18 src = fetchFromGitHub { 19 19 owner = "cosmic-utils"; 20 20 repo = "tasks"; 21 21 tag = version; 22 - hash = "sha256-OKXkAJ+TyMnTzvlUPwPU2MWgCTIN3cDiPcVPOzU4WEg="; 22 + hash = "sha256-R8wXIw9Gn4uyLoXxyjp/bcK8vK7NkG/chcHe8LtTvo8="; 23 23 }; 24 24 25 25 useFetchCargoVendor = true; 26 - cargoHash = "sha256-3SbqKB9DI1Bl8u8rrAPCO/sPKMByYhQ3YT63K5BDVvE="; 26 + cargoHash = "sha256-iJutA18TvsWJceacfhzfEQa5zaQBMVC7fmtF1uPN3sQ="; 27 27 28 28 nativeBuildInputs = [ 29 29 libcosmicAppHook
+1 -1
pkgs/by-name/te/texpresso/package.nix
··· 56 56 57 57 installPhase = '' 58 58 runHook preInstall 59 - install -Dm0755 -t "$out/bin/" "build/${finalAttrs.pname}" 59 + install -Dm0755 -t "$out/bin/" "build/texpresso" 60 60 runHook postInstall 61 61 ''; 62 62
+5 -5
pkgs/by-name/ti/ticktick/package.nix
··· 57 57 unpackPhase = '' 58 58 runHook preUnpack 59 59 60 - mkdir -p "$out/share" "$out/opt/${finalAttrs.pname}" "$out/bin" 60 + mkdir -p "$out/share" "$out/opt/ticktick" "$out/bin" 61 61 dpkg-deb --fsys-tarfile "$src" | tar --extract --directory="$out" 62 62 63 63 runHook postUnpack ··· 66 66 installPhase = '' 67 67 runHook preInstall 68 68 69 - cp -av $out/opt/TickTick/* $out/opt/${finalAttrs.pname} 69 + cp -av $out/opt/TickTick/* $out/opt/ticktick 70 70 cp -av $out/usr/share/* $out/share 71 71 rm -rf $out/usr $out/opt/TickTick 72 - ln -sf "$out/opt/${finalAttrs.pname}/${finalAttrs.pname}" "$out/bin/${finalAttrs.pname}" 72 + ln -sf "$out/opt/ticktick/ticktick" "$out/bin/ticktick" 73 73 74 - substituteInPlace "$out/share/applications/${finalAttrs.pname}.desktop" \ 75 - --replace "Exec=/opt/TickTick/ticktick" "Exec=$out/bin/${finalAttrs.pname}" 74 + substituteInPlace "$out/share/applications/ticktick.desktop" \ 75 + --replace "Exec=/opt/TickTick/ticktick" "Exec=$out/bin/ticktick" 76 76 77 77 runHook postInstall 78 78 '';
+2 -2
pkgs/by-name/tt/ttaenc/package.nix
··· 26 26 27 27 postInstall = '' 28 28 # Copy docs 29 - install -dm755 "$out/share/doc/${finalAttrs.pname}" 30 - install -m644 "ChangeLog-${finalAttrs.version}" README "$out/share/doc/${finalAttrs.pname}" 29 + install -dm755 "$out/share/doc/ttaenc" 30 + install -m644 "ChangeLog-${finalAttrs.version}" README "$out/share/doc/ttaenc" 31 31 ''; 32 32 33 33 meta = {
+2 -2
pkgs/by-name/uf/ufetch/package.nix
··· 20 20 21 21 installPhase = '' 22 22 runHook preInstall 23 - mkdir -p $out/bin $out/share/licenses/${finalAttrs.pname} 23 + mkdir -p $out/bin $out/share/licenses/ufetch 24 24 ${ 25 25 if !full then 26 26 "install -Dm755 ufetch-${osName} $out/bin/ufetch" ··· 30 30 ln -s $out/bin/ufetch-${osName} $out/bin/ufetch 31 31 '' 32 32 } 33 - install -Dm644 LICENSE $out/share/licenses/${finalAttrs.pname}/LICENSE 33 + install -Dm644 LICENSE $out/share/licenses/ufetch/LICENSE 34 34 runHook postInstall 35 35 ''; 36 36
+2 -2
pkgs/by-name/un/unstructured-api/package.nix
··· 144 144 ++ google-api-core.optional-dependencies.grpc 145 145 ++ unstructured.optional-dependencies.all-docs 146 146 ); 147 - version = "0.0.82"; 147 + version = "0.0.85"; 148 148 unstructured_api_nltk_data = python3.pkgs.nltk.dataDir (d: [ 149 149 d.punkt 150 150 d.averaged-perceptron-tagger ··· 158 158 owner = "Unstructured-IO"; 159 159 repo = "unstructured-api"; 160 160 rev = version; 161 - hash = "sha256-mvcARpewqC25x3ZdpM8QB7SjbqGoBL/rtxi90KdKdO8="; 161 + hash = "sha256-FNcm/7JxQE6ZksFtEgInnUhbKArZoyo9rlxhyHgRG3E="; 162 162 }; 163 163 164 164 nativeBuildInputs = [ makeWrapper ];
+1 -1
pkgs/by-name/un/untie/package.nix
··· 8 8 pname = "untie"; 9 9 version = "0.3"; 10 10 src = fetchurl { 11 - url = "http://guichaz.free.fr/untie/files/${finalAttrs.pname}-${finalAttrs.version}.tar.bz2"; 11 + url = "http://guichaz.free.fr/untie/files/untie-${finalAttrs.version}.tar.bz2"; 12 12 sha256 = "1334ngvbi4arcch462mzi5vxvxck4sy1nf0m58116d9xmx83ak0m"; 13 13 }; 14 14
+12 -10
pkgs/by-name/up/updfparser/package.nix
··· 1 1 { 2 2 lib, 3 3 stdenv, 4 - fetchzip, 4 + fetchFromGitea, 5 5 }: 6 6 7 - stdenv.mkDerivation rec { 7 + stdenv.mkDerivation (finalAttrs: { 8 8 name = "updfparser"; 9 - version = "unstable-2023-08-08"; 10 - rev = "c5ce75b9eea8ebb2746b13eeb0f335813c615115"; 9 + version = "0-unstable-2024-03-24"; 10 + rev = "6060d123441a06df699eb275ae5ffdd50409b8f3"; 11 11 12 - src = fetchzip { 13 - url = "https://indefero.soutade.fr/p/updfparser/source/download/${rev}/"; 14 - hash = "sha256-RT7mvu43Izp0rHhKq4wR4kt0TDfzHvB2NGMR+fxO5UM="; 15 - extension = "zip"; 12 + src = fetchFromGitea { 13 + inherit (finalAttrs) rev; 14 + domain = "forge.soutade.fr"; 15 + owner = "soutade"; 16 + repo = "updfparser"; 17 + hash = "sha256-HD73WGZ4e/3T7vQmwU/lRADtvsInFG62uqvJmF773Rk="; 16 18 }; 17 19 18 20 makeFlags = [ ··· 30 32 31 33 meta = with lib; { 32 34 description = "Very simple PDF parser"; 33 - homepage = "https://indefero.soutade.fr/p/updfparser"; 35 + homepage = "https://forge.soutade.fr/soutade/updfparser"; 34 36 license = licenses.lgpl3Plus; 35 37 maintainers = with maintainers; [ autumnal ]; 36 38 platforms = platforms.all; 37 39 }; 38 - } 40 + })
+1
pkgs/by-name/vi/vivaldi/package.nix
··· 235 235 mainProgram = "vivaldi"; 236 236 maintainers = with lib.maintainers; [ 237 237 marcusramberg 238 + max06 238 239 rewine 239 240 ]; 240 241 platforms = [
+3 -3
pkgs/by-name/wh/whatsie/package.nix
··· 24 24 25 25 desktopItems = [ 26 26 (makeDesktopItem { 27 - name = finalAttrs.pname; 27 + name = "whatsie"; 28 28 desktopName = "Whatsie"; 29 - icon = finalAttrs.pname; 30 - exec = finalAttrs.pname; 29 + icon = "whatsie"; 30 + exec = "whatsie"; 31 31 comment = finalAttrs.meta.description; 32 32 }) 33 33 ];
+2 -2
pkgs/by-name/xd/xdg-terminal-exec/package.nix
··· 7 7 }: 8 8 stdenvNoCC.mkDerivation (finalAttrs: { 9 9 pname = "xdg-terminal-exec"; 10 - version = "0.12.3"; 10 + version = "0.12.4"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "Vladimir-csp"; 14 14 repo = "xdg-terminal-exec"; 15 15 rev = "v${finalAttrs.version}"; 16 - hash = "sha256-mA/azPl4pB7vW1dB+Are5WbIf/eLmU91iwjC/V0+Xh8="; 16 + hash = "sha256-PA0ttRtFmNVITBidxZsZFMfMaGi2X6296ve5y6Mqlm0="; 17 17 }; 18 18 19 19 nativeBuildInputs = [ scdoc ];
+1 -1
pkgs/by-name/xe/xeus/package.nix
··· 16 16 17 17 src = fetchFromGitHub { 18 18 owner = "jupyter-xeus"; 19 - repo = finalAttrs.pname; 19 + repo = "xeus"; 20 20 tag = finalAttrs.version; 21 21 hash = "sha256-nR247SGnc3TSj6PCrJmY6ccACvYKeSYFMgoawyYLBNs="; 22 22 };
+4 -4
pkgs/by-name/yu/yubikey-manager/package.nix
··· 9 9 10 10 python3Packages.buildPythonPackage rec { 11 11 pname = "yubikey-manager"; 12 - version = "5.6.1"; 12 + version = "5.7.0"; 13 13 pyproject = true; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "Yubico"; 17 17 repo = "yubikey-manager"; 18 - rev = version; 19 - hash = "sha256-qEEAByg6Smn1Wk8U4VA6MIJDLWBtM+S+qTDIcgPUGA0="; 18 + tag = version; 19 + hash = "sha256-G93fg2tgIo9u8FjIBBgd74qbYKiqfQo+sAV965bUipk="; 20 20 }; 21 21 22 22 postPatch = '' ··· 57 57 58 58 meta = { 59 59 homepage = "https://developers.yubico.com/yubikey-manager"; 60 - changelog = "https://github.com/Yubico/yubikey-manager/releases/tag/${version}"; 60 + changelog = "https://github.com/Yubico/yubikey-manager/releases/tag/${src.tag}"; 61 61 description = "Command line tool for configuring any YubiKey over all USB transports"; 62 62 63 63 license = lib.licenses.bsd2;
+1 -1
pkgs/by-name/zc/zcfan/package.nix
··· 26 26 installCheckPhase = '' 27 27 runHook preInstallCheck 28 28 29 - $out/bin/${finalAttrs.pname} -h 29 + $out/bin/zcfan -h 30 30 31 31 runHook postInstallCheck 32 32 '';
+1 -1
pkgs/by-name/zs/zsh-forgit/package.nix
··· 40 40 41 41 install -D bin/git-forgit $out/bin/git-forgit 42 42 install -D completions/_git-forgit $out/share/zsh/site-functions/_git-forgit 43 - install -D forgit.plugin.zsh $out/share/zsh/${finalAttrs.pname}/forgit.plugin.zsh 43 + install -D forgit.plugin.zsh $out/share/zsh/zsh-forgit/forgit.plugin.zsh 44 44 wrapProgram $out/bin/git-forgit \ 45 45 --prefix PATH : ${ 46 46 lib.makeBinPath [
+4 -2
pkgs/development/coq-modules/vscoq-language-server/default.nix
··· 14 14 with lib.versions; 15 15 lib.switch coq.coq-version [ 16 16 { 17 - case = isEq "9.0"; 18 - out = "2.2.5"; 17 + case = range "8.18" "9.0"; 18 + out = "2.2.6"; 19 19 } 20 20 { 21 21 case = range "8.18" "8.20"; ··· 48 48 release."2.2.1".sha256 = "sha256-miIVAv/8jlP1pXnoK1MWz4O6nlmb309a8UjcCivbiB4="; 49 49 release."2.2.5".rev = "v2.2.5"; 50 50 release."2.2.5".sha256 = "sha256-XyIjwem/yS7UIpQATNixgKkrMOHHs74nkAOvpU5WG1k="; 51 + release."2.2.6".rev = "v2.2.6"; 52 + release."2.2.6".sha256 = "sha256-J8nRTAwN6GBEYgqlXa2kkkrHPatXsSObQg9QUQoZhgE="; 51 53 inherit location; 52 54 }); 53 55 fetched = fetch (if version != null then version else defaultVersion);
+16
pkgs/development/python-modules/granian/default.nix
··· 13 13 pytest-asyncio, 14 14 websockets, 15 15 httpx, 16 + rust-jemalloc-sys, 16 17 sniffio, 17 18 nix-update-script, 18 19 }: ··· 37 38 nativeBuildInputs = with rustPlatform; [ 38 39 cargoSetupHook 39 40 maturinBuildHook 41 + ]; 42 + 43 + buildInputs = [ 44 + # fix "Unsupported system page size" on aarch64-linux with 16k pages 45 + # https://github.com/NixOS/nixpkgs/issues/410572 46 + (rust-jemalloc-sys.overrideAttrs ( 47 + { configureFlags, ... }: 48 + { 49 + configureFlags = configureFlags ++ [ 50 + # otherwise import check fails with: 51 + # ImportError: {{storeDir}}/lib/libjemalloc.so.2: cannot allocate memory in static TLS block 52 + "--disable-initial-exec-tls" 53 + ]; 54 + } 55 + )) 40 56 ]; 41 57 42 58 dependencies = [
+41
pkgs/development/python-modules/kconfiglib/0001-Add-rudimentary-support-for-modules-property.patch
··· 1 + From 3161fec0b9ff9154dbd952c3481400118fabb744 Mon Sep 17 00:00:00 2001 2 + From: Helmut Grohne <helmut.grohne@intenta.de> 3 + Date: Thu, 21 Apr 2022 10:07:53 +0200 4 + Subject: [PATCH] Add rudimentary support for modules property 5 + 6 + In linux commit 6dd85ff178cd76851e2184b13e545f5a88d1be30, Linux Torvalds 7 + changed "option modules" to plain "modules" since it was the only option 8 + left. kconfiglib does not have much support for either besides parsing 9 + it and suppressing warnings when it is applied to the 'MODULES' symbol. 10 + Mirror this behaviour for the newer "modules" property. 11 + 12 + Fixes: #106 13 + --- 14 + kconfiglib.py | 14 ++++++++++++++ 15 + 1 file changed, 14 insertions(+) 16 + 17 + diff --git a/kconfiglib.py b/kconfiglib.py 18 + index c67895c..ccef123 100644 19 + --- a/kconfiglib.py 20 + +++ b/kconfiglib.py 21 + @@ -3263,6 +3263,20 @@ def _parse_props(self, node): 22 + else: 23 + self._parse_error("unrecognized option") 24 + 25 + + elif t0 is _T_MODULES: 26 + + # 'modules' formerly was 'option modules'. See above for why 27 + + # and when it is ignored. It was changed in 28 + + # linux commit 6dd85ff178cd76851e2184b13e545f5a88d1be30. 29 + + if node.item is not self.modules: 30 + + self._warn("the 'modules' property is not supported. Let " 31 + + "me know if this is a problem for you, as it " 32 + + "wouldn't be that hard to implement. Note that " 33 + + "modules are supported -- Kconfiglib just " 34 + + "assumes the symbol name MODULES, like older " 35 + + "versions of the C implementation did when " 36 + + "'modules' wasn't used.", 37 + + self.filename, self.linenr) 38 + + 39 + elif t0 is _T_OPTIONAL: 40 + if node.item.__class__ is not Choice: 41 + self._parse_error('"optional" is only valid for choices')
+5
pkgs/development/python-modules/kconfiglib/default.nix
··· 14 14 sha256 = "0g690bk789hsry34y4ahvly5c8w8imca90ss4njfqf7m2qicrlmy"; 15 15 }; 16 16 17 + patches = [ 18 + # see https://github.com/ulfalizer/Kconfiglib/pull/119 19 + ./0001-Add-rudimentary-support-for-modules-property.patch 20 + ]; 21 + 17 22 # doesnt work out of the box but might be possible 18 23 doCheck = false; 19 24
+2 -2
pkgs/development/python-modules/pymilvus/default.nix
··· 23 23 24 24 buildPythonPackage rec { 25 25 pname = "pymilvus"; 26 - version = "2.5.9"; 26 + version = "2.5.10"; 27 27 pyproject = true; 28 28 29 29 src = fetchFromGitHub { 30 30 owner = "milvus-io"; 31 31 repo = "pymilvus"; 32 32 tag = "v${version}"; 33 - hash = "sha256-x9qAZay5DoNyfQOpzjfy7/3cyjHwEJiQ441Y+sRyGLw="; 33 + hash = "sha256-gxl9SqqFZusv4V/Xud56iz8lyUfITPPF4g4IUIAzl6U="; 34 34 }; 35 35 36 36 build-system = [
+2671
pkgs/development/python-modules/wokkel/0001-Remove-py2-compat.patch
··· 1 + From 6b3ab4a94e4d498cdabd5aac6b749031abd785c8 Mon Sep 17 00:00:00 2001 2 + From: Ralph Meijer <ralphm@ik.nu> 3 + Date: Thu, 18 Jul 2024 19:04:47 +0200 4 + Subject: [PATCH] Remove py2 compat 5 + 6 + Co-authored-by: OPNA2608 <opna2608@protonmail.com> 7 + --- 8 + setup.py | 11 ++- 9 + wokkel/component.py | 13 ++- 10 + wokkel/data_form.py | 70 ++++++---------- 11 + wokkel/delay.py | 2 +- 12 + wokkel/disco.py | 51 ++++++------ 13 + wokkel/formats.py | 20 ++--- 14 + wokkel/generic.py | 19 +---- 15 + wokkel/iwokkel.py | 150 +++++++++++++++++----------------- 16 + wokkel/muc.py | 67 ++++++++------- 17 + wokkel/pubsub.py | 55 ++++++------- 18 + wokkel/server.py | 17 ++-- 19 + wokkel/shim.py | 5 +- 20 + wokkel/subprotocols.py | 13 ++- 21 + wokkel/test/helpers.py | 5 +- 22 + wokkel/test/test_client.py | 3 +- 23 + wokkel/test/test_data_form.py | 89 +++++--------------- 24 + wokkel/test/test_generic.py | 75 +---------------- 25 + wokkel/test/test_muc.py | 13 ++- 26 + wokkel/test/test_server.py | 6 +- 27 + wokkel/test/test_shim.py | 5 +- 28 + wokkel/test/test_xmppim.py | 19 ++--- 29 + wokkel/xmppim.py | 89 ++++++++++---------- 30 + 22 files changed, 318 insertions(+), 479 deletions(-) 31 + 32 + diff --git a/setup.py b/setup.py 33 + index 8804fd9..f7f1e33 100755 34 + --- a/setup.py 35 + +++ b/setup.py 36 + @@ -40,11 +40,11 @@ setup(name='wokkel', 37 + license='MIT', 38 + platforms='any', 39 + classifiers=[ 40 + - 'Programming Language :: Python :: 2.7', 41 + 'Programming Language :: Python :: 3', 42 + - 'Programming Language :: Python :: 3.4', 43 + - 'Programming Language :: Python :: 3.5', 44 + 'Programming Language :: Python :: 3.6', 45 + + 'Programming Language :: Python :: 3.7', 46 + + 'Programming Language :: Python :: 3.8', 47 + + 'Programming Language :: Python :: 3.9', 48 + ], 49 + packages=[ 50 + 'wokkel', 51 + @@ -60,16 +60,15 @@ setup(name='wokkel', 52 + install_requires=[ 53 + 'incremental>=16.9.0', 54 + 'python-dateutil', 55 + + 'Twisted[tls]>=16.4.0', 56 + ], 57 + extras_require={ 58 + - ":python_version<'3'": 'Twisted[tls]>=15.5.0', 59 + - ":python_version>'3'": 'Twisted[tls]>=16.4.0', 60 + "dev": [ 61 + "pyflakes", 62 + "coverage", 63 + + "pydoctor", 64 + "sphinx", 65 + "towncrier", 66 + ], 67 + - "dev:python_version<'3'": "pydoctor", 68 + }, 69 + ) 70 + diff --git a/wokkel/component.py b/wokkel/component.py 71 + index da48230..9410837 100644 72 + --- a/wokkel/component.py 73 + +++ b/wokkel/component.py 74 + @@ -12,7 +12,6 @@ from __future__ import division, absolute_import 75 + from twisted.application import service 76 + from twisted.internet import reactor 77 + from twisted.python import log 78 + -from twisted.python.compat import unicode 79 + from twisted.words.protocols.jabber.jid import internJID as JID 80 + from twisted.words.protocols.jabber import component, error, xmlstream 81 + from twisted.words.xish import domish 82 + @@ -105,7 +104,7 @@ class InternalComponent(xmlstream.XMPPHandlerCollection, service.Service): 83 + components of this type connect to a router in the same process. This 84 + allows for one-process XMPP servers. 85 + 86 + - @ivar domains: Domains (as L{unicode}) this component will handle traffic 87 + + @ivar domains: Domains (as L{str}) this component will handle traffic 88 + for. 89 + @type domains: L{set} 90 + """ 91 + @@ -177,7 +176,7 @@ class ListenComponentAuthenticator(xmlstream.ListenAuthenticator): 92 + Authenticator for accepting components. 93 + 94 + @ivar secret: The shared used to authorized incoming component connections. 95 + - @type secret: L{unicode}. 96 + + @type secret: L{str}. 97 + """ 98 + 99 + namespace = NS_COMPONENT_ACCEPT 100 + @@ -241,7 +240,7 @@ class ListenComponentAuthenticator(xmlstream.ListenAuthenticator): 101 + L{onHandshake}. 102 + """ 103 + if (element.uri, element.name) == (self.namespace, 'handshake'): 104 + - self.onHandshake(unicode(element)) 105 + + self.onHandshake(str(element)) 106 + else: 107 + exc = error.StreamError('not-authorized') 108 + self.xmlstream.sendStreamError(exc) 109 + @@ -257,7 +256,7 @@ class ListenComponentAuthenticator(xmlstream.ListenAuthenticator): 110 + be exchanged. 111 + """ 112 + calculatedHash = xmlstream.hashPassword(self.xmlstream.sid, 113 + - unicode(self.secret)) 114 + + str(self.secret)) 115 + if handshake != calculatedHash: 116 + exc = error.StreamError('not-authorized', text='Invalid hash') 117 + self.xmlstream.sendStreamError(exc) 118 + @@ -301,7 +300,7 @@ class Router(object): 119 + 120 + @param destination: Destination of the route to be added as a host name 121 + or L{None} for the default route. 122 + - @type destination: L{unicode} or L{NoneType} 123 + + @type destination: L{str} or L{NoneType} 124 + 125 + @param xs: XML Stream to register the route for. 126 + @type xs: 127 + @@ -316,7 +315,7 @@ class Router(object): 128 + Remove a route. 129 + 130 + @param destination: Destination of the route that should be removed. 131 + - @type destination: L{unicode} 132 + + @type destination: L{str} 133 + 134 + @param xs: XML Stream to remove the route for. 135 + @type xs: 136 + diff --git a/wokkel/data_form.py b/wokkel/data_form.py 137 + index ed9c5fc..7f1c34c 100644 138 + --- a/wokkel/data_form.py 139 + +++ b/wokkel/data_form.py 140 + @@ -17,7 +17,6 @@ from __future__ import division, absolute_import 141 + from zope.interface import implementer 142 + from zope.interface.common import mapping 143 + 144 + -from twisted.python.compat import iteritems, unicode, _PY3 145 + from twisted.words.protocols.jabber.jid import JID 146 + from twisted.words.xish import domish 147 + 148 + @@ -51,9 +50,9 @@ class Option(object): 149 + Data Forms field option. 150 + 151 + @ivar value: Value of this option. 152 + - @type value: L{unicode} 153 + + @type value: L{str} 154 + @ivar label: Optional label for this option. 155 + - @type label: L{unicode} or L{NoneType} 156 + + @type label: L{str} or L{NoneType} 157 + """ 158 + 159 + def __init__(self, value, label=None): 160 + @@ -91,7 +90,7 @@ class Option(object): 161 + raise Error("Option has no value") 162 + 163 + label = element.getAttribute('label') 164 + - return Option(unicode(valueElements[0]), label) 165 + + return Option(str(valueElements[0]), label) 166 + 167 + 168 + class Field(object): 169 + @@ -108,15 +107,15 @@ class Field(object): 170 + @ivar var: Field name. Optional if C{fieldType} is C{'fixed'}. 171 + @type var: L{str} 172 + @ivar label: Human readable label for this field. 173 + - @type label: L{unicode} 174 + + @type label: L{str} 175 + @ivar values: The values for this field, for multi-valued field 176 + - types, as a list of L{bool}, L{unicode} or L{JID}. 177 + + types, as a list of L{bool}, L{str} or L{JID}. 178 + @type values: L{list} 179 + @ivar options: List of possible values to choose from in a response 180 + to this form as a list of L{Option}s. 181 + @type options: L{list} 182 + @ivar desc: Human readable description for this field. 183 + - @type desc: L{unicode} 184 + + @type desc: L{str} 185 + @ivar required: Whether the field is required to be provided in a 186 + response to this form. 187 + @type required: L{bool} 188 + @@ -147,7 +146,7 @@ class Field(object): 189 + try: 190 + self.options = [Option(optionValue, optionLabel) 191 + for optionValue, optionLabel 192 + - in iteritems(options)] 193 + + in options.items()] 194 + except AttributeError: 195 + self.options = options or [] 196 + 197 + @@ -185,7 +184,7 @@ class Field(object): 198 + 199 + Sets C{value} as the only element of L{values}. 200 + 201 + - @type value: L{bool}, L{unicode} or L{JID} 202 + + @type value: L{bool}, L{str} or L{JID} 203 + """ 204 + self.values = [value] 205 + 206 + @@ -229,7 +228,7 @@ class Field(object): 207 + newValues = [] 208 + for value in self.values: 209 + if self.fieldType == 'boolean': 210 + - if isinstance(value, (str, unicode)): 211 + + if isinstance(value, str): 212 + checkValue = value.lower() 213 + if not checkValue in ('0', '1', 'false', 'true'): 214 + raise ValueError("Not a boolean") 215 + @@ -263,9 +262,9 @@ class Field(object): 216 + 217 + for value in self.values: 218 + if isinstance(value, bool): 219 + - value = unicode(value).lower() 220 + + value = str(value).lower() 221 + else: 222 + - value = unicode(value) 223 + + value = str(value) 224 + 225 + field.addElement('value', content=value) 226 + 227 + @@ -288,7 +287,7 @@ class Field(object): 228 + 229 + @staticmethod 230 + def _parse_desc(field, element): 231 + - desc = unicode(element) 232 + + desc = str(element) 233 + if desc: 234 + field.desc = desc 235 + 236 + @@ -305,7 +304,7 @@ class Field(object): 237 + 238 + @staticmethod 239 + def _parse_value(field, element): 240 + - value = unicode(element) 241 + + value = str(element) 242 + field.values.append(value) 243 + 244 + 245 + @@ -313,9 +312,9 @@ class Field(object): 246 + def fromElement(element): 247 + field = Field(None) 248 + 249 + - for eAttr, fAttr in iteritems({'type': 'fieldType', 250 + - 'var': 'var', 251 + - 'label': 'label'}): 252 + + for eAttr, fAttr in {'type': 'fieldType', 253 + + 'var': 'var', 254 + + 'label': 'label'}.items(): 255 + value = element.getAttribute(eAttr) 256 + if value: 257 + setattr(field, fAttr, value) 258 + @@ -350,7 +349,7 @@ class Field(object): 259 + 260 + if 'options' in fieldDict: 261 + options = [] 262 + - for value, label in iteritems(fieldDict['options']): 263 + + for value, label in fieldDict['options'].items(): 264 + options.append(Option(value, label)) 265 + kwargs['options'] = options 266 + 267 + @@ -385,9 +384,9 @@ class Form(object): 268 + @type formType: L{str} 269 + 270 + @ivar title: Natural language title of the form. 271 + - @type title: L{unicode} 272 + + @type title: L{str} 273 + 274 + - @ivar instructions: Natural language instructions as a list of L{unicode} 275 + + @ivar instructions: Natural language instructions as a list of L{str} 276 + strings without line breaks. 277 + @type instructions: L{list} 278 + 279 + @@ -497,7 +496,7 @@ class Form(object): 280 + C{fieldDefs}. 281 + @type filterUnknown: L{bool} 282 + """ 283 + - for name, value in iteritems(values): 284 + + for name, value in values.items(): 285 + fieldDict = {'var': name, 286 + 'type': None} 287 + 288 + @@ -542,14 +541,14 @@ class Form(object): 289 + 290 + @staticmethod 291 + def _parse_title(form, element): 292 + - title = unicode(element) 293 + + title = str(element) 294 + if title: 295 + form.title = title 296 + 297 + 298 + @staticmethod 299 + def _parse_instructions(form, element): 300 + - instructions = unicode(element) 301 + + instructions = str(element) 302 + if instructions: 303 + form.instructions.append(instructions) 304 + 305 + @@ -624,36 +623,19 @@ class Form(object): 306 + return key in self.fields 307 + 308 + 309 + - def iterkeys(self): 310 + + def keys(self): 311 + return iter(self) 312 + 313 + 314 + - def itervalues(self): 315 + + def values(self): 316 + for key in self: 317 + yield self[key] 318 + 319 + 320 + - def iteritems(self): 321 + + def items(self): 322 + for key in self: 323 + yield (key, self[key]) 324 + 325 + - if _PY3: 326 + - keys = iterkeys 327 + - values = itervalues 328 + - items = iteritems 329 + - else: 330 + - def keys(self): 331 + - return list(self) 332 + - 333 + - 334 + - def values(self): 335 + - return list(self.itervalues()) 336 + - 337 + - 338 + - def items(self): 339 + - return list(self.iteritems()) 340 + - 341 + - 342 + def getValues(self): 343 + """ 344 + Extract values from the named form fields. 345 + @@ -701,7 +683,7 @@ class Form(object): 346 + 347 + filtered = [] 348 + 349 + - for name, field in iteritems(self.fields): 350 + + for name, field in self.fields.items(): 351 + if name in fieldDefs: 352 + fieldDef = fieldDefs[name] 353 + if 'type' not in fieldDef: 354 + diff --git a/wokkel/delay.py b/wokkel/delay.py 355 + index be06cb3..1dd1703 100644 356 + --- a/wokkel/delay.py 357 + +++ b/wokkel/delay.py 358 + @@ -46,7 +46,7 @@ class Delay(object): 359 + Render this instance into a domish Element. 360 + 361 + @param legacy: If C{True}, use the legacy XEP-0091 format. 362 + - @type legacy: C{bool} 363 + + @type legacy: L{bool} 364 + """ 365 + if not self.stamp: 366 + raise ValueError("stamp is required") 367 + diff --git a/wokkel/disco.py b/wokkel/disco.py 368 + index 9ea43ef..227789d 100644 369 + --- a/wokkel/disco.py 370 + +++ b/wokkel/disco.py 371 + @@ -13,7 +13,6 @@ U{XEP-0030<http://xmpp.org/extensions/xep-0030.html>}. 372 + from __future__ import division, absolute_import 373 + 374 + from twisted.internet import defer 375 + -from twisted.python.compat import iteritems, unicode 376 + from twisted.words.protocols.jabber import error, jid 377 + from twisted.words.xish import domish 378 + 379 + @@ -29,11 +28,11 @@ IQ_GET = '/iq[@type="get"]' 380 + DISCO_INFO = IQ_GET + '/query[@xmlns="' + NS_DISCO_INFO + '"]' 381 + DISCO_ITEMS = IQ_GET + '/query[@xmlns="' + NS_DISCO_ITEMS + '"]' 382 + 383 + -class DiscoFeature(unicode): 384 + +class DiscoFeature(str): 385 + """ 386 + XMPP service discovery feature. 387 + 388 + - This extends C{unicode} to convert to and from L{domish.Element}, but 389 + + This extends L{str} to convert to and from L{domish.Element}, but 390 + further behaves identically. 391 + """ 392 + 393 + @@ -44,7 +43,7 @@ class DiscoFeature(unicode): 394 + @rtype: L{domish.Element}. 395 + """ 396 + element = domish.Element((NS_DISCO_INFO, 'feature')) 397 + - element['var'] = unicode(self) 398 + + element['var'] = str(self) 399 + return element 400 + 401 + 402 + @@ -68,11 +67,11 @@ class DiscoIdentity(object): 403 + XMPP service discovery identity. 404 + 405 + @ivar category: The identity category. 406 + - @type category: C{unicode} 407 + + @type category: L{str} 408 + @ivar type: The identity type. 409 + - @type type: C{unicode} 410 + + @type type: L{str} 411 + @ivar name: The optional natural language name for this entity. 412 + - @type name: C{unicode} 413 + + @type name: L{str} 414 + """ 415 + 416 + def __init__(self, category, idType, name=None): 417 + @@ -119,21 +118,21 @@ class DiscoInfo(object): 418 + XMPP service discovery info. 419 + 420 + @ivar nodeIdentifier: The optional node this info applies to. 421 + - @type nodeIdentifier: C{unicode} 422 + + @type nodeIdentifier: L{str} 423 + @ivar features: Features as L{DiscoFeature}. 424 + - @type features: C{set} 425 + + @type features: L{set} 426 + @ivar identities: Identities as a mapping from (category, type) to name, 427 + - all C{unicode}. 428 + - @type identities: C{dict} 429 + + all L{str}. 430 + + @type identities: L{dict} 431 + @ivar extensions: Service discovery extensions as a mapping from the 432 + - extension form's C{FORM_TYPE} (C{unicode}) to 433 + + extension form's C{FORM_TYPE} (L{str}) to 434 + L{data_form.Form}. Forms with no C{FORM_TYPE} field 435 + are mapped as C{None}. Note that multiple forms 436 + with the same C{FORM_TYPE} have the last in sequence 437 + prevail. 438 + - @type extensions: C{dict} 439 + + @type extensions: L{dict} 440 + @ivar _items: Sequence of added items. 441 + - @type _items: C{list} 442 + + @type _items: L{list} 443 + """ 444 + 445 + def __init__(self): 446 + @@ -226,9 +225,9 @@ class DiscoItem(object): 447 + @ivar entity: The entity holding the item. 448 + @type entity: L{jid.JID} 449 + @ivar nodeIdentifier: The optional node identifier for the item. 450 + - @type nodeIdentifier: C{unicode} 451 + + @type nodeIdentifier: L{str} 452 + @ivar name: The optional natural language name for this entity. 453 + - @type name: C{unicode} 454 + + @type name: L{str} 455 + """ 456 + 457 + def __init__(self, entity, nodeIdentifier='', name=None): 458 + @@ -278,9 +277,9 @@ class DiscoItems(object): 459 + XMPP service discovery items. 460 + 461 + @ivar nodeIdentifier: The optional node this info applies to. 462 + - @type nodeIdentifier: C{unicode} 463 + + @type nodeIdentifier: L{str} 464 + @ivar _items: Sequence of added items. 465 + - @type _items: C{list} 466 + + @type _items: L{list} 467 + """ 468 + 469 + def __init__(self): 470 + @@ -353,9 +352,9 @@ class _DiscoRequest(generic.Request): 471 + A Service Discovery request. 472 + 473 + @ivar verb: Type of request: C{'info'} or C{'items'}. 474 + - @type verb: C{str} 475 + + @type verb: L{str} 476 + @ivar nodeIdentifier: Optional node to request info for. 477 + - @type nodeIdentifier: C{unicode} 478 + + @type nodeIdentifier: L{str} 479 + """ 480 + 481 + verb = None 482 + @@ -366,7 +365,7 @@ class _DiscoRequest(generic.Request): 483 + NS_DISCO_ITEMS: 'items', 484 + } 485 + 486 + - _verbRequestMap = dict(((v, k) for k, v in iteritems(_requestVerbMap))) 487 + + _verbRequestMap = dict(((v, k) for k, v in _requestVerbMap.items())) 488 + 489 + def __init__(self, verb=None, nodeIdentifier='', 490 + recipient=None, sender=None): 491 + @@ -415,7 +414,7 @@ class DiscoClientProtocol(XMPPHandler): 492 + @type entity: L{jid.JID} 493 + 494 + @param nodeIdentifier: Optional node to request info from. 495 + - @type nodeIdentifier: C{unicode} 496 + + @type nodeIdentifier: L{str} 497 + 498 + @param sender: Optional sender address. 499 + @type sender: L{jid.JID} 500 + @@ -438,7 +437,7 @@ class DiscoClientProtocol(XMPPHandler): 501 + @type entity: L{jid.JID} 502 + 503 + @param nodeIdentifier: Optional node to request info from. 504 + - @type nodeIdentifier: C{unicode} 505 + + @type nodeIdentifier: L{str} 506 + 507 + @param sender: Optional sender address. 508 + @type sender: L{jid.JID} 509 + @@ -534,7 +533,7 @@ class DiscoHandler(XMPPHandler, IQHandlerMixin): 510 + 511 + @param deferredList: List of deferreds for which the results should be 512 + gathered. 513 + - @type deferredList: C{list} 514 + + @type deferredList: L{list} 515 + @return: Deferred that fires with a list of gathered results. 516 + @rtype: L{defer.Deferred} 517 + """ 518 + @@ -566,7 +565,7 @@ class DiscoHandler(XMPPHandler, IQHandlerMixin): 519 + @param target: The entity the request was sent to. 520 + @type target: L{JID<twisted.words.protocols.jabber.jid.JID>} 521 + @param nodeIdentifier: The optional node being queried, or C{''}. 522 + - @type nodeIdentifier: C{unicode} 523 + + @type nodeIdentifier: L{str} 524 + @return: Deferred with the gathered results from sibling handlers. 525 + @rtype: L{defer.Deferred} 526 + """ 527 + @@ -589,7 +588,7 @@ class DiscoHandler(XMPPHandler, IQHandlerMixin): 528 + @param target: The entity the request was sent to. 529 + @type target: L{JID<twisted.words.protocols.jabber.jid.JID>} 530 + @param nodeIdentifier: The optional node being queried, or C{''}. 531 + - @type nodeIdentifier: C{unicode} 532 + + @type nodeIdentifier: L{str} 533 + @return: Deferred with the gathered results from sibling handlers. 534 + @rtype: L{defer.Deferred} 535 + """ 536 + diff --git a/wokkel/formats.py b/wokkel/formats.py 537 + index 0eb0be6..972cc7e 100644 538 + --- a/wokkel/formats.py 539 + +++ b/wokkel/formats.py 540 + @@ -9,8 +9,6 @@ Generic payload formats. 541 + 542 + from __future__ import division, absolute_import 543 + 544 + -from twisted.python.compat import unicode 545 + - 546 + NS_MOOD = 'http://jabber.org/protocol/mood' 547 + NS_TUNE = 'http://jabber.org/protocol/tune' 548 + 549 + @@ -55,7 +53,7 @@ class Mood: 550 + continue 551 + 552 + if child.name == 'text': 553 + - text = unicode(child) 554 + + text = str(child) 555 + else: 556 + value = child.name 557 + 558 + @@ -76,19 +74,19 @@ class Tune: 559 + U{XEP-0118<http://xmpp.org/extensions/xep-0118.html>}. 560 + 561 + @ivar artist: The artist or performer of the song or piece. 562 + - @type artist: C{unicode} 563 + + @type artist: L{str} 564 + @ivar length: The duration of the song or piece in seconds. 565 + - @type length: C{int} 566 + + @type length: L{int} 567 + @ivar source: The collection (e.g. album) or other source. 568 + - @type source: C{unicode} 569 + + @type source: L{str} 570 + @ivar title: The title of the song or piece 571 + - @type title: C{unicode} 572 + + @type title: L{str} 573 + @ivar track: A unique identifier for the tune; e.g. the track number within 574 + the collection or the specific URI for the object. 575 + - @type track: C{unicode} 576 + + @type track: L{str} 577 + @ivar uri: A URI pointing to information about the song, collection, or 578 + artist. 579 + - @type uri: C{str} 580 + + @type uri: L{str} 581 + 582 + """ 583 + 584 + @@ -122,10 +120,10 @@ class Tune: 585 + continue 586 + 587 + if child.name in ('artist', 'source', 'title', 'track', 'uri'): 588 + - setattr(tune, child.name, unicode(child)) 589 + + setattr(tune, child.name, str(child)) 590 + elif child.name == 'length': 591 + try: 592 + - tune.length = int(unicode(child)) 593 + + tune.length = int(str(child)) 594 + except ValueError: 595 + pass 596 + 597 + diff --git a/wokkel/generic.py b/wokkel/generic.py 598 + index 2e975f6..becff8f 100644 599 + --- a/wokkel/generic.py 600 + +++ b/wokkel/generic.py 601 + @@ -13,14 +13,11 @@ from zope.interface import implementer 602 + 603 + from twisted.internet import defer, protocol 604 + from twisted.python import reflect 605 + -from twisted.python.deprecate import deprecated 606 + from twisted.words.protocols.jabber import error, jid, xmlstream 607 + from twisted.words.protocols.jabber.xmlstream import toResponse 608 + from twisted.words.xish import domish, utility 609 + from twisted.words.xish.xmlstream import BootstrapMixin 610 + 611 + -from incremental import Version 612 + - 613 + from wokkel.iwokkel import IDisco 614 + from wokkel.subprotocols import XMPPHandler 615 + 616 + @@ -35,7 +32,7 @@ def parseXml(string): 617 + Parse serialized XML into a DOM structure. 618 + 619 + @param string: The serialized XML to be parsed, UTF-8 encoded. 620 + - @type string: C{str}. 621 + + @type string: L{str}. 622 + @return: The DOM structure, or C{None} on empty or incomplete input. 623 + @rtype: L{domish.Element} 624 + """ 625 + @@ -332,17 +329,3 @@ class DeferredXmlStreamFactory(BootstrapMixin, protocol.ClientFactory): 626 + 627 + def clientConnectionFailed(self, connector, reason): 628 + self.deferred.errback(reason) 629 + - 630 + - 631 + - 632 + -@deprecated(Version("wokkel", 18, 0, 0), "unicode.encode('idna')") 633 + -def prepareIDNName(name): 634 + - """ 635 + - Encode a unicode IDN Domain Name into its ACE equivalent. 636 + - 637 + - This will encode the domain labels, separated by allowed dot code points, 638 + - to their ASCII Compatible Encoding (ACE) equivalent, using punycode. The 639 + - result is an ASCII byte string of the encoded labels, separated by the 640 + - standard full stop. 641 + - """ 642 + - return name.encode('idna') 643 + diff --git a/wokkel/iwokkel.py b/wokkel/iwokkel.py 644 + index 30a1057..35383b5 100644 645 + --- a/wokkel/iwokkel.py 646 + +++ b/wokkel/iwokkel.py 647 + @@ -46,7 +46,7 @@ class IDisco(Interface): 648 + @param nodeIdentifier: The optional identifier of the node at this 649 + entity to retrieve the identify and features of. The default is 650 + C{''}, meaning the root node. 651 + - @type nodeIdentifier: C{unicode} 652 + + @type nodeIdentifier: L{str} 653 + """ 654 + 655 + def getDiscoItems(requestor, target, nodeIdentifier=''): 656 + @@ -60,7 +60,7 @@ class IDisco(Interface): 657 + @param nodeIdentifier: The optional identifier of the node at this 658 + entity to retrieve the identify and features of. 659 + The default is C{''}, meaning the root node. 660 + - @type nodeIdentifier: C{unicode} 661 + + @type nodeIdentifier: L{str} 662 + """ 663 + 664 + 665 + @@ -109,7 +109,7 @@ class IPubSubClient(Interface): 666 + @param nodeIdentifier: Optional suggestion for the new node's 667 + identifier. If omitted, the creation of an 668 + instant node will be attempted. 669 + - @type nodeIdentifier: C{unicode} 670 + + @type nodeIdentifier: L{str} 671 + @return: a deferred that fires with the identifier of the newly created 672 + node. Note that this can differ from the suggested identifier 673 + if the publish subscribe service chooses to modify or ignore 674 + @@ -124,7 +124,7 @@ class IPubSubClient(Interface): 675 + @param service: The publish-subscribe service entity. 676 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 677 + @param nodeIdentifier: Identifier of the node to be deleted. 678 + - @type nodeIdentifier: C{unicode} 679 + + @type nodeIdentifier: L{str} 680 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 681 + """ 682 + 683 + @@ -135,7 +135,7 @@ class IPubSubClient(Interface): 684 + @param service: The publish-subscribe service entity. 685 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 686 + @param nodeIdentifier: Identifier of the node to subscribe to. 687 + - @type nodeIdentifier: C{unicode} 688 + + @type nodeIdentifier: L{str} 689 + @param subscriber: JID to subscribe to the node. 690 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 691 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 692 + @@ -148,7 +148,7 @@ class IPubSubClient(Interface): 693 + @param service: The publish-subscribe service entity. 694 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 695 + @param nodeIdentifier: Identifier of the node to unsubscribe from. 696 + - @type nodeIdentifier: C{unicode} 697 + + @type nodeIdentifier: L{str} 698 + @param subscriber: JID to unsubscribe from the node. 699 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 700 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 701 + @@ -165,9 +165,9 @@ class IPubSubClient(Interface): 702 + @param service: The publish-subscribe service entity. 703 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 704 + @param nodeIdentifier: Identifier of the node to publish to. 705 + - @type nodeIdentifier: C{unicode} 706 + + @type nodeIdentifier: L{str} 707 + @param items: List of item elements. 708 + - @type items: C{list} of L{Item} 709 + + @type items: L{list} of L{Item} 710 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 711 + """ 712 + 713 + @@ -191,12 +191,12 @@ class IPubSubService(Interface): 714 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 715 + @param nodeIdentifier: The identifier of the node that was published 716 + to. 717 + - @type nodeIdentifier: C{unicode} 718 + + @type nodeIdentifier: L{str} 719 + @param notifications: The notifications as tuples of subscriber, the 720 + list of subscriptions and the list of items to be notified. 721 + - @type notifications: C{list} of 722 + - (L{JID<twisted.words.protocols.jabber.jid.JID>}, C{list} of 723 + - L{Subscription<wokkel.pubsub.Subscription>}, C{list} of 724 + + @type notifications: L{list} of 725 + + (L{JID<twisted.words.protocols.jabber.jid.JID>}, L{list} of 726 + + L{Subscription<wokkel.pubsub.Subscription>}, L{list} of 727 + L{Element<twisted.words.xish.domish.Element>}) 728 + """ 729 + 730 + @@ -209,14 +209,14 @@ class IPubSubService(Interface): 731 + @param service: The entity the notifications will originate from. 732 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 733 + @param nodeIdentifier: The identifier of the node that was deleted. 734 + - @type nodeIdentifier: C{unicode} 735 + + @type nodeIdentifier: L{str} 736 + @param subscribers: The subscribers for which a notification should be 737 + sent out. 738 + - @type subscribers: C{list} of 739 + + @type subscribers: L{list} of 740 + L{JID<twisted.words.protocols.jabber.jid.JID>} 741 + @param redirectURI: Optional XMPP URI of another node that subscribers 742 + are redirected to. 743 + - @type redirectURI: C{str} 744 + + @type redirectURI: L{str} 745 + """ 746 + 747 + def publish(requestor, service, nodeIdentifier, items): 748 + @@ -228,9 +228,9 @@ class IPubSubService(Interface): 749 + @param service: The entity the request was addressed to. 750 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 751 + @param nodeIdentifier: The identifier of the node to publish to. 752 + - @type nodeIdentifier: C{unicode} 753 + + @type nodeIdentifier: L{str} 754 + @param items: The items to be published as elements. 755 + - @type items: C{list} of C{Element<twisted.words.xish.domish.Element>} 756 + + @type items: L{list} of C{Element<twisted.words.xish.domish.Element>} 757 + @return: deferred that fires on success. 758 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 759 + """ 760 + @@ -244,7 +244,7 @@ class IPubSubService(Interface): 761 + @param service: The entity the request was addressed to. 762 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 763 + @param nodeIdentifier: The identifier of the node to subscribe to. 764 + - @type nodeIdentifier: C{unicode} 765 + + @type nodeIdentifier: L{str} 766 + @param subscriber: The entity to be subscribed. 767 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 768 + @return: A deferred that fires with a 769 + @@ -261,7 +261,7 @@ class IPubSubService(Interface): 770 + @param service: The entity the request was addressed to. 771 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 772 + @param nodeIdentifier: The identifier of the node to unsubscribe from. 773 + - @type nodeIdentifier: C{unicode} 774 + + @type nodeIdentifier: L{str} 775 + @param subscriber: The entity to be unsubscribed. 776 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 777 + @return: A deferred that fires with C{None} when unsubscription has 778 + @@ -277,7 +277,7 @@ class IPubSubService(Interface): 779 + @type requestor: L{JID<twisted.words.protocols.jabber.jid.JID>} 780 + @param service: The entity the request was addressed to. 781 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 782 + - @return: A deferred that fires with a C{list} of subscriptions as 783 + + @return: A deferred that fires with a L{list} of subscriptions as 784 + L{Subscription<wokkel.pubsub.Subscription>}. 785 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 786 + """ 787 + @@ -290,9 +290,9 @@ class IPubSubService(Interface): 788 + @type requestor: L{JID<twisted.words.protocols.jabber.jid.JID>} 789 + @param service: The entity the request was addressed to. 790 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 791 + - @return: A deferred that fires with a C{list} of affiliations as 792 + - C{tuple}s of (node identifier as C{unicode}, affiliation state as 793 + - C{str}). The affiliation can be C{'owner'}, C{'publisher'}, or 794 + + @return: A deferred that fires with a L{list} of affiliations as 795 + + C{tuple}s of (node identifier as L{str}, affiliation state as 796 + + L{str}). The affiliation can be C{'owner'}, C{'publisher'}, or 797 + C{'outcast'}. 798 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 799 + """ 800 + @@ -308,8 +308,8 @@ class IPubSubService(Interface): 801 + @param nodeIdentifier: The suggestion for the identifier of the node 802 + to be created. If the request did not include a suggestion for the 803 + node identifier, the value is C{None}. 804 + - @type nodeIdentifier: C{unicode} or C{NoneType} 805 + - @return: A deferred that fires with a C{unicode} that represents 806 + + @type nodeIdentifier: L{str} or C{NoneType} 807 + + @return: A deferred that fires with a L{str} that represents 808 + the identifier of the new node. 809 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 810 + """ 811 + @@ -322,10 +322,10 @@ class IPubSubService(Interface): 812 + by option name. The value of each entry represents the specifics for 813 + that option in a dictionary: 814 + 815 + - - C{'type'} (C{str}): The option's type (see 816 + + - C{'type'} (L{str}): The option's type (see 817 + L{Field<wokkel.data_form.Field>}'s doc string for possible values). 818 + - - C{'label'} (C{unicode}): A human readable label for this option. 819 + - - C{'options'} (C{dict}): Optional list of possible values for this 820 + + - C{'label'} (L{str}): A human readable label for this option. 821 + + - C{'options'} (L{dict}): Optional list of possible values for this 822 + option. 823 + 824 + Example:: 825 + @@ -346,7 +346,7 @@ class IPubSubService(Interface): 826 + } 827 + } 828 + 829 + - @rtype: C{dict}. 830 + + @rtype: L{dict}. 831 + """ 832 + 833 + def getDefaultConfiguration(requestor, service, nodeType): 834 + @@ -359,11 +359,11 @@ class IPubSubService(Interface): 835 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 836 + @param nodeType: The type of node for which the configuration is 837 + retrieved, C{'leaf'} or C{'collection'}. 838 + - @type nodeType: C{str} 839 + - @return: A deferred that fires with a C{dict} representing the default 840 + - node configuration. Keys are C{str}s that represent the 841 + - field name. Values can be of types C{unicode}, C{int} or 842 + - C{bool}. 843 + + @type nodeType: L{str} 844 + + @return: A deferred that fires with a L{dict} representing the default 845 + + node configuration. Keys are L{str}s that represent the 846 + + field name. Values can be of types L{str}, L{int} or 847 + + L{bool}. 848 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 849 + """ 850 + 851 + @@ -377,10 +377,10 @@ class IPubSubService(Interface): 852 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 853 + @param nodeIdentifier: The identifier of the node to retrieve the 854 + configuration from. 855 + - @type nodeIdentifier: C{unicode} 856 + - @return: A deferred that fires with a C{dict} representing the node 857 + - configuration. Keys are C{str}s that represent the field name. 858 + - Values can be of types C{unicode}, C{int} or C{bool}. 859 + + @type nodeIdentifier: L{str} 860 + + @return: A deferred that fires with a L{dict} representing the node 861 + + configuration. Keys are L{str}s that represent the field name. 862 + + Values can be of types L{str}, L{int} or L{bool}. 863 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 864 + """ 865 + 866 + @@ -394,7 +394,7 @@ class IPubSubService(Interface): 867 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 868 + @param nodeIdentifier: The identifier of the node to change the 869 + configuration of. 870 + - @type nodeIdentifier: C{unicode} 871 + + @type nodeIdentifier: L{str} 872 + @return: A deferred that fires with C{None} when the node's 873 + configuration has been changed. 874 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 875 + @@ -410,7 +410,7 @@ class IPubSubService(Interface): 876 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 877 + @param nodeIdentifier: The identifier of the node to retrieve items 878 + from. 879 + - @type nodeIdentifier: C{unicode} 880 + + @type nodeIdentifier: L{str} 881 + """ 882 + 883 + def retract(requestor, service, nodeIdentifier, itemIdentifiers): 884 + @@ -423,7 +423,7 @@ class IPubSubService(Interface): 885 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 886 + @param nodeIdentifier: The identifier of the node to retract items 887 + from. 888 + - @type nodeIdentifier: C{unicode} 889 + + @type nodeIdentifier: L{str} 890 + """ 891 + 892 + def purge(requestor, service, nodeIdentifier): 893 + @@ -435,7 +435,7 @@ class IPubSubService(Interface): 894 + @param service: The entity the request was addressed to. 895 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 896 + @param nodeIdentifier: The identifier of the node to be purged. 897 + - @type nodeIdentifier: C{unicode} 898 + + @type nodeIdentifier: L{str} 899 + """ 900 + 901 + def delete(requestor, service, nodeIdentifier): 902 + @@ -447,7 +447,7 @@ class IPubSubService(Interface): 903 + @param service: The entity the request was addressed to. 904 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 905 + @param nodeIdentifier: The identifier of the node to be delete. 906 + - @type nodeIdentifier: C{unicode} 907 + + @type nodeIdentifier: L{str} 908 + """ 909 + 910 + 911 + @@ -472,7 +472,7 @@ class IPubSubResource(Interface): 912 + @param service: The publish-subscribe service entity. 913 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 914 + @param nodeIdentifier: Identifier of the node to request the info for. 915 + - @type nodeIdentifier: C{unicode} 916 + + @type nodeIdentifier: L{str} 917 + @return: A deferred that fires with a dictionary. If not empty, 918 + it must have the keys C{'type'} and C{'meta-data'} to keep 919 + respectively the node type and a dictionary with the meta 920 + @@ -491,7 +491,7 @@ class IPubSubResource(Interface): 921 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 922 + @param nodeIdentifier: Identifier of the node to request the childs 923 + for. 924 + - @type nodeIdentifier: C{unicode} 925 + + @type nodeIdentifier: L{str} 926 + @return: A deferred that fires with a list of child node identifiers. 927 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 928 + """ 929 + @@ -505,10 +505,10 @@ class IPubSubResource(Interface): 930 + by option name. The value of each entry represents the specifics for 931 + that option in a dictionary: 932 + 933 + - - C{'type'} (C{str}): The option's type (see 934 + + - C{'type'} (L{str}): The option's type (see 935 + L{Field<wokkel.data_form.Field>}'s doc string for possible values). 936 + - - C{'label'} (C{unicode}): A human readable label for this option. 937 + - - C{'options'} (C{dict}): Optional list of possible values for this 938 + + - C{'label'} (L{str}): A human readable label for this option. 939 + + - C{'options'} (L{dict}): Optional list of possible values for this 940 + option. 941 + 942 + Example:: 943 + @@ -529,7 +529,7 @@ class IPubSubResource(Interface): 944 + } 945 + } 946 + 947 + - @rtype: C{dict}. 948 + + @rtype: L{dict}. 949 + """ 950 + 951 + 952 + @@ -574,7 +574,7 @@ class IPubSubResource(Interface): 953 + 954 + @param request: The publish-subscribe request. 955 + @type request: L{wokkel.pubsub.PubSubRequest} 956 + - @return: A deferred that fires with a C{list} of subscriptions as 957 + + @return: A deferred that fires with a L{list} of subscriptions as 958 + L{Subscription<wokkel.pubsub.Subscription>}. 959 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 960 + """ 961 + @@ -586,9 +586,9 @@ class IPubSubResource(Interface): 962 + 963 + @param request: The publish-subscribe request. 964 + @type request: L{wokkel.pubsub.PubSubRequest} 965 + - @return: A deferred that fires with a C{list} of affiliations as 966 + - C{tuple}s of (node identifier as C{unicode}, affiliation state as 967 + - C{str}). The affiliation can be C{'owner'}, C{'publisher'}, or 968 + + @return: A deferred that fires with a L{list} of affiliations as 969 + + C{tuple}s of (node identifier as L{str}, affiliation state as 970 + + L{str}). The affiliation can be C{'owner'}, C{'publisher'}, or 971 + C{'outcast'}. 972 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 973 + """ 974 + @@ -600,7 +600,7 @@ class IPubSubResource(Interface): 975 + 976 + @param request: The publish-subscribe request. 977 + @type request: L{wokkel.pubsub.PubSubRequest} 978 + - @return: A deferred that fires with a C{unicode} that represents 979 + + @return: A deferred that fires with a L{str} that represents 980 + the identifier of the new node. 981 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 982 + """ 983 + @@ -612,10 +612,10 @@ class IPubSubResource(Interface): 984 + 985 + @param request: The publish-subscribe request. 986 + @type request: L{wokkel.pubsub.PubSubRequest} 987 + - @return: A deferred that fires with a C{dict} representing the default 988 + - node configuration. Keys are C{str}s that represent the 989 + - field name. Values can be of types C{unicode}, C{int} or 990 + - C{bool}. 991 + + @return: A deferred that fires with a L{dict} representing the default 992 + + node configuration. Keys are L{str}s that represent the 993 + + field name. Values can be of types L{str}, L{int} or 994 + + L{bool}. 995 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 996 + """ 997 + 998 + @@ -626,9 +626,9 @@ class IPubSubResource(Interface): 999 + 1000 + @param request: The publish-subscribe request. 1001 + @type request: L{wokkel.pubsub.PubSubRequest} 1002 + - @return: A deferred that fires with a C{dict} representing the node 1003 + - configuration. Keys are C{str}s that represent the field name. 1004 + - Values can be of types C{unicode}, C{int} or C{bool}. 1005 + + @return: A deferred that fires with a L{dict} representing the node 1006 + + configuration. Keys are L{str}s that represent the field name. 1007 + + Values can be of types L{str}, L{int} or L{bool}. 1008 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 1009 + """ 1010 + 1011 + @@ -651,7 +651,7 @@ class IPubSubResource(Interface): 1012 + 1013 + @param request: The publish-subscribe request. 1014 + @type request: L{wokkel.pubsub.PubSubRequest} 1015 + - @return: A deferred that fires with a C{list} of L{pubsub.Item}. 1016 + + @return: A deferred that fires with a L{list} of L{pubsub.Item}. 1017 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 1018 + """ 1019 + 1020 + @@ -698,9 +698,9 @@ class IPubSubResource(Interface): 1021 + 1022 + @param request: The publish-subscribe request. 1023 + @type request: L{wokkel.pubsub.PubSubRequest} 1024 + - @return: A deferred that fires with a C{dict} of affiliations with the 1025 + + @return: A deferred that fires with a L{dict} of affiliations with the 1026 + entity as key (L{JID<twisted.words.protocols.jabber.jid.JID>}) and 1027 + - the affiliation state as value (C{unicode}). The affiliation can 1028 + + the affiliation state as value (L{str}). The affiliation can 1029 + be C{u'owner'}, C{u'publisher'}, or C{u'outcast'}. 1030 + @rtype: L{Deferred<twisted.internet.defer.Deferred>} 1031 + 1032 + @@ -748,7 +748,7 @@ class IMUCClient(Interface): 1033 + @type user: L{muc.User} 1034 + 1035 + @param subject: The subject of the given room. 1036 + - @type subject: C{unicode} 1037 + + @type subject: L{str} 1038 + """ 1039 + 1040 + 1041 + @@ -769,7 +769,7 @@ class IMUCClient(Interface): 1042 + 1043 + @param options: A mapping of field names to values, or C{None} to 1044 + cancel. 1045 + - @type options: C{dict} 1046 + + @type options: L{dict} 1047 + """ 1048 + 1049 + 1050 + @@ -796,14 +796,14 @@ class IMUCClient(Interface): 1051 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1052 + 1053 + @param nick: The nick name for the entitity joining the room. 1054 + - @type nick: C{unicode} 1055 + + @type nick: L{str} 1056 + 1057 + @param historyOptions: Options for conversation history sent by the 1058 + room upon joining. 1059 + @type historyOptions: L{HistoryOptions} 1060 + 1061 + @param password: Optional password for the room. 1062 + - @type password: C{unicode} 1063 + + @type password: L{str} 1064 + 1065 + @return: A deferred that fires when the entity is in the room or an 1066 + error has occurred. 1067 + @@ -820,7 +820,7 @@ class IMUCClient(Interface): 1068 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1069 + 1070 + @param nick: The new nick name within the room. 1071 + - @type nick: C{unicode} 1072 + + @type nick: L{str} 1073 + """ 1074 + 1075 + 1076 + @@ -876,7 +876,7 @@ class IMUCClient(Interface): 1077 + 1078 + @param options: A mapping of field names to values, or C{None} to 1079 + cancel. 1080 + - @type options: C{dict} 1081 + + @type options: L{dict} 1082 + """ 1083 + 1084 + 1085 + @@ -890,7 +890,7 @@ class IMUCClient(Interface): 1086 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1087 + 1088 + @param subject: The subject you want to set. 1089 + - @type subject: C{unicode} 1090 + + @type subject: L{str} 1091 + """ 1092 + 1093 + 1094 + @@ -917,7 +917,7 @@ class IMUCClient(Interface): 1095 + holding the original stanza a 1096 + L{Element<twisted.words.xish.domish.Element>}, and C{'timestamp'} 1097 + with the timestamp. 1098 + - @type messages: C{list} of 1099 + + @type messages: L{list} of 1100 + L{Element<twisted.words.xish.domish.Element>} 1101 + """ 1102 + 1103 + @@ -933,7 +933,7 @@ class IMUCClient(Interface): 1104 + @type entity: L{JID<twisted.words.protocols.jabber.jid.JID>} 1105 + 1106 + @param reason: The reason for banning the entity. 1107 + - @type reason: C{unicode} 1108 + + @type reason: L{str} 1109 + 1110 + @param sender: The entity sending the request. 1111 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1112 + @@ -949,10 +949,10 @@ class IMUCClient(Interface): 1113 + 1114 + @param nick: The occupant to be banned. 1115 + @type nick: L{JID<twisted.words.protocols.jabber.jid.JID>} or 1116 + - C{unicode} 1117 + + L{str} 1118 + 1119 + @param reason: The reason given for the kick. 1120 + - @type reason: C{unicode} 1121 + + @type reason: L{str} 1122 + 1123 + @param sender: The entity sending the request. 1124 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1125 + diff --git a/wokkel/muc.py b/wokkel/muc.py 1126 + index 330664b..4c826f2 100644 1127 + --- a/wokkel/muc.py 1128 + +++ b/wokkel/muc.py 1129 + @@ -17,7 +17,6 @@ from dateutil.tz import tzutc 1130 + from zope.interface import implementer 1131 + 1132 + from twisted.internet import defer 1133 + -from twisted.python.compat import unicode 1134 + from twisted.python.constants import Values, ValueConstant 1135 + from twisted.words.protocols.jabber import jid, error, xmlstream 1136 + from twisted.words.xish import domish 1137 + @@ -192,7 +191,7 @@ class AdminItem(object): 1138 + item.role = element.getAttribute('role') 1139 + 1140 + for child in element.elements(NS_MUC_ADMIN, 'reason'): 1141 + - item.reason = unicode(child) 1142 + + item.reason = str(child) 1143 + 1144 + return item 1145 + 1146 + @@ -228,13 +227,13 @@ class DestructionRequest(generic.Request): 1147 + Room destruction request. 1148 + 1149 + @param reason: Optional reason for the destruction of this room. 1150 + - @type reason: L{unicode}. 1151 + + @type reason: L{str}. 1152 + 1153 + @param alternate: Optional room JID of an alternate venue. 1154 + @type alternate: L{JID<twisted.words.protocols.jabber.jid.JID>} 1155 + 1156 + @param password: Optional password for entering the alternate venue. 1157 + - @type password: L{unicode} 1158 + + @type password: L{str} 1159 + """ 1160 + 1161 + stanzaType = 'set' 1162 + @@ -395,10 +394,10 @@ class UserPresence(xmppim.AvailabilityPresence): 1163 + Availability presence sent from MUC service to client. 1164 + 1165 + @ivar affiliation: Affiliation of the entity to the room. 1166 + - @type affiliation: L{unicode} 1167 + + @type affiliation: L{str} 1168 + 1169 + @ivar role: Role of the entity in the room. 1170 + - @type role: L{unicode} 1171 + + @type role: L{str} 1172 + 1173 + @ivar entity: The real JID of the entity this presence is from. 1174 + @type entity: L{JID<twisted.words.protocols.jabber.jid.JID>} 1175 + @@ -408,7 +407,7 @@ class UserPresence(xmppim.AvailabilityPresence): 1176 + @type mucStatuses: L{Statuses} 1177 + 1178 + @ivar nick: The nick name of the entity in the room. 1179 + - @type nick: L{unicode} 1180 + + @type nick: L{str} 1181 + """ 1182 + 1183 + affiliation = None 1184 + @@ -451,7 +450,7 @@ class UserPresence(xmppim.AvailabilityPresence): 1185 + self.role = child.getAttribute('role') 1186 + 1187 + for reason in child.elements(NS_MUC_ADMIN, 'reason'): 1188 + - self.reason = unicode(reason) 1189 + + self.reason = str(reason) 1190 + 1191 + # TODO: destroy 1192 + 1193 + @@ -595,14 +594,14 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1194 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1195 + 1196 + @param nick: The nick name for the entitity joining the room. 1197 + - @type nick: L{unicode} 1198 + + @type nick: L{str} 1199 + 1200 + @param historyOptions: Options for conversation history sent by the 1201 + room upon joining. 1202 + @type historyOptions: L{HistoryOptions} 1203 + 1204 + @param password: Optional password for the room. 1205 + - @type password: L{unicode} 1206 + + @type password: L{str} 1207 + 1208 + @return: A deferred that fires when the entity is in the room or an 1209 + error has occurred. 1210 + @@ -628,7 +627,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1211 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1212 + 1213 + @param nick: The new nick name within the room. 1214 + - @type nick: L{unicode} 1215 + + @type nick: L{str} 1216 + """ 1217 + occupantJID = jid.JID(tuple=(roomJID.user, roomJID.host, nick)) 1218 + presence = BasicPresence(recipient=occupantJID) 1219 + @@ -646,10 +645,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1220 + 1221 + @param show: The availability of the entity. Common values are xa, 1222 + available, etc 1223 + - @type show: L{unicode} 1224 + + @type show: L{str} 1225 + 1226 + @param status: The current status of the entity. 1227 + - @type status: L{unicode} 1228 + + @type status: L{str} 1229 + """ 1230 + occupantJID = self._roomOccupantMap[roomJID] 1231 + presence = BasicPresence(recipient=occupantJID, show=show, 1232 + @@ -704,7 +703,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1233 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1234 + 1235 + @param subject: The subject you want to set. 1236 + - @type subject: L{unicode} 1237 + + @type subject: L{str} 1238 + """ 1239 + message = GroupChat(roomJID.userhostJID(), subject=subject) 1240 + self.send(message.toElement()) 1241 + @@ -723,7 +722,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1242 + @type invitee: L{JID<twisted.words.protocols.jabber.jid.JID>} 1243 + 1244 + @param reason: The reason for the invite. 1245 + - @type reason: L{unicode} 1246 + + @type reason: L{str} 1247 + """ 1248 + message = InviteMessage(recipient=roomJID, invitee=invitee, 1249 + reason=reason) 1250 + @@ -970,7 +969,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1251 + L{JID<twisted.words.protocols.jabber.jid.JID>} 1252 + 1253 + @param affiliation: The affilation to the entities will acquire. 1254 + - @type affiliation: L{unicode} 1255 + + @type affiliation: L{str} 1256 + 1257 + @param sender: The entity sending the request. 1258 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1259 + @@ -992,10 +991,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1260 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1261 + 1262 + @param nick: The nick name for the user in this room. 1263 + - @type nick: L{unicode} 1264 + + @type nick: L{str} 1265 + 1266 + @param reason: The reason for granting voice to the entity. 1267 + - @type reason: L{unicode} 1268 + + @type reason: L{str} 1269 + 1270 + @param sender: The entity sending the request. 1271 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1272 + @@ -1015,10 +1014,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1273 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1274 + 1275 + @param nick: The nick name for the user in this room. 1276 + - @type nick: L{unicode} 1277 + + @type nick: L{str} 1278 + 1279 + @param reason: The reason for revoking voice from the entity. 1280 + - @type reason: L{unicode} 1281 + + @type reason: L{str} 1282 + 1283 + @param sender: The entity sending the request. 1284 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1285 + @@ -1035,10 +1034,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1286 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1287 + 1288 + @param nick: The nick name for the user in this room. 1289 + - @type nick: L{unicode} 1290 + + @type nick: L{str} 1291 + 1292 + @param reason: The reason for granting moderation to the entity. 1293 + - @type reason: L{unicode} 1294 + + @type reason: L{str} 1295 + 1296 + @param sender: The entity sending the request. 1297 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1298 + @@ -1058,7 +1057,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1299 + @type entity: L{JID<twisted.words.protocols.jabber.jid.JID>} 1300 + 1301 + @param reason: The reason for banning the entity. 1302 + - @type reason: L{unicode} 1303 + + @type reason: L{str} 1304 + 1305 + @param sender: The entity sending the request. 1306 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1307 + @@ -1075,10 +1074,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1308 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1309 + 1310 + @param nick: The occupant to be banned. 1311 + - @type nick: L{unicode} 1312 + + @type nick: L{str} 1313 + 1314 + @param reason: The reason given for the kick. 1315 + - @type reason: L{unicode} 1316 + + @type reason: L{str} 1317 + 1318 + @param sender: The entity sending the request. 1319 + @type sender: L{JID<twisted.words.protocols.jabber.jid.JID>} 1320 + @@ -1095,7 +1094,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): 1321 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1322 + 1323 + @param reason: The reason for the destruction of the room. 1324 + - @type reason: L{unicode} 1325 + + @type reason: L{str} 1326 + 1327 + @param alternate: The JID of the room suggested as an alternate venue. 1328 + @type alternate: L{JID<twisted.words.protocols.jabber.jid.JID>} 1329 + @@ -1135,7 +1134,7 @@ class Room(object): 1330 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1331 + 1332 + @ivar nick: The nick name for the client in this room. 1333 + - @type nick: L{unicode} 1334 + + @type nick: L{str} 1335 + 1336 + @ivar occupantJID: The JID of the occupant in the room. Generated from 1337 + roomJID and nick. 1338 + @@ -1190,7 +1189,7 @@ class Room(object): 1339 + Get a user from the room's roster. 1340 + 1341 + @param nick: The nick for the user in the MUC room. 1342 + - @type nick: L{unicode} 1343 + + @type nick: L{str} 1344 + """ 1345 + return self.roster.get(nick) 1346 + 1347 + @@ -1444,14 +1443,14 @@ class MUCClient(MUCClientProtocol): 1348 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1349 + 1350 + @param nick: The nick name for the entitity joining the room. 1351 + - @type nick: L{unicode} 1352 + + @type nick: L{str} 1353 + 1354 + @param historyOptions: Options for conversation history sent by the 1355 + room upon joining. 1356 + @type historyOptions: L{HistoryOptions} 1357 + 1358 + @param password: Optional password for the room. 1359 + - @type password: L{unicode} 1360 + + @type password: L{str} 1361 + 1362 + @return: A deferred that fires with the room when the entity is in the 1363 + room, or with a failure if an error has occurred. 1364 + @@ -1488,7 +1487,7 @@ class MUCClient(MUCClientProtocol): 1365 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1366 + 1367 + @param nick: The new nick name within the room. 1368 + - @type nick: L{unicode} 1369 + + @type nick: L{str} 1370 + """ 1371 + def cb(presence): 1372 + # Presence confirmation, change the nickname. 1373 + @@ -1530,10 +1529,10 @@ class MUCClient(MUCClientProtocol): 1374 + 1375 + @param show: The availability of the entity. Common values are xa, 1376 + available, etc 1377 + - @type show: L{unicode} 1378 + + @type show: L{str} 1379 + 1380 + @param status: The current status of the entity. 1381 + - @type status: L{unicode} 1382 + + @type status: L{str} 1383 + """ 1384 + room = self._getRoom(roomJID) 1385 + d = MUCClientProtocol.status(self, roomJID, show, status) 1386 + @@ -1549,7 +1548,7 @@ class MUCClient(MUCClientProtocol): 1387 + @type roomJID: L{JID<twisted.words.protocols.jabber.jid.JID>} 1388 + 1389 + @param reason: The reason for the destruction of the room. 1390 + - @type reason: L{unicode} 1391 + + @type reason: L{str} 1392 + 1393 + @param alternate: The JID of the room suggested as an alternate venue. 1394 + @type alternate: L{JID<twisted.words.protocols.jabber.jid.JID>} 1395 + diff --git a/wokkel/pubsub.py b/wokkel/pubsub.py 1396 + index 689a6e2..2eb1b44 100644 1397 + --- a/wokkel/pubsub.py 1398 + +++ b/wokkel/pubsub.py 1399 + @@ -16,7 +16,6 @@ from zope.interface import implementer 1400 + 1401 + from twisted.internet import defer 1402 + from twisted.python import log 1403 + -from twisted.python.compat import StringType, iteritems, unicode 1404 + from twisted.words.protocols.jabber import jid, error 1405 + from twisted.words.xish import domish 1406 + 1407 + @@ -107,20 +106,20 @@ class Subscription(object): 1408 + 1409 + @ivar nodeIdentifier: The identifier of the node subscribed to. The root 1410 + node is denoted by L{None}. 1411 + - @type nodeIdentifier: L{unicode} 1412 + + @type nodeIdentifier: L{str} 1413 + 1414 + @ivar subscriber: The subscribing entity. 1415 + @type subscriber: L{jid.JID} 1416 + 1417 + @ivar state: The subscription state. One of C{'subscribed'}, C{'pending'}, 1418 + C{'unconfigured'}. 1419 + - @type state: L{unicode} 1420 + + @type state: L{str} 1421 + 1422 + @ivar options: Optional list of subscription options. 1423 + @type options: L{dict} 1424 + 1425 + @ivar subscriptionIdentifier: Optional subscription identifier. 1426 + - @type subscriptionIdentifier: L{unicode} 1427 + + @type subscriptionIdentifier: L{str} 1428 + """ 1429 + 1430 + def __init__(self, nodeIdentifier, subscriber, state, options=None, 1431 + @@ -150,7 +149,7 @@ class Subscription(object): 1432 + element = domish.Element((defaultUri, 'subscription')) 1433 + if self.nodeIdentifier: 1434 + element['node'] = self.nodeIdentifier 1435 + - element['jid'] = unicode(self.subscriber) 1436 + + element['jid'] = str(self.subscriber) 1437 + element['subscription'] = self.state 1438 + if self.subscriptionIdentifier: 1439 + element['subid'] = self.subscriptionIdentifier 1440 + @@ -171,17 +170,17 @@ class Item(domish.Element): 1441 + def __init__(self, id=None, payload=None): 1442 + """ 1443 + @param id: optional item identifier 1444 + - @type id: L{unicode} 1445 + + @type id: L{str} 1446 + @param payload: optional item payload. Either as a domish element, or 1447 + as serialized XML. 1448 + - @type payload: object providing L{domish.IElement} or L{unicode}. 1449 + + @type payload: object providing L{domish.IElement} or L{str}. 1450 + """ 1451 + 1452 + domish.Element.__init__(self, (None, 'item')) 1453 + if id is not None: 1454 + self['id'] = id 1455 + if payload is not None: 1456 + - if isinstance(payload, StringType): 1457 + + if isinstance(payload, str): 1458 + self.addRawXml(payload) 1459 + else: 1460 + self.addChild(payload) 1461 + @@ -213,7 +212,7 @@ class PubSubRequest(generic.Stanza): 1462 + @type maxItems: L{int}. 1463 + 1464 + @ivar nodeIdentifier: Identifier of the node the request is about. 1465 + - @type nodeIdentifier: L{unicode} 1466 + + @type nodeIdentifier: L{str} 1467 + 1468 + @ivar nodeType: The type of node that should be created, or for which the 1469 + configuration is retrieved. C{'leaf'} or C{'collection'}. 1470 + @@ -227,7 +226,7 @@ class PubSubRequest(generic.Stanza): 1471 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 1472 + 1473 + @ivar subscriptionIdentifier: Identifier for a specific subscription. 1474 + - @type subscriptionIdentifier: L{unicode} 1475 + + @type subscriptionIdentifier: L{str} 1476 + 1477 + @ivar subscriptions: Subscriptions to be modified, as a set of 1478 + L{Subscription}. 1479 + @@ -235,7 +234,7 @@ class PubSubRequest(generic.Stanza): 1480 + 1481 + @ivar affiliations: Affiliations to be modified, as a dictionary of entity 1482 + (L{JID<twisted.words.protocols.jabber.jid.JID>} to affiliation 1483 + - (L{unicode}). 1484 + + (L{str}). 1485 + @type affiliations: L{dict} 1486 + """ 1487 + 1488 + @@ -277,7 +276,7 @@ class PubSubRequest(generic.Stanza): 1489 + } 1490 + 1491 + # Map request verb to request iq type and subelement name 1492 + - _verbRequestMap = dict(((v, k) for k, v in iteritems(_requestVerbMap))) 1493 + + _verbRequestMap = dict(((v, k) for k, v in _requestVerbMap.items())) 1494 + 1495 + # Map request verb to parameter handler names 1496 + _parameters = { 1497 + @@ -487,7 +486,7 @@ class PubSubRequest(generic.Stanza): 1498 + Render maximum items into an items request. 1499 + """ 1500 + if self.maxItems: 1501 + - verbElement['max_items'] = unicode(self.maxItems) 1502 + + verbElement['max_items'] = str(self.maxItems) 1503 + 1504 + 1505 + def _parse_subidOrNone(self, verbElement): 1506 + @@ -648,7 +647,7 @@ class PubSubEvent(object): 1507 + @param recipient: The entity to which the notification was sent. 1508 + @type recipient: L{wokkel.pubsub.ItemsEvent} 1509 + @param nodeIdentifier: Identifier of the node the event pertains to. 1510 + - @type nodeIdentifier: L{unicode} 1511 + + @type nodeIdentifier: L{str} 1512 + @param headers: SHIM headers, see L{wokkel.shim.extractHeaders}. 1513 + @type headers: L{dict} 1514 + """ 1515 + @@ -772,7 +771,7 @@ class PubSubClient(XMPPHandler): 1516 + @param service: The publish subscribe service to create the node at. 1517 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1518 + @param nodeIdentifier: Optional suggestion for the id of the node. 1519 + - @type nodeIdentifier: L{unicode} 1520 + + @type nodeIdentifier: L{str} 1521 + @param options: Optional node configuration options. 1522 + @type options: L{dict} 1523 + """ 1524 + @@ -807,7 +806,7 @@ class PubSubClient(XMPPHandler): 1525 + @param service: The publish subscribe service to delete the node from. 1526 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1527 + @param nodeIdentifier: The identifier of the node. 1528 + - @type nodeIdentifier: L{unicode} 1529 + + @type nodeIdentifier: L{str} 1530 + """ 1531 + request = PubSubRequest('delete') 1532 + request.recipient = service 1533 + @@ -825,7 +824,7 @@ class PubSubClient(XMPPHandler): 1534 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1535 + 1536 + @param nodeIdentifier: The identifier of the node. 1537 + - @type nodeIdentifier: L{unicode} 1538 + + @type nodeIdentifier: L{str} 1539 + 1540 + @param subscriber: The entity to subscribe to the node. This entity 1541 + will get notifications of new published items. 1542 + @@ -877,13 +876,13 @@ class PubSubClient(XMPPHandler): 1543 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1544 + 1545 + @param nodeIdentifier: The identifier of the node. 1546 + - @type nodeIdentifier: L{unicode} 1547 + + @type nodeIdentifier: L{str} 1548 + 1549 + @param subscriber: The entity to unsubscribe from the node. 1550 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 1551 + 1552 + @param subscriptionIdentifier: Optional subscription identifier. 1553 + - @type subscriptionIdentifier: L{unicode} 1554 + + @type subscriptionIdentifier: L{str} 1555 + """ 1556 + request = PubSubRequest('unsubscribe') 1557 + request.recipient = service 1558 + @@ -901,7 +900,7 @@ class PubSubClient(XMPPHandler): 1559 + @param service: The publish subscribe service that keeps the node. 1560 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1561 + @param nodeIdentifier: The identifier of the node. 1562 + - @type nodeIdentifier: L{unicode} 1563 + + @type nodeIdentifier: L{str} 1564 + @param items: Optional list of L{Item}s to publish. 1565 + @type items: L{list} 1566 + """ 1567 + @@ -922,7 +921,7 @@ class PubSubClient(XMPPHandler): 1568 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1569 + 1570 + @param nodeIdentifier: The identifier of the node. 1571 + - @type nodeIdentifier: L{unicode} 1572 + + @type nodeIdentifier: L{str} 1573 + 1574 + @param maxItems: Optional limit on the number of retrieved items. 1575 + @type maxItems: L{int} 1576 + @@ -930,10 +929,10 @@ class PubSubClient(XMPPHandler): 1577 + @param subscriptionIdentifier: Optional subscription identifier. In 1578 + case the node has been subscribed to multiple times, this narrows 1579 + the results to the specific subscription. 1580 + - @type subscriptionIdentifier: L{unicode} 1581 + + @type subscriptionIdentifier: L{str} 1582 + 1583 + @param itemIdentifiers: Identifiers of the items to be retrieved. 1584 + - @type itemIdentifiers: L{set} of L{unicode} 1585 + + @type itemIdentifiers: L{set} of L{str} 1586 + """ 1587 + request = PubSubRequest('items') 1588 + request.recipient = service 1589 + @@ -965,13 +964,13 @@ class PubSubClient(XMPPHandler): 1590 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1591 + 1592 + @param nodeIdentifier: The identifier of the node. 1593 + - @type nodeIdentifier: L{unicode} 1594 + + @type nodeIdentifier: L{str} 1595 + 1596 + @param subscriber: The entity subscribed to the node. 1597 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 1598 + 1599 + @param subscriptionIdentifier: Optional subscription identifier. 1600 + - @type subscriptionIdentifier: L{unicode} 1601 + + @type subscriptionIdentifier: L{str} 1602 + 1603 + @rtype: L{data_form.Form} 1604 + """ 1605 + @@ -1002,7 +1001,7 @@ class PubSubClient(XMPPHandler): 1606 + @type service: L{JID<twisted.words.protocols.jabber.jid.JID>} 1607 + 1608 + @param nodeIdentifier: The identifier of the node. 1609 + - @type nodeIdentifier: L{unicode} 1610 + + @type nodeIdentifier: L{str} 1611 + 1612 + @param subscriber: The entity subscribed to the node. 1613 + @type subscriber: L{JID<twisted.words.protocols.jabber.jid.JID>} 1614 + @@ -1011,7 +1010,7 @@ class PubSubClient(XMPPHandler): 1615 + @type options: L{dict}. 1616 + 1617 + @param subscriptionIdentifier: Optional subscription identifier. 1618 + - @type subscriptionIdentifier: L{unicode} 1619 + + @type subscriptionIdentifier: L{str} 1620 + """ 1621 + request = PubSubRequest('optionsSet') 1622 + request.recipient = service 1623 + @@ -1356,7 +1355,7 @@ class PubSubService(XMPPHandler, IQHandlerMixin): 1624 + if request.nodeIdentifier: 1625 + affiliations['node'] = request.nodeIdentifier 1626 + 1627 + - for entity, affiliation in iteritems(result): 1628 + + for entity, affiliation in result.items(): 1629 + item = affiliations.addElement('affiliation') 1630 + item['jid'] = entity.full() 1631 + item['affiliation'] = affiliation 1632 + diff --git a/wokkel/server.py b/wokkel/server.py 1633 + index 54517a2..fbd8452 100644 1634 + --- a/wokkel/server.py 1635 + +++ b/wokkel/server.py 1636 + @@ -22,7 +22,6 @@ from zope.interface import implementer 1637 + from twisted.internet import defer, reactor 1638 + from twisted.names.srvconnect import SRVConnector 1639 + from twisted.python import log, randbytes 1640 + -from twisted.python.compat import iteritems, unicode 1641 + from twisted.words.protocols.jabber import error, ijabber, jid, xmlstream 1642 + from twisted.words.xish import domish 1643 + 1644 + @@ -40,15 +39,15 @@ def generateKey(secret, receivingServer, originatingServer, streamID): 1645 + 1646 + @param secret: the shared secret known to the Originating Server and 1647 + Authoritive Server. 1648 + - @type secret: L{unicode} 1649 + + @type secret: L{str} 1650 + @param receivingServer: the Receiving Server host name. 1651 + - @type receivingServer: L{unicode} 1652 + + @type receivingServer: L{str} 1653 + @param originatingServer: the Originating Server host name. 1654 + - @type originatingServer: L{unicode} 1655 + + @type originatingServer: L{str} 1656 + @param streamID: the Stream ID as generated by the Receiving Server. 1657 + - @type streamID: L{unicode} 1658 + + @type streamID: L{str} 1659 + @return: hexadecimal digest of the generated key. 1660 + - @type: C{str} 1661 + + @type: L{str} 1662 + """ 1663 + 1664 + hashObject = sha256() 1665 + @@ -340,7 +339,7 @@ class XMPPServerListenAuthenticator(xmlstream.ListenAuthenticator): 1666 + try: 1667 + if xmlstream.NS_STREAMS != rootElement.uri or \ 1668 + self.namespace != self.xmlstream.namespace or \ 1669 + - ('db', NS_DIALBACK) not in iteritems(rootElement.localPrefixes): 1670 + + ('db', NS_DIALBACK) not in rootElement.localPrefixes.items(): 1671 + raise error.StreamError('invalid-namespace') 1672 + 1673 + if targetDomain and targetDomain not in self.service.domains: 1674 + @@ -379,7 +378,7 @@ class XMPPServerListenAuthenticator(xmlstream.ListenAuthenticator): 1675 + raise error.StreamError('invalid-from') 1676 + 1677 + streamID = verify.getAttribute('id', '') 1678 + - key = unicode(verify) 1679 + + key = str(verify) 1680 + 1681 + calculatedKey = generateKey(self.service.secret, receivingServer, 1682 + originatingServer, streamID) 1683 + @@ -415,7 +414,7 @@ class XMPPServerListenAuthenticator(xmlstream.ListenAuthenticator): 1684 + 1685 + receivingServer = result['to'] 1686 + originatingServer = result['from'] 1687 + - key = unicode(result) 1688 + + key = str(result) 1689 + 1690 + d = self.service.validateConnection(receivingServer, originatingServer, 1691 + self.xmlstream.sid, key) 1692 + diff --git a/wokkel/shim.py b/wokkel/shim.py 1693 + index 3b12349..85a0848 100644 1694 + --- a/wokkel/shim.py 1695 + +++ b/wokkel/shim.py 1696 + @@ -12,7 +12,6 @@ U{XEP-0131<http://xmpp.org/extensions/xep-0131.html>}. 1697 + 1698 + from __future__ import division, absolute_import 1699 + 1700 + -from twisted.python.compat import unicode 1701 + from twisted.words.xish import domish 1702 + 1703 + NS_SHIM = "http://jabber.org/protocol/shim" 1704 + @@ -30,7 +29,7 @@ def extractHeaders(stanza): 1705 + @param stanza: The stanza to extract headers from. 1706 + @type stanza: L{Element<twisted.words.xish.domish.Element>} 1707 + @return: Headers as a mapping from header name to a list of values. 1708 + - @rtype: C{dict} 1709 + + @rtype: L{dict} 1710 + """ 1711 + headers = {} 1712 + 1713 + @@ -38,6 +37,6 @@ def extractHeaders(stanza): 1714 + 'headers', NS_SHIM): 1715 + for header in domish.generateElementsQNamed(element.children, 1716 + 'header', NS_SHIM): 1717 + - headers.setdefault(header['name'], []).append(unicode(header)) 1718 + + headers.setdefault(header['name'], []).append(str(header)) 1719 + 1720 + return headers 1721 + diff --git a/wokkel/subprotocols.py b/wokkel/subprotocols.py 1722 + index f0a6090..b4cde14 100644 1723 + --- a/wokkel/subprotocols.py 1724 + +++ b/wokkel/subprotocols.py 1725 + @@ -14,7 +14,6 @@ from zope.interface import implementer 1726 + from twisted.internet import defer 1727 + from twisted.internet.error import ConnectionDone 1728 + from twisted.python import failure, log 1729 + -from twisted.python.compat import iteritems, itervalues 1730 + from twisted.python.deprecate import deprecatedModuleAttribute 1731 + from twisted.words.protocols.jabber import error, ijabber, xmlstream 1732 + from twisted.words.protocols.jabber.xmlstream import toResponse 1733 + @@ -130,15 +129,15 @@ class StreamManager(XMPPHandlerCollection): 1734 + @ivar xmlstream: currently managed XML stream 1735 + @type xmlstream: L{XmlStream} 1736 + @ivar logTraffic: if true, log all traffic. 1737 + - @type logTraffic: C{bool} 1738 + + @type logTraffic: L{bool} 1739 + @ivar _initialized: Whether the stream represented by L{xmlstream} has 1740 + been initialized. This is used when caching outgoing 1741 + stanzas. 1742 + - @type _initialized: C{bool} 1743 + + @type _initialized: L{bool} 1744 + @ivar _packetQueue: internal buffer of unsent data. See L{send} for details. 1745 + @type _packetQueue: L{list} 1746 + @ivar timeout: Default IQ request timeout in seconds. 1747 + - @type timeout: C{int} 1748 + + @type timeout: L{int} 1749 + @ivar _reactor: A provider of L{IReactorTime} to track timeouts. 1750 + """ 1751 + timeout = None 1752 + @@ -277,7 +276,7 @@ class StreamManager(XMPPHandlerCollection): 1753 + # deferreds will never be fired. 1754 + iqDeferreds = self._iqDeferreds 1755 + self._iqDeferreds = {} 1756 + - for d in itervalues(iqDeferreds): 1757 + + for d in iqDeferreds.values(): 1758 + d.errback(reason) 1759 + 1760 + 1761 + @@ -420,7 +419,7 @@ class IQHandlerMixin(object): 1762 + 1763 + @cvar iqHandlers: Mapping from XPath queries (as a string) to the method 1764 + name that will handle requests that match the query. 1765 + - @type iqHandlers: C{dict} 1766 + + @type iqHandlers: L{dict} 1767 + """ 1768 + 1769 + iqHandlers = None 1770 + @@ -455,7 +454,7 @@ class IQHandlerMixin(object): 1771 + return error.StanzaError('internal-server-error').toResponse(iq) 1772 + 1773 + handler = None 1774 + - for queryString, method in iteritems(self.iqHandlers): 1775 + + for queryString, method in self.iqHandlers.items(): 1776 + if xpath.internQuery(queryString).matches(iq): 1777 + handler = getattr(self, method) 1778 + 1779 + diff --git a/wokkel/test/helpers.py b/wokkel/test/helpers.py 1780 + index 102b3dc..c76a4a0 100644 1781 + --- a/wokkel/test/helpers.py 1782 + +++ b/wokkel/test/helpers.py 1783 + @@ -8,7 +8,6 @@ Unit test helpers. 1784 + from __future__ import division, absolute_import 1785 + 1786 + from twisted.internet import defer 1787 + -from twisted.python.compat import iteritems 1788 + from twisted.words.xish import xpath 1789 + from twisted.words.xish.utility import EventDispatcher 1790 + 1791 + @@ -79,14 +78,14 @@ class TestableRequestHandlerMixin(object): 1792 + Find a handler and call it directly. 1793 + 1794 + @param xml: XML stanza that may yield a handler being called. 1795 + - @type xml: C{str}. 1796 + + @type xml: L{str}. 1797 + @return: Deferred that fires with the result of a handler for this 1798 + stanza. If no handler was found, the deferred has its errback 1799 + called with a C{NotImplementedError} exception. 1800 + """ 1801 + handler = None 1802 + iq = parseXml(xml) 1803 + - for queryString, method in iteritems(self.service.iqHandlers): 1804 + + for queryString, method in self.service.iqHandlers.items(): 1805 + if xpath.internQuery(queryString).matches(iq): 1806 + handler = getattr(self.service, method) 1807 + 1808 + diff --git a/wokkel/test/test_client.py b/wokkel/test/test_client.py 1809 + index ef367f7..ef9adfd 100644 1810 + --- a/wokkel/test/test_client.py 1811 + +++ b/wokkel/test/test_client.py 1812 + @@ -8,6 +8,7 @@ Tests for L{wokkel.client}. 1813 + from __future__ import division, absolute_import 1814 + 1815 + from twisted.internet import defer 1816 + +from twisted.python.compat import nativeString 1817 + from twisted.trial import unittest 1818 + from twisted.words.protocols.jabber import xmlstream 1819 + from twisted.words.protocols.jabber.client import XMPPAuthenticator 1820 + @@ -152,7 +153,7 @@ class ClientCreatorTest(unittest.TestCase): 1821 + 1822 + def cb(connector): 1823 + self.assertEqual('xmpp-client', connector.service) 1824 + - self.assertEqual('example.org', connector.domain) 1825 + + self.assertEqual('example.org', nativeString(connector.domain)) 1826 + self.assertEqual(factory, connector.factory) 1827 + 1828 + def connect(connector): 1829 + diff --git a/wokkel/test/test_data_form.py b/wokkel/test/test_data_form.py 1830 + index 60e36f4..246f1c5 100644 1831 + --- a/wokkel/test/test_data_form.py 1832 + +++ b/wokkel/test/test_data_form.py 1833 + @@ -10,7 +10,6 @@ from __future__ import division, absolute_import 1834 + from zope.interface import verify 1835 + from zope.interface.common.mapping import IIterableMapping 1836 + 1837 + -from twisted.python.compat import unicode, _PY3 1838 + from twisted.trial import unittest 1839 + from twisted.words.xish import domish 1840 + from twisted.words.protocols.jabber import jid 1841 + @@ -34,7 +33,7 @@ class OptionTest(unittest.TestCase): 1842 + self.assertEqual('option', element.name) 1843 + self.assertEqual(NS_X_DATA, element.uri) 1844 + self.assertEqual(NS_X_DATA, element.value.uri) 1845 + - self.assertEqual('value', unicode(element.value)) 1846 + + self.assertEqual('value', str(element.value)) 1847 + self.assertFalse(element.hasAttribute('label')) 1848 + 1849 + 1850 + @@ -48,7 +47,7 @@ class OptionTest(unittest.TestCase): 1851 + self.assertEqual('option', element.name) 1852 + self.assertEqual(NS_X_DATA, element.uri) 1853 + self.assertEqual(NS_X_DATA, element.value.uri) 1854 + - self.assertEqual('value', unicode(element.value)) 1855 + + self.assertEqual('value', str(element.value)) 1856 + self.assertEqual('label', element['label']) 1857 + 1858 + 1859 + @@ -225,7 +224,7 @@ class FieldTest(unittest.TestCase): 1860 + child = element.children[0] 1861 + self.assertEqual('desc', child.name) 1862 + self.assertEqual(NS_X_DATA, child.uri) 1863 + - self.assertEqual(u'My desc', unicode(child)) 1864 + + self.assertEqual(u'My desc', str(child)) 1865 + 1866 + 1867 + def test_toElementRequired(self): 1868 + @@ -248,7 +247,7 @@ class FieldTest(unittest.TestCase): 1869 + field = data_form.Field(fieldType='jid-single', var='test', 1870 + value=jid.JID(u'test@example.org')) 1871 + element = field.toElement() 1872 + - self.assertEqual(u'test@example.org', unicode(element.value)) 1873 + + self.assertEqual(u'test@example.org', str(element.value)) 1874 + 1875 + 1876 + def test_toElementJIDTextSingle(self): 1877 + @@ -258,7 +257,7 @@ class FieldTest(unittest.TestCase): 1878 + field = data_form.Field(fieldType='text-single', var='test', 1879 + value=jid.JID(u'test@example.org')) 1880 + element = field.toElement() 1881 + - self.assertEqual(u'test@example.org', unicode(element.value)) 1882 + + self.assertEqual(u'test@example.org', str(element.value)) 1883 + 1884 + 1885 + def test_toElementBoolean(self): 1886 + @@ -268,7 +267,7 @@ class FieldTest(unittest.TestCase): 1887 + field = data_form.Field(fieldType='boolean', var='test', 1888 + value=True) 1889 + element = field.toElement() 1890 + - self.assertEqual(u'true', unicode(element.value)) 1891 + + self.assertEqual(u'true', str(element.value)) 1892 + 1893 + 1894 + def test_toElementBooleanTextSingle(self): 1895 + @@ -277,7 +276,7 @@ class FieldTest(unittest.TestCase): 1896 + """ 1897 + field = data_form.Field(var='test', value=True) 1898 + element = field.toElement() 1899 + - self.assertEqual(u'true', unicode(element.value)) 1900 + + self.assertEqual(u'true', str(element.value)) 1901 + 1902 + 1903 + def test_toElementNoType(self): 1904 + @@ -396,7 +395,7 @@ class FieldTest(unittest.TestCase): 1905 + 1906 + def test_fromElementValueTextSingle(self): 1907 + """ 1908 + - Parsed text-single field values should be of type C{unicode}. 1909 + + Parsed text-single field values should be of type L{str}. 1910 + """ 1911 + element = domish.Element((NS_X_DATA, 'field')) 1912 + element['type'] = 'text-single' 1913 + @@ -407,7 +406,7 @@ class FieldTest(unittest.TestCase): 1914 + 1915 + def test_fromElementValueJID(self): 1916 + """ 1917 + - Parsed jid-single field values should be of type C{unicode}. 1918 + + Parsed jid-single field values should be of type L{str}. 1919 + """ 1920 + element = domish.Element((NS_X_DATA, 'field')) 1921 + element['type'] = 'jid-single' 1922 + @@ -418,7 +417,7 @@ class FieldTest(unittest.TestCase): 1923 + 1924 + def test_fromElementValueJIDMalformed(self): 1925 + """ 1926 + - Parsed jid-single field values should be of type C{unicode}. 1927 + + Parsed jid-single field values should be of type L{str}. 1928 + 1929 + No validation should be done at this point, so invalid JIDs should 1930 + also be passed as-is. 1931 + @@ -432,7 +431,7 @@ class FieldTest(unittest.TestCase): 1932 + 1933 + def test_fromElementValueBoolean(self): 1934 + """ 1935 + - Parsed boolean field values should be of type C{unicode}. 1936 + + Parsed boolean field values should be of type L{str}. 1937 + """ 1938 + element = domish.Element((NS_X_DATA, 'field')) 1939 + element['type'] = 'boolean' 1940 + @@ -561,7 +560,7 @@ class FormTest(unittest.TestCase): 1941 + title = elements[0] 1942 + self.assertEqual('title', title.name) 1943 + self.assertEqual(NS_X_DATA, title.uri) 1944 + - self.assertEqual('Bot configuration', unicode(title)) 1945 + + self.assertEqual('Bot configuration', str(title)) 1946 + 1947 + 1948 + def test_toElementInstructions(self): 1949 + @@ -576,7 +575,7 @@ class FormTest(unittest.TestCase): 1950 + instructions = elements[0] 1951 + self.assertEqual('instructions', instructions.name) 1952 + self.assertEqual(NS_X_DATA, instructions.uri) 1953 + - self.assertEqual('Fill out this form!', unicode(instructions)) 1954 + + self.assertEqual('Fill out this form!', str(instructions)) 1955 + 1956 + 1957 + def test_toElementInstructionsMultiple(self): 1958 + @@ -593,10 +592,10 @@ class FormTest(unittest.TestCase): 1959 + instructions2 = elements[1] 1960 + self.assertEqual('instructions', instructions1.name) 1961 + self.assertEqual(NS_X_DATA, instructions1.uri) 1962 + - self.assertEqual('Fill out this form!', unicode(instructions1)) 1963 + + self.assertEqual('Fill out this form!', str(instructions1)) 1964 + self.assertEqual('instructions', instructions2.name) 1965 + self.assertEqual(NS_X_DATA, instructions2.uri) 1966 + - self.assertEqual('no really', unicode(instructions2)) 1967 + + self.assertEqual('no really', str(instructions2)) 1968 + 1969 + 1970 + def test_toElementFormType(self): 1971 + @@ -613,7 +612,7 @@ class FormTest(unittest.TestCase): 1972 + self.assertEqual(NS_X_DATA, formTypeField.uri) 1973 + self.assertEqual('FORM_TYPE', formTypeField['var']) 1974 + self.assertEqual('hidden', formTypeField['type']) 1975 + - self.assertEqual('jabber:bot', unicode(formTypeField.value)) 1976 + + self.assertEqual('jabber:bot', str(formTypeField.value)) 1977 + 1978 + 1979 + def test_toElementFields(self): 1980 + @@ -1091,7 +1090,7 @@ class FormTest(unittest.TestCase): 1981 + self.assertNotIn('features', form) 1982 + 1983 + 1984 + - def test_iterkeys(self): 1985 + + def test_keys(self): 1986 + """ 1987 + Iterating over the keys of a form yields all field names. 1988 + """ 1989 + @@ -1101,10 +1100,10 @@ class FormTest(unittest.TestCase): 1990 + values=['news', 'search'])] 1991 + form = data_form.Form('submit', fields=fields) 1992 + self.assertEqual(set(['botname', 'public', 'features']), 1993 + - set(form.iterkeys())) 1994 + + set(form.keys())) 1995 + 1996 + 1997 + - def test_itervalues(self): 1998 + + def test_values(self): 1999 + """ 2000 + Iterating over the values of a form yields all field values. 2001 + """ 2002 + @@ -1112,63 +1111,19 @@ class FormTest(unittest.TestCase): 2003 + data_form.Field('boolean', var='public', value=True)] 2004 + form = data_form.Form('submit', fields=fields) 2005 + self.assertEqual(set(['The Jabber Bot', True]), 2006 + - set(form.itervalues())) 2007 + - 2008 + - 2009 + - def test_iteritems(self): 2010 + - """ 2011 + - Iterating over the values of a form yields all item tuples. 2012 + - """ 2013 + - fields = [data_form.Field(var='botname', value='The Jabber Bot'), 2014 + - data_form.Field('boolean', var='public', value=True)] 2015 + - form = data_form.Form('submit', fields=fields) 2016 + - self.assertEqual(set([('botname', 'The Jabber Bot'), 2017 + - ('public', True)]), 2018 + - set(form.iteritems())) 2019 + - 2020 + - 2021 + - def test_keys(self): 2022 + - """ 2023 + - Getting the keys of a form yields a list of field names. 2024 + - """ 2025 + - fields = [data_form.Field(var='botname', value='The Jabber Bot'), 2026 + - data_form.Field('boolean', var='public', value=True), 2027 + - data_form.Field('list-multi', var='features', 2028 + - values=['news', 'search'])] 2029 + - form = data_form.Form('submit', fields=fields) 2030 + - keys = form.keys() 2031 + - if not _PY3: 2032 + - self.assertIsInstance(keys, list) 2033 + - self.assertEqual(set(['botname', 'public', 'features']), 2034 + - set(keys)) 2035 + - 2036 + - 2037 + - def test_values(self): 2038 + - """ 2039 + - Getting the values of a form yields a list of field values. 2040 + - """ 2041 + - fields = [data_form.Field(var='botname', value='The Jabber Bot'), 2042 + - data_form.Field('boolean', var='public', value=True)] 2043 + - form = data_form.Form('submit', fields=fields) 2044 + - values = form.values() 2045 + - if not _PY3: 2046 + - self.assertIsInstance(values, list) 2047 + - self.assertEqual(set(['The Jabber Bot', True]), set(values)) 2048 + + set(form.values())) 2049 + 2050 + 2051 + def test_items(self): 2052 + """ 2053 + - Iterating over the values of a form yields a list of all item tuples. 2054 + + Iterating over the values of a form yields all item tuples. 2055 + """ 2056 + fields = [data_form.Field(var='botname', value='The Jabber Bot'), 2057 + data_form.Field('boolean', var='public', value=True)] 2058 + form = data_form.Form('submit', fields=fields) 2059 + - items = form.items() 2060 + - if not _PY3: 2061 + - self.assertIsInstance(items, list) 2062 + self.assertEqual(set([('botname', 'The Jabber Bot'), 2063 + ('public', True)]), 2064 + - set(items)) 2065 + + set(form.items())) 2066 + 2067 + 2068 + def test_getValues(self): 2069 + diff --git a/wokkel/test/test_generic.py b/wokkel/test/test_generic.py 2070 + index 94c39e5..4e4ab45 100644 2071 + --- a/wokkel/test/test_generic.py 2072 + +++ b/wokkel/test/test_generic.py 2073 + @@ -7,19 +7,12 @@ Tests for L{wokkel.generic}. 2074 + 2075 + from __future__ import division, absolute_import 2076 + 2077 + -import re 2078 + - 2079 + from zope.interface.verify import verifyObject 2080 + 2081 + -from twisted.python import deprecate 2082 + -from twisted.python.compat import unicode 2083 + from twisted.trial import unittest 2084 + -from twisted.trial.util import suppress as SUPPRESS 2085 + from twisted.words.xish import domish 2086 + from twisted.words.protocols.jabber.jid import JID 2087 + 2088 + -from incremental import Version 2089 + - 2090 + from wokkel import generic 2091 + from wokkel.iwokkel import IDisco 2092 + from wokkel.test.helpers import XmlStreamStub 2093 + @@ -66,11 +59,11 @@ class VersionHandlerTest(unittest.TestCase): 2094 + elements = list(domish.generateElementsQNamed(response.query.children, 2095 + 'name', NS_VERSION)) 2096 + self.assertEquals(1, len(elements)) 2097 + - self.assertEquals('Test', unicode(elements[0])) 2098 + + self.assertEquals('Test', str(elements[0])) 2099 + elements = list(domish.generateElementsQNamed(response.query.children, 2100 + 'version', NS_VERSION)) 2101 + self.assertEquals(1, len(elements)) 2102 + - self.assertEquals('0.1.0', unicode(elements[0])) 2103 + + self.assertEquals('0.1.0', str(elements[0])) 2104 + 2105 + 2106 + 2107 + @@ -314,67 +307,3 @@ class RequestTest(unittest.TestCase): 2108 + 2109 + request = SetRequest() 2110 + self.assertEqual('set', request.stanzaType) 2111 + - 2112 + - 2113 + - 2114 + -class PrepareIDNNameTests(unittest.TestCase): 2115 + - """ 2116 + - Tests for L{wokkel.generic.prepareIDNName}. 2117 + - """ 2118 + - 2119 + - suppress = [SUPPRESS(category=DeprecationWarning, 2120 + - message=re.escape( 2121 + - deprecate.getDeprecationWarningString( 2122 + - generic.prepareIDNName, 2123 + - Version("wokkel", 18, 0, 0), 2124 + - replacement="unicode.encode('idna')")))] 2125 + - 2126 + - 2127 + - def test_deprecated(self): 2128 + - """ 2129 + - prepareIDNName is deprecated. 2130 + - """ 2131 + - self.callDeprecated((Version("wokkel", 18, 0, 0), 2132 + - "unicode.encode('idna')"), 2133 + - generic.prepareIDNName, ("example.com")) 2134 + - test_deprecated.suppress = [] 2135 + - 2136 + - 2137 + - def test_unicode(self): 2138 + - """ 2139 + - A unicode all-ASCII name is converted to an ASCII byte string. 2140 + - """ 2141 + - name = u"example.com" 2142 + - result = generic.prepareIDNName(name) 2143 + - self.assertEqual(b"example.com", result) 2144 + - 2145 + - 2146 + - def test_unicodeNonASCII(self): 2147 + - """ 2148 + - A unicode with non-ASCII is converted to its ACE equivalent. 2149 + - """ 2150 + - name = u"\u00e9chec.example.com" 2151 + - result = generic.prepareIDNName(name) 2152 + - self.assertEqual(b"xn--chec-9oa.example.com", result) 2153 + - 2154 + - 2155 + - def test_unicodeHalfwidthIdeographicFullStop(self): 2156 + - """ 2157 + - Exotic dots in unicode names are converted to Full Stop. 2158 + - """ 2159 + - name = u"\u00e9chec.example\uff61com" 2160 + - result = generic.prepareIDNName(name) 2161 + - self.assertEqual(b"xn--chec-9oa.example.com", result) 2162 + - 2163 + - 2164 + - def test_unicodeTrailingDot(self): 2165 + - """ 2166 + - Unicode names with trailing dots retain the trailing dot. 2167 + - 2168 + - L{encodings.idna.ToASCII} doesn't allow the empty string as the input, 2169 + - hence the implementation needs to strip a trailing dot, and re-add it 2170 + - after encoding the labels. 2171 + - """ 2172 + - name = u"example.com." 2173 + - result = generic.prepareIDNName(name) 2174 + - self.assertEqual(b"example.com.", result) 2175 + diff --git a/wokkel/test/test_muc.py b/wokkel/test/test_muc.py 2176 + index f690d05..282a8a1 100644 2177 + --- a/wokkel/test/test_muc.py 2178 + +++ b/wokkel/test/test_muc.py 2179 + @@ -14,7 +14,6 @@ from zope.interface import verify 2180 + 2181 + from twisted.trial import unittest 2182 + from twisted.internet import defer, task 2183 + -from twisted.python.compat import iteritems, unicode 2184 + from twisted.words.xish import domish, xpath 2185 + from twisted.words.protocols.jabber.jid import JID 2186 + from twisted.words.protocols.jabber.error import StanzaError 2187 + @@ -81,7 +80,7 @@ class StatusCodeTest(unittest.TestCase): 2188 + 332: 'removed-shutdown', 2189 + } 2190 + 2191 + - for code, condition in iteritems(codes): 2192 + + for code, condition in codes.items(): 2193 + constantName = condition.replace('-', '_').upper() 2194 + self.assertEqual(getattr(muc.STATUS_CODE, constantName), 2195 + muc.STATUS_CODE.lookupByValue(code)) 2196 + @@ -757,7 +756,7 @@ class MUCClientProtocolTest(unittest.TestCase): 2197 + self.assertEquals('message', message.name) 2198 + self.assertEquals(self.roomJID.full(), message.getAttribute('to')) 2199 + self.assertEquals('groupchat', message.getAttribute('type')) 2200 + - self.assertEquals(u'This is a test', unicode(message.body)) 2201 + + self.assertEquals(u'This is a test', str(message.body)) 2202 + 2203 + 2204 + def test_chat(self): 2205 + @@ -773,7 +772,7 @@ class MUCClientProtocolTest(unittest.TestCase): 2206 + self.assertEquals('message', message.name) 2207 + self.assertEquals(otherOccupantJID.full(), message.getAttribute('to')) 2208 + self.assertEquals('chat', message.getAttribute('type')) 2209 + - self.assertEquals(u'This is a test', unicode(message.body)) 2210 + + self.assertEquals(u'This is a test', str(message.body)) 2211 + 2212 + 2213 + def test_subject(self): 2214 + @@ -787,7 +786,7 @@ class MUCClientProtocolTest(unittest.TestCase): 2215 + self.assertEquals('message', message.name) 2216 + self.assertEquals(self.roomJID.full(), message.getAttribute('to')) 2217 + self.assertEquals('groupchat', message.getAttribute('type')) 2218 + - self.assertEquals(u'This is a test', unicode(message.subject)) 2219 + + self.assertEquals(u'This is a test', str(message.subject)) 2220 + 2221 + 2222 + def test_invite(self): 2223 + @@ -806,7 +805,7 @@ class MUCClientProtocolTest(unittest.TestCase): 2224 + self.assertEquals(muc.NS_MUC_USER, message.x.invite.uri) 2225 + self.assertEquals(invitee.full(), message.x.invite.getAttribute('to')) 2226 + self.assertEquals(muc.NS_MUC_USER, message.x.invite.reason.uri) 2227 + - self.assertEquals(u'This is a test', unicode(message.x.invite.reason)) 2228 + + self.assertEquals(u'This is a test', str(message.x.invite.reason)) 2229 + 2230 + 2231 + def test_getRegisterForm(self): 2232 + @@ -1399,7 +1398,7 @@ class MUCClientProtocolTest(unittest.TestCase): 2233 + nodes = xpath.queryForNodes(query, iq) 2234 + self.assertNotIdentical(None, nodes, 'Bad configure request') 2235 + destroy = nodes[0] 2236 + - self.assertEquals('Time to leave', unicode(destroy.reason)) 2237 + + self.assertEquals('Time to leave', str(destroy.reason)) 2238 + 2239 + response = toResponse(iq, 'result') 2240 + self.stub.send(response) 2241 + diff --git a/wokkel/test/test_server.py b/wokkel/test/test_server.py 2242 + index 3e3c923..1efb6e5 100644 2243 + --- a/wokkel/test/test_server.py 2244 + +++ b/wokkel/test/test_server.py 2245 + @@ -8,7 +8,11 @@ Tests for L{wokkel.server}. 2246 + from __future__ import division, absolute_import 2247 + from twisted.internet import defer 2248 + from twisted.python import failure 2249 + -from twisted.test.proto_helpers import StringTransport 2250 + +try: 2251 + + from twisted.internet.testing import StringTransport 2252 + +except ImportError: 2253 + + from twisted.test.proto_helpers import StringTransport 2254 + + 2255 + from twisted.trial import unittest 2256 + from twisted.words.protocols.jabber import error, jid, xmlstream 2257 + from twisted.words.xish import domish 2258 + diff --git a/wokkel/test/test_shim.py b/wokkel/test/test_shim.py 2259 + index ded4679..d3b76cf 100644 2260 + --- a/wokkel/test/test_shim.py 2261 + +++ b/wokkel/test/test_shim.py 2262 + @@ -9,7 +9,6 @@ Tests for {wokkel.shim}. 2263 + 2264 + from __future__ import division, absolute_import 2265 + 2266 + -from twisted.python.compat import unicode 2267 + from twisted.trial import unittest 2268 + 2269 + from wokkel import shim 2270 + @@ -36,7 +35,7 @@ class HeadersTest(unittest.TestCase): 2271 + self.assertEquals(NS_SHIM, header.uri) 2272 + self.assertEquals('header', header.name) 2273 + self.assertEquals('Urgency', header['name']) 2274 + - self.assertEquals('high', unicode(header)) 2275 + + self.assertEquals('high', str(header)) 2276 + 2277 + 2278 + def test_headerRepeated(self): 2279 + @@ -47,7 +46,7 @@ class HeadersTest(unittest.TestCase): 2280 + ('Collection', 'node2')]) 2281 + elements = list(headers.elements()) 2282 + self.assertEquals(2, len(elements)) 2283 + - collections = set((unicode(element) for element in elements 2284 + + collections = set((str(element) for element in elements 2285 + if element['name'] == 'Collection')) 2286 + self.assertIn('node1', collections) 2287 + self.assertIn('node2', collections) 2288 + diff --git a/wokkel/test/test_xmppim.py b/wokkel/test/test_xmppim.py 2289 + index faab8ed..0d4fdbf 100644 2290 + --- a/wokkel/test/test_xmppim.py 2291 + +++ b/wokkel/test/test_xmppim.py 2292 + @@ -9,7 +9,6 @@ from __future__ import division, absolute_import 2293 + 2294 + from twisted.internet import defer 2295 + from twisted.trial import unittest 2296 + -from twisted.python.compat import unicode 2297 + from twisted.words.protocols.jabber import error 2298 + from twisted.words.protocols.jabber.jid import JID 2299 + from twisted.words.protocols.jabber.xmlstream import toResponse 2300 + @@ -55,7 +54,7 @@ class PresenceClientProtocolTest(unittest.TestCase): 2301 + self.assertEquals(None, presence.uri) 2302 + self.assertEquals("user@example.com", presence.getAttribute('to')) 2303 + self.assertEquals("unavailable", presence.getAttribute('type')) 2304 + - self.assertEquals("Disconnected", unicode(presence.status)) 2305 + + self.assertEquals("Disconnected", str(presence.status)) 2306 + 2307 + def test_unavailableBroadcast(self): 2308 + """ 2309 + @@ -298,9 +297,9 @@ class PresenceProtocolTest(unittest.TestCase): 2310 + element = self.output[-1] 2311 + self.assertEquals("user@example.com", element.getAttribute('to')) 2312 + self.assertIdentical(None, element.getAttribute('type')) 2313 + - self.assertEquals(u'chat', unicode(element.show)) 2314 + - self.assertEquals(u'Talk to me!', unicode(element.status)) 2315 + - self.assertEquals(u'50', unicode(element.priority)) 2316 + + self.assertEquals(u'chat', str(element.show)) 2317 + + self.assertEquals(u'Talk to me!', str(element.status)) 2318 + + self.assertEquals(u'50', str(element.priority)) 2319 + 2320 + def test_availableLanguages(self): 2321 + """ 2322 + @@ -314,19 +313,19 @@ class PresenceProtocolTest(unittest.TestCase): 2323 + element = self.output[-1] 2324 + self.assertEquals("user@example.com", element.getAttribute('to')) 2325 + self.assertIdentical(None, element.getAttribute('type')) 2326 + - self.assertEquals(u'chat', unicode(element.show)) 2327 + + self.assertEquals(u'chat', str(element.show)) 2328 + 2329 + statuses = {} 2330 + for status in element.elements(): 2331 + if status.name == 'status': 2332 + lang = status.getAttribute((NS_XML, 'lang')) 2333 + - statuses[lang] = unicode(status) 2334 + + statuses[lang] = str(status) 2335 + 2336 + self.assertIn(None, statuses) 2337 + self.assertEquals(u'Talk to me!', statuses[None]) 2338 + self.assertIn('nl', statuses) 2339 + self.assertEquals(u'Praat met me!', statuses['nl']) 2340 + - self.assertEquals(u'50', unicode(element.priority)) 2341 + + self.assertEquals(u'50', str(element.priority)) 2342 + 2343 + 2344 + def test_availableSender(self): 2345 + @@ -363,7 +362,7 @@ class PresenceProtocolTest(unittest.TestCase): 2346 + self.assertEquals(None, element.uri) 2347 + self.assertEquals("user@example.com", element.getAttribute('to')) 2348 + self.assertEquals("unavailable", element.getAttribute('type')) 2349 + - self.assertEquals("Disconnected", unicode(element.status)) 2350 + + self.assertEquals("Disconnected", str(element.status)) 2351 + 2352 + 2353 + def test_unavailableBroadcast(self): 2354 + @@ -568,7 +567,7 @@ class RosterItemTest(unittest.TestCase): 2355 + foundGroups = set() 2356 + for child in element.elements(): 2357 + if child.uri == NS_ROSTER and child.name == 'group': 2358 + - foundGroups.add(unicode(child)) 2359 + + foundGroups.add(str(child)) 2360 + 2361 + self.assertEqual(groups, foundGroups) 2362 + 2363 + diff --git a/wokkel/xmppim.py b/wokkel/xmppim.py 2364 + index e6af929..683577b 100644 2365 + --- a/wokkel/xmppim.py 2366 + +++ b/wokkel/xmppim.py 2367 + @@ -15,7 +15,6 @@ from __future__ import division, absolute_import 2368 + import warnings 2369 + 2370 + from twisted.internet import defer 2371 + -from twisted.python.compat import iteritems, itervalues, unicode 2372 + from twisted.words.protocols.jabber import error 2373 + from twisted.words.protocols.jabber.jid import JID 2374 + from twisted.words.xish import domish 2375 + @@ -48,20 +47,20 @@ class AvailablePresence(Presence): 2376 + self.addElement('show', content=show) 2377 + 2378 + if statuses is not None: 2379 + - for lang, status in iteritems(statuses): 2380 + + for lang, status in statuses.items(): 2381 + s = self.addElement('status', content=status) 2382 + if lang: 2383 + s[(NS_XML, "lang")] = lang 2384 + 2385 + if priority != 0: 2386 + - self.addElement('priority', content=unicode(int(priority))) 2387 + + self.addElement('priority', content=str(int(priority))) 2388 + 2389 + class UnavailablePresence(Presence): 2390 + def __init__(self, to=None, statuses=None): 2391 + Presence.__init__(self, to, type='unavailable') 2392 + 2393 + if statuses is not None: 2394 + - for lang, status in iteritems(statuses): 2395 + + for lang, status in statuses.items(): 2396 + s = self.addElement('status', content=status) 2397 + if lang: 2398 + s[(NS_XML, "lang")] = lang 2399 + @@ -76,7 +75,7 @@ class PresenceClientProtocol(XMPPHandler): 2400 + for element in presence.elements(): 2401 + if element.name == 'status': 2402 + lang = element.getAttribute((NS_XML, 'lang')) 2403 + - text = unicode(element) 2404 + + text = str(element) 2405 + statuses[lang] = text 2406 + return statuses 2407 + 2408 + @@ -92,14 +91,14 @@ class PresenceClientProtocol(XMPPHandler): 2409 + def _onPresenceAvailable(self, presence): 2410 + entity = JID(presence["from"]) 2411 + 2412 + - show = unicode(presence.show or '') 2413 + + show = str(presence.show or '') 2414 + if show not in ['away', 'xa', 'chat', 'dnd']: 2415 + show = None 2416 + 2417 + statuses = self._getStatuses(presence) 2418 + 2419 + try: 2420 + - priority = int(unicode(presence.priority or '')) or 0 2421 + + priority = int(str(presence.priority or '')) or 0 2422 + except ValueError: 2423 + priority = 0 2424 + 2425 + @@ -133,14 +132,14 @@ class PresenceClientProtocol(XMPPHandler): 2426 + @type entity: {JID} 2427 + @param show: detailed presence information. One of C{'away'}, C{'xa'}, 2428 + C{'chat'}, C{'dnd'} or C{None}. 2429 + - @type show: C{str} or C{NoneType} 2430 + + @type show: L{str} or C{NoneType} 2431 + @param statuses: dictionary of natural language descriptions of the 2432 + availability status, keyed by the language 2433 + descriptor. A status without a language 2434 + specified, is keyed with C{None}. 2435 + - @type statuses: C{dict} 2436 + + @type statuses: L{dict} 2437 + @param priority: priority level of the resource. 2438 + - @type priority: C{int} 2439 + + @type priority: L{int} 2440 + """ 2441 + 2442 + def unavailableReceived(self, entity, statuses=None): 2443 + @@ -153,7 +152,7 @@ class PresenceClientProtocol(XMPPHandler): 2444 + availability status, keyed by the language 2445 + descriptor. A status without a language 2446 + specified, is keyed with C{None}. 2447 + - @type statuses: C{dict} 2448 + + @type statuses: L{dict} 2449 + """ 2450 + 2451 + def subscribedReceived(self, entity): 2452 + @@ -196,14 +195,14 @@ class PresenceClientProtocol(XMPPHandler): 2453 + @type entity: {JID} 2454 + @param show: optional detailed presence information. One of C{'away'}, 2455 + C{'xa'}, C{'chat'}, C{'dnd'}. 2456 + - @type show: C{str} 2457 + + @type show: L{str} 2458 + @param statuses: dictionary of natural language descriptions of the 2459 + availability status, keyed by the language 2460 + descriptor. A status without a language 2461 + specified, is keyed with C{None}. 2462 + - @type statuses: C{dict} 2463 + + @type statuses: L{dict} 2464 + @param priority: priority level of the resource. 2465 + - @type priority: C{int} 2466 + + @type priority: L{int} 2467 + """ 2468 + self.send(AvailablePresence(entity, show, statuses, priority)) 2469 + 2470 + @@ -217,7 +216,7 @@ class PresenceClientProtocol(XMPPHandler): 2471 + availability status, keyed by the language 2472 + descriptor. A status without a language 2473 + specified, is keyed with C{None}. 2474 + - @type statuses: C{dict} 2475 + + @type statuses: L{dict} 2476 + """ 2477 + self.send(UnavailablePresence(entity, statuses)) 2478 + 2479 + @@ -275,19 +274,19 @@ class AvailabilityPresence(BasePresence): 2480 + L{SubscriptionPresence}). 2481 + 2482 + @ivar available: The availability being communicated. 2483 + - @type available: C{bool} 2484 + + @type available: L{bool} 2485 + @ivar show: More specific availability. Can be one of C{'chat'}, C{'away'}, 2486 + C{'xa'}, C{'dnd'} or C{None}. 2487 + - @type show: C{str} or C{NoneType} 2488 + + @type show: L{str} or C{NoneType} 2489 + @ivar statuses: Natural language texts to detail the (un)availability. 2490 + These are represented as a mapping from language code 2491 + - (C{str} or C{None}) to the corresponding text (C{unicode}). 2492 + + (L{str} or C{None}) to the corresponding text (L{str}). 2493 + If the key is C{None}, the associated text is in the 2494 + default language. 2495 + - @type statuses: C{dict} 2496 + + @type statuses: L{dict} 2497 + @ivar priority: Priority level for this resource. Must be between -128 and 2498 + 127. Defaults to 0. 2499 + - @type priority: C{int} 2500 + + @type priority: L{int} 2501 + """ 2502 + 2503 + childParsers = {(None, 'show'): '_childParser_show', 2504 + @@ -309,7 +308,7 @@ class AvailabilityPresence(BasePresence): 2505 + if None in self.statuses: 2506 + return self.statuses[None] 2507 + elif self.statuses: 2508 + - for status in itervalues(self.status): 2509 + + for status in self.status.values(): 2510 + return status 2511 + else: 2512 + return None 2513 + @@ -318,20 +317,20 @@ class AvailabilityPresence(BasePresence): 2514 + 2515 + 2516 + def _childParser_show(self, element): 2517 + - show = unicode(element) 2518 + + show = str(element) 2519 + if show in ('chat', 'away', 'xa', 'dnd'): 2520 + self.show = show 2521 + 2522 + 2523 + def _childParser_status(self, element): 2524 + lang = element.getAttribute((NS_XML, 'lang'), None) 2525 + - text = unicode(element) 2526 + + text = str(element) 2527 + self.statuses[lang] = text 2528 + 2529 + 2530 + def _childParser_priority(self, element): 2531 + try: 2532 + - self.priority = int(unicode(element)) 2533 + + self.priority = int(str(element)) 2534 + except ValueError: 2535 + pass 2536 + 2537 + @@ -353,9 +352,9 @@ class AvailabilityPresence(BasePresence): 2538 + if self.show in ('chat', 'away', 'xa', 'dnd'): 2539 + presence.addElement('show', content=self.show) 2540 + if self.priority != 0: 2541 + - presence.addElement('priority', content=unicode(self.priority)) 2542 + + presence.addElement('priority', content=str(self.priority)) 2543 + 2544 + - for lang, text in iteritems(self.statuses): 2545 + + for lang, text in self.statuses.items(): 2546 + status = presence.addElement('status', content=text) 2547 + if lang: 2548 + status[(NS_XML, 'lang')] = lang 2549 + @@ -400,7 +399,7 @@ class BasePresenceProtocol(XMPPHandler): 2550 + 2551 + @cvar presenceTypeParserMap: Maps presence stanza types to their respective 2552 + stanza parser classes (derived from L{Stanza}). 2553 + - @type presenceTypeParserMap: C{dict} 2554 + + @type presenceTypeParserMap: L{dict} 2555 + """ 2556 + 2557 + presenceTypeParserMap = {} 2558 + @@ -515,15 +514,15 @@ class PresenceProtocol(BasePresenceProtocol): 2559 + 2560 + @param show: Optional detailed presence information. One of C{'away'}, 2561 + C{'xa'}, C{'chat'}, C{'dnd'}. 2562 + - @type show: C{str} 2563 + + @type show: L{str} 2564 + 2565 + @param statuses: Mapping of natural language descriptions of the 2566 + availability status, keyed by the language descriptor. A status 2567 + without a language specified, is keyed with C{None}. 2568 + - @type statuses: C{dict} 2569 + + @type statuses: L{dict} 2570 + 2571 + @param priority: priority level of the resource. 2572 + - @type priority: C{int} 2573 + + @type priority: L{int} 2574 + """ 2575 + presence = AvailabilityPresence(recipient=recipient, sender=sender, 2576 + show=show, statuses=statuses, 2577 + @@ -541,7 +540,7 @@ class PresenceProtocol(BasePresenceProtocol): 2578 + @param statuses: dictionary of natural language descriptions of the 2579 + availability status, keyed by the language descriptor. A status 2580 + without a language specified, is keyed with C{None}. 2581 + - @type statuses: C{dict} 2582 + + @type statuses: L{dict} 2583 + """ 2584 + presence = AvailabilityPresence(recipient=recipient, sender=sender, 2585 + available=False, statuses=statuses) 2586 + @@ -617,25 +616,25 @@ class RosterItem(object): 2587 + @ivar entity: The JID of the contact. 2588 + @type entity: L{JID} 2589 + @ivar name: The associated nickname for this contact. 2590 + - @type name: C{unicode} 2591 + + @type name: L{str} 2592 + @ivar subscriptionTo: Subscription state to contact's presence. If C{True}, 2593 + the roster owner is subscribed to the presence 2594 + information of the contact. 2595 + - @type subscriptionTo: C{bool} 2596 + + @type subscriptionTo: L{bool} 2597 + @ivar subscriptionFrom: Contact's subscription state. If C{True}, the 2598 + contact is subscribed to the presence information 2599 + of the roster owner. 2600 + - @type subscriptionFrom: C{bool} 2601 + + @type subscriptionFrom: L{bool} 2602 + @ivar pendingOut: Whether the subscription request to this contact is 2603 + pending. 2604 + - @type pendingOut: C{bool} 2605 + + @type pendingOut: L{bool} 2606 + @ivar groups: Set of groups this contact is categorized in. Groups are 2607 + - represented by an opaque identifier of type C{unicode}. 2608 + - @type groups: C{set} 2609 + + represented by an opaque identifier of type L{str}. 2610 + + @type groups: L{set} 2611 + @ivar approved: Signals pre-approved subscription. 2612 + - @type approved: C{bool} 2613 + + @type approved: L{bool} 2614 + @ivar remove: Signals roster item removal. 2615 + - @type remove: C{bool} 2616 + + @type remove: L{bool} 2617 + """ 2618 + 2619 + __subscriptionStates = {(False, False): None, 2620 + @@ -755,7 +754,7 @@ class RosterItem(object): 2621 + item.approved = element.getAttribute('approved') in ('true', '1') 2622 + for subElement in domish.generateElementsQNamed(element.children, 2623 + 'group', NS_ROSTER): 2624 + - item.groups.add(unicode(subElement)) 2625 + + item.groups.add(str(subElement)) 2626 + return item 2627 + 2628 + 2629 + @@ -771,7 +770,7 @@ class RosterRequest(Request): 2630 + retrieving the roster as a delta from a known cached version. This 2631 + should only be set if the recipient is known to support roster 2632 + versioning. 2633 + - @type version: C{unicode} 2634 + + @type version: L{str} 2635 + 2636 + @ivar rosterSet: If set, this is a roster set request. This flag is used 2637 + to make sure some attributes of the roster item are not rendered by 2638 + @@ -821,7 +820,7 @@ class Roster(dict): 2639 + identifier for this version of the roster. 2640 + 2641 + @ivar version: Roster version identifier. 2642 + - @type version: C{unicode}. 2643 + + @type version: L{str}. 2644 + """ 2645 + 2646 + version = None 2647 + @@ -892,7 +891,7 @@ class RosterClientProtocol(XMPPHandler, IQHandlerMixin): 2648 + known to support roster versioning. If there is no (valid) cached 2649 + version of the roster, but roster versioning is desired, 2650 + C{version} should be set to the empty string (C{u''}). 2651 + - @type version: C{unicode} 2652 + + @type version: L{str} 2653 + 2654 + @return: Roster as a mapping from L{JID} to L{RosterItem}. 2655 + @rtype: L{twisted.internet.defer.Deferred} 2656 + @@ -1023,11 +1022,11 @@ class Message(Stanza): 2657 + 2658 + 2659 + def _childParser_body(self, element): 2660 + - self.body = unicode(element) 2661 + + self.body = str(element) 2662 + 2663 + 2664 + def _childParser_subject(self, element): 2665 + - self.subject = unicode(element) 2666 + + self.subject = str(element) 2667 + 2668 + 2669 + def toElement(self): 2670 + -- 2671 + 2.44.1
+72
pkgs/development/python-modules/wokkel/default.nix
··· 1 + { 2 + lib, 3 + buildPythonPackage, 4 + fetchFromGitHub, 5 + setuptools, 6 + incremental, 7 + python-dateutil, 8 + twisted, 9 + }: 10 + 11 + buildPythonPackage rec { 12 + pname = "wokkel"; 13 + version = "18.0.0"; 14 + pyproject = true; 15 + 16 + src = fetchFromGitHub { 17 + owner = "ralphm"; 18 + repo = "wokkel"; 19 + tag = version; 20 + hash = "sha256-vIs9Zo8o7TWUTIqJG9SEHQd63aJFCRhj6k45IuxoCes="; 21 + }; 22 + 23 + patches = [ 24 + # Fixes compat with current-day twisted 25 + # https://github.com/ralphm/wokkel/pull/32 with all the CI & doc changes excluded 26 + ./0001-Remove-py2-compat.patch 27 + ]; 28 + 29 + postPatch = '' 30 + substituteInPlace wokkel/muc.py \ 31 + --replace-fail "twisted.python.constants" "constantly" 32 + ''; 33 + 34 + build-system = [ setuptools ]; 35 + 36 + dependencies = [ 37 + incremental 38 + python-dateutil 39 + twisted 40 + ]; 41 + 42 + nativeCheckInputs = [ twisted ]; 43 + 44 + checkPhase = '' 45 + runHook preCheck 46 + 47 + trial wokkel 48 + 49 + runHook postCheck 50 + ''; 51 + 52 + pythonImportsCheck = [ 53 + "twisted.plugins.server" 54 + "wokkel.disco" 55 + "wokkel.muc" 56 + "wokkel.pubsub" 57 + ]; 58 + 59 + meta = { 60 + description = "Twisted Jabber support library"; 61 + longDescription = '' 62 + Wokkel is collection of enhancements on top of the Twisted networking framework, written in Python. It mostly 63 + provides a testing ground for enhancements to the Jabber/XMPP protocol implementation as found in 64 + Twisted Words, that are meant to eventually move there. 65 + ''; 66 + homepage = "https://github.com/ralphm/wokkel"; # wokkel.ik.nu is dead 67 + changelog = "https://github.com/ralphm/wokkel/blob/${version}/NEWS.rst"; 68 + license = lib.licenses.mit; 69 + maintainers = [ lib.maintainers.ethancedwards8 ]; 70 + teams = [ lib.teams.ngi ]; 71 + }; 72 + }
+2 -2
pkgs/development/python-modules/xdis/default.nix
··· 11 11 12 12 buildPythonPackage rec { 13 13 pname = "xdis"; 14 - version = "6.1.3"; 14 + version = "6.1.4"; 15 15 pyproject = true; 16 16 17 17 disabled = pythonOlder "3.6"; ··· 20 20 owner = "rocky"; 21 21 repo = "python-xdis"; 22 22 tag = version; 23 - hash = "sha256-fdLZg3MFMS9EIPC5EPE8DAT6K5a6l780msCfzTiZwoo="; 23 + hash = "sha256-thgHaxEEXmkrJlkl9kF6ocKRrnWOuESTxQrdtM+uH1o="; 24 24 }; 25 25 26 26 build-system = [
+9
pkgs/development/skaware-packages/skalibs/default.nix
··· 33 33 34 34 ] 35 35 ++ lib.optionals (stdenv.buildPlatform.config != stdenv.hostPlatform.config) [ 36 + # There's a fallback path for BSDs. 37 + "--with-sysdep-procselfexe=${ 38 + if stdenv.hostPlatform.isLinux then 39 + "/proc/self/exe" 40 + else if stdenv.hostPlatform.isSunOS then 41 + "/proc/self/path/a.out" 42 + else 43 + "none" 44 + }" 36 45 # ./configure: sysdep posixspawnearlyreturn cannot be autodetected 37 46 # when cross-compiling. Please manually provide a value with the 38 47 # --with-sysdep-posixspawnearlyreturn=yes|no|... option.
+1
pkgs/top-level/aliases.nix
··· 773 773 svn_all_fast_export = svn-all-fast-export; 774 774 topGit = top-git; 775 775 }; # Added 2021-01-14 776 + github-copilot-cli = throw "'github-copilot-cli' has been removed because GitHub has replaced it with 'gh-copilot'."; # Added 2025-06-01 776 777 givaro_3 = throw "'givaro_3' has been removed as it is end-of-life. Consider using the up-to-date 'givaro' instead"; # Added 2025-05-07 777 778 givaro_3_7 = throw "'givaro_3_7' has been removed as it is end-of-life. Consider using the up-to-date 'givaro' instead"; # Added 2025-05-07 778 779 gkraken = throw "'gkraken' has been deprecated by upstream. Consider using the replacement 'coolercontrol' instead."; # Added 2024-11-22
+2
pkgs/top-level/python-packages.nix
··· 19149 19149 19150 19150 wn = callPackage ../development/python-modules/wn { }; 19151 19151 19152 + wokkel = callPackage ../development/python-modules/wokkel { }; 19153 + 19152 19154 wolf-comm = callPackage ../development/python-modules/wolf-comm { }; 19153 19155 19154 19156 woob = callPackage ../development/python-modules/woob { };