From f3752be2ff1ab451324391c2a0d005a9277c657b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sat, 24 May 2025 21:38:02 +0200 Subject: [PATCH 01/82] python313Packages.granian: use jemalloc hook to fix aarch64-linux --- .../python-modules/granian/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/development/python-modules/granian/default.nix b/pkgs/development/python-modules/granian/default.nix index 58e6159705d9..33dc373c5685 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 ]; From e33586bdacc060dbb5f53853a95025060250c159 Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Tue, 27 May 2025 14:07:48 +0200 Subject: [PATCH 02/82] updfparser: Update src URL --- pkgs/by-name/up/updfparser/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/by-name/up/updfparser/package.nix b/pkgs/by-name/up/updfparser/package.nix index 93f6143964b0..7e0ed9efd053 100644 --- a/pkgs/by-name/up/updfparser/package.nix +++ b/pkgs/by-name/up/updfparser/package.nix @@ -10,9 +10,8 @@ stdenv.mkDerivation rec { rev = "c5ce75b9eea8ebb2746b13eeb0f335813c615115"; src = fetchzip { - url = "https://indefero.soutade.fr/p/updfparser/source/download/${rev}/"; hash = "sha256-RT7mvu43Izp0rHhKq4wR4kt0TDfzHvB2NGMR+fxO5UM="; - extension = "zip"; + url = "https://forge.soutade.fr/soutade/updfparser/archive/${rev}.tar.gz"; }; makeFlags = [ From 1622902267ec658a71a151799d1f237d463fcbde Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Tue, 27 May 2025 14:12:14 +0200 Subject: [PATCH 03/82] updfparser: unstable-2023-08-08 -> unstable-2023-03-24 --- pkgs/by-name/up/updfparser/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/up/updfparser/package.nix b/pkgs/by-name/up/updfparser/package.nix index 7e0ed9efd053..4ead9b3cdb9a 100644 --- a/pkgs/by-name/up/updfparser/package.nix +++ b/pkgs/by-name/up/updfparser/package.nix @@ -6,12 +6,12 @@ stdenv.mkDerivation rec { name = "updfparser"; - version = "unstable-2023-08-08"; - rev = "c5ce75b9eea8ebb2746b13eeb0f335813c615115"; + version = "unstable-2024-03-24"; + rev = "6060d123441a06df699eb275ae5ffdd50409b8f3"; src = fetchzip { - hash = "sha256-RT7mvu43Izp0rHhKq4wR4kt0TDfzHvB2NGMR+fxO5UM="; url = "https://forge.soutade.fr/soutade/updfparser/archive/${rev}.tar.gz"; + hash = "sha256-HD73WGZ4e/3T7vQmwU/lRADtvsInFG62uqvJmF773Rk="; }; makeFlags = [ From 6325ef64df2065516dc7f1479298214c2fa3bae3 Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Tue, 27 May 2025 14:17:36 +0200 Subject: [PATCH 04/82] libgourou: Update src URL --- pkgs/by-name/li/libgourou/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/by-name/li/libgourou/package.nix b/pkgs/by-name/li/libgourou/package.nix index cc669b512030..7956656e104c 100644 --- a/pkgs/by-name/li/libgourou/package.nix +++ b/pkgs/by-name/li/libgourou/package.nix @@ -15,9 +15,8 @@ stdenv.mkDerivation rec { version = "0.8.2"; src = fetchzip { - url = "https://indefero.soutade.fr/p/libgourou/source/download/v${version}/"; sha256 = "sha256-adkrvBCgN07Ir+J3JFCy+X9p9609lj1w8nElrlHXTxc"; - extension = "zip"; + url = "https://forge.soutade.fr/soutade/libgourou/archive/v${version}.tar.gz"; }; postPatch = '' From 64aa7ba7f0721c42d67aa55e2066e8d1d808772d Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Tue, 27 May 2025 14:17:55 +0200 Subject: [PATCH 05/82] libgourou: 0.8.2 -> 0.8.7 --- pkgs/by-name/li/libgourou/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/li/libgourou/package.nix b/pkgs/by-name/li/libgourou/package.nix index 7956656e104c..f55f52edd4b4 100644 --- a/pkgs/by-name/li/libgourou/package.nix +++ b/pkgs/by-name/li/libgourou/package.nix @@ -12,11 +12,11 @@ stdenv.mkDerivation rec { pname = "libgourou"; - version = "0.8.2"; + version = "0.8.7"; src = fetchzip { - sha256 = "sha256-adkrvBCgN07Ir+J3JFCy+X9p9609lj1w8nElrlHXTxc"; url = "https://forge.soutade.fr/soutade/libgourou/archive/v${version}.tar.gz"; + hash = "sha256-Tkft/pe3lH07pmyVibTEutIIvconUWDH1ZVN3qV4sSY="; }; postPatch = '' From 6617c167f75c5caf1707daff993f006c4e20b7dc Mon Sep 17 00:00:00 2001 From: nat Date: Sat, 31 May 2025 02:05:50 +0200 Subject: [PATCH 06/82] nixos/monero: use lib.getExe --- nixos/modules/services/networking/monero.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/networking/monero.nix b/nixos/modules/services/networking/monero.nix index 1ef0c696e2c8..f7351203b13d 100644 --- a/nixos/modules/services/networking/monero.nix +++ b/nixos/modules/services/networking/monero.nix @@ -225,7 +225,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 From 1ffc904284479f89de42cb79f279400086113d45 Mon Sep 17 00:00:00 2001 From: nat Date: Sat, 31 May 2025 13:02:50 +0200 Subject: [PATCH 07/82] nixos/monero: add an option to use ip ban-list --- nixos/modules/services/networking/monero.nix | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nixos/modules/services/networking/monero.nix b/nixos/modules/services/networking/monero.nix index f7351203b13d..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; From 74be6ce921c16b52aac0460b0735bbb9f948c4ed Mon Sep 17 00:00:00 2001 From: fossdd Date: Sat, 31 May 2025 16:58:04 +0200 Subject: [PATCH 08/82] pmbootstrap: 3.4.0 -> 3.4.2 https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/tags/3.4.1 https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/tags/3.4.2 --- pkgs/by-name/pm/pmbootstrap/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From b98e7bb95a1e66d951a9c517cadb151694358bad Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Fri, 30 May 2025 18:55:46 +0200 Subject: [PATCH 09/82] OWNERS: simplify workflow/ci owners The current setup causes the Security team and the other owners of .github/workflows to **not** be pinged for the check-format/codeowners-v2/nixpkgs-vet workflows. This was highly likely unintended when adding those additional rules, so removing them. Also, we have some owners looking after `workflows/`, but not `ci/` - and some the other way around. This doesn't make much sense to me, since both parts depend on each other very much. --- ci/OWNERS | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) 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 From c89beaa4a32d080a240abb822817c97474cb7b1e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 00:38:45 +0000 Subject: [PATCH 10/82] slurm: 24.11.5.1 -> 25.05.0.1 --- pkgs/by-name/sl/slurm/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 = [ From 48746c5692e8a3f3eb5d130296bed89a1011ba7c Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sat, 31 May 2025 19:11:44 -0700 Subject: [PATCH 11/82] maintainers: update numinit's keys Adding another key that travels with me instead of staying put. Touch authentication is enabled on both keys. The fingerprint is: C48F 475F 30A9 B192 3213 D5D5 C6E2 4809 77B2 F2F4 This commit is signed by the new key, which is signed by my main key, which is already listed: New: https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0xc6e2480977b2f2f4 Main: https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0x5c3eb94d198f1491 --- maintainers/maintainer-list.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 6f36850b0e60..6568e2fa915a 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -18094,8 +18094,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"; } ]; From 198bdbc88819d2d5f8e8fde923ce2ec6b5f09b17 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 11:40:38 +0000 Subject: [PATCH 12/82] mapproxy: 4.1.1 -> 4.1.2 --- pkgs/by-name/ma/mapproxy/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 = '' From 24f99aa552007a3ae0748f80bf51c37e21ec9d3b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 13:37:49 +0000 Subject: [PATCH 13/82] ente-auth: 4.3.5 -> 4.3.6 --- pkgs/by-name/en/ente-auth/git-hashes.json | 1 - pkgs/by-name/en/ente-auth/package.nix | 4 +- pkgs/by-name/en/ente-auth/pubspec.lock.json | 111 ++++++++++---------- 3 files changed, 57 insertions(+), 59 deletions(-) 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" } } From 1e76f45c065ed2216014aed09d71c86e93ac78a8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 14:40:15 +0000 Subject: [PATCH 14/82] python3Packages.xdis: 6.1.3 -> 6.1.4 --- pkgs/development/python-modules/xdis/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 = [ From 256b7b3e6a449fd859fb36531dbab7601b5558f9 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 17:18:02 +0000 Subject: [PATCH 15/82] markdownlint-cli2: 0.17.2 -> 0.18.1 --- pkgs/by-name/ma/markdownlint-cli2/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 = [ From 9e7489622bde7abd10927289b81fe990262c8ee1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 19:10:41 +0000 Subject: [PATCH 16/82] cargo-nextest: 0.9.95 -> 0.9.97 --- pkgs/by-name/ca/cargo-nextest/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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" From 3e5e1cf05e4ebeb2280f33088c7221bcb42508a5 Mon Sep 17 00:00:00 2001 From: Patrizio Bekerle Date: Sun, 1 Jun 2025 21:40:00 +0200 Subject: [PATCH 17/82] qownnotes: 25.5.10 -> 25.6.0 Signed-off-by: Patrizio Bekerle --- pkgs/by-name/qo/qownnotes/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 = [ From fa15f5c9a586fcd70f0d573d0a755cb077c78c2f Mon Sep 17 00:00:00 2001 From: Gliczy <129636582+Gliczy@users.noreply.github.com> Date: Sun, 1 Jun 2025 23:37:57 +0200 Subject: [PATCH 18/82] swayimg: 4.0 -> 4.1 --- pkgs/by-name/sw/swayimg/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; From 68c76b145720fc6ed7a688c31ee52a1000a1ad46 Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Mon, 2 Jun 2025 07:39:20 +0800 Subject: [PATCH 19/82] pb: use finalAttrs --- pkgs/by-name/pb/pb/package.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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"; }; -} +}) From bc45e0df13f36e7878164cf19c6de275e91663f6 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 02:05:17 +0200 Subject: [PATCH 20/82] maintainers: add b-m-f Became maintainer of nixos/jupyter in https://github.com/NixOS/nixpkgs/pull/367106. This error was not caught since meta.maintainer in nixos modules are not at the time of writing evaluated --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index d2f8aa0900da..66b8a51551ba 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"; From 1aa9a9b385329ae1d2ccf4a7eaf15a2d73783f67 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 00:28:07 +0000 Subject: [PATCH 21/82] xdg-terminal-exec: 0.12.3 -> 0.12.4 --- pkgs/by-name/xd/xdg-terminal-exec/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 ]; From 9781093779fea7d33600747de99351bb9ca719ee Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 00:36:13 +0000 Subject: [PATCH 22/82] changie: 1.21.1 -> 1.22.0 --- pkgs/by-name/ch/changie/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From 0fc2ab2e0e15e6f0917363de28579eb2dd959f35 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 02:48:30 +0200 Subject: [PATCH 23/82] nixos/vivid: correct meta.maintainer `lib.maintainers.blackheaven` does not exist, but the github id matches `lib.maintainers.gdifolco` which corresponds with the author of https://github.com/NixOS/nixpkgs/pull/345656 --- nixos/modules/programs/vivid.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ]; } From 8b3517b8f4a45c11efbab756800875e8e0d0c15e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 01:40:05 +0000 Subject: [PATCH 24/82] unstructured-api: 0.0.82 -> 0.0.85 --- pkgs/by-name/un/unstructured-api/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 ]; From fc7dcbfe5b6be4abace94daac204b9da56d27909 Mon Sep 17 00:00:00 2001 From: Guy Chronister Date: Mon, 26 May 2025 16:36:32 +0000 Subject: [PATCH 25/82] itamae: update all gems to latest versions --- pkgs/by-name/it/itamae/Gemfile.lock | 6 +++--- pkgs/by-name/it/itamae/gemset.nix | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) 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" ]; From 0b572db5dc48798d148beb5d7bba321c8f3aaae6 Mon Sep 17 00:00:00 2001 From: Guy Chronister Date: Fri, 23 May 2025 13:18:26 +0000 Subject: [PATCH 26/82] fastlane: 2.227.1 -> 2.227.2 --- pkgs/by-name/fa/fastlane/Gemfile.lock | 16 +++++++------- pkgs/by-name/fa/fastlane/gemset.nix | 32 +++++++++++++-------------- 2 files changed, 24 insertions(+), 24 deletions(-) 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 = [ From 66f7fabe5910d1f3cbb5ae43e7e7a58153a8d048 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 02:49:24 +0000 Subject: [PATCH 27/82] python3Packages.pymilvus: 2.5.9 -> 2.5.10 --- pkgs/development/python-modules/pymilvus/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 = [ From 0656fbc43f9b36c62bc4ffd6b4c845d3b48fc19c Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 02:54:13 +0000 Subject: [PATCH 28/82] yubikey-manager: 5.6.1 -> 5.7.0 --- pkgs/by-name/yu/yubikey-manager/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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; From 38479681c0a9cc42ac75220d061338b7f46980c5 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 03:11:07 +0000 Subject: [PATCH 29/82] bpftrace: 0.23.3 -> 0.23.4 --- pkgs/by-name/bp/bpftrace/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; [ From 245d42430b2ee14f9e1aae77f94c05adebd68588 Mon Sep 17 00:00:00 2001 From: Michael Daniels Date: Sun, 1 Jun 2025 23:18:42 -0400 Subject: [PATCH 30/82] github-copilot-cli: drop GitHub has ended this "technical preview", and the package on npm is now unmaintained. But this feature remains actively developed in the "gh-copilot" package. So I direct users there when throwing an exception. (I don't just alias, because the shell commands are different.) Link: https://githubnext.com/projects/copilot-cli/ --- .../gi/github-copilot-cli/package-lock.json | 3329 ----------------- .../by-name/gi/github-copilot-cli/package.nix | 32 - pkgs/top-level/aliases.nix | 1 + 3 files changed, 1 insertion(+), 3361 deletions(-) delete mode 100644 pkgs/by-name/gi/github-copilot-cli/package-lock.json delete mode 100644 pkgs/by-name/gi/github-copilot-cli/package.nix 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/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 From c7e92d125ea8c57c9f630bb28d2221f6c40b60d4 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 03:36:22 +0000 Subject: [PATCH 31/82] shopware-cli: 0.6.1 -> 0.6.3 --- pkgs/by-name/sh/shopware-cli/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 = [ From 545535eb5c49af73789d58407fdf805723c4b005 Mon Sep 17 00:00:00 2001 From: Gliczy <129636582+Gliczy@users.noreply.github.com> Date: Mon, 2 Jun 2025 06:01:26 +0200 Subject: [PATCH 32/82] proton-ge-bin: GE-Proton10-3 -> GE-Proton10-4 --- pkgs/by-name/pr/proton-ge-bin/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; From 3cc2f5fd4b6217a4e847cac5a44be1dc7c4c59a3 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 06:16:01 +0200 Subject: [PATCH 33/82] treewide: substitute finalAttrs.pname for strings --- pkgs/by-name/_7/_7zz/package.nix | 2 +- pkgs/by-name/as/as31/package.nix | 2 +- pkgs/by-name/bi/bind/package.nix | 2 +- pkgs/by-name/co/coal/package.nix | 2 +- pkgs/by-name/da/davis/package.nix | 4 ++-- pkgs/by-name/di/dirdiff/package.nix | 2 +- pkgs/by-name/ef/efibooteditor/package.nix | 2 +- pkgs/by-name/ex/example-robot-data/package.nix | 2 +- pkgs/by-name/fc/fcitx5-material-color/package.nix | 2 +- pkgs/by-name/fi/figma-linux/package.nix | 2 +- pkgs/by-name/fm/fmi-reference-fmus/package.nix | 2 +- pkgs/by-name/ge/genesys/package.nix | 2 +- pkgs/by-name/go/go-jsonnet/package.nix | 2 +- pkgs/by-name/ho/hottext/package.nix | 6 +++--- pkgs/by-name/id/ideamaker/package.nix | 14 +++++++------- pkgs/by-name/id/idnkit/package.nix | 2 +- pkgs/by-name/ir/irpf/package.nix | 10 +++++----- pkgs/by-name/ke/keepass/package.nix | 2 +- pkgs/by-name/li/libconfig/package.nix | 2 +- pkgs/by-name/mo/movim/package.nix | 2 +- pkgs/by-name/my/mya/package.nix | 4 ++-- pkgs/by-name/ne/netgen/package.nix | 10 +++++----- pkgs/by-name/oa/oakctl/package.nix | 2 +- pkgs/by-name/oc/ocelot-desktop/package.nix | 8 ++++---- pkgs/by-name/pa/payload_dumper/package.nix | 2 +- pkgs/by-name/pi/picolibc/package.nix | 2 +- pkgs/by-name/pi/pixelfed/package.nix | 2 +- pkgs/by-name/sc/scmutils/package.nix | 2 +- pkgs/by-name/sn/snes9x/package.nix | 4 ++-- pkgs/by-name/sr/srb2/package.nix | 4 ++-- pkgs/by-name/sr/srb2kart/package.nix | 4 ++-- pkgs/by-name/st/stardust/package.nix | 2 +- pkgs/by-name/st/stegsolve/package.nix | 4 ++-- pkgs/by-name/st/stretchly/package.nix | 12 ++++++------ pkgs/by-name/st/stylelint-lsp/package.nix | 8 ++++---- pkgs/by-name/st/styluslabs-write/package.nix | 4 ++-- pkgs/by-name/te/texpresso/package.nix | 2 +- pkgs/by-name/ti/ticktick/package.nix | 10 +++++----- pkgs/by-name/tt/ttaenc/package.nix | 4 ++-- pkgs/by-name/uf/ufetch/package.nix | 4 ++-- pkgs/by-name/un/untie/package.nix | 2 +- pkgs/by-name/wh/whatsie/package.nix | 6 +++--- pkgs/by-name/xe/xeus/package.nix | 2 +- pkgs/by-name/zc/zcfan/package.nix | 2 +- pkgs/by-name/zs/zsh-forgit/package.nix | 2 +- 45 files changed, 87 insertions(+), 87 deletions(-) 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 [ From b7f032c04c1b9a72eabea37457cfaf34bfa09940 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 07:01:06 +0200 Subject: [PATCH 34/82] audio-sharing: inherit pname+version --- pkgs/by-name/au/audio-sharing/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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="; }; From 9797f62b35b97f72d87d36d3b88d61d5c94577ee Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 07:01:06 +0200 Subject: [PATCH 35/82] fretboard: inherit pname+version --- pkgs/by-name/fr/fretboard/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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="; }; From 2199079b1002a1f56656fc741d78f09f7812f61c Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 07:01:06 +0200 Subject: [PATCH 36/82] furtherance: inherit pname+version --- pkgs/by-name/fu/furtherance/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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="; }; From 4b1f1be69a7782e22e4033330ef247077c1e7956 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 07:01:06 +0200 Subject: [PATCH 37/82] gnome-obfuscate: inherit pname+version --- pkgs/by-name/gn/gnome-obfuscate/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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="; }; From b2568b752824ab9e3c032cb8d70e249add212161 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 07:01:07 +0200 Subject: [PATCH 38/82] lorem: inherit pname+version --- pkgs/by-name/lo/lorem/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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="; }; From 30f4d61c71cc37b81e43f73b68921396e5ec02a8 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Mon, 2 Jun 2025 07:01:07 +0200 Subject: [PATCH 39/82] rustls-ffi: inherit pname+version --- pkgs/by-name/ru/rustls-ffi/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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="; }; From a5eecde98db9fc944c2493b823f3188189d2ac9b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 05:52:38 +0000 Subject: [PATCH 40/82] tasks: 0.1.1 -> 0.2.0 --- pkgs/by-name/ta/tasks/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From 2cac66e0898db1a7c229cdbfda6c845565ba1904 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 06:43:47 +0000 Subject: [PATCH 41/82] sigil: 2.4.2 -> 2.5.1 --- pkgs/by-name/si/sigil/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 ]; From 846f227fd63000bd045e99651c4acb16d142039c Mon Sep 17 00:00:00 2001 From: Flo Date: Mon, 2 Jun 2025 08:44:05 +0200 Subject: [PATCH 42/82] maintainers: add max06 (#413015) --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index d2f8aa0900da..17b80374239c 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -15567,6 +15567,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"; From cdd4fbac3d7c2d31f083389c56884def06b6ede6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Zimmermann?= Date: Wed, 28 May 2025 11:10:16 +0200 Subject: [PATCH 43/82] coqPackages.vscoq-language-server: 2.2.5 -> 2.2.6 To be compatible with the update of the extension in #410879. --- .../coq-modules/vscoq-language-server/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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); From fca2d96340907789abc5db1ab095742e36428187 Mon Sep 17 00:00:00 2001 From: Michael Adler Date: Tue, 4 Feb 2025 10:52:55 +0100 Subject: [PATCH 44/82] kconfiglib: add patch to parse 'modules' option --- ...mentary-support-for-modules-property.patch | 41 +++++++++++++++++++ .../python-modules/kconfiglib/default.nix | 5 +++ 2 files changed, 46 insertions(+) create mode 100644 pkgs/development/python-modules/kconfiglib/0001-Add-rudimentary-support-for-modules-property.patch 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; From f87dac4be32235f7a7409eaf3faaa10213264e34 Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Thu, 29 May 2025 18:23:26 +0200 Subject: [PATCH 45/82] workflows/{check-shell,lib-tests}: use nixpks CI cachix cache Any change to shell.nix or ci/ currently needs to rebuild treefmt on 4 systems from scratch. We can avoid that by using the existing cachix cache. Adding the cache to lib-tests won't do much on it's own, yet, but it will with the next commit. --- .github/workflows/check-shell.yml | 6 ++++++ .github/workflows/lib-tests.yml | 6 ++++++ 2 files changed, 12 insertions(+) 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 From a7f4e0f9ae31e5ec90dd6ca7d5465d4ed97ee099 Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Thu, 29 May 2025 18:30:34 +0200 Subject: [PATCH 46/82] lib/tests: avoid full rebuild when only maintainers change The vast majority of CI jobs to build the lib tests are caused by changes in the maintainer list. In this case, we currently run the full test-suite which takes 3-4 minutes. By moving the maintainers and teams tests out of the test-with-nix file, we save almost all of that. Building only those two tests on a change is almost instant. This only works, because we previously enabled cachix for the workflow. Note, that these tests are not actually run with both nix versions, even though they were listed in the "test with specific nix version" file. That's because we only differ in the nix version run *inside* the sandbox, but not doing the outer build. Since this file seems to be re-used by NixOS/nix' CI, this is technically a small loss in coverage for that repo, but nixpkgs CI considerations outweigh that. But because of this, I left the other non-nix-version-specific tests in that file. --- lib/tests/maintainers.nix | 2 +- lib/tests/release.nix | 11 ++++++++++- lib/tests/test-with-nix.nix | 8 -------- 3 files changed, 11 insertions(+), 10 deletions(-) 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; }) From 16696db425184692aec2158eb5ec96917bbd7a8d Mon Sep 17 00:00:00 2001 From: liberodark Date: Mon, 2 Jun 2025 09:15:42 +0200 Subject: [PATCH 47/82] firefox-bin: remove with lib; --- .../networking/browsers/firefox-bin/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 ]; From f42c9668cb15b736780fe39ab44d0b0002e072d7 Mon Sep 17 00:00:00 2001 From: liberodark Date: Mon, 2 Jun 2025 09:19:50 +0200 Subject: [PATCH 48/82] avrdudess: use finalAttrs pattern, cleanup --- pkgs/by-name/av/avrdudess/package.nix | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) 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"; }; -} +}) From 5db5bd097c8602f5362fea980ff1ce63cbd6391e Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 10:49:45 +0200 Subject: [PATCH 49/82] nixos/taler: explicitly specify configFile else the executables fail to work. --- nixos/modules/services/finance/taler/exchange.nix | 6 ++++-- nixos/modules/services/finance/taler/merchant.nix | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/finance/taler/exchange.nix b/nixos/modules/services/finance/taler/exchange.nix index 16428a43d78d..4a940cddb104 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 { @@ -140,14 +142,14 @@ in 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}"; + GRANT USAGE ON ALL SEQUENCES IN SCHEMA exchange TO "taler-exchange-${name}"; '')) lib.concatStrings ] ); in '' - ${lib.getExe' cfg.package "taler-exchange-dbinit"} + ${lib.getExe' cfg.package "taler-exchange-dbinit"} -c ${configFile} psql -U taler-exchange-httpd -f ${dbScript} ''; }; diff --git a/nixos/modules/services/finance/taler/merchant.nix b/nixos/modules/services/finance/taler/merchant.nix index e5a2f2ce5d10..1426882ac050 100644 --- a/nixos/modules/services/finance/taler/merchant.nix +++ b/nixos/modules/services/finance/taler/merchant.nix @@ -19,6 +19,8 @@ let "depositcheck" "exchange" ]; + + configFile = config.environment.etc."taler/taler.conf".source; in { imports = [ @@ -95,13 +97,13 @@ in 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}"; + GRANT USAGE ON ALL SEQUENCES IN SCHEMA merchant TO "taler-merchant-${name}"; '') servicesDB ) ); in '' - ${lib.getExe' cfg.package "taler-merchant-dbinit"} + ${lib.getExe' cfg.package "taler-merchant-dbinit"} -c ${configFile} psql -U taler-${talerComponent}-httpd -f ${dbScript} ''; }; From 85b6430face1be77a737813a82478d6485bb596c Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:03:28 +0200 Subject: [PATCH 50/82] nixos/taler: use the same dynamicUser for services which makes managing the database much simpler. --- .../modules/services/finance/taler/common.nix | 5 +++-- .../services/finance/taler/exchange.nix | 22 +++---------------- .../services/finance/taler/merchant.nix | 19 +++------------- 3 files changed, 9 insertions(+), 37 deletions(-) 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 4a940cddb104..2b5861608a09 100644 --- a/nixos/modules/services/finance/taler/exchange.nix +++ b/nixos/modules/services/finance/taler/exchange.nix @@ -133,24 +133,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 ALL SEQUENCES IN SCHEMA exchange TO "taler-exchange-${name}"; - '')) - lib.concatStrings - ] - ); - in - '' - ${lib.getExe' cfg.package "taler-exchange-dbinit"} -c ${configFile} - 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 1426882ac050..a541ba2d5b25 100644 --- a/nixos/modules/services/finance/taler/merchant.nix +++ b/nixos/modules/services/finance/taler/merchant.nix @@ -90,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 ALL SEQUENCES IN SCHEMA merchant TO "taler-merchant-${name}"; - '') servicesDB - ) - ); - in - '' - ${lib.getExe' cfg.package "taler-merchant-dbinit"} -c ${configFile} - psql -U taler-${talerComponent}-httpd -f ${dbScript} - ''; + systemd.services."taler-${talerComponent}-dbinit".script = '' + ${lib.getExe' cfg.package "taler-merchant-dbinit"} -c ${configFile} + ''; }; } From 58fca012553b6dba1c32c1325c973ea43c31fe03 Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 10:33:54 +0200 Subject: [PATCH 51/82] nixos/taler: update exchange settings adding new and removing deprecated ones. --- .../modules/services/finance/taler/exchange.nix | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/finance/taler/exchange.nix b/nixos/modules/services/finance/taler/exchange.nix index 2b5861608a09..21e10d0f2002 100644 --- a/nixos/modules/services/finance/taler/exchange.nix +++ b/nixos/modules/services/finance/taler/exchange.nix @@ -46,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" ]; From 276fca32650d0c7cfeb13a7429af05d9f3e9c6bf Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 10:44:01 +0200 Subject: [PATCH 52/82] nixos/taler: add exchangekeyupdate service whose role is to sync Taler exchanges' information with the merchant. --- nixos/modules/services/finance/taler/merchant.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/finance/taler/merchant.nix b/nixos/modules/services/finance/taler/merchant.nix index a541ba2d5b25..72b4a2a0b3c0 100644 --- a/nixos/modules/services/finance/taler/merchant.nix +++ b/nixos/modules/services/finance/taler/merchant.nix @@ -17,7 +17,7 @@ let "webhook" "wirewatch" "depositcheck" - "exchange" + "exchangekeyupdate" ]; configFile = config.environment.etc."taler/taler.conf".source; From e04f8bb993051a831a77ddbff1326cf26e610801 Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:10:14 +0200 Subject: [PATCH 53/82] nixos/libeufin: update BASE_URL which is now required to have a valid protocol. --- nixos/modules/services/finance/libeufin/common.nix | 3 ++- nixos/tests/taler/common/nodes.nix | 2 +- nixos/tests/taler/common/scripts.nix | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) 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/tests/taler/common/nodes.nix b/nixos/tests/taler/common/nodes.nix index 3e8b81ed5179..fcfcb6d6648f 100644 --- a/nixos/tests/taler/common/nodes.nix +++ b/nixos/tests/taler/common/nodes.nix @@ -103,7 +103,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..98487c76ccf6 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 From 1741d8abaa3ced6eb823999d5af3cf734fb91d6e Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:37:25 +0200 Subject: [PATCH 54/82] tests/taler: authenticate users with tokens --- nixos/tests/taler/common/scripts.nix | 18 ++++++++++++++++-- nixos/tests/taler/tests/basic.nix | 20 +++++++++++++++----- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/nixos/tests/taler/common/scripts.nix b/nixos/tests/taler/common/scripts.nix index 98487c76ccf6..c074e9b03c6c 100644 --- a/nixos/tests/taler/common/scripts.nix +++ b/nixos/tests/taler/common/scripts.nix @@ -68,6 +68,20 @@ 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"] + def verify_balance(balanceWanted: str): """Compare Taler CLI wallet balance with expected amount""" @@ -84,14 +98,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/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index 3eeb50b04fa9..83c9e90cffe5 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -78,6 +78,9 @@ import ../../make-test-python.nix ( exchange.start() exchange.wait_for_open_port(8081) + # Create access token for exchange + accessTokenExchange = create_token(exchange, "exchange", "exchange") + with subtest("Set up exchange"): exchange.wait_until_succeeds("taler-exchange-offline download sign upload") @@ -96,12 +99,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" }, @@ -150,6 +155,8 @@ import ../../make-test-python.nix ( 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 +171,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'" @@ -176,7 +183,7 @@ import ../../make-test-python.nix ( wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange http://exchange:8081/") succeed(client, [ "curl -X POST", - "-u ${TUSER}:${TPASS}", + f"-H 'Authorization: Bearer {accessTokenUser}'", "-H 'Content-Type: application/json'", f"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals/{withdrawal["withdrawal_id"]}/confirm'" ]) @@ -231,14 +238,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 +274,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) ''; } ) From 21ad6f743cf6443686e8da067c168de0a4fa63a7 Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:42:02 +0200 Subject: [PATCH 55/82] tests/taler: create exchange credentials at runtime Basic auth is deprecated, so exchange credentials must be set at runtime because it requires a token from the bank. --- nixos/tests/taler/common/nodes.nix | 7 ++++++- nixos/tests/taler/common/scripts.nix | 11 +++++++++++ nixos/tests/taler/conf/taler-accounts.conf | 6 ------ nixos/tests/taler/tests/basic.nix | 6 ++++++ 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/nixos/tests/taler/common/nodes.nix b/nixos/tests/taler/common/nodes.nix index fcfcb6d6648f..2b9a9ea6a878 100644 --- a/nixos/tests/taler/common/nodes.nix +++ b/nixos/tests/taler/common/nodes.nix @@ -55,7 +55,12 @@ 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; diff --git a/nixos/tests/taler/common/scripts.nix b/nixos/tests/taler/common/scripts.nix index c074e9b03c6c..cad9935fc98a 100644 --- a/nixos/tests/taler/common/scripts.nix +++ b/nixos/tests/taler/common/scripts.nix @@ -83,6 +83,17 @@ in 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""" balance = wallet_cli("balance --json") 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 83c9e90cffe5..4dc750adc45a 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -76,11 +76,17 @@ 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") From 12fa6482313a27ee3e374cb95f39fc411d4bb9e0 Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:43:36 +0200 Subject: [PATCH 56/82] tests/taler: update merchant instance's endpoint --- nixos/tests/taler/tests/basic.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nixos/tests/taler/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index 4dc750adc45a..64d35ed2ecc3 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -139,7 +139,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, [ @@ -155,7 +155,7 @@ import ../../make-test-python.nix ( "next_restock": { "t_s": "never" } }' """, - "-sSfL 'http://merchant:8083/private/products'" + "-sSfL 'http://merchant:8083/instances/default/private/products'" ]) @@ -214,7 +214,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"] @@ -224,7 +224,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") From 4ea47f35639a08e80c2f37ce8307cdb7978e9057 Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:46:43 +0200 Subject: [PATCH 57/82] tests/taler: change bank admin password which is now required to be at least 8 chars long. --- nixos/tests/taler/tests/basic.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos/tests/taler/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index 64d35ed2ecc3..28932f20a8e2 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -35,13 +35,13 @@ import ../../make-test-python.nix ( inherit (cfgNodes) CURRENCY FIAT_CURRENCY; inherit (cfgScripts) commonScripts; - bankConfig = nodes.bank.config.environment.etc."libeufin/libeufin.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"; From f73d14864524bd97b508b0cd653552154f2ff685 Mon Sep 17 00:00:00 2001 From: eljamm Date: Thu, 29 May 2025 11:58:09 +0200 Subject: [PATCH 58/82] tests/taler: pass config to taler-exchange-offline else it doesn't work properly. --- nixos/tests/taler/tests/basic.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/nixos/tests/taler/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index 28932f20a8e2..a27e80357a26 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -35,6 +35,7 @@ import ../../make-test-python.nix ( inherit (cfgNodes) CURRENCY FIAT_CURRENCY; inherit (cfgScripts) commonScripts; + 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; @@ -89,13 +90,15 @@ import ../../make-test-python.nix ( 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" "${CURRENCY}:0" upload') + exchange.succeed('taler-exchange-offline -c "${configFile}" global-fee now "${CURRENCY}:0" "${CURRENCY}:0" "${CURRENCY}:0" 1h 6a 0 upload') # Verify that exchange keys exist From c1fe104a778c25eab8a1ec9e65be0fc28bb67da0 Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 09:42:20 +0200 Subject: [PATCH 59/82] tests/taler: adjust currency wire fees because making a withdrawal fails if the fees are 0, for some reason. --- nixos/tests/taler/tests/basic.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nixos/tests/taler/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index a27e80357a26..c8b860701506 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -97,8 +97,8 @@ import ../../make-test-python.nix ( 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" "${CURRENCY}:0" upload') - exchange.succeed('taler-exchange-offline -c "${configFile}" global-fee now "${CURRENCY}:0" "${CURRENCY}:0" "${CURRENCY}:0" 1h 6a 0 upload') + 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 @@ -204,7 +204,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( From b24910bccf3e1ee6a85b5ac1ff32fbf525dcfa81 Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 10:00:41 +0200 Subject: [PATCH 60/82] tests/taler: fix currency withdrawal confirmation --- nixos/tests/taler/tests/basic.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nixos/tests/taler/tests/basic.nix b/nixos/tests/taler/tests/basic.nix index c8b860701506..ec9f592269a9 100644 --- a/nixos/tests/taler/tests/basic.nix +++ b/nixos/tests/taler/tests/basic.nix @@ -189,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", 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'" ]) From 3213654cf8a9de0d32bf54823d30050b80ccdd80 Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 10:27:36 +0200 Subject: [PATCH 61/82] tests/taler: update exchange node config --- nixos/tests/taler/common/nodes.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nixos/tests/taler/common/nodes.nix b/nixos/tests/taler/common/nodes.nix index 2b9a9ea6a878..7da90ea528cb 100644 --- a/nixos/tests/taler/common/nodes.nix +++ b/nixos/tests/taler/common/nodes.nix @@ -65,9 +65,12 @@ rec { 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/"; }; From d062164ed8091e9b0658dfa17f185a85cd67c8e5 Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 10:52:56 +0200 Subject: [PATCH 62/82] taler-merchant: work around expected paths Some services expect the `sql` and `templates` directories to be available under different paths than what's outputted. --- pkgs/by-name/ta/taler-merchant/package.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/by-name/ta/taler-merchant/package.nix b/pkgs/by-name/ta/taler-merchant/package.nix index fc5c87e56816..d6b620dbaf18 100644 --- a/pkgs/by-name/ta/taler-merchant/package.nix +++ b/pkgs/by-name/ta/taler-merchant/package.nix @@ -82,6 +82,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; From 1dd75bd295434483652d7b72971e6c32b201b0fd Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 10:54:48 +0200 Subject: [PATCH 63/82] taler-wallet-core: patch sqlite-helper script shebangs --- pkgs/by-name/ta/taler-wallet-core/package.nix | 5 +++++ 1 file changed, 5 insertions(+) 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 = { From 1c87f40c6795e29fbf85f0c916bb60615e811e7e Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 11:15:22 +0200 Subject: [PATCH 64/82] taler-{exchange,merchant}: add passthru.tests --- pkgs/by-name/ta/taler-exchange/package.nix | 3 +++ pkgs/by-name/ta/taler-merchant/package.nix | 3 +++ 2 files changed, 6 insertions(+) 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 d6b620dbaf18..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: { @@ -98,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 = '' From db0b526f9698cb7db9852b73d949bb63f22c8edd Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 30 May 2025 11:36:50 +0200 Subject: [PATCH 65/82] doc/rl-2505: add GNU Taler entry --- doc/release-notes/rl-2505.section.md | 4 ++++ 1 file changed, 4 insertions(+) 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. From 7da497a91a1feb48bdaf82dc0bd1263324471ec8 Mon Sep 17 00:00:00 2001 From: Ethan Carter Edwards Date: Fri, 30 May 2025 19:12:16 -0400 Subject: [PATCH 66/82] python3Packages.wokkel: init at 18.0.0 NGI project. Signed-off-by: Ethan Carter Edwards --- .../wokkel/0001-Remove-py2-compat.patch | 2671 +++++++++++++++++ .../python-modules/wokkel/default.nix | 72 + pkgs/top-level/python-packages.nix | 2 + 3 files changed, 2745 insertions(+) create mode 100644 pkgs/development/python-modules/wokkel/0001-Remove-py2-compat.patch create mode 100644 pkgs/development/python-modules/wokkel/default.nix 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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 89212361ac32..3aad48eeb4c9 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 { }; From 530b8475c05d5d61125966de20bc176605363870 Mon Sep 17 00:00:00 2001 From: Ethan Carter Edwards Date: Fri, 30 May 2025 21:07:39 -0400 Subject: [PATCH 67/82] lillydap: init at 1.0.1 NGI Project Signed-off-by: Ethan Carter Edwards --- pkgs/by-name/li/lillydap/package.nix | 46 ++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 pkgs/by-name/li/lillydap/package.nix 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; + }; +}) From 5c75f447c9e3d5ab21a7414b9edd2f929684be38 Mon Sep 17 00:00:00 2001 From: Ethan Carter Edwards Date: Fri, 30 May 2025 21:08:06 -0400 Subject: [PATCH 68/82] arpa2-leaf: init at 0.2 NGI project. Signed-off-by: Ethan Carter Edwards --- pkgs/by-name/ar/arpa2-leaf/package.nix | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pkgs/by-name/ar/arpa2-leaf/package.nix 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; + }; +}) From f04e4b24adac2b9817714d6ae83d8a9bc605b499 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 08:16:43 +0000 Subject: [PATCH 69/82] libretro.bsnes: 0-unstable-2025-05-16 -> 0-unstable-2025-05-30 --- pkgs/applications/emulators/libretro/cores/bsnes.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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"; From 2dedc5349140ad843e7d0f6cf64b08db043c2eb4 Mon Sep 17 00:00:00 2001 From: Flo Date: Sun, 1 Jun 2025 21:58:13 +0200 Subject: [PATCH 70/82] vivaldi: add max06 as maintainer --- pkgs/by-name/vi/vivaldi/package.nix | 1 + 1 file changed, 1 insertion(+) 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 = [ From 1890014066a0e5a6c819ee5792f51ad9d9fe34b9 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 16 May 2025 17:32:37 +0200 Subject: [PATCH 71/82] galene: Extend maintenance to NGI team --- pkgs/by-name/ga/galene/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ga/galene/package.nix b/pkgs/by-name/ga/galene/package.nix index 889521626dfc..a5481dd46dba 100644 --- a/pkgs/by-name/ga/galene/package.nix +++ b/pkgs/by-name/ga/galene/package.nix @@ -39,6 +39,7 @@ buildGoModule rec { 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 From d53d87f8abd318dcab8f03168f63e56d63fe619d Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Sun, 27 Apr 2025 12:53:55 +0200 Subject: [PATCH 72/82] galene-stt: init at 0.1 --- pkgs/by-name/ga/galene-stt/package.nix | 91 ++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 pkgs/by-name/ga/galene-stt/package.nix 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; + }; +}) From 4bd4c663b11d645322db7b16be93b350ae6694bd Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Sun, 27 Apr 2025 13:24:40 +0200 Subject: [PATCH 73/82] galene-ldap: init at 0.2 --- pkgs/by-name/ga/galene-ldap/package.nix | 73 +++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 pkgs/by-name/ga/galene-ldap/package.nix 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; + }; +}) From edf22f9bc4f02dbbfa08e93ce5303bc087117f0f Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Sun, 27 Apr 2025 14:03:09 +0200 Subject: [PATCH 74/82] galene-file-transfer: init at 0.2 --- .../ga/galene-file-transfer/package.nix | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 pkgs/by-name/ga/galene-file-transfer/package.nix 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..08776012c811 --- /dev/null +++ b/pkgs/by-name/ga/galene-file-transfer/package.nix @@ -0,0 +1,73 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + gitUpdater, + 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 = { + 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; + }; +}) From d709875eb3b15eeaf495dc209a390f8294ec6dc3 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Thu, 1 May 2025 21:14:22 +0200 Subject: [PATCH 75/82] nixosTests.galene.basic: init --- nixos/tests/all-tests.nix | 1 + nixos/tests/galene.nix | 97 ++++++++++++++++++++++++++++++ pkgs/by-name/ga/galene/package.nix | 5 ++ 3 files changed, 103 insertions(+) create mode 100644 nixos/tests/galene.nix 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..a42d178ddc91 --- /dev/null +++ b/nixos/tests/galene.nix @@ -0,0 +1,97 @@ +let + makeTest = import ./make-test-python.nix; + galeneTestGroupsDir = "/var/lib/galene/groups"; + galeneTestGroupFile = "galene-test-config.json"; + galenePort = 8443; +in +{ + basic = makeTest ( + { pkgs, lib, ... }: + let + galeneTestGroupAdminName = "admin"; + galeneTestGroupAdminPassword = "1234"; + in + { + 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") + ''; + } + ); +} diff --git a/pkgs/by-name/ga/galene/package.nix b/pkgs/by-name/ga/galene/package.nix index a5481dd46dba..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,6 +34,10 @@ 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"; From e4b09e47ace7d87de083786b404bf232eb6c89d8 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 30 May 2025 20:48:08 +0200 Subject: [PATCH 76/82] nixosTests.galene.file-transfer: init --- nixos/tests/galene.nix | 122 +++++++++++++++++- .../ga/galene-file-transfer/package.nix | 2 + 2 files changed, 120 insertions(+), 4 deletions(-) diff --git a/nixos/tests/galene.nix b/nixos/tests/galene.nix index a42d178ddc91..8805a088a56c 100644 --- a/nixos/tests/galene.nix +++ b/nixos/tests/galene.nix @@ -3,14 +3,12 @@ let galeneTestGroupsDir = "/var/lib/galene/groups"; galeneTestGroupFile = "galene-test-config.json"; galenePort = 8443; + galeneTestGroupAdminName = "admin"; + galeneTestGroupAdminPassword = "1234"; in { basic = makeTest ( { pkgs, lib, ... }: - let - galeneTestGroupAdminName = "admin"; - galeneTestGroupAdminPassword = "1234"; - in { name = "galene-works"; meta = { @@ -94,4 +92,120 @@ 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/pkgs/by-name/ga/galene-file-transfer/package.nix b/pkgs/by-name/ga/galene-file-transfer/package.nix index 08776012c811..43b4c8619486 100644 --- a/pkgs/by-name/ga/galene-file-transfer/package.nix +++ b/pkgs/by-name/ga/galene-file-transfer/package.nix @@ -3,6 +3,7 @@ buildGoModule, fetchFromGitHub, gitUpdater, + nixosTests, writeShellApplication, _experimental-update-script-combinators, galene, @@ -31,6 +32,7 @@ buildGoModule (finalAttrs: { ]; passthru = { + tests.vm = nixosTests.galene.file-transfer; updateScriptSrc = gitUpdater { rev-prefix = "galene-file-transfer-"; }; From 78e4af9c32fe5c95c8b7bb9d2395b9b17d33474b Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Mon, 2 Jun 2025 11:49:34 +0200 Subject: [PATCH 77/82] libgourou: Refactor to use fetchFromGitea, replace rec with finalAttrs --- pkgs/by-name/li/libgourou/package.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/li/libgourou/package.nix b/pkgs/by-name/li/libgourou/package.nix index f55f52edd4b4..59fc3f7ded25 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,12 +10,15 @@ installShellFiles, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "libgourou"; version = "0.8.7"; - src = fetchzip { - url = "https://forge.soutade.fr/soutade/libgourou/archive/v${version}.tar.gz"; + src = fetchFromGitea { + domain = "forge.soutade.fr"; + owner = "soutade"; + repo = "libgourou"; + tag = "v${finalAttrs.version}"; hash = "sha256-Tkft/pe3lH07pmyVibTEutIIvconUWDH1ZVN3qV4sSY="; }; @@ -46,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} @@ -62,4 +65,4 @@ stdenv.mkDerivation rec { platforms = platforms.all; broken = stdenv.hostPlatform.isDarwin; }; -} +}) From 2c773498684810e8b884b66d375bbb238fe25cd6 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 09:50:17 +0000 Subject: [PATCH 78/82] libretro.flycast: 0-unstable-2025-05-22 -> 0-unstable-2025-06-01 --- pkgs/applications/emulators/libretro/cores/flycast.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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; }; From 7219c97de67d17de1c6755d27f5347cc36aa772c Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Mon, 2 Jun 2025 11:51:19 +0200 Subject: [PATCH 79/82] libgourou: Update homepage URL --- pkgs/by-name/li/libgourou/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/li/libgourou/package.nix b/pkgs/by-name/li/libgourou/package.nix index 59fc3f7ded25..b790d56deb29 100644 --- a/pkgs/by-name/li/libgourou/package.nix +++ b/pkgs/by-name/li/libgourou/package.nix @@ -59,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: { 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; From c8fc4ffd1d5ca5b74e03b466c9f348f8f2bb391c Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Mon, 2 Jun 2025 11:51:50 +0200 Subject: [PATCH 80/82] updfparser: Refactor to use fetchFromGitea, replace rec with finalAttrs --- pkgs/by-name/up/updfparser/package.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/up/updfparser/package.nix b/pkgs/by-name/up/updfparser/package.nix index 4ead9b3cdb9a..c82d453e7a81 100644 --- a/pkgs/by-name/up/updfparser/package.nix +++ b/pkgs/by-name/up/updfparser/package.nix @@ -1,16 +1,19 @@ { lib, stdenv, - fetchzip, + fetchFromGitea, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { name = "updfparser"; - version = "unstable-2024-03-24"; + version = "0-unstable-2024-03-24"; rev = "6060d123441a06df699eb275ae5ffdd50409b8f3"; - src = fetchzip { - url = "https://forge.soutade.fr/soutade/updfparser/archive/${rev}.tar.gz"; + src = fetchFromGitea { + inherit (finalAttrs) rev; + domain = "forge.soutade.fr"; + owner = "soutade"; + repo = "updfparser"; hash = "sha256-HD73WGZ4e/3T7vQmwU/lRADtvsInFG62uqvJmF773Rk="; }; @@ -34,4 +37,4 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ autumnal ]; platforms = platforms.all; }; -} +}) From 6d6550b6c496973cc28b79af5e329ab19389c8ab Mon Sep 17 00:00:00 2001 From: Erwin Boskma Date: Mon, 2 Jun 2025 11:52:45 +0200 Subject: [PATCH 81/82] updfparser: Update homepage URL --- pkgs/by-name/up/updfparser/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/up/updfparser/package.nix b/pkgs/by-name/up/updfparser/package.nix index c82d453e7a81..d90095be538b 100644 --- a/pkgs/by-name/up/updfparser/package.nix +++ b/pkgs/by-name/up/updfparser/package.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { 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; From 3230c6105bd00b475c274261b756e7f9cc538521 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 1 Jun 2025 10:34:49 +0200 Subject: [PATCH 82/82] skalibs: fix cross Fixes: 875d3b3bae9e ("skawarePackages.skalibs: 2.14.3.0 -> 2.14.4.0") --- pkgs/development/skaware-packages/skalibs/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) 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.