From 9d02f876c4326b06ada6ed11052357d7f355ecac Mon Sep 17 00:00:00 2001 From: Leona Maroni Date: Thu, 27 Mar 2025 23:20:14 +0100 Subject: [PATCH 1/3] nixosTests.discourse: fix after dovecot2 change --- nixos/tests/discourse.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/nixos/tests/discourse.nix b/nixos/tests/discourse.nix index 3accebe8f31f..58bbd961ede7 100644 --- a/nixos/tests/discourse.nix +++ b/nixos/tests/discourse.nix @@ -104,7 +104,6 @@ import ./make-test-python.nix ( services.dovecot2 = { enable = true; protocols = [ "imap" ]; - modules = [ pkgs.dovecot_pigeonhole ]; }; services.postfix = { From f2ebbabda07227ed0a3150124989d330caea457c Mon Sep 17 00:00:00 2001 From: Leona Maroni Date: Thu, 27 Mar 2025 23:20:14 +0100 Subject: [PATCH 2/3] discourse: 3.3.2 -> 3.4.2 https://meta.discourse.org/t/3-3-3-security-and-maintenance-release/343239 https://meta.discourse.org/t/3-3-4-security-and-maintenance-release/349301 https://blog.discourse.org/2025/02/unpacking-discourse-3-4/ https://meta.discourse.org/t/3-4-1-bug-fix-and-ux-release/353247 https://meta.discourse.org/t/3-4-2-security-and-bug-fix-release/358152 --- .../manual/release-notes/rl-2505.section.md | 1 + nixos/modules/services/web-apps/discourse.nix | 9 +- nixos/tests/discourse.nix | 2 +- pkgs/servers/web-apps/discourse/default.nix | 67 +- .../discourse/prebuild-theme-transpiler.patch | 34 +- .../web-apps/discourse/rubyEnv/Gemfile | 44 +- .../web-apps/discourse/rubyEnv/Gemfile.lock | 389 +++++----- .../web-apps/discourse/rubyEnv/gemset.nix | 707 +++++++++++------- pkgs/servers/web-apps/discourse/update.py | 46 +- 9 files changed, 738 insertions(+), 561 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index 084e43f2792a..bf3bace1bbaa 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -354,6 +354,7 @@ - `programs.clash-verge.tunMode` was deprecated and removed because now service mode is necessary to start program. Without `programs.clash-verge.enable`, clash-verge-rev will refuse to start. +- `services.discourse` now requires PostgreSQL 15 per default. Please update before upgrading. - `services.netbird.tunnels` was renamed to [`services.netbird.clients`](#opt-services.netbird.clients), hardened (using dedicated less-privileged users) and significantly extended. diff --git a/nixos/modules/services/web-apps/discourse.nix b/nixos/modules/services/web-apps/discourse.nix index 1d7b3c2ff7be..b454ed97744f 100644 --- a/nixos/modules/services/web-apps/discourse.nix +++ b/nixos/modules/services/web-apps/discourse.nix @@ -13,8 +13,8 @@ let cfg = config.services.discourse; opt = options.services.discourse; - # Keep in sync with https://github.com/discourse/discourse_docker/blob/main/image/base/slim.Dockerfile#L5 - upstreamPostgresqlVersion = lib.getVersion pkgs.postgresql_13; + # Keep in sync with https://github.com/discourse/discourse_docker/blob/main/image/base/Dockerfile PG_MAJOR + upstreamPostgresqlVersion = lib.getVersion pkgs.postgresql_15; postgresqlPackage = if config.services.postgresql.enable then config.services.postgresql.package else pkgs.postgresql; @@ -676,6 +676,8 @@ in dns_query_timeout_secs = null; regex_timeout_seconds = 2; allow_impersonation = true; + log_line_max_chars = 160000; + yjit_enabled = false; }; services.redis.servers.discourse = @@ -901,6 +903,9 @@ in extraConfig + '' proxy_set_header X-Request-Start "t=''${msec}"; + proxy_set_header X-Sendfile-Type ""; + proxy_set_header X-Accel-Mapping ""; + proxy_set_header Client-Ip ""; ''; }; cache = time: '' diff --git a/nixos/tests/discourse.nix b/nixos/tests/discourse.nix index 58bbd961ede7..1f8d1b7bdf4c 100644 --- a/nixos/tests/discourse.nix +++ b/nixos/tests/discourse.nix @@ -59,7 +59,7 @@ import ./make-test-python.nix ( environment.systemPackages = [ pkgs.jq ]; - services.postgresql.package = pkgs.postgresql_13; + services.postgresql.package = pkgs.postgresql_15; services.discourse = { enable = true; diff --git a/pkgs/servers/web-apps/discourse/default.nix b/pkgs/servers/web-apps/discourse/default.nix index 347aefd22d28..dd7ff3e0f537 100644 --- a/pkgs/servers/web-apps/discourse/default.nix +++ b/pkgs/servers/web-apps/discourse/default.nix @@ -9,7 +9,7 @@ bundlerEnv, callPackage, - ruby_3_2, + ruby_3_3, replace, gzip, gnutar, @@ -34,11 +34,9 @@ procps, rsync, icu, - fetchYarnDeps, - yarn, - fixup-yarn-lock, + pnpm_9, nodePackages, - nodejs_18, + nodejs, jq, moreutils, terser, @@ -48,16 +46,16 @@ }@args: let - version = "3.3.2"; + version = "3.4.2"; src = fetchFromGitHub { owner = "discourse"; repo = "discourse"; rev = "v${version}"; - sha256 = "sha256-FaPcUta5z/8oasw+9zGBRZnUVYD8eCo1t/XwwsFoSM8="; + sha256 = "sha256-glTuY9aQ7wYvFZstOP579RkdSwKKh3q9mJt4wqg3zYk="; }; - ruby = ruby_3_2; + ruby = ruby_3_3; runtimeDeps = [ # For backups, themes and assets @@ -67,7 +65,7 @@ let gnutar git brotli - nodejs_18 + nodejs # Misc required system utils which @@ -189,9 +187,9 @@ let cd ../.. mkdir -p vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/ - ln -s "${nodejs_18.libv8}/lib/libv8.a" vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/libv8_monolith.a + ln -s "${nodejs.libv8}/lib/libv8.a" vendor/v8/${stdenv.hostPlatform.system}/libv8/obj/libv8_monolith.a - ln -s ${nodejs_18.libv8}/include vendor/v8/include + ln -s ${nodejs.libv8}/include vendor/v8/include mkdir -p ext/libv8-node echo '--- !ruby/object:Libv8::Node::Location::Vendor {}' >ext/libv8-node/.location.yml @@ -232,9 +230,10 @@ let pname = "discourse-assets"; inherit version src; - yarnOfflineCache = fetchYarnDeps { - yarnLock = src + "/yarn.lock"; - hash = "sha256-cSQofaULCmPuWGxS+hK4KlRq9lSkCPiYvhax9X6Dor8="; + pnpmDeps = pnpm_9.fetchDeps { + pname = "discourse-assets"; + inherit version src; + hash = "sha256-WyRBnuKCl5NJLtqy3HK/sJcrpMkh0PjbasGPNDV6+7Y="; }; nativeBuildInputs = runtimeDeps ++ [ @@ -242,10 +241,10 @@ let redis uglify-js terser - yarn jq moreutils - fixup-yarn-lock + nodejs + pnpm_9.configHook ]; outputs = [ @@ -281,31 +280,9 @@ let # run. This means that Redis and PostgreSQL has to be running and # database migrations performed. preBuild = '' - # Yarn wants a real home directory to write cache, config, etc to - export HOME=$NIX_BUILD_TOP/fake_home - - yarn_install() { - local offlineCache=$1 yarnLock=$2 - - # Make yarn install packages from our offline cache, not the registry - yarn config --offline set yarn-offline-mirror $offlineCache - - # Fixup "resolved"-entries in yarn.lock to match our offline cache - fixup-yarn-lock $yarnLock - - # Install while ignoring hook scripts - yarn --offline --ignore-scripts --cwd $(dirname $yarnLock) install - } - - # Install runtime and devDependencies. - # The dev deps are necessary for generating the theme-transpiler executed as dependent task - # assets:precompile:theme_transpiler before db:migrate and unfortunately also in the runtime - yarn_install $yarnOfflineCache yarn.lock - # Patch before running postinstall hook script patchShebangs node_modules/ patchShebangs --build app/assets/javascripts - yarn --offline --cwd app/assets/javascripts run postinstall export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt redis-server >/dev/null & @@ -351,6 +328,10 @@ let runHook postInstall ''; + + # The node_modules output by design has broken symlinks, as it refers to the source code. + # They are resolved in the primary discourse derivation. + dontCheckForBrokenSymlinks = true; }; discourse = stdenv.mkDerivation { @@ -425,12 +406,11 @@ let ln -sf /var/lib/discourse/tmp $out/share/discourse/tmp ln -sf /run/discourse/config $out/share/discourse/config ln -sf /run/discourse/public $out/share/discourse/public - # This needs to be copied because of symlinks in node_modules - # Also this needs to be full node_modules (including dev deps) because without loader.js it just throws 500 - cp -r ${assets.node_modules} $out/share/discourse/node_modules + ln -sf ${assets.node_modules} $out/share/discourse/node_modules ln -sf ${assets} $out/share/discourse/public.dist/assets rm -r $out/share/discourse/app/assets/javascripts - ln -sf ${assets.javascripts} $out/share/discourse/app/assets/javascripts + # This needs to be copied because it contains symlinks to node_modules + cp -r ${assets.javascripts} $out/share/discourse/app/assets/javascripts ${lib.concatMapStringsSep "\n" ( p: "ln -sf ${p} $out/share/discourse/plugins/${p.pluginName or ""}" ) plugins} @@ -466,9 +446,6 @@ let maintainers = with maintainers; [ talyz ]; license = licenses.gpl2Plus; description = "Discourse is an open source discussion platform"; - # fails to compile mini_racer: - # mini_racer_v8.cc:316:45: error: no matching function for call to 'v8::ScriptOrigin::ScriptOrigin(v8::Local&)' - broken = true; }; }; in diff --git a/pkgs/servers/web-apps/discourse/prebuild-theme-transpiler.patch b/pkgs/servers/web-apps/discourse/prebuild-theme-transpiler.patch index bed44baee570..2e779fa26400 100644 --- a/pkgs/servers/web-apps/discourse/prebuild-theme-transpiler.patch +++ b/pkgs/servers/web-apps/discourse/prebuild-theme-transpiler.patch @@ -1,21 +1,23 @@ diff --git a/lib/discourse_js_processor.rb b/lib/discourse_js_processor.rb -index 26d142fa4d..6040aba6f4 100644 +index f1642386c5..5a672818da 100644 --- a/lib/discourse_js_processor.rb +++ b/lib/discourse_js_processor.rb -@@ -68,7 +68,7 @@ class DiscourseJsProcessor - TRANSPILER_PATH = - ( - if Rails.env.production? -- "tmp/theme-transpiler.js" -+ "app/assets/javascripts/theme-transpiler.js" - else - "tmp/theme-transpiler/#{Process.pid}.js" - end -@@ -87,6 +87,6 @@ class DiscourseJsProcessor - "node", - "app/assets/javascripts/theme-transpiler/build.js", - TRANSPILER_PATH, -- ) -+ ) if !Rails.env.production? or !File.file?(TRANSPILER_PATH) +@@ -54,7 +54,7 @@ class DiscourseJsProcessor + end + + class Transpiler +- TRANSPILER_PATH = "tmp/theme-transpiler.js" ++ TRANSPILER_PATH = "app/assets/javascripts/theme-transpiler.js" + + @mutex = Mutex.new + @ctx_init = Mutex.new +@@ -75,7 +75,9 @@ class DiscourseJsProcessor + end + + def self.build_production_theme_transpiler +- File.write(TRANSPILER_PATH, build_theme_transpiler) ++ if (!Rails.env.production? or !File.file?(TRANSPILER_PATH)) ++ File.write(TRANSPILER_PATH, build_theme_transpiler) ++ end TRANSPILER_PATH end diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile index 4aa1e315536c..869b2d548b3d 100644 --- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile +++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile @@ -6,13 +6,13 @@ source "https://rubygems.org" gem "bootsnap", require: false, platform: :mri -gem "actionmailer", "~> 7.1.0" -gem "actionpack", "~> 7.1.0" -gem "actionview", "~> 7.1.0" -gem "activemodel", "~> 7.1.0" -gem "activerecord", "~> 7.1.0" -gem "activesupport", "~> 7.1.0" -gem "railties", "~> 7.1.0" +gem "actionmailer", "~> 7.2.0" +gem "actionpack", "~> 7.2.0" +gem "actionview", "~> 7.2.0" +gem "activemodel", "~> 7.2.0" +gem "activerecord", "~> 7.2.0" +gem "activesupport", "~> 7.2.0" +gem "railties", "~> 7.2.0" gem "sprockets-rails" gem "json" @@ -99,7 +99,7 @@ gem "sidekiq" gem "mini_scheduler" gem "execjs", require: false -gem "mini_racer" +gem "mini_racer", "0.17.pre13" gem "highline", require: false @@ -158,6 +158,8 @@ group :test, :development do gem "syntax_tree" gem "syntax_tree-disable_ternary" + + gem "rspec-multi-mock" end group :development do @@ -241,8 +243,6 @@ if ENV["IMPORT"] == "1" gem "reverse_markdown" gem "tiny_tds" gem "csv" - - gem "parallel", require: false end group :generic_import, optional: true do @@ -269,10 +269,26 @@ gem "cgi", ">= 0.3.6", require: false gem "tzinfo-data" gem "csv", require: false -# TODO: Can be removed once we upgrade to Rails 7.1 -gem "mutex_m" -gem "drb" - # dependencies for the automation plugin gem "iso8601" gem "rrule" + +group :migrations, optional: true do + gem "extralite-bundle", require: "extralite" + + # auto-loading + gem "zeitwerk" + + # databases + gem "trilogy" + + # CLI + gem "ruby-progressbar" + + # non-cryptographic hashing algorithm for generating placeholder IDs + gem "digest-xxhash" +end + +gem "dry-initializer", "~> 3.1" + +gem "parallel" diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock index 361daa0c7037..b492ec78ffed 100644 --- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock @@ -1,28 +1,26 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (7.1.3.4) - actionpack (= 7.1.3.4) - actionview (= 7.1.3.4) - activejob (= 7.1.3.4) - activesupport (= 7.1.3.4) - mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp + actionmailer (7.2.2.1) + actionpack (= 7.2.2.1) + actionview (= 7.2.2.1) + activejob (= 7.2.2.1) + activesupport (= 7.2.2.1) + mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.1.3.4) - actionview (= 7.1.3.4) - activesupport (= 7.1.3.4) + actionpack (7.2.2.1) + actionview (= 7.2.2.1) + activesupport (= 7.2.2.1) nokogiri (>= 1.8.5) racc - rack (>= 2.2.4) + rack (>= 2.2.4, < 3.2) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actionview (7.1.3.4) - activesupport (= 7.1.3.4) + useragent (~> 0.16) + actionview (7.2.2.1) + activesupport (= 7.2.2.1) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -31,25 +29,27 @@ GEM actionview (>= 6.0.a) active_model_serializers (0.8.4) activemodel (>= 3.0) - activejob (7.1.3.4) - activesupport (= 7.1.3.4) + activejob (7.2.2.1) + activesupport (= 7.2.2.1) globalid (>= 0.3.6) - activemodel (7.1.3.4) - activesupport (= 7.1.3.4) - activerecord (7.1.3.4) - activemodel (= 7.1.3.4) - activesupport (= 7.1.3.4) + activemodel (7.2.2.1) + activesupport (= 7.2.2.1) + activerecord (7.2.2.1) + activemodel (= 7.2.2.1) + activesupport (= 7.2.2.1) timeout (>= 0.4.0) - activesupport (7.1.3.4) + activesupport (7.2.2.1) base64 + benchmark (>= 0.3) bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) annotate (3.2.0) @@ -76,17 +76,18 @@ GEM aws-sigv4 (1.8.0) aws-eventstream (~> 1, >= 1.0.2) base64 (0.2.0) + benchmark (0.4.0) better_errors (2.10.1) erubi (>= 1.0.0) rack (>= 0.9.0) rouge (>= 1.0.0) - bigdecimal (3.1.8) + bigdecimal (3.1.9) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - bootsnap (1.18.3) + bootsnap (1.18.4) msgpack (~> 1.2) builder (3.3.0) - bullet (7.2.0) + bullet (8.0.0) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) byebug (11.1.3) @@ -104,26 +105,27 @@ GEM cgi (0.4.1) chunky_png (1.4.0) coderay (1.1.3) - colored2 (4.0.0) - concurrent-ruby (1.3.3) - connection_pool (2.4.1) - cose (1.3.0) + colored2 (4.0.3) + concurrent-ruby (1.3.5) + connection_pool (2.5.0) + cose (1.3.1) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) - cppjieba_rb (0.4.2) + cppjieba_rb (0.4.4) crack (1.0.0) bigdecimal rexml crass (1.0.6) - css_parser (1.17.1) + css_parser (1.21.0) addressable - csv (3.3.0) - date (3.3.4) + csv (3.3.2) + date (3.4.1) debug_inspector (1.2.0) diff-lcs (1.5.1) - diffy (3.4.2) - digest (3.1.1) - discourse-fonts (0.0.9) + diffy (3.4.3) + digest (3.2.0) + digest-xxhash (0.2.9) + discourse-fonts (0.0.18) discourse-seed-fu (2.3.12) activerecord (>= 3.1) activesupport (>= 3.1) @@ -132,50 +134,53 @@ GEM literate_randomizer docile (1.4.1) drb (2.2.1) - email_reply_trimmer (0.1.13) - erubi (1.13.0) - excon (0.111.0) - execjs (2.9.1) - exifr (1.4.0) + dry-initializer (3.2.0) + email_reply_trimmer (0.2.0) + erubi (1.13.1) + excon (1.2.3) + execjs (2.10.0) + exifr (1.4.1) + extralite-bundle (2.8.2) fabrication (2.31.0) faker (2.23.0) i18n (>= 1.8.11, < 2) fakeweb (1.3.0) - faraday (2.10.0) - faraday-net_http (>= 2.0, < 3.2) + faraday (2.12.2) + faraday-net_http (>= 2.0, < 3.5) + json logger - faraday-net_http (3.1.1) - net-http + faraday-net_http (3.4.0) + net-http (>= 0.5.0) faraday-retry (2.2.1) faraday (~> 2.0) fast_blank (1.0.1) fastimage (2.3.1) - ffi (1.17.0) - ffi (1.17.0-arm64-darwin) - ffi (1.17.0-x86_64-darwin) + ffi (1.17.1) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86_64-darwin) fspath (3.1.2) globalid (1.2.1) activesupport (>= 6.1) - google-protobuf (4.27.2) + google-protobuf (4.29.3) bigdecimal rake (>= 13) - google-protobuf (4.27.2-arm64-darwin) + google-protobuf (4.29.3-arm64-darwin) bigdecimal rake (>= 13) - google-protobuf (4.27.2-x86_64-darwin) + google-protobuf (4.29.3-x86_64-darwin) bigdecimal rake (>= 13) guess_html_encoding (0.0.11) hana (1.3.7) - hashdiff (1.1.0) + hashdiff (1.1.2) hashie (5.0.0) - highline (3.1.0) + highline (3.1.2) reline htmlentities (4.3.4) http_accept_language (2.1.1) - i18n (1.14.5) + i18n (1.14.7) concurrent-ruby (~> 1.0) - image_optim (0.31.3) + image_optim (0.31.4) exifr (~> 1.2, >= 1.2.2) fspath (~> 3.0) image_size (>= 1.5, < 4) @@ -183,32 +188,34 @@ GEM progress (~> 3.0, >= 3.0.1) image_size (3.4.0) in_threads (1.6.0) - io-console (0.7.2) - irb (1.14.0) + io-console (0.8.0) + irb (1.15.1) + pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) iso8601 (0.13.0) jmespath (1.6.2) - json (2.7.2) - json-schema (4.3.1) - addressable (>= 2.8) - json_schemer (2.3.0) + json (2.9.1) + json-schema (5.1.1) + addressable (~> 2.8) + bigdecimal (~> 3.1) + json_schemer (2.4.0) bigdecimal hana (~> 1.3) regexp_parser (~> 2.0) simpleidn (~> 0.2) - jwt (2.8.2) + jwt (2.10.1) base64 kgio (2.11.4) - language_server-protocol (3.17.0.3) - libv8-node (18.19.0.0) - libv8-node (18.19.0.0-arm64-darwin) - libv8-node (18.19.0.0-x86_64-darwin) + language_server-protocol (3.17.0.4) + libv8-node (22.7.0.4) + libv8-node (22.7.0.4-arm64-darwin) + libv8-node (22.7.0.4-x86_64-darwin) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) literate_randomizer (0.4.0) - logger (1.6.0) + logger (1.6.5) lograge (0.14.0) actionpack (>= 4) activesupport (>= 4) @@ -216,7 +223,7 @@ GEM request_store (~> 1.0) logstash-event (1.2.02) logster (2.20.0) - loofah (2.22.0) + loofah (2.24.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) lru_redux (1.1.0) @@ -228,34 +235,33 @@ GEM net-smtp matrix (0.4.2) maxminddb (0.1.22) - memory_profiler (1.0.2) + memory_profiler (1.1.0) message_bus (4.3.8) rack (>= 1.1.3) messageformat-wrapper (1.1.0) mini_racer (>= 0.6.3) method_source (1.1.0) mini_mime (1.1.5) - mini_portile2 (2.8.7) - mini_racer (0.14.1) - libv8-node (~> 18.19.0.0) - mini_scheduler (0.16.0) - sidekiq (>= 4.2.3, < 7.0) - mini_sql (1.5.0) + mini_portile2 (2.8.8) + mini_racer (0.17.0.pre13) + libv8-node (~> 22.7.0.4) + mini_scheduler (0.18.0) + sidekiq (>= 6.5, < 8.0) + mini_sql (1.6.0) mini_suffix (0.3.3) ffi (~> 1.9) minio_runner (0.1.2) - minitest (5.24.1) - mocha (2.4.5) + minitest (5.25.4) + mocha (2.7.1) ruby2_keywords (>= 0.0.5) - msgpack (1.7.2) + msgpack (1.7.5) multi_json (1.15.0) multi_xml (0.7.1) bigdecimal (~> 3.1) mustache (1.1.1) - mutex_m (0.2.0) - net-http (0.4.1) + net-http (0.6.0) uri - net-imap (0.4.14) + net-imap (0.5.5) date net-protocol net-pop (0.1.2) @@ -264,13 +270,13 @@ GEM timeout net-smtp (0.5.0) net-protocol - nio4r (2.7.3) - nokogiri (1.16.7) + nio4r (2.7.4) + nokogiri (1.18.2) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.16.7-arm64-darwin) + nokogiri (1.18.2-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.7-x86_64-darwin) + nokogiri (1.18.2-x86_64-darwin) racc (~> 1.4) oauth (1.1.0) oauth-tty (~> 1.0, >= 1.0.1) @@ -284,8 +290,9 @@ GEM multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 4) - oj (3.16.4) + oj (3.16.9) bigdecimal (>= 3.0) + ostruct (>= 0.2) omniauth (1.9.2) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) @@ -299,27 +306,32 @@ GEM oauth2 (~> 1.1) omniauth (~> 1.1) omniauth-oauth2 (>= 1.6) - omniauth-oauth (1.2.0) + omniauth-oauth (1.2.1) oauth omniauth (>= 1.0, < 3) + rack (>= 1.6.2, < 4) omniauth-oauth2 (1.7.3) oauth2 (>= 1.4, < 3) omniauth (>= 1.9, < 3) omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack - openssl (3.2.0) + openssl (3.3.0) openssl-signature_algorithm (1.3.0) openssl (> 2.0) - optimist (3.1.0) - parallel (1.25.1) - parallel_tests (4.7.1) + optimist (3.2.0) + ostruct (0.6.1) + parallel (1.26.3) + parallel_tests (4.9.0) parallel - parser (3.3.4.0) + parser (3.3.7.0) ast (~> 2.4.1) racc - pg (1.5.4) + pg (1.5.9) + pp (0.6.2) + prettyprint prettier_print (1.2.1) + prettyprint (0.2.0) progress (3.6.0) pry (0.14.2) coderay (~> 1.1) @@ -332,13 +344,14 @@ GEM pry-stack_explorer (0.6.1) binding_of_caller (~> 1.0) pry (~> 0.13) - psych (5.1.2) + psych (5.2.3) + date stringio public_suffix (6.0.1) - puma (6.4.2) + puma (6.6.0) nio4r (~> 2.0) - racc (1.8.0) - rack (2.2.9) + racc (1.8.1) + rack (2.2.10) rack-mini-profiler (3.3.1) rack (>= 1.2.0) rack-protection (3.2.0) @@ -346,29 +359,29 @@ GEM rack (~> 2.2, >= 2.2.4) rack-session (1.0.2) rack (< 3) - rack-test (2.1.0) + rack-test (2.2.0) rack (>= 1.3) - rackup (1.0.0) + rackup (1.0.1) rack (< 3) webrick rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) + rails-html-sanitizer (1.6.2) loofah (~> 2.21) - nokogiri (~> 1.14) - rails_failover (2.1.1) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + rails_failover (2.2.0) activerecord (>= 6.1, < 8.0) concurrent-ruby railties (>= 6.1, < 8.0) - rails_multisite (6.0.0) + rails_multisite (6.1.0) activerecord (>= 6.0) railties (>= 6.0) - railties (7.1.3.4) - actionpack (= 7.1.3.4) - activesupport (= 7.1.3.4) - irb + railties (7.2.2.1) + actionpack (= 7.2.2.1) + activesupport (= 7.2.2.1) + irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) @@ -383,23 +396,22 @@ GEM ffi (>= 1.0.6) msgpack (>= 0.4.3) optimist (>= 3.0.0) - rchardet (1.8.0) - rdoc (6.7.0) + rchardet (1.9.0) + rdoc (6.11.0) psych (>= 4.0.0) redcarpet (3.6.0) redis (4.8.1) redis-namespace (1.11.0) redis (>= 4) - regexp_parser (2.9.2) - reline (0.5.9) + regexp_parser (2.10.0) + reline (0.6.0) io-console (~> 0.5) request_store (1.7.0) rack (>= 1.4) - rexml (3.3.2) - strscan + rexml (3.4.0) rinku (2.0.6) rotp (6.3.0) - rouge (4.3.0) + rouge (4.5.1) rqrcode (2.2.0) chunky_png (~> 1.0) rqrcode_core (~> 1.0) @@ -410,51 +422,52 @@ GEM rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.0) + rspec-core (3.13.2) rspec-support (~> 3.13.0) - rspec-expectations (3.13.1) + rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-html-matchers (0.10.0) nokogiri (~> 1) rspec (>= 3.0.0.a) - rspec-mocks (3.13.1) + rspec-mocks (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (6.1.3) - actionpack (>= 6.1) - activesupport (>= 6.1) - railties (>= 6.1) + rspec-multi-mock (0.3.1) + rspec (>= 3.7.0) + rspec-rails (7.1.0) + actionpack (>= 7.0) + activesupport (>= 7.0) + railties (>= 7.0) rspec-core (~> 3.13) rspec-expectations (~> 3.13) rspec-mocks (~> 3.13) rspec-support (~> 3.13) - rspec-support (3.13.1) - rss (0.3.0) + rspec-support (3.13.2) + rss (0.3.1) rexml - rswag-specs (2.13.0) - activesupport (>= 3.1, < 7.2) - json-schema (>= 2.2, < 5.0) - railties (>= 3.1, < 7.2) + rswag-specs (2.16.0) + activesupport (>= 5.2, < 8.1) + json-schema (>= 2.2, < 6.0) + railties (>= 5.2, < 8.1) rspec-core (>= 2.14) rtlcss (0.2.1) mini_racer (>= 0.6.3) - rubocop (1.65.0) + rubocop (1.71.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.4, < 3.0) - rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.31.1, < 2.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.38.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.3) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.38.0) parser (>= 3.3.1.0) rubocop-capybara (2.21.0) rubocop (~> 1.41) - rubocop-discourse (3.8.1) + rubocop-discourse (3.9.3) activesupport (>= 6.1) rubocop (>= 1.59.0) rubocop-capybara (>= 2.0.0) @@ -464,26 +477,26 @@ GEM rubocop-rspec_rails (>= 2.30.0) rubocop-factory_bot (2.26.1) rubocop (~> 1.61) - rubocop-rails (2.25.1) + rubocop-rails (2.29.1) activesupport (>= 4.2.0) rack (>= 1.1) - rubocop (>= 1.33.0, < 2.0) + rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.0.3) + rubocop-rspec (3.4.0) rubocop (~> 1.61) rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) rubocop-rspec (~> 3, >= 3.0.1) - ruby-prof (1.7.0) + ruby-prof (1.7.1) ruby-progressbar (1.13.0) - ruby-readability (0.7.1) + ruby-readability (0.7.2) guess_html_encoding (>= 0.0.4) nokogiri (>= 1.6.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) - sanitize (6.1.2) + rubyzip (2.4.1) + sanitize (7.0.0) crass (~> 1.0.2) - nokogiri (>= 1.12.0) + nokogiri (>= 1.16.8) sass-embedded (1.77.5) google-protobuf (>= 3.25, < 5.0) rake (>= 13) @@ -493,15 +506,16 @@ GEM google-protobuf (>= 3.25, < 5.0) sassc-embedded (1.77.7) sass-embedded (~> 1.77) - selenium-devtools (0.126.0) + securerandom (0.4.1) + selenium-devtools (0.132.0) selenium-webdriver (~> 4.2) - selenium-webdriver (4.23.0) + selenium-webdriver (4.28.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) - shoulda-matchers (6.2.0) + shoulda-matchers (6.4.0) activesupport (>= 5.2.0) sidekiq (6.5.12) connection_pool (>= 2.2.5, < 3) @@ -511,64 +525,65 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.12.3) + simplecov-html (0.13.1) simplecov_json_formatter (0.1.4) simpleidn (0.2.3) snaky_hash (2.0.1) hashie version_gem (~> 1.1, >= 1.1.1) - sprockets (3.7.3) + sprockets (3.7.5) base64 concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.5.1) + sprockets-rails (3.5.2) actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - sqlite3 (2.0.2) + sqlite3 (2.5.0) mini_portile2 (~> 2.8.0) - sqlite3 (2.0.2-arm64-darwin) - sqlite3 (2.0.2-x86_64-darwin) + sqlite3 (2.5.0-arm64-darwin) + sqlite3 (2.5.0-x86_64-darwin) sshkey (3.0.0) - stackprof (0.2.26) - stringio (3.1.1) - strscan (3.1.0) + stackprof (0.2.27) + stringio (3.1.2) syntax_tree (6.2.0) prettier_print (>= 1.2.0) syntax_tree-disable_ternary (1.0.0) - test-prof (1.3.3.1) - thor (1.3.1) - timeout (0.4.1) + test-prof (1.4.4) + thor (1.3.2) + timeout (0.4.3) + trilogy (2.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2024.1) + tzinfo-data (1.2025.1) tzinfo (>= 1.0.0) - uglifier (4.2.0) + uglifier (4.2.1) execjs (>= 0.3.0, < 3) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) - unicode-display_width (2.5.0) + unf (0.2.0) + unicode-display_width (3.1.4) + unicode-emoji (~> 4.0, >= 4.0.4) + unicode-emoji (4.0.4) unicorn (6.1.0) kgio (~> 2.6) raindrops (~> 0.7) uniform_notifier (1.16.0) - uri (0.13.0) + uri (1.0.2) + useragent (0.16.11) version_gem (1.1.4) web-push (3.0.1) jwt (~> 2.0) openssl (~> 3.0) - webmock (3.23.1) + webmock (3.24.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) + webrick (1.9.1) websocket (1.2.11) xpath (3.2.0) nokogiri (~> 1.8) yaml-lint (0.1.2) - yard (0.9.36) - zeitwerk (2.6.16) + yard (0.9.37) + zeitwerk (2.7.1) PLATFORMS arm64-darwin-21 @@ -577,16 +592,18 @@ PLATFORMS arm64-darwin-24 ruby x86_64-darwin-22 + x86_64-darwin-23 + x86_64-darwin-24 DEPENDENCIES - actionmailer (~> 7.1.0) - actionpack (~> 7.1.0) - actionview (~> 7.1.0) + actionmailer (~> 7.2.0) + actionpack (~> 7.2.0) + actionview (~> 7.2.0) actionview_precompiler active_model_serializers (~> 0.8.3) - activemodel (~> 7.1.0) - activerecord (~> 7.1.0) - activesupport (~> 7.1.0) + activemodel (~> 7.2.0) + activerecord (~> 7.2.0) + activesupport (~> 7.2.0) addressable annotate aws-sdk-s3 @@ -607,13 +624,15 @@ DEPENDENCIES csv diffy digest + digest-xxhash discourse-fonts discourse-seed-fu discourse_dev_assets - drb + dry-initializer (~> 3.1) email_reply_trimmer excon execjs + extralite-bundle fabrication faker (~> 2.16) fakeweb @@ -641,7 +660,7 @@ DEPENDENCIES message_bus messageformat-wrapper mini_mime - mini_racer + mini_racer (= 0.17.pre13) mini_scheduler mini_sql mini_suffix @@ -649,7 +668,6 @@ DEPENDENCIES mocha multi_json mustache - mutex_m net-http net-imap net-pop @@ -662,6 +680,7 @@ DEPENDENCIES omniauth-google-oauth2 omniauth-oauth2 omniauth-twitter + parallel parallel_tests pg pry-byebug @@ -674,7 +693,7 @@ DEPENDENCIES rails-dom-testing rails_failover rails_multisite - railties (~> 7.1.0) + railties (~> 7.2.0) rake rb-fsevent rbtrace @@ -688,12 +707,14 @@ DEPENDENCIES rrule rspec rspec-html-matchers + rspec-multi-mock rspec-rails rss rswag-specs rtlcss rubocop-discourse ruby-prof + ruby-progressbar ruby-readability rubyzip sanitize @@ -712,6 +733,7 @@ DEPENDENCIES syntax_tree-disable_ternary test-prof thor + trilogy tzinfo-data uglifier unf @@ -720,6 +742,7 @@ DEPENDENCIES webmock yaml-lint yard + zeitwerk BUNDLED WITH - 2.4.22 + 2.5.22 diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix b/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix index df6e08bb6e46..dc4a8595029d 100644 --- a/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix +++ b/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix @@ -6,19 +6,16 @@ "activejob" "activesupport" "mail" - "net-imap" - "net-pop" - "net-smtp" "rails-dom-testing" ]; groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0l835a50h95wlzcy76c2vg54ix3i55kqmnrmz67b11q5fjb6068z"; + sha256 = "07xjqxmwif57wxz28ch10c3c2261ydv1x56vsiidg2icqciyaamh"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; actionpack = { dependencies = [ @@ -31,6 +28,7 @@ "rack-test" "rails-dom-testing" "rails-html-sanitizer" + "useragent" ]; groups = [ "default" @@ -40,10 +38,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1lpd0lvn6abcq5k8g0qw8kmzx6igirlqxvd1hhwmr5vaxhdwgbyw"; + sha256 = "0d7pq6fsf041fvskzmqm12xcgk5m9d5fa6kbs1lsbmfbgc51dchp"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; actionview = { dependencies = [ @@ -61,10 +59,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0nv1ifjhm59abc52k2hwazl38r9cc4bkfgdsl00f24gc5ljgbz21"; + sha256 = "19arngl1nshasvbh90gzc23z1vpid2xzg3043grbmcfqyc68iz39"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; actionview_precompiler = { dependencies = [ "actionview" ]; @@ -97,10 +95,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0qhg0izdckgyqmrsgigh1vkqg8ccrkdjhf36k9gxcbgvzpqfx2iz"; + sha256 = "0nryqb19i3frxhanykf6lmrw0rb09863z114gi7sm55kff2mmygj"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; activemodel = { dependencies = [ "activesupport" ]; @@ -112,10 +110,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0wmdw440l4h75zk6c4ynbnv21bj26dh8kb1kwikqkjnzfvm3ij7l"; + sha256 = "1bzxvccj8349slymls7navb5y14anglkkasphcd6gi72kqgqd643"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; activerecord = { dependencies = [ @@ -131,21 +129,23 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1wihj9xhr7yj10hh8fqw6ralanbwlisncbam8pa92czjssjfqkkq"; + sha256 = "1fgscw775wj4l7f5pj274a984paz23zy0111giqkhl9dqdqiz8vr"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; activesupport = { dependencies = [ "base64" + "benchmark" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" + "logger" "minitest" - "mutex_m" + "securerandom" "tzinfo" ]; groups = [ @@ -156,10 +156,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0283wk1zxb76lg79dk501kcf5xy9h25qiw15m86s4nrfv11vqns5"; + sha256 = "1xa7hr4gp2p86ly6n1j2skyx8pfg6yi621kmnh7zhxr9m7wcnaw4"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; addressable = { dependencies = [ "public_suffix" ]; @@ -310,6 +310,20 @@ }; version = "0.2.0"; }; + benchmark = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg"; + type = "gem"; + }; + version = "0.4.0"; + }; better_errors = { dependencies = [ "erubi" @@ -341,10 +355,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1gi7zqgmqwi5lizggs1jhc3zlwaqayy9rx2ah80sxy24bbnng558"; + sha256 = "1k6qzammv9r6b2cw3siasaik18i6wjc5m0gw5nfdc6jj64h79z1g"; type = "gem"; }; - version = "3.1.8"; + version = "3.1.9"; }; binding_of_caller = { dependencies = [ "debug_inspector" ]; @@ -373,10 +387,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1srlq3gqirzdkhv12ljpnp5cb0f8jfrl3n8xs9iivyz2c7khvdyp"; + sha256 = "0mdgj9yw1hmx3xh2qxyjc31y8igmxzd9h0c245ay2zkz76pl4k5c"; type = "gem"; }; - version = "1.18.3"; + version = "1.18.4"; }; builder = { groups = [ @@ -401,10 +415,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "12gacycw1adsdjp14pm43619c6lcdaddhgbdizy7gnzmnjhwh0im"; + sha256 = "0kfyg2j6a4sg94sajnmy0scv9dxjh7jka9dlil1fzpx137g2zw3p"; type = "gem"; }; - version = "7.2.0"; + version = "8.0.0"; }; byebug = { groups = [ @@ -514,10 +528,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1zj06gjqwykgzxmbkp2hmg3wv5kv8zz5d77acxipzcgicdjgvfan"; + sha256 = "0drbrv5m3l3qpal7s87gvss81cbzl76gad1hqkpqfqlphf0h7qb3"; type = "gem"; }; - version = "4.0.0"; + version = "4.0.3"; }; concurrent-ruby = { groups = [ @@ -528,20 +542,24 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0skwdasxq7mnlcccn6aqabl7n9r3jd7k19ryzlzzip64cn4x572g"; + sha256 = "1ipbrgvf0pp6zxdk5ascp6i29aybz2bx9wdrlchjmpx6mhvkwfw1"; type = "gem"; }; - version = "1.3.3"; + version = "1.3.5"; }; connection_pool = { - groups = [ "default" ]; + groups = [ + "default" + "development" + "test" + ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g"; + sha256 = "1z7bag6zb2vwi7wp2bkdkmk7swkj6zfnbsnc949qq0wfsgw94fr3"; type = "gem"; }; - version = "2.4.1"; + version = "2.5.0"; }; cose = { dependencies = [ @@ -552,20 +570,20 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "00c6x4ha7qiaaf88qdbyf240mk146zz78rbm4qwyaxmwlmk7q933"; + sha256 = "1rbdzl9n8ppyp38y75hw06s17kp922ybj6jfvhz52p83dg6xpm6m"; type = "gem"; }; - version = "1.3.0"; + version = "1.3.1"; }; cppjieba_rb = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0ijzvnm5jclyhf6ls30kv7dqy05f3hbha69f59jwbzdid7dndla5"; + sha256 = "1bzsr3k926cwz6r0sx6p60cjyhqls7n8fd123f6qmhkfgfspm6ii"; type = "gem"; }; - version = "0.4.2"; + version = "0.4.4"; }; crack = { dependencies = [ @@ -604,30 +622,34 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1rhqn05w27w2mjrf0a6ppb4fxpxbfvyhwgdxa8z886jr4qnhywzb"; + sha256 = "0625073hwx41c246v9dvkp0rk0xgh9d0sc0gm73dbmlxnjwgalv7"; type = "gem"; }; - version = "1.17.1"; + version = "1.21.0"; }; csv = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0zfn40dvgjk1xv1z8l11hr9jfg3jncwsc9yhzsz4l4rivkpivg8b"; + sha256 = "0kmx36jjh2sahd989vcvw74lrlv07dqc3rnxchc5sj2ywqsw3w3g"; type = "gem"; }; - version = "3.3.0"; + version = "3.3.2"; }; date = { - groups = [ "default" ]; + groups = [ + "default" + "development" + "test" + ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "149jknsq999gnhy865n33fkk22s0r447k76x9pmcnnwldfv2q7wp"; + sha256 = "0kz6mc4b9m49iaans6cbx031j9y7ldghpi5fzsdh0n3ixwa8w9mz"; type = "gem"; }; - version = "3.3.4"; + version = "3.4.1"; }; debug_inspector = { groups = [ @@ -661,30 +683,40 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1qcsv29ljfhy76gq4xi8zpn6dc6nv15c41r131bdr38kwpxjzd1n"; + sha256 = "19xaz5qmw0kg1rdsjh13vk7674bpcmjy6cnddx1cvl80vgkvjr22"; type = "gem"; }; - version = "3.4.2"; + version = "3.4.3"; }; digest = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "01qkpbkxq83ip3iysfh2kjrg9sh2n2q91prhyxh3vq10lcfzv9l1"; + sha256 = "149r5nnr76g0lp0iz7xiw0zf4civrbs5zpmd5zc6agv8xj970bps"; type = "gem"; }; - version = "3.1.1"; + version = "3.2.0"; + }; + digest-xxhash = { + groups = [ "migrations" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mwqln5078r4arxzngbzvr82fshl1bn836ga9dm17i03khqdi2d9"; + type = "gem"; + }; + version = "0.2.9"; }; discourse-fonts = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1q1q9fmqc7dir2nj94nai58h26zsh6fqmbr6hfax5d6xpy4pm1yf"; + sha256 = "18bj5d0hf7bwy0pppah55aawg7yn61sjgjhh03j5lcnkxl9mrlm7"; type = "gem"; }; - version = "0.0.9"; + version = "0.0.18"; }; discourse-seed-fu = { dependencies = [ @@ -740,15 +772,25 @@ }; version = "2.2.1"; }; + dry-initializer = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1qy4cv0j0ahabprdbp02nc3r1606jd5dp90lzqg0mp0jz6c9gm9p"; + type = "gem"; + }; + version = "3.2.0"; + }; email_reply_trimmer = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki"; + sha256 = "09f5sq41fb912jxsbzh68hmkwq9gj9p8fg0zbwikf80sxsjkz105"; type = "gem"; }; - version = "0.1.13"; + version = "0.2.0"; }; erubi = { groups = [ @@ -766,20 +808,20 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0qnd6ff4az22ysnmni3730c41b979xinilahzg86bn7gv93ip9pw"; + sha256 = "1naaxsqkv5b3vklab5sbb9sdpszrjzlfsbqpy7ncbnw510xi10m0"; type = "gem"; }; - version = "1.13.0"; + version = "1.13.1"; }; excon = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0ala6123d3cv965ss48iyi0q4hcbzrznfwv2f1mr91sy98cigq4h"; + sha256 = "1am69fn9nzj2pa05fd02q4zbzn1g7c9w5g52yjzdsbhm1x9n9g95"; type = "gem"; }; - version = "0.111.0"; + version = "1.2.3"; }; execjs = { groups = [ @@ -789,20 +831,30 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1yywajqlpjhrj1m43s3lfg3i4lkb6pxwccmwps7qw37ndmphdzg8"; + sha256 = "03a590q16nhqvfms0lh42mp6a1i41w41qpdnf39zjbq5y3l8pjvb"; type = "gem"; }; - version = "2.9.1"; + version = "2.10.0"; }; exifr = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "11v201jljn327fwjqcsglrbdnyhivnj7j6nh6wym5zjqgrwxy3kn"; + sha256 = "155qqhai5z2742aqa4mwkxmqrpcv48siqz55rcx79wvgdg6790vn"; type = "gem"; }; - version = "1.4.0"; + version = "1.4.1"; + }; + extralite-bundle = { + groups = [ "migrations" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1x73a43hjw7f9vwlhfax4rmp7hpwaadvcamnbw31hh94bx3i71lv"; + type = "gem"; + }; + version = "2.8.2"; }; fabrication = { groups = [ @@ -844,16 +896,17 @@ faraday = { dependencies = [ "faraday-net_http" + "json" "logger" ]; groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1adx342h7s3imyrwwbda73g9ni1y07qj35br9lrzq4f5mh16qghs"; + sha256 = "1mls9g490k63rdmjc9shqshqzznfn1y21wawkxrwp2vvbk13jwqm"; type = "gem"; }; - version = "2.10.0"; + version = "2.12.2"; }; faraday-net_http = { dependencies = [ "net-http" ]; @@ -861,10 +914,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0f49frpfdr8czwm2mjkfny4pini6fy49b6hamw4jrppl4vsg14ys"; + sha256 = "0jp5ci6g40d6i50bsywp35l97nc2fpi9a592r2cibwicdb6y9wd1"; type = "gem"; }; - version = "3.1.1"; + version = "3.4.0"; }; faraday-retry = { dependencies = [ "faraday" ]; @@ -923,10 +976,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "07139870npj59jnl8vmk39ja3gdk3fb5z9vc0lf32y2h891hwqsi"; + sha256 = "0fgwn1grxf4zxmyqmb9i4z2hr111585n9jnk17y6y7hhs7dv1xi6"; type = "gem"; }; - version = "1.17.0"; + version = "1.17.1"; }; fspath = { groups = [ "default" ]; @@ -958,10 +1011,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0vwnr6fmxig4pkag86yzbznpxk8ii7rhjz0rrprkqvnymhhfnscz"; + sha256 = "0rmmp533ypc5c2r3ks8zqxchqkf1g8laig87f7hdfmwz0p07cmcs"; type = "gem"; }; - version = "4.27.2"; + version = "4.29.3"; }; guess_html_encoding = { groups = [ "default" ]; @@ -991,10 +1044,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1jf9dxgjz6z7fvymyz2acyvn9iyvwkn6d9sk7y4fxwbmfc75yimm"; + sha256 = "0xqsnx25lm1wwgchvrl5xla5zzk3d6gbkdfj062cwggdsvgfwc1c"; type = "gem"; }; - version = "1.1.0"; + version = "1.1.2"; }; hashie = { groups = [ "default" ]; @@ -1012,10 +1065,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1sxqnaz6wvkwbwzsipwsqcg1zw2kn67x7l362whv87zl5133w60l"; + sha256 = "0jmvyhjp2v3iq47la7w6psrxbprnbnmzz0hxxski3vzn356x7jv7"; type = "gem"; }; - version = "3.1.0"; + version = "3.1.2"; }; htmlentities = { groups = [ "default" ]; @@ -1047,10 +1100,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1ffix518y7976qih9k1lgnc17i3v6yrlh0a3mckpxdb4wc2vrp16"; + sha256 = "03sx3ahz1v5kbqjwxj48msw3maplpp2iyzs22l4jrzrqh4zmgfnf"; type = "gem"; }; - version = "1.14.5"; + version = "1.14.7"; }; image_optim = { dependencies = [ @@ -1064,10 +1117,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "02iw1plldayr1l8bdw2gshq0h083h0fxwji1m1nfhzikz917c07p"; + sha256 = "1h3n8x1rlxz4mkk49lij22x1nn0qk5cvir3fsj4x3s382a4x1zsv"; type = "gem"; }; - version = "0.31.3"; + version = "0.31.4"; }; image_size = { groups = [ "default" ]; @@ -1098,13 +1151,14 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "08d2lx42pa8jjav0lcjbzfzmw61b8imxr9041pva8xzqabrczp7h"; + sha256 = "18pgvl7lfjpichdfh1g50rpz0zpaqrpr52ybn9liv1v9pjn9ysnd"; type = "gem"; }; - version = "0.7.2"; + version = "0.8.0"; }; irb = { dependencies = [ + "pp" "rdoc" "reline" ]; @@ -1116,10 +1170,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "05g6vpz3997q4j3xhrliswfx3g5flsn5cfn1p1s4h6dx7c0hbn2k"; + sha256 = "1478m97wiy6nwg6lnl0szy39p46acsvrhax552vsh1s2mi2sgg6r"; type = "gem"; }; - version = "1.14.0"; + version = "1.15.1"; }; iso8601 = { groups = [ "default" ]; @@ -1150,13 +1204,16 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0b4qsi8gay7ncmigr0pnbxyb17y3h8kavdyhsh7nrlqwr35vb60q"; + sha256 = "048danb0x10mpch6mf88mky35zjn6wk4hpbqq68ssbq58i3fzgfj"; type = "gem"; }; - version = "2.7.2"; + version = "2.9.1"; }; json-schema = { - dependencies = [ "addressable" ]; + dependencies = [ + "addressable" + "bigdecimal" + ]; groups = [ "default" "development" @@ -1165,10 +1222,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "09bq393nrxa7hmphc3li8idgxdnb5hwgj15d0q5qsh4l5g1qvrnm"; + sha256 = "1gzrf6q4d9kbixj6bpi2bp8dizmqxcmlq30ni86h3ifzpkcrm0mk"; type = "gem"; }; - version = "4.3.1"; + version = "5.1.1"; }; json_schemer = { dependencies = [ @@ -1181,10 +1238,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0dgbrps0ydiyxcgj5n4dny0cmzwj125x1s792l7m5jjrp1rs27wz"; + sha256 = "093wb42zyy0a7kk7zxdvs0jivm0knlaz9lrsncjxjj2ppcbn3jsn"; type = "gem"; }; - version = "2.3.0"; + version = "2.4.0"; }; jwt = { dependencies = [ "base64" ]; @@ -1192,10 +1249,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "04mw326i9vsdcqwm4bf0zvnqw237f8l7022nhlbmak92bqqpg62s"; + sha256 = "1i8wmzgb5nfhvkx1f6bhdwfm7v772172imh439v3xxhkv3hllhp6"; type = "gem"; }; - version = "2.8.2"; + version = "2.10.1"; }; kgio = { groups = [ "default" ]; @@ -1226,20 +1283,20 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0gvb1j8xsqxms9mww01rmdl78zkd72zgxaap56bhv8j45z05hp1x"; + sha256 = "0scnz2fvdczdgadvjn0j9d49118aqm3hj66qh8sd2kv6g1j65164"; type = "gem"; }; - version = "3.17.0.3"; + version = "3.17.0.4"; }; libv8-node = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "13gmrl4lq1rfpdn76v5nid2hsajhrw27s6n88j09v26f0axgp4vp"; + sha256 = "1ki1vjkq8nhmlz7rqi1ic0mjmbjsa7d1bgcvkzdl4q9vhaa5dzvn"; type = "gem"; }; - version = "18.19.0.0"; + version = "22.7.0.4"; }; listen = { dependencies = [ @@ -1274,15 +1331,16 @@ logger = { groups = [ "default" + "development" "test" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0gpg8gzi0xwymw4aaq2iafcbx31i3xzkg3fb30mdxn1d4qhc3dqa"; + sha256 = "0sz584vw17pwrrc5zg6yd8lqcgfpjf4qplq3s7fr0r3505nybky3"; type = "gem"; }; - version = "1.6.0"; + version = "1.6.5"; }; lograge = { dependencies = [ @@ -1333,10 +1391,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1zkjqf37v2d7s11176cb35cl83wls5gm3adnfkn2zcc61h3nxmqh"; + sha256 = "07pfa5kgl7k2hxlzzn89qna6bmiyrxlchgbzi0885frsi08agrk1"; type = "gem"; }; - version = "2.22.0"; + version = "2.24.0"; }; lru_redux = { groups = [ "default" ]; @@ -1419,10 +1477,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1pv28xh8mss25fj4nd5r6zds1br8ssr2bpxr0md5pskv38m5qz0f"; + sha256 = "1y58ba08n4lx123c0hjcc752fc4x802mjy39qj1hq50ak3vpv8br"; type = "gem"; }; - version = "1.0.2"; + version = "1.1.0"; }; message_bus = { dependencies = [ "rack" ]; @@ -1483,10 +1541,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1q1f2sdw3y3y9mnym9dhjgsjr72sq975cfg5c4yx7gwv8nmzbvhk"; + sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf"; type = "gem"; }; - version = "2.8.7"; + version = "2.8.8"; }; mini_racer = { dependencies = [ "libv8-node" ]; @@ -1494,10 +1552,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1ling4ynn7na1cw69wzn8zn00jifwjrnprnynn05rcca1pzs58d1"; + sha256 = "168a3crdgakm9mk5yrqlqsrx587rm7sk1f2l7sfs9cg87f7xb7ji"; type = "gem"; }; - version = "0.14.1"; + version = "0.17.0.pre13"; }; mini_scheduler = { dependencies = [ "sidekiq" ]; @@ -1505,20 +1563,20 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "19c72wlr0zsrg1fiak61h0z1b3glv2l23041xvlwv2i71fw5xavy"; + sha256 = "00rmlcnwhi6gnrwpcv2yicm9ij8zs1mhsbx98ic6rmx8iprq9w6j"; type = "gem"; }; - version = "0.16.0"; + version = "0.18.0"; }; mini_sql = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0yrxjmwhfnvcwbj9vscyq0z67sq09zl8qhmzgakq2ywy4yvcpwgg"; + sha256 = "1vnn88gv935szjz2hndnisfgys19k9z07237w11vpxaad9zn75jj"; type = "gem"; }; - version = "1.5.0"; + version = "1.6.0"; }; mini_suffix = { dependencies = [ "ffi" ]; @@ -1550,10 +1608,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0jj629q3vw5yn90q4di4dyb87pil4a8qfm2srhgy5nc8j2n33v1i"; + sha256 = "0izrg03wn2yj3gd76ck7ifbm9h2kgy8kpg4fk06ckpy4bbicmwlw"; type = "gem"; }; - version = "5.24.1"; + version = "5.25.4"; }; mocha = { dependencies = [ "ruby2_keywords" ]; @@ -1564,10 +1622,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "04k1k9cmdv7q2p1b2z2y1k9dn1hhwjdlwkrp46gfq84v7887xhdl"; + sha256 = "0lgqyxxdxgfik77a7lk2hjkr6flimgxr4gcbg3y7bg1ybn6m6zcg"; type = "gem"; }; - version = "2.4.5"; + version = "2.7.1"; }; msgpack = { groups = [ "default" ]; @@ -1581,10 +1639,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1a5adcb7bwan09mqhj3wi9ib52hmdzmqg7q08pggn3adibyn5asr"; + sha256 = "1a5fsgchkpcca4wf3pipbb2jbj523l7fbaq37j10cr0yymwlkc7z"; type = "gem"; }; - version = "1.7.2"; + version = "1.7.5"; }; multi_json = { groups = [ "default" ]; @@ -1617,26 +1675,16 @@ }; version = "1.1.1"; }; - mutex_m = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1ma093ayps1m92q845hmpk0dmadicvifkbf05rpq9pifhin0rvxn"; - type = "gem"; - }; - version = "0.2.0"; - }; net-http = { dependencies = [ "uri" ]; groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "10n2n9aq00ih8v881af88l1zyrqgs5cl3njdw8argjwbl5ggqvm9"; + sha256 = "1ysrwaabhf0sn24jrp0nnp51cdv0jf688mh5i6fsz63q2c6b48cn"; type = "gem"; }; - version = "0.4.1"; + version = "0.6.0"; }; net-imap = { dependencies = [ @@ -1647,10 +1695,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0rc08fxm10vv73bg0nqyp5bdvl4cvzb3y4cdk4kwmxx414zln652"; + sha256 = "0ak8w6ypw4lba1y1mdmqwvkrh84ps6h9kd7hn029h9k85j9sirmb"; type = "gem"; }; - version = "0.4.14"; + version = "0.5.5"; }; net-pop = { dependencies = [ "net-protocol" ]; @@ -1690,10 +1738,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "017nbw87dpr4wyk81cgj8kxkxqgsgblrkxnmmadc77cg9gflrfal"; + sha256 = "1a9www524fl1ykspznz54i0phfqya4x45hqaz67in9dvw1lfwpfr"; type = "gem"; }; - version = "2.7.3"; + version = "2.7.4"; }; nokogiri = { dependencies = [ @@ -1708,10 +1756,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "15gysw8rassqgdq3kwgl4mhqmrgh7nk2qvrcqp4ijyqazgywn6gq"; + sha256 = "1gzqcs1kkykj8lrnbxc1iwr1wqmmaml8l6wyxdvy0vqq6gxiqyck"; type = "gem"; }; - version = "1.16.7"; + version = "1.18.2"; }; oauth = { dependencies = [ @@ -1757,15 +1805,18 @@ version = "1.4.11"; }; oj = { - dependencies = [ "bigdecimal" ]; + dependencies = [ + "bigdecimal" + "ostruct" + ]; groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0b2narmcw4723lfyy7j0l4pfyv5n0qnmkm4mqgi832p5cg31k090"; + sha256 = "091kbavd1rfiwr6kn1laladspyk67y6hdlsdilz752nqxm9w3ibg"; type = "gem"; }; - version = "3.16.4"; + version = "3.16.9"; }; omniauth = { dependencies = [ @@ -1826,15 +1877,16 @@ dependencies = [ "oauth" "omniauth" + "rack" ]; groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0yw2vzx633p9wpdkd4jxsih6mw604mj7f6myyfikmj4d95c8d9z7"; + sha256 = "1a4dqmlv3if6hb4ddyx4y5v7vkpi7zq901104nl0ya1l0b4j5gr5"; type = "gem"; }; - version = "1.2.0"; + version = "1.2.1"; }; omniauth-oauth2 = { dependencies = [ @@ -1869,10 +1921,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "054d6ybgjdzxw567m7rbnd46yp6gkdbc5ihr536vxd3p15vbhjrw"; + sha256 = "0ygfbbs3c61d32ymja2k6sznj5pr540cip9z91lhzcvsr4zmffpz"; type = "gem"; }; - version = "3.2.0"; + version = "3.3.0"; }; openssl-signature_algorithm = { dependencies = [ "openssl" ]; @@ -1897,10 +1949,20 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0q4jqq3v1bxlfr9jgqmahnygkvl81lr6s1rhm8qg66c9xr9nz241"; + sha256 = "073pk2rhyjq2vhdiz3xh2s884r15cvprw1yfjs7h9bmwdf1f9j81"; type = "gem"; }; - version = "3.1.0"; + version = "3.2.0"; + }; + ostruct = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "05xqijcf80sza5pnlp1c8whdaay8x5dc13214ngh790zrizgp8q9"; + type = "gem"; + }; + version = "0.6.1"; }; parallel = { groups = [ @@ -1911,10 +1973,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "145bn5q7ysnjj02jdf1x4nc1f0xxrv7ihgz9yr1j7sinmawqkq0j"; + sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq"; type = "gem"; }; - version = "1.25.1"; + version = "1.26.3"; }; parallel_tests = { dependencies = [ "parallel" ]; @@ -1925,10 +1987,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0q5q38sfrpwgcqwf5sl6xals5w11xayh8i9nq1vxya2sbrzrgbcq"; + sha256 = "0nikqa0h9znbg31p3hl4y3280sqggjd7m47gmjydxw6iasm66l09"; type = "gem"; }; - version = "4.7.1"; + version = "4.9.0"; }; parser = { dependencies = [ @@ -1943,20 +2005,35 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "10ly2wind06nylyqa5724ld2l0l46d3ag4fm04ifjgw7qdlpf94d"; + sha256 = "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl"; type = "gem"; }; - version = "3.3.4.0"; + version = "3.3.7.0"; }; pg = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0pfj771p5a29yyyw58qacks464sl86d5m3jxjl5rlqqw2m3v5xq4"; + sha256 = "1p2gqqrm895fzr9vi8d118zhql67bm8ydjvgqbq1crdnfggzn7kn"; type = "gem"; }; - version = "1.5.4"; + version = "1.5.9"; + }; + pp = { + dependencies = [ "prettyprint" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1zxnfxjni0r9l2x42fyq0sqpnaf5nakjbap8irgik4kg1h9c6zll"; + type = "gem"; + }; + version = "0.6.2"; }; prettier_print = { groups = [ @@ -1972,6 +2049,20 @@ }; version = "1.2.1"; }; + prettyprint = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "14zicq3plqi217w6xahv7b8f7aj5kpxv1j1w98344ix9h5ay3j9b"; + type = "gem"; + }; + version = "0.2.0"; + }; progress = { groups = [ "default" ]; platforms = [ ]; @@ -2039,7 +2130,10 @@ version = "0.6.1"; }; psych = { - dependencies = [ "stringio" ]; + dependencies = [ + "date" + "stringio" + ]; groups = [ "default" "development" @@ -2048,10 +2142,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0s5383m6004q76xm3lb732bp4sjzb6mxb6rbgn129gy2izsj4wrk"; + sha256 = "1vjrx3yd596zzi42dcaq5xw7hil1921r769dlbz08iniaawlp9c4"; type = "gem"; }; - version = "5.1.2"; + version = "5.2.3"; }; public_suffix = { groups = [ @@ -2073,10 +2167,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0i2vaww6qcazj0ywva1plmjnj6rk23b01szswc5jhcq7s2cikd1y"; + sha256 = "11xd3207k5rl6bz0qxhcb3zcr941rhx7ig2f19gxxmdk7s3hcp7j"; type = "gem"; }; - version = "6.4.2"; + version = "6.6.0"; }; racc = { groups = [ @@ -2087,10 +2181,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "021s7maw0c4d9a6s07vbmllrzqsj2sgmrwimlh8ffkvwqdjrld09"; + sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa"; type = "gem"; }; - version = "1.8.0"; + version = "1.8.1"; }; rack = { groups = [ @@ -2108,10 +2202,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0hj0rkw2z9r1lcg2wlrcld2n3phwrcgqcp7qd1g9a7hwgalh2qzx"; + sha256 = "0ax778fsfvlhj7c11n0d1wdcb8bxvkb190a9lha5d91biwzyx9g4"; type = "gem"; }; - version = "2.2.9"; + version = "2.2.10"; }; rack-mini-profiler = { dependencies = [ "rack" ]; @@ -2163,10 +2257,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c"; + sha256 = "0qy4ylhcfdn65a5mz2hly7g9vl0g13p5a0rmm6sc0sih5ilkcnh0"; type = "gem"; }; - version = "2.1.0"; + version = "2.2.0"; }; rackup = { dependencies = [ @@ -2181,10 +2275,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1wbr03334ba9ilcq25wh9913xciwj0j117zs60vsqm0zgwdkwpp9"; + sha256 = "0jf2ncj2nx56vh96hh2nh6h4r530nccxh87z7c2f37wq515611ms"; type = "gem"; }; - version = "1.0.0"; + version = "1.0.1"; }; rails-dom-testing = { dependencies = [ @@ -2218,10 +2312,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1pm4z853nyz1bhhqr7fzl44alnx4bjachcr6rh6qjj375sfz3sc6"; + sha256 = "0q55i6mpad20m2x1lg5pkqfpbmmapk0sjsrvr1sqgnj2hb5f5z1m"; type = "gem"; }; - version = "1.6.0"; + version = "1.6.2"; }; rails_failover = { dependencies = [ @@ -2233,10 +2327,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1yxbh9xim46jqv9ap63ygvwv9bglbkqssn5hvr065gqly32mi407"; + sha256 = "0pvwgm413fza8q1zc3mmzx504wiljm9d7b9qrkzfzsb2yzpidxs2"; type = "gem"; }; - version = "2.1.1"; + version = "2.2.0"; }; rails_multisite = { dependencies = [ @@ -2247,10 +2341,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1zlfmm19k0p19jzknimqhhzs1phswmfgispph9b5fkag0w3ajxci"; + sha256 = "1al624kvcxa5ijprali9gxp0bqv1w1573iswb5fkg4p2i4xvimvv"; type = "gem"; }; - version = "6.0.0"; + version = "6.1.0"; }; railties = { dependencies = [ @@ -2270,10 +2364,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1z0slb2dlwrwgqijbk37hl4r9bh4h8vzcyswz6a9srl8lzrljq3c"; + sha256 = "07zy8b88qxx493pc5sfkzvxqj3zcf363r1128n3hsvfx2vqipwg3"; type = "gem"; }; - version = "7.1.3.4"; + version = "7.2.2.1"; }; rainbow = { groups = [ @@ -2378,10 +2472,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1isj1b3ywgg2m1vdlnr41lpvpm3dbyarf1lla4dfibfmad9csfk9"; + sha256 = "1455yhd1arccrns3ghhvn4dl6gnrf4zn1xxsaa33ffyqrn399216"; type = "gem"; }; - version = "1.8.0"; + version = "1.9.0"; }; rdoc = { dependencies = [ "psych" ]; @@ -2393,10 +2487,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0ygk2zk0ky3d88v3ll7qh6xqvbvw5jin0hqdi1xkv1dhaw7myzdi"; + sha256 = "0h00mb8wcj937srrafpjzq0klfi8rfpd4b3xpbvn9ghrn2wnzimy"; type = "gem"; }; - version = "6.7.0"; + version = "6.11.0"; }; redcarpet = { groups = [ "generic_import" ]; @@ -2438,10 +2532,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0ik40vcv7mqigsfpqpca36hpmnx0536xa825ai5qlkv3mmkyf9ss"; + sha256 = "0qccah61pjvzyyg6mrp27w27dlv6vxlbznzipxjcswl7x3fhsvyb"; type = "gem"; }; - version = "2.9.2"; + version = "2.10.0"; }; reline = { dependencies = [ "io-console" ]; @@ -2453,10 +2547,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0y6kyz7kcilwdpfy3saqfgnar38vr5ys9sp40ndffy6h1znxfbax"; + sha256 = "1lirwlw59apc8m1wjk85y2xidiv0fkxjn6f7p84yqmmyvish6qjp"; type = "gem"; }; - version = "0.5.9"; + version = "0.6.0"; }; request_store = { dependencies = [ "rack" ]; @@ -2470,19 +2564,17 @@ version = "1.7.0"; }; rexml = { - dependencies = [ "strscan" ]; groups = [ "default" - "development" "test" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0zr5qpa8lampaqzhdcjcvyqnrqcjl7439mqjlkjz43wdhmpnh4s5"; + sha256 = "1ch4k2y80r4glr579kxliqnxld2qa91ydq8fiqam38bzpbps3gpg"; type = "gem"; }; - version = "3.3.2"; + version = "3.4.0"; }; rinku = { groups = [ "default" ]; @@ -2519,10 +2611,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "072qvvrcqj0yfr3b0j932mlhvn41i38bq37z7z07i3ikagndkqwy"; + sha256 = "1pchwrkr0994v7mh054lcp0na3bk3mj2sk0dc33bn6bhxrnirj1a"; type = "gem"; }; - version = "4.3.0"; + version = "4.5.1"; }; rqrcode = { dependencies = [ @@ -2587,10 +2679,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0k252n7s80bvjvpskgfm285a3djjjqyjcarlh3aq7a4dx2s94xsm"; + sha256 = "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl"; type = "gem"; }; - version = "3.13.0"; + version = "3.13.2"; }; rspec-expectations = { dependencies = [ @@ -2605,10 +2697,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0022nxs9gqfhx35n4klibig770n0j31pnkd8anz00yvrvkdghk41"; + sha256 = "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"; type = "gem"; }; - version = "3.13.1"; + version = "3.13.3"; }; rspec-html-matchers = { dependencies = [ @@ -2640,10 +2732,24 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0f3vgp43hajw716vmgjv6f4ar6f97zf50snny6y3fy9kkj4qjw88"; + sha256 = "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3"; type = "gem"; }; - version = "3.13.1"; + version = "3.13.2"; + }; + rspec-multi-mock = { + dependencies = [ "rspec" ]; + groups = [ + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0k3rafylxilq9jzdz450vgiwf3bvz4a9l3ppmgncv78xipr71518"; + type = "gem"; + }; + version = "0.3.1"; }; rspec-rails = { dependencies = [ @@ -2662,10 +2768,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0nqwvyma86zchh4ki416h7cms38h521ghyypaq27b6yvkmp3h8yw"; + sha256 = "0izfwfb9bfb5q3wjgjc85b9nlkribqn8vk75zadafv08qilmnn4l"; type = "gem"; }; - version = "6.1.3"; + version = "7.1.0"; }; rspec-support = { groups = [ @@ -2676,10 +2782,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "03z7gpqz5xkw9rf53835pa8a9vgj4lic54rnix9vfwmp2m7pv1s8"; + sha256 = "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf"; type = "gem"; }; - version = "3.13.1"; + version = "3.13.2"; }; rss = { dependencies = [ "rexml" ]; @@ -2687,10 +2793,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1wv27axi39hhr0nmaffdl5bdjqiafcvp9xhfgnsgfczsblja50sn"; + sha256 = "0dv74a07j3ih5ykyszs1k2cjvgs5c1pzrvcb1wc2bfai8p038qml"; type = "gem"; }; - version = "0.3.0"; + version = "0.3.1"; }; rswag-specs = { dependencies = [ @@ -2706,10 +2812,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1iyqd95l8r8m6jna451xb20lsp0jiajk1gbw845qlyqf6d69xyx2"; + sha256 = "149apnslj99w2fvhlwk39k9wf5zlh1f03j0xs8pbvc08qj2n18lb"; type = "gem"; }; - version = "2.13.0"; + version = "2.16.0"; }; rtlcss = { dependencies = [ "mini_racer" ]; @@ -2730,7 +2836,6 @@ "parser" "rainbow" "regexp_parser" - "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width" @@ -2743,10 +2848,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "18g462bccr0rvszc7kirr89laggdf6254p7pqsckk3izg901chv2"; + sha256 = "1ypwxjy2cp44278m9ljg3s937n2cd6x4yskcyzf1k9m3hkjd3pyk"; type = "gem"; }; - version = "1.65.0"; + version = "1.71.1"; }; rubocop-ast = { dependencies = [ "parser" ]; @@ -2758,10 +2863,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "063qgvqbyv354icl2sgx758z22wzq38hd9skc3n96sbpv0cdc1qv"; + sha256 = "1bi6pgnii77763dzwhafcp8lrmnh4n1bqbdimhc9lfj4zs96gpsg"; type = "gem"; }; - version = "1.31.3"; + version = "1.38.0"; }; rubocop-capybara = { dependencies = [ "rubocop" ]; @@ -2795,10 +2900,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1bcy1zl88f4fxjsda2nf6k13kqrj60z8nsqdv9z51fdkv0aj82wk"; + sha256 = "13n46107615lc8lkx4dh38hpzv4qxx4a0m6dvf0r21zxnvz7ysyl"; type = "gem"; }; - version = "3.8.1"; + version = "3.9.3"; }; rubocop-factory_bot = { dependencies = [ "rubocop" ]; @@ -2830,10 +2935,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "19g6m8ladix1dq8darrqnhbj6n3cgp2ivxnh48yj3nrgw0z97229"; + sha256 = "1ahpgc22shmkk1n96rz3islcpx5sgg4z3mblynjz8qjxipsgrhj1"; type = "gem"; }; - version = "2.25.1"; + version = "2.29.1"; }; rubocop-rspec = { dependencies = [ "rubocop" ]; @@ -2845,10 +2950,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0495y1bwv5j6r9dak7860i6qnm68c53vz2bx2js5lwm6p7py147f"; + sha256 = "11a89mzbby49hbd8nhkjrxpr8bq24fafl728mjkk15ccd8xw28c7"; type = "gem"; }; - version = "3.0.3"; + version = "3.4.0"; }; rubocop-rspec_rails = { dependencies = [ @@ -2880,10 +2985,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0hnalxnvli6248g34n0bj8p3v35vpabak34qjg778bbaavbqg5h5"; + sha256 = "097ac9ns2j29zj5fw08libz8izibrlfgg6vkj55d4bzrii296qq2"; type = "gem"; }; - version = "1.7.0"; + version = "1.7.1"; }; ruby-progressbar = { groups = [ @@ -2908,10 +3013,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "11kqx5yp6syd99k1ksnw84b0sc3cr7icf63dibn2m025qg27ml2i"; + sha256 = "032qqqaj5v09a7r5jpblv7dc37f278qv3b1nag9wsbn6kb4dslbk"; type = "gem"; }; - version = "0.7.1"; + version = "0.7.2"; }; ruby2_keywords = { groups = [ @@ -2928,14 +3033,17 @@ version = "0.0.5"; }; rubyzip = { - groups = [ "default" ]; + groups = [ + "default" + "test" + ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz"; + sha256 = "05an0wz87vkmqwcwyh5rjiaavydfn5f4q1lixcsqkphzvj7chxw5"; type = "gem"; }; - version = "2.3.2"; + version = "2.4.1"; }; sanitize = { dependencies = [ @@ -2946,10 +3054,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1c9j1rwdp87k7b7mawf8agpdycdr2dsl2wvjipmcy1c55kllp2qp"; + sha256 = "111r4xdcf6ihdnrs6wkfc6nqdzrjq0z69x9sf83r7ri6fffip796"; type = "gem"; }; - version = "6.1.2"; + version = "7.0.0"; }; sass-embedded = { dependencies = [ @@ -2976,16 +3084,30 @@ }; version = "1.77.7"; }; + securerandom = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc"; + type = "gem"; + }; + version = "0.4.1"; + }; selenium-devtools = { dependencies = [ "selenium-webdriver" ]; groups = [ "test" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0ph7b947h5cgqyhb5a4jk467bggx48xy619ggh6p38ys8bjszp1l"; + sha256 = "076vwy4x41hahcwni4bjkpc6fira79y1f9qbvx6w5ciwvn99k9qa"; type = "gem"; }; - version = "0.126.0"; + version = "0.132.0"; }; selenium-webdriver = { dependencies = [ @@ -2999,10 +3121,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "00dq3450kadsvxh1lpndasy0bab0ilrjhrnvlicfmkvrx3gfs2j9"; + sha256 = "1lw9b8gxr921akpc02zvwkig5m0m6y6xd438c6f1ysf3c8h75xsc"; type = "gem"; }; - version = "4.23.0"; + version = "4.28.0"; }; shoulda-matchers = { dependencies = [ "activesupport" ]; @@ -3013,10 +3135,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1pfq0w167v4055k0km64sxik1qslhsi32wl2jlidmfzkqmcw00m7"; + sha256 = "1c082vpfdf3865xq6xayxw2hwqswhnc9g030p1gi4hmk9dzvnmch"; type = "gem"; }; - version = "6.2.0"; + version = "6.4.0"; }; sidekiq = { dependencies = [ @@ -3056,10 +3178,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"; + sha256 = "02zi3rwihp7rlnp9x18c9idnkx7x68w6jmxdhyc0xrhjwrz0pasx"; type = "gem"; }; - version = "0.12.3"; + version = "0.13.1"; }; simplecov_json_formatter = { groups = [ @@ -3108,10 +3230,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0lyc6mx4yalsnxc9yp4a5xra4nz1nwwbk5634wlfncml0ll1bnnw"; + sha256 = "10ykzsa76cf8kvbfkszlvbyn4ckcx1mxjhfvwxzs7y28cljhzhkj"; type = "gem"; }; - version = "3.7.3"; + version = "3.7.5"; }; sprockets-rails = { dependencies = [ @@ -3123,10 +3245,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0j7gwm749b3ff6544wxa878fpd1kvf2qc9fafassi8c7735jcin4"; + sha256 = "17hiqkdpcjyyhlm997mgdcr45v35j5802m5a979i5jgqx5n8xs59"; type = "gem"; }; - version = "3.5.1"; + version = "3.5.2"; }; sqlite3 = { dependencies = [ "mini_portile2" ]; @@ -3134,10 +3256,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0k8myqn1g7sfmxs1h0x7jijh5ybszxw5153l0aq0w1cxp3zm6vij"; + sha256 = "0sqshkafxa1r34yj4yxisd4kddmjq9jrhx6azqy3z71nwqv01yl7"; type = "gem"; }; - version = "2.0.2"; + version = "2.5.0"; }; sshkey = { groups = [ "default" ]; @@ -3161,10 +3283,10 @@ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1gdqqwnampxmc54nf6zfy9apkmkpdavzipvfssmjlhnrrjy8qh7f"; + sha256 = "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg"; type = "gem"; }; - version = "0.2.26"; + version = "0.2.27"; }; stringio = { groups = [ @@ -3175,24 +3297,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "07mfqb40b2wh53k33h91zva78f9zwcdnl85jiq74wnaw2wa6wiak"; + sha256 = "0cd1kdrf62p2ya3ia4rz49d5012bqinvqjmcgkakknswz0l1hkr0"; type = "gem"; }; - version = "3.1.1"; - }; - strscan = { - groups = [ - "default" - "development" - "test" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0mamrl7pxacbc79ny5hzmakc9grbjysm3yy6119ppgsg44fsif01"; - type = "gem"; - }; - version = "3.1.0"; + version = "3.1.2"; }; syntax_tree = { dependencies = [ "prettier_print" ]; @@ -3226,10 +3334,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0lxik4ngvbphivyhss9i59c67zxkc0z7k0r683qshw1gdkfxzd8f"; + sha256 = "1vsk2ca9kfrxhyd2xiiyr28hmxkh9vd8j2vwl5f1yfnkv4z52n8s"; type = "gem"; }; - version = "1.3.3.1"; + version = "1.4.4"; }; thor = { groups = [ @@ -3240,20 +3348,34 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1vq1fjp45az9hfp6fxljhdrkv75cvbab1jfrwcw738pnsiqk8zps"; + sha256 = "1nmymd86a0vb39pzj2cwv57avdrl6pl3lf5bsz58q594kqxjkw7f"; type = "gem"; }; - version = "1.3.1"; + version = "1.3.2"; }; timeout = { - groups = [ "default" ]; + groups = [ + "default" + "development" + "test" + ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "16mvvsmx90023wrhf8dxc1lpqh0m8alk65shb7xcya6a9gflw7vg"; + sha256 = "03p31w5ghqfsbz5mcjzvwgkw3h9lbvbknqvrdliy8pxmn9wz02cm"; type = "gem"; }; - version = "0.4.1"; + version = "0.4.3"; + }; + trilogy = { + groups = [ "migrations" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0zq6yrp1074yd5lflz7yqzpicpcg4bxrl7sxw5c4g2m67dk3pmm2"; + type = "gem"; + }; + version = "2.9.0"; }; tzinfo = { dependencies = [ "concurrent-ruby" ]; @@ -3276,10 +3398,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1rg1dmx6mknjazb8qq0j9sb9fah470my5sbjb6f3pa6si5018682"; + sha256 = "02yz3x0qxnnwbf7k18yck5pggbnyy43rq0d5w2r6rwlk3981m31d"; type = "gem"; }; - version = "1.2024.1"; + version = "1.2025.1"; }; uglifier = { dependencies = [ "execjs" ]; @@ -3287,33 +3409,23 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0wgh7bzy68vhv9v68061519dd8samcy8sazzz0w3k8kqpy3g4s5f"; + sha256 = "1apmqsad2y1avffh79f4lfysfppz94fvpyi7lkkj3z8bn60jpm3m"; type = "gem"; }; - version = "4.2.0"; + version = "4.2.1"; }; unf = { - dependencies = [ "unf_ext" ]; groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"; + sha256 = "1aq4bfddln9kx4lycqdgmahsssljsm3vfgbmb6a3y3nq07hw5g76"; type = "gem"; }; - version = "0.1.4"; - }; - unf_ext = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1sf6bxvf6x8gihv6j63iakixmdddgls58cpxpg32chckb2l18qcj"; - type = "gem"; - }; - version = "0.0.9.1"; + version = "0.2.0"; }; unicode-display_width = { + dependencies = [ "unicode-emoji" ]; groups = [ "default" "development" @@ -3322,10 +3434,24 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky"; + sha256 = "1has87asspm6m9wgqas8ghhhwyf2i1yqrqgrkv47xw7jq3qjmbwc"; type = "gem"; }; - version = "2.5.0"; + version = "3.1.4"; + }; + unicode-emoji = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0ajk6rngypm3chvl6r0vwv36q1931fjqaqhjjya81rakygvlwb1c"; + type = "gem"; + }; + version = "4.0.4"; }; unicorn = { dependencies = [ @@ -3369,10 +3495,24 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "094gk72ckazf495qc76gk09b5i318d5l9m7bicg2wxlrjcm3qm96"; + sha256 = "09qyg6a29cfgd46qid8qvx4sjbv596v19ym73xvhanbyxd6500xk"; type = "gem"; }; - version = "0.13.0"; + version = "1.0.2"; + }; + useragent = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0i1q2xdjam4d7gwwc35lfnz0wyyzvnca0zslcfxm9fabml9n83kh"; + type = "gem"; + }; + version = "0.16.11"; }; version_gem = { groups = [ "default" ]; @@ -3408,10 +3548,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "158d2ikjfzw43kgm095klp43ihphk0cv5xjprk44w73xfv03i9qg"; + sha256 = "08kixkdp41dw39kqfxf2wp5m4z9b6fxg6yfa6xin0wy7dxzka0dy"; type = "gem"; }; - version = "3.23.1"; + version = "3.24.0"; }; webrick = { groups = [ @@ -3422,10 +3562,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r"; + sha256 = "12d9n8hll67j737ym2zw4v23cn4vxyfkb6vyv1rzpwv6y6a3qbdl"; type = "gem"; }; - version = "1.8.1"; + version = "1.9.1"; }; websocket = { groups = [ @@ -3469,23 +3609,24 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1r0b8w58p7gy06wph1qdjv2p087hfnmhd9jk23vjdj803dn761am"; + sha256 = "14k9lb9a60r9z2zcqg08by9iljrrgjxdkbd91gw17rkqkqwi1sd6"; type = "gem"; }; - version = "0.9.36"; + version = "0.9.37"; }; zeitwerk = { groups = [ "default" "development" + "migrations" "test" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "08cfb35232p9s1r4jqv8wacv38vxh699mgbr9y03ga89gx9lipqp"; + sha256 = "0mi7b90hvc6nqv37q27df4i2m27yy56yfy2ki5073474a1h9hi89"; type = "gem"; }; - version = "2.6.16"; + version = "2.7.1"; }; } diff --git a/pkgs/servers/web-apps/discourse/update.py b/pkgs/servers/web-apps/discourse/update.py index 65e97ec5b212..84b61349eda6 100755 --- a/pkgs/servers/web-apps/discourse/update.py +++ b/pkgs/servers/web-apps/discourse/update.py @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ requests click click-log packaging ])" bundix bundler nix-update nurl prefetch-yarn-deps +#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ requests click click-log packaging ])" bundix bundler nix-update nurl from __future__ import annotations import click @@ -86,13 +86,6 @@ class DiscourseRepo: return self._latest_commit_sha - def get_yarn_lock_hash(self, rev: str, path: str): - yarnLockText = self.get_file(path, rev) - with tempfile.NamedTemporaryFile(mode='w') as lockFile: - lockFile.write(yarnLockText) - hash = subprocess.check_output(['prefetch-yarn-deps', lockFile.name]).decode().strip() - return subprocess.check_output(["nix", "hash", "to-sri", "--type", "sha256", hash]).decode().strip() - def get_file(self, filepath, rev): """Return file contents at a given rev. @@ -105,6 +98,24 @@ class DiscourseRepo: return r.text +def _get_build_lock_hash(): + nixpkgs_path = Path(__file__).parent / '../../../../' + output = subprocess.run(['nix-build', '-A', 'discourse'], text=True, cwd=nixpkgs_path, capture_output=True) + # The line is of the form " got: sha256-xxx" + lines = [i.strip() for i in output.stderr.splitlines()] + new_hash_lines = [i.strip("got:").strip() for i in lines if i.startswith("got:")] + if len(new_hash_lines) == 0: + if output.returncode != 0: + print("Error while fetching new hash with nix build") + print(output.stderr) + print("No hash change is needed") + return None + if len(new_hash_lines) > 1: + print(new_hash_lines) + raise Exception("Got an unexpected number of new hash lines:") + return new_hash_lines[0] + + def _call_nix_update(pkg, version): """Call nix-update from nixpkgs root dir.""" nixpkgs_path = Path(__file__).parent / '../../../../' @@ -233,16 +244,17 @@ def update(rev): _call_nix_update('discourse', version.version) - old_yarn_hash = _nix_eval('discourse.assets.yarnOfflineCache.outputHash') - new_yarn_hash = repo.get_yarn_lock_hash(version.tag, "yarn.lock") - click.echo(f"Updating yarn lock hash: {old_yarn_hash} -> {new_yarn_hash}") + old_pnpm_hash = _nix_eval('discourse.assets.pnpmDeps.outputHash') + new_pnpm_hash = _get_build_lock_hash() + if new_pnpm_hash is not None: + click.echo(f"Updating yarn lock hash: {old_pnpm_hash} -> {new_pnpm_hash}") - with open(Path(__file__).parent / "default.nix", 'r+') as f: - content = f.read() - content = content.replace(old_yarn_hash, new_yarn_hash) - f.seek(0) - f.write(content) - f.truncate() + with open(Path(__file__).parent / "default.nix", 'r+') as f: + content = f.read() + content = content.replace(old_pnpm_hash, new_pnpm_hash) + f.seek(0) + f.write(content) + f.truncate() @cli.command() From 9522ab87ff7e1509a85717ebc872116da66e0dcc Mon Sep 17 00:00:00 2001 From: Leona Maroni Date: Tue, 8 Apr 2025 22:16:13 +0200 Subject: [PATCH 3/3] discourse.plugins: update for 3.4.2 versions --- .../plugins/discourse-assign/default.nix | 4 +- .../discourse-bbcode-color/default.nix | 4 +- .../plugins/discourse-calendar/default.nix | 4 +- .../discourse-chat-integration/default.nix | 4 +- .../discourse-data-explorer/default.nix | 4 +- .../plugins/discourse-docs/default.nix | 4 +- .../plugins/discourse-github/Gemfile.lock | 18 +++---- .../plugins/discourse-github/default.nix | 4 +- .../plugins/discourse-github/gemset.nix | 24 ++++----- .../plugins/discourse-ldap-auth/Gemfile | 3 +- .../plugins/discourse-ldap-auth/Gemfile.lock | 17 ++---- .../plugins/discourse-ldap-auth/default.nix | 4 +- .../plugins/discourse-ldap-auth/gemset.nix | 54 +------------------ .../plugins/discourse-math/default.nix | 4 +- .../discourse-openid-connect/default.nix | 4 +- .../plugins/discourse-prometheus/Gemfile | 3 +- .../plugins/discourse-prometheus/Gemfile.lock | 9 ++-- .../plugins/discourse-prometheus/default.nix | 4 +- .../plugins/discourse-prometheus/gemset.nix | 8 +-- .../spec-import-fix-abi-version.patch | 24 ++++----- .../plugins/discourse-reactions/default.nix | 4 +- .../discourse-saved-searches/default.nix | 4 +- .../plugins/discourse-solved/default.nix | 4 +- .../plugins/discourse-voting/default.nix | 6 +-- .../discourse-yearly-review/default.nix | 4 +- pkgs/servers/web-apps/discourse/update.py | 9 ++-- 26 files changed, 84 insertions(+), 151 deletions(-) diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix index e90a8e494856..16f470709b89 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-assign"; - rev = "6472f4593e1a4abbb457288db012ddb10f0b16f5"; - sha256 = "sha256-+jcL/6ddXldUG0VvcWiEMaFk0f37HyOf+bOFEMzuoXo="; + rev = "bf2a4bdb3ea4e26ec493d8dbc1f4cc8680f6c543"; + sha256 = "sha256-inoANPG7xlKdhnuyoRay7Oyz7OSZWzphWS599kNP4Uo="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-docs"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix index b07422f3a58b..d1a09684cea5 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-bbcode-color"; - rev = "6a26e5937b48bbf3ca9bd19e4f40adc513bcd774"; - sha256 = "sha256-dWXvCZLxhCxte/88EnYOsy1gjBWjk24BjUM01s55CaU="; + rev = "ecd4befeb4eae48aa0a37a88e5aca60e59730411"; + sha256 = "sha256-enpeXc6pE9+5EdbMIFsnWd++ixlHBKFRxbXmvJYJftg="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-bbcode-color"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix index 4c162508575e..d760afafba29 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix @@ -10,8 +10,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-calendar"; - rev = "908ad614bc412f831f929ca726a4bda0b9ccaab6"; - sha256 = "sha256-ZzzcmTY/w9wa5wTR7ofJiNVmXwoKTKaKN202O80DO9g="; + rev = "c1031224a552ea01958d153350c2d1254b323579"; + sha256 = "sha256-xwaYoJpBBvbmuPsDLxczLPXU862OVcirxeYpW5sfy5A="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-calendar"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix index 75c022b66250..d64aea099066 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-chat-integration"; - rev = "e19808d4ad3f7d16cd9b93f315ca586f694e6288"; - sha256 = "sha256-EplT9bQFtOvraSkFpBpe7TyNLROsdcRXz79j4MNPEs4="; + rev = "29ad813cd04812786780e1706cbc043810dea7d8"; + sha256 = "sha256-5mGnHLlw3qIGi8et3WV1RXnrPB+bySi3wQryKTa5wNg="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-chat-integration"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix index 51e565b143e3..d5b4a95b5c66 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-data-explorer"; - rev = "2d0dc39767f0c68d333f113c550731a5546c3137"; - sha256 = "sha256-3eQDMzTjfcSip94BXy1/VcbulsTsL1EHjRs41c27+ns="; + rev = "2ba204a1de2638a7959e588b88f3b6c7fcf7a70f"; + sha256 = "sha256-u8yGKANEyqm63/ZnJLe3u1nkNGZyX0wFUBIKU5GgjzY="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-data-explorer"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix index b87cf87d990f..573bffa7808a 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-docs"; - rev = "7721b1646dead4719c02868ef7965f1b27c74eb3"; - sha256 = "sha256-k2m88wsUmxAXC2LLvElwHVlMp6UzGSLDzEB+HJmKm5g="; + rev = "4e42539cda9a54d7827bcdf51b6dfbcf56d24cc9"; + sha256 = "sha256-sv9Q0qEQVncQw3QLiro5YfVcHJAG8sJ0GTjduCZ0iP4="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-docs"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock index 46511cf34da4..f2931a5d4ad1 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock @@ -3,15 +3,15 @@ GEM specs: addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - faraday (2.12.0) - faraday-net_http (>= 2.0, < 3.4) + faraday (2.12.3) + faraday-net_http (>= 2.0, < 3.5) json logger - faraday-net_http (3.3.0) - net-http - json (2.7.3) - logger (1.6.1) - net-http (0.4.1) + faraday-net_http (3.4.0) + net-http (>= 0.5.0) + json (2.10.2) + logger (1.7.0) + net-http (0.6.0) uri octokit (5.6.1) faraday (>= 1, < 3) @@ -20,7 +20,7 @@ GEM sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - uri (0.13.1) + uri (1.0.3) PLATFORMS ruby @@ -30,4 +30,4 @@ DEPENDENCIES sawyer (= 0.9.2) BUNDLED WITH - 2.4.22 + 2.5.22 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix index 8809625fd6df..972a06f778c0 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix @@ -10,8 +10,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-github"; - rev = "e24de3f5cd6ec5cef17dc3e07dfb3bfac8867e08"; - sha256 = "sha256-MbVYIsO2m0O5FriF5HphNhLcazgAJzIsl0aVd2YQGaA="; + rev = "59e5fc5692959c6c564ab0e09de364ccfedd6702"; + sha256 = "sha256-b+8eSw8Kbz2CZN16Rd7c8uyH5P1iYhOJmdXu1C5UclU="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-github"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix index b7faea9c8a6a..36d463ebb5c5 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix @@ -20,10 +20,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "05s5pyxh7y68jphb0lgrh0ksxbp4lmbsc6a6qg0ahj15pjqx01ni"; + sha256 = "0dxalpc0ldvjjmd7z95na9lm99d2baz48sf9axk3a6x3pn50ibdi"; type = "gem"; }; - version = "2.12.0"; + version = "2.12.3"; }; faraday-net_http = { dependencies = [ "net-http" ]; @@ -31,30 +31,30 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0rg54k4skaz8z7j358p6pdzc9pr84fjq7sdlpicf7s5ig7vb1rlk"; + sha256 = "0jp5ci6g40d6i50bsywp35l97nc2fpi9a592r2cibwicdb6y9wd1"; type = "gem"; }; - version = "3.3.0"; + version = "3.4.0"; }; json = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1prbjd8r4rq6hjc6d5hn8hlpf4g9h62swxj7absjac7qqnzwrhvw"; + sha256 = "01lbdaizhkxmrw4y8j3wpvsryvnvzmg0pfs56c52laq2jgdfmq1l"; type = "gem"; }; - version = "2.7.3"; + version = "2.10.2"; }; logger = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0lwncq2rf8gm79g2rcnnyzs26ma1f4wnfjm6gs4zf2wlsdz5in9s"; + sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr"; type = "gem"; }; - version = "1.6.1"; + version = "1.7.0"; }; net-http = { dependencies = [ "uri" ]; @@ -62,10 +62,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "10n2n9aq00ih8v881af88l1zyrqgs5cl3njdw8argjwbl5ggqvm9"; + sha256 = "1ysrwaabhf0sn24jrp0nnp51cdv0jf688mh5i6fsz63q2c6b48cn"; type = "gem"; }; - version = "0.4.1"; + version = "0.6.0"; }; octokit = { dependencies = [ @@ -110,9 +110,9 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "07ndgxyhzd02cg94s6rnfhkb9rwx9z72lzk368sa9j78wc9qnbfz"; + sha256 = "04bhfvc25b07jaiaf62yrach7khhr5jlr5bx6nygg8pf11329wp9"; type = "gem"; }; - version = "0.13.1"; + version = "1.0.3"; }; } diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile index e140770e4e6a..682c291aaa79 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile @@ -5,5 +5,4 @@ source "https://rubygems.org" # gem "rails" gem 'pyu-ruby-sasl', '0.0.3.3', require: false gem 'rubyntlm', '0.3.4', require: false -gem 'net-ldap', '0.17.1' -gem 'omniauth-ldap', '1.0.5' +gem 'net-ldap', '0.18.0' diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock index f131626f7c45..51ffb630f73a 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock @@ -1,28 +1,17 @@ GEM remote: https://rubygems.org/ specs: - hashie (5.0.0) - net-ldap (0.17.1) - omniauth (1.9.2) - hashie (>= 3.4.6) - rack (>= 1.6.2, < 3) - omniauth-ldap (1.0.5) - net-ldap (~> 0.12) - omniauth (~> 1.0) - pyu-ruby-sasl (~> 0.0.3.2) - rubyntlm (~> 0.3.4) + net-ldap (0.18.0) pyu-ruby-sasl (0.0.3.3) - rack (2.2.7) rubyntlm (0.3.4) PLATFORMS ruby DEPENDENCIES - net-ldap (= 0.17.1) - omniauth-ldap (= 1.0.5) + net-ldap (= 0.18.0) pyu-ruby-sasl (= 0.0.3.3) rubyntlm (= 0.3.4) BUNDLED WITH - 2.4.10 + 2.5.22 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix index 52b7dbc093fe..898806d4b8f0 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix @@ -10,8 +10,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "jonmbake"; repo = "discourse-ldap-auth"; - rev = "edcf06957090e8d978a89fe7b07a6ba56fe35214"; - sha256 = "sha256-VxBBip8QEXDQGDOsU5cXjUZe2HThJn20BPsNr33KhKI="; + rev = "fa1d661004ca99036ff628a9c4be12a81265d784"; + sha256 = "sha256-2DYrYgC3H+e8USoo1MbJin1f5tshIUsQa6J7avnpvEc="; }; meta = with lib; { homepage = "https://github.com/jonmbake/discourse-ldap-auth"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix index 97d9bac530d8..e18f7f428066 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix @@ -1,53 +1,13 @@ { - hashie = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x"; - type = "gem"; - }; - version = "5.0.0"; - }; net-ldap = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1ycw0qsw3hap8svakl0i30jkj0ffd4lpyrn17a1j0w8mz5ainmsj"; + sha256 = "0xqcffn3c1564c4fizp10dzw2v5g2pabdzrcn25hq05bqhsckbar"; type = "gem"; }; - version = "0.17.1"; - }; - omniauth = { - dependencies = [ - "hashie" - "rack" - ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1jn9j54l5h7xcba2vjq74l1dk0xrwvsjxam4qhylpi52nw0h5502"; - type = "gem"; - }; - version = "1.9.2"; - }; - omniauth-ldap = { - dependencies = [ - "net-ldap" - "omniauth" - "pyu-ruby-sasl" - "rubyntlm" - ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1ld3mx46xa1qhc0cpnck1n06xcxs0ag4n41zgabxri27a772f9wz"; - type = "gem"; - }; - version = "1.0.5"; + version = "0.18.0"; }; pyu-ruby-sasl = { groups = [ "default" ]; @@ -59,16 +19,6 @@ }; version = "0.0.3.3"; }; - rack = { - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "16w217k9z02c4hqizym8dkj6bqmmzx4qdvqpnskgzf174a5pwdxk"; - type = "gem"; - }; - version = "2.2.7"; - }; rubyntlm = { groups = [ "default" ]; platforms = [ ]; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix index 9fec32d7f749..db65b1d07a59 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-math"; - rev = "19ab34b62ab75589419ee39af7d6ba2fec1bdc4a"; - sha256 = "sha256-Z6+Bx1DKEE+s1flt5K/HfevzXsA+mA0YfQxmg7JQMfA="; + rev = "90a56a5b463546cba5017cf25168bae759bcbf77"; + sha256 = "sha256-q8cNRIHYEkaE6QkdsHu4tPwSw3LnCNgKjbyESBXheE0="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-math"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix index 3a2c9e026a1f..df9095c817d6 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix @@ -10,8 +10,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-openid-connect"; - rev = "07e30e59bf5ca3925328e936359a5564d7f5b0af"; - sha256 = "sha256-uqxwUjbkS2o9r9pvnTgv+3jzFhUOb8KmorT3ody2d3o="; + rev = "e08efecc012a5ab8fa95084be93d4fd07ccebab9"; + sha256 = "sha256-v4UWFDdOFON+nHkH490kBQ4sXX7Mrp7KVhN1x9HML7w="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-openid-connect"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile index 3d802617c347..d8ec2847bb04 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile @@ -3,5 +3,4 @@ source "https://rubygems.org" # gem "rails" -gem "webrick", "1.8.1" -gem "prometheus_exporter", "2.0.6" +gem "prometheus_exporter", "2.2.0" diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock index 69a3881ccabf..2d35b3f3cead 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock @@ -1,16 +1,15 @@ GEM remote: https://rubygems.org/ specs: - prometheus_exporter (2.0.6) + prometheus_exporter (2.2.0) webrick - webrick (1.8.1) + webrick (1.9.1) PLATFORMS ruby DEPENDENCIES - prometheus_exporter (= 2.0.6) - webrick (= 1.8.1) + prometheus_exporter (= 2.2.0) BUNDLED WITH - 2.4.22 + 2.5.22 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix index 6ad453601be4..349057769dd8 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix @@ -10,8 +10,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-prometheus"; - rev = "b1b899ca995783ef5eba90c35dbfc120a2949c38"; - sha256 = "sha256-tSU1aba8EadObOsb/nRM4jAdQ6D1F9QiIaGoHi2GGDk="; + rev = "f46906e1d555f6838d74ea38d5037264cc1020b0"; + sha256 = "sha256-czrxhH0L+vCZA8DKN6acW///iWJs9GIppEeaP2MOJBQ="; }; patches = [ diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix index d4e5472420b5..56611e62a6d6 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix @@ -5,19 +5,19 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0pb4k6px8b36bvnw3d14j31s33ns60dcwxixbcgvhpzavd7fparb"; + sha256 = "15vl8fw8vjnaj9g129dzrwk9nlrdqgffaj3rys4ba9ns2bqim9rq"; type = "gem"; }; - version = "2.0.6"; + version = "2.2.0"; }; webrick = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r"; + sha256 = "12d9n8hll67j737ym2zw4v23cn4vxyfkb6vyv1rzpwv6y6a3qbdl"; type = "gem"; }; - version = "1.8.1"; + version = "1.9.1"; }; } diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch index de3a5c718f00..bcb73ffd1088 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch @@ -1,20 +1,16 @@ diff --git a/bin/collector b/bin/collector -index 6bd04a8caffb..119526fc6ea3 100644 +index 4bdce08178..5edc0a4aee 100755 --- a/bin/collector +++ b/bin/collector -@@ -3,12 +3,14 @@ - +@@ -3,9 +3,11 @@ + Process.setproctitle("discourse prometheus-collector") - + +# We need the ABI version {MAJOR}.{MINOR}.0 here. +abi_version = ENV['GEM_PATH'].split("/")[-1] - [ - "webrick-#{ENV["WEBRICK_VERSION"]}", - "prometheus_exporter-#{ENV["PROMETHEUS_EXPORTER_VERSION"]}", - ].each do |spec_name| - spec_file = -- File.expand_path("../../gems/#{RUBY_VERSION}/specifications/#{spec_name}.gemspec", __FILE__) -+ File.expand_path("../../gems/#{abi_version}/specifications/#{spec_name}.gemspec", __FILE__) - spec = Gem::Specification.load(spec_file) - spec.activate - end + spec_file = + File.expand_path( +- "../../gems/#{RUBY_VERSION}/specifications/#{"prometheus_exporter-#{ENV["PROMETHEUS_EXPORTER_VERSION"]}"}.gemspec", ++ "../../gems/#{abi_version}/specifications/#{"prometheus_exporter-#{ENV["PROMETHEUS_EXPORTER_VERSION"]}"}.gemspec", + __FILE__, + ) diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix index 50881d6782fb..8a1e2551666c 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-reactions"; - rev = "c4cde3bb12841733d1f2ac4df1bb099aae15cece"; - sha256 = "sha256-JXyXBJX7PBYmVylZ7PE+14RnlgR4EA1XBSue1ek0P/g="; + rev = "4844fe7afc2fc6a809ed0249a6b42a4c92384461"; + sha256 = "sha256-iudlFK+U+FwjNbduNTdwnT7oHww+xPz0+rZgzFUKT/8="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-reactions"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix index 4d9fe87853a2..3c69b86189e0 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-saved-searches"; - rev = "16bde9b0bcb3b517cfabc0ea740c10b091157799"; - sha256 = "sha256-tn1AKiRPaunqlrtcC/6NETUnNxJq1uNi+IIF0TZPbDg="; + rev = "b78aae086e95255b1a1e91a01e2d56b45b7aead2"; + sha256 = "sha256-Wai+oZR+Pzjre6Th0kQDgvFOwfPRHlZkpKYYOUKNlx4="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-saved-searches"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix index 14aac40df9bd..9c919190dad6 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-solved"; - rev = "1bbdfd8f5681171dc3f0e9ea93cd56997dc7938a"; - sha256 = "sha256-nuF/tCoHgsKE+wjQ3BRV1s1X77vjQiASLRCWErh64C4="; + rev = "e82c6ae1ca38ccebb34669148f8de93a3028906e"; + sha256 = "sha256-KwpBCk4fjkZlSzgtc0OXvQupPd+aPb9nONyyALpEZhg="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-solved"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix index 1fe9b05ccadc..f5408d01c320 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix @@ -8,9 +8,9 @@ mkDiscoursePlugin { name = "discourse-voting"; src = fetchFromGitHub { owner = "discourse"; - repo = "discourse-voting"; - rev = "4ebcd1187b59290b79db8c61c89df9f72bf1363c"; - sha256 = "sha256-aDJKy7Qpsj1n+HrumoORUo+R9HF3gQ0juJBKXj7GHsY="; + repo = "discourse-topic-voting"; + rev = "b31bc6e037af776d2cea3f34c44b02a105b34d24"; + sha256 = "sha256-835xFg2NnhE4HPju2j3w+N5rtRYinOBbBMerRJpnpxQ="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-voting"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix index f9fa3c755931..9b738112afa9 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix @@ -9,8 +9,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-yearly-review"; - rev = "bb124c211c37873c1d54e96e7063f1868c65d0ad"; - sha256 = "sha256-xAFpt/uVW8+Y2wwL20u/rMixcFgygwrarsdRsywsbmQ="; + rev = "5229931ace1ee19ef2d1b7ed2469911f315669bb"; + sha256 = "sha256-2xgHtXB7F5XP2OmB1QswrnPk5Sf32DFoUhlU4RMEZhI="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-yearly-review"; diff --git a/pkgs/servers/web-apps/discourse/update.py b/pkgs/servers/web-apps/discourse/update.py index 84b61349eda6..13dbf283c881 100755 --- a/pkgs/servers/web-apps/discourse/update.py +++ b/pkgs/servers/web-apps/discourse/update.py @@ -298,7 +298,7 @@ def update_plugins(): {'name': 'discourse-saved-searches'}, {'name': 'discourse-solved'}, {'name': 'discourse-spoiler-alert'}, - {'name': 'discourse-voting'}, + {'name': 'discourse-voting', 'repo_name': "discourse-topic-voting"}, {'name': 'discourse-yearly-review'}, ] @@ -319,8 +319,9 @@ def update_plugins(): # https://meta.discourse.org/t/pinning-plugin-and-theme-versions-for-older-discourse-installs/156971 # this makes sure we don't upgrade plugins to revisions that # are incompatible with the packaged Discourse version + repo_latest_commit = repo.latest_commit_sha try: - compatibility_spec = repo.get_file('.discourse-compatibility', repo.latest_commit_sha) + compatibility_spec = repo.get_file('.discourse-compatibility', repo_latest_commit) versions = [(DiscourseVersion(discourse_version), plugin_rev.strip(' ')) for [discourse_version, plugin_rev] in [line.lstrip("< ").split(':') @@ -329,12 +330,12 @@ def update_plugins(): discourse_version = DiscourseVersion(_get_current_package_version('discourse')) versions = list(filter(lambda ver: ver[0] >= discourse_version, versions)) if versions == []: - rev = repo.latest_commit_sha + rev = repo_latest_commit else: rev = versions[0][1] print(rev) except requests.exceptions.HTTPError: - rev = repo.latest_commit_sha + rev = repo_latest_commit filename = _nix_eval(f'builtins.unsafeGetAttrPos "src" discourse.plugins.{name}') if filename is None: