12 Commits

Author SHA1 Message Date
bf9fd4880f run mix format
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-07 18:43:25 -04:00
957e433847 update dependencies 2023-09-07 18:43:25 -04:00
edd631f520 run npm audit fix 2023-09-07 18:08:02 -04:00
2e1545a9f5 update npm 2023-09-07 18:07:21 -04:00
3e296080f5 fix user registration controller 2023-06-04 00:11:09 -04:00
d2ae6024ce fix error/404 pages not rendering properly 2023-05-12 22:59:04 -04:00
4615a29c11 disable arm builds
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-16 21:36:33 -04:00
eb48ff7dc0 build in arm64 and amd64
Some checks reported errors
continuous-integration/drone/push Build was killed
2023-04-16 17:05:13 -04:00
fcfd9857d5 remove maintain attrs
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-16 01:12:07 -04:00
c5f96a9d9d change invite path slightly
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-16 00:48:04 -04:00
c1a0b4017f improve tests
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-15 21:40:57 -04:00
04ebe59afe ee cummings even more 2023-04-15 21:40:17 -04:00
43 changed files with 8211 additions and 5168 deletions

View File

@ -17,7 +17,7 @@ steps:
- .mix
- name: test
image: elixir:1.14.4-alpine
image: elixir:1.15.4-alpine
environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
HOST: testing.example.tld
@ -42,7 +42,8 @@ steps:
repo: shibaobun/memex
purge: true
compress: true
platforms: linux/amd64,linux/arm/v7
platforms:
- linux/amd64
username:
from_secret: docker_username
password:
@ -59,7 +60,8 @@ steps:
repo: shibaobun/memex
purge: true
compress: true
platforms: linux/amd64,linux/arm/v7
platforms:
- linux/amd64
username:
from_secret: docker_username
password:

View File

@ -1,3 +1,3 @@
elixir 1.14.4-otp-25
erlang 25.3
nodejs 18.15.0
elixir 1.15.4-otp-26
erlang 26.0.2
nodejs 20.6.0

View File

@ -1,4 +1,4 @@
FROM elixir:1.14.4-alpine AS build
FROM elixir:1.15.4-alpine AS build
# install build dependencies
RUN apk add --no-cache build-base npm git python3

View File

@ -28,14 +28,13 @@ import { LiveSocket } from 'phoenix_live_view'
import topbar from 'topbar'
import Date from './date'
import DateTime from './datetime'
import MaintainAttrs from './maintain_attrs'
const csrfTokenElement = document.querySelector("meta[name='csrf-token']")
let csrfToken
if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') }
const liveSocket = new LiveSocket('/live', Socket, {
params: { _csrf_token: csrfToken },
hooks: { Date, DateTime, MaintainAttrs }
hooks: { Date, DateTime }
})
// Show progress bar on live navigation and form submits

View File

@ -1,22 +0,0 @@
// maintain user adjusted attributes, like textbox length on phoenix liveview
// update. https://github.com/phoenixframework/phoenix_live_view/issues/1011
export default {
attrs () {
if (this.el && this.el.getAttribute('data-attrs')) {
return this.el.getAttribute('data-attrs').split(', ')
} else {
return []
}
},
beforeUpdate () {
if (this.el) {
this.prevAttrs = this.attrs().map(name => [name, this.el.getAttribute(name)])
}
},
updated () {
if (this.el) {
this.prevAttrs.forEach(([name, val]) => this.el.setAttribute(name, val))
}
}
}

12820
assets/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,8 @@
"description": " ",
"license": "MIT",
"engines": {
"node": "v18.15.0",
"npm": "9.5.0"
"node": "v20.6.0",
"npm": "9.8.1"
},
"scripts": {
"deploy": "NODE_ENV=production webpack --mode production",
@ -13,35 +13,35 @@
"test": "standard"
},
"dependencies": {
"@fontsource/nunito-sans": "^4.5.10",
"@fortawesome/fontawesome-free": "^6.4.0",
"@fontsource/nunito-sans": "^5.0.8",
"@fortawesome/fontawesome-free": "^6.4.2",
"phoenix": "file:../deps/phoenix",
"phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view",
"topbar": "^2.0.1"
},
"devDependencies": {
"@babel/core": "^7.21.4",
"@babel/preset-env": "^7.21.4",
"autoprefixer": "^10.4.14",
"babel-loader": "^9.1.2",
"@babel/core": "^7.22.15",
"@babel/preset-env": "^7.22.15",
"autoprefixer": "^10.4.15",
"babel-loader": "^9.1.3",
"copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.7.3",
"css-minimizer-webpack-plugin": "^5.0.0",
"css-loader": "^6.8.1",
"css-minimizer-webpack-plugin": "^5.0.1",
"file-loader": "^6.2.0",
"mini-css-extract-plugin": "^2.7.5",
"npm-check-updates": "^16.10.8",
"postcss": "^8.4.21",
"mini-css-extract-plugin": "^2.7.6",
"npm-check-updates": "^16.13.3",
"postcss": "^8.4.29",
"postcss-import": "^15.1.0",
"postcss-loader": "^7.2.4",
"postcss-preset-env": "^8.3.1",
"sass": "^1.62.0",
"sass-loader": "^13.2.2",
"standard": "^17.0.0",
"tailwindcss": "^3.3.1",
"terser-webpack-plugin": "^5.3.7",
"webpack": "^5.79.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.13.2"
"postcss-loader": "^7.3.3",
"postcss-preset-env": "^9.1.3",
"sass": "^1.66.1",
"sass-loader": "^13.3.2",
"standard": "^17.1.0",
"tailwindcss": "^3.3.3",
"terser-webpack-plugin": "^5.3.9",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
}
}

View File

@ -1,5 +1,14 @@
# v0.1.12
- Code quality fixes
- Fix error/404 pages not rendering properly
- Update dependencies
# v0.1.11
- Update dependencies
- ee cummings even more
- Improve tests
- Change invite path slightly
- Disable arm builds since ci fails to build
# v0.1.10
- Improve accessibility

View File

@ -18,7 +18,10 @@ config :memex, MemexWeb.Endpoint,
url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"],
http: [port: String.to_integer(System.get_env("PORT") || "4000")],
secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I",
render_errors: [view: MemexWeb.ErrorView, accepts: ~w(html json), layout: false],
render_errors: [
formats: [html: MemexWeb.ErrorHTML, json: MemexWeb.ErrorJSON],
layout: false
],
pubsub_server: Memex.PubSub,
live_view: [signing_salt: "zOLgd3lr"]

View File

@ -4,7 +4,6 @@ defmodule MemexWeb.CoreComponents do
"""
use Phoenix.Component
use MemexWeb, :verified_routes
import MemexWeb.{Gettext, HTMLHelpers}
alias Memex.{Accounts, Accounts.Invite, Accounts.User}
alias Memex.Contexts.Context

View File

@ -1,7 +1,6 @@
<div
id={"show-context-content-#{@context.id}"}
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto"
phx-hook="MaintainAttrs"
phx-update="ignore"
readonly
phx-no-format

View File

@ -1,7 +1,6 @@
<div
id={"show-note-content-#{@note.id}"}
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto"
phx-hook="MaintainAttrs"
phx-update="ignore"
readonly
phx-no-format

View File

@ -1,7 +1,6 @@
<div
id={"show-step-content-#{@step.id}"}
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto"
phx-hook="MaintainAttrs"
phx-update="ignore"
readonly
phx-no-format

View File

@ -1,6 +1,7 @@
defmodule MemexWeb.UserRegistrationController do
use MemexWeb, :controller
import MemexWeb.Gettext
alias Ecto.Changeset
alias Memex.{Accounts, Accounts.Invites}
def new(conn, %{"invite" => invite_token}) do
@ -69,8 +70,8 @@ defmodule MemexWeb.UserRegistrationController do
|> put_flash(:error, dgettext("errors", "sorry, this invite was not found or expired"))
|> redirect(to: ~p"/")
{:error, %Ecto.Changeset{} = changeset} ->
conn |> render("new.html", changeset: changeset, invite_token: invite_token)
{:error, %Changeset{} = changeset} ->
conn |> render(:new, changeset: changeset, invite_token: invite_token)
end
end
end

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-400 text-xl">
<%= dgettext("actions", "Reset password") %>
<%= dgettext("actions", "reset password") %>
</h1>
<.form
@ -26,7 +26,7 @@
) %>
<%= error_tag(f, :password_confirmation, "col-span-3") %>
<%= submit(dgettext("actions", "Reset password"),
<%= submit(dgettext("actions", "reset password"),
class: "mx-auto btn btn-primary col-span-3"
) %>
</.form>

View File

@ -19,7 +19,6 @@
<%= textarea(f, :content,
id: "context-form-content",
class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore",
placeholder: gettext("use [[note-slug]] to link to a note"),
aria_label: gettext("use [[note-slug]] to link to a note")

View File

@ -35,7 +35,7 @@
</form>
</:code_actions>
<.link
patch={~p"/invites/#{invite}/edit"}
patch={~p"/invites/edit/#{invite}"}
class="text-primary-400 link"
aria-label={
dgettext("actions", "edit invite for %{invite_name}", invite_name: invite.name)

View File

@ -19,7 +19,6 @@
<%= textarea(f, :content,
id: "note-form-content",
class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore",
placeholder: gettext("content"),
aria_label: gettext("content")

View File

@ -19,7 +19,6 @@
<%= textarea(f, :description,
id: "pipeline-form-description",
class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore",
placeholder: gettext("description"),
aria_label: gettext("description")

View File

@ -13,7 +13,6 @@
:if={@pipeline.description}
id="show-pipeline-description"
class="input input-primary h-32 min-h-32"
phx-hook="MaintainAttrs"
phx-update="ignore"
readonly
phx-no-format

View File

@ -19,7 +19,6 @@
<%= textarea(f, :content,
id: "step-form-content",
class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore",
placeholder: gettext("use [[context-slug]] to link to a context"),
aria_label: gettext("use [[context-slug]] to link to a context")

View File

@ -95,7 +95,7 @@ defmodule MemexWeb.Router do
live_session :admin, on_mount: [{MemexWeb.UserAuth, :ensure_admin}] do
live "/invites", InviteLive.Index, :index
live "/invites/new", InviteLive.Index, :new
live "/invites/:id/edit", InviteLive.Index, :edit
live "/invites/edit/:id", InviteLive.Index, :edit
end
end

View File

@ -4,8 +4,8 @@ defmodule Memex.MixProject do
def project do
[
app: :memex,
version: "0.1.11",
elixir: "1.14.4",
version: "0.1.12",
elixir: "1.15.4",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
@ -51,8 +51,8 @@ defmodule Memex.MixProject do
{:phoenix_ecto, "~> 4.4"},
{:phoenix_html, "~> 3.0"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_view, "~> 0.18.0"},
{:phoenix_live_dashboard, "~> 0.6"},
{:phoenix_live_view, "~> 0.19.0"},
{:phoenix_live_dashboard, "~> 0.8"},
{:ecto_sql, "~> 3.6"},
{:postgrex, ">= 0.0.0"},
{:floki, ">= 0.30.0", only: :test},

View File

@ -1,54 +1,54 @@
%{
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.0.1", "9be815469e6bfefec40fa74658ecbbe6897acfb57614df1416eeccd4903f602c", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "486bb95efb645d1efc6794c1ddd776a186a9a713abf06f45708a6ce324fb96cf"},
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.1.0", "0b110a9a6c619b19a7f73fa3004aa11d6e719a67e672d1633dc36b6b2290a0f7", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2ad2acb5a8bc049e8d5aa267802631912bb80d5f4110a178ae7999e69dca1bf7"},
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
"castore": {:hex, :castore, "1.0.1", "240b9edb4e9e94f8f56ab39d8d2d0a57f49e46c56aced8f873892df8ff64ff5a", [:mix], [], "hexpm", "b4951de93c224d44fac71614beabd88b71932d0b1dea80d2f80fb9044e01bbb3"},
"comeonin": {:hex, :comeonin, "5.3.3", "2c564dac95a35650e9b6acfe6d2952083d8a08e4a89b93a481acb552b325892e", [:mix], [], "hexpm", "3e38c9c2cb080828116597ca8807bb482618a315bfafd98c90bc22a821cc84df"},
"castore": {:hex, :castore, "1.0.3", "7130ba6d24c8424014194676d608cb989f62ef8039efd50ff4b3f33286d06db8", [:mix], [], "hexpm", "680ab01ef5d15b161ed6a95449fac5c6b8f60055677a8e79acf01b27baa4390b"},
"comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"},
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
"cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
"cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
"credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"},
"db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
"decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
"dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"},
"earmark_parser": {:hex, :earmark_parser, "1.4.31", "a93921cdc6b9b869f519213d5bc79d9e218ba768d7270d46fdcf1c01bacff9e2", [:mix], [], "hexpm", "317d367ee0335ef037a87e46c91a2269fef6306413f731e8ec11fc45a7efd059"},
"ecto": {:hex, :ecto, "3.10.1", "c6757101880e90acc6125b095853176a02da8f1afe056f91f1f90b80c9389822", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2ac4255f1601bdf7ac74c0ed971102c6829dc158719b94bd30041bbad77f87a"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.10", "e14d400930f401ca9f541b3349212634e44027d7f919bbb71224d7ac0d0e8acd", [:mix], [{:ecto_sql, "~> 3.4", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15.7 or ~> 0.16.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "505e8cd81e4f17c090be0f99e92b1b3f0fd915f98e76965130b8ccfb891e7088"},
"ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"},
"elixir_make": {:hex, :elixir_make, "0.7.6", "67716309dc5d43e16b5abbd00c01b8df6a0c2ab54a8f595468035a50189f9169", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5a0569756b0f7873a77687800c164cca6dfc03a09418e6fcf853d78991f49940"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"dialyxir": {:hex, :dialyxir, "1.4.1", "a22ed1e7bd3a3e3f197b68d806ef66acb61ee8f57b3ac85fc5d57354c5482a93", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "84b795d6d7796297cca5a3118444b80c7d94f7ce247d49886e7c291e1ae49801"},
"earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"},
"ecto": {:hex, :ecto, "3.10.3", "eb2ae2eecd210b4eb8bece1217b297ad4ff824b4384c0e3fdd28aaf96edd6135", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.13", "9947637f82b92dcec93d44ad09ba24d1990bd7ca69e1c68981fb3b6f8bd18829", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "0f2288e6163f6aacd7e59545a56adc8df7d2079d18be7d3d6159d10f4dffc396"},
"ecto_sql": {:hex, :ecto_sql, "3.10.2", "6b98b46534b5c2f8b8b5f03f126e75e2a73c64f3c071149d32987a5378b0fdbd", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "68c018debca57cb9235e3889affdaec7a10616a4e3a80c99fa1d01fdafaa9007"},
"elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"},
"ex_doc": {:hex, :ex_doc, "0.30.6", "5f8b54854b240a2b55c9734c4b1d0dd7bdd41f71a095d42a70445c03cf05a281", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "bd48f2ddacf4e482c727f9293d9498e0881597eae6ddc3d9562bd7923375109f"},
"expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"floki": {:hex, :floki, "0.34.2", "5fad07ef153b3b8ec110b6b155ec3780c4b2c4906297d0b4be1a7162d04a7e02", [:mix], [], "hexpm", "26b9d50f0f01796bc6be611ca815c5e0de034d2128e39cc9702eee6b66a4d1c8"},
"floki": {:hex, :floki, "0.34.3", "5e2dcaec5d7c228ce5b1d3501502e308b2d79eb655e4191751a1fe491c37feac", [:mix], [], "hexpm", "9577440eea5b97924b4bf3c7ea55f7b8b6dce589f9b28b096cc294a8dc342341"},
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
"gettext": {:hex, :gettext, "0.22.1", "e7942988383c3d9eed4bdc22fc63e712b655ae94a672a27e4900e3d4a2c43581", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "ad105b8dab668ee3f90c0d3d94ba75e9aead27a62495c101d94f2657a190ac5d"},
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
"gettext": {:hex, :gettext, "0.23.1", "821e619a240e6000db2fc16a574ef68b3bd7fe0167ccc264a81563cc93e67a31", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "19d744a36b809d810d610b57c27b934425859d158ebd56561bc41f7eeb8795db"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
"mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"},
"nimble_parsec": {:hex, :nimble_parsec, "1.3.0", "9e18a119d9efc3370a3ef2a937bf0b24c088d9c4bf0ba9d7c3751d49d347d035", [:mix], [], "hexpm", "7977f183127a7cbe9346981e2f480dc04c55ffddaef746bd58debd566070eef8"},
"oban": {:hex, :oban, "2.15.0", "27b9c2845cdff30c98c8060b11a64318e79bbc1bd32b8dc95fa59a1580a8d90c", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "22e181c540335d1dd5c995be00435927075519207d62b3de32477d95dbf9dfd3"},
"phoenix": {:hex, :phoenix, "1.7.2", "c375ffb482beb4e3d20894f84dd7920442884f5f5b70b9f4528cbe0cedefec63", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.4", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "1ebca94b32b4d0e097ab2444a9742ed8ff3361acad17365e4e6b2e79b4792159"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
"phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.7.2", "97cc4ff2dba1ebe504db72cb45098cb8e91f11160528b980bd282cc45c73b29c", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.3", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.2", "ad87296a092a46e03b7e9b0be7631ddcf64c790fa68a9ef5323b6cbb36affc72", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108"},
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
"nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
"oban": {:hex, :oban, "2.15.4", "d49ab4ffb7153010e32f80fe9e56f592706238149ec579eb50f8a4e41d218856", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5fce611fdfffb13e9148df883116e5201adf1e731eb302cc88cde0588510079c"},
"phoenix": {:hex, :phoenix, "1.7.7", "4cc501d4d823015007ba3cdd9c41ecaaf2ffb619d6fb283199fa8ddba89191e0", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "8966e15c395e5e37591b6ed0bd2ae7f48e961f0f60ac4c733f9566b519453085"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.2", "b21bd01fdeffcfe2fab49e4942aa938b6d3e89e93a480d4aee58085560a0bc0d", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "70242edd4601d50b69273b057ecf7b684644c19ee750989fd555625ae4ce8f5d"},
"phoenix_html": {:hex, :phoenix_html, "3.3.2", "d6ce982c6d8247d2fc0defe625255c721fb8d5f1942c5ac051f6177bffa5973f", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "44adaf8e667c1c20fb9d284b6b0fa8dc7946ce29e81ce621860aa7e96de9a11d"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.1", "c4f2a2d3b26e6ca684d162ccf18aaeed8bed2181896e0393d0a2959789482e51", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "1ca0f954274ce1916f771f86b3d49a91d3447e7c32d171660676095c5f30abe9"},
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
"phoenix_live_view": {:hex, :phoenix_live_view, "0.18.18", "1f38fbd7c363723f19aad1a04b5490ff3a178e37daaf6999594d5f34796c47fc", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
"phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
"phoenix_live_view": {:hex, :phoenix_live_view, "0.19.5", "6e730595e8e9b8c5da230a814e557768828fd8dfeeb90377d2d8dbb52d4ec00a", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b2eaa0dd3cfb9bd7fb949b88217df9f25aed915e986a28ad5c8a0d054e7ca9d3"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"},
"plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
"postgrex": {:hex, :postgrex, "0.16.5", "fcc4035cc90e23933c5d69a9cd686e329469446ef7abba2cf70f08e2c4b69810", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "edead639dc6e882618c01d8fc891214c481ab9a3788dfe38dd5e37fd1d5fb2e8"},
"postgrex": {:hex, :postgrex, "0.17.3", "c92cda8de2033a7585dae8c61b1d420a1a1322421df84da9a82a6764580c503d", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "946cf46935a4fdca7a81448be76ba3503cff082df42c6ec1ff16a4bdfbfb098d"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"swoosh": {:hex, :swoosh, "1.9.1", "0a5d7bf9954eb41d7e55525bc0940379982b090abbaef67cd8e1fd2ed7f8ca1a", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "76dffff3ffcab80f249d5937a592eaef7cc49ac6f4cdd27e622868326ed6371e"},
"swoosh": {:hex, :swoosh, "1.11.5", "429dccde78e2f60c6339e96917efecebca9d1f254d2878a150f580d2f782260b", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "21ee57dcd68d2f56d3bbe11e76d56d142b221bb12b6018c551cc68442b800040"},
"table_rex": {:hex, :table_rex, "3.1.1", "0c67164d1714b5e806d5067c1e96ff098ba7ae79413cc075973e17c38a587caa", [:mix], [], "hexpm", "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
"websock": {:hex, :websock, "0.5.0", "f6bbce90226121d62a0715bca7c986c5e43de0ccc9475d79c55381d1796368cc", [:mix], [], "hexpm", "b51ac706df8a7a48a2c622ee02d09d68be8c40418698ffa909d73ae207eb5fb8"},
"websock_adapter": {:hex, :websock_adapter, "0.5.0", "cea35d8bbf1a6964e32d4b02ceb561dfb769c04f16d60d743885587e7d2ca55b", [:mix], [{:bandit, "~> 0.6", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "16318b124effab8209b1eb7906c636374f623dc9511a8278ad09c083cea5bb83"},
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
"websock_adapter": {:hex, :websock_adapter, "0.5.4", "7af8408e7ed9d56578539594d1ee7d8461e2dd5c3f57b0f2a5352d610ddde757", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "d2c238c79c52cbe223fcdae22ca0bb5007a735b9e933870e241fce66afb4f4ab"},
}

View File

@ -16,12 +16,6 @@ msgstr ""
msgid "Resend confirmation instructions"
msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
#, elixir-autogen, elixir-format
@ -50,8 +44,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:50
#: lib/memex_web/live/note_live/show.html.heex:34
#: lib/memex_web/live/pipeline_live/index.html.heex:52
#: lib/memex_web/live/pipeline_live/show.html.heex:42
#: lib/memex_web/live/pipeline_live/show.html.heex:113
#: lib/memex_web/live/pipeline_live/show.html.heex:41
#: lib/memex_web/live/pipeline_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "delete"
msgstr ""
@ -66,8 +60,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:40
#: lib/memex_web/live/note_live/show.html.heex:24
#: lib/memex_web/live/pipeline_live/index.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:32
#: lib/memex_web/live/pipeline_live/show.html.heex:102
#: lib/memex_web/live/pipeline_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/show.html.heex:101
#, elixir-autogen, elixir-format
msgid "edit"
msgstr ""
@ -114,16 +108,16 @@ msgstr ""
msgid "register"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/context_live/form_component.html.heex:43
#: lib/memex_web/live/invite_live/form_component.html.heex:32
#: lib/memex_web/live/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:30
#: lib/memex_web/live/note_live/form_component.html.heex:43
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
#: lib/memex_web/live/step_live/form_component.html.heex:29
#, elixir-autogen, elixir-format
msgid "save"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:128
#: lib/memex_web/live/pipeline_live/show.html.heex:127
#, elixir-autogen, elixir-format
msgid "add step"
msgstr ""
@ -168,12 +162,12 @@ msgid "delete %{note_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/index.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:39
#, elixir-autogen, elixir-format
msgid "delete %{pipeline_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:111
#: lib/memex_web/live/pipeline_live/show.html.heex:110
#, elixir-autogen, elixir-format
msgid "delete %{step_title}"
msgstr ""
@ -198,7 +192,7 @@ msgstr ""
msgid "edit %{pipeline_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:100
#: lib/memex_web/live/pipeline_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "edit %{step_title}"
msgstr ""
@ -208,12 +202,18 @@ msgstr ""
msgid "edit invite for %{invite_name}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:90
#: lib/memex_web/live/pipeline_live/show.html.heex:89
#, elixir-autogen, elixir-format
msgid "move %{step_title} down"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:74
#: lib/memex_web/live/pipeline_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "move %{step_title} up"
msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "reset password"
msgstr ""

View File

@ -16,12 +16,6 @@ msgstr ""
msgid "Resend confirmation instructions"
msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
#, elixir-autogen, elixir-format
@ -50,8 +44,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:50
#: lib/memex_web/live/note_live/show.html.heex:34
#: lib/memex_web/live/pipeline_live/index.html.heex:52
#: lib/memex_web/live/pipeline_live/show.html.heex:42
#: lib/memex_web/live/pipeline_live/show.html.heex:113
#: lib/memex_web/live/pipeline_live/show.html.heex:41
#: lib/memex_web/live/pipeline_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "delete"
msgstr ""
@ -66,8 +60,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:40
#: lib/memex_web/live/note_live/show.html.heex:24
#: lib/memex_web/live/pipeline_live/index.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:32
#: lib/memex_web/live/pipeline_live/show.html.heex:102
#: lib/memex_web/live/pipeline_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/show.html.heex:101
#, elixir-autogen, elixir-format
msgid "edit"
msgstr ""
@ -114,16 +108,16 @@ msgstr ""
msgid "register"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/context_live/form_component.html.heex:43
#: lib/memex_web/live/invite_live/form_component.html.heex:32
#: lib/memex_web/live/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:30
#: lib/memex_web/live/note_live/form_component.html.heex:43
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
#: lib/memex_web/live/step_live/form_component.html.heex:29
#, elixir-autogen, elixir-format
msgid "save"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:128
#: lib/memex_web/live/pipeline_live/show.html.heex:127
#, elixir-autogen, elixir-format
msgid "add step"
msgstr ""
@ -168,12 +162,12 @@ msgid "delete %{note_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/index.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:39
#, elixir-autogen, elixir-format
msgid "delete %{pipeline_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:111
#: lib/memex_web/live/pipeline_live/show.html.heex:110
#, elixir-autogen, elixir-format
msgid "delete %{step_title}"
msgstr ""
@ -198,7 +192,7 @@ msgstr ""
msgid "edit %{pipeline_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:100
#: lib/memex_web/live/pipeline_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "edit %{step_title}"
msgstr ""
@ -208,12 +202,18 @@ msgstr ""
msgid "edit invite for %{invite_name}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:90
#: lib/memex_web/live/pipeline_live/show.html.heex:89
#, elixir-autogen, elixir-format
msgid "move %{step_title} down"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:74
#: lib/memex_web/live/pipeline_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "move %{step_title} up"
msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "reset password"
msgstr ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: lib/memex_web/live/context_live/show.html.heex:15
#: lib/memex_web/live/note_live/show.html.heex:15
#: lib/memex_web/live/pipeline_live/show.html.heex:23
#: lib/memex_web/live/pipeline_live/show.html.heex:22
#, elixir-autogen, elixir-format
msgid "Visibility: %{visibility}"
msgstr ""
@ -45,8 +45,8 @@ msgstr ""
msgid "confirm new password"
msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:23
#: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "content"
msgstr ""
@ -228,7 +228,7 @@ msgstr ""
msgid "public signups"
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:31
#: lib/memex_web/controllers/user_registration_controller.ex:32
#, elixir-autogen, elixir-format
msgid "register"
msgstr ""
@ -243,20 +243,20 @@ msgstr ""
msgid "report bugs or request features"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:45
#: lib/memex_web/live/note_live/form_component.html.heex:45
#: lib/memex_web/live/pipeline_live/form_component.html.heex:45
#: lib/memex_web/live/step_live/form_component.html.heex:31
#: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "saving..."
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:39
#: lib/memex_web/live/context_live/form_component.html.heex:40
#: lib/memex_web/live/context_live/form_component.html.heex:41
#: lib/memex_web/live/note_live/form_component.html.heex:39
#: lib/memex_web/live/note_live/form_component.html.heex:40
#: lib/memex_web/live/note_live/form_component.html.heex:41
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "select privacy"
msgstr ""
@ -272,12 +272,12 @@ msgstr ""
msgid "settings"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:31
#: lib/memex_web/live/context_live/form_component.html.heex:32
#: lib/memex_web/live/context_live/form_component.html.heex:33
#: lib/memex_web/live/note_live/form_component.html.heex:31
#: lib/memex_web/live/note_live/form_component.html.heex:32
#: lib/memex_web/live/note_live/form_component.html.heex:33
#: lib/memex_web/live/pipeline_live/form_component.html.heex:31
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32
#: lib/memex_web/live/pipeline_live/form_component.html.heex:33
#, elixir-autogen, elixir-format
msgid "tag1,tag2"
msgstr ""
@ -334,8 +334,8 @@ msgid "no contexts found"
msgstr ""
#: lib/memex_web/components/pipelines_table_component.ex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:23
#: lib/memex_web/live/pipeline_live/form_component.html.heex:24
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "description"
msgstr ""
@ -409,8 +409,8 @@ msgstr ""
msgid "home"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:23
#: lib/memex_web/live/context_live/form_component.html.heex:24
#: lib/memex_web/live/context_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note"
msgstr ""
@ -436,7 +436,7 @@ msgstr ""
msgid "what is this?"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:60
#: lib/memex_web/live/pipeline_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "%{position}. %{title}"
msgstr ""
@ -461,12 +461,12 @@ msgstr ""
msgid "add step to %{slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:54
#: lib/memex_web/live/pipeline_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "no steps"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "steps:"
msgstr ""
@ -477,8 +477,8 @@ msgstr ""
msgid "title"
msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:23
#: lib/memex_web/live/step_live/form_component.html.heex:24
#: lib/memex_web/live/step_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "use [[context-slug]] to link to a context"
msgstr ""

View File

@ -93,9 +93,9 @@ msgstr ""
msgid "oops, something went wrong! please check the errors below."
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:11
#: lib/memex_web/controllers/user_registration_controller.ex:40
#: lib/memex_web/controllers/user_registration_controller.ex:69
#: lib/memex_web/controllers/user_registration_controller.ex:12
#: lib/memex_web/controllers/user_registration_controller.ex:41
#: lib/memex_web/controllers/user_registration_controller.ex:70
#, elixir-autogen, elixir-format, fuzzy
msgid "sorry, this invite was not found or expired"
msgstr ""
@ -136,8 +136,8 @@ msgstr ""
msgid "reset password link is invalid or it has expired."
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:21
#: lib/memex_web/controllers/user_registration_controller.ex:50
#: lib/memex_web/controllers/user_registration_controller.ex:22
#: lib/memex_web/controllers/user_registration_controller.ex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "sorry, public registration is disabled"
msgstr ""

View File

@ -70,8 +70,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:47
#: lib/memex_web/live/note_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/index.html.heex:47
#: lib/memex_web/live/pipeline_live/show.html.heex:39
#: lib/memex_web/live/pipeline_live/show.html.heex:110
#: lib/memex_web/live/pipeline_live/show.html.heex:38
#: lib/memex_web/live/pipeline_live/show.html.heex:109
#, elixir-autogen, elixir-format
msgid "are you sure?"
msgstr ""
@ -106,7 +106,7 @@ msgstr ""
msgid "copied to clipboard"
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:64
#: lib/memex_web/controllers/user_registration_controller.ex:65
#, elixir-autogen, elixir-format, fuzzy
msgid "please check your email to verify your account"
msgstr ""

View File

@ -17,7 +17,7 @@ msgstr ""
#: lib/memex_web/live/context_live/show.html.heex:15
#: lib/memex_web/live/note_live/show.html.heex:15
#: lib/memex_web/live/pipeline_live/show.html.heex:23
#: lib/memex_web/live/pipeline_live/show.html.heex:22
#, elixir-autogen, elixir-format
msgid "Visibility: %{visibility}"
msgstr ""
@ -43,8 +43,8 @@ msgstr ""
msgid "confirm new password"
msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:23
#: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "content"
msgstr ""
@ -226,7 +226,7 @@ msgstr ""
msgid "public signups"
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:31
#: lib/memex_web/controllers/user_registration_controller.ex:32
#, elixir-autogen, elixir-format
msgid "register"
msgstr ""
@ -241,20 +241,20 @@ msgstr ""
msgid "report bugs or request features"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:45
#: lib/memex_web/live/note_live/form_component.html.heex:45
#: lib/memex_web/live/pipeline_live/form_component.html.heex:45
#: lib/memex_web/live/step_live/form_component.html.heex:31
#: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "saving..."
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:39
#: lib/memex_web/live/context_live/form_component.html.heex:40
#: lib/memex_web/live/context_live/form_component.html.heex:41
#: lib/memex_web/live/note_live/form_component.html.heex:39
#: lib/memex_web/live/note_live/form_component.html.heex:40
#: lib/memex_web/live/note_live/form_component.html.heex:41
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "select privacy"
msgstr ""
@ -270,12 +270,12 @@ msgstr ""
msgid "settings"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:31
#: lib/memex_web/live/context_live/form_component.html.heex:32
#: lib/memex_web/live/context_live/form_component.html.heex:33
#: lib/memex_web/live/note_live/form_component.html.heex:31
#: lib/memex_web/live/note_live/form_component.html.heex:32
#: lib/memex_web/live/note_live/form_component.html.heex:33
#: lib/memex_web/live/pipeline_live/form_component.html.heex:31
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32
#: lib/memex_web/live/pipeline_live/form_component.html.heex:33
#, elixir-autogen, elixir-format
msgid "tag1,tag2"
msgstr ""
@ -332,8 +332,8 @@ msgid "no contexts found"
msgstr ""
#: lib/memex_web/components/pipelines_table_component.ex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:23
#: lib/memex_web/live/pipeline_live/form_component.html.heex:24
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "description"
msgstr ""
@ -407,8 +407,8 @@ msgstr ""
msgid "home"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:23
#: lib/memex_web/live/context_live/form_component.html.heex:24
#: lib/memex_web/live/context_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note"
msgstr ""
@ -434,7 +434,7 @@ msgstr ""
msgid "what is this?"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:60
#: lib/memex_web/live/pipeline_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "%{position}. %{title}"
msgstr ""
@ -459,12 +459,12 @@ msgstr ""
msgid "add step to %{slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:54
#: lib/memex_web/live/pipeline_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "no steps"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "steps:"
msgstr ""
@ -475,8 +475,8 @@ msgstr ""
msgid "title"
msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:23
#: lib/memex_web/live/step_live/form_component.html.heex:24
#: lib/memex_web/live/step_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "use [[context-slug]] to link to a context"
msgstr ""

View File

@ -17,12 +17,6 @@ msgstr ""
msgid "Resend confirmation instructions"
msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
#, elixir-autogen, elixir-format
@ -51,8 +45,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:50
#: lib/memex_web/live/note_live/show.html.heex:34
#: lib/memex_web/live/pipeline_live/index.html.heex:52
#: lib/memex_web/live/pipeline_live/show.html.heex:42
#: lib/memex_web/live/pipeline_live/show.html.heex:113
#: lib/memex_web/live/pipeline_live/show.html.heex:41
#: lib/memex_web/live/pipeline_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "delete"
msgstr ""
@ -67,8 +61,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:40
#: lib/memex_web/live/note_live/show.html.heex:24
#: lib/memex_web/live/pipeline_live/index.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:32
#: lib/memex_web/live/pipeline_live/show.html.heex:102
#: lib/memex_web/live/pipeline_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/show.html.heex:101
#, elixir-autogen, elixir-format
msgid "edit"
msgstr ""
@ -115,16 +109,16 @@ msgstr ""
msgid "register"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/context_live/form_component.html.heex:43
#: lib/memex_web/live/invite_live/form_component.html.heex:32
#: lib/memex_web/live/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:30
#: lib/memex_web/live/note_live/form_component.html.heex:43
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
#: lib/memex_web/live/step_live/form_component.html.heex:29
#, elixir-autogen, elixir-format
msgid "save"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:128
#: lib/memex_web/live/pipeline_live/show.html.heex:127
#, elixir-autogen, elixir-format
msgid "add step"
msgstr ""
@ -169,12 +163,12 @@ msgid "delete %{note_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/index.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:39
#, elixir-autogen, elixir-format
msgid "delete %{pipeline_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:111
#: lib/memex_web/live/pipeline_live/show.html.heex:110
#, elixir-autogen, elixir-format
msgid "delete %{step_title}"
msgstr ""
@ -199,7 +193,7 @@ msgstr ""
msgid "edit %{pipeline_slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:100
#: lib/memex_web/live/pipeline_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "edit %{step_title}"
msgstr ""
@ -209,12 +203,18 @@ msgstr ""
msgid "edit invite for %{invite_name}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:90
#: lib/memex_web/live/pipeline_live/show.html.heex:89
#, elixir-autogen, elixir-format
msgid "move %{step_title} down"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:74
#: lib/memex_web/live/pipeline_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "move %{step_title} up"
msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "reset password"
msgstr ""

View File

@ -18,7 +18,7 @@ msgstr ""
#: lib/memex_web/live/context_live/show.html.heex:15
#: lib/memex_web/live/note_live/show.html.heex:15
#: lib/memex_web/live/pipeline_live/show.html.heex:23
#: lib/memex_web/live/pipeline_live/show.html.heex:22
#, elixir-autogen, elixir-format
msgid "Visibility: %{visibility}"
msgstr ""
@ -44,8 +44,8 @@ msgstr ""
msgid "confirm new password"
msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:23
#: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "content"
msgstr ""
@ -227,7 +227,7 @@ msgstr ""
msgid "public signups"
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:31
#: lib/memex_web/controllers/user_registration_controller.ex:32
#, elixir-autogen, elixir-format
msgid "register"
msgstr ""
@ -242,20 +242,20 @@ msgstr ""
msgid "report bugs or request features"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:45
#: lib/memex_web/live/note_live/form_component.html.heex:45
#: lib/memex_web/live/pipeline_live/form_component.html.heex:45
#: lib/memex_web/live/step_live/form_component.html.heex:31
#: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "saving..."
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:39
#: lib/memex_web/live/context_live/form_component.html.heex:40
#: lib/memex_web/live/context_live/form_component.html.heex:41
#: lib/memex_web/live/note_live/form_component.html.heex:39
#: lib/memex_web/live/note_live/form_component.html.heex:40
#: lib/memex_web/live/note_live/form_component.html.heex:41
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "select privacy"
msgstr ""
@ -271,12 +271,12 @@ msgstr ""
msgid "settings"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:31
#: lib/memex_web/live/context_live/form_component.html.heex:32
#: lib/memex_web/live/context_live/form_component.html.heex:33
#: lib/memex_web/live/note_live/form_component.html.heex:31
#: lib/memex_web/live/note_live/form_component.html.heex:32
#: lib/memex_web/live/note_live/form_component.html.heex:33
#: lib/memex_web/live/pipeline_live/form_component.html.heex:31
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32
#: lib/memex_web/live/pipeline_live/form_component.html.heex:33
#, elixir-autogen, elixir-format
msgid "tag1,tag2"
msgstr ""
@ -333,8 +333,8 @@ msgid "no contexts found"
msgstr ""
#: lib/memex_web/components/pipelines_table_component.ex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:23
#: lib/memex_web/live/pipeline_live/form_component.html.heex:24
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "description"
msgstr ""
@ -408,8 +408,8 @@ msgstr ""
msgid "home"
msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:23
#: lib/memex_web/live/context_live/form_component.html.heex:24
#: lib/memex_web/live/context_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note"
msgstr ""
@ -435,7 +435,7 @@ msgstr ""
msgid "what is this?"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:60
#: lib/memex_web/live/pipeline_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "%{position}. %{title}"
msgstr ""
@ -460,12 +460,12 @@ msgstr ""
msgid "add step to %{slug}"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:54
#: lib/memex_web/live/pipeline_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "no steps"
msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "steps:"
msgstr ""
@ -476,8 +476,8 @@ msgstr ""
msgid "title"
msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:23
#: lib/memex_web/live/step_live/form_component.html.heex:24
#: lib/memex_web/live/step_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "use [[context-slug]] to link to a context"
msgstr ""

View File

@ -94,9 +94,9 @@ msgstr ""
msgid "oops, something went wrong! please check the errors below."
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:11
#: lib/memex_web/controllers/user_registration_controller.ex:40
#: lib/memex_web/controllers/user_registration_controller.ex:69
#: lib/memex_web/controllers/user_registration_controller.ex:12
#: lib/memex_web/controllers/user_registration_controller.ex:41
#: lib/memex_web/controllers/user_registration_controller.ex:70
#, elixir-autogen, elixir-format
msgid "sorry, this invite was not found or expired"
msgstr ""
@ -137,8 +137,8 @@ msgstr ""
msgid "reset password link is invalid or it has expired."
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:21
#: lib/memex_web/controllers/user_registration_controller.ex:50
#: lib/memex_web/controllers/user_registration_controller.ex:22
#: lib/memex_web/controllers/user_registration_controller.ex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "sorry, public registration is disabled"
msgstr ""

View File

@ -71,8 +71,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:47
#: lib/memex_web/live/note_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/index.html.heex:47
#: lib/memex_web/live/pipeline_live/show.html.heex:39
#: lib/memex_web/live/pipeline_live/show.html.heex:110
#: lib/memex_web/live/pipeline_live/show.html.heex:38
#: lib/memex_web/live/pipeline_live/show.html.heex:109
#, elixir-autogen, elixir-format
msgid "are you sure?"
msgstr ""
@ -107,7 +107,7 @@ msgstr ""
msgid "copied to clipboard"
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:64
#: lib/memex_web/controllers/user_registration_controller.ex:65
#, elixir-autogen, elixir-format
msgid "please check your email to verify your account"
msgstr ""

View File

@ -93,9 +93,9 @@ msgstr ""
msgid "oops, something went wrong! please check the errors below."
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:11
#: lib/memex_web/controllers/user_registration_controller.ex:40
#: lib/memex_web/controllers/user_registration_controller.ex:69
#: lib/memex_web/controllers/user_registration_controller.ex:12
#: lib/memex_web/controllers/user_registration_controller.ex:41
#: lib/memex_web/controllers/user_registration_controller.ex:70
#, elixir-autogen, elixir-format
msgid "sorry, this invite was not found or expired"
msgstr ""
@ -136,8 +136,8 @@ msgstr ""
msgid "reset password link is invalid or it has expired."
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:21
#: lib/memex_web/controllers/user_registration_controller.ex:50
#: lib/memex_web/controllers/user_registration_controller.ex:22
#: lib/memex_web/controllers/user_registration_controller.ex:51
#, elixir-autogen, elixir-format
msgid "sorry, public registration is disabled"
msgstr ""

View File

@ -70,8 +70,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:47
#: lib/memex_web/live/note_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/index.html.heex:47
#: lib/memex_web/live/pipeline_live/show.html.heex:39
#: lib/memex_web/live/pipeline_live/show.html.heex:110
#: lib/memex_web/live/pipeline_live/show.html.heex:38
#: lib/memex_web/live/pipeline_live/show.html.heex:109
#, elixir-autogen, elixir-format
msgid "are you sure?"
msgstr ""
@ -106,7 +106,7 @@ msgstr ""
msgid "copied to clipboard"
msgstr ""
#: lib/memex_web/controllers/user_registration_controller.ex:64
#: lib/memex_web/controllers/user_registration_controller.ex:65
#, elixir-autogen, elixir-format
msgid "please check your email to verify your account"
msgstr ""

View File

@ -26,8 +26,8 @@ defmodule MemexWeb.UserConfirmationControllerTest do
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["info"] =~
"If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert conn.assigns.flash["info"] =~
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "confirm"
end
@ -38,16 +38,16 @@ defmodule MemexWeb.UserConfirmationControllerTest do
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["info"] =~
"If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert conn.assigns.flash["info"] =~
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
end
test "does not send confirmation token if email is invalid", %{conn: conn} do
conn = post(conn, ~p"/users/confirm", %{user: %{email: "unknown@example.com"}})
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["info"] =~
"If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert conn.assigns.flash["info"] =~
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert Repo.all(Accounts.UserToken) == []
end
@ -62,9 +62,7 @@ defmodule MemexWeb.UserConfirmationControllerTest do
conn = get(conn, ~p"/users/confirm/#{token}")
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["info"] =~ "#{user.email} confirmed successfully"
assert conn.assigns.flash["info"] =~ "#{user.email} confirmed successfully"
assert Accounts.get_user!(user.id).confirmed_at
refute get_session(conn, :user_token)
assert Repo.all(Accounts.UserToken) == []
@ -72,7 +70,7 @@ defmodule MemexWeb.UserConfirmationControllerTest do
# When not logged in
conn = get(conn, ~p"/users/confirm/#{token}")
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["error"] =~ "User confirmation link is invalid or it has expired"
assert conn.assigns.flash["error"] =~ "user confirmation link is invalid or it has expired"
# When logged in
conn =
@ -85,10 +83,9 @@ defmodule MemexWeb.UserConfirmationControllerTest do
end
test "does not confirm email with invalid token", %{conn: conn, user: user} do
conn = get(conn, ~p"/users/confirm/#{"oops"}")
conn = get(conn, ~p"/users/confirm/oops")
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["error"] =~ "User confirmation link is invalid or it has expired"
assert conn.assigns.flash["error"] =~ "user confirmation link is invalid or it has expired"
refute Accounts.get_user!(user.id).confirmed_at
end
end

View File

@ -32,6 +32,12 @@ defmodule MemexWeb.UserRegistrationControllerTest do
}
assert redirected_to(conn) =~ ~p"/"
# Now do a logged in request and assert on the menu
conn = get(conn, ~p"/")
response = html_response(conn, 200)
# user's email is recorded as admin
assert response =~ email
end
test "render errors for invalid data", %{conn: conn} do

View File

@ -26,8 +26,8 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
conn = post(conn, ~p"/users/reset_password", %{user: %{email: user.email}})
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["info"] =~
"If your email is in our system, you will receive instructions to reset your password shortly."
assert conn.assigns.flash["info"] =~
"if your email is in our system, you will receive instructions to reset your password shortly."
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "reset_password"
end
@ -36,8 +36,8 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
conn = post(conn, ~p"/users/reset_password", %{user: %{email: "unknown@example.com"}})
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["info"] =~
"If your email is in our system, you will receive instructions to reset your password shortly."
assert conn.assigns.flash["info"] =~
"if your email is in our system, you will receive instructions to reset your password shortly."
assert Repo.all(Accounts.UserToken) == []
end
@ -55,13 +55,13 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
test "renders reset password", %{conn: conn, token: token} do
conn = get(conn, ~p"/users/reset_password/#{token}")
assert html_response(conn, 200) =~ "Reset password"
assert html_response(conn, 200) =~ "reset password"
end
test "does not render reset password with invalid token", %{conn: conn} do
conn = get(conn, ~p"/users/reset_password/#{"oops"}")
conn = get(conn, ~p"/users/reset_password/oops")
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["error"] =~ "Reset password link is invalid or it has expired"
assert conn.assigns.flash["error"] =~ "reset password link is invalid or it has expired"
end
end
@ -86,7 +86,7 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
assert redirected_to(conn) == ~p"/users/log_in"
refute get_session(conn, :user_token)
conn.assigns.flash["info"] =~ "Password reset successfully"
assert conn.assigns.flash["info"] =~ "password reset successfully"
assert Accounts.get_user_by_email_and_password(user.email, "new valid password")
end
@ -100,15 +100,15 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
})
response = html_response(conn, 200)
assert response =~ "Reset password"
assert response =~ "reset password"
assert response =~ "should be at least 12 character(s)"
assert response =~ "does not match password"
end
test "does not reset password with invalid token", %{conn: conn} do
conn = put(conn, ~p"/users/reset_password/#{"oops"}")
conn = put(conn, ~p"/users/reset_password/oops")
assert redirected_to(conn) == ~p"/"
conn.assigns.flash["error"] =~ "Reset password link is invalid or it has expired"
assert conn.assigns.flash["error"] =~ "reset password link is invalid or it has expired"
end
end
end

View File

@ -83,14 +83,14 @@ defmodule MemexWeb.UserSessionControllerTest do
conn = conn |> log_in_user(current_user) |> delete(~p"/users/log_out")
assert redirected_to(conn) == ~p"/"
refute get_session(conn, :user_token)
conn.assigns.flash["info"] =~ "logged out successfully"
assert conn.assigns.flash["info"] =~ "logged out successfully"
end
test "succeeds even if the user is not logged in", %{conn: conn} do
conn = delete(conn, ~p"/users/log_out")
assert redirected_to(conn) == ~p"/"
refute get_session(conn, :user_token)
conn.assigns.flash["info"] =~ "logged out successfully"
assert conn.assigns.flash["info"] =~ "logged out successfully"
end
end
end

View File

@ -39,8 +39,7 @@ defmodule MemexWeb.UserSettingsControllerTest do
assert redirected_to(new_password_conn) == ~p"/users/settings"
assert get_session(new_password_conn, :user_token) != get_session(conn, :user_token)
new_password_conn.assigns.flash["info"] =~ "password updated successfully"
assert new_password_conn.assigns.flash["info"] =~ "password updated successfully"
assert Accounts.get_user_by_email_and_password(current_user.email, "new valid password")
end
@ -60,7 +59,6 @@ defmodule MemexWeb.UserSettingsControllerTest do
assert response =~ "should be at least 12 character(s)"
assert response =~ "does not match password"
assert response =~ "is not valid"
assert get_session(old_password_conn, :user_token) == get_session(conn, :user_token)
end
end
@ -72,13 +70,13 @@ defmodule MemexWeb.UserSettingsControllerTest do
put(conn, ~p"/users/settings", %{
action: "update_email",
current_password: valid_user_password(),
user: %{"email" => unique_user_email()}
user: %{email: unique_user_email()}
})
assert redirected_to(conn) == ~p"/users/settings"
conn.assigns.flash["info"] =~
"a link to confirm your email change has been sent to the new address."
assert conn.assigns.flash["info"] =~
"a link to confirm your email change has been sent to the new address."
assert Accounts.get_user_by_email(current_user.email)
end
@ -86,9 +84,9 @@ defmodule MemexWeb.UserSettingsControllerTest do
test "does not update email on invalid data", %{conn: conn} do
conn =
put(conn, ~p"/users/settings", %{
"action" => "update_email",
"current_password" => "invalid",
"user" => %{"email" => "with spaces"}
action: "update_email",
current_password: "invalid",
user: %{email: "with spaces"}
})
response = html_response(conn, 200)
@ -118,19 +116,19 @@ defmodule MemexWeb.UserSettingsControllerTest do
%{conn: conn, current_user: current_user, token: token, email: email} do
conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
assert redirected_to(conn) == ~p"/users/settings"
conn.assigns.flash["info"] =~ "email changed successfully"
assert conn.assigns.flash["info"] =~ "email changed successfully"
refute Accounts.get_user_by_email(current_user.email)
assert Accounts.get_user_by_email(email)
conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
assert redirected_to(conn) == ~p"/users/settings"
conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
assert conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
end
test "does not update email with invalid token", %{conn: conn, current_user: current_user} do
conn = get(conn, ~p"/users/settings/confirm_email/#{"oops"}")
conn = get(conn, ~p"/users/settings/confirm_email/oops")
assert redirected_to(conn) == ~p"/users/settings"
conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
assert conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
assert Accounts.get_user_by_email(current_user.email)
end

View File

@ -22,7 +22,6 @@ defmodule MemexWeb.InviteLiveTest do
test "lists all invites", %{conn: conn, invite: invite} do
{:ok, _index_live, html} = live(conn, ~p"/invites")
assert html =~ "invites"
assert html =~ invite.name
end
@ -52,7 +51,7 @@ defmodule MemexWeb.InviteLiveTest do
|> element(~s/a[aria-label="edit invite for #{invite.name}"]/)
|> render_click() =~ "edit invite"
assert_patch(index_live, ~p"/invites/#{invite}/edit")
assert_patch(index_live, ~p"/invites/edit/#{invite}")
assert index_live
|> form("#invite-form")

View File

@ -61,7 +61,7 @@ defmodule Memex.DataCase do
def valid_user_password, do: "hello world!"
def random_slug(length \\ 20) do
symbols = '0123456789abcdef-'
symbols = ~c"0123456789abcdef-"
symbol_count = Enum.count(symbols)
for _ <- Range.new(1, length),