This commit is contained in:
Mayel de Borniol 2024-01-08 17:09:09 +00:00
parent 40c570f564
commit 77410df498
37 changed files with 1547 additions and 30 deletions

View file

@ -12,7 +12,7 @@ ex_cldr = "~> 2.30" # internationalisation
# livebook = "~> 0.7.2"
surface = "~> 0.11.0" # note: usually we should let bonfire_ui_common control this
phoenix = "~> 1.7.0" # note: should match version supported by version of surface used
phoenix_live_view = "~> 0.20.1" # usually should let surface decide the version
phoenix_live_view = "<= 0.20.1" # usually should let surface decide the version
live_view_native = "~> 0.2.0-beta.2"
live_view_native_swiftui = "~> 0.2.0-beta.2"
#live_view_native_platform = "~> 0.2.0-beta.2"

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Social.Graph.Repo.Migrations.ImportSocial do
@moduledoc false
use Ecto.Migration
import Bonfire.Social.Graph.Migrations
import Needle.Migration
def up do
migrate_social()
end
def down, do: migrate_social()
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Posts.Repo.Migrations.ImportSocial do
@moduledoc false
use Ecto.Migration
import Bonfire.Posts.Migrations
import Needle.Migration
def up do
migrate_social()
end
def down, do: migrate_social()
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Messages.Repo.Migrations.ImportSocial do
@moduledoc false
use Ecto.Migration
import Bonfire.Messages.Migrations
import Needle.Migration
def up do
migrate_social()
end
def down, do: migrate_social()
end

View file

@ -0,0 +1,7 @@
defmodule Bonfire.Social.Repo.Migrations.AddVersions do
use Ecto.Migration
def change do
Bonfire.Social.Migrations.add_paper_trail()
end
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Repo.Migrations.Alias do
@moduledoc false
use Ecto.Migration
require Bonfire.Data.Identity.Alias.Migration
def up do
Bonfire.Data.Identity.Alias.Migration.migrate_alias()
end
def down do
Bonfire.Data.Identity.Alias.Migration.migrate_alias()
end
end

View file

@ -0,0 +1,7 @@
defmodule Bonfire.Social.Repo.Migrations.RepliedTotal do
@moduledoc false
use Ecto.Migration
def up, do: Bonfire.Data.Social.Replied.Migration.add_generated_total_column()
def down, do: nil
end

View file

@ -0,0 +1,9 @@
defmodule Bonfire.Boundaries.Repo.Migrations.BoundariesFixturesUp do
@moduledoc false
use Ecto.Migration
import Bonfire.Boundaries.Fixtures
def up, do: Bonfire.Boundaries.Fixtures.insert()
def down, do: nil
end

View file

@ -0,0 +1,9 @@
defmodule Bonfire.Boundaries.Repo.Migrations.BoundariesUsersFixturesUp do
use Ecto.Migration
def up() do
Bonfire.Boundaries.FixturesUsersMigrations.up()
end
def down, do: :ok
end

View file

@ -0,0 +1,14 @@
defmodule Bonfire.Files.Repo.Migrations.FilesRefactor do
@moduledoc false
use Ecto.Migration
import Needle.Migration
def up do
alter table("bonfire_files_media") do
Ecto.Migration.add_if_not_exists(:file, :jsonb)
end
end
def down, do: nil
end

View file

@ -0,0 +1,14 @@
defmodule Bonfire.Data.Identity.Repo.Migrations.SettingsJson do
@moduledoc false
use Ecto.Migration
import Needle.Migration
def up do
alter table("bonfire_data_identity_settings") do
Ecto.Migration.add_if_not_exists(:json, :jsonb)
end
end
def down, do: nil
end

View file

@ -2,6 +2,7 @@
bonfire_api_graphql = "https://github.com/bonfire-networks/bonfire_api_graphql#main"
bonfire_ui_topics = "https://github.com/bonfire-networks/bonfire_ui_topics#main"
bonfire_ui_groups = "https://github.com/bonfire-networks/bonfire_ui_groups#main"
bonfire_pages = "https://github.com/bonfire-networks/bonfire_pages#main"
bonfire_classify = "https://github.com/bonfire-networks/bonfire_classify#main"
bonfire_quantify = "https://github.com/bonfire-networks/bonfire_quantify#main"
bonfire_geolocate = "https://github.com/bonfire-networks/bonfire_geolocate#main"

View file

@ -1,3 +1,3 @@
# API
absinthe = "<= 1.7.3"
absinthe = "~> 1.7.6"

View file

@ -0,0 +1,540 @@
/*
This file was generated by the Surface compiler.
*/
import { defaultValueCtx, editorViewOptionsCtx, Editor, editorViewCtx, commandsCtx, rootCtx } from '@milkdown/core';
import { $prose, replaceAll, insert} from '@milkdown/utils';
import { commonmark, wrapInHeadingCommand, toggleStrongCommand, toggleEmphasisCommand} from '@milkdown/preset-commonmark';
import {gfm} from "@milkdown/preset-gfm";
import { emoji } from '@milkdown/plugin-emoji';
import { listener, listenerCtx } from '@milkdown/plugin-listener';
import { SlashProvider } from '@milkdown/plugin-slash'
import { slashFactory } from '@milkdown/plugin-slash';
import { gemoji } from "gemoji";
import { clipboard } from '@milkdown/plugin-clipboard';
import { createPopup } from '@picmo/popup-picker';
import { Plugin, PluginKey } from '@milkdown/prose/state';
import { Decoration, DecorationSet } from '@milkdown/prose/view';
const PlaceholderPlugin = new Plugin({
key: new PluginKey('milkdown-placeholder'),
props: {
decorations: (state) => {
const element = document.createElement('span')
element.classList.add('milkdown-placeholder')
element.style.position = "absolute";
element.style.opacity = "0.5";
element.innerText = "Write something...";
const placeholderDecoration = Decoration.widget(0, element, { key: 'milkdown-placeholder', side: 0 });
if (state.doc.textContent.trim().length === 0) {
return DecorationSet.create(state.doc, [placeholderDecoration])
}
}
}
});
const placeholder = $prose(() => PlaceholderPlugin);
const MIN_PREFIX_LENGTH = 2
const VALID_CHARS = '[\\w\\+_\\-:]'
const MENTION_PREFIX = '(?:@)'
const EMOJI_PREFIX = '(?::)'
const MENTION_REGEX = new RegExp(`(?:\\s|^)(${MENTION_PREFIX}${VALID_CHARS}{${MIN_PREFIX_LENGTH},})$`)
const EMOJI_REGEX = new RegExp(`(?:\\s|^)(${EMOJI_PREFIX}${VALID_CHARS}{${MIN_PREFIX_LENGTH},})$`)
import '@milkdown/theme-nord/style.css';
const markdown = ``
function mentionsPluginView(view) {
const content = document.createElement('ul');
content.tabIndex = 1;
content.className = 'm-0 p-0 menu w-72 bg-base-100 shadow-lg ring-2';
let list = ''
const provider = new SlashProvider({
content,
shouldShow: (view, prevState) => {
// get the current content of the editor
const { state } = view;
const { doc } = state;
const currentText = doc.textContent;
if (currentText === '') {
return false;
}
const mentions = currentText.match(MENTION_REGEX)
// Display the menu if the last character is `@` followed by 2 chars.
if (mentions) {
// get the characters that follows the `@` in currentText
const text = mentions[1].split('@').pop()
return getFeedItems(text, '@').then(res => {
list = ''
if (res.length > 0) {
// Add max 4 items to the menu
let maxItems = 4
for (let i = 0; i < res.length && i < maxItems; i++) {
list += mentionItemRenderer(res[i], text);
}
content.innerHTML = list
return true
} else {
content.innerHTML = ''
return false
}
})
}
return false;
},
trigger: '@',
});
return {
update: (updatedView, prevState) => {
provider.update(updatedView, prevState);
},
destroy: () => {
provider.destroy();
content.remove();
}
}
}
function emojisPluginView() {
const content = document.createElement('ul');
content.tabIndex = 1;
content.className = 'm-0 p-0 menu w-72 bg-base-100 shadow-lg ring-2';
let list = ''
const provider = new SlashProvider({
content,
shouldShow: (view, prevState) => {
// get the current content of the editor
const { state } = view;
const { doc } = state;
const currentText = doc.textContent;
if (currentText === '') {
return false;
}
const emojis = currentText.match(EMOJI_REGEX)
// Display the menu if the last character is `@` followed by 2 chars.
if (emojis) {
// get the characters that follows the `@` in currentText
const text = emojis[1].split(':').pop()
const index = gemoji.findIndex((emoji) => {
return emoji.names.some((name) => name.includes(text));
});
list = ''
if (index > 0) {
// Add max 4 items to the menu
gemoji
.filter((emoji) => {
return emoji.names.some((name) => name.includes(text));
})
.slice(0, 6)
.map((emoji) => {
list += emojiItemRenderer(emoji, text);
})
content.innerHTML = list
return true
} else {
content.innerHTML = ''
return false
}
}
return false;
},
trigger: ':',
});
return {
update: (updatedView, prevState) => {
provider.update(updatedView, prevState);
},
destroy: () => {
provider.destroy();
content.remove();
}
}
}
// function slashPluginView(view) {
// const content = document.createElement('ul');
// content.tabIndex = 1;
// content.className = 'm-0 p-0 menu w-72 bg-base-100 shadow-lg ring-2';
// let list = slashItemRenderer()
// content.innerHTML = list
// const provider = new SlashProvider({
// content,
// trigger: '/',
// });
// return {
// update: (updatedView, prevState) => {
// provider.update(updatedView, prevState);
// },
// destroy: () => {
// provider.destroy();
// content.remove();
// }
// }
// }
function getFeedItems(queryText, prefix) {
// console.log(prefix)
if (queryText && queryText.length > 0) {
return new Promise((resolve) => {
// this requires the bonfire_tag extension
fetch("/api/tag/autocomplete/ck5/" + prefix + "/" + queryText)
.then((response) => response.json())
.then((data) => {
console.log("data")
console.log(data)
let values = data.map((item) => ({
id: item.id,
value: item.name,
icon: item.icon
}));
resolve(values);
})
.catch((error) => {
console.error("There has been a problem with the tag search:", error);
resolve([]);
});
});
} else return [];
}
const mentionItemRenderer = (item, text) => {
return `
<li class="rounded-none">
<button type="button" data-mention="${item.id}" data-text="${text}" class="mention_btn rounded-none w-full flex items-center">
<div class="flex items-center gap-3 w-full pointer-events-none">
<div class="flex-shrink-0">
<img class="h-6 w-6 rounded-full" src="${item.icon}" alt="">
</div>
<div class="gap-0 items-start flex flex-col" data-id="${item.id}" data-input="${text}">
<div class="text-sm truncate max-w-[240px] text-base-content font-semibold">${item.value}</div>
<div class="text-xs truncate max-w-[240px] text-base-content/70 font-regular">${item.id}</div>
</div>
</div>
</button>
</li>`
}
const emojiItemRenderer = (item, text) => {
return `
<li class="rounded-none">
<button type="button" data-text="${text}" data-emoji=${item.emoji} class="emoji_btn gap-3 rounded-none w-full flex items-center">
<div class="pointer-events-none flex items-baseline w-full gap-2">
<span>${item.emoji}</span> <span class="truncate max-w-[220px]">:${item.names[0]}:</span>
</div>
</button>
</li>`
}
// const slashItemRenderer = () => {
// return `
// <li class="rounded-none">
// <button type="button" class="heading_btn rounded-none flex items-center gap-2">
// <span class="pointer-events-none material-symbols-outlined text-nord-10 dark:text-nord-9">
// <svg class="w-5 h-5 shrink-0 flex-1 text-info" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M6 17q-.425 0-.713-.288T5 16V8q0-.425.288-.713T6 7q.425 0 .713.288T7 8v3h4V8q0-.425.288-.713T12 7q.425 0 .713.288T13 8v8q0 .425-.288.713T12 17q-.425 0-.713-.288T11 16v-3H7v3q0 .425-.288.713T6 17Zm12 0q-.425 0-.713-.288T17 16V9h-1q-.425 0-.713-.288T15 8q0-.425.288-.713T16 7h2q.425 0 .713.288T19 8v8q0 .425-.288.713T18 17Z"/></svg>
// </span>
// Heading
// </button>
// </li>
// <li class="rounded-none">
// <button type="button" class="bold_btn rounded-none flex items-center gap-2">
// <span class="material-symbols-outlined text-nord-10 dark:text-nord-9">
// <svg class="w-5 h-5 shrink-0 flex-1 text-info" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M6 17q-.425 0-.713-.288T5 16V8q0-.425.288-.713T6 7q.425 0 .713.288T7 8v3h4V8q0-.425.288-.713T12 7q.425 0 .713.288T13 8v8q0 .425-.288.713T12 17q-.425 0-.713-.288T11 16v-3H7v3q0 .425-.288.713T6 17Zm12 0q-.425 0-.713-.288T17 16V9h-1q-.425 0-.713-.288T15 8q0-.425.288-.713T16 7h2q.425 0 .713.288T19 8v8q0 .425-.288.713T18 17Z"/></svg>
// </span>
// Bold
// </button>
// </li>
// <li class="rounded-none">
// <button type="button" class="italic_btn rounded-none flex items-center gap-2">
// <span class="material-symbols-outlined text-nord-10 dark:text-nord-9">
// <svg class="w-5 h-5 shrink-0 flex-1 text-info" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M6 17q-.425 0-.713-.288T5 16V8q0-.425.288-.713T6 7q.425 0 .713.288T7 8v3h4V8q0-.425.288-.713T12 7q.425 0 .713.288T13 8v8q0 .425-.288.713T12 17q-.425 0-.713-.288T11 16v-3H7v3q0 .425-.288.713T6 17Zm12 0q-.425 0-.713-.288T17 16V9h-1q-.425 0-.713-.288T15 8q0-.425.288-.713T16 7h2q.425 0 .713.288T19 8v8q0 .425-.288.713T18 17Z"/></svg>
// </span>
// Italic
// </button>
// </li>
// <li class="rounded-none">
// <button type="button" class="link_btn rounded-none flex items-center gap-2">
// <span class="material-symbols-outlined text-nord-10 dark:text-nord-9">
// <svg class="w-5 h-5 shrink-0 flex-1 text-info" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M6 17q-.425 0-.713-.288T5 16V8q0-.425.288-.713T6 7q.425 0 .713.288T7 8v3h4V8q0-.425.288-.713T12 7q.425 0 .713.288T13 8v8q0 .425-.288.713T12 17q-.425 0-.713-.288T11 16v-3H7v3q0 .425-.288.713T6 17Zm12 0q-.425 0-.713-.288T17 16V9h-1q-.425 0-.713-.288T15 8q0-.425.288-.713T16 7h2q.425 0 .713.288T19 8v8q0 .425-.288.713T18 17Z"/></svg>
// </span>
// Link
// </button>
// </li>
// <li class="rounded-none">
// <button type="button" class="divider_btn rounded-none flex items-center gap-2">
// <span class="material-symbols-outlined text-nord-10 dark:text-nord-9">
// <svg class="w-5 h-5 shrink-0 flex-1 text-info" xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15"><path fill="currentColor" fill-rule="evenodd" d="M2 7.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1h-10a.5.5 0 0 1-.5-.5Z" clip-rule="evenodd"/></svg>
// </span>
// Divider
// </button>
// </li>
// `
// }
const mentionSlash = slashFactory('mentions-slash');
const emojisSlash = slashFactory('emojis-slash');
// const slash = slashFactory('slash');
let isUpdatingMarkdown = false;
const createEditor = async (_this, hidden_input, composer$) => {
const editor = await Editor
.make()
.config(ctx => {
ctx.set(rootCtx, '#editor')
ctx.set(defaultValueCtx, markdown)
ctx.set(mentionSlash.key, {
view: mentionsPluginView
})
ctx.set(emojisSlash.key, {
view: emojisPluginView
})
ctx.get(listenerCtx)
.markdownUpdated((ctx, markdown, prevMarkdown) => {
const transformedMarkdown = markdown
.replace(/!\[(.*?)\]\(.*?\)/g, '$1')
.replace(/\[(.*?)\]\(.*?\)/g, '$1');
hidden_input.value = transformedMarkdown;
console.log(hidden_input.value);
const inputEvent = new Event('input', {
bubbles: true,
});
hidden_input.dispatchEvent(inputEvent);
})
ctx.update(editorViewOptionsCtx, (prev) => ({
...prev,
attributes: {
placeholder: "Type your text here...",
class: 'editor prose prose-sm h-full p-2 focus:outline-none composer w-full max-w-full',
spellcheck: 'false' },
}))
})
// .config(nord)
.use(commonmark)
.use(gfm)
.use(emoji)
.use(listener)
.use(mentionSlash)
.use(emojisSlash)
.use(clipboard)
.use(placeholder)
// .use(slash)
.create()
const trigger = document.querySelector('.emoji-button');
trigger.addEventListener('click', () => {
picker.toggle();
});
const picker = createPopup({}, {
referenceElement: trigger,
triggerElement: trigger,
emojiSize: '1.75rem',
className: 'z-[9999]',
});
picker.addEventListener('emoji:select', event => {
console.log(event.emoji)
editor.action((ctx) => {
const view = ctx.get(editorViewCtx);
const { state } = view;
const { selection } = state;
view.dispatch(
view.state.tr
.insertText(event.emoji + ' ')
);
view.focus()
})
});
const submit_btn = document.getElementById('submit_btn');
const heading_btn = document.getElementById('heading_btn');
const bold_btn = document.getElementById('bold_btn');
const italic_btn = document.getElementById('italic_btn');
// const quote_btn = document.getElementById('quote_btn');
// const strike_btn = document.getElementById('strike_btn');
// const table_btn = document.getElementById('table_btn');
_this.handleEvent("smart_input:reset", ({text}) => {
editor.action(replaceAll(''))
})
// submit_btn.addEventListener('click', (e) => {
// editor.action(replaceAll(''))
// })
_this.handleEvent("mention_suggestions", ({text}) => {
// replace the current text with the text from the event
editor.action(replaceAll(''))
if (text != null) {
editor.action((ctx) => {
const view = ctx.get(editorViewCtx);
view.dispatch(
view.state.tr
.insertText(text + ' ')
);
view.focus()
})
}
})
heading_btn.addEventListener('click', (e) => {
e.preventDefault();
editor.action((ctx) => {
const commandManager = ctx.get(commandsCtx);
const view = ctx.get(editorViewCtx);
commandManager.call(wrapInHeadingCommand.key, 3);
view.focus()
});
})
bold_btn.addEventListener('click', (e) => {
e.preventDefault();
editor.action((ctx) => {
const commandManager = ctx.get(commandsCtx);
const view = ctx.get(editorViewCtx);
commandManager.call(toggleStrongCommand.key);
view.focus()
});
})
italic_btn.addEventListener('click', (e) => {
e.preventDefault();
editor.action((ctx) => {
const commandManager = ctx.get(commandsCtx);
const view = ctx.get(editorViewCtx);
commandManager.call(toggleEmphasisCommand.key);
view.focus()
});
})
// quote_btn.addEventListener('click', (e) => {
// e.preventDefault();
// editor.action((ctx) => {
// const commandManager = ctx.get(commandsCtx);
// const view = ctx.get(editorViewCtx);
// commandManager.call(wrapInBlockquoteCommand.key);
// view.focus()
// });
// })
// strike_btn.addEventListener('click', (e) => {
// e.preventDefault();
// editor.action((ctx) => {
// const commandManager = ctx.get(commandsCtx);
// const view = ctx.get(editorViewCtx);
// commandManager.call(toggleStrikethroughCommand.key);
// view.focus()
// });
// })
// table_btn.addEventListener('click', (e) => {
// e.preventDefault();
// editor.action((ctx) => {
// const commandManager = ctx.get(commandsCtx);
// const view = ctx.get(editorViewCtx);
// commandManager.call(insertTableCommand.key);
// view.focus()
// });
// })
composer$.addEventListener('click', (e) => {
if (e.target.matches('.emoji_btn')) {
e.preventDefault();
const emoji = e.target.dataset.emoji;
const text = e.target.dataset.text
editor.action((ctx) => {
const view = ctx.get(editorViewCtx);
const { state } = view;
const { selection } = state;
view.dispatch(
view.state.tr
.delete(selection.from - text.length - 1, selection.from)
.insertText(emoji + ' ')
);
view.focus()
})
}
if (e.target.matches('.mention_btn')) {
e.preventDefault();
const mention = e.target.dataset.mention;
const text = e.target.dataset.text
editor.action((ctx) => {
const view = ctx.get(editorViewCtx);
const { state } = view;
const { selection } = state;
// Calculate the start position for deletion
const startPos = selection.from - text.length -1;
view.dispatch(
view.state.tr
.delete(startPos, selection.from)
.insertText(`${mention} ` + `\u200B ` ) // add a space character after the mention variable
);
view.focus()
})
}
})
return editor;
}
export default {
mounted() {
const hidden_input = document.getElementById('editor_hidden_input');
const composer$ = this.el.querySelector('#editor')
createEditor(this, hidden_input, composer$)
}
}

View file

@ -0,0 +1,18 @@
/*
This file was generated by the Surface compiler.
*/
function date_future(days) {
let date = new Date()
// Set expiry to X days
date.setDate(date.getDate() + days)
return date.toGMTString()
}
export default {
destroyed() {
console.log(this.el.value)
document.cookie = `locale=${this.el.value}; path=/; expires=${date_future(90)}`
// Cookie.set("locale", this.el.value)
}
}

View file

@ -0,0 +1,85 @@
/*
This file was generated by the Surface compiler.
*/
// import { themeChange } from "theme-change"
import 'vanilla-colorful/hex-color-picker.js';
import 'vanilla-colorful/hex-input.js';
// run to load previously chosen theme when first loading any page (note: not need if using data-theme param on HTML wrapper instead)
// themeChange()
// let Themeable = {
// mounted() {
// // run on a view/component with theme-changing controls (wrapper should have phx-hook="Themeable")
// themeChange(false)
// },
// }
let ColourPicker = {
mounted() {
const id = this.el.id;
const picker = this.el.querySelector('hex-color-picker');
const input = this.el.querySelector('hex-input');
const preview = this.el.querySelector('.colour_preview');
const scope = this.el.dataset.scope;
var count = 0;
var debounceCount = 0;
var debounce;
let value = input.color.replace("#", "")
picker.color = value;
// this.el.style.backgroundColor = "#" + value;
const maybe_set = function(hook) {
console.log("maybe_set")
// Alpine.debounce(() => this.set(), 500)
// Alpine.throttle(() => this.set(), 500)
// Update the count by 1
count++;
// Clear any existing debounce event
clearTimeout(debounce);
// Update and log the counts after 3 seconds
debounce = setTimeout(function() {
// Update the debounceCount
debounceCount++;
// do the thing
console.log("set")
hook.pushEvent("Bonfire.Common.Settings:put", { keys: "ui:theme:custom:" + id, values: value, scope: scope })
}, 1000);
}
picker.addEventListener('color-changed', (event) => {
value = event.detail.value;
console.log(value)
preview.style.backgroundColor = value;
console.log(preview)
input.color = value;
maybe_set(this)
});
input.addEventListener('color-changed', (event) => {
value = event.detail.value;
picker.color = value;
preview.style.backgroundColor = value;
maybe_set(this)
});
},
}
export { ColourPicker }

View file

@ -0,0 +1,221 @@
/*
This file was generated by the Surface compiler.
*/
import insertText from 'insert-text-at-cursor';
import getCaretCoordinates from 'textarea-caret';
// import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
const mentionItemRenderer = (item, text) => {
return `
<li class="flex rounded flex-col py-2 px-3">
<button class="gap-0 items-start flex flex-col rounded py-1.5" type="button" data-id="${item.id}" data-input="${text}">
<div class="text-sm truncate max-w-[240px] text-base-content font-semibold">${item.value}</div>
<div class="text-xs truncate max-w-[240px] text-base-content/70 font-regular">${item.id}</div>
</button>
</li>`
}
const topicItemRenderer = (item) => {
return `
<li class="flex rounded flex-col py-2 px-3">
<button class="gap-0 items-start rounded py-1.5 flex flex-col" type="button" data-id="${item.id}">
<div class="text-sm truncate max-w-[240px] text-base-content font-semibold">${item.value}</div>
<div class="text-xs truncate max-w-[240px] text-base-content/70 font-regular">${item.id}</div>
</button>
</li>`
}
function getFeedItems(queryText, prefix) {
// console.log(prefix)
if (queryText && queryText.length > 0) {
return new Promise((resolve) => {
// this requires the bonfire_tag extension
fetch("/api/tag/autocomplete/ck5/" + prefix + "/" + queryText)
.then((response) => response.json())
.then((data) => {
let values = data.map((item) => ({
id: item.id,
value: item.name,
// link: item.link,
icon: item.icon
}));
resolve(values);
})
.catch((error) => {
console.error("There has been a problem with the tag search:", error);
resolve([]);
});
});
} else return [];
}
export default {
mounted() {
const MIN_PREFIX_LENGTH = 2
// Technically mastodon accounts allow dots, but it would be weird to do an autosuggest search if it ends with a dot.
// Also this is rare. https://github.com/tootsuite/mastodon/pull/6844
const VALID_CHARS = '[\\w\\+_\\-:]'
const MENTION_PREFIX = '(?:@)'
// const HASH_PREFIX = '(?:#)'
const TOPIC_PREFIX = '(?:\\+)'
const MENTION_REGEX = new RegExp(`(?:\\s|^)(${MENTION_PREFIX}${VALID_CHARS}{${MIN_PREFIX_LENGTH},})$`)
const TOPIC_REGEX = new RegExp(`(?:\\s|^)(${TOPIC_PREFIX}${VALID_CHARS}{${MIN_PREFIX_LENGTH},})$`)
const textarea = this.el.querySelector("textarea")
// console.log(textarea)
const suggestions_menu = this.el.querySelector(".menu")
const container = document.querySelector("#smart_input");
setFileInput = function(data, input, name, defaultType = "image/jpeg") {
// console.log(data)
var split = data.toString().split(";base64,");
var type = data.type || defaultType;
var ext = type.split("/")[1];
// console.log(split)
file = new File([split[1] || data], name + "." + ext, {
type: type,
});
console.log(file);
let container = new DataTransfer();
container.items.add(file);
input.files = container.files;
var event = document.createEvent("HTMLEvents"); // bubble up to LV
event.initEvent("input", true, true);
input.dispatchEvent(event);
}
// Detect if the user is holding shift and the key is enter
textarea.addEventListener("keydown", (e) => {
if (e.key === "Enter" && e.shiftKey) {
// Prevent the default behavior
e.preventDefault();
return;
}
})
// Add a listener to the textarea to detect when the user paste an image
textarea.addEventListener("paste", (e) => {
// Get the clipboard data
const clipboardData = e.clipboardData || window.clipboardData;
// Get the image from the clipboard
const image = clipboardData.items[0].getAsFile();
const input = container.querySelector("input[type=file]");
// If the image is not null
if (image) {
setFileInput(image, input, "image")
}
})
// Add a listener to the textarea to detect when the user drag and drop an image
// textarea.addEventListener("drop", (e) => {
// // Get the image from the clipboard
// const image = e.dataTransfer.files[0];
// const input = container.querySelector("input[type=file]");
// // If the image is not null
// if (image) {
// setFileInput(image, input, "image")
// }
// })
suggestions_menu.addEventListener("click", (e) => {
// get the data-id attribute from the button child element
const id = e.target.closest('button').dataset.id
const inputText = e.target.closest('button').dataset.input
// Remove the previous text from the current cursor position untill a space is found
const text = textarea.value
const pos = textarea.selectionStart
const before = text.substring(0, pos)
const beforeSpace = before.lastIndexOf(' ')
const beforeText = before.substring(0, beforeSpace)
textarea.value = beforeText + ' '
// Insert the id of the selected user
insertText(textarea, id + " ")
textarea.focus()
})
textarea.addEventListener("input", (e) => {
// Get the input text from the textarea
const inputText = textarea.value;
// console.log(inputText)
// Get the mentions from the input text, only if the character is followed by a word character and not an empty space
const mentions = inputText.match(MENTION_REGEX)
const topics = inputText.match(TOPIC_REGEX)
let list = ''
const menu = this.el.querySelector('.menu')
if (mentions) {
const text = mentions[0].split('@').pop()
getFeedItems(text, '@').then(res => {
// if suggestions is greater than 0 append below textarea a menu with the suggestions
if (res.length > 0) {
menu.classList.remove("hidden", false)
var caret = getCaretCoordinates(textarea, textarea.selectionEnd);
menu.style.top = caret.top + caret.height + 'px'
menu.style.left = caret.left + 'px'
let counter = 0;
res.some((item) => {
if (counter >= 4) {
return true; // Stops the iteration
}
list += topicItemRenderer(item);
counter++;
});
// let maxItems = 4
// for (let i = 0; i < res.length && i < maxItems; i++) {
// list += topicItemRenderer(res[i]);
// }
// res.forEach((item) => {
// list += mentionItemRenderer(item, text)
// })
} else {
menu.classList.add("hidden", false)
list += ` `
}
menu.innerHTML = list
})
} else if (topics) {
// console.log(topics)
const text = topics[0].split('+').pop()
getFeedItems(text, '+').then(res => {
// if suggestions is greater than 0 append below textarea a menu with the suggestions
if (res.length > 0) {
console.log(res.length)
menu.classList.remove("hidden", false)
var caret = getCaretCoordinates(textarea, textarea.selectionEnd);
menu.style.top = caret.top + caret.height + 'px'
menu.style.left = caret.left + 'px'
let maxItems = 4
for (let i = 0; i < res.length && i < maxItems; i++) {
list += topicItemRenderer(res[i]);
}
} else {
list += ` `
}
menu.innerHTML = list
})
} else {
// no suggestions
list += ` `
menu.innerHTML = list
menu.classList.add("hidden", false)
}
})
}
}

View file

@ -0,0 +1,85 @@
/*
This file was generated by the Surface compiler.
*/
let Ignore = {
mounted() {
// nothing
}
}
let LoadMore = {
page() { return this.el.dataset.page; },
getPhxValues(el) {
return el
.getAttributeNames()
.filter(name => name.startsWith("phx-value-"))
.reduce((obj, name) => ({
...obj,
[name.substring(10)]: el.getAttribute(name)
}), {})
},
loadMore(entries) {
const target = entries[0];
// console.log(this.el.dataset.entryCount)
if (target.isIntersecting && this.pending == this.page()) {
let entryCount = this.el.dataset.entryCount
if (undefined == entryCount || entryCount == "0") {
let event = this.el.getAttribute("phx-scroll")
if (event) {
// add the disabled attribute to this.el
this.el.disabled = true
this.el.classList.add("btn-disabled")
this.el.getElementsByTagName("span")[0].innerHTML = "Loading more...";
this.pending = this.page() + 1;
this.pushEventTo(this.el.getAttribute("phx-target"), event, this.getPhxValues(this.el));
} else {
console.log("skip loading more because no phx-scroll event")
}
} else {
console.log("skip loading more because entryCount is: " + entryCount)
}
}
},
mounted() {
this.pending = this.page();
this.observer = new IntersectionObserver(
(entries) => this.loadMore(entries),
{
root: null, // window by default
rootMargin: "400px",
threshold: 0.1,
}
);
this.observer.observe(this.el);
this.el.addEventListener("click", e => {
let entryCount = this.el.dataset.entryCount
if (undefined != entryCount || entryCount != "0") {
let items = document.getElementsByClassName("infinite_scroll_hidden")
if (items.length != 0) {
for (let element of items) {
element.style.display = "block";
}
e.preventDefault();
} else {
console.log("no infinite_scroll_hidden")
}
this.el.getElementsByTagName("span")[0].innerHTML = "Load more";
this.el.dataset.entryCount = 0;
} else {
console.log("no entryCount")
}
});
},
destroyed() {
this.observer.unobserve(this.el);
},
updated() {
this.pending = this.page();
},
}
export { LoadMore, Ignore }

View file

@ -0,0 +1,43 @@
/*
This file was generated by the Surface compiler.
*/
export default {
mounted() {
if (Notification.permission === "default") {
this.pushEvent("Bonfire.UI.Common.Notifications:request") // ask the server to ask the client to ask the user for permission
console.debug("notification permission should be requested ")
} else {
console.debug("notification permission is already granted ")
}
this.handleEvent("notify", ({ title, message, url, icon }) => sendNotification(title, message, url, icon));
}
}
function sendNotification(title, message, url, icon) {
console.debug("notification received: " + title)
// console.debug(title + message + icon)
console.debug("notification permission: " + Notification.permission)
if (Notification.permission === "granted") {
try {
n = new Notification(title, {
body: message,
icon: icon,
requireInteraction: false
});
console.debug("notification attempted...")
// Hide the notification after 5 seconds
setTimeout(n.close.bind(n), 2000);
if (url && url != "") {
n.onclick = function() {
window.location.href = url;
};
}
} catch (e) {
console.debug("notification error: " + e)
}
} else {
Notification.requestPermission();
}
}

View file

@ -0,0 +1,163 @@
/*
This file was generated by the Surface compiler.
*/
let PreviewActivity = {
isTruncated(element) {
if (element && (element.offsetHeight < element.scrollHeight ||
element.offsetWidth < element.scrollWidth)) {
console.log("element has an overflow, ie. truncated with CSS line-clamp")
return true
} else {
console.log("element is not truncated")
return false
}
},
mounted() {
this.el.addEventListener("click", e => {
console.log("PreviewActivity clicked")
console.log("where clicked")
let trigger = this.el.querySelector('.open_preview_link')
let anchor = e.target.closest('a')
// this was used to expand long posts by clicking on them, now replaced with a 'Read more' button
// let previewable_activity = e.target.closest('.previewable_activity')
// anchor == trigger || (!anchor && previewable_activity && ( previewable_activity.classList.contains('previewable_expanded') || this.isTruncated(previewable_activity.querySelector('.previewable_truncate')) == false)
if (trigger && ((!anchor || anchor.classList.contains('preview_activity_link')) && !e.ctrlKey && !e.metaKey && !window.getSelection().toString() && !e.target.closest('button') && !e.target.closest('figure') && !e.target.closest('.dropdown') && !e.target.closest('[data-id=activity_actions]')
)) {
let uri = this.el.dataset.href || (trigger !== undefined && trigger.getAttribute('href')) //this.el.dataset.permalink
if (window.liveSocket) {
// const feed = document.querySelector(".feed")
const main = document.getElementById("inner")
const layout = document.getElementById("root")
const preview_content = document.getElementById("preview_content")
let previous_scroll = null
console.log("push event to load up the PreviewContent")
this.pushEventTo(trigger, "open", {})
// this.pushEvent("Bonfire.Social.Feeds:open_activity", { id: this.el.dataset.id, permalink: uri })
if (layout) {
previous_scroll = layout.scrollTop
}
if (preview_content) {
preview_content.classList.remove("hidden")
}
if (main) {
main.classList.add("hidden")
}
if (uri) {
// console.log(uri)
history.pushState(
{
'previous_url': document.location.href,
'previous_scroll': previous_scroll
},
'',
uri)
}
e.preventDefault();
} else {
// fallback if not connected with live socket
if (uri) {
console.log(uri)
window.location = uri;
e.preventDefault();
} else {
console.log("No URL")
}
}
} else {
// e.preventDefault();
console.log("PreviewActivity: do not trigger preview in favour of another link or button's action (or opening in new tab)")
// if (previewable_activity) { previewable_activity.classList.add("previewable_expanded") }
return;
}
})
}
}
// let Back = {
// mounted() {
// if (window.history.length > 1) {
// // show the back icon svg
// this.el.classList.remove("hidden")
// this.el.addEventListener("click", e => {
// console.log(window.history)
// e.preventDefault();
// // window.history.back();
// })
// } else {
// // se la cronologia del browser è vuota, non fare nulla
// }
// }
// }
let ClosePreview = {
mounted() {
const back = function () {
const layout = document.getElementById("root")
const main = document.getElementById("inner")
const preview_content = document.getElementById("preview_content")
if (preview_content) {
preview_content.classList.add("hidden")
}
if (history.state) {
location_before_preview = history.state["previous_url"]
previous_scroll = history.state["previous_scroll"]
main.classList.remove("hidden")
if (location_before_preview) {
history.pushState({}, '', location_before_preview)
}
if (previous_scroll) {
layout.scrollTo({ top: previous_scroll, behavior: 'instant' })
// window.scrollTo(0, previous_scroll);
}
}
}
// close button
this.el.addEventListener("click", e => {
console.log("click - attempt going back")
back()
})
// intercept browser "back" action
window.addEventListener("popstate", e => {
console.log("popstate - attempt going back via browser")
// prevent the app from firing the event
e.preventDefault();
console.log("qui")
// this.pushEvent("Bonfire.UI.Common.OpenPreviewLive:close", {})
back();
})
}
}
export { PreviewActivity, ClosePreview }

View file

@ -0,0 +1,44 @@
/*
This file was generated by the Surface compiler.
*/
function update_hash() {
let hash = location.hash
// clear existing highlighted lines
Array.from(document.getElementsByClassName("highlighted")).forEach(function (n, i) { n.classList.remove('highlighted') })
if (hash.startsWith("#L")) {
let id = hash.slice(1)
let line = document.getElementById(id)
if (line) { line.classList.add("highlighted"); }
}
}
let loadHash = {
mounted() {
let loc = window.location;
let url = loc.protocol + '//' + loc.host + loc.pathname + '#L' + this.el.dataset.lineNumber;
history.pushState(history.state, document.title, url);
update_hash()
window.onhashchange = function () {
update_hash()
}
}
}
let updateHash = {
mounted() {
this.el.addEventListener("click", e => {
let loc = window.location;
let url = loc.protocol + '//' + loc.host + loc.pathname + '#L' + this.el.dataset.lineNumber;
history.pushState(history.state, document.title, url);
update_hash()
e.preventDefault();
});
}
}
export { loadHash, updateHash }

View file

@ -0,0 +1,33 @@
/*
This file was generated by the Surface compiler.
*/
function ns(hooks, nameSpace) {
const updatedHooks = {}
Object.keys(hooks).map(function(key) {
updatedHooks[`${nameSpace}#${key}`] = hooks[key]
})
return updatedHooks
}
import * as c1 from "./Bonfire.Editor.Milkdown.hooks"
import * as c2 from "./Bonfire.UI.Common.ViewCodeLive.hooks"
import * as c3 from "./Bonfire.UI.Common.PreviewContentLive.hooks"
import * as c4 from "./Bonfire.UI.Common.NotificationLive.hooks"
import * as c5 from "./Bonfire.UI.Common.LoadMoreLive.hooks"
import * as c6 from "./Bonfire.UI.Common.ChangeLocaleLive.hooks"
import * as c7 from "./Bonfire.UI.Common.ChangeThemesLive.hooks"
import * as c8 from "./Bonfire.UI.Common.ComposerLive.hooks"
let hooks = Object.assign(
ns(c1, "Bonfire.Editor.Milkdown"),
ns(c2, "Bonfire.UI.Common.ViewCodeLive"),
ns(c3, "Bonfire.UI.Common.PreviewContentLive"),
ns(c4, "Bonfire.UI.Common.NotificationLive"),
ns(c5, "Bonfire.UI.Common.LoadMoreLive"),
ns(c6, "Bonfire.UI.Common.ChangeLocaleLive"),
ns(c7, "Bonfire.UI.Common.ChangeThemesLive"),
ns(c8, "Bonfire.UI.Common.ComposerLive")
)
export default hooks

View file

@ -4,6 +4,6 @@ defmodule Bonfire.Boundaries.Repo.Migrations.ImportBoundaries do
import Bonfire.Boundaries.Migrations
def up, do: migrate_boundaries
def down, do: migrate_boundaries
def up, do: migrate_boundaries()
def down, do: migrate_boundaries()
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Social.Graph.Repo.Migrations.ImportSocial do
@moduledoc false
use Ecto.Migration
import Bonfire.Social.Graph.Migrations
import Needle.Migration
def up do
migrate_social()
end
def down, do: migrate_social()
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Posts.Repo.Migrations.ImportSocial do
@moduledoc false
use Ecto.Migration
import Bonfire.Posts.Migrations
import Needle.Migration
def up do
migrate_social()
end
def down, do: migrate_social()
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Messages.Repo.Migrations.ImportSocial do
@moduledoc false
use Ecto.Migration
import Bonfire.Messages.Migrations
import Needle.Migration
def up do
migrate_social()
end
def down, do: migrate_social()
end

View file

@ -0,0 +1,7 @@
defmodule Bonfire.Social.Repo.Migrations.AddVersions do
use Ecto.Migration
def change do
Bonfire.Social.Migrations.add_paper_trail()
end
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Repo.Migrations.Alias do
@moduledoc false
use Ecto.Migration
require Bonfire.Data.Identity.Alias.Migration
def up do
Bonfire.Data.Identity.Alias.Migration.migrate_alias()
end
def down do
Bonfire.Data.Identity.Alias.Migration.migrate_alias()
end
end

View file

@ -0,0 +1,7 @@
defmodule Bonfire.Social.Repo.Migrations.RepliedTotal do
@moduledoc false
use Ecto.Migration
def up, do: Bonfire.Data.Social.Replied.Migration.add_generated_total_column()
def down, do: nil
end

View file

@ -0,0 +1,14 @@
defmodule Bonfire.Social.Repo.Migrations.InstanceAdminUser do
@moduledoc false
use Ecto.Migration
import Needle.Migration
def up do
alter table("bonfire_data_access_control_instance_admin") do
Ecto.Migration.add_if_not_exists(:user_id, weak_pointer(Needle.Pointer))
end
end
def down, do: nil
end

View file

@ -0,0 +1,13 @@
defmodule Bonfire.Repo.Migrations.Sensitive do
@moduledoc false
use Ecto.Migration
require Bonfire.Data.Social.Sensitive.Migration
def up do
Bonfire.Data.Social.Sensitive.Migration.migrate_sensitive()
end
def down do
Bonfire.Data.Social.Sensitive.Migration.migrate_sensitive()
end
end

View file

@ -0,0 +1,9 @@
defmodule Bonfire.Boundaries.Repo.Migrations.BoundariesFixturesUp do
@moduledoc false
use Ecto.Migration
import Bonfire.Boundaries.Fixtures
def up, do: Bonfire.Boundaries.Fixtures.insert()
def down, do: nil
end

View file

@ -0,0 +1,9 @@
defmodule Bonfire.Boundaries.Repo.Migrations.BoundariesUsersFixturesUp do
use Ecto.Migration
def up() do
Bonfire.Boundaries.FixturesUsersMigrations.up()
end
def down, do: :ok
end

View file

@ -0,0 +1,14 @@
defmodule Bonfire.Files.Repo.Migrations.FilesRefactor do
@moduledoc false
use Ecto.Migration
import Needle.Migration
def up do
alter table("bonfire_files_media") do
Ecto.Migration.add_if_not_exists(:file, :jsonb)
end
end
def down, do: nil
end

View file

@ -0,0 +1,14 @@
defmodule Bonfire.Data.Identity.Repo.Migrations.SettingsJson do
@moduledoc false
use Ecto.Migration
import Needle.Migration
def up do
alter table("bonfire_data_identity_settings") do
Ecto.Migration.add_if_not_exists(:json, :jsonb)
end
end
def down, do: nil
end

View file

@ -1,9 +1,15 @@
%{
"absinthe": {:hex, :absinthe, "1.7.6", "0b897365f98d068cfcb4533c0200a8e58825a4aeeae6ec33633ebed6de11773b", [:mix], [{:dataloader, "~> 1.0.0 or ~> 2.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:opentelemetry_process_propagator, "~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e7626951ca5eec627da960615b51009f3a774765406ff02722b1d818f17e5778"},
"absinthe_client": {:git, "https://github.com/bonfire-networks/absinthe_client", "6fba146bba117db18b783610e5e7c1271924cc35", [branch: "master"]},
"absinthe_error_payload": {:hex, :absinthe_error_payload, "1.1.4", "502ff239148c8deaac028ddb600d6502d5be68d24fece0c93f4c3cf7e74c1a4d", [:make, :mix], [{:absinthe, "~> 1.3", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, "~> 3.1", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "9e262ef2fd4a2c644075e0cdde2573b1f713c0676ab905c8640eaa8a882b2aca"},
"absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.2", "e607b438db900049b9b3760f8ecd0591017a46122fffed7057bf6989020992b5", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.5", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "d36918925c380dc7d2ed7d039c9a3b4182ec36723f7417a68745ade5aab22f8d"},
"absinthe_plug": {:hex, :absinthe_plug, "1.5.8", "38d230641ba9dca8f72f1fed2dfc8abd53b3907d1996363da32434ab6ee5d6ab", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bbb04176647b735828861e7b2705465e53e2cf54ccf5a73ddd1ebd855f996e5a"},
"acceptor_pool": {:hex, :acceptor_pool, "1.0.0", "43c20d2acae35f0c2bcd64f9d2bde267e459f0f3fd23dab26485bf518c281b21", [:rebar3], [], "hexpm", "0cbcd83fdc8b9ad2eee2067ef8b91a14858a5883cb7cd800e6fcd5803e158788"},
"activity_pub": {:git, "https://github.com/bonfire-networks/activity_pub", "bbc538108d8bc63ecba01bee7d3595ad59de1694", [branch: "develop"]},
"argon2_elixir": {:hex, :argon2_elixir, "4.0.0", "7f6cd2e4a93a37f61d58a367d82f830ad9527082ff3c820b8197a8a736648941", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "f9da27cf060c9ea61b1bd47837a28d7e48a8f6fa13a745e252556c14f9132c7f"},
"arrows": {:hex, :arrows, "0.1.1", "c414e21173115987578bda1bf35a60cde228a16d7e52d9f6c76e1c8914c22c79", [:mix], [], "hexpm", "ce6de75d7cb43a032e9856826c5bace8f43434ee574e4a6a412f9d3b3931062e"},
"assert_value": {:hex, :assert_value, "0.10.3", "bb4cc3f497e1eba276e1e55eb1574bb8657752539a72259d1d7e17e15bd98f6d", [:mix], [], "hexpm", "ca51af160d9ab14b283deac1d48ff72414257792a399dbe3d5cb384f4f3d625b"},
"astro": {:hex, :astro, "1.0.0", "b42e028ada7ff20dded85f778092e607cb98847e7b8db4608733d2d415757235", [:mix], [{:geo, "~> 3.0", [hex: :geo, repo: "hexpm", optional: false]}, {:tz_world, "~> 1.0", [hex: :tz_world, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: true]}], "hexpm", "fda3e3adc52144b3f4e799f97af6931bb5b9cc4099b8213246ffdca191b823bd"},
"bamboo": {:hex, :bamboo, "2.3.0", "d2392a2cabe91edf488553d3c70638b532e8db7b76b84b0a39e3dfe492ffd6fc", [:mix], [{:hackney, ">= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.4 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "dd0037e68e108fd04d0e8773921512c940e35d981e097b5793543e3b2f9cd3f6"},
"bamboo_campaign_monitor": {:hex, :bamboo_campaign_monitor, "0.1.0", "e4b60354a2186c75e9a338fdd932e027b8bbeba9c274245546291429671e8753", [:mix], [{:bamboo, ">= 1.2.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:hackney, ">= 1.6.5", [hex: :hackney, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "5b60a27ab2b8596f274f22d3cb8bd8d8f3865667f1ec181bfa6635aa7646d79a"},
"bamboo_mailjet": {:hex, :bamboo_mailjet, "0.1.0", "8f1a6e2df2548544bc74f3d9fb9dfe7112ffeff5f8c0fc4ebece94364655e636", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}], "hexpm", "cb213439a14dfe0f8a54dbcb7b40790399d5207025378b64d9717271072e8427"},
@ -12,22 +18,25 @@
"bamboo_ses": {:hex, :bamboo_ses, "0.4.2", "e148a0ae17f8223b830029c2e81b2ba18220aa7378531ef1f50c4212fbd9ddb1", [:mix], [{:bamboo, "~> 2.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:ex_aws, "~> 2.4.1", [hex: :ex_aws, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.2.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "feb609b57316d335b217937f66cfc7c1ebe37ec481bebe97fcd5da5f31171808"},
"bamboo_smtp": {:hex, :bamboo_smtp, "4.2.2", "e9f57a2300df9cb496c48751bd7668a86a2b89aa2e79ccaa34e0c46a5f64c3ae", [:mix], [{:bamboo, "~> 2.2.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.2.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "28cac2ec8adaae02aed663bf68163992891a3b44cfd7ada0bebe3e09bed7207f"},
"bamboo_sparkpost": {:hex, :bamboo_sparkpost, "2.0.0", "8617642e438340186da422b7f1ec25663d1c8fa869ecaf3e5ba2524131a1b5f0", [:mix], [{:bamboo, "~> 2.0", [hex: :bamboo, repo: "hexpm", optional: false]}], "hexpm", "a89a1c29e122270e50c53c77e091d885c40bebb689f8904572c38b299649bebf"},
"bandit": {:hex, :bandit, "1.1.1", "7158770ed1584c12964902ebce91c649b2c37a56e8ff36cc4f394baeca0876dc", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "d521272da28186412d4f8b480e17009f0bafb844dc7ac7e7a30d79eaf1f141fd"},
"bandit": {:hex, :bandit, "1.1.2", "2f1d054d13b15d9bb71e9038565e0f4a7c271a8f5b1f9fcb30b4a88f5d9e19ba", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "04c2dc9c0f15c3f851be15ececbea75b045cd69274b810f7c58457733e376eeb"},
"basic_auth": {:hex, :basic_auth, "2.2.5", "ec2c934e4943b63cfc7d6b01c6f3fa51ade2a518ca36c9c0caee18a90bf98c4e", [:mix], [{:plug, "~> 0.14 or ~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "8b5f067bcfe48d7dc02d43c18ad9e9b54e630c2da720667ac8ed46979b54b7cb"},
"beam_file": {:hex, :beam_file, "0.5.3", "8ef6b6ab3b2981e5d67c20e635fdddab4b82d96d25fe50c26a259bafed996ead", [:mix], [], "hexpm", "f4722cc3b811b94c4941fa981e25319f7b2ae24495196fcf075208cffb9228e4"},
"benchee": {:hex, :benchee, "1.2.0", "afd2f0caec06ce3a70d9c91c514c0b58114636db9d83c2dc6bfd416656618353", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "ee729e53217898b8fd30aaad3cce61973dab61574ae6f48229fe7ff42d5e4457"},
"benchee_html": {:hex, :benchee_html, "1.0.0", "5b4d24effebd060f466fb460ec06576e7b34a00fc26b234fe4f12c4f05c95947", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:benchee_json, "~> 1.0", [hex: :benchee_json, repo: "hexpm", optional: false]}], "hexpm", "5280af9aac432ff5ca4216d03e8a93f32209510e925b60e7f27c33796f69e699"},
"benchee": {:hex, :benchee, "1.3.0", "f64e3b64ad3563fa9838146ddefb2d2f94cf5b473bdfd63f5ca4d0657bf96694", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "34f4294068c11b2bd2ebf2c59aac9c7da26ffa0068afdf3419f1b176e16c5f81"},
"benchee_html": {:hex, :benchee_html, "1.0.1", "1e247c0886c3fdb0d3f4b184b653a8d6fb96e4ad0d0389267fe4f36968772e24", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:benchee_json, "~> 1.0", [hex: :benchee_json, repo: "hexpm", optional: false]}], "hexpm", "b00a181af7152431901e08f3fc9f7197ed43ff50421a8347b0c80bf45d5b3fef"},
"benchee_json": {:hex, :benchee_json, "1.0.0", "cc661f4454d5995c08fe10dd1f2f72f229c8f0fb1c96f6b327a8c8fc96a91fe5", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "da05d813f9123505f870344d68fb7c86a4f0f9074df7d7b7e2bb011a63ec231c"},
"blurhash": {:hex, :rinpatch_blurhash, "0.1.0", "01a888b0f5f1f382ab52e4396f01831cbe8486ea5828604c90f4dac533d39a4b", [:mix], [{:mogrify, "~> 0.8.0", [hex: :mogrify, repo: "hexpm", optional: true]}], "hexpm", "19911a5dcbb0acb9710169a72f702bce6cb048822b12de566ccd82b2cc42b907"},
"bolt_sips": {:hex, :bolt_sips, "2.0.11", "a1cb78d8db4aba750f6771a9fd4a10b3300618b7b0433b12105c64d21d27b4ba", [:mix], [{:calendar, "~> 0.17.2", [hex: :calendar, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.4", [hex: :db_connection, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "227a6669e14fa6d331738857b32b5cd022b4c13808e947ccfec8eccb8fedb0e5"},
"bonfire": {:git, "https://github.com/bonfire-networks/bonfire_spark", "1effc039d4f6350bcdcff0134eb78e48fe4a6770", [branch: "main"]},
"bonfire_api_graphql": {:git, "https://github.com/bonfire-networks/bonfire_api_graphql", "4329d18971a6348b23cdbb86b0da312077f0f2d3", [branch: "main"]},
"bonfire_boundaries": {:git, "https://github.com/bonfire-networks/bonfire_boundaries", "d93d159da0ada2b7c0391a3d80f77ab321ea0c43", [branch: "main"]},
"bonfire_common": {:git, "https://github.com/bonfire-networks/bonfire_common", "fb4f8f37c8da8a04fcc987ddb2c825976f1f46a0", [branch: "main"]},
"bonfire_breadpub": {:git, "https://github.com/bonfire-networks/bonfire_breadpub", "931a13a2edd55ce3d79a758296807db6ceb90d8b", [branch: "main"]},
"bonfire_classify": {:git, "https://github.com/bonfire-networks/bonfire_classify", "1a0aae6c01638b0a4d206bde6f5d02edcaec79d9", [branch: "main"]},
"bonfire_common": {:git, "https://github.com/bonfire-networks/bonfire_common", "6a74d18544491445e8534c236d003adf8dc5e1af", [branch: "main"]},
"bonfire_data_access_control": {:git, "https://github.com/bonfire-networks/bonfire_data_access_control", "d5a1365618fbe244ab8c15cd4f72f698052d9966", [branch: "main"]},
"bonfire_data_activity_pub": {:git, "https://github.com/bonfire-networks/bonfire_data_activity_pub", "30b89e6d778194424bc7570f7bcd4a342bb8c952", [branch: "main"]},
"bonfire_data_assort": {:git, "https://github.com/bonfire-networks/bonfire_data_assort", "a1400e4aaac1bd21641f7bb4c477ffef921c76f7", [branch: "master"]},
"bonfire_data_edges": {:git, "https://github.com/bonfire-networks/bonfire_data_edges", "73e54fb494ade893873e91bd64e4f0bd688ec2b4", [branch: "main"]},
"bonfire_data_identity": {:git, "https://github.com/bonfire-networks/bonfire_data_identity", "dc7caffd16f7d2a143482c7f2d7a1fe4a0bff983", [branch: "main"]},
"bonfire_data_edges": {:git, "https://github.com/bonfire-networks/bonfire_data_edges", "68d90f95a9d281992a6b051150643b07f592ea36", [branch: "main"]},
"bonfire_data_identity": {:git, "https://github.com/bonfire-networks/bonfire_data_identity", "d998a4d12d4d06490c2f3f18544294fcfa72065d", [branch: "main"]},
"bonfire_data_shared_user": {:git, "https://github.com/bonfire-networks/bonfire_data_shared_user", "1bc4d0de4d697e13dc2aef6fa57b4a834424f355", [branch: "main"]},
"bonfire_data_social": {:git, "https://github.com/bonfire-networks/bonfire_data_social", "b9ccf824abf31728c5274b2df82addbb37c16d19", [branch: "main"]},
"bonfire_ecto": {:git, "https://github.com/bonfire-networks/bonfire_ecto", "b2f33f64166566bbba1716776d35a7a4f2489b74", [branch: "main"]},
@ -36,25 +45,37 @@
"bonfire_fail": {:git, "https://github.com/bonfire-networks/bonfire_fail", "d0ff9604b5ccf767e0d08625297fa2b7bb954910", [branch: "main"]},
"bonfire_federate_activitypub": {:git, "https://github.com/bonfire-networks/bonfire_federate_activitypub", "dbb350c2413887bbb192d6b31bc7223ea186c9e8", [branch: "main"]},
"bonfire_files": {:git, "https://github.com/bonfire-networks/bonfire_files", "0ea1c29a29545120807470a4f1d080d191cc53b3", [branch: "main"]},
"bonfire_geolocate": {:git, "https://github.com/bonfire-networks/bonfire_geolocate", "9cc21e1afbe4b048cd4cf5a39f47c2a6e7c9e4a4", [branch: "main"]},
"bonfire_invite_links": {:git, "https://github.com/bonfire-networks/bonfire_invite_links", "cd15adc4fd8a7eb1d99ad79c985a49a67334ca31", [branch: "main"]},
"bonfire_mailer": {:git, "https://github.com/bonfire-networks/bonfire_mailer", "001ca742f2bcc234c2d84500d0de3d70a9ad44e8", [branch: "main"]},
"bonfire_me": {:git, "https://github.com/bonfire-networks/bonfire_me", "cbf905a9ca11911f8bc3c92a9789038de40ee603", [branch: "main"]},
"bonfire_messages": {:git, "https://github.com/bonfire-networks/bonfire_messages", "1391e02af6c38a6b7fc67e5a0f34e484f6fa41a6", []},
"bonfire_posts": {:git, "https://github.com/bonfire-networks/bonfire_posts", "31a1f407eb6ffb33e505e9f81f73096b72fa1d31", []},
"bonfire_messages": {:git, "https://github.com/bonfire-networks/bonfire_messages", "013fc393309ca7734a3b482e4ee9ca84433b31f8", []},
"bonfire_pages": {:git, "https://github.com/bonfire-networks/bonfire_pages", "0a048734ed0312edb20caedd1ee1fd60195ec2df", [branch: "main"]},
"bonfire_posts": {:git, "https://github.com/bonfire-networks/bonfire_posts", "01ce5dac642df370b2838a3c68f2c342b87e8087", []},
"bonfire_quantify": {:git, "https://github.com/bonfire-networks/bonfire_quantify", "6cda6dc1f251a5fff6fd02f5098c709e20614746", [branch: "main"]},
"bonfire_search": {:git, "https://github.com/bonfire-networks/bonfire_search", "172d291bf272e9b88edb0ef6899e50ebc30fee99", [branch: "main"]},
"bonfire_social": {:git, "https://github.com/bonfire-networks/bonfire_social", "2e33fbbab69fec4bf80c2b1029c29f8b11e6daa8", [branch: "main"]},
"bonfire_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_social_graph", "a26863fc9864da7aff35dc317e28d663413487cc", []},
"bonfire_social": {:git, "https://github.com/bonfire-networks/bonfire_social", "c5ceb7294d5919faacc8b9658a74637e83f3ca96", [branch: "main"]},
"bonfire_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_social_graph", "948a3b2e85e3f0d600e8ea3c489ac6fe4a87f4af", []},
"bonfire_tag": {:git, "https://github.com/bonfire-networks/bonfire_tag", "ee9d0ba3c98877c070054ba953b702f3ba4cce11", [branch: "main"]},
"bonfire_ui_common": {:git, "https://github.com/bonfire-networks/bonfire_ui_common", "dd5e761d14f8993895d1bf540bb110824ffcf628", [branch: "main"]},
"bonfire_ui_common": {:git, "https://github.com/bonfire-networks/bonfire_ui_common", "12c53fe4f10d6203749d8f0607d2132ecd54bdf8", [branch: "main"]},
"bonfire_ui_coordination": {:git, "https://github.com/bonfire-networks/bonfire_ui_coordination", "b47f80368134092962bd26b5f115e7310477670b", [branch: "main"]},
"bonfire_ui_groups": {:git, "https://github.com/bonfire-networks/bonfire_ui_groups", "8f56e7e1a06afced0d1b2ad41e9987b215df0fba", [branch: "main"]},
"bonfire_ui_kanban": {:git, "https://github.com/bonfire-networks/bonfire_ui_kanban", "677bfa08ce9c1df890671bd26d4d76738444ef30", [branch: "main"]},
"bonfire_ui_me": {:git, "https://github.com/bonfire-networks/bonfire_ui_me", "2a1b650014e6802d3d6e78ecdcad979792893bb0", [branch: "main"]},
"bonfire_ui_messages": {:git, "https://github.com/bonfire-networks/bonfire_ui_messages", "b30a3c4f90d20a7dd91b173812fedecca5fd2a91", []},
"bonfire_ui_moderation": {:git, "https://github.com/bonfire-networks/bonfire_ui_moderation", "5555762537e549c012a03610b287553ba98c1701", []},
"bonfire_ui_posts": {:git, "https://github.com/bonfire-networks/bonfire_ui_posts", "6173e357a5878287dce69d2f53147a3e56bd7412", []},
"bonfire_ui_reactions": {:git, "https://github.com/bonfire-networks/bonfire_ui_reactions", "9a55cc2fe289dbcec64cfb740423b90254ba9946", []},
"bonfire_ui_social": {:git, "https://github.com/bonfire-networks/bonfire_ui_social", "79975b3edb8ebb6c4e0f4418b29d7b520a8b060c", [branch: "main"]},
"bonfire_ui_social": {:git, "https://github.com/bonfire-networks/bonfire_ui_social", "d374d298311a7ab153315cca1da6773b4a9e1e4b", [branch: "main"]},
"bonfire_ui_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_ui_social_graph", "a0006826c15a3701ebc5a5a5d131c8fa409bbdca", []},
"bonfire_ui_topics": {:git, "https://github.com/bonfire-networks/bonfire_ui_topics", "2ffab160fb754b1739a9c9195649489b2ae5679b", [branch: "main"]},
"bonfire_ui_valueflows": {:git, "https://github.com/bonfire-networks/bonfire_ui_valueflows", "20afcc908cb65aa2240d3a8d592ee22983fa28db", [branch: "main"]},
"bonfire_upcycle": {:git, "https://gitlab.com/bonfire-networks/bonfire_upcycle", "2464881ccf8aa47f9d5936ee222d8181dc026ea6", [branch: "main"]},
"bonfire_valueflows": {:git, "https://github.com/bonfire-networks/bonfire_valueflows", "9bb3cf57a5cad605d13b6195e09d8229a88f14b0", [branch: "main"]},
"bonfire_valueflows_api_schema": {:git, "https://github.com/bonfire-networks/bonfire_valueflows_api_schema", "80602121d19691b2d16981afa45c0a01dbc259a3", [branch: "main"]},
"bonfire_valueflows_observe": {:git, "https://github.com/bonfire-networks/bonfire_valueflows_observe", "e42b1d5211ac47c6ae72d74bee52ebc5b5cfb6ef", [branch: "main"]},
"brex_result": {:hex, :brex_result, "0.4.0", "c4f2a4a5b487c3d4cd0c94cef5df596eeae986c1dc7cfe08755efc7e766610eb", [:mix], [], "hexpm", "c221aac71c48727ef55dc56cf845772a54e1db538564280c868eb0595e1e44f8"},
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
"cachex": {:hex, :cachex, "3.6.0", "14a1bfbeee060dd9bec25a5b6f4e4691e3670ebda28c8ba2884b12fe30b36bf8", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "ebf24e373883bc8e0c8d894a63bbe102ae13d918f790121f5cfe6e485cc8e2e2"},
"calendar": {:hex, :calendar, "0.17.6", "ec291cb2e4ba499c2e8c0ef5f4ace974e2f9d02ae9e807e711a9b0c7850b9aee", [:mix], [{:tzdata, "~> 0.1.201603 or ~> 0.5.20 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "738d0e17a93c2ccfe4ddc707bdc8e672e9074c8569498483feb1c4530fb91b2b"},
"capsule": {:git, "https://github.com/bonfire-networks/capsule", "68d4a4fcdf2e64069b2ea323be556ec7bcd03f86", [branch: "with_stream_copy"]},
@ -73,13 +94,14 @@
"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.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
"credo": {:hex, :credo, "1.7.1", "6e26bbcc9e22eefbff7e43188e69924e78818e2fe6282487d0703652bc20fd62", [: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", "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2"},
"credo": {:hex, :credo, "1.7.3", "05bb11eaf2f2b8db370ecaa6a6bda2ec49b2acd5e0418bc106b73b07128c0436", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "35ea675a094c934c22fb1dca3696f3c31f2728ae6ef5a53b5d648c11180a4535"},
"ctx": {:hex, :ctx, "0.6.0", "8ff88b70e6400c4df90142e7f130625b82086077a45364a78d208ed3ed53c7fe", [:rebar3], [], "hexpm", "a14ed2d1b67723dbebbe423b28d7615eb0bdcba6ff28f2d1f1b0a7e1d4aa5fc2"},
"dataloader": {:hex, :dataloader, "2.0.0", "49b42d60b9bb06d761a71d7b034c4b34787957e713d4fae15387a25fcd639112", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:opentelemetry_process_propagator, "~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "09d61781b76ce216e395cdbc883ff00d00f46a503e215c22722dba82507dfef0"},
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"decorator": {:hex, :decorator, "1.4.0", "a57ac32c823ea7e4e67f5af56412d12b33274661bb7640ec7fc882f8d23ac419", [:mix], [], "hexpm", "0a07cedd9083da875c7418dea95b78361197cf2bf3211d743f6f7ce39656597f"},
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
"dialyxir": {:hex, :dialyxir, "1.4.2", "764a6e8e7a354f0ba95d58418178d486065ead1f69ad89782817c296d0d746a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "516603d8067b2fd585319e4b13d3674ad4f314a5902ba8130cd97dc902ce6bbd"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
"digital_token": {:hex, :digital_token, "0.6.0", "13e6de581f0b1f6c686f7c7d12ab11a84a7b22fa79adeb4b50eec1a2d278d258", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2455d626e7c61a128b02a4a8caddb092548c3eb613ac6f6a85e4cbb6caddc4d1"},
"dog_sketch": {:hex, :dog_sketch, "0.1.3", "b74fa9edaadd9f9e9d233d607b6e487862bd716b66468a67e293a886863837db", [:mix], [], "hexpm", "be6d172a3d3809a0acbc85421a5d25a794841560b6f930540c345342c591d0df"},
"e_q": {:hex, :e_q, "1.0.0", "7b4dab148b8f482fac6be0e3b5ecf5b4ca86d6148b33b96ee7ca9f2e2fcf2fb7", [:mix], [], "hexpm", "23dbb293640ba24a38c6b56bfa81a569b8a6654b85e0ccbedf89c740e2b91937"},
@ -89,7 +111,7 @@
"ecto_dev_logger": {:hex, :ecto_dev_logger, "0.10.0", "5b3a3900b845e0d40127bed9bdf9d02bf20aa38198a60fe108cddff63ed0048f", [:mix], [{:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "a55e58bad5d5c9b8ef2a3c3347dbdf7efa880a5371cf1457e44b41f489a43927"},
"ecto_erd": {:hex, :ecto_erd, "0.5.1", "a7bab3428b7b586d7e4a7d7182d79e129a92b1b404f72eac49f493b141aa88bc", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:html_entities, "~> 0.5", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "d38d84f5f3ef0489cdb2a21d41ea35615f47afd1d5f42ee9ff4727b323de51b2"},
"ecto_materialized_path": {:git, "https://github.com/bonfire-networks/ecto_materialized_path", "7c33279034870c5ca8d20273db0267edae847938", []},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.14", "7a20cfe913b0476542b43870e67386461258734896035e3f284039fd18bd4c4c", [: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", "22f5f98592dd597db9416fcef00effae0787669fdcb6faf447e982b553798e98"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.15", "0fc29dbae0e444a29bd6abeee4cf3c4c037e692a272478a234a1cc765077dbb1", [: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 or ~> 4.0.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "b6127f3a5c6fc3d84895e4768cc7c199f22b48b67d6c99b13fbf4a374e73f039"},
"ecto_ranked": {:hex, :ecto_ranked, "0.5.0", "0e428901fe4586f6561b039b90b44940383e90da534b1842a728b56b076fdd68", [:mix], [{:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "7f9e119539aca2cf6d98916409e592c884f89069014b7731db1f42483da7e192"},
"ecto_shorts": {:git, "https://github.com/bonfire-networks/ecto_shorts", "df0b0cc301616da9ea47131b425ca4a06d3e78cf", [branch: "refactor/attempt1"]},
"ecto_sparkles": {:hex, :ecto_sparkles, "0.1.2", "4aa8a0721a561655012534be7f2485320521f50e17d84619222f2eb206aae1b6", [:mix], [{:ecto, "~> 3.8", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_dev_logger, "~> 0.9", [hex: :ecto_dev_logger, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.8", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:html_sanitize_ex, "~> 1.4.2", [hex: :html_sanitize_ex, repo: "hexpm", optional: true]}, {:recase, "~> 0.7", [hex: :recase, repo: "hexpm", optional: false]}, {:untangle, "~> 0.3", [hex: :untangle, repo: "hexpm", optional: false]}], "hexpm", "337017782778972bf0a1a043d6d82adcbde07b38ab3533a83bb2ce329fd63036"},
@ -100,6 +122,7 @@
"emote": {:git, "https://github.com/bonfire-networks/emote", "787eef4b365069188d65084c16f44db2f59506cb", [branch: "master"]},
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"escape": {:hex, :escape, "0.1.0", "548edab75e6e6938b1e199ef59cb8e504bcfd3bcf83471d4ae9a3c7a7a3c7d45", [:mix], [], "hexpm", "a5d8e92db4677155df54bc1306d401b5233875d570d474201db03cb3047491cd"},
"eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"},
"ex2ms": {:hex, :ex2ms, "1.6.1", "66d472eb14da43087c156e0396bac3cc7176b4f24590a251db53f84e9a0f5f72", [:mix], [], "hexpm", "a7192899d84af03823a8ec2f306fa858cbcce2c2e7fd0f1c49e05168fb9c740e"},
"ex_aws": {:git, "https://github.com/bonfire-networks/ex_aws", "a3b23ffad937e5153ce6aafaa1cfeff9748b2c81", [branch: "main"]},
@ -124,16 +147,20 @@
"exto": {:hex, :exto, "0.3.0", "434fb795e5b2ea59d726345f8922ad05a0859036c6943f9560720534ae52846d", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "b6ad14306b3ff1d772a64ac245e4b8c9e348e570550826e6e1de1e4f49aae05c"},
"faker": {:hex, :faker, "0.17.0", "671019d0652f63aefd8723b72167ecdb284baf7d47ad3a82a15e9b8a6df5d1fa", [:mix], [], "hexpm", "a7d4ad84a93fd25c5f5303510753789fc2433ff241bf3b4144d3f6f291658a6a"},
"fast_ngram": {:hex, :fast_ngram, "1.2.0", "0652c25d3f66e69e6780121cf19200442fe70da689b39ccaa8998da6ee2f65cc", [:mix], [], "hexpm", "90c949c5b00314d8117a5bf2fbf6a05ef945ce4cad66a47bc26f8d9ec30dc1bd"},
"fetch_favicon": {:git, "https://github.com/bonfire-networks/fetch_favicon", "515c8517daf1a98d3f7680ca3433d9277c4392af", [branch: "master"]},
"fetch_favicon": {:git, "https://github.com/bonfire-networks/fetch_favicon", "8caf52d88ba02aed32346f658787ee56cf2ccf3b", [branch: "master"]},
"file_info": {:hex, :file_info, "0.0.4", "2e0e77f211e833f38ead22cb29ce53761d457d80b3ffe0ffe0eb93880b0963b2", [:mix], [{:mimetype_parser, "~> 0.1.2", [hex: :mimetype_parser, repo: "hexpm", optional: false]}], "hexpm", "50e7ad01c2c8b9339010675fe4dc4a113b8d6ca7eddce24d1d74fd0e762781a5"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"},
"finch": {:hex, :finch, "0.17.0", "17d06e1d44d891d20dbd437335eebe844e2426a0cd7e3a3e220b461127c73f70", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8d014a661bb6a437263d4b5abf0bcbd3cf0deb26b1e8596f2a271d22e48934c7"},
"floki": {:hex, :floki, "0.35.2", "87f8c75ed8654b9635b311774308b2760b47e9a579dabf2e4d5f1e1d42c39e0b", [:mix], [], "hexpm", "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9"},
"flow": {:hex, :flow, "0.15.0", "503717c0e367b5713336181d5305106840f64abbad32c75d7af5ef1bb0908e38", [:mix], [{:gen_stage, "~> 0.14.0", [hex: :gen_stage, repo: "hexpm", optional: false]}], "hexpm", "d7ecbd4dd38a188494bc996d5014ef8335f436a0b262140a1f6441ae94714581"},
"forecastr": {:git, "https://github.com/bonfire-networks/forecastr", "84235e51e4cd36ca4df03a24718b4367e296c053", []},
"furlex": {:git, "https://github.com/bonfire-networks/furlex", "f9292d7e5df00ca42319b25326ea76d06d220ad4", [branch: "main"]},
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
"gen_stage": {:hex, :gen_stage, "0.14.3", "d0c66f1c87faa301c1a85a809a3ee9097a4264b2edf7644bf5c123237ef732bf", [:mix], [], "hexpm", "8453e2289d94c3199396eb517d65d6715ef26bcae0ee83eb5ff7a84445458d76"},
"geo": {:hex, :geo, "3.6.0", "00c9c6338579f67e91cd5950af4ae2eb25cdce0c3398718c232539f61625d0bd", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "1dbdebf617183b54bc3c8ad7a36531a9a76ada8ca93f75f573b0ae94006168da"},
"geo_postgis": {:hex, :geo_postgis, "3.5.0", "e3675b6276b8c2166dc20a6fa9d992eb73c665de2b09b666d09c7824dc8a8300", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:geo, "~> 3.5", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "0bebc5b00f8b11835066bd6213fbeeec03704b4a1c206920b81c1ec2201d185f"},
"geocoder": {:hex, :geocoder, "1.1.6", "3c2907c07eb6b006d2fdcec4875aedac25ee15debf3c8fa656d9fda497d2c014", [:mix], [{:geohash, "~> 1.2", [hex: :geohash, repo: "hexpm", optional: false]}, {:httpoison, "~> 2.1", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:towel, "~> 0.2.2", [hex: :towel, repo: "hexpm", optional: false]}], "hexpm", "ace06d0f17c09b40245d25aff57df3e69c04c7adcb279af1297593d03bfa27d5"},
"geohash": {:hex, :geohash, "1.2.2", "4e95a65594afde96ba8c003d43947eb06e97b1a4ad25a21f863922918e3819e8", [:mix], [], "hexpm", "98ed91f7e4682f71a21cb9eeec7ca70e2f578f600c1c9335cc6c55b1b9a30ee2"},
"gettext": {:hex, :gettext, "0.24.0", "6f4d90ac5f3111673cbefc4ebee96fe5f37a114861ab8c7b7d5b30a1108ce6d8", [:mix], [{:expo, "~> 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"},
"git_cli": {:hex, :git_cli, "0.3.0", "a5422f9b95c99483385b976f5d43f7e8233283a47cda13533d7c16131cb14df5", [:mix], [], "hexpm", "78cb952f4c86a41f4d3511f1d3ecb28edb268e3a7df278de2faa1bd4672eaf9b"},
"git_diff": {:hex, :git_diff, "0.6.4", "ec53ebf8bf83b4527d938d6433e3686b47a3e2a23135a21038f76736c16bb6e0", [:mix], [], "hexpm", "9e05563c136c91e960a306fd296156b2e8d74e294ae60961e69a36e118023a5f"},
@ -151,9 +178,9 @@
"html_sanitize_ex": {:hex, :html_sanitize_ex, "1.4.3", "67b3d9fa8691b727317e0cc96b9b3093be00ee45419ffb221cdeee88e75d1360", [:mix], [{:mochiweb, "~> 2.15 or ~> 3.1", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm", "87748d3c4afe949c7c6eb7150c958c2bcba43fc5b2a02686af30e636b74bccb7"},
"http_signatures": {:git, "https://github.com/bonfire-networks/http_signatures", "dfc381dac522268279d554676d17ded271261ce0", [branch: "master"]},
"httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"},
"iconify_ex": {:git, "https://github.com/bonfire-networks/iconify_ex", "adedff935721621b2e72d410e44cf2e01b365ce8", [branch: "main"]},
"iconify_ex": {:git, "https://github.com/bonfire-networks/iconify_ex", "b88f58f49003be09bf20470293e67e25249b62f9", [branch: "main"]},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"image": {:hex, :image, "0.39.0", "c003ce095ee32c40f194ca1a48ffa6d3e67192e567183e70dfd8b77bb7144119", [:mix], [{:bumblebee, "~> 0.3", [hex: :bumblebee, repo: "hexpm", optional: true]}, {:evision, "~> 0.1.33", [hex: :evision, repo: "hexpm", optional: true]}, {:exla, "~> 0.5", [hex: :exla, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:kino, "~> 0.7", [hex: :kino, repo: "hexpm", optional: true]}, {:nx, "~> 0.5", [hex: :nx, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.14 or ~> 3.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: true]}, {:rustler, "> 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}, {:vix, "~> 0.23", [hex: :vix, repo: "hexpm", optional: false]}], "hexpm", "d83de26e009a59cb8c53d2efecaacd7c9b990897dc3c7095a5b8847e73c8f968"},
"image": {:hex, :image, "0.40.0", "221d42736fbe15ebace95465277cabd7807132db2263d6ad374011ab21255e54", [:mix], [{:bumblebee, "~> 0.3", [hex: :bumblebee, repo: "hexpm", optional: true]}, {:evision, "~> 0.1.33", [hex: :evision, repo: "hexpm", optional: true]}, {:exla, "~> 0.5", [hex: :exla, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:kino, "~> 0.7", [hex: :kino, repo: "hexpm", optional: true]}, {:nx, "~> 0.5", [hex: :nx, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.1 or ~> 3.2 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: true]}, {:rustler, "> 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}, {:vix, "~> 0.23", [hex: :vix, repo: "hexpm", optional: false]}], "hexpm", "8333cc90699d34a74cd7b6ceb53c995d74ac56a612ef684358627309fb7558ce"},
"inflex": {:hex, :inflex, "2.1.0", "a365cf0821a9dacb65067abd95008ca1b0bb7dcdd85ae59965deef2aa062924c", [:mix], [], "hexpm", "14c17d05db4ee9b6d319b0bff1bdf22aa389a25398d1952c7a0b5f3d93162dd8"},
"influxql": {:hex, :influxql, "0.2.1", "71bfd5c0d81bf870f239baf3357bf5226b44fce16e1b9399ba1368203ca71245", [:mix], [], "hexpm", "75faf04960d6830ca0827869eaac1ba092655041c5e96deb2a588bafb601205c"},
"instream": {:hex, :instream, "0.21.0", "9660449133120cb19851d92173c92164cf3f70deb32c4b7ee2a772b575fa7df8", [:mix], [{:hackney, "~> 1.1", [hex: :hackney, repo: "hexpm", optional: false]}, {:influxql, "~> 0.2.0", [hex: :influxql, repo: "hexpm", optional: false]}, {:poison, "~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm", "bbc6f1c53679df6deb78806ec24259413219b2c9a7c2dbdd6289f3544f065111"},
@ -166,7 +193,7 @@
"live_view_native": {:git, "https://github.com/bonfire-networks/live_view_native", "742eb8facbbbc0e5a6ad24aacfd490c8fed45731", [branch: "wip"]},
"live_view_native_platform": {:hex, :live_view_native_platform, "0.2.0-beta.2", "8cd8eb8d18e2250bc497f1e0a5338430783ec97bf9f64b148df4bfb267c32ec4", [:mix], [{:ecto, "~> 3.8", [hex: :ecto, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}], "hexpm", "2ee4626999348e643736e5993aa6f1458754e4c73b58b84197f2b446eb48ce50"},
"live_view_native_stylesheet": {:hex, :live_view_native_stylesheet, "0.2.0-beta.1", "59297fb22377157191cd84323468ff864b69a0bc60dd1cd023feb9079ff88bd4", [:mix], [{:nimble_parsec, "~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7a30c0205527ff219285cb2f19b9a1c61dee82784129ef6f48e1e9bee44882a7"},
"live_view_native_swiftui": {:hex, :live_view_native_swiftui, "0.2.0-beta.2", "6e113b449a61867af97f84514e033c41d51b679ae0eedc54d1dc5f7612532262", [:mix], [{:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:live_view_native_platform, "0.2.0-beta.2", [hex: :live_view_native_platform, repo: "hexpm", optional: false]}, {:live_view_native_stylesheet, "0.2.0-beta.1", [hex: :live_view_native_stylesheet, repo: "hexpm", optional: false]}, {:makeup_json, "~> 0.1.0", [hex: :makeup_json, repo: "hexpm", optional: false]}, {:makeup_swift, "~> 0.0.1", [hex: :makeup_swift, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e1e16a9f467ee4c10131b456a90abbf06d9d03d9464bed6995983ef742dbec11"},
"live_view_native_swiftui": {:hex, :live_view_native_swiftui, "0.2.0-beta.3", "0f8c51f3f774043c0eafa3d14c6d0f33566215ceab8d6a950d0560f2826e9298", [:mix], [{:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:live_view_native_platform, "0.2.0-beta.2", [hex: :live_view_native_platform, repo: "hexpm", optional: false]}, {:live_view_native_stylesheet, "0.2.0-beta.1", [hex: :live_view_native_stylesheet, repo: "hexpm", optional: false]}, {:makeup_json, "~> 0.1.0", [hex: :makeup_json, repo: "hexpm", optional: false]}, {:makeup_swift, "~> 0.0.1", [hex: :makeup_swift, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "dffd75601fa10a5725537bb25a06e64d14896ba6a549a1a0218d8c39c9ac3202"},
"makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"},
"makeup_diff": {:hex, :makeup_diff, "0.1.0", "5be352b6aa6f07fa6a236e3efd7ba689a03f28fb5d35b7a0fa0a1e4a64f6d8bb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "186bad5bb433a8afeb16b01423950e440072284a4103034ca899180343b9b4ac"},
"makeup_eex": {:hex, :makeup_eex, "0.1.1", "89352d5da318d97ae27bbcc87201f274504d2b71ede58ca366af6a5fbed9508d", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.16", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_html, "~> 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d111a0994eaaab09ef1a4b3b313ef806513bb4652152c26c0d7ca2be8402a964"},
@ -193,7 +220,7 @@
"mock": {:hex, :mock, "0.3.8", "7046a306b71db2488ef54395eeb74df0a7f335a7caca4a3d3875d1fc81c884dd", [:mix], [{:meck, "~> 0.9.2", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "7fa82364c97617d79bb7d15571193fc0c4fe5afd0c932cef09426b3ee6fe2022"},
"mogrify": {:git, "https://github.com/chaskiq/mogrify.git", "48e237d2332d24ddf5996f78b13d8bc97221b094", [branch: "identify-option"]},
"mox": {:hex, :mox, "1.1.0", "0f5e399649ce9ab7602f72e718305c0f9cdc351190f72844599545e4996af73c", [:mix], [], "hexpm", "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13"},
"needle": {:hex, :needle, "0.7.0", "a177a405431abb12dd29aaadfac5dbc7e1b35c3b52c517ca65da76062a2e55aa", [:mix], [{:ecto_sql, "~> 3.8", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:exto, "~> 0.3", [hex: :exto, repo: "hexpm", optional: false]}, {:needle_ulid, "~> 0.3", [hex: :needle_ulid, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0fae78804c6a6956eb7d14877b379fc99d5bb32bc766dcdf3771dd68220a8469"},
"needle": {:hex, :needle, "0.7.1", "2272843b615d38ce7c9e549dd2f8784ee9b850aef846031114e0fd64bfee73de", [:mix], [{:ecto_sql, "~> 3.8", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:exto, "~> 0.3", [hex: :exto, repo: "hexpm", optional: false]}, {:needle_ulid, "~> 0.3", [hex: :needle_ulid, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4238739f377c885d71958da02512636e38a020042e8f2a580b3c4fc0e8a3a408"},
"needle_ulid": {:hex, :needle_ulid, "0.3.0", "7ecccec131c5218ec7cf5f8a236c016f436e78dfd684204de9f66c40271e7e04", [:mix], [{:ecto, "~> 3.4", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.8", [hex: :ecto_sql, repo: "hexpm", optional: true]}, {:ex_ulid, "~> 0.1", [hex: :ex_ulid, repo: "hexpm", optional: false]}], "hexpm", "d54d0dc5267b3ba3a7f981060b329bc8fb1f55104d790e54d808c8a5f4cb3e93"},
"neuron": {:hex, :neuron, "5.1.0", "dd321d5c2d9c03706ee7161ab49f8af634bfd1becb6fb95d8caa28bc95b6c655", [:mix], [{:httpoison, "~> 1.0 or ~> 2.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "23cddb0e0dd9c0eea247bc5b4bc3e1f8b52dbaf63f1637623920ec0b2385b6ce"},
"nimble_csv": {:hex, :nimble_csv, "1.2.0", "4e26385d260c61eba9d4412c71cea34421f296d5353f914afe3f2e71cce97722", [:mix], [], "hexpm", "d0628117fcc2148178b034044c55359b26966c6eaa8e2ce15777be3bbc91b12a"},
@ -224,6 +251,7 @@
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
"pbkdf2_elixir": {:hex, :pbkdf2_elixir, "2.2.0", "2ec4f7daae2bf74cb9e52df3554bbdcec8a38104a7f0ccaa4d45d5919e4c3f19", [:mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}], "hexpm", "6c4af97f5cae925c56caded648520510ea583eebf1587e185b9f445762197aff"},
"periscope": {:hex, :periscope, "0.6.0", "d4cf6994ade2074114902519bb3e9e4963e34a35304a18b10531edf22b150659", [:mix], [], "hexpm", "2106337e8fe564edbbef284de559b412f678c2b391a66348de54ddeb889b6258"},
"phil_columns": {:hex, :phil_columns, "3.1.0", "6f517729418019d58f57b405906f9afd9d2d790922d74cb990a81eb50d986a07", [:mix], [{:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:inflex, "~> 2.0", [hex: :inflex, repo: "hexpm", optional: false]}], "hexpm", "0aa35fa366c4815474f9dd5d2d8edbf71beef0d19f0392bd40184f9edf040768"},
"phoenix": {:hex, :phoenix, "1.7.10", "02189140a61b2ce85bb633a9b6fd02dff705a5f1596869547aeb2b2b95edd729", [: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 or ~> 2.0", [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", "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"},
"phoenix_html": {:hex, :phoenix_html, "3.3.3", "380b8fb45912b5638d2f1d925a3771b4516b9a78587249cabe394e0a5d579dc9", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c"},
@ -234,7 +262,7 @@
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.1", "92a37acf07afca67ac98bd326532ba8f44ad7d4bdf3e4361b03f7f02594e5ae9", [: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]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "be494fd1215052729298b0e97d5c2ce8e719c00854b82cd8cf15c1cd7fcf6294"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_seo": {:hex, :phoenix_seo, "0.1.8", "140c6ec2b2aa35eb6252839a13525eb582d75faf86cdac1bc446f79302395fdb", [:mix], [{:phoenix_live_view, "~> 0.18", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "65dea221f58818399b21adc8c80297a3b230c0c059a1e6ef3184ac69f0d5a6af"},
"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"},
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
"phoenix_view": {:hex, :phoenix_view, "2.0.3", "4d32c4817fce933693741deeb99ef1392619f942633dde834a5163124813aad3", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64"},
"plug": {:hex, :plug, "1.15.2", "94cf1fa375526f30ff8770837cb804798e0045fd97185f0bb9e5fcd858c792a3", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "02731fa0c2dcb03d8d21a1d941bdbbe99c2946c0db098eee31008e04c6283615"},
"plug_attack": {:hex, :plug_attack, "0.4.3", "88e6c464d68b1491aa083a0347d59d58ba71a7e591a7f8e1b675e8c7792a0ba8", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9ed6fb8a6f613a36040f2875130a21187126c5625092f24bc851f7f12a8cbdc1"},
@ -247,23 +275,26 @@
"pseudo_gettext": {:git, "https://github.com/tmbb/pseudo_gettext", "295afac289d1bf3d4e0fe5cbe8490a5a7f2eebb1", []},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"recase": {:hex, :recase, "0.7.0", "3f2f719f0886c7a3b7fe469058ec539cb7bbe0023604ae3bce920e186305e5ae", [:mix], [], "hexpm", "36f5756a9f552f4a94b54a695870e32f4e72d5fad9c25e61bc4a3151c08a4e0c"},
"recode": {:hex, :recode, "0.6.5", "067335c383e807c1a6f5df22a92856f83e852f1acdbedaa2cced52df082dbe25", [:mix], [{:bunt, "~> 0.2", [hex: :bunt, repo: "hexpm", optional: false]}, {:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:rewrite, "~> 0.9", [hex: :rewrite, repo: "hexpm", optional: false]}], "hexpm", "d03c66c1dd1ca5b19ad14a3a5fbb2218060352e91d4ad7925fb52f1915a4aabe"},
"recode": {:hex, :recode, "0.7.0", "aba413a0d658b45ec2eb7736de7b51cb7770daf9152bfc408adf93cd1ec00836", [:mix], [{:escape, "~> 0.1", [hex: :escape, repo: "hexpm", optional: false]}, {:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:rewrite, "~> 0.9", [hex: :rewrite, repo: "hexpm", optional: false]}], "hexpm", "66ac4aa0408a94560b850d3335e4ffd3513188f9c657487f48446eec453f7972"},
"recon": {:hex, :recon, "2.5.4", "05dd52a119ee4059fa9daa1ab7ce81bc7a8161a2f12e9d42e9d551ffd2ba901c", [:mix, :rebar3], [], "hexpm", "e9ab01ac7fc8572e41eb59385efeb3fb0ff5bf02103816535bacaedf327d0263"},
"redirect": {:hex, :redirect, "0.4.0", "98b46053504ee517bc3ad2fd04c064b64b48d339e1e18266355b30c4f8bb52b0", [:mix], [{:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.3 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "dfa29a8ecbad066ed0b73b34611cf24c78101719737f37bdf750f39197d67b97"},
"remote_ip": {:hex, :remote_ip, "1.1.0", "cb308841595d15df3f9073b7c39243a1dd6ca56e5020295cb012c76fbec50f2d", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "616ffdf66aaad6a72fc546dabf42eed87e2a99e97b09cbd92b10cc180d02ed74"},
"req": {:hex, :req, "0.4.8", "2b754a3925ddbf4ad78c56f30208ced6aefe111a7ea07fb56c23dccc13eb87ae", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.9", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "7146e51d52593bb7f20d00b5308a5d7d17d663d6e85cd071452b613a8277100c"},
"rewrite": {:hex, :rewrite, "0.10.0", "5d756b6dc67679e7156ff6055f9654be02dbaeb177aaf1ff6af7ee8da8718248", [:mix], [{:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:sourceror, "~> 0.13", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "68d7808cf549e7bf51b0119a8edc14d50970bad479115249030baa580c1d7b50"},
"rustler_precompiled": {:hex, :rustler_precompiled, "0.7.1", "ecadf02cc59a0eccbaed6c1937303a5827fbcf60010c541595e6d3747d3d0f9f", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:rustler, "~> 0.23", [hex: :rustler, repo: "hexpm", optional: true]}], "hexpm", "b9e4657b99a1483ea31502e1d58c464bedebe9028808eda45c3a429af4550c66"},
"scribe": {:hex, :scribe, "0.10.0", "90e61b21fee884f58b955d1f45d7fa3e75f161ecb62bad8af6087aef3955c74f", [:mix], [{:pane, "~> 0.2", [hex: :pane, repo: "hexpm", optional: false]}], "hexpm", "3829da9c6a28b2105f0ec50e40f447bf768fb7d96717fbfceb602573f1a3c62e"},
"sentry": {:hex, :sentry, "9.1.0", "8689b85774003ddcebfd9d48a93bc3f3bf72223983514521aa30645c6f204f86", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.6", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, "~> 2.3", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "d70c88ab0c6a511594856ae2244d1bd70b8b7a4a42201a3569880f1dd2a3adec"},
"simple_slug": {:hex, :simple_slug, "0.1.1", "d966384a6dd03dd7103b03ef50831410cfc943a69ded12c80c403c83eb122f6c", [:mix], [], "hexpm", "477c19c7bc8755a1378bdd4ec591e4819071c72353b7e470b90329e63ef67a72"},
"sleeplocks": {:hex, :sleeplocks, "1.1.2", "d45aa1c5513da48c888715e3381211c859af34bee9b8290490e10c90bb6ff0ca", [:rebar3], [], "hexpm", "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5"},
"sobelow": {:hex, :sobelow, "0.12.2", "45f4d500e09f95fdb5a7b94c2838d6b26625828751d9f1127174055a78542cf5", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "2f0b617dce551db651145662b84c8da4f158e7abe049a76daaaae2282df01c5d"},
"solid": {:hex, :solid, "0.15.2", "6921af98a3a862041bb6af72b5f6e094dbf0242366b142f98a92cabe4ed30d2a", [:mix], [{:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "18b062b04948b7f7b99ac4a9360681dac7e0bd142df5e62a7761696c7384be45"},
"sourceror": {:hex, :sourceror, "0.14.1", "c6fb848d55bd34362880da671debc56e77fd722fa13b4dcbeac89a8998fc8b09", [:mix], [], "hexpm", "8b488a219e4c4d7d9ff29d16346fd4a5858085ccdd010e509101e226bbfd8efc"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},
"statistex": {:hex, :statistex, "1.0.0", "f3dc93f3c0c6c92e5f291704cf62b99b553253d7969e9a5fa713e5481cd858a5", [:mix], [], "hexpm", "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27"},
"stream_data": {:hex, :stream_data, "0.6.0", "e87a9a79d7ec23d10ff83eb025141ef4915eeb09d4491f79e52f2562b73e5f47", [:mix], [], "hexpm", "b92b5031b650ca480ced047578f1d57ea6dd563f5b57464ad274718c9c29501c"},
"surface": {:hex, :surface, "0.11.1", "67fed94c1ca8e0ed2e0871beddb8be7cbb0aa9792ede5f2812ed61da438ea275", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:sourceror, "~> 0.12.0", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "5e7068f51117b7f1aa1c098a6b724b5575e663af4b8f563c5ccd9ddace639222"},
"sweet_xml": {:hex, :sweet_xml, "0.7.4", "a8b7e1ce7ecd775c7e8a65d501bc2cd933bff3a9c41ab763f5105688ef485d08", [:mix], [], "hexpm", "e7c4b0bdbf460c928234951def54fe87edf1a170f6896675443279e2dbeba167"},
"table_rex": {:hex, :table_rex, "3.1.1", "0c67164d1714b5e806d5067c1e96ff098ba7ae79413cc075973e17c38a587caa", [:mix], [], "hexpm", "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490"},
"table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"},
"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"},
@ -271,12 +302,14 @@
"tesla": {:hex, :tesla, "1.8.0", "d511a4f5c5e42538d97eef7c40ec4f3e44effdc5068206f42ed859e09e51d1fd", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, ">= 1.0.0", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.2", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "10501f360cd926a309501287470372af1a6e1cbed0f43949203a4c13300bc79f"},
"text": {:hex, :text, "0.2.0", "5a1d84eec574533d500439feacafe3681e2326f883800976df9f9dffd4cf9afd", [:mix], [{:flow, "~> 0.14", [hex: :flow, repo: "hexpm", optional: false]}], "hexpm", "5ca265ba24bd2f00ab647dd524305e24cc17224b4f0052f169ff488013888bc3"},
"text_corpus_udhr": {:hex, :text_corpus_udhr, "0.1.0", "d29b37bdeedc922138e144a7161cae4ece3d7809d37a52398cb9d43d923cc141", [:mix], [{:text, "~> 0.2", [hex: :text, repo: "hexpm", optional: false]}], "hexpm", "056a0b6a804ef03070f89b9b2e09d3271539654f4e2c30bb7d229730262f3fb8"},
"thousand_island": {:hex, :thousand_island, "1.2.0", "4f548ae771ab5f96bc7e199f9824c0c2ce6d365f8c93f5f64dbbb33988e484bf", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "521671fea179672addb6af46455fc2a77be1edda4c0ed351633e0ef37a4b3584"},
"thousand_island": {:hex, :thousand_island, "1.3.2", "bc27f9afba6e1a676dd36507d42e429935a142cf5ee69b8e3f90bff1383943cd", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0e085b93012cd1057b378fce40cbfbf381ff6d957a382bfdd5eca1a98eec2535"},
"timex": {:hex, :timex, "3.7.11", "bb95cb4eb1d06e27346325de506bcc6c30f9c6dea40d1ebe390b262fad1862d1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa"},
"tls_certificate_check": {:hex, :tls_certificate_check, "1.21.0", "042ab2c0c860652bc5cf69c94e3a31f96676d14682e22ec7813bd173ceff1788", [:rebar3], [{:ssl_verify_fun, "~> 1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "6cee6cffc35a390840d48d463541d50746a7b0e421acaadb833cfc7961e490e7"},
"towel": {:git, "https://github.com/CyrusOfEden/towel", "7a9632f6450593176db387c8202580b626b57760", []},
"twinkle_star": {:git, "https://github.com/bonfire-networks/twinkle_star", "bd793b68502276fd38fd8c9dd88b901506a58589", []},
"typed_struct": {:hex, :typed_struct, "0.3.0", "939789e3c1dca39d7170c87f729127469d1315dcf99fee8e152bb774b17e7ff7", [:mix], [], "hexpm", "c50bd5c3a61fe4e198a8504f939be3d3c85903b382bde4865579bc23111d1b6d"},
"tz": {:hex, :tz, "0.26.5", "bfe8efa345670f90351c5c31d22455d0307c5d9895fbdede7deeb215a7b60dbe", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:mint, "~> 1.5", [hex: :mint, repo: "hexpm", optional: true]}], "hexpm", "c4f9392d710582c7108b6b8c635f4981120ec4b2072adbd242290fc842338183"},
"tz_world": {:hex, :tz_world, "1.3.2", "15d331ad1ff22735dfcc8c98bfc7b2a9fdc17f1f071e31e21cdafe2d9318a300", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:geo, "~> 1.0 or ~> 2.0 or ~> 3.3", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "d1a345e07b3378c4c902ad54fbd5d54c8c3dd55dba883b7407fe57bcec45ff2a"},
"tzdata": {:hex, :tzdata, "1.1.1", "20c8043476dfda8504952d00adac41c6eda23912278add38edc140ae0c5bcc46", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
"unsafe": {:hex, :unsafe, "1.0.2", "23c6be12f6c1605364801f4b47007c0c159497d0446ad378b5cf05f1855c0581", [:mix], [], "hexpm", "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675"},