Packages
phoenix_kit
1.7.161
1.7.207
1.7.206
1.7.205
1.7.204
1.7.203
1.7.202
1.7.201
1.7.200
1.7.199
1.7.198
1.7.197
1.7.196
1.7.194
1.7.193
1.7.192
1.7.191
1.7.190
1.7.189
1.7.187
1.7.186
1.7.185
1.7.184
1.7.183
1.7.182
1.7.181
1.7.180
1.7.179
1.7.178
1.7.177
1.7.176
1.7.175
1.7.174
1.7.173
1.7.172
1.7.171
1.7.170
1.7.169
1.7.168
1.7.167
1.7.166
1.7.165
1.7.164
1.7.162
1.7.161
1.7.160
1.7.159
1.7.157
1.7.156
1.7.155
1.7.154
1.7.153
1.7.152
1.7.151
1.7.150
1.7.149
1.7.146
1.7.145
1.7.144
1.7.143
1.7.138
1.7.133
1.7.132
1.7.131
1.7.130
1.7.128
1.7.126
1.7.125
1.7.121
1.7.120
1.7.119
1.7.118
1.7.117
1.7.116
1.7.115
1.7.114
1.7.113
1.7.112
1.7.111
1.7.110
1.7.109
1.7.108
1.7.107
1.7.106
1.7.105
1.7.104
1.7.103
1.7.102
1.7.101
1.7.100
1.7.99
1.7.98
1.7.97
1.7.96
1.7.95
1.7.94
1.7.93
1.7.92
1.7.91
1.7.90
1.7.89
1.7.88
1.7.87
1.7.86
1.7.85
1.7.84
1.7.83
1.7.82
1.7.81
1.7.80
1.7.79
1.7.78
1.7.77
1.7.76
1.7.75
1.7.74
1.7.71
1.7.70
1.7.69
1.7.66
1.7.65
1.7.64
1.7.63
1.7.62
1.7.61
1.7.59
1.7.58
1.7.57
1.7.56
1.7.55
1.7.54
1.7.53
1.7.52
1.7.51
1.7.49
1.7.44
1.7.43
1.7.42
1.7.41
1.7.39
1.7.38
1.7.37
1.7.36
1.7.34
1.7.33
1.7.31
1.7.30
1.7.29
1.7.28
1.7.27
1.7.26
1.7.25
1.7.24
1.7.23
1.7.22
1.7.21
1.7.20
1.7.19
1.7.18
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.20
1.6.19
1.6.18
1.6.17
1.6.16
1.6.15
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.10
1.2.9
1.2.8
1.2.7
1.2.5
1.2.4
1.2.2
1.2.1
1.2.0
1.1.0
1.0.0
A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more
Current section
221 Versions
Jump to
Current section
221 Versions
Compare versions
4
files changed
+20
additions
-19
deletions
unknownCHANGELOG.md
File is too large to be displayed (100 KB limit).
| @@ -1,6 +1,6 @@ | |
| 1 1 | {<<"links">>,[{<<"GitHub">>,<<"https://github.com/BeamLabEU/phoenix_kit">>}]}. |
| 2 2 | {<<"name">>,<<"phoenix_kit">>}. |
| 3 | - {<<"version">>,<<"1.7.160">>}. |
| 3 | + {<<"version">>,<<"1.7.161">>}. |
| 4 4 | {<<"description">>, |
| 5 5 | <<65,32,102,111,117,110,100,97,116,105,111,110,32,102,111,114,32,98,117,105, |
| 6 6 | 108,100,105,110,103,32,69,108,105,120,105,114,32,80,104,111,101,110,105, |
| @@ -807,11 +807,6 @@ | |
| 807 807 | {<<"optional">>,false}, |
| 808 808 | {<<"requirement">>,<<"~> 1.4">>}, |
| 809 809 | {<<"repository">>,<<"hexpm">>}], |
| 810 | - [{<<"name">>,<<"earmark">>}, |
| 811 | - {<<"app">>,<<"earmark">>}, |
| 812 | - {<<"optional">>,false}, |
| 813 | - {<<"requirement">>,<<"~> 1.4">>}, |
| 814 | - {<<"repository">>,<<"hexpm">>}], |
| 815 810 | [{<<"name">>,<<"yaml_elixir">>}, |
| 816 811 | {<<"app">>,<<"yaml_elixir">>}, |
| 817 812 | {<<"optional">>,false}, |
| @@ -2,7 +2,7 @@ defmodule PhoenixKitWeb.Components.Core.Markdown do | |
| 2 2 | @moduledoc """ |
| 3 3 | Renders markdown content safely with consistent styling. |
| 4 4 | |
| 5 | - This component parses markdown to HTML using Earmark, sanitizes the output |
| 5 | + This component parses markdown to HTML using MDEx, sanitizes the output |
| 6 6 | for XSS prevention, and renders with appropriate styling. |
| 7 7 | |
| 8 8 | ## Usage |
| @@ -71,11 +71,11 @@ defmodule PhoenixKitWeb.Components.Core.Markdown do | |
| 71 71 | defp render_markdown("", _sanitize), do: "" |
| 72 72 | |
| 73 73 | defp render_markdown(content, sanitize) when is_binary(content) do |
| 74 | - case Earmark.as_html(content, earmark_options()) do |
| 75 | - {:ok, html, _warnings} -> |
| 74 | + case MDEx.to_html(content, mdex_options()) do |
| 75 | + {:ok, html} -> |
| 76 76 | if sanitize, do: HtmlSanitizer.sanitize(html), else: html |
| 77 77 | |
| 78 | - {:error, _html, _errors} -> |
| 78 | + {:error, _error} -> |
| 79 79 | # Fallback: escape and return as paragraph |
| 80 80 | Phoenix.HTML.html_escape(content) |> Phoenix.HTML.safe_to_string() |
| 81 81 | end |
| @@ -83,12 +83,19 @@ defmodule PhoenixKitWeb.Components.Core.Markdown do | |
| 83 83 | |
| 84 84 | defp render_markdown(_other, _sanitize), do: "" |
| 85 85 | |
| 86 | - defp earmark_options do |
| 87 | - %Earmark.Options{ |
| 88 | - code_class_prefix: "language-", |
| 89 | - smartypants: true, |
| 90 | - gfm: true, |
| 91 | - escape: false |
| 92 | - } |
| 86 | + # Mirrors the previous Earmark configuration: |
| 87 | + # * GFM (strikethrough/table/autolink/tasklist) |
| 88 | + # * smart typography (was `smartypants: true`) |
| 89 | + # * raw HTML passthrough (was `escape: false`) — the default render path |
| 90 | + # still runs the result through HtmlSanitizer; only `sanitize={false}` |
| 91 | + # (trusted admin content) emits raw HTML. |
| 92 | + # Fenced code blocks render as `<code class="language-...">` by default |
| 93 | + # (github_pre_lang is off), matching the old `code_class_prefix: "language-"`. |
| 94 | + defp mdex_options do |
| 95 | + [ |
| 96 | + extension: [strikethrough: true, table: true, autolink: true, tasklist: true], |
| 97 | + parse: [smart: true], |
| 98 | + render: [unsafe: true] |
| 99 | + ] |
| 93 100 | end |
| 94 101 | end |
| @@ -1,7 +1,7 @@ | |
| 1 1 | defmodule PhoenixKit.MixProject do |
| 2 2 | use Mix.Project |
| 3 3 | |
| 4 | - @version "1.7.160" |
| 4 | + @version "1.7.161" |
| 5 5 | @description "A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more" |
| 6 6 | @source_url "https://github.com/BeamLabEU/phoenix_kit" |
| 7 7 | |
| @@ -159,7 +159,6 @@ defmodule PhoenixKit.MixProject do | |
| 159 159 | |
| 160 160 | # Utilities |
| 161 161 | {:jason, "~> 1.4"}, |
| 162 | - {:earmark, "~> 1.4"}, |
| 163 162 | {:yaml_elixir, "~> 2.9"}, |
| 164 163 | {:nimble_csv, "~> 1.2"}, |
| 165 164 | {:uuidv7, "~> 1.0"}, |