diff --git a/.github/workflows/check-shell.yml b/.github/workflows/check-shell.yml index b8cbe062b6a9..fc90a449fb34 100644 --- a/.github/workflows/check-shell.yml +++ b/.github/workflows/check-shell.yml @@ -44,5 +44,11 @@ jobs: - uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31 + - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 + with: + # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere. + name: nixpkgs-ci + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + - name: Build shell run: nix-build untrusted/ci -A shell diff --git a/.github/workflows/lib-tests.yml b/.github/workflows/lib-tests.yml index d176a76411f8..f11dca13581d 100644 --- a/.github/workflows/lib-tests.yml +++ b/.github/workflows/lib-tests.yml @@ -32,6 +32,12 @@ jobs: with: extra_nix_config: sandbox = true + - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 + with: + # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere. + name: nixpkgs-ci + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + - name: Building Nixpkgs lib-tests run: | nix-build untrusted/ci -A lib-tests diff --git a/ci/OWNERS b/ci/OWNERS index 716dfd2df5b7..937c8d8af2d7 100644 --- a/ci/OWNERS +++ b/ci/OWNERS @@ -15,12 +15,9 @@ # CI /.github/*_TEMPLATE* @SigmaSquadron -/.github/actions @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther -/.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther -/.github/workflows/check-format.yml @infinisil @wolfgangwalther -/.github/workflows/codeowners-v2.yml @infinisil @wolfgangwalther -/.github/workflows/nixpkgs-vet.yml @infinisil @philiptaron @wolfgangwalther -/ci @infinisil @philiptaron @NixOS/Security @wolfgangwalther +/.github/actions @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron +/.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron +/ci @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron /ci/OWNERS @infinisil @philiptaron # Development support diff --git a/doc/release-notes/rl-2505.section.md b/doc/release-notes/rl-2505.section.md index 8a395089426d..73bfea0370de 100644 --- a/doc/release-notes/rl-2505.section.md +++ b/doc/release-notes/rl-2505.section.md @@ -28,6 +28,10 @@ - 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) - Packages that used to depend on Mesa for libgbm or libdri should use `libgbm` or `dri-pkgconfig-stub` as inputs, respectively +- GNU Taler has been updated to version 1.0. + This marks a significant milestone as the GNU Taler payment system is now available in Swiss Francs for individuals and businesses in Switzerland. + For more details, see the [upstream release notes](https://www.taler.net/en/news/2025-01.html). + - 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. - Emacs has been updated to 30.1. diff --git a/lib/tests/maintainers.nix b/lib/tests/maintainers.nix index 1d3fd5630c26..600d42054113 100644 --- a/lib/tests/maintainers.nix +++ b/lib/tests/maintainers.nix @@ -54,7 +54,7 @@ let missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers); - success = pkgs.runCommand "checked-maintainers-success" { } ">$out"; + success = pkgs.runCommand "checked-maintainers-success" { } "mkdir $out"; failure = pkgs.runCommand "checked-maintainers-failure" diff --git a/lib/tests/release.nix b/lib/tests/release.nix index 7ab6c24e38e6..51260ea0300b 100644 --- a/lib/tests/release.nix +++ b/lib/tests/release.nix @@ -28,5 +28,14 @@ let in pkgsBB.symlinkJoin { name = "nixpkgs-lib-tests"; - paths = map testWithNix nixVersions; + paths = map testWithNix nixVersions ++ [ + (import ./maintainers.nix { + inherit pkgs; + lib = import ../.; + }) + (import ./teams.nix { + inherit pkgs; + lib = import ../.; + }) + ]; } diff --git a/lib/tests/test-with-nix.nix b/lib/tests/test-with-nix.nix index 0be65a743f00..4f9aa53f83dd 100644 --- a/lib/tests/test-with-nix.nix +++ b/lib/tests/test-with-nix.nix @@ -19,14 +19,6 @@ pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}" buildInputs = [ (import ./check-eval.nix) (import ./fetchers.nix) - (import ./maintainers.nix { - inherit pkgs; - lib = import ../.; - }) - (import ./teams.nix { - inherit pkgs; - lib = import ../.; - }) (import ../path/tests { inherit pkgs; }) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index d2f8aa0900da..06888aecad83 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -2644,6 +2644,12 @@ githubId = 9315; name = "Zhong Jianxin"; }; + b-m-f = { + email = "maximilian@sodawa.com"; + github = "b-m-f"; + githubId = 2843450; + name = "Maximilian Ehlers"; + }; b-rodrigues = { email = "bruno@brodrigues.co"; github = "b-rodrigues"; @@ -15567,6 +15573,12 @@ name = "Max Niederman"; keys = [ { fingerprint = "1DE4 424D BF77 1192 5DC4 CF5E 9AED 8814 81D8 444E"; } ]; }; + max06 = { + email = "max06.net@outlook.com"; + github = "max06"; + githubId = 7556827; + name = "Flo"; + }; maxbrunet = { email = "max@brnt.mx"; github = "maxbrunet"; @@ -18099,8 +18111,10 @@ github = "numinit"; githubId = 369111; keys = [ - # >=2025 + # >=2025, stays in one place { fingerprint = "FD28 F9C9 81C5 D78E 56E8 8311 5C3E B94D 198F 1491"; } + # >=2025, travels with me + { fingerprint = "C48F 475F 30A9 B192 3213 D5D5 C6E2 4809 77B2 F2F4"; } # <=2024 { fingerprint = "190B DA97 F616 DE35 6899 ED17 F819 F1AF 2FC1 C1FF"; } ]; diff --git a/nixos/modules/programs/vivid.nix b/nixos/modules/programs/vivid.nix index 06c618e23fc1..c0fb5945614a 100644 --- a/nixos/modules/programs/vivid.nix +++ b/nixos/modules/programs/vivid.nix @@ -59,5 +59,5 @@ in ]; }; - meta.maintainers = with lib.maintainers; [ blackheaven ]; + meta.maintainers = with lib.maintainers; [ gdifolco ]; } diff --git a/nixos/modules/services/finance/libeufin/common.nix b/nixos/modules/services/finance/libeufin/common.nix index d5e72b8ad0c5..4e0a6bffe02f 100644 --- a/nixos/modules/services/finance/libeufin/common.nix +++ b/nixos/modules/services/finance/libeufin/common.nix @@ -35,6 +35,7 @@ libeufinComponent: cfg.settings."libeufin-${libeufinComponent}db-postgres".CONFIG; bankPort = cfg.settings."${if isNexus then "nexus-httpd" else "libeufin-bank"}".PORT; + bankHost = lib.elemAt (lib.splitString "/" cfg.settings.libeufin-bank.BASE_URL) 2; in lib.mkIf cfg.enable { services.libeufin.settings = cfg.settings; @@ -82,7 +83,7 @@ libeufinComponent: args = lib.cli.toGNUCommandLineShell { } { c = configFile; inherit (account) username password name; - payto_uri = "payto://x-taler-bank/bank:${toString bankPort}/${account.username}?receiver-name=${account.name}"; + payto_uri = "payto://x-taler-bank/${bankHost}/${account.username}?receiver-name=${account.name}"; exchange = lib.toLower account.username == "exchange"; }; in diff --git a/nixos/modules/services/finance/taler/common.nix b/nixos/modules/services/finance/taler/common.nix index c6ade43084fd..891562c90ff8 100644 --- a/nixos/modules/services/finance/taler/common.nix +++ b/nixos/modules/services/finance/taler/common.nix @@ -51,7 +51,7 @@ in (lib.genAttrs (map (n: "taler-${talerComponent}-${n}") services) (name: { serviceConfig = { DynamicUser = true; - User = name; + User = dbName; Group = groupName; ExecStart = toString [ (lib.getExe' cfg.package name) @@ -85,6 +85,7 @@ in Type = "oneshot"; DynamicUser = true; User = dbName; + Group = groupName; Restart = "on-failure"; RestartSec = "5s"; }; @@ -116,7 +117,7 @@ in services.postgresql = { enable = true; ensureDatabases = [ dbName ]; - ensureUsers = map (service: { name = "taler-${talerComponent}-${service}"; }) servicesDB ++ [ + ensureUsers = [ { name = dbName; ensureDBOwnership = true; diff --git a/nixos/modules/services/finance/taler/exchange.nix b/nixos/modules/services/finance/taler/exchange.nix index 16428a43d78d..21e10d0f2002 100644 --- a/nixos/modules/services/finance/taler/exchange.nix +++ b/nixos/modules/services/finance/taler/exchange.nix @@ -25,6 +25,8 @@ let "secmod-eddsa" "secmod-rsa" ]; + + configFile = config.environment.etc."taler/taler.conf".source; in { @@ -44,11 +46,19 @@ in options = { # TODO: do we want this to be a sub-attribute or only define the exchange set of options here exchange = { - AML_THRESHOLD = lib.mkOption { + CURRENCY = lib.mkOption { + type = lib.types.nonEmptyStr; + description = '' + The currency which the exchange will operate with. This cannot be changed later. + ''; + }; + CURRENCY_ROUND_UNIT = lib.mkOption { type = lib.types.str; - default = "${cfgTaler.settings.taler.CURRENCY}:1000000"; - defaultText = "1000000 in {option}`CURRENCY`"; - description = "Monthly transaction volume until an account is considered suspicious and flagged for AML review."; + default = "${cfg.settings.exchange.CURRENCY}:0.01"; + defaultText = "0.01 in {option}`CURRENCY`"; + description = '' + Smallest amount in this currency that can be transferred using the underlying RTGS. For example: "EUR:0.01" or "JPY:1" + ''; }; DB = lib.mkOption { type = lib.types.enum [ "postgres" ]; @@ -131,24 +141,8 @@ in after = [ "taler-exchange-httpd.service" ]; }; - # Taken from https://docs.taler.net/taler-exchange-manual.html#exchange-database-setup - # TODO: Why does aggregator need DELETE? - systemd.services."taler-${talerComponent}-dbinit".script = - let - deletePerm = name: lib.optionalString (name == "aggregator") ",DELETE"; - dbScript = pkgs.writers.writeText "taler-exchange-db-permissions.sql" ( - lib.pipe servicesDB [ - (map (name: '' - GRANT SELECT,INSERT,UPDATE${deletePerm name} ON ALL TABLES IN SCHEMA exchange TO "taler-exchange-${name}"; - GRANT USAGE ON SCHEMA exchange TO "taler-exchange-${name}"; - '')) - lib.concatStrings - ] - ); - in - '' - ${lib.getExe' cfg.package "taler-exchange-dbinit"} - psql -U taler-exchange-httpd -f ${dbScript} - ''; + systemd.services."taler-${talerComponent}-dbinit".script = '' + ${lib.getExe' cfg.package "taler-exchange-dbinit"} -c ${configFile} + ''; }; } diff --git a/nixos/modules/services/finance/taler/merchant.nix b/nixos/modules/services/finance/taler/merchant.nix index e5a2f2ce5d10..72b4a2a0b3c0 100644 --- a/nixos/modules/services/finance/taler/merchant.nix +++ b/nixos/modules/services/finance/taler/merchant.nix @@ -17,8 +17,10 @@ let "webhook" "wirewatch" "depositcheck" - "exchange" + "exchangekeyupdate" ]; + + configFile = config.environment.etc."taler/taler.conf".source; in { imports = [ @@ -88,21 +90,8 @@ in path = [ cfg.package ]; }; - systemd.services."taler-${talerComponent}-dbinit".script = - let - # NOTE: not documented, but is necessary - dbScript = pkgs.writers.writeText "taler-merchant-db-permissions.sql" ( - lib.concatStrings ( - map (name: '' - GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA merchant TO "taler-merchant-${name}"; - GRANT USAGE ON SCHEMA merchant TO "taler-merchant-${name}"; - '') servicesDB - ) - ); - in - '' - ${lib.getExe' cfg.package "taler-merchant-dbinit"} - psql -U taler-${talerComponent}-httpd -f ${dbScript} - ''; + systemd.services."taler-${talerComponent}-dbinit".script = '' + ${lib.getExe' cfg.package "taler-merchant-dbinit"} -c ${configFile} + ''; }; } diff --git a/nixos/modules/services/networking/monero.nix b/nixos/modules/services/networking/monero.nix index 1ef0c696e2c8..9b73fc9be0fa 100644 --- a/nixos/modules/services/networking/monero.nix +++ b/nixos/modules/services/networking/monero.nix @@ -32,6 +32,10 @@ let restricted-rpc=1 ''} + ${lib.optionalString (banlist != null) '' + ban-list=${banlist} + ''} + limit-rate-up=${toString limits.upload} limit-rate-down=${toString limits.download} max-concurrency=${toString limits.threads} @@ -64,6 +68,23 @@ in ''; }; + banlist = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = '' + Path to a text file containing IPs to block. + Useful to prevent DDoS/deanonymization attacks. + + https://github.com/monero-project/meta/issues/1124 + ''; + example = lib.literalExpression '' + builtins.fetchurl { + url = "https://raw.githubusercontent.com/rblaine95/monero-banlist/c6eb9413ddc777e7072d822f49923df0b2a94d88/block.txt"; + hash = ""; + }; + ''; + }; + mining.enable = lib.mkOption { type = lib.types.bool; default = false; @@ -225,7 +246,7 @@ in serviceConfig = { User = "monero"; Group = "monero"; - ExecStart = "${pkgs.monero-cli}/bin/monerod --config-file=${configFile} --non-interactive"; + ExecStart = "${lib.getExe' pkgs.monero-cli "monerod"} --config-file=${configFile} --non-interactive"; Restart = "always"; SuccessExitStatus = [ 0 diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index a91b390baa91..7a0bdb1888ec 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -529,6 +529,7 @@ in ft2-clone = runTest ./ft2-clone.nix; legit = runTest ./legit.nix; mimir = runTest ./mimir.nix; + galene = discoverTests (import ./galene.nix); gancio = runTest ./gancio.nix; garage = handleTest ./garage { }; gatus = runTest ./gatus.nix; diff --git a/nixos/tests/galene.nix b/nixos/tests/galene.nix new file mode 100644 index 000000000000..8805a088a56c --- /dev/null +++ b/nixos/tests/galene.nix @@ -0,0 +1,211 @@ +let + makeTest = import ./make-test-python.nix; + galeneTestGroupsDir = "/var/lib/galene/groups"; + galeneTestGroupFile = "galene-test-config.json"; + galenePort = 8443; + galeneTestGroupAdminName = "admin"; + galeneTestGroupAdminPassword = "1234"; +in +{ + basic = makeTest ( + { pkgs, lib, ... }: + { + name = "galene-works"; + meta = { + inherit (pkgs.galene.meta) maintainers; + platforms = lib.platforms.linux; + }; + + nodes.machine = + { config, pkgs, ... }: + { + imports = [ ./common/x11.nix ]; + + services.xserver.enable = true; + + environment = { + # https://galene.org/INSTALL.html + etc.${galeneTestGroupFile}.source = (pkgs.formats.json { }).generate galeneTestGroupFile { + op = [ + { + username = galeneTestGroupAdminName; + password = galeneTestGroupAdminPassword; + } + ]; + other = [ { } ]; + }; + + systemPackages = with pkgs; [ + firefox + ]; + }; + + services.galene = { + enable = true; + insecure = true; + httpPort = galenePort; + groupsDir = galeneTestGroupsDir; + }; + }; + + enableOCR = true; + + testScript = '' + machine.wait_for_x() + + with subtest("galene starts"): + # Starts? + machine.wait_for_unit("galene") + + # Keeps running after startup? + machine.sleep(10) + machine.wait_for_unit("galene") + + # Reponds fine? + machine.succeed("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}' >&2") + + machine.succeed("cp -v /etc/${galeneTestGroupFile} ${galeneTestGroupsDir}/test.json >&2") + machine.wait_until_succeeds("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}/group/test/' >&2") + + with subtest("galene can join group"): + # Open site + machine.succeed("firefox --new-window 'http://localhost:${builtins.toString galenePort}/group/test/' >&2 &") + # Note: Firefox doesn't use a regular "-" in the window title, but "—" (Hex: 0xe2 0x80 0x94) + machine.wait_for_window("Test — Mozilla Firefox") + machine.send_key("ctrl-minus") + machine.send_key("ctrl-minus") + machine.send_key("alt-f10") + machine.wait_for_text(r"(Galène|Username|Password|Connect)") + machine.screenshot("galene-group-test-join") + + # Log in as admin + machine.send_chars("${galeneTestGroupAdminName}") + machine.send_key("tab") + machine.send_chars("${galeneTestGroupAdminPassword}") + machine.send_key("ret") + machine.sleep(5) + # Close "Remember credentials?" FF prompt + machine.send_key("esc") + machine.sleep(5) + machine.wait_for_text(r"(Enable|Share|Screen)") + machine.screenshot("galene-group-test-logged-in") + ''; + } + ); + + file-transfer = makeTest ( + { pkgs, lib, ... }: + { + name = "galene-file-transfer-works"; + meta = { + inherit (pkgs.galene-file-transfer.meta) maintainers; + platforms = lib.platforms.linux; + }; + + nodes.machine = + { config, pkgs, ... }: + { + imports = [ ./common/x11.nix ]; + + services.xserver.enable = true; + + environment = { + # https://galene.org/INSTALL.html + etc.${galeneTestGroupFile}.source = (pkgs.formats.json { }).generate galeneTestGroupFile { + op = [ + { + username = galeneTestGroupAdminName; + password = galeneTestGroupAdminPassword; + } + ]; + other = [ { } ]; + }; + + systemPackages = with pkgs; [ + firefox + galene-file-transfer + ]; + }; + + services.galene = { + enable = true; + insecure = true; + httpPort = galenePort; + groupsDir = galeneTestGroupsDir; + }; + }; + + enableOCR = true; + + testScript = '' + machine.wait_for_x() + + with subtest("galene starts"): + # Starts? + machine.wait_for_unit("galene") + + # Keeps running after startup? + machine.sleep(10) + machine.wait_for_unit("galene") + + # Reponds fine? + machine.succeed("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}' >&2") + + machine.succeed("cp -v /etc/${galeneTestGroupFile} ${galeneTestGroupsDir}/test.json >&2") + machine.wait_until_succeeds("curl -s -D - -o /dev/null 'http://localhost:${builtins.toString galenePort}/group/test/' >&2") + + with subtest("galene can join group"): + # Open site + machine.succeed("firefox --new-window 'http://localhost:${builtins.toString galenePort}/group/test/' >&2 &") + # Note: Firefox doesn't use a regular "-" in the window title, but "—" (Hex: 0xe2 0x80 0x94) + machine.wait_for_window("Test — Mozilla Firefox") + machine.send_key("ctrl-minus") + machine.send_key("ctrl-minus") + machine.send_key("alt-f10") + machine.wait_for_text(r"(Galène|Username|Password|Connect)") + machine.screenshot("galene-group-test-join") + + # Log in as admin + machine.send_chars("${galeneTestGroupAdminName}") + machine.send_key("tab") + machine.send_chars("${galeneTestGroupAdminPassword}") + machine.send_key("ret") + machine.sleep(5) + # Close "Remember credentials?" FF prompt + machine.send_key("esc") + machine.sleep(5) + machine.wait_for_text(r"(Enable|Share|Screen)") + machine.screenshot("galene-group-test-logged-in") + + with subtest("galene-file-transfer works"): + machine.succeed( + "galene-file-transfer " + + "-to '${galeneTestGroupAdminName}' " + + "-insecure 'http://localhost:${builtins.toString galenePort}/group/test/' " + + "${galeneTestGroupsDir}/test.json " # just try sending the groups file + + " >&2 &" + ) + machine.sleep(5) # Give pop-up some time to appear + machine.wait_for_text(r"(offered to send us a file|Accept|Reject|disclose your IP)") + machine.screenshot("galene-file-transfer-dislogue") + + # Focus on Accept button + machine.send_key("shift-tab") + machine.send_key("shift-tab") + machine.send_key("shift-tab") + machine.send_key("shift-tab") + + # Accept download + machine.sleep(2) + machine.send_key("ret") + + # Wait until complete & matching + machine.wait_until_succeeds( + "diff " + + "${galeneTestGroupsDir}/test.json " # original + + "/root/Downloads/test.json" # Received via file-transfer + ) + ''; + } + ); +} diff --git a/nixos/tests/taler/common/nodes.nix b/nixos/tests/taler/common/nodes.nix index 3e8b81ed5179..7da90ea528cb 100644 --- a/nixos/tests/taler/common/nodes.nix +++ b/nixos/tests/taler/common/nodes.nix @@ -55,14 +55,22 @@ rec { settings = { taler.CURRENCY = CURRENCY; }; - includes = [ ../conf/taler-accounts.conf ]; + includes = [ + ../conf/taler-accounts.conf + # The exchange requires a token from the bank, so its credentials + # need to be set at runtime + "/etc/taler/secrets/exchange-account.secret.conf" + ]; exchange = { enable = true; debug = true; openFirewall = true; + # https://docs.taler.net/taler-exchange-manual.html#coins-denomination-keys + # NOTE: use `taler-harness`, not `taler-wallet-cli` denominationConfig = lib.readFile ../conf/taler-denominations.conf; settings = { exchange = { + inherit CURRENCY; MASTER_PUBLIC_KEY = "2TQSTPFZBC2MC4E52NHPA050YXYG02VC3AB50QESM6JX1QJEYVQ0"; BASE_URL = "http://exchange:8081/"; }; @@ -103,7 +111,7 @@ rec { # WIRE_TYPE = "iban"; X_TALER_BANK_PAYTO_HOSTNAME = "bank:8082"; # IBAN_PAYTO_BIC = "SANDBOXX"; - BASE_URL = "bank:8082"; + BASE_URL = "http://bank:8082/"; # Allow creating new accounts ALLOW_REGISTRATION = "yes"; diff --git a/nixos/tests/taler/common/scripts.nix b/nixos/tests/taler/common/scripts.nix index 3860ae229070..cad9935fc98a 100644 --- a/nixos/tests/taler/common/scripts.nix +++ b/nixos/tests/taler/common/scripts.nix @@ -7,7 +7,7 @@ let cfgNodes = pkgs.callPackage ./nodes.nix { inherit lib; }; - bankConfig = nodes.bank.config.environment.etc."libeufin/libeufin.conf".source; + bankConfig = nodes.bank.environment.etc."libeufin/libeufin.conf".source; inherit (cfgNodes) CURRENCY FIAT_CURRENCY; in @@ -68,6 +68,31 @@ in + command ) + # https://docs.taler.net/core/api-corebank.html#authentication + def create_token(machine, username, password): + """Create a read-write bank access token for a user""" + response = succeed(machine, [ + "curl -X POST", + f"-u {username}:{password}", + "-H 'Content-Type: application/json'", + """ + --data '{ "scope": "readwrite" }' + """, + f"-sSfL 'http://bank:8082/accounts/{username}/token'" + ]) + return json.loads(response)["access_token"] + + + # Basic auth is deprecated, so exchange credentials must be set at + # runtime because it requires a token from the bank. + def create_exchange_auth(token: str): + template = f""" + [exchange-accountcredentials-test] + WIRE_GATEWAY_URL = http://bank:8082/accounts/exchange/taler-wire-gateway/ + WIRE_GATEWAY_AUTH_METHOD = BEARER + TOKEN = "{token}" + """ + return "\n".join([line.strip() for line in template.splitlines()]) def verify_balance(balanceWanted: str): """Compare Taler CLI wallet balance with expected amount""" @@ -84,14 +109,14 @@ in client.succeed(f"echo Withdraw successfully made. New balance: {balanceWanted}") - def verify_conversion(regionalWanted: str): + def verify_conversion(regionalWanted: str, accessToken: str): """Compare converted Libeufin Nexus funds with expected regional currency""" # Get transaction details response = json.loads( succeed(bank, [ "curl -sSfL", + f"-H 'Authorization: Bearer {accessToken}'", # TODO: get exchange from config? - "-u exchange:exchange", "http://bank:8082/accounts/exchange/transactions" ]) ) diff --git a/nixos/tests/taler/conf/taler-accounts.conf b/nixos/tests/taler/conf/taler-accounts.conf index 9246c25a83ad..8cfb482eb063 100644 --- a/nixos/tests/taler/conf/taler-accounts.conf +++ b/nixos/tests/taler/conf/taler-accounts.conf @@ -2,9 +2,3 @@ PAYTO_URI = payto://x-taler-bank/bank:8082/exchange?receiver-name=Exchange ENABLE_DEBIT = YES ENABLE_CREDIT = YES - -[exchange-accountcredentials-test] -WIRE_GATEWAY_URL = http://bank:8082/accounts/exchange/taler-wire-gateway/ -WIRE_GATEWAY_AUTH_METHOD = BASIC -USERNAME = exchange -PASSWORD = exchange diff --git a/nixos/tests/taler/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index 3eeb50b04fa9..ec9f592269a9 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -35,13 +35,14 @@ import ../../make-test-python.nix ( inherit (cfgNodes) CURRENCY FIAT_CURRENCY; inherit (cfgScripts) commonScripts; - bankConfig = nodes.bank.config.environment.etc."libeufin/libeufin.conf".source; + configFile = nodes.exchange.environment.etc."taler/taler.conf".source; + bankConfig = nodes.bank.environment.etc."libeufin/libeufin.conf".source; bankSettings = nodes.bank.services.libeufin.settings.libeufin-bank; nexusSettings = nodes.bank.services.libeufin.nexus.settings; # Bank admin account credentials AUSER = "admin"; - APASS = "admin"; + APASS = "testAdmin"; TUSER = "testUser"; TPASS = "testUser"; @@ -76,17 +77,28 @@ import ../../make-test-python.nix ( exchange.start() + + # exchange credentials must be set at runtime because it requires a token from the bank + exchange.succeed("mkdir -p /etc/taler/secrets/") + exchange.succeed("touch /etc/taler/secrets/exchange-account.secret.conf") + exchange.wait_for_open_port(8081) + # Create access token for exchange + accessTokenExchange = create_token(exchange, "exchange", "exchange") + + exchange.succeed(f'echo "{create_exchange_auth(accessTokenExchange)}" > /etc/taler/secrets/exchange-account.secret.conf') with subtest("Set up exchange"): - exchange.wait_until_succeeds("taler-exchange-offline download sign upload") - # Enable exchange wire account - exchange.succeed('taler-exchange-offline upload < ${exchangeAccount}') + # Set up exchange keys + exchange.wait_until_succeeds('taler-exchange-offline -c "${configFile}" download sign upload') - # NOTE: cannot deposit coins/pay merchant if wire fees are not set up - exchange.succeed('taler-exchange-offline wire-fee now x-taler-bank "${CURRENCY}:0" "${CURRENCY}:0" upload') - exchange.succeed('taler-exchange-offline global-fee now "${CURRENCY}:0" "${CURRENCY}:0" "${CURRENCY}:0" 1h 6a 0 upload') + # Enable exchange wire account + exchange.succeed('taler-exchange-offline -c "${configFile}" upload < ${exchangeAccount}') + + # Set up wire fees, needed in order to deposit coins/pay merchant + exchange.succeed('taler-exchange-offline -c "${configFile}" wire-fee now x-taler-bank "${CURRENCY}:0.01" "${CURRENCY}:0.01" upload') + exchange.succeed('taler-exchange-offline -c "${configFile}" global-fee now "${CURRENCY}:0.01" "${CURRENCY}:0.0" "${CURRENCY}:0" 1h 6a 0 upload') # Verify that exchange keys exist @@ -96,12 +108,14 @@ import ../../make-test-python.nix ( merchant.start() merchant.wait_for_open_port(8083) + # Create access token for merchant + accessTokenMerchant = create_token(client, "merchant", "merchant") with subtest("Set up merchant"): # Create default instance (similar to admin) succeed(merchant, [ "curl -X POST", - "-H 'Authorization: Bearer secret-token:super_secret'", + f"-H 'Authorization: Bearer {accessTokenMerchant}'", """ --data '{ "auth": { "method": "external" }, @@ -128,7 +142,7 @@ import ../../make-test-python.nix ( "credit_facade_credentials":{"type":"basic","username":"merchant","password":"merchant"} }' """, - "-sSfL 'http://merchant:8083/private/accounts'" + "-sSfL 'http://merchant:8083/instances/default/private/accounts'" ]) # Register a new product to be ordered succeed(merchant, [ @@ -144,12 +158,14 @@ import ../../make-test-python.nix ( "next_restock": { "t_s": "never" } }' """, - "-sSfL 'http://merchant:8083/private/products'" + "-sSfL 'http://merchant:8083/instances/default/private/products'" ]) client.succeed("curl -s http://exchange:8081/") + # Create access token for user + accessTokenUser = create_token(client, "${TUSER}", "${TPASS}") # Make a withdrawal from the CLI wallet with subtest("Make a withdrawal from the CLI wallet"): @@ -164,7 +180,7 @@ import ../../make-test-python.nix ( withdrawal = json.loads( succeed(client, [ "curl -X POST", - "-u ${TUSER}:${TPASS}", + f"-H 'Authorization: Bearer {accessTokenUser}'", "-H 'Content-Type: application/json'", f"""--data '{{"amount": "{balanceWanted}"}}'""", # double brackets escapes them "-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals'" @@ -173,11 +189,16 @@ import ../../make-test-python.nix ( # Accept & confirm withdrawal with subtest("Accept & confirm withdrawal"): - wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange http://exchange:8081/") + # the withdrawal can only be confirmed if this is executed twice, for some reason + for i in range(2): + wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange 'http://exchange:8081/'") + client.sleep(5) # needs some time to process things + succeed(client, [ "curl -X POST", - "-u ${TUSER}:${TPASS}", + f"-H 'Authorization: Bearer {accessTokenUser}'", "-H 'Content-Type: application/json'", + f"""--data '{{"amount": "{balanceWanted}"}}'""", # double brackets escapes them f"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals/{withdrawal["withdrawal_id"]}/confirm'" ]) @@ -188,7 +209,8 @@ import ../../make-test-python.nix ( with subtest("Pay for an order"): - balanceWanted = "${CURRENCY}:9" # after paying + # after paying (1 for the order and 0.1 as fee) + balanceWanted = "${CURRENCY}:8.9" # Create an order to be paid response = json.loads( @@ -201,7 +223,7 @@ import ../../make-test-python.nix ( "inventory_products": [{ "product_id": "1", "quantity": 1 }] }' """, - "-sSfL 'http://merchant:8083/private/orders'" + "-sSfL 'http://merchant:8083/instances/default/private/orders'" ]) ) order_id = response["order_id"] @@ -211,7 +233,7 @@ import ../../make-test-python.nix ( response = json.loads( succeed(merchant, [ "curl -sSfL", - f"http://merchant:8083/private/orders/{order_id}" + f"http://merchant:8083/instances/default/private/orders/{order_id}" ]) ) wallet_cli("run-until-done") @@ -231,14 +253,17 @@ import ../../make-test-python.nix ( with subtest("Libeufin Nexus currency conversion"): regionalWanted = "20" + # Create access token + accessTokenAdmin = create_token(bank, "${AUSER}", "${APASS}") + # Setup Nexus ebics keys systemd_run(bank, "libeufin-nexus ebics-setup -L debug -c /etc/libeufin/libeufin.conf", "libeufin-nexus") # Set currency conversion rates (1:1) succeed(bank, [ "curl -X POST", + f"-H 'Authorization: Bearer {accessTokenAdmin}'", "-H 'Content-Type: application/json'", - "-u ${AUSER}:${APASS}", """ --data '{ "cashin_ratio": "1", @@ -264,7 +289,7 @@ import ../../make-test-python.nix ( systemd_run(bank, f"""libeufin-nexus testing fake-incoming -c ${bankConfig} --amount="${FIAT_CURRENCY}:{regionalWanted}" --subject="{reservePub}" "payto://iban/CH4740123RW4167362694" """, "libeufin-nexus") wallet_cli("run-until-done") - verify_conversion(regionalWanted) + verify_conversion(regionalWanted, accessTokenExchange) ''; } ) diff --git a/pkgs/applications/emulators/libretro/cores/bsnes.nix b/pkgs/applications/emulators/libretro/cores/bsnes.nix index 950bafe1813d..93a7da0140d4 100644 --- a/pkgs/applications/emulators/libretro/cores/bsnes.nix +++ b/pkgs/applications/emulators/libretro/cores/bsnes.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "bsnes"; - version = "0-unstable-2025-05-16"; + version = "0-unstable-2025-05-30"; src = fetchFromGitHub { owner = "libretro"; repo = "bsnes-libretro"; - rev = "aadae1cd3d8175a6e71525ab122e6b7a949091a7"; - hash = "sha256-Tf/mJ4B3PuAbfYJCrFoC0sHOQgf+UCwp6jNlSau7XH0="; + rev = "c2df3ccaeb8f40852a63a4b66a381d82d4e9b95d"; + hash = "sha256-bPW4ftbdUXsgAs/CEi5/x4iq1NKvgRmHOpMiNJ2W/Gc="; }; makefile = "Makefile"; diff --git a/pkgs/applications/emulators/libretro/cores/flycast.nix b/pkgs/applications/emulators/libretro/cores/flycast.nix index 9c123e21ef8b..f5ad35c6edce 100644 --- a/pkgs/applications/emulators/libretro/cores/flycast.nix +++ b/pkgs/applications/emulators/libretro/cores/flycast.nix @@ -8,13 +8,13 @@ }: mkLibretroCore { core = "flycast"; - version = "0-unstable-2025-05-22"; + version = "0-unstable-2025-06-01"; src = fetchFromGitHub { owner = "flyinghead"; repo = "flycast"; - rev = "1953eb0eea10f6ddc780bea743ad74c57983b554"; - hash = "sha256-Y0QmDzML8bSQi1DxFErBptSB31TrXmFGVoTYnd3Ppr0="; + rev = "d9ec0cb3ab0ce383f24f86d023e1889b7f37c5c7"; + hash = "sha256-MwXq+qhba+PNS1e2LS3CduWcdO3Tm0OS8ny1Gq3Zo5s="; fetchSubmodules = true; }; diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index 9e3b2c7f820f..1d2dfc1f5ef5 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -163,7 +163,7 @@ stdenv.mkDerivation { }; }; - meta = with lib; { + meta = { changelog = "https://www.mozilla.org/en-US/firefox/${version}/releasenotes/"; description = "Mozilla Firefox, free web browser (binary package)"; homepage = "https://www.mozilla.org/firefox/"; @@ -188,10 +188,10 @@ stdenv.mkDerivation { free = false; redistributable = true; # since MPL-2.0 still applies }; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; platforms = builtins.attrNames mozillaPlatforms; hydraPlatforms = [ ]; - maintainers = with maintainers; [ + maintainers = with lib.maintainers; [ taku0 lovesegfault ]; diff --git a/pkgs/by-name/_7/_7zz/package.nix b/pkgs/by-name/_7/_7zz/package.nix index a2cc041d0e07..f9d462b75d88 100644 --- a/pkgs/by-name/_7/_7zz/package.nix +++ b/pkgs/by-name/_7/_7zz/package.nix @@ -106,7 +106,7 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall install -Dm555 -t $out/bin b/*/7zz${stdenv.hostPlatform.extensions.executable} - install -Dm444 -t $out/share/doc/${finalAttrs.pname} ../../../../DOC/*.txt + install -Dm444 -t $out/share/doc/7zz ../../../../DOC/*.txt runHook postInstall ''; diff --git a/pkgs/by-name/ar/arpa2-leaf/package.nix b/pkgs/by-name/ar/arpa2-leaf/package.nix new file mode 100644 index 000000000000..3881c6094014 --- /dev/null +++ b/pkgs/by-name/ar/arpa2-leaf/package.nix @@ -0,0 +1,51 @@ +{ + lib, + stdenv, + fetchFromGitLab, + cmake, + arpa2cm, + quickder, + quickmem, + quick-sasl, + lillydap, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + # leaf is already used + pname = "arpa2-leaf"; + version = "0.2"; + + src = fetchFromGitLab { + owner = "arpa2"; + repo = "leaf"; + tag = "v${finalAttrs.version}"; + hash = "sha256-s52gtxM+BmG7oVrB5F0ORjkb4F3fWONiOxIWdDn2P5k="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + arpa2cm + quickder + quickmem + quick-sasl + lillydap + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "LDAP Extended Attribute Filter"; + homepage = "https://gitlab.com/arpa2/leaf"; + changelog = "https://gitlab.com/arpa2/leaf/-/blob/v${finalAttrs.version}/CHANGES"; + license = lib.licenses.bsd2; + teams = with lib.teams; [ ngi ]; + maintainers = with lib.maintainers; [ ethancedwards8 ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/as/as31/package.nix b/pkgs/by-name/as/as31/package.nix index 5f3104b43907..847b89cd14a3 100644 --- a/pkgs/by-name/as/as31/package.nix +++ b/pkgs/by-name/as/as31/package.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation (finalAttrs: { version = "2.3.1"; src = fetchurl { - url = "mirror://debian/pool/main/a/as31/${finalAttrs.pname}_${finalAttrs.version}.orig.tar.gz"; + url = "mirror://debian/pool/main/a/as31/as31_${finalAttrs.version}.orig.tar.gz"; name = "${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; hash = "sha256-zSEyWHFon5nyq717Mpmdv1XZ5Hz0e8ZABqsP8M83c1U="; }; diff --git a/pkgs/by-name/au/audio-sharing/package.nix b/pkgs/by-name/au/audio-sharing/package.nix index 3f4fe10a07dd..56ae0176498d 100644 --- a/pkgs/by-name/au/audio-sharing/package.nix +++ b/pkgs/by-name/au/audio-sharing/package.nix @@ -33,8 +33,7 @@ stdenv.mkDerivation (finalAttrs: { }; cargoDeps = rustPlatform.fetchCargoVendor { - inherit (finalAttrs) src; - name = "${finalAttrs.pname}-${finalAttrs.version}"; + inherit (finalAttrs) pname version src; hash = "sha256-ePgEAVYXLOHWQXG92Grb9nmenyGj0JkgVy1UDsQF0xw="; }; diff --git a/pkgs/by-name/av/avrdudess/package.nix b/pkgs/by-name/av/avrdudess/package.nix index 6f767e3ae944..a50c3c0eada2 100644 --- a/pkgs/by-name/av/avrdudess/package.nix +++ b/pkgs/by-name/av/avrdudess/package.nix @@ -10,13 +10,13 @@ xdg-utils, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "avrdudess"; version = "2.18"; src = fetchurl { - url = "https://github.com/ZakKemble/AVRDUDESS/releases/download/v2.18/AVRDUDESS-2.18-portable.zip"; - sha256 = "sha256-N93FLiXp1WwhI5KwH6sho2wyFtkbODwCHOpEVbVnYdc="; + url = "https://github.com/ZakKemble/AVRDUDESS/releases/download/v${finalAttrs.version}/AVRDUDESS-${finalAttrs.version}-portable.zip"; + hash = "sha256-N93FLiXp1WwhI5KwH6sho2wyFtkbODwCHOpEVbVnYdc="; }; nativeBuildInputs = [ unzip ]; @@ -25,6 +25,8 @@ stdenv.mkDerivation { dontInstall = true; buildPhase = '' + runHook preBuild + mkdir -p "$out/avrdudess" mkdir -p "$out/bin" @@ -52,15 +54,17 @@ stdenv.mkDerivation { __EOF__ chmod a+x "$out/bin/"* + + runHook postBuild ''; - meta = with lib; { + meta = { description = "GUI for AVRDUDE (AVR microcontroller programmer)"; homepage = "https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/"; - changelog = "https://github.com/ZakKemble/AVRDUDESS/blob/v${version}/Changelog.txt"; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = [ maintainers.bjornfor ]; + changelog = "https://github.com/ZakKemble/AVRDUDESS/blob/v${finalAttrs.version}/Changelog.txt"; + license = lib.licenses.gpl3; + platforms = lib.platforms.linux; + maintainers = [ lib.maintainers.bjornfor ]; mainProgram = "avrdudess"; }; -} +}) diff --git a/pkgs/by-name/bi/bind/package.nix b/pkgs/by-name/bi/bind/package.nix index f969a14feaef..9d9c108fd2bf 100644 --- a/pkgs/by-name/bi/bind/package.nix +++ b/pkgs/by-name/bi/bind/package.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: { version = "9.20.9"; src = fetchurl { - url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; + url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/bind-${finalAttrs.version}.tar.xz"; hash = "sha256-PSaQDtnJqFkHP/6puX4pLBJI2tGCebF7BfyyPDCR+G0="; }; diff --git a/pkgs/by-name/bp/bpftrace/package.nix b/pkgs/by-name/bp/bpftrace/package.nix index 7c9174dec0d8..521ea29a4073 100644 --- a/pkgs/by-name/bp/bpftrace/package.nix +++ b/pkgs/by-name/bp/bpftrace/package.nix @@ -21,13 +21,13 @@ stdenv.mkDerivation rec { pname = "bpftrace"; - version = "0.23.3"; + version = "0.23.4"; src = fetchFromGitHub { owner = "bpftrace"; repo = "bpftrace"; rev = "v${version}"; - hash = "sha256-Jvl8Up3IH2/G0QMb0pZmQ2SSXOmjTj08KXoJXOR3Z48="; + hash = "sha256-fJOc5M+DhYjmooDb8p/kZbUOhQX27/6aau7Ff9dgjbs="; }; buildInputs = with llvmPackages; [ diff --git a/pkgs/by-name/ca/cargo-nextest/package.nix b/pkgs/by-name/ca/cargo-nextest/package.nix index e9576697c014..54907e8f61b8 100644 --- a/pkgs/by-name/ca/cargo-nextest/package.nix +++ b/pkgs/by-name/ca/cargo-nextest/package.nix @@ -7,17 +7,17 @@ rustPlatform.buildRustPackage rec { pname = "cargo-nextest"; - version = "0.9.95"; + version = "0.9.97"; src = fetchFromGitHub { owner = "nextest-rs"; repo = "nextest"; rev = "cargo-nextest-${version}"; - hash = "sha256-OtCFehXzcdE8kBUkDg8y5ygTOtH2eP5aMzTpugDSg/E="; + hash = "sha256-5UhmWewLj3bjtvqyb6FcC1qZQbAutRPXnBi7e/lyArM="; }; useFetchCargoVendor = true; - cargoHash = "sha256-nrRq5ET++jplx5argN04Ax+HTE6VqvBhnSsS/ZFNYr8="; + cargoHash = "sha256-mTKcQ76A++LK+54ChmCUF/7dsubdz7GZpOZUp+afqfQ="; cargoBuildFlags = [ "-p" diff --git a/pkgs/by-name/ch/changie/package.nix b/pkgs/by-name/ch/changie/package.nix index 7be69fdfbdf4..dee815b93261 100644 --- a/pkgs/by-name/ch/changie/package.nix +++ b/pkgs/by-name/ch/changie/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "changie"; - version = "1.21.1"; + version = "1.22.0"; src = fetchFromGitHub { owner = "miniscruff"; repo = "changie"; rev = "v${version}"; - hash = "sha256-zLRMH5TxEz/fspMOPAMTEqO19fj9PZsRh6zddbTqSXM="; + hash = "sha256-tq29L9YlzhjbHkUfE0ZZhSrH+rcAwgYjcEAUjP/lHm8="; }; - vendorHash = "sha256-LWf10MM9SBU9sHb59c6ILlsHs8E8ETYAR34296aeHlI="; + vendorHash = "sha256-nAwBVa+UssbfFbcOWFcsWUllBTeW89xPcgS+ofXDPf0="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/co/coal/package.nix b/pkgs/by-name/co/coal/package.nix index 24e269a1e9fb..c1024bb275c7 100644 --- a/pkgs/by-name/co/coal/package.nix +++ b/pkgs/by-name/co/coal/package.nix @@ -75,7 +75,7 @@ stdenv.mkDerivation (finalAttrs: { ]; postFixup = '' moveToOutput share/ament_index "$dev" - moveToOutput share/${finalAttrs.pname} "$dev" + moveToOutput share/coal "$dev" ''; meta = { diff --git a/pkgs/by-name/da/davis/package.nix b/pkgs/by-name/da/davis/package.nix index 45923d8625f2..3a0709b507f5 100644 --- a/pkgs/by-name/da/davis/package.nix +++ b/pkgs/by-name/da/davis/package.nix @@ -21,9 +21,9 @@ php.buildComposerProject2 (finalAttrs: { postInstall = '' chmod -R u+w $out/share # Only include the files needed for runtime in the derivation - mv $out/share/php/${finalAttrs.pname}/{migrations,public,src,config,bin,templates,tests,translations,vendor,symfony.lock,composer.json,composer.lock} $out + mv $out/share/php/davis/{migrations,public,src,config,bin,templates,tests,translations,vendor,symfony.lock,composer.json,composer.lock} $out # Save the upstream .env file for reference, but rename it so it is not loaded - mv $out/share/php/${finalAttrs.pname}/.env $out/env-upstream + mv $out/share/php/davis/.env $out/env-upstream rm -rf "$out/share" ''; diff --git a/pkgs/by-name/di/dirdiff/package.nix b/pkgs/by-name/di/dirdiff/package.nix index 518dd43baca5..25cb41a27c39 100644 --- a/pkgs/by-name/di/dirdiff/package.nix +++ b/pkgs/by-name/di/dirdiff/package.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation (finalAttrs: { version = "2.1"; src = fetchurl { - url = "mirror://samba/paulus/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; + url = "mirror://samba/paulus/dirdiff-${finalAttrs.version}.tar.gz"; hash = "sha256-yzc2VNV4gCeAQ1XjVd8GlYYsO/wfaj/GAUcisxVqklI="; }; diff --git a/pkgs/by-name/ef/efibooteditor/package.nix b/pkgs/by-name/ef/efibooteditor/package.nix index b9e888948fb2..2273b584c6f5 100644 --- a/pkgs/by-name/ef/efibooteditor/package.nix +++ b/pkgs/by-name/ef/efibooteditor/package.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ "-DQT_VERSION_MAJOR=6" ]; postInstall = '' - install -Dm644 $src/LICENSE.txt $out/share/licenses/${finalAttrs.pname}/LICENSE + install -Dm644 $src/LICENSE.txt $out/share/licenses/efibooteditor/LICENSE ''; meta = { diff --git a/pkgs/by-name/en/ente-auth/git-hashes.json b/pkgs/by-name/en/ente-auth/git-hashes.json index ff429e3de18f..00eb4fd6c67e 100644 --- a/pkgs/by-name/en/ente-auth/git-hashes.json +++ b/pkgs/by-name/en/ente-auth/git-hashes.json @@ -1,6 +1,5 @@ { "ente_crypto_dart": "sha256-xBBK9BdXh4+OTj+Jkf3zh5sMZjXtvhyuE1R5LFE8iTY=", "flutter_local_authentication": "sha256-r50jr+81ho+7q2PWHLf4VnvNJmhiARZ3s4HUpThCgc0=", - "flutter_secure_storage_linux": "sha256-Rp+b6ZRH7F5AnM5UvYzfVjprXkpeeA7V6Ep/oYqDeiM=", "sqflite": "sha256-+XTVtkFJ94VifwnutvUuAqqiyWwrcEiZ3Uz0H4D9zWA=" } diff --git a/pkgs/by-name/en/ente-auth/package.nix b/pkgs/by-name/en/ente-auth/package.nix index f5531a2fedbd..844fa3b17676 100644 --- a/pkgs/by-name/en/ente-auth/package.nix +++ b/pkgs/by-name/en/ente-auth/package.nix @@ -18,14 +18,14 @@ let in flutter324.buildFlutterApplication rec { pname = "ente-auth"; - version = "4.3.5"; + version = "4.3.6"; src = fetchFromGitHub { owner = "ente-io"; repo = "ente"; sparseCheckout = [ "auth" ]; tag = "auth-v${version}"; - hash = "sha256-kM1y3Q5Z8J84qHhki9A+I/uY7xYQNMlfh2ZhxzpUBHM="; + hash = "sha256-6S0sgxiPrakqtQ/KoEKR10yWxOk6Rs5MOHjFZXkAbcg="; }; sourceRoot = "${src.name}/auth"; diff --git a/pkgs/by-name/en/ente-auth/pubspec.lock.json b/pkgs/by-name/en/ente-auth/pubspec.lock.json index 7656e78bcddf..05c9729383a4 100644 --- a/pkgs/by-name/en/ente-auth/pubspec.lock.json +++ b/pkgs/by-name/en/ente-auth/pubspec.lock.json @@ -4,17 +4,17 @@ "dependency": "transitive", "description": { "name": "_fe_analyzer_shared", - "sha256": "f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834", + "sha256": "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab", "url": "https://pub.dev" }, "source": "hosted", - "version": "72.0.0" + "version": "76.0.0" }, "_macros": { "dependency": "transitive", "description": "dart", "source": "sdk", - "version": "0.3.2" + "version": "0.3.3" }, "adaptive_theme": { "dependency": "direct main", @@ -30,11 +30,11 @@ "dependency": "transitive", "description": { "name": "analyzer", - "sha256": "b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139", + "sha256": "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e", "url": "https://pub.dev" }, "source": "hosted", - "version": "6.7.0" + "version": "6.11.0" }, "ansicolor": { "dependency": "transitive", @@ -110,11 +110,11 @@ "dependency": "transitive", "description": { "name": "async", - "sha256": "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c", + "sha256": "d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63", "url": "https://pub.dev" }, "source": "hosted", - "version": "2.11.0" + "version": "2.12.0" }, "auto_size_text": { "dependency": "direct main", @@ -160,11 +160,11 @@ "dependency": "transitive", "description": { "name": "boolean_selector", - "sha256": "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66", + "sha256": "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea", "url": "https://pub.dev" }, "source": "hosted", - "version": "2.1.1" + "version": "2.1.2" }, "build": { "dependency": "transitive", @@ -250,11 +250,11 @@ "dependency": "transitive", "description": { "name": "characters", - "sha256": "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605", + "sha256": "f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.3.0" + "version": "1.4.0" }, "checked_yaml": { "dependency": "transitive", @@ -290,11 +290,11 @@ "dependency": "transitive", "description": { "name": "clock", - "sha256": "cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf", + "sha256": "fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.1.1" + "version": "1.1.2" }, "code_builder": { "dependency": "transitive", @@ -310,11 +310,11 @@ "dependency": "direct main", "description": { "name": "collection", - "sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a", + "sha256": "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.18.0" + "version": "1.19.1" }, "confetti": { "dependency": "direct main", @@ -541,11 +541,11 @@ "dependency": "transitive", "description": { "name": "fake_async", - "sha256": "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78", + "sha256": "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.3.1" + "version": "1.3.2" }, "ffi": { "dependency": "direct main", @@ -841,15 +841,14 @@ "version": "9.2.2" }, "flutter_secure_storage_linux": { - "dependency": "direct overridden", + "dependency": "transitive", "description": { - "path": "flutter_secure_storage_linux", - "ref": "develop", - "resolved-ref": "5a5692b609b3886cdd49b2ed06b9c079ecdff996", - "url": "https://github.com/mogol/flutter_secure_storage.git" + "name": "flutter_secure_storage_linux", + "sha256": "be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688", + "url": "https://pub.dev" }, - "source": "git", - "version": "1.2.1" + "source": "hosted", + "version": "1.2.3" }, "flutter_secure_storage_macos": { "dependency": "transitive", @@ -1177,21 +1176,21 @@ "dependency": "transitive", "description": { "name": "leak_tracker", - "sha256": "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05", + "sha256": "c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec", "url": "https://pub.dev" }, "source": "hosted", - "version": "10.0.5" + "version": "10.0.8" }, "leak_tracker_flutter_testing": { "dependency": "transitive", "description": { "name": "leak_tracker_flutter_testing", - "sha256": "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806", + "sha256": "f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573", "url": "https://pub.dev" }, "source": "hosted", - "version": "3.0.5" + "version": "3.0.9" }, "leak_tracker_testing": { "dependency": "transitive", @@ -1277,21 +1276,21 @@ "dependency": "transitive", "description": { "name": "macros", - "sha256": "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536", + "sha256": "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.1.2-main.4" + "version": "0.1.3-main.0" }, "matcher": { "dependency": "transitive", "description": { "name": "matcher", - "sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb", + "sha256": "dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.12.16+1" + "version": "0.12.17" }, "material_color_utilities": { "dependency": "transitive", @@ -1317,11 +1316,11 @@ "dependency": "transitive", "description": { "name": "meta", - "sha256": "bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7", + "sha256": "e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.15.0" + "version": "1.16.0" }, "mime": { "dependency": "transitive", @@ -1457,11 +1456,11 @@ "dependency": "direct main", "description": { "name": "path", - "sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af", + "sha256": "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.9.0" + "version": "1.9.1" }, "path_drawing": { "dependency": "transitive", @@ -1697,21 +1696,21 @@ "dependency": "direct main", "description": { "name": "sentry", - "sha256": "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd", + "sha256": "599701ca0693a74da361bc780b0752e1abc98226cf5095f6b069648116c896bb", "url": "https://pub.dev" }, "source": "hosted", - "version": "8.9.0" + "version": "8.14.2" }, "sentry_flutter": { "dependency": "direct main", "description": { "name": "sentry_flutter", - "sha256": "3780b5a0bb6afd476857cfbc6c7444d969c29a4d9bd1aa5b6960aa76c65b737a", + "sha256": "5ba2cf40646a77d113b37a07bd69f61bb3ec8a73cbabe5537b05a7c89d2656f8", "url": "https://pub.dev" }, "source": "hosted", - "version": "8.9.0" + "version": "8.14.2" }, "share_plus": { "dependency": "direct main", @@ -1837,7 +1836,7 @@ "dependency": "transitive", "description": "flutter", "source": "sdk", - "version": "0.0.99" + "version": "0.0.0" }, "sodium": { "dependency": "transitive", @@ -1883,11 +1882,11 @@ "dependency": "transitive", "description": { "name": "source_span", - "sha256": "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c", + "sha256": "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.10.0" + "version": "1.10.1" }, "sprintf": { "dependency": "transitive", @@ -1944,11 +1943,11 @@ "dependency": "transitive", "description": { "name": "stack_trace", - "sha256": "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b", + "sha256": "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.11.1" + "version": "1.12.1" }, "steam_totp": { "dependency": "direct main", @@ -1974,11 +1973,11 @@ "dependency": "transitive", "description": { "name": "stream_channel", - "sha256": "ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7", + "sha256": "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d", "url": "https://pub.dev" }, "source": "hosted", - "version": "2.1.2" + "version": "2.1.4" }, "stream_transform": { "dependency": "transitive", @@ -1994,11 +1993,11 @@ "dependency": "transitive", "description": { "name": "string_scanner", - "sha256": "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde", + "sha256": "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.2.0" + "version": "1.4.1" }, "styled_text": { "dependency": "direct main", @@ -2024,21 +2023,21 @@ "dependency": "transitive", "description": { "name": "term_glyph", - "sha256": "a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84", + "sha256": "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.2.1" + "version": "1.2.2" }, "test_api": { "dependency": "transitive", "description": { "name": "test_api", - "sha256": "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb", + "sha256": "fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.7.2" + "version": "0.7.4" }, "timezone": { "dependency": "transitive", @@ -2244,11 +2243,11 @@ "dependency": "transitive", "description": { "name": "vm_service", - "sha256": "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d", + "sha256": "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14", "url": "https://pub.dev" }, "source": "hosted", - "version": "14.2.5" + "version": "14.3.1" }, "watcher": { "dependency": "transitive", @@ -2362,7 +2361,7 @@ } }, "sdks": { - "dart": ">=3.5.0 <4.0.0", + "dart": ">=3.7.0-0 <4.0.0", "flutter": ">=3.24.0" } } diff --git a/pkgs/by-name/ex/example-robot-data/package.nix b/pkgs/by-name/ex/example-robot-data/package.nix index 29cee31c54b2..430220c06e65 100644 --- a/pkgs/by-name/ex/example-robot-data/package.nix +++ b/pkgs/by-name/ex/example-robot-data/package.nix @@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: { # The package expect to find an `example-robot-data/robots` folder somewhere # either in install prefix or in the sources # where it can find the meshes for unit tests - preCheck = "ln -s source ../../${finalAttrs.pname}"; + preCheck = "ln -s source ../../example-robot-data"; pythonImportsCheck = [ "example_robot_data" ]; meta = with lib; { diff --git a/pkgs/by-name/fa/fastlane/Gemfile.lock b/pkgs/by-name/fa/fastlane/Gemfile.lock index 6f670951d9cf..d8c0b76d959f 100644 --- a/pkgs/by-name/fa/fastlane/Gemfile.lock +++ b/pkgs/by-name/fa/fastlane/Gemfile.lock @@ -11,18 +11,18 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.3.2) - aws-partitions (1.1090.0) - aws-sdk-core (3.222.2) + aws-partitions (1.1106.0) + aws-sdk-core (3.224.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) base64 jmespath (~> 1, >= 1.6.1) logger - aws-sdk-kms (1.99.0) + aws-sdk-kms (1.101.0) aws-sdk-core (~> 3, >= 3.216.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.183.0) + aws-sdk-s3 (1.186.1) aws-sdk-core (~> 3, >= 3.216.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) @@ -71,7 +71,7 @@ GEM faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.4.0) - fastlane (2.227.1) + fastlane (2.227.2) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -158,7 +158,7 @@ GEM httpclient (2.9.0) mutex_m jmespath (1.6.2) - json (2.10.2) + json (2.12.1) jwt (2.10.1) base64 logger (1.7.0) @@ -173,7 +173,7 @@ GEM optparse (0.6.0) os (1.1.4) plist (3.7.2) - public_suffix (6.0.1) + public_suffix (6.0.2) rake (13.2.1) representable (3.2.0) declarative (< 0.1.0) @@ -185,7 +185,7 @@ GEM ruby2_keywords (0.0.5) rubyzip (2.4.1) security (0.1.5) - signet (0.19.0) + signet (0.20.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) diff --git a/pkgs/by-name/fa/fastlane/gemset.nix b/pkgs/by-name/fa/fastlane/gemset.nix index 84d17a97be9d..fbf71e8fb866 100644 --- a/pkgs/by-name/fa/fastlane/gemset.nix +++ b/pkgs/by-name/fa/fastlane/gemset.nix @@ -55,10 +55,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "15nkd4iskiy2c2lh1w499978zvnxkirpdm2i0y5i0yvym43kkycx"; + sha256 = "12svi07s5hss8wq9xpaxwy1ibl64bd00hsn12v810wvz19fw823l"; type = "gem"; }; - version = "1.1090.0"; + version = "1.1106.0"; }; aws-sdk-core = { dependencies = [ @@ -73,10 +73,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1lf8aykj9ybs7mvfk27ccs221z7rhqm3lxqx6zy27lf6jl2hff86"; + sha256 = "1b0pi1iibp644dn78g53s7hs7gcxghfa7h8rz3lvz8ivykisl5y6"; type = "gem"; }; - version = "3.222.2"; + version = "3.224.0"; }; aws-sdk-kms = { dependencies = [ @@ -87,10 +87,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1a3mh89kfh6flqxw48wfv9wfwkj2zxazw096mqm56wnnzz1jyads"; + sha256 = "1mv8jc8sbvim2m3y3zxm8z4i5sh4x9ds7y9h5z04qfg7kjvbbn24"; type = "gem"; }; - version = "1.99.0"; + version = "1.101.0"; }; aws-sdk-s3 = { dependencies = [ @@ -102,10 +102,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0k4zg6i7xrgqv4s66hxj0l5icx44bb1ax52al2s5gz3n1hrv01lc"; + sha256 = "00sq22mfibxq3rjy9c4vj1s8yjszv8988di7z7rs8v62my53nw2v"; type = "gem"; }; - version = "1.183.0"; + version = "1.186.1"; }; aws-sigv4 = { dependencies = [ "aws-eventstream" ]; @@ -461,10 +461,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "124ijrgr9w709093g7p7hvhg1l4wy4kr1c8rn82krri89pl4q6y2"; + sha256 = "1dw9smmpzhlca2zzp2pgmr2slhwnz8926s5rnjfjrclilz33p22z"; type = "gem"; }; - version = "2.227.1"; + version = "2.227.2"; }; fastlane-sirp = { dependencies = [ "sysrandom" ]; @@ -668,10 +668,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "01lbdaizhkxmrw4y8j3wpvsryvnvzmg0pfs56c52laq2jgdfmq1l"; + sha256 = "0fr0dxwn5a7z5m3i16v66pc35wmwc6mgj9f8dg7ch2bwq42y73zw"; type = "gem"; }; - version = "2.10.2"; + version = "2.12.1"; }; jwt = { dependencies = [ "base64" ]; @@ -809,10 +809,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0vqcw3iwby3yc6avs1vb3gfd0vcp2v7q310665dvxfswmcf4xm31"; + sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; type = "gem"; }; - version = "6.0.1"; + version = "6.0.2"; }; rake = { groups = [ "default" ]; @@ -910,10 +910,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0cfxa11wy1nv9slmnzjczkdgld0gqizajsb03rliy53zylwkjzsk"; + sha256 = "18s7xiclzajp9w9cmq8k28iy5ig1zpx1zv1mrm416cb2c0m0wrmw"; type = "gem"; }; - version = "0.19.0"; + version = "0.20.0"; }; simctl = { dependencies = [ diff --git a/pkgs/by-name/fc/fcitx5-material-color/package.nix b/pkgs/by-name/fc/fcitx5-material-color/package.nix index 8b5147df9b82..7b0273f56ad3 100644 --- a/pkgs/by-name/fc/fcitx5-material-color/package.nix +++ b/pkgs/by-name/fc/fcitx5-material-color/package.nix @@ -19,7 +19,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { runHook preInstall # https://gitlab.archlinux.org/archlinux/packaging/packages/fcitx5-material-color/-/blob/main/PKGBUILD?ref_type=heads#L16 - install -Dm644 arrow.png radio.png -t $out/share/${finalAttrs.pname}/ + install -Dm644 arrow.png radio.png -t $out/share/fcitx5-material-color/ for _variant in black blue brown deepPurple indigo orange pink red sakuraPink teal; do _variant_name=Material-Color-$_variant install -dm755 $_variant_name $out/share/fcitx5/themes/$_variant_name diff --git a/pkgs/by-name/fi/figma-linux/package.nix b/pkgs/by-name/fi/figma-linux/package.nix index 39c7b8ca891f..927163c5dc86 100644 --- a/pkgs/by-name/fi/figma-linux/package.nix +++ b/pkgs/by-name/fi/figma-linux/package.nix @@ -82,7 +82,7 @@ stdenv.mkDerivation (finalAttrs: { postFixup = '' substituteInPlace $out/share/applications/figma-linux.desktop \ - --replace "Exec=/opt/figma-linux/figma-linux" "Exec=$out/bin/${finalAttrs.pname}" + --replace "Exec=/opt/figma-linux/figma-linux" "Exec=$out/bin/figma-linux" ''; meta = with lib; { diff --git a/pkgs/by-name/fm/fmi-reference-fmus/package.nix b/pkgs/by-name/fm/fmi-reference-fmus/package.nix index e41e1223d8b9..5807260ebe1f 100644 --- a/pkgs/by-name/fm/fmi-reference-fmus/package.nix +++ b/pkgs/by-name/fm/fmi-reference-fmus/package.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: { version = "0.0.38"; src = fetchFromGitHub { owner = "modelica"; - repo = finalAttrs.pname; + repo = "reference-fmus"; rev = "v${finalAttrs.version}"; hash = "sha256-FeDKYcm9K670q1FGqy41Tp2Ag8p2JidH4z78zpHOngw="; }; diff --git a/pkgs/by-name/fr/fretboard/package.nix b/pkgs/by-name/fr/fretboard/package.nix index af726ce4f0c9..115e311419e8 100644 --- a/pkgs/by-name/fr/fretboard/package.nix +++ b/pkgs/by-name/fr/fretboard/package.nix @@ -29,8 +29,7 @@ stdenv.mkDerivation (finalAttrs: { }; cargoDeps = rustPlatform.fetchCargoVendor { - src = finalAttrs.src; - name = "${finalAttrs.pname}-${finalAttrs.version}"; + inherit (finalAttrs) pname version src; hash = "sha256-Gl78z9FR/sB14uFDLKgnfN4B5yOi6A6MH64gDXcLiWA="; }; diff --git a/pkgs/by-name/fu/furtherance/package.nix b/pkgs/by-name/fu/furtherance/package.nix index a9445a231233..eb23c4dc3bb2 100644 --- a/pkgs/by-name/fu/furtherance/package.nix +++ b/pkgs/by-name/fu/furtherance/package.nix @@ -30,8 +30,7 @@ stdenv.mkDerivation (finalAttrs: { }; cargoDeps = rustPlatform.fetchCargoVendor { - inherit (finalAttrs) src; - name = "${finalAttrs.pname}-${finalAttrs.version}"; + inherit (finalAttrs) pname version src; hash = "sha256-SFp9YCmneOll2pItWmg2b2jrpRqPnvV9vwz4mjjvwM4="; }; diff --git a/pkgs/by-name/ga/galene-file-transfer/package.nix b/pkgs/by-name/ga/galene-file-transfer/package.nix new file mode 100644 index 000000000000..43b4c8619486 --- /dev/null +++ b/pkgs/by-name/ga/galene-file-transfer/package.nix @@ -0,0 +1,75 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + gitUpdater, + nixosTests, + writeShellApplication, + _experimental-update-script-combinators, + galene, + nix, + sd, +}: + +buildGoModule (finalAttrs: { + pname = "galene-file-transfer"; + version = "0.2"; + + src = fetchFromGitHub { + owner = "jech"; + repo = "galene-file-transfer"; + tag = "galene-file-transfer-${finalAttrs.version}"; + hash = "sha256-T3OtEsHysAmHwvDIkxqXMKLqIeXEeX9uhEG4WFUgQL4="; + }; + + vendorHash = "sha256-Z2IYZtB2PAxJD8993reu+ldTG3LdPLNMbr9pP2NUBMA="; + + strictDeps = true; + + ldflags = [ + "-s" + "-w" + ]; + + passthru = { + tests.vm = nixosTests.galene.file-transfer; + updateScriptSrc = gitUpdater { + rev-prefix = "galene-file-transfer-"; + }; + updateScriptVendor = writeShellApplication { + name = "update-galene-file-transfer-vendorHash"; + runtimeInputs = [ + nix + sd + ]; + text = '' + export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-galene-file-transfer}" + + oldhash="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.goModules.drvAttrs.outputHash" | cut -d'"' -f2)" + newhash="$(nix-build -A "$UPDATE_NIX_ATTR_PATH.goModules" --no-out-link 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" + + if [ "$newhash" == "" ]; then + echo "No new vendorHash." + exit 0 + fi + + fname="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)" + + ${sd.meta.mainProgram} --string-mode "$oldhash" "$newhash" "$fname" + ''; + }; + updateScript = _experimental-update-script-combinators.sequence [ + finalAttrs.passthru.updateScriptSrc.command + (lib.getExe finalAttrs.passthru.updateScriptVendor) + ]; + }; + + meta = { + description = "Command-line file transfer client for the Galene videoconferencing server"; + homepage = "https://github.com/jech/galene-file-transfer"; + changelog = "https://github.com/jech/galene-file-transfer/raw/${finalAttrs.src.rev}/CHANGES"; + license = lib.licenses.mit; + platforms = lib.platforms.linux; + inherit (galene.meta) maintainers; + }; +}) diff --git a/pkgs/by-name/ga/galene-ldap/package.nix b/pkgs/by-name/ga/galene-ldap/package.nix new file mode 100644 index 000000000000..c8ddd14b150d --- /dev/null +++ b/pkgs/by-name/ga/galene-ldap/package.nix @@ -0,0 +1,73 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + gitUpdater, + writeShellApplication, + _experimental-update-script-combinators, + galene, + nix, + sd, +}: + +buildGoModule (finalAttrs: { + pname = "galene-ldap"; + version = "0.2"; + + src = fetchFromGitHub { + owner = "jech"; + repo = "galene-ldap"; + tag = "galene-ldap-${finalAttrs.version}"; + hash = "sha256-FXD90ishU3FBRj16tQx8wr+lSFl1dffNM1rU81Kfe1I="; + }; + + vendorHash = "sha256-i/pWXgcd01PgH1Q+WEm0gP1leTFBhqGxVGnl6c+J1aQ="; + + strictDeps = true; + + ldflags = [ + "-s" + "-w" + ]; + + passthru = { + updateScriptSrc = gitUpdater { + rev-prefix = "galene-ldap-"; + }; + updateScriptVendor = writeShellApplication { + name = "update-galene-ldap-vendorHash"; + runtimeInputs = [ + nix + sd + ]; + text = '' + export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-galene-ldap}" + + oldhash="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.goModules.drvAttrs.outputHash" | cut -d'"' -f2)" + newhash="$(nix-build -A "$UPDATE_NIX_ATTR_PATH.goModules" --no-out-link 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" + + if [ "$newhash" == "" ]; then + echo "No new vendorHash." + exit 0 + fi + + fname="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)" + + ${sd.meta.mainProgram} --string-mode "$oldhash" "$newhash" "$fname" + ''; + }; + updateScript = _experimental-update-script-combinators.sequence [ + finalAttrs.passthru.updateScriptSrc.command + (lib.getExe finalAttrs.passthru.updateScriptVendor) + ]; + }; + + meta = { + description = "LDAP support for the Galene videoconferencing server"; + homepage = "https://github.com/jech/galene-ldap"; + changelog = "https://github.com/jech/galene-ldap/raw/${finalAttrs.src.rev}/CHANGES"; + license = lib.licenses.mit; + platforms = lib.platforms.linux; + inherit (galene.meta) maintainers; + }; +}) diff --git a/pkgs/by-name/ga/galene-stt/package.nix b/pkgs/by-name/ga/galene-stt/package.nix new file mode 100644 index 000000000000..36caefe6d6a1 --- /dev/null +++ b/pkgs/by-name/ga/galene-stt/package.nix @@ -0,0 +1,91 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + gitUpdater, + writeShellApplication, + _experimental-update-script-combinators, + galene, + libopus, + nix, + pkg-config, + sd, + whisper-cpp, +}: + +buildGoModule (finalAttrs: { + pname = "galene-stt"; + version = "0.1"; + + src = fetchFromGitHub { + owner = "jech"; + repo = "galene-stt"; + tag = "galene-stt-${finalAttrs.version}"; + hash = "sha256-uW1b5T+p7KGvqt+PlR9d7bo62V+URHniS45sZP/VuLQ="; + }; + + vendorHash = "sha256-UFOxo8jq+gxN1dkM2A/BQqtT9ggIp7qovFRLv3Q6Io0="; + + # Not necessary, but feels cleaner to pull it in like that + postPatch = '' + substituteInPlace whisper.go \ + --replace-fail 'cgo LDFLAGS: -lwhisper' 'cgo pkg-config: whisper' + ''; + + strictDeps = true; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + libopus + whisper-cpp + ]; + + ldflags = [ + "-s" + "-w" + ]; + + passthru = { + updateScriptSrc = gitUpdater { + rev-prefix = "galene-stt-"; + }; + updateScriptVendor = writeShellApplication { + name = "update-galene-stt-vendorHash"; + runtimeInputs = [ + nix + sd + ]; + text = '' + export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-galene-stt}" + + oldhash="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.goModules.drvAttrs.outputHash" | cut -d'"' -f2)" + newhash="$(nix-build -A "$UPDATE_NIX_ATTR_PATH.goModules" --no-out-link 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" + + if [ "$newhash" == "" ]; then + echo "No new vendorHash." + exit 0 + fi + + fname="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)" + + ${sd.meta.mainProgram} --string-mode "$oldhash" "$newhash" "$fname" + ''; + }; + updateScript = _experimental-update-script-combinators.sequence [ + finalAttrs.passthru.updateScriptSrc.command + (lib.getExe finalAttrs.passthru.updateScriptVendor) + ]; + }; + + meta = { + description = "Speech-to-text support for Galene"; + homepage = "https://github.com/jech/galene-stt"; + changelog = "https://github.com/jech/galene-stt/raw/${finalAttrs.src.rev}/CHANGES"; + license = lib.licenses.mit; + platforms = lib.platforms.linux; + inherit (galene.meta) maintainers; + }; +}) diff --git a/pkgs/by-name/ga/galene/package.nix b/pkgs/by-name/ga/galene/package.nix index 889521626dfc..10d89c331ece 100644 --- a/pkgs/by-name/ga/galene/package.nix +++ b/pkgs/by-name/ga/galene/package.nix @@ -2,6 +2,7 @@ lib, fetchFromGitHub, buildGoModule, + nixosTests, }: buildGoModule rec { @@ -33,12 +34,17 @@ buildGoModule rec { cp -r ./static $static ''; + passthru = { + tests.vm = nixosTests.galene.basic; + }; + meta = with lib; { description = "Videoconferencing server that is easy to deploy, written in Go"; homepage = "https://github.com/jech/galene"; changelog = "https://github.com/jech/galene/raw/galene-${version}/CHANGES"; license = licenses.mit; platforms = platforms.linux; + teams = [ lib.teams.ngi ]; maintainers = with maintainers; [ rgrunbla erdnaxe diff --git a/pkgs/by-name/ge/genesys/package.nix b/pkgs/by-name/ge/genesys/package.nix index 117b986c4f75..026a261e58e6 100644 --- a/pkgs/by-name/ge/genesys/package.nix +++ b/pkgs/by-name/ge/genesys/package.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: { mkdir -p $out mv bin lib $out - wrapProgram $out/bin/${finalAttrs.pname} \ + wrapProgram $out/bin/genesys \ --set JAVA_HOME "${jre.home}" \ --prefix PATH : "${graphviz}/bin" diff --git a/pkgs/by-name/gi/github-copilot-cli/package-lock.json b/pkgs/by-name/gi/github-copilot-cli/package-lock.json deleted file mode 100644 index 03bc0c1fc339..000000000000 --- a/pkgs/by-name/gi/github-copilot-cli/package-lock.json +++ /dev/null @@ -1,3329 +0,0 @@ -{ - "name": "@githubnext/github-copilot-cli", - "version": "0.1.36", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@githubnext/github-copilot-cli", - "version": "0.1.36", - "dependencies": { - "applicationinsights": "^2.9.1", - "axios": "^1.6.0", - "chalk": "^5.1.0", - "cli-highlight": "^2.1.11", - "commander": "^9.4.1", - "get-stream": "^6.0.1", - "immer": "^9.0.16", - "ink": "^3.2.0", - "ink-divider": "^3.0.0", - "ink-select-input": "^4.2.1", - "ink-spinner": "^4.0.3", - "ink-text-input": "^4.0.3", - "inquirer": "^9.1.4", - "marked": "^4.2.12", - "marked-terminal": "^5.1.1", - "ora": "^6.1.2", - "radash": "^9.1.0", - "react": "17", - "react-devtools-core": "^4.28.4", - "react-dom": "17", - "react-query": "^3.39.2", - "semver": "^5.7.2", - "simple-update-notifier": "^1.1.0", - "tiny-invariant": "^1.3.1", - "tough-cookie": "^4.1.3", - "ts-dedent": "^2.2.0", - "use-zustand": "^0.0.1", - "uuid": "^9.0.0", - "zustand": "^4.1.4" - }, - "bin": { - "github-copilot-cli": "cli.js" - }, - "devDependencies": { - "@types/inquirer": "^9.0.2", - "@types/node": "^18.8.3", - "@types/react": "^18.0.25", - "@types/uuid": "^8.3.4", - "esbuild": "^0.15.10", - "genversion": "^3.1.1", - "typescript": "^4.8.4" - } - }, - "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz", - "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-util": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz", - "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz", - "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz", - "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz", - "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==", - "dependencies": { - "@azure/core-tracing": "^1.0.0", - "@azure/logger": "^1.0.0", - "@opentelemetry/api": "^1.4.1", - "@opentelemetry/core": "^1.15.2", - "@opentelemetry/instrumentation": "^0.41.2", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@ljharb/through": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.11.tgz", - "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@microsoft/applicationinsights-web-snippet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz", - "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==" - }, - "node_modules/@opentelemetry/api": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", - "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.20.0.tgz", - "integrity": "sha512-lSRvk5AIdD6CtgYJcJXh0wGibQ3S/8bC2qbqKs9wK8e0K1tsWV6YkGFOqVc+jIRlCbZoIBeZzDe5UI+vb94uvg==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.20.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.8.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", - "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", - "dependencies": { - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.4.2", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.20.0.tgz", - "integrity": "sha512-nOpV0vGegSq+9ze2cEDvO3BMA5pGBhmhKZiAlj+xQZjiEjPmJtdHIuBLRvptu2ahcbFJw85gIB9BYHZOvZK1JQ==", - "dependencies": { - "@opentelemetry/core": "1.20.0", - "@opentelemetry/semantic-conventions": "1.20.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.8.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.20.0.tgz", - "integrity": "sha512-BAIZ0hUgnhdb3OBQjn1FKGz/Iwie4l+uOMKklP7FGh7PTqEAbbzDNMJKaZQh6KepF7Fq+CZDRKslD3yrYy2Tzw==", - "dependencies": { - "@opentelemetry/core": "1.20.0", - "@opentelemetry/resources": "1.20.0", - "@opentelemetry/semantic-conventions": "1.20.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.8.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.20.0.tgz", - "integrity": "sha512-3zLJJCgTKYpbqFX8drl8hOCHtdchELC+kGqlVcV4mHW1DiElTtv1Nt9EKBptTd1IfL56QkuYnWJ3DeHd2Gtu/A==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/inquirer": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.7.tgz", - "integrity": "sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==", - "dev": true, - "dependencies": { - "@types/through": "*", - "rxjs": "^7.2.0" - } - }, - "node_modules/@types/node": { - "version": "18.19.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.8.tgz", - "integrity": "sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "devOptional": true - }, - "node_modules/@types/react": { - "version": "18.2.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", - "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", - "devOptional": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "devOptional": true - }, - "node_modules/@types/shimmer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.5.tgz", - "integrity": "sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==" - }, - "node_modules/@types/through": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz", - "integrity": "sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true - }, - "node_modules/@types/yoga-layout": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", - "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/applicationinsights": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.9.2.tgz", - "integrity": "sha512-wlDiD7v0BQNM8oNzsf9C836R5ze25u+CuCEZsbA5xMIXYYBxkqkWE/mo9GFJM7rsKaiGqpxEwWmePHKD2Lwy2w==", - "dependencies": { - "@azure/core-auth": "^1.5.0", - "@azure/core-rest-pipeline": "1.10.1", - "@azure/core-util": "1.2.0", - "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", - "@microsoft/applicationinsights-web-snippet": "^1.0.1", - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/core": "^1.19.0", - "@opentelemetry/sdk-trace-base": "^1.19.0", - "@opentelemetry/semantic-conventions": "^1.19.0", - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "1.1.1", - "diagnostic-channel-publishers": "1.0.8" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "applicationinsights-native-metrics": "*" - }, - "peerDependenciesMeta": { - "applicationinsights-native-metrics": { - "optional": true - } - } - }, - "node_modules/arr-rotate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-rotate/-/arr-rotate-1.0.0.tgz", - "integrity": "sha512-yOzOZcR9Tn7enTF66bqKorGGH0F36vcPaSWg8fO0c0UYb3LX3VMXj5ZxEqQLNOecAhlRJ7wYZja5i4jTlnbIfQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - }, - "node_modules/async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", - "dependencies": { - "stack-chain": "^1.3.7" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3" - } - }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "engines": { - "node": "<=0.11.8 || >0.11.10" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/auto-bind": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", - "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/broadcast-channel": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", - "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "detect-node": "^2.1.0", - "js-sha3": "0.8.0", - "microseconds": "0.2.0", - "nano-time": "1.0.0", - "oblivious-set": "1.0.0", - "rimraf": "3.0.2", - "unload": "2.2.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "bin": { - "highlight": "bin/highlight" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/cli-highlight/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "dependencies": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" - } - }, - "node_modules/code-excerpt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-3.0.0.tgz", - "integrity": "sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==", - "dependencies": { - "convert-to-spaces": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, - "node_modules/convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "node_modules/diagnostic-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz", - "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==", - "dependencies": { - "semver": "^7.5.3" - } - }, - "node_modules/diagnostic-channel-publishers": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.8.tgz", - "integrity": "sha512-HmSm9hXxSPxA9BaLGY98QU1zsdjeCk113KjAYGPCen1ZP6mhVaTPzHd6UYv5r21DnWANi+f+NyPOHruGT9jpqQ==", - "peerDependencies": { - "diagnostic-channel": "*" - } - }, - "node_modules/diagnostic-channel/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dependencies": { - "shimmer": "^1.2.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/find-package": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-package/-/find-package-1.0.0.tgz", - "integrity": "sha512-yVn71XCCaNgxz58ERTl8nA/8YYtIQDY9mHSrgFBfiFtdNNfY0h183Vh8BRkKxD8x9TUw3ec290uJKhDVxqGZBw==", - "dev": true, - "dependencies": { - "parents": "^1.0.1" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/genversion": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/genversion/-/genversion-3.2.0.tgz", - "integrity": "sha512-OIYSX6XYA8PHecLDCTri30hadSZfAjZ8Iq1+BBDXqLWP4dRLuJNLoNjsSWtTpw97IccK2LDWzkEstxAB8GdN7g==", - "dev": true, - "dependencies": { - "commander": "^7.2.0", - "ejs": "^3.1.9", - "find-package": "^1.0.0" - }, - "bin": { - "genversion": "bin/genversion.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/genversion/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "engines": { - "node": "*" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-in-the-middle": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz", - "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==", - "dependencies": { - "acorn": "^8.8.2", - "acorn-import-assertions": "^1.9.0", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ink": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ink/-/ink-3.2.0.tgz", - "integrity": "sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "auto-bind": "4.0.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.0", - "cli-cursor": "^3.1.0", - "cli-truncate": "^2.1.0", - "code-excerpt": "^3.0.0", - "indent-string": "^4.0.0", - "is-ci": "^2.0.0", - "lodash": "^4.17.20", - "patch-console": "^1.0.0", - "react-devtools-core": "^4.19.1", - "react-reconciler": "^0.26.2", - "scheduler": "^0.20.2", - "signal-exit": "^3.0.2", - "slice-ansi": "^3.0.0", - "stack-utils": "^2.0.2", - "string-width": "^4.2.2", - "type-fest": "^0.12.0", - "widest-line": "^3.1.0", - "wrap-ansi": "^6.2.0", - "ws": "^7.5.5", - "yoga-layout-prebuilt": "^1.9.6" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": ">=16.8.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/ink-divider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ink-divider/-/ink-divider-3.0.0.tgz", - "integrity": "sha512-Mqb9WArtEZCtXw622aHhJqPK157QNc+8ssl9/RvAZlS6nZRCKyW4mYOYCudQh6dSuFGt9eG5yaqT1mJaGmwu+w==", - "dependencies": { - "prop-types": "^15.7.2", - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "ink": ">=3.0.0", - "react": ">=16.8.0" - } - }, - "node_modules/ink-select-input": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/ink-select-input/-/ink-select-input-4.2.2.tgz", - "integrity": "sha512-E5AS2Vnd4CSzEa7Rm+hG47wxRQo1ASfh4msKxO7FHmn/ym+GKSSsFIfR+FonqjKNDPXYJClw8lM47RdN3Pi+nw==", - "dependencies": { - "arr-rotate": "^1.0.0", - "figures": "^3.2.0", - "lodash.isequal": "^4.5.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ink": "^3.0.5", - "react": "^16.5.2 || ^17.0.0" - } - }, - "node_modules/ink-spinner": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-4.0.3.tgz", - "integrity": "sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ==", - "dependencies": { - "cli-spinners": "^2.3.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ink": ">=3.0.5", - "react": ">=16.8.2" - } - }, - "node_modules/ink-text-input": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ink-text-input/-/ink-text-input-4.0.3.tgz", - "integrity": "sha512-eQD01ik9ltmNoHmkeQ2t8LszYkv2XwuPSUz3ie/85qer6Ll/j0QSlSaLNl6ENHZakBHdCBVZY04iOXcLLXA0PQ==", - "dependencies": { - "chalk": "^4.1.0", - "type-fest": "^0.15.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ink": "^3.0.0-3", - "react": "^16.5.2 || ^17.0.0" - } - }, - "node_modules/ink-text-input/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ink-text-input/node_modules/type-fest": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.15.1.tgz", - "integrity": "sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ink/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer": { - "version": "9.2.12", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", - "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", - "dependencies": { - "@ljharb/through": "^2.3.11", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^5.0.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/inquirer/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/inquirer/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/inquirer/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/ora/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "node_modules/log-symbols": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", - "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/marked-terminal": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", - "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", - "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.2.0", - "cli-table3": "^0.6.3", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.3.0" - }, - "engines": { - "node": ">=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", - "dependencies": { - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/match-sorter": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.3.tgz", - "integrity": "sha512-sgiXxrRijEe0SzHKGX4HouCpfHRPnqteH42UdMEW7BlWy990ZkzcvonJGv4Uu9WE7Y1f8Yocm91+4qFPCbmNww==", - "dependencies": { - "@babel/runtime": "^7.23.8", - "remove-accents": "0.5.0" - } - }, - "node_modules/microseconds": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", - "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nano-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", - "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==", - "dependencies": { - "big-integer": "^1.6.16" - } - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oblivious-set": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", - "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", - "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", - "dependencies": { - "chalk": "^5.0.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.6.1", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.1.0", - "log-symbols": "^5.1.0", - "stdin-discarder": "^0.1.0", - "strip-ansi": "^7.0.1", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", - "dev": true, - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/patch-console": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-1.0.0.tgz", - "integrity": "sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "node_modules/radash": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/radash/-/radash-9.5.0.tgz", - "integrity": "sha512-t0s8BJlvrk8YPaOS8X0J2xzqAsBlXAUkDEjoBXwlzaXsXNCpBILjT9OvWlabLa2KB/r4XrhThdXjxMs7SiCyIw==", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-devtools-core": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", - "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", - "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-query": { - "version": "3.39.3", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", - "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "broadcast-channel": "^3.4.1", - "match-sorter": "^6.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/react-reconciler": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", - "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "react": "^17.0.2" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dependencies": { - "esprima": "~4.0.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/remove-accents": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", - "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", - "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", - "dependencies": { - "define-data-property": "^1.1.1", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/stdin-discarder": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", - "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", - "dependencies": { - "bl": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/type-fest": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", - "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unload": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", - "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", - "dependencies": { - "@babel/runtime": "^7.6.2", - "detect-node": "^2.0.4" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/use-zustand": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/use-zustand/-/use-zustand-0.0.1.tgz", - "integrity": "sha512-axjswesUfXirTQ1CC1F4r0dkaI7g2nMEftyvg23Wq4PnAbLogswzj+o5gbnnnQaQOMXKHxNZIlYpKfuTnL466Q==", - "peerDependencies": { - "react": "*" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yoga-layout-prebuilt": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", - "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", - "dependencies": { - "@types/yoga-layout": "1.9.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/zustand": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", - "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", - "dependencies": { - "use-sync-external-store": "1.2.0" - }, - "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "@types/react": ">=16.8", - "immer": ">=9.0", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - } - } - } - } -} diff --git a/pkgs/by-name/gi/github-copilot-cli/package.nix b/pkgs/by-name/gi/github-copilot-cli/package.nix deleted file mode 100644 index d93eb31f8609..000000000000 --- a/pkgs/by-name/gi/github-copilot-cli/package.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - lib, - buildNpmPackage, - fetchzip, -}: - -buildNpmPackage rec { - pname = "github-copilot-cli"; - version = "0.1.36"; - - src = fetchzip { - url = "https://registry.npmjs.org/@githubnext/github-copilot-cli/-/github-copilot-cli-${version}.tgz"; - hash = "sha256-7n+7sN61OrqMVGaKll85+HwX7iGG9M/UW5lf2Pd5sRU="; - }; - - npmDepsHash = "sha256-h0StxzGbl3ZeOQ4Jy1BgJ5sJ0pAbubMCRsiIOYpU04w="; - - postPatch = '' - cp ${./package-lock.json} package-lock.json - ''; - - dontNpmBuild = true; - - meta = with lib; { - description = "CLI experience for letting GitHub Copilot help you on the command line"; - homepage = "https://githubnext.com/projects/copilot-cli/"; - license = licenses.unfree; # upstream has no license - maintainers = [ maintainers.malo ]; - platforms = platforms.all; - mainProgram = "github-copilot-cli"; - }; -} diff --git a/pkgs/by-name/gn/gnome-obfuscate/package.nix b/pkgs/by-name/gn/gnome-obfuscate/package.nix index a36d7c8ad0d5..bd6fc1ec670d 100644 --- a/pkgs/by-name/gn/gnome-obfuscate/package.nix +++ b/pkgs/by-name/gn/gnome-obfuscate/package.nix @@ -33,8 +33,7 @@ stdenv.mkDerivation (finalAttrs: { }; cargoDeps = rustPlatform.fetchCargoVendor { - inherit (finalAttrs) src; - name = "${finalAttrs.pname}-${finalAttrs.version}"; + inherit (finalAttrs) pname version src; hash = "sha256-Llgn+dYNKZ9Mles9f9Xor+GZoCCQ0cERkXz4MicZglY="; }; diff --git a/pkgs/by-name/go/go-jsonnet/package.nix b/pkgs/by-name/go/go-jsonnet/package.nix index f88fb1f1dcc4..a932b1531d97 100644 --- a/pkgs/by-name/go/go-jsonnet/package.nix +++ b/pkgs/by-name/go/go-jsonnet/package.nix @@ -11,7 +11,7 @@ buildGoModule (finalAttrs: { src = fetchFromGitHub { owner = "google"; - repo = finalAttrs.pname; + repo = "go-jsonnet"; tag = "v${finalAttrs.version}"; hash = "sha256-J92xNDpCidbiSsN6NveS6BX6Tx+qDQqkgm6pjk1wBTQ="; }; diff --git a/pkgs/by-name/ho/hottext/package.nix b/pkgs/by-name/ho/hottext/package.nix index 7269f16a5ac2..91e38a608a31 100644 --- a/pkgs/by-name/ho/hottext/package.nix +++ b/pkgs/by-name/ho/hottext/package.nix @@ -24,9 +24,9 @@ buildNimPackage (finalAttrs: { desktopItem = makeDesktopItem { categories = [ "Utility" ]; comment = finalAttrs.meta.description; - desktopName = finalAttrs.pname; - exec = finalAttrs.pname; - name = finalAttrs.pname; + desktopName = "hottext"; + exec = "hottext"; + name = "hottext"; }; postInstall = '' diff --git a/pkgs/by-name/id/ideamaker/package.nix b/pkgs/by-name/id/ideamaker/package.nix index 20b894708736..778de36bbc44 100644 --- a/pkgs/by-name/id/ideamaker/package.nix +++ b/pkgs/by-name/id/ideamaker/package.nix @@ -135,10 +135,10 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall install -D usr/lib/x86_64-linux-gnu/ideamaker/ideamaker \ - $out/bin/${finalAttrs.pname} + $out/bin/ideamaker patchelf --replace-needed libquazip.so.1 libquazip1-qt5.so \ - $out/bin/${finalAttrs.pname} + $out/bin/ideamaker mimetypeDir=$out/share/icons/hicolor/128x128/mimetypes mkdir -p ''$mimetypeDir @@ -146,10 +146,10 @@ stdenv.mkDerivation (finalAttrs: { mv $file ''$mimetypeDir/''$(basename ''${file%.ico}).png done install -D ${./mimetypes.xml} \ - $out/share/mime/packages/${finalAttrs.pname}.xml + $out/share/mime/packages/ideamaker.xml install -D usr/share/ideamaker/icons/ideamaker-icon.png \ - $out/share/pixmaps/${finalAttrs.pname}.png + $out/share/pixmaps/ideamaker.png ln -s ${finalAttrs.desktopItem}/share/applications $out/share/ @@ -157,9 +157,9 @@ stdenv.mkDerivation (finalAttrs: { ''; desktopItem = makeDesktopItem { - name = finalAttrs.pname; - exec = finalAttrs.pname; - icon = finalAttrs.pname; + name = "ideamaker"; + exec = "ideamaker"; + icon = "ideamaker"; desktopName = "Ideamaker"; comment = "ideaMaker - www.raise3d.com"; categories = [ diff --git a/pkgs/by-name/id/idnkit/package.nix b/pkgs/by-name/id/idnkit/package.nix index 9f118fad71bb..23a0fb326fa5 100644 --- a/pkgs/by-name/id/idnkit/package.nix +++ b/pkgs/by-name/id/idnkit/package.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation (finalAttrs: { version = "2.3"; src = fetchurl { - url = "https://jprs.co.jp/idn/${finalAttrs.pname}-${finalAttrs.version}.tar.bz2"; + url = "https://jprs.co.jp/idn/idnkit-${finalAttrs.version}.tar.bz2"; hash = "sha256-JtBxF2UAQqtGk/DgCWAnXVihvnc+bRPFA7o4RxDz6X4="; }; diff --git a/pkgs/by-name/ir/irpf/package.nix b/pkgs/by-name/ir/irpf/package.nix index c5aeda60c640..998dcc91ebc1 100644 --- a/pkgs/by-name/ir/irpf/package.nix +++ b/pkgs/by-name/ir/irpf/package.nix @@ -44,8 +44,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { desktopItems = [ (makeDesktopItem { - name = finalAttrs.pname; - exec = finalAttrs.pname; + name = "irpf"; + exec = "irpf"; icon = "rfb64"; desktopName = "Imposto de Renda Pessoa Física"; comment = "Programa Oficial da Receita para elaboração do IRPF"; @@ -56,7 +56,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - BASEDIR="$out/share/${finalAttrs.pname}" + BASEDIR="$out/share/irpf" mkdir -p "$BASEDIR" cp --no-preserve=mode -r help lib lib-modulos "$BASEDIR" @@ -64,10 +64,10 @@ stdenvNoCC.mkDerivation (finalAttrs: { install -Dm644 irpf.jar Leia-me.htm offline.png online.png pgd-updater.jar "$BASEDIR" # make xdg-open overrideable at runtime - makeWrapper ${jdk11}/bin/java $out/bin/${finalAttrs.pname} \ + makeWrapper ${jdk11}/bin/java $out/bin/irpf \ --add-flags "-Dawt.useSystemAAFontSettings=on" \ --add-flags "-Dswing.aatext=true" \ - --add-flags "-jar $BASEDIR/${finalAttrs.pname}.jar" \ + --add-flags "-jar $BASEDIR/irpf.jar" \ --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} \ --set _JAVA_AWT_WM_NONREPARENTING 1 \ --set AWT_TOOLKIT MToolkit diff --git a/pkgs/by-name/it/itamae/Gemfile.lock b/pkgs/by-name/it/itamae/Gemfile.lock index 0dad58c0fb5a..78e05c9d9c38 100644 --- a/pkgs/by-name/it/itamae/Gemfile.lock +++ b/pkgs/by-name/it/itamae/Gemfile.lock @@ -7,7 +7,7 @@ GEM docker-api (2.4.0) excon (>= 0.64.0) multi_json - ed25519 (1.3.0) + ed25519 (1.4.0) excon (1.2.5) logger hashie (5.0.0) @@ -25,7 +25,7 @@ GEM net-telnet (0.2.0) schash (0.1.2) sfl (2.3) - specinfra (2.92.0) + specinfra (2.94.0) base64 net-scp net-ssh (>= 2.7) @@ -43,4 +43,4 @@ DEPENDENCIES itamae BUNDLED WITH - 2.6.2 + 2.6.6 diff --git a/pkgs/by-name/it/itamae/gemset.nix b/pkgs/by-name/it/itamae/gemset.nix index a9abf91ee919..64125ddd770e 100644 --- a/pkgs/by-name/it/itamae/gemset.nix +++ b/pkgs/by-name/it/itamae/gemset.nix @@ -48,10 +48,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji"; + sha256 = "01n5rbyws1ijwc5dw7s88xx3zzacxx9k97qn8x11b6k8k18pzs8n"; type = "gem"; }; - version = "1.3.0"; + version = "1.4.0"; }; excon = { dependencies = [ "logger" ]; @@ -174,10 +174,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0aswlmhh152c974i8bn8d90kjbwadp0bjgs9kgpxxb3vffsfxc1w"; + sha256 = "1m7vplx6w0w0mmij6n7zgc68kd1xbkhyb4qg25vmk8p21nbjbw6j"; type = "gem"; }; - version = "2.92.0"; + version = "2.94.0"; }; thor = { groups = [ "default" ]; diff --git a/pkgs/by-name/ke/keepass/package.nix b/pkgs/by-name/ke/keepass/package.nix index e7bfa51c4923..9c326f991c96 100644 --- a/pkgs/by-name/ke/keepass/package.nix +++ b/pkgs/by-name/ke/keepass/package.nix @@ -123,7 +123,7 @@ stdenv.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - target="$out/lib/dotnet/${finalAttrs.pname}" + target="$out/lib/dotnet/keepass" mkdir -p "$target" cp -rv $outputFiles "$target" diff --git a/pkgs/by-name/li/libconfig/package.nix b/pkgs/by-name/li/libconfig/package.nix index 97a81eb7456b..0da2905d7725 100644 --- a/pkgs/by-name/li/libconfig/package.nix +++ b/pkgs/by-name/li/libconfig/package.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation (finalAttrs: { version = "1.8"; src = fetchurl { - url = "https://hyperrealm.github.io/${finalAttrs.pname}/dist/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; + url = "https://hyperrealm.github.io/libconfig/dist/libconfig-${finalAttrs.version}.tar.gz"; hash = "sha256-BR4V3Q6QfESQXzF5M/VIcxTypW6MZybIMEzpkIhIUKo="; }; diff --git a/pkgs/by-name/li/libgourou/package.nix b/pkgs/by-name/li/libgourou/package.nix index cc669b512030..b790d56deb29 100644 --- a/pkgs/by-name/li/libgourou/package.nix +++ b/pkgs/by-name/li/libgourou/package.nix @@ -1,7 +1,7 @@ { lib, stdenv, - fetchzip, + fetchFromGitea, pugixml, updfparser, curl, @@ -10,14 +10,16 @@ installShellFiles, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "libgourou"; - version = "0.8.2"; + version = "0.8.7"; - src = fetchzip { - url = "https://indefero.soutade.fr/p/libgourou/source/download/v${version}/"; - sha256 = "sha256-adkrvBCgN07Ir+J3JFCy+X9p9609lj1w8nElrlHXTxc"; - extension = "zip"; + src = fetchFromGitea { + domain = "forge.soutade.fr"; + owner = "soutade"; + repo = "libgourou"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Tkft/pe3lH07pmyVibTEutIIvconUWDH1ZVN3qV4sSY="; }; postPatch = '' @@ -47,7 +49,7 @@ stdenv.mkDerivation rec { runHook preInstall install -Dt $out/include include/libgourou*.h install -Dt $out/lib libgourou.so - install -Dt $out/lib libgourou.so.${version} + install -Dt $out/lib libgourou.so.${finalAttrs.version} install -Dt $out/lib libgourou.a install -Dt $out/bin utils/acsmdownloader install -Dt $out/bin utils/adept_{activate,loan_mgt,remove} @@ -57,10 +59,10 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Implementation of Adobe's ADEPT protocol for ePub/PDF DRM"; - homepage = "https://indefero.soutade.fr/p/libgourou"; + homepage = "https://forge.soutade.fr/soutade/libgourou"; license = licenses.lgpl3Plus; maintainers = with maintainers; [ autumnal ]; platforms = platforms.all; broken = stdenv.hostPlatform.isDarwin; }; -} +}) diff --git a/pkgs/by-name/li/lillydap/package.nix b/pkgs/by-name/li/lillydap/package.nix new file mode 100644 index 000000000000..d095f3a4a8ca --- /dev/null +++ b/pkgs/by-name/li/lillydap/package.nix @@ -0,0 +1,46 @@ +{ + lib, + stdenv, + fetchFromGitLab, + cmake, + gperf, + arpa2cm, + quickder, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "lillydap"; + version = "1.0.1"; + + src = fetchFromGitLab { + owner = "arpa2"; + repo = "lillydap"; + tag = "v${finalAttrs.version}"; + hash = "sha256-SQuvu1A9Iq/fKthfYyVQGWFuyHYnhIry/wvnwgdMKHY="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + gperf + ]; + + buildInputs = [ + arpa2cm + quickder + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Little LDAP: Event-driven, lock-free kernel for dynamic data servers, clients, filters"; + homepage = "https://gitlab.com/arpa2/lillydap"; + changelog = "https://gitlab.com/arpa2/lillydap/-/blob/v${finalAttrs.version}/CHANGES"; + license = lib.licenses.bsd2; + teams = with lib.teams; [ ngi ]; + maintainers = with lib.maintainers; [ ethancedwards8 ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/lo/lorem/package.nix b/pkgs/by-name/lo/lorem/package.nix index 8c8eafcdb15b..0b8c024946a0 100644 --- a/pkgs/by-name/lo/lorem/package.nix +++ b/pkgs/by-name/lo/lorem/package.nix @@ -29,8 +29,7 @@ stdenv.mkDerivation (finalAttrs: { }; cargoDeps = rustPlatform.fetchCargoVendor { - src = finalAttrs.src; - name = "${finalAttrs.pname}-${finalAttrs.version}"; + inherit (finalAttrs) pname version src; hash = "sha256-4JYYcfsEoCGJWZCp0273gXrf8hfuHL/QSsLEHvNa4uA="; }; diff --git a/pkgs/by-name/ma/mapproxy/package.nix b/pkgs/by-name/ma/mapproxy/package.nix index 1afe2d500365..c59573b4bb09 100644 --- a/pkgs/by-name/ma/mapproxy/package.nix +++ b/pkgs/by-name/ma/mapproxy/package.nix @@ -7,14 +7,14 @@ python3Packages.buildPythonApplication rec { pname = "mapproxy"; - version = "4.1.1"; + version = "4.1.2"; disabled = python3Packages.pythonOlder "3.8"; src = fetchFromGitHub { owner = "mapproxy"; repo = "mapproxy"; tag = version; - hash = "sha256-rsravNSmvx1/291VvfRm0Yx1eg32UJd+egeG4S2SNnk="; + hash = "sha256-sh0kViv1Ax/2YPL2ON+X03d5Moa2oPWhb4Rp6Ni5AAY="; }; prePatch = '' diff --git a/pkgs/by-name/ma/markdownlint-cli2/package.nix b/pkgs/by-name/ma/markdownlint-cli2/package.nix index d500727d99f3..65c38b5ec9d9 100644 --- a/pkgs/by-name/ma/markdownlint-cli2/package.nix +++ b/pkgs/by-name/ma/markdownlint-cli2/package.nix @@ -11,7 +11,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "markdownlint-cli2"; - version = "0.17.2"; + version = "0.18.1"; # upstream is not interested in including package-lock.json in the source # https://github.com/DavidAnson/markdownlint-cli2/issues/198#issuecomment-1690529976 @@ -19,7 +19,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { # so use the tarball from the archlinux mirror src = fetchurl { url = "https://us.mirrors.cicku.me/archlinux/extra/os/x86_64/markdownlint-cli2-${finalAttrs.version}-1-any.pkg.tar.zst"; - hash = "sha256-TuiLFP/XItJh5VQWdwCvXRQCVzmqst4Sxna0eLobEQ4="; + hash = "sha256-M7qmhRDJGm2MhgS2oMfRrkLAst1Ye/rPCwP78UBbyyY="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/mo/movim/package.nix b/pkgs/by-name/mo/movim/package.nix index 51843cfc6ac1..54eb8db1f7dc 100644 --- a/pkgs/by-name/mo/movim/package.nix +++ b/pkgs/by-name/mo/movim/package.nix @@ -154,7 +154,7 @@ php.buildComposerProject2 (finalAttrs: { mkdir -p $out/bin cat << EOF > $out/bin/movim #!${lib.getExe dash} - ${lib.getExe finalAttrs.php} $out/share/php/${finalAttrs.pname}/daemon.php "\$@" + ${lib.getExe finalAttrs.php} $out/share/php/movim/daemon.php "\$@" EOF chmod +x $out/bin/movim diff --git a/pkgs/by-name/my/mya/package.nix b/pkgs/by-name/my/mya/package.nix index 0a6100663841..8b34114af33a 100644 --- a/pkgs/by-name/my/mya/package.nix +++ b/pkgs/by-name/my/mya/package.nix @@ -44,9 +44,9 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall # Based on the upstream PKGBUILD - mkdir -p $out/share/doc/${finalAttrs.pname} + mkdir -p $out/share/doc/mya cp -a bin $out - cp $cmakeDir/README.md $out/share/doc/${finalAttrs.pname} + cp $cmakeDir/README.md $out/share/doc/mya runHook postInstall ''; diff --git a/pkgs/by-name/ne/netgen/package.nix b/pkgs/by-name/ne/netgen/package.nix index a58e521737db..c12f445798ec 100644 --- a/pkgs/by-name/ne/netgen/package.nix +++ b/pkgs/by-name/ne/netgen/package.nix @@ -126,7 +126,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeFeature "NETGEN_VERSION_GIT" "v${finalAttrs.version}-0") (lib.cmakeFeature "NG_INSTALL_DIR_BIN" "bin") (lib.cmakeFeature "NG_INSTALL_DIR_LIB" "lib") - (lib.cmakeFeature "NG_INSTALL_DIR_CMAKE" "lib/cmake/${finalAttrs.pname}") + (lib.cmakeFeature "NG_INSTALL_DIR_CMAKE" "lib/cmake/netgen") (lib.cmakeFeature "NG_INSTALL_DIR_PYTHON" python3Packages.python.sitePackages) (lib.cmakeFeature "NG_INSTALL_DIR_RES" "share") (lib.cmakeFeature "NG_INSTALL_DIR_INCLUDE" "include") @@ -160,11 +160,11 @@ stdenv.mkDerivation (finalAttrs: { postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' rm $out/bin/{Netgen1,startup.sh} - mkdir -p $out/Applications/${finalAttrs.pname}.app/Contents/{MacOS,Resouces} + mkdir -p $out/Applications/netgen.app/Contents/{MacOS,Resouces} substituteInPlace $out/Info.plist --replace-fail "Netgen1" "netgen" - mv $out/Info.plist $out/Applications/${finalAttrs.pname}.app/Contents - mv $out/Netgen.icns $out/Applications/${finalAttrs.pname}.app/Contents/Resouces - ln -s $out/bin/netgen $out/Applications/${finalAttrs.pname}.app/Contents/MacOS/netgen + mv $out/Info.plist $out/Applications/netgen.app/Contents + mv $out/Netgen.icns $out/Applications/netgen.app/Contents/Resouces + ln -s $out/bin/netgen $out/Applications/netgen.app/Contents/MacOS/netgen '' + lib.optionalString stdenv.hostPlatform.isLinux '' # Extract pngs from the Apple icon image and create diff --git a/pkgs/by-name/oa/oakctl/package.nix b/pkgs/by-name/oa/oakctl/package.nix index 1b0de871f1d0..2f8f4f2a2a43 100644 --- a/pkgs/by-name/oa/oakctl/package.nix +++ b/pkgs/by-name/oa/oakctl/package.nix @@ -57,7 +57,7 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall mkdir -p $out/bin - install -D -m 0755 $src $out/bin/${finalAttrs.pname} + install -D -m 0755 $src $out/bin/oakctl runHook postInstall ''; diff --git a/pkgs/by-name/oc/ocelot-desktop/package.nix b/pkgs/by-name/oc/ocelot-desktop/package.nix index a8441efb34eb..73a127dc1d1c 100644 --- a/pkgs/by-name/oc/ocelot-desktop/package.nix +++ b/pkgs/by-name/oc/ocelot-desktop/package.nix @@ -77,14 +77,14 @@ stdenv.mkDerivation (finalAttrs: { '' runHook preInstall - mkdir -p $out/{bin,share/${finalAttrs.pname}} - install -Dm644 ${finalAttrs.src} $out/share/${finalAttrs.pname}/ocelot-desktop.jar + mkdir -p $out/{bin,share/ocelot-desktop} + install -Dm644 ${finalAttrs.src} $out/share/ocelot-desktop/ocelot-desktop.jar makeBinaryWrapper ${jre}/bin/java $out/bin/ocelot-desktop \ --set JAVA_HOME ${jre.home} \ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeLibs}" \ --prefix PATH : "${lib.makeBinPath runtimePrograms}" \ - --add-flags "-jar $out/share/${finalAttrs.pname}/ocelot-desktop.jar" + --add-flags "-jar $out/share/ocelot-desktop/ocelot-desktop.jar" # copy icons from zip file # ocelot/desktop/images/icon*.png @@ -92,7 +92,7 @@ stdenv.mkDerivation (finalAttrs: { for size in 16 32 64 128 256; do mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps - unzip -p $out/share/${finalAttrs.pname}/ocelot-desktop.jar \ + unzip -p $out/share/ocelot-desktop/ocelot-desktop.jar \ ocelot/desktop/images/icon"$size".png > $out/share/icons/hicolor/"$size"x"$size"/apps/ocelot-desktop.png done diff --git a/pkgs/by-name/pa/payload_dumper/package.nix b/pkgs/by-name/pa/payload_dumper/package.nix index 6f971ded3d4a..cb36c4cf1a68 100644 --- a/pkgs/by-name/pa/payload_dumper/package.nix +++ b/pkgs/by-name/pa/payload_dumper/package.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - sitePackages=$out/${python3.sitePackages}/${finalAttrs.pname} + sitePackages=$out/${python3.sitePackages}/payload_dumper install -D ./payload_dumper.py $out/bin/payload_dumper install -D ./update_metadata_pb2.py $sitePackages/update_metadata_pb2.py diff --git a/pkgs/by-name/pb/pb/package.nix b/pkgs/by-name/pb/pb/package.nix index d9508ef6cb33..db8e599965c8 100644 --- a/pkgs/by-name/pb/pb/package.nix +++ b/pkgs/by-name/pb/pb/package.nix @@ -4,14 +4,14 @@ fetchFromGitHub, }: -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "pb"; version = "0.6.0"; src = fetchFromGitHub { owner = "parseablehq"; repo = "pb"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-OXxLHi7v/xJZVvxHZvJ0eH4MYrlLFxDAMT9CVG2mWTM="; }; @@ -20,7 +20,7 @@ buildGoModule rec { ldflags = [ "-s" "-w" - "-X main.Version=${version}" + "-X main.Version=${finalAttrs.version}" ]; tags = [ "kqueue" ]; @@ -29,10 +29,10 @@ buildGoModule rec { meta = { homepage = "https://github.com/parseablehq/pb"; - changelog = "https://github.com/parseablehq/pb/releases/tag/v${version}"; + changelog = "https://github.com/parseablehq/pb/releases/tag/v${finalAttrs.version}"; description = "CLI client for Parseable server"; license = lib.licenses.agpl3Plus; maintainers = with lib.maintainers; [ aaronjheng ]; mainProgram = "pb"; }; -} +}) diff --git a/pkgs/by-name/pi/picolibc/package.nix b/pkgs/by-name/pi/picolibc/package.nix index e870fbe3d3f3..36a4c1a142b4 100644 --- a/pkgs/by-name/pi/picolibc/package.nix +++ b/pkgs/by-name/pi/picolibc/package.nix @@ -106,7 +106,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "picolibc"; - repo = finalAttrs.pname; + repo = "picolibc"; tag = finalAttrs.version; hash = "sha256-djOZKkinsaaYD4tUEA6mKdo+5em0GP1/+rI0mIm7Vs8="; }; diff --git a/pkgs/by-name/pi/pixelfed/package.nix b/pkgs/by-name/pi/pixelfed/package.nix index 60417f781a4a..4ccf2885abaa 100644 --- a/pkgs/by-name/pi/pixelfed/package.nix +++ b/pkgs/by-name/pi/pixelfed/package.nix @@ -23,7 +23,7 @@ php.buildComposerProject2 (finalAttrs: { postInstall = '' chmod -R u+w $out/share - mv "$out/share/php/${finalAttrs.pname}"/* $out + mv "$out/share/php/pixelfed"/* $out rm -R $out/bootstrap/cache # Move static contents for the NixOS module to pick it up, if needed. mv $out/bootstrap $out/bootstrap-static diff --git a/pkgs/by-name/pm/pmbootstrap/package.nix b/pkgs/by-name/pm/pmbootstrap/package.nix index 42230293293d..0b71d0e307e9 100644 --- a/pkgs/by-name/pm/pmbootstrap/package.nix +++ b/pkgs/by-name/pm/pmbootstrap/package.nix @@ -15,14 +15,14 @@ python3Packages.buildPythonApplication rec { pname = "pmbootstrap"; - version = "3.4.0"; + version = "3.4.2"; pyproject = true; src = fetchFromGitLab { owner = "postmarketOS"; repo = "pmbootstrap"; tag = version; - hash = "sha256-vNa0MMU5NHO8RjgfKxNjhQDKQ2Rd/ZGU0HndOD2Sypo="; + hash = "sha256-5N8yAd/1gSzHP2wXpqZb+LpylQ/LYspJ+YaY2YaWCSs="; domain = "gitlab.postmarketos.org"; }; @@ -80,7 +80,7 @@ python3Packages.buildPythonApplication rec { meta = { description = "Sophisticated chroot/build/flash tool to develop and install postmarketOS"; - homepage = "https://gitlab.com/postmarketOS/pmbootstrap"; + homepage = "https://gitlab.postmarketos.org/postmarketOS/pmbootstrap"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ onny diff --git a/pkgs/by-name/pr/proton-ge-bin/package.nix b/pkgs/by-name/pr/proton-ge-bin/package.nix index 3a24fa2ae7dd..d5bf56c940f4 100644 --- a/pkgs/by-name/pr/proton-ge-bin/package.nix +++ b/pkgs/by-name/pr/proton-ge-bin/package.nix @@ -9,11 +9,11 @@ }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "proton-ge-bin"; - version = "GE-Proton10-3"; + version = "GE-Proton10-4"; src = fetchzip { url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz"; - hash = "sha256-V4znOni53KMZ0rs7O7TuBst5kDSaEOyWUGgL7EESVAU="; + hash = "sha256-Si/CQ2PINfhmsC+uW3iFBUoSczZdkqwCZ8FAFuipu68="; }; dontUnpack = true; diff --git a/pkgs/by-name/qo/qownnotes/package.nix b/pkgs/by-name/qo/qownnotes/package.nix index 65b07547a583..1ebe81f1ca28 100644 --- a/pkgs/by-name/qo/qownnotes/package.nix +++ b/pkgs/by-name/qo/qownnotes/package.nix @@ -5,7 +5,7 @@ qt6Packages, cmake, makeWrapper, - botan2, + botan3, pkg-config, nixosTests, installShellFiles, @@ -17,11 +17,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "qownnotes"; appname = "QOwnNotes"; - version = "25.5.10"; + version = "25.6.0"; src = fetchurl { url = "https://github.com/pbek/QOwnNotes/releases/download/v${finalAttrs.version}/qownnotes-${finalAttrs.version}.tar.xz"; - hash = "sha256-P8vBLDnkBjTU/x47ka0Ps3nR+Wi4C6Gx+d0sP8lF/xM="; + hash = "sha256-RUW8fWPJxTq7Ya+uZ6xGg7URHc+ojuBs9g++UXrK9I0="; }; nativeBuildInputs = @@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: { qt6Packages.qtdeclarative qt6Packages.qtsvg qt6Packages.qtwebsockets - botan2 + botan3 ] ++ lib.optionals stdenv.hostPlatform.isLinux [ qt6Packages.qtwayland ]; cmakeFlags = [ diff --git a/pkgs/by-name/ru/rustls-ffi/package.nix b/pkgs/by-name/ru/rustls-ffi/package.nix index 11dca679d168..d86c53fd8441 100644 --- a/pkgs/by-name/ru/rustls-ffi/package.nix +++ b/pkgs/by-name/ru/rustls-ffi/package.nix @@ -25,8 +25,7 @@ stdenv.mkDerivation (finalAttrs: { }; cargoDeps = rustPlatform.fetchCargoVendor { - src = finalAttrs.src; - name = "${finalAttrs.pname}-${finalAttrs.version}"; + inherit (finalAttrs) pname version src; hash = "sha256-gqc6en59QQpD14hOgRuGEPWLvrkyGn9tPR9vQmRAxIg="; }; diff --git a/pkgs/by-name/sc/scmutils/package.nix b/pkgs/by-name/sc/scmutils/package.nix index 2b9c56b56027..8a8f8e9f1aa9 100644 --- a/pkgs/by-name/sc/scmutils/package.nix +++ b/pkgs/by-name/sc/scmutils/package.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation (finalAttrs: { version = "20230902"; src = fetchurl { - url = "https://groups.csail.mit.edu/mac/users/gjs/6946/mechanics-system-installation/native-code/${finalAttrs.pname}-src-${finalAttrs.version}.tar.gz"; + url = "https://groups.csail.mit.edu/mac/users/gjs/6946/mechanics-system-installation/native-code/scmutils-src-${finalAttrs.version}.tar.gz"; hash = "sha256-9/shOxoKwJ4uDTHmvXqhemgy3W+GUCmoqFm5e1t3W0M="; }; diff --git a/pkgs/by-name/sh/shopware-cli/package.nix b/pkgs/by-name/sh/shopware-cli/package.nix index f52e3bdb5416..99eece4824bc 100644 --- a/pkgs/by-name/sh/shopware-cli/package.nix +++ b/pkgs/by-name/sh/shopware-cli/package.nix @@ -10,12 +10,12 @@ buildGoModule rec { pname = "shopware-cli"; - version = "0.6.1"; + version = "0.6.3"; src = fetchFromGitHub { repo = "shopware-cli"; owner = "FriendsOfShopware"; tag = version; - hash = "sha256-GdZq3Jn+SAtf0SqJSc+52JA+VR3cFJ5DzQo3cMu9Ahs="; + hash = "sha256-UkLzjW3Ak+bMw+nRqlaojeJ67cxadkvufZ/pn1nTmoM="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/si/sigil/package.nix b/pkgs/by-name/si/sigil/package.nix index 9fdb16fe57a7..46ad4b1b574f 100644 --- a/pkgs/by-name/si/sigil/package.nix +++ b/pkgs/by-name/si/sigil/package.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation rec { pname = "sigil"; - version = "2.4.2"; + version = "2.5.1"; src = fetchFromGitHub { repo = "Sigil"; owner = "Sigil-Ebook"; tag = version; - hash = "sha256-/lnSNamLkPLG8tn0w8F0zFyypMUXyMhgxA2WyQFegKw="; + hash = "sha256-1Z+OosEZJEHiUz+62wYuNeAyQXARh14WAtqBVjq1FZw="; }; pythonPath = with python3Packages; [ lxml ]; diff --git a/pkgs/by-name/sl/slurm/package.nix b/pkgs/by-name/sl/slurm/package.nix index ee53bf310446..74320b74435a 100644 --- a/pkgs/by-name/sl/slurm/package.nix +++ b/pkgs/by-name/sl/slurm/package.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { pname = "slurm"; - version = "24.11.5.1"; + version = "25.05.0.1"; # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php # because the latter does not keep older releases. @@ -50,7 +50,7 @@ stdenv.mkDerivation rec { repo = "slurm"; # The release tags use - instead of . rev = "${pname}-${builtins.replaceStrings [ "." ] [ "-" ] version}"; - hash = "sha256-0c8b+quLeWpCyuCOcp/B8Yd0dxr90UtSV/tgeTi7tbk="; + hash = "sha256-C1euW/twT3AhwtNUmUDtmFjMUi5B4I7r488YcT+N/zM="; }; outputs = [ diff --git a/pkgs/by-name/sn/snes9x/package.nix b/pkgs/by-name/sn/snes9x/package.nix index 77fdf7877922..9baa9309c3eb 100644 --- a/pkgs/by-name/sn/snes9x/package.nix +++ b/pkgs/by-name/sn/snes9x/package.nix @@ -106,9 +106,9 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall install -Dm755 snes9x -t "$out/bin/" - install -Dm644 snes9x.conf.default -t "$out/share/doc/${finalAttrs.pname}/" + install -Dm644 snes9x.conf.default -t "$out/share/doc/snes9x/" install -Dm644 ../docs/{control-inputs,controls,snapshots}.txt -t \ - "$out/share/doc/${finalAttrs.pname}/" + "$out/share/doc/snes9x/" runHook postInstall ''; diff --git a/pkgs/by-name/sr/srb2/package.nix b/pkgs/by-name/sr/srb2/package.nix index 208abc217571..70b606d782c9 100644 --- a/pkgs/by-name/sr/srb2/package.nix +++ b/pkgs/by-name/sr/srb2/package.nix @@ -90,8 +90,8 @@ stdenv.mkDerivation (finalAttrs: { desktopItems = [ (makeDesktopItem rec { name = "Sonic Robo Blast 2"; - exec = finalAttrs.pname; - icon = finalAttrs.pname; + exec = "srb2"; + icon = "srb2"; comment = finalAttrs.meta.description; desktopName = name; genericName = name; diff --git a/pkgs/by-name/sr/srb2kart/package.nix b/pkgs/by-name/sr/srb2kart/package.nix index 72d9c153de33..27241ec8e3c6 100644 --- a/pkgs/by-name/sr/srb2kart/package.nix +++ b/pkgs/by-name/sr/srb2kart/package.nix @@ -73,8 +73,8 @@ stdenv.mkDerivation (finalAttrs: { desktopItems = [ (makeDesktopItem rec { name = "Sonic Robo Blast 2 Kart"; - exec = finalAttrs.pname; - icon = finalAttrs.pname; + exec = "srb2kart"; + icon = "srb2kart"; comment = "Kart racing mod based on SRB2"; desktopName = name; genericName = name; diff --git a/pkgs/by-name/st/stardust/package.nix b/pkgs/by-name/st/stardust/package.nix index 530c4a93c7d8..6e0a0cbd493e 100644 --- a/pkgs/by-name/st/stardust/package.nix +++ b/pkgs/by-name/st/stardust/package.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation (finalAttrs: { version = "0.1.13"; src = fetchurl { - url = "http://iwar.free.fr/spip/IMG/gz/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; + url = "http://iwar.free.fr/spip/IMG/gz/stardust-${finalAttrs.version}.tar.gz"; hash = "sha256-t5cykB5zHYYj4tlk9QDhL7YQVgEScBZw9OIVXz5NOqc="; }; diff --git a/pkgs/by-name/st/stegsolve/package.nix b/pkgs/by-name/st/stegsolve/package.nix index 33c186837a95..7d24479d9256 100644 --- a/pkgs/by-name/st/stegsolve/package.nix +++ b/pkgs/by-name/st/stegsolve/package.nix @@ -23,10 +23,10 @@ stdenvNoCC.mkDerivation (finalAttrs: { desktopItems = [ (makeDesktopItem { type = "Application"; - name = finalAttrs.pname; + name = "stegsolve"; desktopName = "Stegsolve"; comment = "A steganographic image analyzer, solver and data extractor for challanges"; - exec = finalAttrs.pname; + exec = "stegsolve"; categories = [ "Graphics" ]; }) ]; diff --git a/pkgs/by-name/st/stretchly/package.nix b/pkgs/by-name/st/stretchly/package.nix index 684cf57eadc2..39b1d6abdd0a 100644 --- a/pkgs/by-name/st/stretchly/package.nix +++ b/pkgs/by-name/st/stretchly/package.nix @@ -27,21 +27,21 @@ stdenv.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - mkdir -p $out/bin $out/share/${finalAttrs.pname}/ - mv resources/app.asar* $out/share/${finalAttrs.pname}/ + mkdir -p $out/bin $out/share/stretchly/ + mv resources/app.asar* $out/share/stretchly/ mkdir -p $out/share/applications ln -s ${finalAttrs.desktopItem}/share/applications/* $out/share/applications/ - makeWrapper ${electron}/bin/electron $out/bin/${finalAttrs.pname} \ - --add-flags $out/share/${finalAttrs.pname}/app.asar + makeWrapper ${electron}/bin/electron $out/bin/stretchly \ + --add-flags $out/share/stretchly/app.asar runHook postInstall ''; desktopItem = makeDesktopItem { - name = finalAttrs.pname; - exec = finalAttrs.pname; + name = "stretchly"; + exec = "stretchly"; icon = finalAttrs.icon; desktopName = "Stretchly"; genericName = "Stretchly"; diff --git a/pkgs/by-name/st/stylelint-lsp/package.nix b/pkgs/by-name/st/stylelint-lsp/package.nix index 2f52bc167ea8..7de32eea7929 100644 --- a/pkgs/by-name/st/stylelint-lsp/package.nix +++ b/pkgs/by-name/st/stylelint-lsp/package.nix @@ -51,10 +51,10 @@ stdenvNoCC.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - mkdir -p $out/{bin,lib/${finalAttrs.pname}} - mv {dist,node_modules} $out/lib/${finalAttrs.pname} - chmod a+x $out/lib/${finalAttrs.pname}/dist/index.js - ln -s $out/lib/${finalAttrs.pname}/dist/index.js $out/bin/stylelint-lsp + mkdir -p $out/{bin,lib/stylelint-lsp} + mv {dist,node_modules} $out/lib/stylelint-lsp + chmod a+x $out/lib/stylelint-lsp/dist/index.js + ln -s $out/lib/stylelint-lsp/dist/index.js $out/bin/stylelint-lsp runHook postInstall ''; diff --git a/pkgs/by-name/st/styluslabs-write/package.nix b/pkgs/by-name/st/styluslabs-write/package.nix index 2da1066ae975..be176963d0bc 100644 --- a/pkgs/by-name/st/styluslabs-write/package.nix +++ b/pkgs/by-name/st/styluslabs-write/package.nix @@ -75,13 +75,13 @@ stdenv.mkDerivation (finalAttrs: { for i in 16 24 48 64 96 128 256 512; do mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps - magick scribbleres/write_512.png -resize ''${i}x''${i} $out/share/icons/hicolor/''${i}x''${i}/apps/${finalAttrs.pname}.png + magick scribbleres/write_512.png -resize ''${i}x''${i} $out/share/icons/hicolor/''${i}x''${i}/apps/styluslabs-write.png done install -Dm444 scribbleres/linux/Write.desktop -t $out/share/applications substituteInPlace $out/share/applications/Write.desktop \ --replace-fail 'Exec=/opt/Write/Write' 'Exec=Write' \ - --replace-fail 'Icon=Write144x144' 'Icon=${finalAttrs.pname}' + --replace-fail 'Icon=Write144x144' 'Icon=styluslabs-write' ''; enableParallelBuilding = true; diff --git a/pkgs/by-name/sw/swayimg/package.nix b/pkgs/by-name/sw/swayimg/package.nix index 0290529a4ead..a0ccdea5021a 100644 --- a/pkgs/by-name/sw/swayimg/package.nix +++ b/pkgs/by-name/sw/swayimg/package.nix @@ -31,13 +31,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "swayimg"; - version = "4.0"; + version = "4.1"; src = fetchFromGitHub { owner = "artemsen"; repo = "swayimg"; tag = "v${finalAttrs.version}"; - hash = "sha256-2UmaU60+5NNj2CVJt4oJXyBPjVeA0zBfEqZOOSI2vvk="; + hash = "sha256-xwhEt+FhHPgfXJL1zTPsMD8ia5s+rr/eIJLlAlG8QzY="; }; strictDeps = true; diff --git a/pkgs/by-name/ta/taler-exchange/package.nix b/pkgs/by-name/ta/taler-exchange/package.nix index dc4bc7fac66c..185af90a718b 100644 --- a/pkgs/by-name/ta/taler-exchange/package.nix +++ b/pkgs/by-name/ta/taler-exchange/package.nix @@ -19,6 +19,7 @@ gettext, texinfo, libtool, + nixosTests, }: stdenv.mkDerivation (finalAttrs: { @@ -109,6 +110,8 @@ stdenv.mkDerivation (finalAttrs: { checkTarget = "check"; + passthru.tests = nixosTests.taler.basic; + meta = { description = "Exchange component for the GNU Taler electronic payment system"; longDescription = '' diff --git a/pkgs/by-name/ta/taler-merchant/package.nix b/pkgs/by-name/ta/taler-merchant/package.nix index fc5c87e56816..90bfac3411bb 100644 --- a/pkgs/by-name/ta/taler-merchant/package.nix +++ b/pkgs/by-name/ta/taler-merchant/package.nix @@ -14,6 +14,7 @@ libgcrypt, texinfo, curl, + nixosTests, }: stdenv.mkDerivation (finalAttrs: { @@ -82,6 +83,14 @@ stdenv.mkDerivation (finalAttrs: { done ''; + postFixup = '' + # - taler-merchant-dbinit expects `versioning.sql` under `share/taler/sql` + # - taler-merchant-httpd expects `share/taler/merchant/templates` + mkdir -p $out/share/taler/sql + ln -s $out/share/taler-merchant $out/share/taler/merchant + ln -s $out/share/taler-merchant/sql $out/share/taler/sql/merchant + ''; + enableParallelBuilding = true; doInstallCheck = true; @@ -90,6 +99,8 @@ stdenv.mkDerivation (finalAttrs: { checkTarget = "check"; + passthru.tests = nixosTests.taler.basic; + meta = { description = "Merchant component for the GNU Taler electronic payment system"; longDescription = '' diff --git a/pkgs/by-name/ta/taler-wallet-core/package.nix b/pkgs/by-name/ta/taler-wallet-core/package.nix index 43f7cf4d89c5..e136588b3726 100644 --- a/pkgs/by-name/ta/taler-wallet-core/package.nix +++ b/pkgs/by-name/ta/taler-wallet-core/package.nix @@ -95,6 +95,11 @@ stdenv.mkDerivation (finalAttrs: { done ''; + postFixup = '' + # else it fails to find the python interpreter + patchShebangs --build $out/bin/taler-helper-sqlite3 + ''; + env.ESBUILD_BINARY_PATH = lib.getExe esbuild'; meta = { diff --git a/pkgs/by-name/ta/tasks/package.nix b/pkgs/by-name/ta/tasks/package.nix index 67a3478818c2..b342d0e908a5 100644 --- a/pkgs/by-name/ta/tasks/package.nix +++ b/pkgs/by-name/ta/tasks/package.nix @@ -13,17 +13,17 @@ rustPlatform.buildRustPackage rec { pname = "tasks"; - version = "0.1.1"; + version = "0.2.0"; src = fetchFromGitHub { owner = "cosmic-utils"; repo = "tasks"; tag = version; - hash = "sha256-OKXkAJ+TyMnTzvlUPwPU2MWgCTIN3cDiPcVPOzU4WEg="; + hash = "sha256-R8wXIw9Gn4uyLoXxyjp/bcK8vK7NkG/chcHe8LtTvo8="; }; useFetchCargoVendor = true; - cargoHash = "sha256-3SbqKB9DI1Bl8u8rrAPCO/sPKMByYhQ3YT63K5BDVvE="; + cargoHash = "sha256-iJutA18TvsWJceacfhzfEQa5zaQBMVC7fmtF1uPN3sQ="; nativeBuildInputs = [ libcosmicAppHook diff --git a/pkgs/by-name/te/texpresso/package.nix b/pkgs/by-name/te/texpresso/package.nix index ab4c11d7e980..7e65525348fb 100644 --- a/pkgs/by-name/te/texpresso/package.nix +++ b/pkgs/by-name/te/texpresso/package.nix @@ -56,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - install -Dm0755 -t "$out/bin/" "build/${finalAttrs.pname}" + install -Dm0755 -t "$out/bin/" "build/texpresso" runHook postInstall ''; diff --git a/pkgs/by-name/ti/ticktick/package.nix b/pkgs/by-name/ti/ticktick/package.nix index fd3e9f34b65d..488a5adcc2d5 100644 --- a/pkgs/by-name/ti/ticktick/package.nix +++ b/pkgs/by-name/ti/ticktick/package.nix @@ -57,7 +57,7 @@ stdenv.mkDerivation (finalAttrs: { unpackPhase = '' runHook preUnpack - mkdir -p "$out/share" "$out/opt/${finalAttrs.pname}" "$out/bin" + mkdir -p "$out/share" "$out/opt/ticktick" "$out/bin" dpkg-deb --fsys-tarfile "$src" | tar --extract --directory="$out" runHook postUnpack @@ -66,13 +66,13 @@ stdenv.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - cp -av $out/opt/TickTick/* $out/opt/${finalAttrs.pname} + cp -av $out/opt/TickTick/* $out/opt/ticktick cp -av $out/usr/share/* $out/share rm -rf $out/usr $out/opt/TickTick - ln -sf "$out/opt/${finalAttrs.pname}/${finalAttrs.pname}" "$out/bin/${finalAttrs.pname}" + ln -sf "$out/opt/ticktick/ticktick" "$out/bin/ticktick" - substituteInPlace "$out/share/applications/${finalAttrs.pname}.desktop" \ - --replace "Exec=/opt/TickTick/ticktick" "Exec=$out/bin/${finalAttrs.pname}" + substituteInPlace "$out/share/applications/ticktick.desktop" \ + --replace "Exec=/opt/TickTick/ticktick" "Exec=$out/bin/ticktick" runHook postInstall ''; diff --git a/pkgs/by-name/tt/ttaenc/package.nix b/pkgs/by-name/tt/ttaenc/package.nix index 51fc8e26593e..0365544602f5 100644 --- a/pkgs/by-name/tt/ttaenc/package.nix +++ b/pkgs/by-name/tt/ttaenc/package.nix @@ -26,8 +26,8 @@ stdenv.mkDerivation (finalAttrs: { postInstall = '' # Copy docs - install -dm755 "$out/share/doc/${finalAttrs.pname}" - install -m644 "ChangeLog-${finalAttrs.version}" README "$out/share/doc/${finalAttrs.pname}" + install -dm755 "$out/share/doc/ttaenc" + install -m644 "ChangeLog-${finalAttrs.version}" README "$out/share/doc/ttaenc" ''; meta = { diff --git a/pkgs/by-name/uf/ufetch/package.nix b/pkgs/by-name/uf/ufetch/package.nix index 7241450b9cc4..3f2543d53263 100644 --- a/pkgs/by-name/uf/ufetch/package.nix +++ b/pkgs/by-name/uf/ufetch/package.nix @@ -20,7 +20,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - mkdir -p $out/bin $out/share/licenses/${finalAttrs.pname} + mkdir -p $out/bin $out/share/licenses/ufetch ${ if !full then "install -Dm755 ufetch-${osName} $out/bin/ufetch" @@ -30,7 +30,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { ln -s $out/bin/ufetch-${osName} $out/bin/ufetch '' } - install -Dm644 LICENSE $out/share/licenses/${finalAttrs.pname}/LICENSE + install -Dm644 LICENSE $out/share/licenses/ufetch/LICENSE runHook postInstall ''; diff --git a/pkgs/by-name/un/unstructured-api/package.nix b/pkgs/by-name/un/unstructured-api/package.nix index ba94ad44bed4..4cd47d26c13b 100644 --- a/pkgs/by-name/un/unstructured-api/package.nix +++ b/pkgs/by-name/un/unstructured-api/package.nix @@ -144,7 +144,7 @@ let ++ google-api-core.optional-dependencies.grpc ++ unstructured.optional-dependencies.all-docs ); - version = "0.0.82"; + version = "0.0.85"; unstructured_api_nltk_data = python3.pkgs.nltk.dataDir (d: [ d.punkt d.averaged-perceptron-tagger @@ -158,7 +158,7 @@ stdenvNoCC.mkDerivation { owner = "Unstructured-IO"; repo = "unstructured-api"; rev = version; - hash = "sha256-mvcARpewqC25x3ZdpM8QB7SjbqGoBL/rtxi90KdKdO8="; + hash = "sha256-FNcm/7JxQE6ZksFtEgInnUhbKArZoyo9rlxhyHgRG3E="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/un/untie/package.nix b/pkgs/by-name/un/untie/package.nix index 8ef7c90e5e3e..238c894ec6d0 100644 --- a/pkgs/by-name/un/untie/package.nix +++ b/pkgs/by-name/un/untie/package.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "untie"; version = "0.3"; src = fetchurl { - url = "http://guichaz.free.fr/untie/files/${finalAttrs.pname}-${finalAttrs.version}.tar.bz2"; + url = "http://guichaz.free.fr/untie/files/untie-${finalAttrs.version}.tar.bz2"; sha256 = "1334ngvbi4arcch462mzi5vxvxck4sy1nf0m58116d9xmx83ak0m"; }; diff --git a/pkgs/by-name/up/updfparser/package.nix b/pkgs/by-name/up/updfparser/package.nix index 93f6143964b0..d90095be538b 100644 --- a/pkgs/by-name/up/updfparser/package.nix +++ b/pkgs/by-name/up/updfparser/package.nix @@ -1,18 +1,20 @@ { lib, stdenv, - fetchzip, + fetchFromGitea, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { name = "updfparser"; - version = "unstable-2023-08-08"; - rev = "c5ce75b9eea8ebb2746b13eeb0f335813c615115"; + version = "0-unstable-2024-03-24"; + rev = "6060d123441a06df699eb275ae5ffdd50409b8f3"; - src = fetchzip { - url = "https://indefero.soutade.fr/p/updfparser/source/download/${rev}/"; - hash = "sha256-RT7mvu43Izp0rHhKq4wR4kt0TDfzHvB2NGMR+fxO5UM="; - extension = "zip"; + src = fetchFromGitea { + inherit (finalAttrs) rev; + domain = "forge.soutade.fr"; + owner = "soutade"; + repo = "updfparser"; + hash = "sha256-HD73WGZ4e/3T7vQmwU/lRADtvsInFG62uqvJmF773Rk="; }; makeFlags = [ @@ -30,9 +32,9 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Very simple PDF parser"; - homepage = "https://indefero.soutade.fr/p/updfparser"; + homepage = "https://forge.soutade.fr/soutade/updfparser"; license = licenses.lgpl3Plus; maintainers = with maintainers; [ autumnal ]; platforms = platforms.all; }; -} +}) diff --git a/pkgs/by-name/vi/vivaldi/package.nix b/pkgs/by-name/vi/vivaldi/package.nix index 921b5363defc..b03a862c7713 100644 --- a/pkgs/by-name/vi/vivaldi/package.nix +++ b/pkgs/by-name/vi/vivaldi/package.nix @@ -235,6 +235,7 @@ stdenv.mkDerivation rec { mainProgram = "vivaldi"; maintainers = with lib.maintainers; [ marcusramberg + max06 rewine ]; platforms = [ diff --git a/pkgs/by-name/wh/whatsie/package.nix b/pkgs/by-name/wh/whatsie/package.nix index 7c1b5cd6c95d..a03610ff5c6e 100644 --- a/pkgs/by-name/wh/whatsie/package.nix +++ b/pkgs/by-name/wh/whatsie/package.nix @@ -24,10 +24,10 @@ stdenv.mkDerivation (finalAttrs: { desktopItems = [ (makeDesktopItem { - name = finalAttrs.pname; + name = "whatsie"; desktopName = "Whatsie"; - icon = finalAttrs.pname; - exec = finalAttrs.pname; + icon = "whatsie"; + exec = "whatsie"; comment = finalAttrs.meta.description; }) ]; diff --git a/pkgs/by-name/xd/xdg-terminal-exec/package.nix b/pkgs/by-name/xd/xdg-terminal-exec/package.nix index 276840d57dbd..d6bdaab1e3b0 100644 --- a/pkgs/by-name/xd/xdg-terminal-exec/package.nix +++ b/pkgs/by-name/xd/xdg-terminal-exec/package.nix @@ -7,13 +7,13 @@ }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "xdg-terminal-exec"; - version = "0.12.3"; + version = "0.12.4"; src = fetchFromGitHub { owner = "Vladimir-csp"; repo = "xdg-terminal-exec"; rev = "v${finalAttrs.version}"; - hash = "sha256-mA/azPl4pB7vW1dB+Are5WbIf/eLmU91iwjC/V0+Xh8="; + hash = "sha256-PA0ttRtFmNVITBidxZsZFMfMaGi2X6296ve5y6Mqlm0="; }; nativeBuildInputs = [ scdoc ]; diff --git a/pkgs/by-name/xe/xeus/package.nix b/pkgs/by-name/xe/xeus/package.nix index cafcbac3a7ae..9e9476ca8f25 100644 --- a/pkgs/by-name/xe/xeus/package.nix +++ b/pkgs/by-name/xe/xeus/package.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "jupyter-xeus"; - repo = finalAttrs.pname; + repo = "xeus"; tag = finalAttrs.version; hash = "sha256-nR247SGnc3TSj6PCrJmY6ccACvYKeSYFMgoawyYLBNs="; }; diff --git a/pkgs/by-name/yu/yubikey-manager/package.nix b/pkgs/by-name/yu/yubikey-manager/package.nix index 6f3192774a1d..96f515441ada 100644 --- a/pkgs/by-name/yu/yubikey-manager/package.nix +++ b/pkgs/by-name/yu/yubikey-manager/package.nix @@ -9,14 +9,14 @@ python3Packages.buildPythonPackage rec { pname = "yubikey-manager"; - version = "5.6.1"; + version = "5.7.0"; pyproject = true; src = fetchFromGitHub { owner = "Yubico"; repo = "yubikey-manager"; - rev = version; - hash = "sha256-qEEAByg6Smn1Wk8U4VA6MIJDLWBtM+S+qTDIcgPUGA0="; + tag = version; + hash = "sha256-G93fg2tgIo9u8FjIBBgd74qbYKiqfQo+sAV965bUipk="; }; postPatch = '' @@ -57,7 +57,7 @@ python3Packages.buildPythonPackage rec { meta = { homepage = "https://developers.yubico.com/yubikey-manager"; - changelog = "https://github.com/Yubico/yubikey-manager/releases/tag/${version}"; + changelog = "https://github.com/Yubico/yubikey-manager/releases/tag/${src.tag}"; description = "Command line tool for configuring any YubiKey over all USB transports"; license = lib.licenses.bsd2; diff --git a/pkgs/by-name/zc/zcfan/package.nix b/pkgs/by-name/zc/zcfan/package.nix index d661199e9a8f..3468ac8b399c 100644 --- a/pkgs/by-name/zc/zcfan/package.nix +++ b/pkgs/by-name/zc/zcfan/package.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: { installCheckPhase = '' runHook preInstallCheck - $out/bin/${finalAttrs.pname} -h + $out/bin/zcfan -h runHook postInstallCheck ''; diff --git a/pkgs/by-name/zs/zsh-forgit/package.nix b/pkgs/by-name/zs/zsh-forgit/package.nix index 646708ebdf1b..df964328188a 100644 --- a/pkgs/by-name/zs/zsh-forgit/package.nix +++ b/pkgs/by-name/zs/zsh-forgit/package.nix @@ -40,7 +40,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { install -D bin/git-forgit $out/bin/git-forgit install -D completions/_git-forgit $out/share/zsh/site-functions/_git-forgit - install -D forgit.plugin.zsh $out/share/zsh/${finalAttrs.pname}/forgit.plugin.zsh + install -D forgit.plugin.zsh $out/share/zsh/zsh-forgit/forgit.plugin.zsh wrapProgram $out/bin/git-forgit \ --prefix PATH : ${ lib.makeBinPath [ diff --git a/pkgs/development/coq-modules/vscoq-language-server/default.nix b/pkgs/development/coq-modules/vscoq-language-server/default.nix index d4ee9d6042f8..f4fd8e2ecb29 100644 --- a/pkgs/development/coq-modules/vscoq-language-server/default.nix +++ b/pkgs/development/coq-modules/vscoq-language-server/default.nix @@ -14,8 +14,8 @@ let with lib.versions; lib.switch coq.coq-version [ { - case = isEq "9.0"; - out = "2.2.5"; + case = range "8.18" "9.0"; + out = "2.2.6"; } { case = range "8.18" "8.20"; @@ -48,6 +48,8 @@ let release."2.2.1".sha256 = "sha256-miIVAv/8jlP1pXnoK1MWz4O6nlmb309a8UjcCivbiB4="; release."2.2.5".rev = "v2.2.5"; release."2.2.5".sha256 = "sha256-XyIjwem/yS7UIpQATNixgKkrMOHHs74nkAOvpU5WG1k="; + release."2.2.6".rev = "v2.2.6"; + release."2.2.6".sha256 = "sha256-J8nRTAwN6GBEYgqlXa2kkkrHPatXsSObQg9QUQoZhgE="; inherit location; }); fetched = fetch (if version != null then version else defaultVersion); diff --git a/pkgs/development/python-modules/granian/default.nix b/pkgs/development/python-modules/granian/default.nix index 739d4cbab3f2..8a75a70eaa59 100644 --- a/pkgs/development/python-modules/granian/default.nix +++ b/pkgs/development/python-modules/granian/default.nix @@ -13,6 +13,7 @@ pytest-asyncio, websockets, httpx, + rust-jemalloc-sys, sniffio, nix-update-script, }: @@ -39,6 +40,21 @@ buildPythonPackage rec { maturinBuildHook ]; + buildInputs = [ + # fix "Unsupported system page size" on aarch64-linux with 16k pages + # https://github.com/NixOS/nixpkgs/issues/410572 + (rust-jemalloc-sys.overrideAttrs ( + { configureFlags, ... }: + { + configureFlags = configureFlags ++ [ + # otherwise import check fails with: + # ImportError: {{storeDir}}/lib/libjemalloc.so.2: cannot allocate memory in static TLS block + "--disable-initial-exec-tls" + ]; + } + )) + ]; + dependencies = [ click ]; diff --git a/pkgs/development/python-modules/kconfiglib/0001-Add-rudimentary-support-for-modules-property.patch b/pkgs/development/python-modules/kconfiglib/0001-Add-rudimentary-support-for-modules-property.patch new file mode 100644 index 000000000000..2a6bca2b9183 --- /dev/null +++ b/pkgs/development/python-modules/kconfiglib/0001-Add-rudimentary-support-for-modules-property.patch @@ -0,0 +1,41 @@ +From 3161fec0b9ff9154dbd952c3481400118fabb744 Mon Sep 17 00:00:00 2001 +From: Helmut Grohne +Date: Thu, 21 Apr 2022 10:07:53 +0200 +Subject: [PATCH] Add rudimentary support for modules property + +In linux commit 6dd85ff178cd76851e2184b13e545f5a88d1be30, Linux Torvalds +changed "option modules" to plain "modules" since it was the only option +left. kconfiglib does not have much support for either besides parsing +it and suppressing warnings when it is applied to the 'MODULES' symbol. +Mirror this behaviour for the newer "modules" property. + +Fixes: #106 +--- + kconfiglib.py | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/kconfiglib.py b/kconfiglib.py +index c67895c..ccef123 100644 +--- a/kconfiglib.py ++++ b/kconfiglib.py +@@ -3263,6 +3263,20 @@ def _parse_props(self, node): + else: + self._parse_error("unrecognized option") + ++ elif t0 is _T_MODULES: ++ # 'modules' formerly was 'option modules'. See above for why ++ # and when it is ignored. It was changed in ++ # linux commit 6dd85ff178cd76851e2184b13e545f5a88d1be30. ++ if node.item is not self.modules: ++ self._warn("the 'modules' property is not supported. Let " ++ "me know if this is a problem for you, as it " ++ "wouldn't be that hard to implement. Note that " ++ "modules are supported -- Kconfiglib just " ++ "assumes the symbol name MODULES, like older " ++ "versions of the C implementation did when " ++ "'modules' wasn't used.", ++ self.filename, self.linenr) ++ + elif t0 is _T_OPTIONAL: + if node.item.__class__ is not Choice: + self._parse_error('"optional" is only valid for choices') diff --git a/pkgs/development/python-modules/kconfiglib/default.nix b/pkgs/development/python-modules/kconfiglib/default.nix index 12c7ba6170db..e94ef18a9896 100644 --- a/pkgs/development/python-modules/kconfiglib/default.nix +++ b/pkgs/development/python-modules/kconfiglib/default.nix @@ -14,6 +14,11 @@ buildPythonPackage rec { sha256 = "0g690bk789hsry34y4ahvly5c8w8imca90ss4njfqf7m2qicrlmy"; }; + patches = [ + # see https://github.com/ulfalizer/Kconfiglib/pull/119 + ./0001-Add-rudimentary-support-for-modules-property.patch + ]; + # doesnt work out of the box but might be possible doCheck = false; diff --git a/pkgs/development/python-modules/pymilvus/default.nix b/pkgs/development/python-modules/pymilvus/default.nix index 3f9875101fbb..4363cadd1de7 100644 --- a/pkgs/development/python-modules/pymilvus/default.nix +++ b/pkgs/development/python-modules/pymilvus/default.nix @@ -23,14 +23,14 @@ buildPythonPackage rec { pname = "pymilvus"; - version = "2.5.9"; + version = "2.5.10"; pyproject = true; src = fetchFromGitHub { owner = "milvus-io"; repo = "pymilvus"; tag = "v${version}"; - hash = "sha256-x9qAZay5DoNyfQOpzjfy7/3cyjHwEJiQ441Y+sRyGLw="; + hash = "sha256-gxl9SqqFZusv4V/Xud56iz8lyUfITPPF4g4IUIAzl6U="; }; build-system = [ diff --git a/pkgs/development/python-modules/wokkel/0001-Remove-py2-compat.patch b/pkgs/development/python-modules/wokkel/0001-Remove-py2-compat.patch new file mode 100644 index 000000000000..de37f66b3e34 --- /dev/null +++ b/pkgs/development/python-modules/wokkel/0001-Remove-py2-compat.patch @@ -0,0 +1,2671 @@ +From 6b3ab4a94e4d498cdabd5aac6b749031abd785c8 Mon Sep 17 00:00:00 2001 +From: Ralph Meijer +Date: Thu, 18 Jul 2024 19:04:47 +0200 +Subject: [PATCH] Remove py2 compat + +Co-authored-by: OPNA2608 +--- + setup.py | 11 ++- + wokkel/component.py | 13 ++- + wokkel/data_form.py | 70 ++++++---------- + wokkel/delay.py | 2 +- + wokkel/disco.py | 51 ++++++------ + wokkel/formats.py | 20 ++--- + wokkel/generic.py | 19 +---- + wokkel/iwokkel.py | 150 +++++++++++++++++----------------- + wokkel/muc.py | 67 ++++++++------- + wokkel/pubsub.py | 55 ++++++------- + wokkel/server.py | 17 ++-- + wokkel/shim.py | 5 +- + wokkel/subprotocols.py | 13 ++- + wokkel/test/helpers.py | 5 +- + wokkel/test/test_client.py | 3 +- + wokkel/test/test_data_form.py | 89 +++++--------------- + wokkel/test/test_generic.py | 75 +---------------- + wokkel/test/test_muc.py | 13 ++- + wokkel/test/test_server.py | 6 +- + wokkel/test/test_shim.py | 5 +- + wokkel/test/test_xmppim.py | 19 ++--- + wokkel/xmppim.py | 89 ++++++++++---------- + 22 files changed, 318 insertions(+), 479 deletions(-) + +diff --git a/setup.py b/setup.py +index 8804fd9..f7f1e33 100755 +--- a/setup.py ++++ b/setup.py +@@ -40,11 +40,11 @@ setup(name='wokkel', + license='MIT', + platforms='any', + classifiers=[ +- 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', +- 'Programming Language :: Python :: 3.4', +- 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', ++ 'Programming Language :: Python :: 3.7', ++ 'Programming Language :: Python :: 3.8', ++ 'Programming Language :: Python :: 3.9', + ], + packages=[ + 'wokkel', +@@ -60,16 +60,15 @@ setup(name='wokkel', + install_requires=[ + 'incremental>=16.9.0', + 'python-dateutil', ++ 'Twisted[tls]>=16.4.0', + ], + extras_require={ +- ":python_version<'3'": 'Twisted[tls]>=15.5.0', +- ":python_version>'3'": 'Twisted[tls]>=16.4.0', + "dev": [ + "pyflakes", + "coverage", ++ "pydoctor", + "sphinx", + "towncrier", + ], +- "dev:python_version<'3'": "pydoctor", + }, + ) +diff --git a/wokkel/component.py b/wokkel/component.py +index da48230..9410837 100644 +--- a/wokkel/component.py ++++ b/wokkel/component.py +@@ -12,7 +12,6 @@ from __future__ import division, absolute_import + from twisted.application import service + from twisted.internet import reactor + from twisted.python import log +-from twisted.python.compat import unicode + from twisted.words.protocols.jabber.jid import internJID as JID + from twisted.words.protocols.jabber import component, error, xmlstream + from twisted.words.xish import domish +@@ -105,7 +104,7 @@ class InternalComponent(xmlstream.XMPPHandlerCollection, service.Service): + components of this type connect to a router in the same process. This + allows for one-process XMPP servers. + +- @ivar domains: Domains (as L{unicode}) this component will handle traffic ++ @ivar domains: Domains (as L{str}) this component will handle traffic + for. + @type domains: L{set} + """ +@@ -177,7 +176,7 @@ class ListenComponentAuthenticator(xmlstream.ListenAuthenticator): + Authenticator for accepting components. + + @ivar secret: The shared used to authorized incoming component connections. +- @type secret: L{unicode}. ++ @type secret: L{str}. + """ + + namespace = NS_COMPONENT_ACCEPT +@@ -241,7 +240,7 @@ class ListenComponentAuthenticator(xmlstream.ListenAuthenticator): + L{onHandshake}. + """ + if (element.uri, element.name) == (self.namespace, 'handshake'): +- self.onHandshake(unicode(element)) ++ self.onHandshake(str(element)) + else: + exc = error.StreamError('not-authorized') + self.xmlstream.sendStreamError(exc) +@@ -257,7 +256,7 @@ class ListenComponentAuthenticator(xmlstream.ListenAuthenticator): + be exchanged. + """ + calculatedHash = xmlstream.hashPassword(self.xmlstream.sid, +- unicode(self.secret)) ++ str(self.secret)) + if handshake != calculatedHash: + exc = error.StreamError('not-authorized', text='Invalid hash') + self.xmlstream.sendStreamError(exc) +@@ -301,7 +300,7 @@ class Router(object): + + @param destination: Destination of the route to be added as a host name + or L{None} for the default route. +- @type destination: L{unicode} or L{NoneType} ++ @type destination: L{str} or L{NoneType} + + @param xs: XML Stream to register the route for. + @type xs: +@@ -316,7 +315,7 @@ class Router(object): + Remove a route. + + @param destination: Destination of the route that should be removed. +- @type destination: L{unicode} ++ @type destination: L{str} + + @param xs: XML Stream to remove the route for. + @type xs: +diff --git a/wokkel/data_form.py b/wokkel/data_form.py +index ed9c5fc..7f1c34c 100644 +--- a/wokkel/data_form.py ++++ b/wokkel/data_form.py +@@ -17,7 +17,6 @@ from __future__ import division, absolute_import + from zope.interface import implementer + from zope.interface.common import mapping + +-from twisted.python.compat import iteritems, unicode, _PY3 + from twisted.words.protocols.jabber.jid import JID + from twisted.words.xish import domish + +@@ -51,9 +50,9 @@ class Option(object): + Data Forms field option. + + @ivar value: Value of this option. +- @type value: L{unicode} ++ @type value: L{str} + @ivar label: Optional label for this option. +- @type label: L{unicode} or L{NoneType} ++ @type label: L{str} or L{NoneType} + """ + + def __init__(self, value, label=None): +@@ -91,7 +90,7 @@ class Option(object): + raise Error("Option has no value") + + label = element.getAttribute('label') +- return Option(unicode(valueElements[0]), label) ++ return Option(str(valueElements[0]), label) + + + class Field(object): +@@ -108,15 +107,15 @@ class Field(object): + @ivar var: Field name. Optional if C{fieldType} is C{'fixed'}. + @type var: L{str} + @ivar label: Human readable label for this field. +- @type label: L{unicode} ++ @type label: L{str} + @ivar values: The values for this field, for multi-valued field +- types, as a list of L{bool}, L{unicode} or L{JID}. ++ types, as a list of L{bool}, L{str} or L{JID}. + @type values: L{list} + @ivar options: List of possible values to choose from in a response + to this form as a list of L{Option}s. + @type options: L{list} + @ivar desc: Human readable description for this field. +- @type desc: L{unicode} ++ @type desc: L{str} + @ivar required: Whether the field is required to be provided in a + response to this form. + @type required: L{bool} +@@ -147,7 +146,7 @@ class Field(object): + try: + self.options = [Option(optionValue, optionLabel) + for optionValue, optionLabel +- in iteritems(options)] ++ in options.items()] + except AttributeError: + self.options = options or [] + +@@ -185,7 +184,7 @@ class Field(object): + + Sets C{value} as the only element of L{values}. + +- @type value: L{bool}, L{unicode} or L{JID} ++ @type value: L{bool}, L{str} or L{JID} + """ + self.values = [value] + +@@ -229,7 +228,7 @@ class Field(object): + newValues = [] + for value in self.values: + if self.fieldType == 'boolean': +- if isinstance(value, (str, unicode)): ++ if isinstance(value, str): + checkValue = value.lower() + if not checkValue in ('0', '1', 'false', 'true'): + raise ValueError("Not a boolean") +@@ -263,9 +262,9 @@ class Field(object): + + for value in self.values: + if isinstance(value, bool): +- value = unicode(value).lower() ++ value = str(value).lower() + else: +- value = unicode(value) ++ value = str(value) + + field.addElement('value', content=value) + +@@ -288,7 +287,7 @@ class Field(object): + + @staticmethod + def _parse_desc(field, element): +- desc = unicode(element) ++ desc = str(element) + if desc: + field.desc = desc + +@@ -305,7 +304,7 @@ class Field(object): + + @staticmethod + def _parse_value(field, element): +- value = unicode(element) ++ value = str(element) + field.values.append(value) + + +@@ -313,9 +312,9 @@ class Field(object): + def fromElement(element): + field = Field(None) + +- for eAttr, fAttr in iteritems({'type': 'fieldType', +- 'var': 'var', +- 'label': 'label'}): ++ for eAttr, fAttr in {'type': 'fieldType', ++ 'var': 'var', ++ 'label': 'label'}.items(): + value = element.getAttribute(eAttr) + if value: + setattr(field, fAttr, value) +@@ -350,7 +349,7 @@ class Field(object): + + if 'options' in fieldDict: + options = [] +- for value, label in iteritems(fieldDict['options']): ++ for value, label in fieldDict['options'].items(): + options.append(Option(value, label)) + kwargs['options'] = options + +@@ -385,9 +384,9 @@ class Form(object): + @type formType: L{str} + + @ivar title: Natural language title of the form. +- @type title: L{unicode} ++ @type title: L{str} + +- @ivar instructions: Natural language instructions as a list of L{unicode} ++ @ivar instructions: Natural language instructions as a list of L{str} + strings without line breaks. + @type instructions: L{list} + +@@ -497,7 +496,7 @@ class Form(object): + C{fieldDefs}. + @type filterUnknown: L{bool} + """ +- for name, value in iteritems(values): ++ for name, value in values.items(): + fieldDict = {'var': name, + 'type': None} + +@@ -542,14 +541,14 @@ class Form(object): + + @staticmethod + def _parse_title(form, element): +- title = unicode(element) ++ title = str(element) + if title: + form.title = title + + + @staticmethod + def _parse_instructions(form, element): +- instructions = unicode(element) ++ instructions = str(element) + if instructions: + form.instructions.append(instructions) + +@@ -624,36 +623,19 @@ class Form(object): + return key in self.fields + + +- def iterkeys(self): ++ def keys(self): + return iter(self) + + +- def itervalues(self): ++ def values(self): + for key in self: + yield self[key] + + +- def iteritems(self): ++ def items(self): + for key in self: + yield (key, self[key]) + +- if _PY3: +- keys = iterkeys +- values = itervalues +- items = iteritems +- else: +- def keys(self): +- return list(self) +- +- +- def values(self): +- return list(self.itervalues()) +- +- +- def items(self): +- return list(self.iteritems()) +- +- + def getValues(self): + """ + Extract values from the named form fields. +@@ -701,7 +683,7 @@ class Form(object): + + filtered = [] + +- for name, field in iteritems(self.fields): ++ for name, field in self.fields.items(): + if name in fieldDefs: + fieldDef = fieldDefs[name] + if 'type' not in fieldDef: +diff --git a/wokkel/delay.py b/wokkel/delay.py +index be06cb3..1dd1703 100644 +--- a/wokkel/delay.py ++++ b/wokkel/delay.py +@@ -46,7 +46,7 @@ class Delay(object): + Render this instance into a domish Element. + + @param legacy: If C{True}, use the legacy XEP-0091 format. +- @type legacy: C{bool} ++ @type legacy: L{bool} + """ + if not self.stamp: + raise ValueError("stamp is required") +diff --git a/wokkel/disco.py b/wokkel/disco.py +index 9ea43ef..227789d 100644 +--- a/wokkel/disco.py ++++ b/wokkel/disco.py +@@ -13,7 +13,6 @@ U{XEP-0030}. + from __future__ import division, absolute_import + + from twisted.internet import defer +-from twisted.python.compat import iteritems, unicode + from twisted.words.protocols.jabber import error, jid + from twisted.words.xish import domish + +@@ -29,11 +28,11 @@ IQ_GET = '/iq[@type="get"]' + DISCO_INFO = IQ_GET + '/query[@xmlns="' + NS_DISCO_INFO + '"]' + DISCO_ITEMS = IQ_GET + '/query[@xmlns="' + NS_DISCO_ITEMS + '"]' + +-class DiscoFeature(unicode): ++class DiscoFeature(str): + """ + XMPP service discovery feature. + +- This extends C{unicode} to convert to and from L{domish.Element}, but ++ This extends L{str} to convert to and from L{domish.Element}, but + further behaves identically. + """ + +@@ -44,7 +43,7 @@ class DiscoFeature(unicode): + @rtype: L{domish.Element}. + """ + element = domish.Element((NS_DISCO_INFO, 'feature')) +- element['var'] = unicode(self) ++ element['var'] = str(self) + return element + + +@@ -68,11 +67,11 @@ class DiscoIdentity(object): + XMPP service discovery identity. + + @ivar category: The identity category. +- @type category: C{unicode} ++ @type category: L{str} + @ivar type: The identity type. +- @type type: C{unicode} ++ @type type: L{str} + @ivar name: The optional natural language name for this entity. +- @type name: C{unicode} ++ @type name: L{str} + """ + + def __init__(self, category, idType, name=None): +@@ -119,21 +118,21 @@ class DiscoInfo(object): + XMPP service discovery info. + + @ivar nodeIdentifier: The optional node this info applies to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @ivar features: Features as L{DiscoFeature}. +- @type features: C{set} ++ @type features: L{set} + @ivar identities: Identities as a mapping from (category, type) to name, +- all C{unicode}. +- @type identities: C{dict} ++ all L{str}. ++ @type identities: L{dict} + @ivar extensions: Service discovery extensions as a mapping from the +- extension form's C{FORM_TYPE} (C{unicode}) to ++ extension form's C{FORM_TYPE} (L{str}) to + L{data_form.Form}. Forms with no C{FORM_TYPE} field + are mapped as C{None}. Note that multiple forms + with the same C{FORM_TYPE} have the last in sequence + prevail. +- @type extensions: C{dict} ++ @type extensions: L{dict} + @ivar _items: Sequence of added items. +- @type _items: C{list} ++ @type _items: L{list} + """ + + def __init__(self): +@@ -226,9 +225,9 @@ class DiscoItem(object): + @ivar entity: The entity holding the item. + @type entity: L{jid.JID} + @ivar nodeIdentifier: The optional node identifier for the item. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @ivar name: The optional natural language name for this entity. +- @type name: C{unicode} ++ @type name: L{str} + """ + + def __init__(self, entity, nodeIdentifier='', name=None): +@@ -278,9 +277,9 @@ class DiscoItems(object): + XMPP service discovery items. + + @ivar nodeIdentifier: The optional node this info applies to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @ivar _items: Sequence of added items. +- @type _items: C{list} ++ @type _items: L{list} + """ + + def __init__(self): +@@ -353,9 +352,9 @@ class _DiscoRequest(generic.Request): + A Service Discovery request. + + @ivar verb: Type of request: C{'info'} or C{'items'}. +- @type verb: C{str} ++ @type verb: L{str} + @ivar nodeIdentifier: Optional node to request info for. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + verb = None +@@ -366,7 +365,7 @@ class _DiscoRequest(generic.Request): + NS_DISCO_ITEMS: 'items', + } + +- _verbRequestMap = dict(((v, k) for k, v in iteritems(_requestVerbMap))) ++ _verbRequestMap = dict(((v, k) for k, v in _requestVerbMap.items())) + + def __init__(self, verb=None, nodeIdentifier='', + recipient=None, sender=None): +@@ -415,7 +414,7 @@ class DiscoClientProtocol(XMPPHandler): + @type entity: L{jid.JID} + + @param nodeIdentifier: Optional node to request info from. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + + @param sender: Optional sender address. + @type sender: L{jid.JID} +@@ -438,7 +437,7 @@ class DiscoClientProtocol(XMPPHandler): + @type entity: L{jid.JID} + + @param nodeIdentifier: Optional node to request info from. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + + @param sender: Optional sender address. + @type sender: L{jid.JID} +@@ -534,7 +533,7 @@ class DiscoHandler(XMPPHandler, IQHandlerMixin): + + @param deferredList: List of deferreds for which the results should be + gathered. +- @type deferredList: C{list} ++ @type deferredList: L{list} + @return: Deferred that fires with a list of gathered results. + @rtype: L{defer.Deferred} + """ +@@ -566,7 +565,7 @@ class DiscoHandler(XMPPHandler, IQHandlerMixin): + @param target: The entity the request was sent to. + @type target: L{JID} + @param nodeIdentifier: The optional node being queried, or C{''}. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @return: Deferred with the gathered results from sibling handlers. + @rtype: L{defer.Deferred} + """ +@@ -589,7 +588,7 @@ class DiscoHandler(XMPPHandler, IQHandlerMixin): + @param target: The entity the request was sent to. + @type target: L{JID} + @param nodeIdentifier: The optional node being queried, or C{''}. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @return: Deferred with the gathered results from sibling handlers. + @rtype: L{defer.Deferred} + """ +diff --git a/wokkel/formats.py b/wokkel/formats.py +index 0eb0be6..972cc7e 100644 +--- a/wokkel/formats.py ++++ b/wokkel/formats.py +@@ -9,8 +9,6 @@ Generic payload formats. + + from __future__ import division, absolute_import + +-from twisted.python.compat import unicode +- + NS_MOOD = 'http://jabber.org/protocol/mood' + NS_TUNE = 'http://jabber.org/protocol/tune' + +@@ -55,7 +53,7 @@ class Mood: + continue + + if child.name == 'text': +- text = unicode(child) ++ text = str(child) + else: + value = child.name + +@@ -76,19 +74,19 @@ class Tune: + U{XEP-0118}. + + @ivar artist: The artist or performer of the song or piece. +- @type artist: C{unicode} ++ @type artist: L{str} + @ivar length: The duration of the song or piece in seconds. +- @type length: C{int} ++ @type length: L{int} + @ivar source: The collection (e.g. album) or other source. +- @type source: C{unicode} ++ @type source: L{str} + @ivar title: The title of the song or piece +- @type title: C{unicode} ++ @type title: L{str} + @ivar track: A unique identifier for the tune; e.g. the track number within + the collection or the specific URI for the object. +- @type track: C{unicode} ++ @type track: L{str} + @ivar uri: A URI pointing to information about the song, collection, or + artist. +- @type uri: C{str} ++ @type uri: L{str} + + """ + +@@ -122,10 +120,10 @@ class Tune: + continue + + if child.name in ('artist', 'source', 'title', 'track', 'uri'): +- setattr(tune, child.name, unicode(child)) ++ setattr(tune, child.name, str(child)) + elif child.name == 'length': + try: +- tune.length = int(unicode(child)) ++ tune.length = int(str(child)) + except ValueError: + pass + +diff --git a/wokkel/generic.py b/wokkel/generic.py +index 2e975f6..becff8f 100644 +--- a/wokkel/generic.py ++++ b/wokkel/generic.py +@@ -13,14 +13,11 @@ from zope.interface import implementer + + from twisted.internet import defer, protocol + from twisted.python import reflect +-from twisted.python.deprecate import deprecated + from twisted.words.protocols.jabber import error, jid, xmlstream + from twisted.words.protocols.jabber.xmlstream import toResponse + from twisted.words.xish import domish, utility + from twisted.words.xish.xmlstream import BootstrapMixin + +-from incremental import Version +- + from wokkel.iwokkel import IDisco + from wokkel.subprotocols import XMPPHandler + +@@ -35,7 +32,7 @@ def parseXml(string): + Parse serialized XML into a DOM structure. + + @param string: The serialized XML to be parsed, UTF-8 encoded. +- @type string: C{str}. ++ @type string: L{str}. + @return: The DOM structure, or C{None} on empty or incomplete input. + @rtype: L{domish.Element} + """ +@@ -332,17 +329,3 @@ class DeferredXmlStreamFactory(BootstrapMixin, protocol.ClientFactory): + + def clientConnectionFailed(self, connector, reason): + self.deferred.errback(reason) +- +- +- +-@deprecated(Version("wokkel", 18, 0, 0), "unicode.encode('idna')") +-def prepareIDNName(name): +- """ +- Encode a unicode IDN Domain Name into its ACE equivalent. +- +- This will encode the domain labels, separated by allowed dot code points, +- to their ASCII Compatible Encoding (ACE) equivalent, using punycode. The +- result is an ASCII byte string of the encoded labels, separated by the +- standard full stop. +- """ +- return name.encode('idna') +diff --git a/wokkel/iwokkel.py b/wokkel/iwokkel.py +index 30a1057..35383b5 100644 +--- a/wokkel/iwokkel.py ++++ b/wokkel/iwokkel.py +@@ -46,7 +46,7 @@ class IDisco(Interface): + @param nodeIdentifier: The optional identifier of the node at this + entity to retrieve the identify and features of. The default is + C{''}, meaning the root node. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + def getDiscoItems(requestor, target, nodeIdentifier=''): +@@ -60,7 +60,7 @@ class IDisco(Interface): + @param nodeIdentifier: The optional identifier of the node at this + entity to retrieve the identify and features of. + The default is C{''}, meaning the root node. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + +@@ -109,7 +109,7 @@ class IPubSubClient(Interface): + @param nodeIdentifier: Optional suggestion for the new node's + identifier. If omitted, the creation of an + instant node will be attempted. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @return: a deferred that fires with the identifier of the newly created + node. Note that this can differ from the suggested identifier + if the publish subscribe service chooses to modify or ignore +@@ -124,7 +124,7 @@ class IPubSubClient(Interface): + @param service: The publish-subscribe service entity. + @type service: L{JID} + @param nodeIdentifier: Identifier of the node to be deleted. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @rtype: L{Deferred} + """ + +@@ -135,7 +135,7 @@ class IPubSubClient(Interface): + @param service: The publish-subscribe service entity. + @type service: L{JID} + @param nodeIdentifier: Identifier of the node to subscribe to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param subscriber: JID to subscribe to the node. + @type subscriber: L{JID} + @rtype: L{Deferred} +@@ -148,7 +148,7 @@ class IPubSubClient(Interface): + @param service: The publish-subscribe service entity. + @type service: L{JID} + @param nodeIdentifier: Identifier of the node to unsubscribe from. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param subscriber: JID to unsubscribe from the node. + @type subscriber: L{JID} + @rtype: L{Deferred} +@@ -165,9 +165,9 @@ class IPubSubClient(Interface): + @param service: The publish-subscribe service entity. + @type service: L{JID} + @param nodeIdentifier: Identifier of the node to publish to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param items: List of item elements. +- @type items: C{list} of L{Item} ++ @type items: L{list} of L{Item} + @rtype: L{Deferred} + """ + +@@ -191,12 +191,12 @@ class IPubSubService(Interface): + @type service: L{JID} + @param nodeIdentifier: The identifier of the node that was published + to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param notifications: The notifications as tuples of subscriber, the + list of subscriptions and the list of items to be notified. +- @type notifications: C{list} of +- (L{JID}, C{list} of +- L{Subscription}, C{list} of ++ @type notifications: L{list} of ++ (L{JID}, L{list} of ++ L{Subscription}, L{list} of + L{Element}) + """ + +@@ -209,14 +209,14 @@ class IPubSubService(Interface): + @param service: The entity the notifications will originate from. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node that was deleted. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param subscribers: The subscribers for which a notification should be + sent out. +- @type subscribers: C{list} of ++ @type subscribers: L{list} of + L{JID} + @param redirectURI: Optional XMPP URI of another node that subscribers + are redirected to. +- @type redirectURI: C{str} ++ @type redirectURI: L{str} + """ + + def publish(requestor, service, nodeIdentifier, items): +@@ -228,9 +228,9 @@ class IPubSubService(Interface): + @param service: The entity the request was addressed to. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to publish to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param items: The items to be published as elements. +- @type items: C{list} of C{Element} ++ @type items: L{list} of C{Element} + @return: deferred that fires on success. + @rtype: L{Deferred} + """ +@@ -244,7 +244,7 @@ class IPubSubService(Interface): + @param service: The entity the request was addressed to. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to subscribe to. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param subscriber: The entity to be subscribed. + @type subscriber: L{JID} + @return: A deferred that fires with a +@@ -261,7 +261,7 @@ class IPubSubService(Interface): + @param service: The entity the request was addressed to. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to unsubscribe from. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @param subscriber: The entity to be unsubscribed. + @type subscriber: L{JID} + @return: A deferred that fires with C{None} when unsubscription has +@@ -277,7 +277,7 @@ class IPubSubService(Interface): + @type requestor: L{JID} + @param service: The entity the request was addressed to. + @type service: L{JID} +- @return: A deferred that fires with a C{list} of subscriptions as ++ @return: A deferred that fires with a L{list} of subscriptions as + L{Subscription}. + @rtype: L{Deferred} + """ +@@ -290,9 +290,9 @@ class IPubSubService(Interface): + @type requestor: L{JID} + @param service: The entity the request was addressed to. + @type service: L{JID} +- @return: A deferred that fires with a C{list} of affiliations as +- C{tuple}s of (node identifier as C{unicode}, affiliation state as +- C{str}). The affiliation can be C{'owner'}, C{'publisher'}, or ++ @return: A deferred that fires with a L{list} of affiliations as ++ C{tuple}s of (node identifier as L{str}, affiliation state as ++ L{str}). The affiliation can be C{'owner'}, C{'publisher'}, or + C{'outcast'}. + @rtype: L{Deferred} + """ +@@ -308,8 +308,8 @@ class IPubSubService(Interface): + @param nodeIdentifier: The suggestion for the identifier of the node + to be created. If the request did not include a suggestion for the + node identifier, the value is C{None}. +- @type nodeIdentifier: C{unicode} or C{NoneType} +- @return: A deferred that fires with a C{unicode} that represents ++ @type nodeIdentifier: L{str} or C{NoneType} ++ @return: A deferred that fires with a L{str} that represents + the identifier of the new node. + @rtype: L{Deferred} + """ +@@ -322,10 +322,10 @@ class IPubSubService(Interface): + by option name. The value of each entry represents the specifics for + that option in a dictionary: + +- - C{'type'} (C{str}): The option's type (see ++ - C{'type'} (L{str}): The option's type (see + L{Field}'s doc string for possible values). +- - C{'label'} (C{unicode}): A human readable label for this option. +- - C{'options'} (C{dict}): Optional list of possible values for this ++ - C{'label'} (L{str}): A human readable label for this option. ++ - C{'options'} (L{dict}): Optional list of possible values for this + option. + + Example:: +@@ -346,7 +346,7 @@ class IPubSubService(Interface): + } + } + +- @rtype: C{dict}. ++ @rtype: L{dict}. + """ + + def getDefaultConfiguration(requestor, service, nodeType): +@@ -359,11 +359,11 @@ class IPubSubService(Interface): + @type service: L{JID} + @param nodeType: The type of node for which the configuration is + retrieved, C{'leaf'} or C{'collection'}. +- @type nodeType: C{str} +- @return: A deferred that fires with a C{dict} representing the default +- node configuration. Keys are C{str}s that represent the +- field name. Values can be of types C{unicode}, C{int} or +- C{bool}. ++ @type nodeType: L{str} ++ @return: A deferred that fires with a L{dict} representing the default ++ node configuration. Keys are L{str}s that represent the ++ field name. Values can be of types L{str}, L{int} or ++ L{bool}. + @rtype: L{Deferred} + """ + +@@ -377,10 +377,10 @@ class IPubSubService(Interface): + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to retrieve the + configuration from. +- @type nodeIdentifier: C{unicode} +- @return: A deferred that fires with a C{dict} representing the node +- configuration. Keys are C{str}s that represent the field name. +- Values can be of types C{unicode}, C{int} or C{bool}. ++ @type nodeIdentifier: L{str} ++ @return: A deferred that fires with a L{dict} representing the node ++ configuration. Keys are L{str}s that represent the field name. ++ Values can be of types L{str}, L{int} or L{bool}. + @rtype: L{Deferred} + """ + +@@ -394,7 +394,7 @@ class IPubSubService(Interface): + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to change the + configuration of. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @return: A deferred that fires with C{None} when the node's + configuration has been changed. + @rtype: L{Deferred} +@@ -410,7 +410,7 @@ class IPubSubService(Interface): + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to retrieve items + from. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + def retract(requestor, service, nodeIdentifier, itemIdentifiers): +@@ -423,7 +423,7 @@ class IPubSubService(Interface): + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to retract items + from. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + def purge(requestor, service, nodeIdentifier): +@@ -435,7 +435,7 @@ class IPubSubService(Interface): + @param service: The entity the request was addressed to. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to be purged. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + def delete(requestor, service, nodeIdentifier): +@@ -447,7 +447,7 @@ class IPubSubService(Interface): + @param service: The entity the request was addressed to. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node to be delete. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + """ + + +@@ -472,7 +472,7 @@ class IPubSubResource(Interface): + @param service: The publish-subscribe service entity. + @type service: L{JID} + @param nodeIdentifier: Identifier of the node to request the info for. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @return: A deferred that fires with a dictionary. If not empty, + it must have the keys C{'type'} and C{'meta-data'} to keep + respectively the node type and a dictionary with the meta +@@ -491,7 +491,7 @@ class IPubSubResource(Interface): + @type service: L{JID} + @param nodeIdentifier: Identifier of the node to request the childs + for. +- @type nodeIdentifier: C{unicode} ++ @type nodeIdentifier: L{str} + @return: A deferred that fires with a list of child node identifiers. + @rtype: L{Deferred} + """ +@@ -505,10 +505,10 @@ class IPubSubResource(Interface): + by option name. The value of each entry represents the specifics for + that option in a dictionary: + +- - C{'type'} (C{str}): The option's type (see ++ - C{'type'} (L{str}): The option's type (see + L{Field}'s doc string for possible values). +- - C{'label'} (C{unicode}): A human readable label for this option. +- - C{'options'} (C{dict}): Optional list of possible values for this ++ - C{'label'} (L{str}): A human readable label for this option. ++ - C{'options'} (L{dict}): Optional list of possible values for this + option. + + Example:: +@@ -529,7 +529,7 @@ class IPubSubResource(Interface): + } + } + +- @rtype: C{dict}. ++ @rtype: L{dict}. + """ + + +@@ -574,7 +574,7 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{list} of subscriptions as ++ @return: A deferred that fires with a L{list} of subscriptions as + L{Subscription}. + @rtype: L{Deferred} + """ +@@ -586,9 +586,9 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{list} of affiliations as +- C{tuple}s of (node identifier as C{unicode}, affiliation state as +- C{str}). The affiliation can be C{'owner'}, C{'publisher'}, or ++ @return: A deferred that fires with a L{list} of affiliations as ++ C{tuple}s of (node identifier as L{str}, affiliation state as ++ L{str}). The affiliation can be C{'owner'}, C{'publisher'}, or + C{'outcast'}. + @rtype: L{Deferred} + """ +@@ -600,7 +600,7 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{unicode} that represents ++ @return: A deferred that fires with a L{str} that represents + the identifier of the new node. + @rtype: L{Deferred} + """ +@@ -612,10 +612,10 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{dict} representing the default +- node configuration. Keys are C{str}s that represent the +- field name. Values can be of types C{unicode}, C{int} or +- C{bool}. ++ @return: A deferred that fires with a L{dict} representing the default ++ node configuration. Keys are L{str}s that represent the ++ field name. Values can be of types L{str}, L{int} or ++ L{bool}. + @rtype: L{Deferred} + """ + +@@ -626,9 +626,9 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{dict} representing the node +- configuration. Keys are C{str}s that represent the field name. +- Values can be of types C{unicode}, C{int} or C{bool}. ++ @return: A deferred that fires with a L{dict} representing the node ++ configuration. Keys are L{str}s that represent the field name. ++ Values can be of types L{str}, L{int} or L{bool}. + @rtype: L{Deferred} + """ + +@@ -651,7 +651,7 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{list} of L{pubsub.Item}. ++ @return: A deferred that fires with a L{list} of L{pubsub.Item}. + @rtype: L{Deferred} + """ + +@@ -698,9 +698,9 @@ class IPubSubResource(Interface): + + @param request: The publish-subscribe request. + @type request: L{wokkel.pubsub.PubSubRequest} +- @return: A deferred that fires with a C{dict} of affiliations with the ++ @return: A deferred that fires with a L{dict} of affiliations with the + entity as key (L{JID}) and +- the affiliation state as value (C{unicode}). The affiliation can ++ the affiliation state as value (L{str}). The affiliation can + be C{u'owner'}, C{u'publisher'}, or C{u'outcast'}. + @rtype: L{Deferred} + +@@ -748,7 +748,7 @@ class IMUCClient(Interface): + @type user: L{muc.User} + + @param subject: The subject of the given room. +- @type subject: C{unicode} ++ @type subject: L{str} + """ + + +@@ -769,7 +769,7 @@ class IMUCClient(Interface): + + @param options: A mapping of field names to values, or C{None} to + cancel. +- @type options: C{dict} ++ @type options: L{dict} + """ + + +@@ -796,14 +796,14 @@ class IMUCClient(Interface): + @type roomJID: L{JID} + + @param nick: The nick name for the entitity joining the room. +- @type nick: C{unicode} ++ @type nick: L{str} + + @param historyOptions: Options for conversation history sent by the + room upon joining. + @type historyOptions: L{HistoryOptions} + + @param password: Optional password for the room. +- @type password: C{unicode} ++ @type password: L{str} + + @return: A deferred that fires when the entity is in the room or an + error has occurred. +@@ -820,7 +820,7 @@ class IMUCClient(Interface): + @type roomJID: L{JID} + + @param nick: The new nick name within the room. +- @type nick: C{unicode} ++ @type nick: L{str} + """ + + +@@ -876,7 +876,7 @@ class IMUCClient(Interface): + + @param options: A mapping of field names to values, or C{None} to + cancel. +- @type options: C{dict} ++ @type options: L{dict} + """ + + +@@ -890,7 +890,7 @@ class IMUCClient(Interface): + @type roomJID: L{JID} + + @param subject: The subject you want to set. +- @type subject: C{unicode} ++ @type subject: L{str} + """ + + +@@ -917,7 +917,7 @@ class IMUCClient(Interface): + holding the original stanza a + L{Element}, and C{'timestamp'} + with the timestamp. +- @type messages: C{list} of ++ @type messages: L{list} of + L{Element} + """ + +@@ -933,7 +933,7 @@ class IMUCClient(Interface): + @type entity: L{JID} + + @param reason: The reason for banning the entity. +- @type reason: C{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -949,10 +949,10 @@ class IMUCClient(Interface): + + @param nick: The occupant to be banned. + @type nick: L{JID} or +- C{unicode} ++ L{str} + + @param reason: The reason given for the kick. +- @type reason: C{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +diff --git a/wokkel/muc.py b/wokkel/muc.py +index 330664b..4c826f2 100644 +--- a/wokkel/muc.py ++++ b/wokkel/muc.py +@@ -17,7 +17,6 @@ from dateutil.tz import tzutc + from zope.interface import implementer + + from twisted.internet import defer +-from twisted.python.compat import unicode + from twisted.python.constants import Values, ValueConstant + from twisted.words.protocols.jabber import jid, error, xmlstream + from twisted.words.xish import domish +@@ -192,7 +191,7 @@ class AdminItem(object): + item.role = element.getAttribute('role') + + for child in element.elements(NS_MUC_ADMIN, 'reason'): +- item.reason = unicode(child) ++ item.reason = str(child) + + return item + +@@ -228,13 +227,13 @@ class DestructionRequest(generic.Request): + Room destruction request. + + @param reason: Optional reason for the destruction of this room. +- @type reason: L{unicode}. ++ @type reason: L{str}. + + @param alternate: Optional room JID of an alternate venue. + @type alternate: L{JID} + + @param password: Optional password for entering the alternate venue. +- @type password: L{unicode} ++ @type password: L{str} + """ + + stanzaType = 'set' +@@ -395,10 +394,10 @@ class UserPresence(xmppim.AvailabilityPresence): + Availability presence sent from MUC service to client. + + @ivar affiliation: Affiliation of the entity to the room. +- @type affiliation: L{unicode} ++ @type affiliation: L{str} + + @ivar role: Role of the entity in the room. +- @type role: L{unicode} ++ @type role: L{str} + + @ivar entity: The real JID of the entity this presence is from. + @type entity: L{JID} +@@ -408,7 +407,7 @@ class UserPresence(xmppim.AvailabilityPresence): + @type mucStatuses: L{Statuses} + + @ivar nick: The nick name of the entity in the room. +- @type nick: L{unicode} ++ @type nick: L{str} + """ + + affiliation = None +@@ -451,7 +450,7 @@ class UserPresence(xmppim.AvailabilityPresence): + self.role = child.getAttribute('role') + + for reason in child.elements(NS_MUC_ADMIN, 'reason'): +- self.reason = unicode(reason) ++ self.reason = str(reason) + + # TODO: destroy + +@@ -595,14 +594,14 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param nick: The nick name for the entitity joining the room. +- @type nick: L{unicode} ++ @type nick: L{str} + + @param historyOptions: Options for conversation history sent by the + room upon joining. + @type historyOptions: L{HistoryOptions} + + @param password: Optional password for the room. +- @type password: L{unicode} ++ @type password: L{str} + + @return: A deferred that fires when the entity is in the room or an + error has occurred. +@@ -628,7 +627,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param nick: The new nick name within the room. +- @type nick: L{unicode} ++ @type nick: L{str} + """ + occupantJID = jid.JID(tuple=(roomJID.user, roomJID.host, nick)) + presence = BasicPresence(recipient=occupantJID) +@@ -646,10 +645,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + + @param show: The availability of the entity. Common values are xa, + available, etc +- @type show: L{unicode} ++ @type show: L{str} + + @param status: The current status of the entity. +- @type status: L{unicode} ++ @type status: L{str} + """ + occupantJID = self._roomOccupantMap[roomJID] + presence = BasicPresence(recipient=occupantJID, show=show, +@@ -704,7 +703,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param subject: The subject you want to set. +- @type subject: L{unicode} ++ @type subject: L{str} + """ + message = GroupChat(roomJID.userhostJID(), subject=subject) + self.send(message.toElement()) +@@ -723,7 +722,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type invitee: L{JID} + + @param reason: The reason for the invite. +- @type reason: L{unicode} ++ @type reason: L{str} + """ + message = InviteMessage(recipient=roomJID, invitee=invitee, + reason=reason) +@@ -970,7 +969,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + L{JID} + + @param affiliation: The affilation to the entities will acquire. +- @type affiliation: L{unicode} ++ @type affiliation: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -992,10 +991,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param nick: The nick name for the user in this room. +- @type nick: L{unicode} ++ @type nick: L{str} + + @param reason: The reason for granting voice to the entity. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -1015,10 +1014,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param nick: The nick name for the user in this room. +- @type nick: L{unicode} ++ @type nick: L{str} + + @param reason: The reason for revoking voice from the entity. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -1035,10 +1034,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param nick: The nick name for the user in this room. +- @type nick: L{unicode} ++ @type nick: L{str} + + @param reason: The reason for granting moderation to the entity. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -1058,7 +1057,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type entity: L{JID} + + @param reason: The reason for banning the entity. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -1075,10 +1074,10 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param nick: The occupant to be banned. +- @type nick: L{unicode} ++ @type nick: L{str} + + @param reason: The reason given for the kick. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param sender: The entity sending the request. + @type sender: L{JID} +@@ -1095,7 +1094,7 @@ class MUCClientProtocol(xmppim.BasePresenceProtocol): + @type roomJID: L{JID} + + @param reason: The reason for the destruction of the room. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param alternate: The JID of the room suggested as an alternate venue. + @type alternate: L{JID} +@@ -1135,7 +1134,7 @@ class Room(object): + @type roomJID: L{JID} + + @ivar nick: The nick name for the client in this room. +- @type nick: L{unicode} ++ @type nick: L{str} + + @ivar occupantJID: The JID of the occupant in the room. Generated from + roomJID and nick. +@@ -1190,7 +1189,7 @@ class Room(object): + Get a user from the room's roster. + + @param nick: The nick for the user in the MUC room. +- @type nick: L{unicode} ++ @type nick: L{str} + """ + return self.roster.get(nick) + +@@ -1444,14 +1443,14 @@ class MUCClient(MUCClientProtocol): + @type roomJID: L{JID} + + @param nick: The nick name for the entitity joining the room. +- @type nick: L{unicode} ++ @type nick: L{str} + + @param historyOptions: Options for conversation history sent by the + room upon joining. + @type historyOptions: L{HistoryOptions} + + @param password: Optional password for the room. +- @type password: L{unicode} ++ @type password: L{str} + + @return: A deferred that fires with the room when the entity is in the + room, or with a failure if an error has occurred. +@@ -1488,7 +1487,7 @@ class MUCClient(MUCClientProtocol): + @type roomJID: L{JID} + + @param nick: The new nick name within the room. +- @type nick: L{unicode} ++ @type nick: L{str} + """ + def cb(presence): + # Presence confirmation, change the nickname. +@@ -1530,10 +1529,10 @@ class MUCClient(MUCClientProtocol): + + @param show: The availability of the entity. Common values are xa, + available, etc +- @type show: L{unicode} ++ @type show: L{str} + + @param status: The current status of the entity. +- @type status: L{unicode} ++ @type status: L{str} + """ + room = self._getRoom(roomJID) + d = MUCClientProtocol.status(self, roomJID, show, status) +@@ -1549,7 +1548,7 @@ class MUCClient(MUCClientProtocol): + @type roomJID: L{JID} + + @param reason: The reason for the destruction of the room. +- @type reason: L{unicode} ++ @type reason: L{str} + + @param alternate: The JID of the room suggested as an alternate venue. + @type alternate: L{JID} +diff --git a/wokkel/pubsub.py b/wokkel/pubsub.py +index 689a6e2..2eb1b44 100644 +--- a/wokkel/pubsub.py ++++ b/wokkel/pubsub.py +@@ -16,7 +16,6 @@ from zope.interface import implementer + + from twisted.internet import defer + from twisted.python import log +-from twisted.python.compat import StringType, iteritems, unicode + from twisted.words.protocols.jabber import jid, error + from twisted.words.xish import domish + +@@ -107,20 +106,20 @@ class Subscription(object): + + @ivar nodeIdentifier: The identifier of the node subscribed to. The root + node is denoted by L{None}. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @ivar subscriber: The subscribing entity. + @type subscriber: L{jid.JID} + + @ivar state: The subscription state. One of C{'subscribed'}, C{'pending'}, + C{'unconfigured'}. +- @type state: L{unicode} ++ @type state: L{str} + + @ivar options: Optional list of subscription options. + @type options: L{dict} + + @ivar subscriptionIdentifier: Optional subscription identifier. +- @type subscriptionIdentifier: L{unicode} ++ @type subscriptionIdentifier: L{str} + """ + + def __init__(self, nodeIdentifier, subscriber, state, options=None, +@@ -150,7 +149,7 @@ class Subscription(object): + element = domish.Element((defaultUri, 'subscription')) + if self.nodeIdentifier: + element['node'] = self.nodeIdentifier +- element['jid'] = unicode(self.subscriber) ++ element['jid'] = str(self.subscriber) + element['subscription'] = self.state + if self.subscriptionIdentifier: + element['subid'] = self.subscriptionIdentifier +@@ -171,17 +170,17 @@ class Item(domish.Element): + def __init__(self, id=None, payload=None): + """ + @param id: optional item identifier +- @type id: L{unicode} ++ @type id: L{str} + @param payload: optional item payload. Either as a domish element, or + as serialized XML. +- @type payload: object providing L{domish.IElement} or L{unicode}. ++ @type payload: object providing L{domish.IElement} or L{str}. + """ + + domish.Element.__init__(self, (None, 'item')) + if id is not None: + self['id'] = id + if payload is not None: +- if isinstance(payload, StringType): ++ if isinstance(payload, str): + self.addRawXml(payload) + else: + self.addChild(payload) +@@ -213,7 +212,7 @@ class PubSubRequest(generic.Stanza): + @type maxItems: L{int}. + + @ivar nodeIdentifier: Identifier of the node the request is about. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @ivar nodeType: The type of node that should be created, or for which the + configuration is retrieved. C{'leaf'} or C{'collection'}. +@@ -227,7 +226,7 @@ class PubSubRequest(generic.Stanza): + @type subscriber: L{JID} + + @ivar subscriptionIdentifier: Identifier for a specific subscription. +- @type subscriptionIdentifier: L{unicode} ++ @type subscriptionIdentifier: L{str} + + @ivar subscriptions: Subscriptions to be modified, as a set of + L{Subscription}. +@@ -235,7 +234,7 @@ class PubSubRequest(generic.Stanza): + + @ivar affiliations: Affiliations to be modified, as a dictionary of entity + (L{JID} to affiliation +- (L{unicode}). ++ (L{str}). + @type affiliations: L{dict} + """ + +@@ -277,7 +276,7 @@ class PubSubRequest(generic.Stanza): + } + + # Map request verb to request iq type and subelement name +- _verbRequestMap = dict(((v, k) for k, v in iteritems(_requestVerbMap))) ++ _verbRequestMap = dict(((v, k) for k, v in _requestVerbMap.items())) + + # Map request verb to parameter handler names + _parameters = { +@@ -487,7 +486,7 @@ class PubSubRequest(generic.Stanza): + Render maximum items into an items request. + """ + if self.maxItems: +- verbElement['max_items'] = unicode(self.maxItems) ++ verbElement['max_items'] = str(self.maxItems) + + + def _parse_subidOrNone(self, verbElement): +@@ -648,7 +647,7 @@ class PubSubEvent(object): + @param recipient: The entity to which the notification was sent. + @type recipient: L{wokkel.pubsub.ItemsEvent} + @param nodeIdentifier: Identifier of the node the event pertains to. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + @param headers: SHIM headers, see L{wokkel.shim.extractHeaders}. + @type headers: L{dict} + """ +@@ -772,7 +771,7 @@ class PubSubClient(XMPPHandler): + @param service: The publish subscribe service to create the node at. + @type service: L{JID} + @param nodeIdentifier: Optional suggestion for the id of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + @param options: Optional node configuration options. + @type options: L{dict} + """ +@@ -807,7 +806,7 @@ class PubSubClient(XMPPHandler): + @param service: The publish subscribe service to delete the node from. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + """ + request = PubSubRequest('delete') + request.recipient = service +@@ -825,7 +824,7 @@ class PubSubClient(XMPPHandler): + @type service: L{JID} + + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @param subscriber: The entity to subscribe to the node. This entity + will get notifications of new published items. +@@ -877,13 +876,13 @@ class PubSubClient(XMPPHandler): + @type service: L{JID} + + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @param subscriber: The entity to unsubscribe from the node. + @type subscriber: L{JID} + + @param subscriptionIdentifier: Optional subscription identifier. +- @type subscriptionIdentifier: L{unicode} ++ @type subscriptionIdentifier: L{str} + """ + request = PubSubRequest('unsubscribe') + request.recipient = service +@@ -901,7 +900,7 @@ class PubSubClient(XMPPHandler): + @param service: The publish subscribe service that keeps the node. + @type service: L{JID} + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + @param items: Optional list of L{Item}s to publish. + @type items: L{list} + """ +@@ -922,7 +921,7 @@ class PubSubClient(XMPPHandler): + @type service: L{JID} + + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @param maxItems: Optional limit on the number of retrieved items. + @type maxItems: L{int} +@@ -930,10 +929,10 @@ class PubSubClient(XMPPHandler): + @param subscriptionIdentifier: Optional subscription identifier. In + case the node has been subscribed to multiple times, this narrows + the results to the specific subscription. +- @type subscriptionIdentifier: L{unicode} ++ @type subscriptionIdentifier: L{str} + + @param itemIdentifiers: Identifiers of the items to be retrieved. +- @type itemIdentifiers: L{set} of L{unicode} ++ @type itemIdentifiers: L{set} of L{str} + """ + request = PubSubRequest('items') + request.recipient = service +@@ -965,13 +964,13 @@ class PubSubClient(XMPPHandler): + @type service: L{JID} + + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @param subscriber: The entity subscribed to the node. + @type subscriber: L{JID} + + @param subscriptionIdentifier: Optional subscription identifier. +- @type subscriptionIdentifier: L{unicode} ++ @type subscriptionIdentifier: L{str} + + @rtype: L{data_form.Form} + """ +@@ -1002,7 +1001,7 @@ class PubSubClient(XMPPHandler): + @type service: L{JID} + + @param nodeIdentifier: The identifier of the node. +- @type nodeIdentifier: L{unicode} ++ @type nodeIdentifier: L{str} + + @param subscriber: The entity subscribed to the node. + @type subscriber: L{JID} +@@ -1011,7 +1010,7 @@ class PubSubClient(XMPPHandler): + @type options: L{dict}. + + @param subscriptionIdentifier: Optional subscription identifier. +- @type subscriptionIdentifier: L{unicode} ++ @type subscriptionIdentifier: L{str} + """ + request = PubSubRequest('optionsSet') + request.recipient = service +@@ -1356,7 +1355,7 @@ class PubSubService(XMPPHandler, IQHandlerMixin): + if request.nodeIdentifier: + affiliations['node'] = request.nodeIdentifier + +- for entity, affiliation in iteritems(result): ++ for entity, affiliation in result.items(): + item = affiliations.addElement('affiliation') + item['jid'] = entity.full() + item['affiliation'] = affiliation +diff --git a/wokkel/server.py b/wokkel/server.py +index 54517a2..fbd8452 100644 +--- a/wokkel/server.py ++++ b/wokkel/server.py +@@ -22,7 +22,6 @@ from zope.interface import implementer + from twisted.internet import defer, reactor + from twisted.names.srvconnect import SRVConnector + from twisted.python import log, randbytes +-from twisted.python.compat import iteritems, unicode + from twisted.words.protocols.jabber import error, ijabber, jid, xmlstream + from twisted.words.xish import domish + +@@ -40,15 +39,15 @@ def generateKey(secret, receivingServer, originatingServer, streamID): + + @param secret: the shared secret known to the Originating Server and + Authoritive Server. +- @type secret: L{unicode} ++ @type secret: L{str} + @param receivingServer: the Receiving Server host name. +- @type receivingServer: L{unicode} ++ @type receivingServer: L{str} + @param originatingServer: the Originating Server host name. +- @type originatingServer: L{unicode} ++ @type originatingServer: L{str} + @param streamID: the Stream ID as generated by the Receiving Server. +- @type streamID: L{unicode} ++ @type streamID: L{str} + @return: hexadecimal digest of the generated key. +- @type: C{str} ++ @type: L{str} + """ + + hashObject = sha256() +@@ -340,7 +339,7 @@ class XMPPServerListenAuthenticator(xmlstream.ListenAuthenticator): + try: + if xmlstream.NS_STREAMS != rootElement.uri or \ + self.namespace != self.xmlstream.namespace or \ +- ('db', NS_DIALBACK) not in iteritems(rootElement.localPrefixes): ++ ('db', NS_DIALBACK) not in rootElement.localPrefixes.items(): + raise error.StreamError('invalid-namespace') + + if targetDomain and targetDomain not in self.service.domains: +@@ -379,7 +378,7 @@ class XMPPServerListenAuthenticator(xmlstream.ListenAuthenticator): + raise error.StreamError('invalid-from') + + streamID = verify.getAttribute('id', '') +- key = unicode(verify) ++ key = str(verify) + + calculatedKey = generateKey(self.service.secret, receivingServer, + originatingServer, streamID) +@@ -415,7 +414,7 @@ class XMPPServerListenAuthenticator(xmlstream.ListenAuthenticator): + + receivingServer = result['to'] + originatingServer = result['from'] +- key = unicode(result) ++ key = str(result) + + d = self.service.validateConnection(receivingServer, originatingServer, + self.xmlstream.sid, key) +diff --git a/wokkel/shim.py b/wokkel/shim.py +index 3b12349..85a0848 100644 +--- a/wokkel/shim.py ++++ b/wokkel/shim.py +@@ -12,7 +12,6 @@ U{XEP-0131}. + + from __future__ import division, absolute_import + +-from twisted.python.compat import unicode + from twisted.words.xish import domish + + NS_SHIM = "http://jabber.org/protocol/shim" +@@ -30,7 +29,7 @@ def extractHeaders(stanza): + @param stanza: The stanza to extract headers from. + @type stanza: L{Element} + @return: Headers as a mapping from header name to a list of values. +- @rtype: C{dict} ++ @rtype: L{dict} + """ + headers = {} + +@@ -38,6 +37,6 @@ def extractHeaders(stanza): + 'headers', NS_SHIM): + for header in domish.generateElementsQNamed(element.children, + 'header', NS_SHIM): +- headers.setdefault(header['name'], []).append(unicode(header)) ++ headers.setdefault(header['name'], []).append(str(header)) + + return headers +diff --git a/wokkel/subprotocols.py b/wokkel/subprotocols.py +index f0a6090..b4cde14 100644 +--- a/wokkel/subprotocols.py ++++ b/wokkel/subprotocols.py +@@ -14,7 +14,6 @@ from zope.interface import implementer + from twisted.internet import defer + from twisted.internet.error import ConnectionDone + from twisted.python import failure, log +-from twisted.python.compat import iteritems, itervalues + from twisted.python.deprecate import deprecatedModuleAttribute + from twisted.words.protocols.jabber import error, ijabber, xmlstream + from twisted.words.protocols.jabber.xmlstream import toResponse +@@ -130,15 +129,15 @@ class StreamManager(XMPPHandlerCollection): + @ivar xmlstream: currently managed XML stream + @type xmlstream: L{XmlStream} + @ivar logTraffic: if true, log all traffic. +- @type logTraffic: C{bool} ++ @type logTraffic: L{bool} + @ivar _initialized: Whether the stream represented by L{xmlstream} has + been initialized. This is used when caching outgoing + stanzas. +- @type _initialized: C{bool} ++ @type _initialized: L{bool} + @ivar _packetQueue: internal buffer of unsent data. See L{send} for details. + @type _packetQueue: L{list} + @ivar timeout: Default IQ request timeout in seconds. +- @type timeout: C{int} ++ @type timeout: L{int} + @ivar _reactor: A provider of L{IReactorTime} to track timeouts. + """ + timeout = None +@@ -277,7 +276,7 @@ class StreamManager(XMPPHandlerCollection): + # deferreds will never be fired. + iqDeferreds = self._iqDeferreds + self._iqDeferreds = {} +- for d in itervalues(iqDeferreds): ++ for d in iqDeferreds.values(): + d.errback(reason) + + +@@ -420,7 +419,7 @@ class IQHandlerMixin(object): + + @cvar iqHandlers: Mapping from XPath queries (as a string) to the method + name that will handle requests that match the query. +- @type iqHandlers: C{dict} ++ @type iqHandlers: L{dict} + """ + + iqHandlers = None +@@ -455,7 +454,7 @@ class IQHandlerMixin(object): + return error.StanzaError('internal-server-error').toResponse(iq) + + handler = None +- for queryString, method in iteritems(self.iqHandlers): ++ for queryString, method in self.iqHandlers.items(): + if xpath.internQuery(queryString).matches(iq): + handler = getattr(self, method) + +diff --git a/wokkel/test/helpers.py b/wokkel/test/helpers.py +index 102b3dc..c76a4a0 100644 +--- a/wokkel/test/helpers.py ++++ b/wokkel/test/helpers.py +@@ -8,7 +8,6 @@ Unit test helpers. + from __future__ import division, absolute_import + + from twisted.internet import defer +-from twisted.python.compat import iteritems + from twisted.words.xish import xpath + from twisted.words.xish.utility import EventDispatcher + +@@ -79,14 +78,14 @@ class TestableRequestHandlerMixin(object): + Find a handler and call it directly. + + @param xml: XML stanza that may yield a handler being called. +- @type xml: C{str}. ++ @type xml: L{str}. + @return: Deferred that fires with the result of a handler for this + stanza. If no handler was found, the deferred has its errback + called with a C{NotImplementedError} exception. + """ + handler = None + iq = parseXml(xml) +- for queryString, method in iteritems(self.service.iqHandlers): ++ for queryString, method in self.service.iqHandlers.items(): + if xpath.internQuery(queryString).matches(iq): + handler = getattr(self.service, method) + +diff --git a/wokkel/test/test_client.py b/wokkel/test/test_client.py +index ef367f7..ef9adfd 100644 +--- a/wokkel/test/test_client.py ++++ b/wokkel/test/test_client.py +@@ -8,6 +8,7 @@ Tests for L{wokkel.client}. + from __future__ import division, absolute_import + + from twisted.internet import defer ++from twisted.python.compat import nativeString + from twisted.trial import unittest + from twisted.words.protocols.jabber import xmlstream + from twisted.words.protocols.jabber.client import XMPPAuthenticator +@@ -152,7 +153,7 @@ class ClientCreatorTest(unittest.TestCase): + + def cb(connector): + self.assertEqual('xmpp-client', connector.service) +- self.assertEqual('example.org', connector.domain) ++ self.assertEqual('example.org', nativeString(connector.domain)) + self.assertEqual(factory, connector.factory) + + def connect(connector): +diff --git a/wokkel/test/test_data_form.py b/wokkel/test/test_data_form.py +index 60e36f4..246f1c5 100644 +--- a/wokkel/test/test_data_form.py ++++ b/wokkel/test/test_data_form.py +@@ -10,7 +10,6 @@ from __future__ import division, absolute_import + from zope.interface import verify + from zope.interface.common.mapping import IIterableMapping + +-from twisted.python.compat import unicode, _PY3 + from twisted.trial import unittest + from twisted.words.xish import domish + from twisted.words.protocols.jabber import jid +@@ -34,7 +33,7 @@ class OptionTest(unittest.TestCase): + self.assertEqual('option', element.name) + self.assertEqual(NS_X_DATA, element.uri) + self.assertEqual(NS_X_DATA, element.value.uri) +- self.assertEqual('value', unicode(element.value)) ++ self.assertEqual('value', str(element.value)) + self.assertFalse(element.hasAttribute('label')) + + +@@ -48,7 +47,7 @@ class OptionTest(unittest.TestCase): + self.assertEqual('option', element.name) + self.assertEqual(NS_X_DATA, element.uri) + self.assertEqual(NS_X_DATA, element.value.uri) +- self.assertEqual('value', unicode(element.value)) ++ self.assertEqual('value', str(element.value)) + self.assertEqual('label', element['label']) + + +@@ -225,7 +224,7 @@ class FieldTest(unittest.TestCase): + child = element.children[0] + self.assertEqual('desc', child.name) + self.assertEqual(NS_X_DATA, child.uri) +- self.assertEqual(u'My desc', unicode(child)) ++ self.assertEqual(u'My desc', str(child)) + + + def test_toElementRequired(self): +@@ -248,7 +247,7 @@ class FieldTest(unittest.TestCase): + field = data_form.Field(fieldType='jid-single', var='test', + value=jid.JID(u'test@example.org')) + element = field.toElement() +- self.assertEqual(u'test@example.org', unicode(element.value)) ++ self.assertEqual(u'test@example.org', str(element.value)) + + + def test_toElementJIDTextSingle(self): +@@ -258,7 +257,7 @@ class FieldTest(unittest.TestCase): + field = data_form.Field(fieldType='text-single', var='test', + value=jid.JID(u'test@example.org')) + element = field.toElement() +- self.assertEqual(u'test@example.org', unicode(element.value)) ++ self.assertEqual(u'test@example.org', str(element.value)) + + + def test_toElementBoolean(self): +@@ -268,7 +267,7 @@ class FieldTest(unittest.TestCase): + field = data_form.Field(fieldType='boolean', var='test', + value=True) + element = field.toElement() +- self.assertEqual(u'true', unicode(element.value)) ++ self.assertEqual(u'true', str(element.value)) + + + def test_toElementBooleanTextSingle(self): +@@ -277,7 +276,7 @@ class FieldTest(unittest.TestCase): + """ + field = data_form.Field(var='test', value=True) + element = field.toElement() +- self.assertEqual(u'true', unicode(element.value)) ++ self.assertEqual(u'true', str(element.value)) + + + def test_toElementNoType(self): +@@ -396,7 +395,7 @@ class FieldTest(unittest.TestCase): + + def test_fromElementValueTextSingle(self): + """ +- Parsed text-single field values should be of type C{unicode}. ++ Parsed text-single field values should be of type L{str}. + """ + element = domish.Element((NS_X_DATA, 'field')) + element['type'] = 'text-single' +@@ -407,7 +406,7 @@ class FieldTest(unittest.TestCase): + + def test_fromElementValueJID(self): + """ +- Parsed jid-single field values should be of type C{unicode}. ++ Parsed jid-single field values should be of type L{str}. + """ + element = domish.Element((NS_X_DATA, 'field')) + element['type'] = 'jid-single' +@@ -418,7 +417,7 @@ class FieldTest(unittest.TestCase): + + def test_fromElementValueJIDMalformed(self): + """ +- Parsed jid-single field values should be of type C{unicode}. ++ Parsed jid-single field values should be of type L{str}. + + No validation should be done at this point, so invalid JIDs should + also be passed as-is. +@@ -432,7 +431,7 @@ class FieldTest(unittest.TestCase): + + def test_fromElementValueBoolean(self): + """ +- Parsed boolean field values should be of type C{unicode}. ++ Parsed boolean field values should be of type L{str}. + """ + element = domish.Element((NS_X_DATA, 'field')) + element['type'] = 'boolean' +@@ -561,7 +560,7 @@ class FormTest(unittest.TestCase): + title = elements[0] + self.assertEqual('title', title.name) + self.assertEqual(NS_X_DATA, title.uri) +- self.assertEqual('Bot configuration', unicode(title)) ++ self.assertEqual('Bot configuration', str(title)) + + + def test_toElementInstructions(self): +@@ -576,7 +575,7 @@ class FormTest(unittest.TestCase): + instructions = elements[0] + self.assertEqual('instructions', instructions.name) + self.assertEqual(NS_X_DATA, instructions.uri) +- self.assertEqual('Fill out this form!', unicode(instructions)) ++ self.assertEqual('Fill out this form!', str(instructions)) + + + def test_toElementInstructionsMultiple(self): +@@ -593,10 +592,10 @@ class FormTest(unittest.TestCase): + instructions2 = elements[1] + self.assertEqual('instructions', instructions1.name) + self.assertEqual(NS_X_DATA, instructions1.uri) +- self.assertEqual('Fill out this form!', unicode(instructions1)) ++ self.assertEqual('Fill out this form!', str(instructions1)) + self.assertEqual('instructions', instructions2.name) + self.assertEqual(NS_X_DATA, instructions2.uri) +- self.assertEqual('no really', unicode(instructions2)) ++ self.assertEqual('no really', str(instructions2)) + + + def test_toElementFormType(self): +@@ -613,7 +612,7 @@ class FormTest(unittest.TestCase): + self.assertEqual(NS_X_DATA, formTypeField.uri) + self.assertEqual('FORM_TYPE', formTypeField['var']) + self.assertEqual('hidden', formTypeField['type']) +- self.assertEqual('jabber:bot', unicode(formTypeField.value)) ++ self.assertEqual('jabber:bot', str(formTypeField.value)) + + + def test_toElementFields(self): +@@ -1091,7 +1090,7 @@ class FormTest(unittest.TestCase): + self.assertNotIn('features', form) + + +- def test_iterkeys(self): ++ def test_keys(self): + """ + Iterating over the keys of a form yields all field names. + """ +@@ -1101,10 +1100,10 @@ class FormTest(unittest.TestCase): + values=['news', 'search'])] + form = data_form.Form('submit', fields=fields) + self.assertEqual(set(['botname', 'public', 'features']), +- set(form.iterkeys())) ++ set(form.keys())) + + +- def test_itervalues(self): ++ def test_values(self): + """ + Iterating over the values of a form yields all field values. + """ +@@ -1112,63 +1111,19 @@ class FormTest(unittest.TestCase): + data_form.Field('boolean', var='public', value=True)] + form = data_form.Form('submit', fields=fields) + self.assertEqual(set(['The Jabber Bot', True]), +- set(form.itervalues())) +- +- +- def test_iteritems(self): +- """ +- Iterating over the values of a form yields all item tuples. +- """ +- fields = [data_form.Field(var='botname', value='The Jabber Bot'), +- data_form.Field('boolean', var='public', value=True)] +- form = data_form.Form('submit', fields=fields) +- self.assertEqual(set([('botname', 'The Jabber Bot'), +- ('public', True)]), +- set(form.iteritems())) +- +- +- def test_keys(self): +- """ +- Getting the keys of a form yields a list of field names. +- """ +- fields = [data_form.Field(var='botname', value='The Jabber Bot'), +- data_form.Field('boolean', var='public', value=True), +- data_form.Field('list-multi', var='features', +- values=['news', 'search'])] +- form = data_form.Form('submit', fields=fields) +- keys = form.keys() +- if not _PY3: +- self.assertIsInstance(keys, list) +- self.assertEqual(set(['botname', 'public', 'features']), +- set(keys)) +- +- +- def test_values(self): +- """ +- Getting the values of a form yields a list of field values. +- """ +- fields = [data_form.Field(var='botname', value='The Jabber Bot'), +- data_form.Field('boolean', var='public', value=True)] +- form = data_form.Form('submit', fields=fields) +- values = form.values() +- if not _PY3: +- self.assertIsInstance(values, list) +- self.assertEqual(set(['The Jabber Bot', True]), set(values)) ++ set(form.values())) + + + def test_items(self): + """ +- Iterating over the values of a form yields a list of all item tuples. ++ Iterating over the values of a form yields all item tuples. + """ + fields = [data_form.Field(var='botname', value='The Jabber Bot'), + data_form.Field('boolean', var='public', value=True)] + form = data_form.Form('submit', fields=fields) +- items = form.items() +- if not _PY3: +- self.assertIsInstance(items, list) + self.assertEqual(set([('botname', 'The Jabber Bot'), + ('public', True)]), +- set(items)) ++ set(form.items())) + + + def test_getValues(self): +diff --git a/wokkel/test/test_generic.py b/wokkel/test/test_generic.py +index 94c39e5..4e4ab45 100644 +--- a/wokkel/test/test_generic.py ++++ b/wokkel/test/test_generic.py +@@ -7,19 +7,12 @@ Tests for L{wokkel.generic}. + + from __future__ import division, absolute_import + +-import re +- + from zope.interface.verify import verifyObject + +-from twisted.python import deprecate +-from twisted.python.compat import unicode + from twisted.trial import unittest +-from twisted.trial.util import suppress as SUPPRESS + from twisted.words.xish import domish + from twisted.words.protocols.jabber.jid import JID + +-from incremental import Version +- + from wokkel import generic + from wokkel.iwokkel import IDisco + from wokkel.test.helpers import XmlStreamStub +@@ -66,11 +59,11 @@ class VersionHandlerTest(unittest.TestCase): + elements = list(domish.generateElementsQNamed(response.query.children, + 'name', NS_VERSION)) + self.assertEquals(1, len(elements)) +- self.assertEquals('Test', unicode(elements[0])) ++ self.assertEquals('Test', str(elements[0])) + elements = list(domish.generateElementsQNamed(response.query.children, + 'version', NS_VERSION)) + self.assertEquals(1, len(elements)) +- self.assertEquals('0.1.0', unicode(elements[0])) ++ self.assertEquals('0.1.0', str(elements[0])) + + + +@@ -314,67 +307,3 @@ class RequestTest(unittest.TestCase): + + request = SetRequest() + self.assertEqual('set', request.stanzaType) +- +- +- +-class PrepareIDNNameTests(unittest.TestCase): +- """ +- Tests for L{wokkel.generic.prepareIDNName}. +- """ +- +- suppress = [SUPPRESS(category=DeprecationWarning, +- message=re.escape( +- deprecate.getDeprecationWarningString( +- generic.prepareIDNName, +- Version("wokkel", 18, 0, 0), +- replacement="unicode.encode('idna')")))] +- +- +- def test_deprecated(self): +- """ +- prepareIDNName is deprecated. +- """ +- self.callDeprecated((Version("wokkel", 18, 0, 0), +- "unicode.encode('idna')"), +- generic.prepareIDNName, ("example.com")) +- test_deprecated.suppress = [] +- +- +- def test_unicode(self): +- """ +- A unicode all-ASCII name is converted to an ASCII byte string. +- """ +- name = u"example.com" +- result = generic.prepareIDNName(name) +- self.assertEqual(b"example.com", result) +- +- +- def test_unicodeNonASCII(self): +- """ +- A unicode with non-ASCII is converted to its ACE equivalent. +- """ +- name = u"\u00e9chec.example.com" +- result = generic.prepareIDNName(name) +- self.assertEqual(b"xn--chec-9oa.example.com", result) +- +- +- def test_unicodeHalfwidthIdeographicFullStop(self): +- """ +- Exotic dots in unicode names are converted to Full Stop. +- """ +- name = u"\u00e9chec.example\uff61com" +- result = generic.prepareIDNName(name) +- self.assertEqual(b"xn--chec-9oa.example.com", result) +- +- +- def test_unicodeTrailingDot(self): +- """ +- Unicode names with trailing dots retain the trailing dot. +- +- L{encodings.idna.ToASCII} doesn't allow the empty string as the input, +- hence the implementation needs to strip a trailing dot, and re-add it +- after encoding the labels. +- """ +- name = u"example.com." +- result = generic.prepareIDNName(name) +- self.assertEqual(b"example.com.", result) +diff --git a/wokkel/test/test_muc.py b/wokkel/test/test_muc.py +index f690d05..282a8a1 100644 +--- a/wokkel/test/test_muc.py ++++ b/wokkel/test/test_muc.py +@@ -14,7 +14,6 @@ from zope.interface import verify + + from twisted.trial import unittest + from twisted.internet import defer, task +-from twisted.python.compat import iteritems, unicode + from twisted.words.xish import domish, xpath + from twisted.words.protocols.jabber.jid import JID + from twisted.words.protocols.jabber.error import StanzaError +@@ -81,7 +80,7 @@ class StatusCodeTest(unittest.TestCase): + 332: 'removed-shutdown', + } + +- for code, condition in iteritems(codes): ++ for code, condition in codes.items(): + constantName = condition.replace('-', '_').upper() + self.assertEqual(getattr(muc.STATUS_CODE, constantName), + muc.STATUS_CODE.lookupByValue(code)) +@@ -757,7 +756,7 @@ class MUCClientProtocolTest(unittest.TestCase): + self.assertEquals('message', message.name) + self.assertEquals(self.roomJID.full(), message.getAttribute('to')) + self.assertEquals('groupchat', message.getAttribute('type')) +- self.assertEquals(u'This is a test', unicode(message.body)) ++ self.assertEquals(u'This is a test', str(message.body)) + + + def test_chat(self): +@@ -773,7 +772,7 @@ class MUCClientProtocolTest(unittest.TestCase): + self.assertEquals('message', message.name) + self.assertEquals(otherOccupantJID.full(), message.getAttribute('to')) + self.assertEquals('chat', message.getAttribute('type')) +- self.assertEquals(u'This is a test', unicode(message.body)) ++ self.assertEquals(u'This is a test', str(message.body)) + + + def test_subject(self): +@@ -787,7 +786,7 @@ class MUCClientProtocolTest(unittest.TestCase): + self.assertEquals('message', message.name) + self.assertEquals(self.roomJID.full(), message.getAttribute('to')) + self.assertEquals('groupchat', message.getAttribute('type')) +- self.assertEquals(u'This is a test', unicode(message.subject)) ++ self.assertEquals(u'This is a test', str(message.subject)) + + + def test_invite(self): +@@ -806,7 +805,7 @@ class MUCClientProtocolTest(unittest.TestCase): + self.assertEquals(muc.NS_MUC_USER, message.x.invite.uri) + self.assertEquals(invitee.full(), message.x.invite.getAttribute('to')) + self.assertEquals(muc.NS_MUC_USER, message.x.invite.reason.uri) +- self.assertEquals(u'This is a test', unicode(message.x.invite.reason)) ++ self.assertEquals(u'This is a test', str(message.x.invite.reason)) + + + def test_getRegisterForm(self): +@@ -1399,7 +1398,7 @@ class MUCClientProtocolTest(unittest.TestCase): + nodes = xpath.queryForNodes(query, iq) + self.assertNotIdentical(None, nodes, 'Bad configure request') + destroy = nodes[0] +- self.assertEquals('Time to leave', unicode(destroy.reason)) ++ self.assertEquals('Time to leave', str(destroy.reason)) + + response = toResponse(iq, 'result') + self.stub.send(response) +diff --git a/wokkel/test/test_server.py b/wokkel/test/test_server.py +index 3e3c923..1efb6e5 100644 +--- a/wokkel/test/test_server.py ++++ b/wokkel/test/test_server.py +@@ -8,7 +8,11 @@ Tests for L{wokkel.server}. + from __future__ import division, absolute_import + from twisted.internet import defer + from twisted.python import failure +-from twisted.test.proto_helpers import StringTransport ++try: ++ from twisted.internet.testing import StringTransport ++except ImportError: ++ from twisted.test.proto_helpers import StringTransport ++ + from twisted.trial import unittest + from twisted.words.protocols.jabber import error, jid, xmlstream + from twisted.words.xish import domish +diff --git a/wokkel/test/test_shim.py b/wokkel/test/test_shim.py +index ded4679..d3b76cf 100644 +--- a/wokkel/test/test_shim.py ++++ b/wokkel/test/test_shim.py +@@ -9,7 +9,6 @@ Tests for {wokkel.shim}. + + from __future__ import division, absolute_import + +-from twisted.python.compat import unicode + from twisted.trial import unittest + + from wokkel import shim +@@ -36,7 +35,7 @@ class HeadersTest(unittest.TestCase): + self.assertEquals(NS_SHIM, header.uri) + self.assertEquals('header', header.name) + self.assertEquals('Urgency', header['name']) +- self.assertEquals('high', unicode(header)) ++ self.assertEquals('high', str(header)) + + + def test_headerRepeated(self): +@@ -47,7 +46,7 @@ class HeadersTest(unittest.TestCase): + ('Collection', 'node2')]) + elements = list(headers.elements()) + self.assertEquals(2, len(elements)) +- collections = set((unicode(element) for element in elements ++ collections = set((str(element) for element in elements + if element['name'] == 'Collection')) + self.assertIn('node1', collections) + self.assertIn('node2', collections) +diff --git a/wokkel/test/test_xmppim.py b/wokkel/test/test_xmppim.py +index faab8ed..0d4fdbf 100644 +--- a/wokkel/test/test_xmppim.py ++++ b/wokkel/test/test_xmppim.py +@@ -9,7 +9,6 @@ from __future__ import division, absolute_import + + from twisted.internet import defer + from twisted.trial import unittest +-from twisted.python.compat import unicode + from twisted.words.protocols.jabber import error + from twisted.words.protocols.jabber.jid import JID + from twisted.words.protocols.jabber.xmlstream import toResponse +@@ -55,7 +54,7 @@ class PresenceClientProtocolTest(unittest.TestCase): + self.assertEquals(None, presence.uri) + self.assertEquals("user@example.com", presence.getAttribute('to')) + self.assertEquals("unavailable", presence.getAttribute('type')) +- self.assertEquals("Disconnected", unicode(presence.status)) ++ self.assertEquals("Disconnected", str(presence.status)) + + def test_unavailableBroadcast(self): + """ +@@ -298,9 +297,9 @@ class PresenceProtocolTest(unittest.TestCase): + element = self.output[-1] + self.assertEquals("user@example.com", element.getAttribute('to')) + self.assertIdentical(None, element.getAttribute('type')) +- self.assertEquals(u'chat', unicode(element.show)) +- self.assertEquals(u'Talk to me!', unicode(element.status)) +- self.assertEquals(u'50', unicode(element.priority)) ++ self.assertEquals(u'chat', str(element.show)) ++ self.assertEquals(u'Talk to me!', str(element.status)) ++ self.assertEquals(u'50', str(element.priority)) + + def test_availableLanguages(self): + """ +@@ -314,19 +313,19 @@ class PresenceProtocolTest(unittest.TestCase): + element = self.output[-1] + self.assertEquals("user@example.com", element.getAttribute('to')) + self.assertIdentical(None, element.getAttribute('type')) +- self.assertEquals(u'chat', unicode(element.show)) ++ self.assertEquals(u'chat', str(element.show)) + + statuses = {} + for status in element.elements(): + if status.name == 'status': + lang = status.getAttribute((NS_XML, 'lang')) +- statuses[lang] = unicode(status) ++ statuses[lang] = str(status) + + self.assertIn(None, statuses) + self.assertEquals(u'Talk to me!', statuses[None]) + self.assertIn('nl', statuses) + self.assertEquals(u'Praat met me!', statuses['nl']) +- self.assertEquals(u'50', unicode(element.priority)) ++ self.assertEquals(u'50', str(element.priority)) + + + def test_availableSender(self): +@@ -363,7 +362,7 @@ class PresenceProtocolTest(unittest.TestCase): + self.assertEquals(None, element.uri) + self.assertEquals("user@example.com", element.getAttribute('to')) + self.assertEquals("unavailable", element.getAttribute('type')) +- self.assertEquals("Disconnected", unicode(element.status)) ++ self.assertEquals("Disconnected", str(element.status)) + + + def test_unavailableBroadcast(self): +@@ -568,7 +567,7 @@ class RosterItemTest(unittest.TestCase): + foundGroups = set() + for child in element.elements(): + if child.uri == NS_ROSTER and child.name == 'group': +- foundGroups.add(unicode(child)) ++ foundGroups.add(str(child)) + + self.assertEqual(groups, foundGroups) + +diff --git a/wokkel/xmppim.py b/wokkel/xmppim.py +index e6af929..683577b 100644 +--- a/wokkel/xmppim.py ++++ b/wokkel/xmppim.py +@@ -15,7 +15,6 @@ from __future__ import division, absolute_import + import warnings + + from twisted.internet import defer +-from twisted.python.compat import iteritems, itervalues, unicode + from twisted.words.protocols.jabber import error + from twisted.words.protocols.jabber.jid import JID + from twisted.words.xish import domish +@@ -48,20 +47,20 @@ class AvailablePresence(Presence): + self.addElement('show', content=show) + + if statuses is not None: +- for lang, status in iteritems(statuses): ++ for lang, status in statuses.items(): + s = self.addElement('status', content=status) + if lang: + s[(NS_XML, "lang")] = lang + + if priority != 0: +- self.addElement('priority', content=unicode(int(priority))) ++ self.addElement('priority', content=str(int(priority))) + + class UnavailablePresence(Presence): + def __init__(self, to=None, statuses=None): + Presence.__init__(self, to, type='unavailable') + + if statuses is not None: +- for lang, status in iteritems(statuses): ++ for lang, status in statuses.items(): + s = self.addElement('status', content=status) + if lang: + s[(NS_XML, "lang")] = lang +@@ -76,7 +75,7 @@ class PresenceClientProtocol(XMPPHandler): + for element in presence.elements(): + if element.name == 'status': + lang = element.getAttribute((NS_XML, 'lang')) +- text = unicode(element) ++ text = str(element) + statuses[lang] = text + return statuses + +@@ -92,14 +91,14 @@ class PresenceClientProtocol(XMPPHandler): + def _onPresenceAvailable(self, presence): + entity = JID(presence["from"]) + +- show = unicode(presence.show or '') ++ show = str(presence.show or '') + if show not in ['away', 'xa', 'chat', 'dnd']: + show = None + + statuses = self._getStatuses(presence) + + try: +- priority = int(unicode(presence.priority or '')) or 0 ++ priority = int(str(presence.priority or '')) or 0 + except ValueError: + priority = 0 + +@@ -133,14 +132,14 @@ class PresenceClientProtocol(XMPPHandler): + @type entity: {JID} + @param show: detailed presence information. One of C{'away'}, C{'xa'}, + C{'chat'}, C{'dnd'} or C{None}. +- @type show: C{str} or C{NoneType} ++ @type show: L{str} or C{NoneType} + @param statuses: dictionary of natural language descriptions of the + availability status, keyed by the language + descriptor. A status without a language + specified, is keyed with C{None}. +- @type statuses: C{dict} ++ @type statuses: L{dict} + @param priority: priority level of the resource. +- @type priority: C{int} ++ @type priority: L{int} + """ + + def unavailableReceived(self, entity, statuses=None): +@@ -153,7 +152,7 @@ class PresenceClientProtocol(XMPPHandler): + availability status, keyed by the language + descriptor. A status without a language + specified, is keyed with C{None}. +- @type statuses: C{dict} ++ @type statuses: L{dict} + """ + + def subscribedReceived(self, entity): +@@ -196,14 +195,14 @@ class PresenceClientProtocol(XMPPHandler): + @type entity: {JID} + @param show: optional detailed presence information. One of C{'away'}, + C{'xa'}, C{'chat'}, C{'dnd'}. +- @type show: C{str} ++ @type show: L{str} + @param statuses: dictionary of natural language descriptions of the + availability status, keyed by the language + descriptor. A status without a language + specified, is keyed with C{None}. +- @type statuses: C{dict} ++ @type statuses: L{dict} + @param priority: priority level of the resource. +- @type priority: C{int} ++ @type priority: L{int} + """ + self.send(AvailablePresence(entity, show, statuses, priority)) + +@@ -217,7 +216,7 @@ class PresenceClientProtocol(XMPPHandler): + availability status, keyed by the language + descriptor. A status without a language + specified, is keyed with C{None}. +- @type statuses: C{dict} ++ @type statuses: L{dict} + """ + self.send(UnavailablePresence(entity, statuses)) + +@@ -275,19 +274,19 @@ class AvailabilityPresence(BasePresence): + L{SubscriptionPresence}). + + @ivar available: The availability being communicated. +- @type available: C{bool} ++ @type available: L{bool} + @ivar show: More specific availability. Can be one of C{'chat'}, C{'away'}, + C{'xa'}, C{'dnd'} or C{None}. +- @type show: C{str} or C{NoneType} ++ @type show: L{str} or C{NoneType} + @ivar statuses: Natural language texts to detail the (un)availability. + These are represented as a mapping from language code +- (C{str} or C{None}) to the corresponding text (C{unicode}). ++ (L{str} or C{None}) to the corresponding text (L{str}). + If the key is C{None}, the associated text is in the + default language. +- @type statuses: C{dict} ++ @type statuses: L{dict} + @ivar priority: Priority level for this resource. Must be between -128 and + 127. Defaults to 0. +- @type priority: C{int} ++ @type priority: L{int} + """ + + childParsers = {(None, 'show'): '_childParser_show', +@@ -309,7 +308,7 @@ class AvailabilityPresence(BasePresence): + if None in self.statuses: + return self.statuses[None] + elif self.statuses: +- for status in itervalues(self.status): ++ for status in self.status.values(): + return status + else: + return None +@@ -318,20 +317,20 @@ class AvailabilityPresence(BasePresence): + + + def _childParser_show(self, element): +- show = unicode(element) ++ show = str(element) + if show in ('chat', 'away', 'xa', 'dnd'): + self.show = show + + + def _childParser_status(self, element): + lang = element.getAttribute((NS_XML, 'lang'), None) +- text = unicode(element) ++ text = str(element) + self.statuses[lang] = text + + + def _childParser_priority(self, element): + try: +- self.priority = int(unicode(element)) ++ self.priority = int(str(element)) + except ValueError: + pass + +@@ -353,9 +352,9 @@ class AvailabilityPresence(BasePresence): + if self.show in ('chat', 'away', 'xa', 'dnd'): + presence.addElement('show', content=self.show) + if self.priority != 0: +- presence.addElement('priority', content=unicode(self.priority)) ++ presence.addElement('priority', content=str(self.priority)) + +- for lang, text in iteritems(self.statuses): ++ for lang, text in self.statuses.items(): + status = presence.addElement('status', content=text) + if lang: + status[(NS_XML, 'lang')] = lang +@@ -400,7 +399,7 @@ class BasePresenceProtocol(XMPPHandler): + + @cvar presenceTypeParserMap: Maps presence stanza types to their respective + stanza parser classes (derived from L{Stanza}). +- @type presenceTypeParserMap: C{dict} ++ @type presenceTypeParserMap: L{dict} + """ + + presenceTypeParserMap = {} +@@ -515,15 +514,15 @@ class PresenceProtocol(BasePresenceProtocol): + + @param show: Optional detailed presence information. One of C{'away'}, + C{'xa'}, C{'chat'}, C{'dnd'}. +- @type show: C{str} ++ @type show: L{str} + + @param statuses: Mapping of natural language descriptions of the + availability status, keyed by the language descriptor. A status + without a language specified, is keyed with C{None}. +- @type statuses: C{dict} ++ @type statuses: L{dict} + + @param priority: priority level of the resource. +- @type priority: C{int} ++ @type priority: L{int} + """ + presence = AvailabilityPresence(recipient=recipient, sender=sender, + show=show, statuses=statuses, +@@ -541,7 +540,7 @@ class PresenceProtocol(BasePresenceProtocol): + @param statuses: dictionary of natural language descriptions of the + availability status, keyed by the language descriptor. A status + without a language specified, is keyed with C{None}. +- @type statuses: C{dict} ++ @type statuses: L{dict} + """ + presence = AvailabilityPresence(recipient=recipient, sender=sender, + available=False, statuses=statuses) +@@ -617,25 +616,25 @@ class RosterItem(object): + @ivar entity: The JID of the contact. + @type entity: L{JID} + @ivar name: The associated nickname for this contact. +- @type name: C{unicode} ++ @type name: L{str} + @ivar subscriptionTo: Subscription state to contact's presence. If C{True}, + the roster owner is subscribed to the presence + information of the contact. +- @type subscriptionTo: C{bool} ++ @type subscriptionTo: L{bool} + @ivar subscriptionFrom: Contact's subscription state. If C{True}, the + contact is subscribed to the presence information + of the roster owner. +- @type subscriptionFrom: C{bool} ++ @type subscriptionFrom: L{bool} + @ivar pendingOut: Whether the subscription request to this contact is + pending. +- @type pendingOut: C{bool} ++ @type pendingOut: L{bool} + @ivar groups: Set of groups this contact is categorized in. Groups are +- represented by an opaque identifier of type C{unicode}. +- @type groups: C{set} ++ represented by an opaque identifier of type L{str}. ++ @type groups: L{set} + @ivar approved: Signals pre-approved subscription. +- @type approved: C{bool} ++ @type approved: L{bool} + @ivar remove: Signals roster item removal. +- @type remove: C{bool} ++ @type remove: L{bool} + """ + + __subscriptionStates = {(False, False): None, +@@ -755,7 +754,7 @@ class RosterItem(object): + item.approved = element.getAttribute('approved') in ('true', '1') + for subElement in domish.generateElementsQNamed(element.children, + 'group', NS_ROSTER): +- item.groups.add(unicode(subElement)) ++ item.groups.add(str(subElement)) + return item + + +@@ -771,7 +770,7 @@ class RosterRequest(Request): + retrieving the roster as a delta from a known cached version. This + should only be set if the recipient is known to support roster + versioning. +- @type version: C{unicode} ++ @type version: L{str} + + @ivar rosterSet: If set, this is a roster set request. This flag is used + to make sure some attributes of the roster item are not rendered by +@@ -821,7 +820,7 @@ class Roster(dict): + identifier for this version of the roster. + + @ivar version: Roster version identifier. +- @type version: C{unicode}. ++ @type version: L{str}. + """ + + version = None +@@ -892,7 +891,7 @@ class RosterClientProtocol(XMPPHandler, IQHandlerMixin): + known to support roster versioning. If there is no (valid) cached + version of the roster, but roster versioning is desired, + C{version} should be set to the empty string (C{u''}). +- @type version: C{unicode} ++ @type version: L{str} + + @return: Roster as a mapping from L{JID} to L{RosterItem}. + @rtype: L{twisted.internet.defer.Deferred} +@@ -1023,11 +1022,11 @@ class Message(Stanza): + + + def _childParser_body(self, element): +- self.body = unicode(element) ++ self.body = str(element) + + + def _childParser_subject(self, element): +- self.subject = unicode(element) ++ self.subject = str(element) + + + def toElement(self): +-- +2.44.1 diff --git a/pkgs/development/python-modules/wokkel/default.nix b/pkgs/development/python-modules/wokkel/default.nix new file mode 100644 index 000000000000..567610a1624a --- /dev/null +++ b/pkgs/development/python-modules/wokkel/default.nix @@ -0,0 +1,72 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + incremental, + python-dateutil, + twisted, +}: + +buildPythonPackage rec { + pname = "wokkel"; + version = "18.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ralphm"; + repo = "wokkel"; + tag = version; + hash = "sha256-vIs9Zo8o7TWUTIqJG9SEHQd63aJFCRhj6k45IuxoCes="; + }; + + patches = [ + # Fixes compat with current-day twisted + # https://github.com/ralphm/wokkel/pull/32 with all the CI & doc changes excluded + ./0001-Remove-py2-compat.patch + ]; + + postPatch = '' + substituteInPlace wokkel/muc.py \ + --replace-fail "twisted.python.constants" "constantly" + ''; + + build-system = [ setuptools ]; + + dependencies = [ + incremental + python-dateutil + twisted + ]; + + nativeCheckInputs = [ twisted ]; + + checkPhase = '' + runHook preCheck + + trial wokkel + + runHook postCheck + ''; + + pythonImportsCheck = [ + "twisted.plugins.server" + "wokkel.disco" + "wokkel.muc" + "wokkel.pubsub" + ]; + + meta = { + description = "Twisted Jabber support library"; + longDescription = '' + Wokkel is collection of enhancements on top of the Twisted networking framework, written in Python. It mostly + provides a testing ground for enhancements to the Jabber/XMPP protocol implementation as found in + Twisted Words, that are meant to eventually move there. + ''; + homepage = "https://github.com/ralphm/wokkel"; # wokkel.ik.nu is dead + changelog = "https://github.com/ralphm/wokkel/blob/${version}/NEWS.rst"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ethancedwards8 ]; + teams = [ lib.teams.ngi ]; + }; +} diff --git a/pkgs/development/python-modules/xdis/default.nix b/pkgs/development/python-modules/xdis/default.nix index 88b3815bc0ee..ae87c83a9f6e 100644 --- a/pkgs/development/python-modules/xdis/default.nix +++ b/pkgs/development/python-modules/xdis/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "xdis"; - version = "6.1.3"; + version = "6.1.4"; pyproject = true; disabled = pythonOlder "3.6"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "rocky"; repo = "python-xdis"; tag = version; - hash = "sha256-fdLZg3MFMS9EIPC5EPE8DAT6K5a6l780msCfzTiZwoo="; + hash = "sha256-thgHaxEEXmkrJlkl9kF6ocKRrnWOuESTxQrdtM+uH1o="; }; build-system = [ diff --git a/pkgs/development/skaware-packages/skalibs/default.nix b/pkgs/development/skaware-packages/skalibs/default.nix index fec66a095ce1..bf52599b7591 100644 --- a/pkgs/development/skaware-packages/skalibs/default.nix +++ b/pkgs/development/skaware-packages/skalibs/default.nix @@ -33,6 +33,15 @@ skawarePackages.buildPackage { ] ++ lib.optionals (stdenv.buildPlatform.config != stdenv.hostPlatform.config) [ + # There's a fallback path for BSDs. + "--with-sysdep-procselfexe=${ + if stdenv.hostPlatform.isLinux then + "/proc/self/exe" + else if stdenv.hostPlatform.isSunOS then + "/proc/self/path/a.out" + else + "none" + }" # ./configure: sysdep posixspawnearlyreturn cannot be autodetected # when cross-compiling. Please manually provide a value with the # --with-sysdep-posixspawnearlyreturn=yes|no|... option. diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 8d5c09860a35..f9062d9b4b8f 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -773,6 +773,7 @@ mapAliases { svn_all_fast_export = svn-all-fast-export; topGit = top-git; }; # Added 2021-01-14 + github-copilot-cli = throw "'github-copilot-cli' has been removed because GitHub has replaced it with 'gh-copilot'."; # Added 2025-06-01 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 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 gkraken = throw "'gkraken' has been deprecated by upstream. Consider using the replacement 'coolercontrol' instead."; # Added 2024-11-22 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d897edd4eba0..3757307b0e8f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19149,6 +19149,8 @@ self: super: with self; { wn = callPackage ../development/python-modules/wn { }; + wokkel = callPackage ../development/python-modules/wokkel { }; + wolf-comm = callPackage ../development/python-modules/wolf-comm { }; woob = callPackage ../development/python-modules/woob { };