From 5ab196ae16c39ddf65e76fb429aae21887b519e6 Mon Sep 17 00:00:00 2001 From: Inhji Date: Sat, 29 Apr 2023 09:43:34 +0200 Subject: [PATCH 1/4] mix format --- lib/chiya/notes/references.ex | 1 - lib/chiya_web/components/admin_components.ex | 24 +++--- lib/chiya_web/components/public_components.ex | 9 ++- .../controllers/page_html/home.html.heex | 80 ++++++++++--------- 4 files changed, 62 insertions(+), 52 deletions(-) diff --git a/lib/chiya/notes/references.ex b/lib/chiya/notes/references.ex index fabe1b5..4729795 100644 --- a/lib/chiya/notes/references.ex +++ b/lib/chiya/notes/references.ex @@ -124,7 +124,6 @@ defmodule Chiya.Notes.References do {:error, changelog} -> Logger.warn("Reference was not added.") Logger.error(inspect(changelog)) - end end diff --git a/lib/chiya_web/components/admin_components.ex b/lib/chiya_web/components/admin_components.ex index adb3083..5abf6c5 100644 --- a/lib/chiya_web/components/admin_components.ex +++ b/lib/chiya_web/components/admin_components.ex @@ -85,16 +85,14 @@ defmodule ChiyaWeb.AdminComponents do <.link href={~p"/"} class="flex gap-3 text-sm leading-6 font-semibold text-gray-900 dark:text-gray-100 dark:hover:text-gray-300 hover:text-gray-700" - ><%= @settings.title %> + > + <%= @settings.title %> +
  • <%= if @current_user do %>
  • - <.link - href="#" - id="dark-mode-toggle" - class="text-sm leading-6" - > + <.link href="#" id="dark-mode-toggle" class="text-sm leading-6"> ๐ŸŒ™ @@ -103,22 +101,22 @@ defmodule ChiyaWeb.AdminComponents do <.link href={~p"/admin"} class="text-sm leading-6 text-gray-900 dark:text-gray-100 dark:hover:text-gray-300 hover:text-gray-700" - >Admin + > + Admin +
  • <.link href={~p"/user/log_out"} method="delete" class="text-sm leading-6 text-gray-900 dark:text-gray-100 dark:hover:text-gray-300 hover:text-gray-700" - >Log out + > + Log out +
  • <% else %>
  • - <.link - href="#" - id="dark-mode-toggle" - class="text-sm leading-6" - > + <.link href="#" id="dark-mode-toggle" class="text-sm leading-6"> ๐ŸŒ™ diff --git a/lib/chiya_web/components/public_components.ex b/lib/chiya_web/components/public_components.ex index b9acf55..4a364b5 100644 --- a/lib/chiya_web/components/public_components.ex +++ b/lib/chiya_web/components/public_components.ex @@ -31,9 +31,14 @@ defmodule ChiyaWeb.PublicComponents do

    <%= render_slot(@inner_block) %> - <%= render_slot(@subtitle) %> + + <%= render_slot(@subtitle) %> +

    -

    +

    <%= render_slot(@subtitle) %>

    diff --git a/lib/chiya_web/controllers/page_html/home.html.heex b/lib/chiya_web/controllers/page_html/home.html.heex index 4069e5e..80a7851 100644 --- a/lib/chiya_web/controllers/page_html/home.html.heex +++ b/lib/chiya_web/controllers/page_html/home.html.heex @@ -24,46 +24,54 @@ <%= if @channel do %> <%= if @channel.layout == :default do %> -
    - <%= for note <- @channel.notes do %> - - - <%= note.name %> - - <%= pretty_date(note.published_at) %> - - <% end %> -
    +
    + <%= for note <- @channel.notes do %> + + + <%= note.name %> + + <%= pretty_date(note.published_at) %> + + <% end %> +
    <% end %> <%= if @channel.layout == :gallery do %> - <% end %> <% end %> From a5dd041c42c79ad446093829072d77ea5d004e20 Mon Sep 17 00:00:00 2001 From: Inhji Date: Sun, 30 Apr 2023 11:56:45 +0200 Subject: [PATCH 2/4] render unpublished note when logged in --- lib/chiya_web/controllers/page_controller.ex | 2 +- lib/chiya_web/controllers/page_html/note.html.heex | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/chiya_web/controllers/page_controller.ex b/lib/chiya_web/controllers/page_controller.ex index 7cb30fa..b882bd5 100644 --- a/lib/chiya_web/controllers/page_controller.ex +++ b/lib/chiya_web/controllers/page_controller.ex @@ -42,7 +42,7 @@ defmodule ChiyaWeb.PageController do def note(conn, %{"slug" => note_slug}) do note = Chiya.Notes.get_note_by_slug_preloaded!(note_slug) - if is_nil(note.published_at) do + if is_nil(note.published_at) and is_nil(conn.assigns.current_user) do render_error(conn, :not_found) else render(conn, :note, diff --git a/lib/chiya_web/controllers/page_html/note.html.heex b/lib/chiya_web/controllers/page_html/note.html.heex index 024b35a..18de334 100644 --- a/lib/chiya_web/controllers/page_html/note.html.heex +++ b/lib/chiya_web/controllers/page_html/note.html.heex @@ -4,7 +4,11 @@ <%= @note.name %>

    + <%= if @note.published_at do %> Published + <% else %> + Unpublished + <% end %> ยท Last Updated From 43cad4570597c610178d351d198acc2fc830663e Mon Sep 17 00:00:00 2001 From: Inhji Date: Sun, 30 Apr 2023 13:35:22 +0200 Subject: [PATCH 3/4] add comments --- lib/chiya/notes.ex | 31 +++++++++++++++-- lib/chiya/notes/note.ex | 15 +++++---- lib/chiya/notes/note_comment.ex | 23 +++++++++++++ .../controllers/comment_controller.ex | 17 ++++++++++ lib/chiya_web/controllers/comment_html.ex | 5 +++ lib/chiya_web/controllers/page_controller.ex | 4 ++- .../controllers/page_html/note.html.heex | 33 +++++++++++++++++++ lib/chiya_web/router.ex | 2 ++ .../20230429074000_create_note_comments.exs | 18 ++++++++++ 9 files changed, 138 insertions(+), 10 deletions(-) create mode 100644 lib/chiya/notes/note_comment.ex create mode 100644 lib/chiya_web/controllers/comment_controller.ex create mode 100644 lib/chiya_web/controllers/comment_html.ex create mode 100644 priv/repo/migrations/20230429074000_create_note_comments.exs diff --git a/lib/chiya/notes.ex b/lib/chiya/notes.ex index e4110a4..e9fd096 100644 --- a/lib/chiya/notes.ex +++ b/lib/chiya/notes.ex @@ -5,9 +5,22 @@ defmodule Chiya.Notes do import Ecto.Query, warn: false alias Chiya.Repo - alias Chiya.Notes.{Note, NoteImage, NoteNote, NoteTag} + alias Chiya.Notes.{Note, NoteImage, NoteNote, NoteTag, NoteComment} - @preloads [:channels, :images, :links_from, :links_to, :tags] + @preloads [ + :channels, + :images, + :links_from, + :links_to, + :tags, + comments: + from(c in NoteComment, + order_by: [ + desc: :approved_at, + desc: :inserted_at + ] + ) + ] def note_preloads(), do: @preloads @doc """ @@ -264,4 +277,18 @@ defmodule Chiya.Notes do def delete_note_tag(%NoteTag{} = note_tag) do Repo.delete(note_tag) end + + def create_note_comment(attrs \\ %{}) do + %NoteComment{} + |> NoteComment.changeset(attrs) + |> Repo.insert() + end + + def delete_note_comment(%NoteComment{} = note_comment) do + Repo.delete(note_comment) + end + + def change_note_comment(%NoteComment{} = note_comment, attrs \\ %{}) do + NoteComment.changeset(note_comment, attrs) + end end diff --git a/lib/chiya/notes/note.ex b/lib/chiya/notes/note.ex index e7eda5f..faf5f43 100644 --- a/lib/chiya/notes/note.ex +++ b/lib/chiya/notes/note.ex @@ -1,9 +1,9 @@ defmodule Chiya.Notes.Note do use Ecto.Schema import Ecto.Changeset - alias Chiya.Notes.NoteSlug + alias Chiya.Notes.{Note, NoteSlug, NoteNote, NoteTag} - @reserved_slugs [] + @reserved_slugs ~w(user admin dev api) @derive {Jason.Encoder, only: [:id, :name, :content, :slug, :channels]} schema "notes" do @@ -23,19 +23,20 @@ defmodule Chiya.Notes.Note do join_keys: [note: :id, channel: :id], on_replace: :delete - many_to_many :links_from, Chiya.Notes.Note, - join_through: Chiya.Notes.NoteNote, + many_to_many :links_from, Note, + join_through: NoteNote, join_keys: [source_id: :id, target_id: :id] - many_to_many :links_to, Chiya.Notes.Note, - join_through: Chiya.Notes.NoteNote, + many_to_many :links_to, Note, + join_through: NoteNote, join_keys: [target_id: :id, source_id: :id] many_to_many :tags, Chiya.Tags.Tag, - join_through: Chiya.Notes.NoteTag, + join_through: NoteTag, join_keys: [note_id: :id, tag_id: :id] has_many :images, Chiya.Notes.NoteImage + has_many :comments, Chiya.Notes.NoteComment field :tags_string, :string, virtual: true, diff --git a/lib/chiya/notes/note_comment.ex b/lib/chiya/notes/note_comment.ex new file mode 100644 index 0000000..2daeff5 --- /dev/null +++ b/lib/chiya/notes/note_comment.ex @@ -0,0 +1,23 @@ +defmodule Chiya.Notes.NoteComment do + use Ecto.Schema + import Ecto.Changeset + + schema "note_comments" do + field :approved_at, :naive_datetime + field :author_name, :string + field :author_id, :id + field :content, :string + field :kind, Ecto.Enum, values: [:anon, :fedi], default: :anon + + belongs_to :note, Chiya.Notes.Note + + timestamps() + end + + @doc false + def changeset(note_comment, attrs) do + note_comment + |> cast(attrs, [:content, :author_name, :author_id, :kind, :note_id, :approved_at]) + |> validate_required([:content, :author_name, :kind, :note_id]) + end +end diff --git a/lib/chiya_web/controllers/comment_controller.ex b/lib/chiya_web/controllers/comment_controller.ex new file mode 100644 index 0000000..5559a96 --- /dev/null +++ b/lib/chiya_web/controllers/comment_controller.ex @@ -0,0 +1,17 @@ +defmodule ChiyaWeb.CommentController do + use ChiyaWeb, :controller + + def create(conn, %{"slug" => note_slug, "note_comment" => comment_params}) do + note = Chiya.Notes.get_note_by_slug_preloaded!(note_slug) + + IO.inspect(comment_params) + + case Chiya.Notes.create_note_comment(comment_params) do + {:ok, _comment} -> + redirect(conn, to: ~p"/#{note_slug}?error=0") + + {:error, changeset} -> + redirect(conn, to: ~p"/#{note_slug}?error=1") + end + end +end diff --git a/lib/chiya_web/controllers/comment_html.ex b/lib/chiya_web/controllers/comment_html.ex new file mode 100644 index 0000000..da6c63b --- /dev/null +++ b/lib/chiya_web/controllers/comment_html.ex @@ -0,0 +1,5 @@ +defmodule ChiyaWeb.CommentHTML do + use ChiyaWeb, :html + + embed_templates "comment_html/*" +end diff --git a/lib/chiya_web/controllers/page_controller.ex b/lib/chiya_web/controllers/page_controller.ex index b882bd5..322bca5 100644 --- a/lib/chiya_web/controllers/page_controller.ex +++ b/lib/chiya_web/controllers/page_controller.ex @@ -41,6 +41,7 @@ defmodule ChiyaWeb.PageController do def note(conn, %{"slug" => note_slug}) do note = Chiya.Notes.get_note_by_slug_preloaded!(note_slug) + changeset = Chiya.Notes.change_note_comment(%Chiya.Notes.NoteComment{}, %{note_id: note.id}) if is_nil(note.published_at) and is_nil(conn.assigns.current_user) do render_error(conn, :not_found) @@ -48,7 +49,8 @@ defmodule ChiyaWeb.PageController do render(conn, :note, layout: {ChiyaWeb.Layouts, "public.html"}, note: note, - page_title: note.name + page_title: note.name, + changeset: changeset ) end end diff --git a/lib/chiya_web/controllers/page_html/note.html.heex b/lib/chiya_web/controllers/page_html/note.html.heex index 18de334..3bf35b2 100644 --- a/lib/chiya_web/controllers/page_html/note.html.heex +++ b/lib/chiya_web/controllers/page_html/note.html.heex @@ -50,4 +50,37 @@ <% end %> <% end %> + + <%= if not Enum.empty?(@note.comments) do %> + <.line /> + +

    <%= Enum.count(@note.comments) %> Comments

    + + + <% end %> + + <.line /> + + <.simple_form :let={f} for={@changeset} action={~p"/#{@note.slug}/comment"}> + <.error :if={@changeset.action}> + Oops, something went wrong! Please check the errors below. + + <.input field={f[:author_name]} type="text" placeholder="Name" /> + <.input field={f[:content]} type="textarea" placeholder="Content" rows="3" /> + <.input field={f[:note_id]} type="hidden" /> + <:actions> + <.button>Submit Comment + + + diff --git a/lib/chiya_web/router.ex b/lib/chiya_web/router.ex index c8ae3c5..3af5fff 100644 --- a/lib/chiya_web/router.ex +++ b/lib/chiya_web/router.ex @@ -119,5 +119,7 @@ defmodule ChiyaWeb.Router do get "/c/:slug", PageController, :channel get "/t/:slug", PageController, :tag get "/", PageController, :home + + post "/:slug/comment", CommentController, :create end end diff --git a/priv/repo/migrations/20230429074000_create_note_comments.exs b/priv/repo/migrations/20230429074000_create_note_comments.exs new file mode 100644 index 0000000..936d62d --- /dev/null +++ b/priv/repo/migrations/20230429074000_create_note_comments.exs @@ -0,0 +1,18 @@ +defmodule Chiya.Repo.Migrations.CreateNoteComments do + use Ecto.Migration + + def change do + create table(:note_comments) do + add :content, :text + add :author_name, :string + add :author_id, :integer + add :kind, :string + add :approved_at, :naive_datetime + add :note_id, references(:notes, on_delete: :delete_all) + + timestamps() + end + + create index(:note_comments, [:note_id]) + end +end From 22832af68c07098f5f8d4ad23e92cae276948d0a Mon Sep 17 00:00:00 2001 From: Inhji Date: Sun, 30 Apr 2023 13:35:29 +0200 Subject: [PATCH 4/4] update npm deps --- assets/package-lock.json | 188 +++++++++++++++++++-------------------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/assets/package-lock.json b/assets/package-lock.json index 789a835..735fc36 100644 --- a/assets/package-lock.json +++ b/assets/package-lock.json @@ -32,9 +32,9 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", + "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -43,9 +43,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", - "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", "cpu": [ "arm" ], @@ -59,9 +59,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", - "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", "cpu": [ "arm64" ], @@ -75,9 +75,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", - "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", "cpu": [ "x64" ], @@ -91,9 +91,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", - "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", "cpu": [ "arm64" ], @@ -107,9 +107,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", - "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", "cpu": [ "x64" ], @@ -123,9 +123,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", - "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", "cpu": [ "arm64" ], @@ -139,9 +139,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", - "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", "cpu": [ "x64" ], @@ -155,9 +155,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", - "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", "cpu": [ "arm" ], @@ -171,9 +171,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", - "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", "cpu": [ "arm64" ], @@ -187,9 +187,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", - "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", "cpu": [ "ia32" ], @@ -203,9 +203,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", - "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", "cpu": [ "loong64" ], @@ -219,9 +219,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", - "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", "cpu": [ "mips64el" ], @@ -235,9 +235,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", - "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", "cpu": [ "ppc64" ], @@ -251,9 +251,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", - "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", "cpu": [ "riscv64" ], @@ -267,9 +267,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", - "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", "cpu": [ "s390x" ], @@ -283,9 +283,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", - "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", "cpu": [ "x64" ], @@ -299,9 +299,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", - "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", "cpu": [ "x64" ], @@ -315,9 +315,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", - "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", "cpu": [ "x64" ], @@ -331,9 +331,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", - "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", "cpu": [ "x64" ], @@ -347,9 +347,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", - "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", "cpu": [ "arm64" ], @@ -363,9 +363,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", - "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", "cpu": [ "ia32" ], @@ -379,9 +379,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", - "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", "cpu": [ "x64" ], @@ -459,9 +459,9 @@ "integrity": "sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w==" }, "node_modules/esbuild": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", - "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", "dev": true, "hasInstallScript": true, "bin": { @@ -471,28 +471,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.12", - "@esbuild/android-arm64": "0.17.12", - "@esbuild/android-x64": "0.17.12", - "@esbuild/darwin-arm64": "0.17.12", - "@esbuild/darwin-x64": "0.17.12", - "@esbuild/freebsd-arm64": "0.17.12", - "@esbuild/freebsd-x64": "0.17.12", - "@esbuild/linux-arm": "0.17.12", - "@esbuild/linux-arm64": "0.17.12", - "@esbuild/linux-ia32": "0.17.12", - "@esbuild/linux-loong64": "0.17.12", - "@esbuild/linux-mips64el": "0.17.12", - "@esbuild/linux-ppc64": "0.17.12", - "@esbuild/linux-riscv64": "0.17.12", - "@esbuild/linux-s390x": "0.17.12", - "@esbuild/linux-x64": "0.17.12", - "@esbuild/netbsd-x64": "0.17.12", - "@esbuild/openbsd-x64": "0.17.12", - "@esbuild/sunos-x64": "0.17.12", - "@esbuild/win32-arm64": "0.17.12", - "@esbuild/win32-ia32": "0.17.12", - "@esbuild/win32-x64": "0.17.12" + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" } }, "node_modules/fast-equals": {