From 9581d573828b4f6d853d6715507a55178bc8356d Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 11 Feb 2020 15:21:36 -0600 Subject: [PATCH 1/8] First round at cleaning up descriptions --- config/description.exs | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/config/description.exs b/config/description.exs index e5bac9b3f..921316d07 100644 --- a/config/description.exs +++ b/config/description.exs @@ -637,22 +637,22 @@ %{ key: :registrations_open, type: :boolean, - description: "Enable registrations for anyone, invitations can be enabled when `false`" + description: "Enable registrations for anyone. Invitations require this setting to be disabled." }, %{ key: :invites_enabled, type: :boolean, - description: "Enable user invitations for admins (depends on `registrations_open: false`)" + description: "Enable user invitations for admins (depends on `registrations_open` being disabled)." }, %{ key: :account_activation_required, type: :boolean, - description: "Require users to confirm their emails before signing in" + description: "Require users to confirm their emails before signing in." }, %{ key: :federating, type: :boolean, - description: "Enable federation with other instances" + description: "Enable federation with other instances." }, %{ key: :federation_incoming_replies_max_depth, @@ -761,14 +761,14 @@ key: :extended_nickname_format, type: :boolean, description: - "Set to `true` to use extended local nicknames format (allows underscores/dashes)." <> + "Enable to use extended local nicknames format (allows underscores/dashes)." <> " This will break federation with older software for theses nicknames." }, %{ key: :cleanup_attachments, type: :boolean, description: """ - "Set to `true` to remove associated attachments when status is removed. + "Enable to remove associated attachments when status is removed. This will not affect duplicates and attachments without status. Enabling this will increase load to database when deleting statuses on larger instances. """ @@ -799,7 +799,7 @@ key: :no_attachment_links, type: :boolean, description: - "Set to `true` to disable automatically adding attachment link text to statuses" + "Enable to disable automatically adding attachment link text to statuses" }, %{ key: :welcome_message, @@ -830,14 +830,14 @@ key: :safe_dm_mentions, type: :boolean, description: - "If set to `true`, only mentions at the beginning of a post will be used to address people in direct messages." <> + "If enabled, only mentions at the beginning of a post will be used to address people in direct messages." <> " This is to prevent accidental mentioning of people when talking about them (e.g. \"@admin please keep an eye on @bad_actor\")." <> - " Default: `false`" + " Default: disabled" }, %{ key: :healthcheck, type: :boolean, - description: "If set to `true`, system data will be shown on /api/pleroma/healthcheck" + description: "If enabled, system data will be shown on /api/pleroma/healthcheck" }, %{ key: :remote_post_retention_days, @@ -867,7 +867,7 @@ %{ key: :skip_thread_containment, type: :boolean, - description: "Skip filter out broken threads. Default: `true`" + description: "Skip filtering out broken threads. Default: enabled" }, %{ key: :limit_to_local_content, @@ -1159,17 +1159,15 @@ key: :alwaysShowSubjectInput, label: "Always show subject input", type: :boolean, - description: "When set to `false`, auto-hide the subject field when it's empty" + description: "When disabled, auto-hide the subject field if it's empty" }, %{ key: :logoMask, label: "Logo mask", type: :boolean, description: - "By default it assumes logo used will be monochrome-with-alpha one, this is done to be compatible with both light and dark themes, " <> - "so that white logo designed with dark theme in mind won't be invisible over light theme, this is done via CSS3 Masking. " <> - "Basically - it will take alpha channel of the image and fill non-transparent areas of it with solid color. " <> - "If you really want colorful logo - it can be done by setting logoMask to false." + "By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. " <> + "If you want a colorful logo you ust disable logoMask." }, %{ key: :logoMargin, @@ -1183,13 +1181,13 @@ %{ key: :stickers, type: :boolean, - description: "Enables/disables stickers." + description: "Enables stickers." }, %{ key: :enableEmojiPicker, label: "Emoji picker", type: :boolean, - description: "Enables/disables emoji picker." + description: "Enables emoji picker." } ] }, @@ -2086,7 +2084,7 @@ key: :unfurl_nsfw, label: "Unfurl NSFW", type: :boolean, - description: "If set to `true` NSFW attachments will be shown in previews" + description: "When enabled NSFW attachments will be shown in previews" } ] }, @@ -2358,7 +2356,7 @@ type: :boolean, description: "OAuth admin scope requirement toggle. " <> - "If `true`, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token " <> + "If enabled, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token " <> "(client app must support admin scopes). If `false` and token doesn't have admin scope(s)," <> "`is_admin` user flag grants access to admin-specific actions." }, From ff9fd4ca895563178e3174fdc86d866508c5a9fa Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 11 Feb 2020 15:39:19 -0600 Subject: [PATCH 2/8] Fix the confusingly named and inverted logic of "no_attachment_links" The setting is now simply "attachment_links" and the boolean value does what you expect. A double negative is never possible and describing the functionality is no longer a philospher's worst nightmare. --- CHANGELOG.md | 1 + config/config.exs | 2 +- config/description.exs | 4 ++-- lib/pleroma/web/common_api/utils.ex | 8 ++++---- test/tasks/config_test.exs | 4 ++-- test/web/common_api/common_api_utils_test.exs | 6 +++--- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 150fd27cd..3e838983b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** attachment links (`config :pleroma, :instance, no_attachment_links` and `config :pleroma, Pleroma.Upload, link_name`) disabled by default - **Breaking:** OAuth: defaulted `[:auth, :enforce_oauth_admin_scope_usage]` setting to `true` which demands `admin` OAuth scope to perform admin actions (in addition to `is_admin` flag on User); make sure to use bundled or newer versions of AdminFE & PleromaFE to access admin / moderator features. - **Breaking:** Dynamic configuration has been rearchitected. The `:pleroma, :instance, dynamic_configuration` setting has been replaced with `config :pleroma, configurable_from_database`. Please backup your configuration to a file and run the migration task to ensure consistency with the new schema. +- **Breaking:** `:instance, no_attachment_links` has been replaced with `:instance, attachment_links` which still takes a boolean value but doesn't use double negative language. - Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) - Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler - Enabled `:instance, extended_nickname_format` in the default config diff --git a/config/config.exs b/config/config.exs index 41c1ff637..ccc0c4e52 100644 --- a/config/config.exs +++ b/config/config.exs @@ -241,7 +241,7 @@ mrf_transparency_exclusions: [], autofollowed_nicknames: [], max_pinned_statuses: 1, - no_attachment_links: true, + attachment_links: false, welcome_user_nickname: nil, welcome_message: nil, max_report_comment_size: 1000, diff --git a/config/description.exs b/config/description.exs index e5bac9b3f..6b9d09de9 100644 --- a/config/description.exs +++ b/config/description.exs @@ -796,10 +796,10 @@ ] }, %{ - key: :no_attachment_links, + key: :attachment_links, type: :boolean, description: - "Set to `true` to disable automatically adding attachment link text to statuses" + "Enable to automatically add attachment link text to statuses" }, %{ key: :welcome_message, diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index ca6c93862..4445894b0 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -228,9 +228,9 @@ def make_content_html( data, visibility ) do - no_attachment_links = + attachment_links = data - |> Map.get("no_attachment_links", Config.get([:instance, :no_attachment_links])) + |> Map.get("attachment_links", Config.get([:instance, :attachment_links])) |> truthy_param?() content_type = get_content_type(data["content_type"]) @@ -244,7 +244,7 @@ def make_content_html( status |> format_input(content_type, options) - |> maybe_add_attachments(attachments, no_attachment_links) + |> maybe_add_attachments(attachments, attachment_links) |> maybe_add_nsfw_tag(data) end @@ -270,7 +270,7 @@ def make_context(_, %Participation{} = participation) do def make_context(%Activity{data: %{"context" => context}}, _), do: context def make_context(_, _), do: Utils.generate_context_id() - def maybe_add_attachments(parsed, _attachments, true = _no_links), do: parsed + def maybe_add_attachments(parsed, _attachments, false = _no_links), do: parsed def maybe_add_attachments({text, mentions, tags}, attachments, _no_links) do text = add_attachments(text, attachments) diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index d79d34276..2f9405550 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -145,7 +145,7 @@ test "load a settings with large values and pass to file", %{temp_file: temp_fil mrf_transparency_exclusions: [], autofollowed_nicknames: [], max_pinned_statuses: 1, - no_attachment_links: true, + attachment_links: false, welcome_user_nickname: nil, welcome_message: nil, max_report_comment_size: 1000, @@ -190,7 +190,7 @@ test "load a settings with large values and pass to file", %{temp_file: temp_fil end assert file == - "#{header}\n\nconfig :pleroma, :instance,\n name: \"Pleroma\",\n email: \"example@example.com\",\n notify_email: \"noreply@example.com\",\n description: \"A Pleroma instance, an alternative fediverse server\",\n limit: 5000,\n chat_limit: 5000,\n remote_limit: 100_000,\n upload_limit: 16_000_000,\n avatar_upload_limit: 2_000_000,\n background_upload_limit: 4_000_000,\n banner_upload_limit: 4_000_000,\n poll_limits: %{\n max_expiration: 31_536_000,\n max_option_chars: 200,\n max_options: 20,\n min_expiration: 0\n },\n registrations_open: true,\n federating: true,\n federation_incoming_replies_max_depth: 100,\n federation_reachability_timeout_days: 7,\n federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n allow_relay: true,\n rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,\n public: true,\n quarantined_instances: [],\n managed_config: true,\n static_dir: \"instance/static/\",\n allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n mrf_transparency: true,\n mrf_transparency_exclusions: [],\n autofollowed_nicknames: [],\n max_pinned_statuses: 1,\n no_attachment_links: true,\n welcome_user_nickname: nil,\n welcome_message: nil,\n max_report_comment_size: 1000,\n safe_dm_mentions: false,\n healthcheck: false,\n remote_post_retention_days: 90,\n skip_thread_containment: true,\n limit_to_local_content: :unauthenticated,\n user_bio_length: 5000,\n user_name_length: 100,\n max_account_fields: 10,\n max_remote_account_fields: 20,\n account_field_name_length: 512,\n account_field_value_length: 2048,\n external_user_synchronization: true,\n extended_nickname_format: true,\n multi_factor_authentication: [\n totp: [digits: 6, period: 30],\n backup_codes: [number: 2, length: 6]\n ]\n" + "#{header}\n\nconfig :pleroma, :instance,\n name: \"Pleroma\",\n email: \"example@example.com\",\n notify_email: \"noreply@example.com\",\n description: \"A Pleroma instance, an alternative fediverse server\",\n limit: 5000,\n chat_limit: 5000,\n remote_limit: 100_000,\n upload_limit: 16_000_000,\n avatar_upload_limit: 2_000_000,\n background_upload_limit: 4_000_000,\n banner_upload_limit: 4_000_000,\n poll_limits: %{\n max_expiration: 31_536_000,\n max_option_chars: 200,\n max_options: 20,\n min_expiration: 0\n },\n registrations_open: true,\n federating: true,\n federation_incoming_replies_max_depth: 100,\n federation_reachability_timeout_days: 7,\n federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n allow_relay: true,\n rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,\n public: true,\n quarantined_instances: [],\n managed_config: true,\n static_dir: \"instance/static/\",\n allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n mrf_transparency: true,\n mrf_transparency_exclusions: [],\n autofollowed_nicknames: [],\n max_pinned_statuses: 1,\n attachment_links: false,\n welcome_user_nickname: nil,\n welcome_message: nil,\n max_report_comment_size: 1000,\n safe_dm_mentions: false,\n healthcheck: false,\n remote_post_retention_days: 90,\n skip_thread_containment: true,\n limit_to_local_content: :unauthenticated,\n user_bio_length: 5000,\n user_name_length: 100,\n max_account_fields: 10,\n max_remote_account_fields: 20,\n account_field_name_length: 512,\n account_field_value_length: 2048,\n external_user_synchronization: true,\n extended_nickname_format: true,\n multi_factor_authentication: [\n totp: [digits: 6, period: 30],\n backup_codes: [number: 2, length: 6]\n ]\n" end end end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 4b761e039..848300ef3 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -575,11 +575,11 @@ test "returns note data" do end describe "maybe_add_attachments/3" do - test "returns parsed results when no_links is true" do + test "returns parsed results when attachment_links is false" do assert Utils.maybe_add_attachments( {"test", [], ["tags"]}, [], - true + false ) == {"test", [], ["tags"]} end @@ -589,7 +589,7 @@ test "adds attachments to parsed results" do assert Utils.maybe_add_attachments( {"test", [], ["tags"]}, [attachment], - false + true ) == { "test
SakuraPM.png", [], From 19516af74e9cc8bacc3edf473eab0f54955368f4 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 12 Feb 2020 19:43:07 +0400 Subject: [PATCH 3/8] Fix `status.expires_in` validation --- lib/pleroma/activity_expiration.ex | 2 +- .../controllers/status_controller_test.exs | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/activity_expiration.ex b/lib/pleroma/activity_expiration.ex index 7ea5c48ca..a58a493f7 100644 --- a/lib/pleroma/activity_expiration.ex +++ b/lib/pleroma/activity_expiration.ex @@ -62,6 +62,6 @@ def validate_scheduled_at(changeset) do def expires_late_enough?(scheduled_at) do now = NaiveDateTime.utc_now() diff = NaiveDateTime.diff(scheduled_at, now, :millisecond) - diff >= @min_activity_lifetime + diff > @min_activity_lifetime end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 83138d7ef..810f371cb 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -121,6 +121,32 @@ test "posting a status", %{conn: conn} do NaiveDateTime.to_iso8601(expiration.scheduled_at) end + test "it fails to create a status if `expires_in` is less or equal than an hour", %{ + conn: conn + } do + # 1 hour + expires_in = 60 * 60 + + assert %{"error" => "Expiry date is too soon"} = + conn + |> post("api/v1/statuses", %{ + "status" => "oolong", + "expires_in" => expires_in + }) + |> json_response(422) + + # 30 minutes + expires_in = 30 * 60 + + assert %{"error" => "Expiry date is too soon"} = + conn + |> post("api/v1/statuses", %{ + "status" => "oolong", + "expires_in" => expires_in + }) + |> json_response(422) + end + test "posting an undefined status with an attachment", %{user: user, conn: conn} do file = %Plug.Upload{ content_type: "image/jpg", From e4016f4dbdeb6e5c7cd1b130b90ac80a0466fa08 Mon Sep 17 00:00:00 2001 From: feld Date: Thu, 13 Feb 2020 13:59:47 +0000 Subject: [PATCH 4/8] Apply suggestion to config/description.exs --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index 921316d07..75b1c8c10 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1167,7 +1167,7 @@ type: :boolean, description: "By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. " <> - "If you want a colorful logo you ust disable logoMask." + "If you want a colorful logo you just disable logoMask." }, %{ key: :logoMargin, From 4f5ee26f2da6e447a0e079c026846ceeb29e5045 Mon Sep 17 00:00:00 2001 From: feld Date: Thu, 13 Feb 2020 14:00:33 +0000 Subject: [PATCH 5/8] Update description.exs --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index 75b1c8c10..909693319 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1167,7 +1167,7 @@ type: :boolean, description: "By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. " <> - "If you want a colorful logo you just disable logoMask." + "If you want a colorful logo you must disable logoMask." }, %{ key: :logoMargin, From 9b778dc54af2435128a23ce966214f06ad29dafe Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 13 Feb 2020 08:01:39 -0600 Subject: [PATCH 6/8] Formatting --- config/description.exs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/config/description.exs b/config/description.exs index 909693319..661acd716 100644 --- a/config/description.exs +++ b/config/description.exs @@ -637,12 +637,14 @@ %{ key: :registrations_open, type: :boolean, - description: "Enable registrations for anyone. Invitations require this setting to be disabled." + description: + "Enable registrations for anyone. Invitations require this setting to be disabled." }, %{ key: :invites_enabled, type: :boolean, - description: "Enable user invitations for admins (depends on `registrations_open` being disabled)." + description: + "Enable user invitations for admins (depends on `registrations_open` being disabled)." }, %{ key: :account_activation_required, @@ -798,8 +800,7 @@ %{ key: :no_attachment_links, type: :boolean, - description: - "Enable to disable automatically adding attachment link text to statuses" + description: "Enable to disable automatically adding attachment link text to statuses" }, %{ key: :welcome_message, From 571a475c7ec8f9bb6e3a252aa7c3c65a1621bed6 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 13 Feb 2020 08:02:33 -0600 Subject: [PATCH 7/8] Formatting --- config/description.exs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/description.exs b/config/description.exs index 6b9d09de9..4b727d673 100644 --- a/config/description.exs +++ b/config/description.exs @@ -798,8 +798,7 @@ %{ key: :attachment_links, type: :boolean, - description: - "Enable to automatically add attachment link text to statuses" + description: "Enable to automatically add attachment link text to statuses" }, %{ key: :welcome_message, From 070069125f9a4941cb43e4cd3047162fbb9f2bf9 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 13 Feb 2020 19:47:39 +0300 Subject: [PATCH 8/8] deps: update back fast sanitize it was downgraded to a somewhat ancient version due to an incorrect merge conflict resolution --- mix.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mix.lock b/mix.lock index 69eec5431..ef79ea8e6 100644 --- a/mix.lock +++ b/mix.lock @@ -37,8 +37,8 @@ "ex_machina": {:hex, :ex_machina, "2.3.0", "92a5ad0a8b10ea6314b876a99c8c9e3f25f4dde71a2a835845b136b9adaf199a", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm"}, "ex_syslogger": {:git, "https://github.com/slashmili/ex_syslogger.git", "f3963399047af17e038897c69e20d552e6899e1d", [tag: "1.4.0"]}, "excoveralls": {:hex, :excoveralls, "0.12.1", "a553c59f6850d0aff3770e4729515762ba7c8e41eedde03208182a8dc9d0ce07", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, - "fast_html": {:hex, :fast_html, "0.99.4", "d80812664f0429607e1d880fba0ef04da87a2e4fa596701bcaae17953535695c", [:make, :mix], [], "hexpm"}, - "fast_sanitize": {:hex, :fast_sanitize, "0.1.4", "6c2e7203ca2f8275527a3021ba6e9d5d4ee213a47dc214a97c128737c9e56df1", [:mix], [{:fast_html, "~> 0.99", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, + "fast_html": {:hex, :fast_html, "1.0.3", "2cc0d4b68496266a1530e0c852cafeaede0bd10cfdee26fda50dc696c203162f", [:make, :mix], [], "hexpm"}, + "fast_sanitize": {:hex, :fast_sanitize, "0.1.7", "2a7cd8734c88a2de6de55022104f8a3b87f1fdbe8bbf131d9049764b53d50d0d", [:mix], [{:fast_html, "~> 1.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, "floki": {:hex, :floki, "0.23.1", "e100306ce7d8841d70a559748e5091542e2cfc67ffb3ade92b89a8435034dab1", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm"}, "gen_smtp": {:hex, :gen_smtp, "0.15.0", "9f51960c17769b26833b50df0b96123605a8024738b62db747fece14eb2fbfcc", [:rebar3], [], "hexpm"}, @@ -79,7 +79,7 @@ "phoenix_swoosh": {:hex, :phoenix_swoosh, "0.2.0", "a7e0b32077cd6d2323ae15198839b05d9caddfa20663fd85787479e81f89520e", [:mix], [{:phoenix, "~> 1.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:swoosh, "~> 0.1", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm"}, "plug": {:hex, :plug, "1.9.0", "8d7c4e26962283ff9f8f3347bd73838e2413fbc38b7bb5467d5924f68f3a5a4a", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "plug_cowboy": {:hex, :plug_cowboy, "2.1.0", "b75768153c3a8a9e8039d4b25bb9b14efbc58e9c4a6e6a270abff1cd30cbe320", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, - "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, + "plug_crypto": {:hex, :plug_crypto, "1.1.0", "854843d59062bf104ffe48fd92ad25a26fa3cc47558a13dd14c3025dc987542e", [:mix], [], "hexpm"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm"},