Rename libs

This commit is contained in:
Mayel de Borniol 2023-12-30 22:30:56 +00:00
parent 9e493e16a9
commit e1a9e44894
58 changed files with 128 additions and 129 deletions

View file

@ -53,7 +53,7 @@ The code is broadly composed namespaces such as these, many of which are package
Contexts are were we put any core logic. A context often is circumscribed to providing logic for a particular object type (e. g. `Bonfire.Posts` implements `Bonfire.Data.Social.Post`). Contexts are were we put any core logic. A context often is circumscribed to providing logic for a particular object type (e. g. `Bonfire.Posts` implements `Bonfire.Data.Social.Post`).
All Bonfire objects use an ULID as their primary key. We use the `Pointers` library (with extra logic in `Bonfire.Common.Pointers`) to reference any object by its primary key without knowing what type it is beforehand. This is very useful as it allows for example following or liking many different types of objects (as opposed to say only a user or a post) and this approach allows us to store the context of the like/follow by only storing its primary key (see `Bonfire.Data.Social.Follow`) for an example. All Bonfire objects use an ULID as their primary key. We use the `Needle` library (with extra logic in `Bonfire.Common.Needle`) to reference any object by its primary key without knowing what type it is beforehand. This is very useful as it allows for example following or liking many different types of objects (as opposed to say only a user or a post) and this approach allows us to store the context of the like/follow by only storing its primary key (see `Bonfire.Data.Social.Follow`) for an example.
Context modules usually have `one/2`, `many/2`, and `many_paginated/1` functions for fetching objects, which in turn call a `query/2` function. These take a keyword list as filters (and an optional `opts` argument) allowing objects to be fetched by arbitrary criteria. Context modules usually have `one/2`, `many/2`, and `many_paginated/1` functions for fetching objects, which in turn call a `query/2` function. These take a keyword list as filters (and an optional `opts` argument) allowing objects to be fetched by arbitrary criteria.
@ -94,7 +94,7 @@ Here is an incomplete sample of some of current extensions and modules:
- `Bonfire.GraphQL` (GraphQL API abstractions) - `Bonfire.GraphQL` (GraphQL API abstractions)
- `Queery` and `Bonfire.Repo.Query` (Helpers for making queries on the database) - `Queery` and `Bonfire.Repo.Query` (Helpers for making queries on the database)
- `Bonfire.Repo` (Ecto repository) - `Bonfire.Repo` (Ecto repository)
- `Flexto` (to extend DB schemas in config, especially useful for adding associations) - `Exto` (to extend DB schemas in config, especially useful for adding associations)
- `AbsintheClient` (for querying the API from within the server) - `AbsintheClient` (for querying the API from within the server)
@ -123,7 +123,7 @@ Here is an incomplete sample of some of current extensions and modules:
- Schemas - Schemas
- Resolvers - Resolvers
- Sometimes Plugs (eg `Bonfire.Web.Plugs.UserRequired` and `Bonfire.Web.LivePlugs.UserRequired`) - Sometimes Plugs (eg `Bonfire.Web.Plugs.UserRequired` and `Bonfire.Web.LivePlugs.UserRequired`)
- Other extensions or libraries (eg `Pointers` or `Bonfire.Common` which are used by most other extensions) - Other extensions or libraries (eg `Needle` or `Bonfire.Common` which are used by most other extensions)
## Naming ## Naming
@ -132,7 +132,7 @@ It is said that naming is one of the four hard problems of computer science (alo
### Naming guidelines ### Naming guidelines
- Module names mostly begin with `Bonfire.` unless they belong to a more generic library (eg `Pointers` or `ValueFlows`) - Module names mostly begin with `Bonfire.` unless they belong to a more generic library (eg `Needle` or `ValueFlows`)
- Everything within an extension begins with the context name and a `.` (eg `Bonfire.Social.Migrations`) - Everything within an extension begins with the context name and a `.` (eg `Bonfire.Social.Migrations`)
- Database schemas should be named in the singular (eg `Bonfire.Data.Social.Post`) - Database schemas should be named in the singular (eg `Bonfire.Data.Social.Post`)
- Context modules are named in plural where possible (eg `Bonfire.Posts`) - Context modules are named in plural where possible (eg `Bonfire.Posts`)

View file

@ -14,7 +14,7 @@ Circles allow a user to categorise work colleagues differently from friends, for
Verbs represent actions that the user could perform, such as reading a post or replying to a message. Verbs represent actions that the user could perform, such as reading a post or replying to a message.
Each verb has a unique ID, like the table IDs from `pointers`, which must be known to the system through configuration. Each verb has a unique ID, like the table IDs from `Needle`, which must be known to the system through configuration.
## Permissions ## Permissions

View file

@ -12,9 +12,9 @@ A social network, by contrast, is actually a graph of objects. Objects need to b
A simple example would be likes, you might have a `likes` table with `liked_post_id` field that references the `post` table. But you don't just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add `liked_video_id`, `liked_image_id`, etc? A simple example would be likes, you might have a `likes` table with `liked_post_id` field that references the `post` table. But you don't just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add `liked_video_id`, `liked_image_id`, etc?
We needed the flexibility to have a foreign key that can reference any referenceable object. We call our system `Pointers`. We needed the flexibility to have a foreign key that can reference any referenceable object. We call our system `Needle`.
This guide is a brief introduction to Pointers. It assumes some foundational knowledge: This guide is a brief introduction to Needle. It assumes some foundational knowledge:
* Basic understanding of how relational databases like Postgresql work, in particular: * Basic understanding of how relational databases like Postgresql work, in particular:
* Tables being made up of fields. * Tables being made up of fields.
@ -43,15 +43,15 @@ In PostgreSQL, we actually store `ULID`s as `UUID` columns, thanks to both being
## It's just a table ## It's just a table
The `pointers` system is mostly based around a single table represented by the `Pointers.Pointer` schema with the following fields: The `Needle` system is mostly based around a single table represented by the `Needle.Pointer` schema with the following fields:
* `id` (ULID) - the database-wide unique id for the object, primary key. * `id` (ULID) - the database-wide unique id for the object, primary key.
* `table_id` (ULID) - identifies the type of the object, references `Pointers.Table`. * `table_id` (ULID) - identifies the type of the object, references `Needle.Table`.
* `deleted_at` (timestamp, default: `null`) - when the object was deleted. * `deleted_at` (timestamp, default: `null`) - when the object was deleted.
Every object that is stored in the system will have a record in this table. It may also have records in other tables (handy for storing more than 3 fields about the object!). Every object that is stored in the system will have a record in this table. It may also have records in other tables (handy for storing more than 3 fields about the object!).
Don't worry about `Pointers.Table` for now, just know that every object type will have a record there so `Pointers.Pointer.table_id` can reference it. Don't worry about `Needle.Table` for now, just know that every object type will have a record there so `Needle.Pointer.table_id` can reference it.
## Mixins - storing data about objects ## Mixins - storing data about objects
@ -64,14 +64,14 @@ record or not record information for each mixin. Sample mixins include:
In this way, they are reusable across different object types. One mixin may (or may not) be used by any number of objects. This is mostly driven by the type of the object we are storing, but can also be driven by user input. In this way, they are reusable across different object types. One mixin may (or may not) be used by any number of objects. This is mostly driven by the type of the object we are storing, but can also be driven by user input.
Mixins are just tables too! The only requirement is they have a `ULID` primary key which references `Pointers.Pointer`. The developer of the mixin is free to put whatever other fields they want in the table, so long as they have that primary-key-as-reference (which will be automatically added for you by the `mixin_schema` macro). Mixins are just tables too! The only requirement is they have a `ULID` primary key which references `Needle.Pointer`. The developer of the mixin is free to put whatever other fields they want in the table, so long as they have that primary-key-as-reference (which will be automatically added for you by the `mixin_schema` macro).
Here is a sample mixin definition for a user profile: Here is a sample mixin definition for a user profile:
```elixir ```elixir
defmodule Bonfire.Data.Social.Profile do defmodule Bonfire.Data.Social.Profile do
use Pointers.Mixin, use Needle.Mixin,
otp_app: :bonfire_data_social, otp_app: :bonfire_data_social,
source: "bonfire_data_social_profile" source: "bonfire_data_social_profile"
@ -84,10 +84,10 @@ defmodule Bonfire.Data.Social.Profile do
end end
``` ```
Aside from `use`ing `Pointers.Mixin` instead of `Ecto.Schema` and calling `mixin_schema` instead of Aside from `use`ing `Needle.Mixin` instead of `Ecto.Schema` and calling `mixin_schema` instead of
`schema`, pretty similar to a standard Ecto schema, right? `schema`, pretty similar to a standard Ecto schema, right?
The arguments to `use Pointers.Mixin` are: The arguments to `use Needle.Mixin` are:
* `otp_app`: the OTP app name to use when loading dynamic configuration, e.g. the current extension or app (required) * `otp_app`: the OTP app name to use when loading dynamic configuration, e.g. the current extension or app (required)
* `source`: the underlying table name to use in the database * `source`: the underlying table name to use in the database
@ -98,18 +98,18 @@ We will cover dynamic configuration later. For now, you can use the OTP app that
Multimixins are like mixins, except that where an object may have 0 or 1 of a particular mixins, an object may have any number of a particular multimixin. Multimixins are like mixins, except that where an object may have 0 or 1 of a particular mixins, an object may have any number of a particular multimixin.
For this to work, a multimixin must have a *compound primary key* which must contain an `id` column referencing `Pointers.Pointer` and at least one other field which will collectively be unique. For this to work, a multimixin must have a *compound primary key* which must contain an `id` column referencing `Needle.Pointer` and at least one other field which will collectively be unique.
An example multimixin is used for publishing an item to feeds: An example multimixin is used for publishing an item to feeds:
```elixir ```elixir
defmodule Bonfire.Data.Social.FeedPublish do defmodule Bonfire.Data.Social.FeedPublish do
use Pointers.Mixin, use Needle.Mixin,
otp_app: :bonfire_data_social, otp_app: :bonfire_data_social,
source: "bonfire_data_social_feed_publish" source: "bonfire_data_social_feed_publish"
alias Pointers.Pointer alias Needle.Pointer
mixin_schema do mixin_schema do
belongs_to :feed, Pointer, primary_key: true belongs_to :feed, Pointer, primary_key: true
@ -132,20 +132,20 @@ For example, the ID for the `Feed` table is: `1TFEEDS0NTHES0V1S0FM0RTA1S`, which
* They must be 26 characters in length. * They must be 26 characters in length.
* The first character must be a digit in the range 0-7. * The first character must be a digit in the range 0-7.
To help you with this, the `Pointers.ULID.synthesise!/1` method takes an alphanumeric binary and tries to return you it transliterated into a valid ULID. Example usage: To help you with this, the `Needle.ULID.synthesise!/1` method takes an alphanumeric binary and tries to return you it transliterated into a valid ULID. Example usage:
``` ```
iex(1)> Pointers.ULID.synthesise!("itfeedsonthesouls") iex(1)> Needle.ULID.synthesise!("itfeedsonthesouls")
11:20:28.299 [error] Too short, need 9 chars. 11:20:28.299 [error] Too short, need 9 chars.
:ok :ok
iex(2)> Pointers.ULID.synthesise!("itfeedsonthesoulsofmortalsandothers") iex(2)> Needle.ULID.synthesise!("itfeedsonthesoulsofmortalsandothers")
11:20:31.819 [warn] Too long, chopping off last 9 chars 11:20:31.819 [warn] Too long, chopping off last 9 chars
"1TFEEDS0NTHES0V1S0FM0RTA1S" "1TFEEDS0NTHES0V1S0FM0RTA1S"
iex(3)> Pointers.ULID.synthesise!("itfeedsonthesoulsofmortals") iex(3)> Needle.ULID.synthesise!("itfeedsonthesoulsofmortals")
"1TFEEDS0NTHES0V1S0FM0RTA1S" "1TFEEDS0NTHES0V1S0FM0RTA1S"
iex(4)> Pointers.ULID.synthesise!("gtfeedsonthesoulsofmortals") iex(4)> Needle.ULID.synthesise!("gtfeedsonthesoulsofmortals")
11:21:03.268 [warn] First character must be a digit in the range 0-7, replacing with 7 11:21:03.268 [warn] First character must be a digit in the range 0-7, replacing with 7
"7TFEEDS0NTHES0V1S0FM0RTA1S" "7TFEEDS0NTHES0V1S0FM0RTA1S"
@ -158,7 +158,7 @@ Virtuals are the simplest and most common type of object. Here's a definition of
```elixir ```elixir
defmodule Bonfire.Data.Social.Block do defmodule Bonfire.Data.Social.Block do
use Pointers.Virtual, use Needle.Virtual,
otp_app: :bonfire_data_social, otp_app: :bonfire_data_social,
table_id: "310CK1NGSTVFFAV01DSSEE1NG1", table_id: "310CK1NGSTVFFAV01DSSEE1NG1",
source: "bonfire_data_social_block" source: "bonfire_data_social_block"
@ -171,7 +171,7 @@ defmodule Bonfire.Data.Social.Block do
end end
``` ```
It should look quite similar to a mixin definition, except that we `use` `Pointers.Virtual` this time (passing an additional `table_id` argument) and we call the `virtual_schema` macro. It should look quite similar to a mixin definition, except that we `use` `Needle.Virtual` this time (passing an additional `table_id` argument) and we call the `virtual_schema` macro.
The primary limitation of a virtual is that you cannot put extra fields into one. This also means that `belongs_to` is not generally permitted because it results in adding a field. `has_one` and `has_many` work just fine as they do not cause the creation of fields in the schema. The primary limitation of a virtual is that you cannot put extra fields into one. This also means that `belongs_to` is not generally permitted because it results in adding a field. `has_one` and `has_many` work just fine as they do not cause the creation of fields in the schema.
@ -195,7 +195,7 @@ Here is a definition of a pointable type (indicating an ActivityPub activity who
```elixir ```elixir
defmodule Bonfire.Data.Social.APActivity do defmodule Bonfire.Data.Social.APActivity do
use Pointers.Pointable, use Needle.Pointable,
otp_app: :bonfire_data_social, otp_app: :bonfire_data_social,
table_id: "30NF1REAPACTTAB1ENVMBER0NE", table_id: "30NF1REAPACTTAB1ENVMBER0NE",
source: "bonfire_data_social_apactivity" source: "bonfire_data_social_apactivity"
@ -219,7 +219,7 @@ Most virtuals are incredibly simple to migrate for:
```elixir ```elixir
defmodule Bonfire.Data.Social.Post.Migration do defmodule Bonfire.Data.Social.Post.Migration do
import Pointers.Migration import Needle.Migration
alias Bonfire.Data.Social.Post alias Bonfire.Data.Social.Post
def migrate_post(), do: migrate_virtual(Post) def migrate_post(), do: migrate_virtual(Post)
@ -233,7 +233,7 @@ If you need to do more work, it can be a little trickier. Here's an example for
defmodule Bonfire.Data.Social.Block.Migration do defmodule Bonfire.Data.Social.Block.Migration do
import Ecto.Migration import Ecto.Migration
import Pointers.Migration import Needle.Migration
import Bonfire.Data.Edges.Edge.Migration import Bonfire.Data.Edges.Edge.Migration
alias Bonfire.Data.Social.Block alias Bonfire.Data.Social.Block
@ -270,13 +270,13 @@ Example:
defmodule Bonfire.Data.Social.APActivity.Migration do defmodule Bonfire.Data.Social.APActivity.Migration do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
alias Bonfire.Data.Social.APActivity alias Bonfire.Data.Social.APActivity
defp make_apactivity_table(exprs) do defp make_apactivity_table(exprs) do
quote do quote do
require Pointers.Migration require Needle.Migration
Pointers.Migration.create_pointable_table(Bonfire.Data.Social.APActivity) do Needle.Migration.create_pointable_table(Bonfire.Data.Social.APActivity) do
Ecto.Migration.add :json, :jsonb Ecto.Migration.add :json, :jsonb
unquote_splicing(exprs) unquote_splicing(exprs)
end end
@ -311,15 +311,15 @@ Mixins look much like pointables:
```elixir ```elixir
defmodule Bonfire.Data.Social.Profile.Migration do defmodule Bonfire.Data.Social.Profile.Migration do
import Pointers.Migration import Needle.Migration
alias Bonfire.Data.Social.Profile alias Bonfire.Data.Social.Profile
# create_profile_table/{0,1} # create_profile_table/{0,1}
defp make_profile_table(exprs) do defp make_profile_table(exprs) do
quote do quote do
require Pointers.Migration require Needle.Migration
Pointers.Migration.create_mixin_table(Bonfire.Data.Social.Profile) do Needle.Migration.create_mixin_table(Bonfire.Data.Social.Profile) do
Ecto.Migration.add :name, :text Ecto.Migration.add :name, :text
Ecto.Migration.add :summary, :text Ecto.Migration.add :summary, :text
Ecto.Migration.add :website, :text Ecto.Migration.add :website, :text
@ -367,7 +367,7 @@ Similar to mixins:
defmodule Bonfire.Data.Social.FeedPublish.Migration do defmodule Bonfire.Data.Social.FeedPublish.Migration do
import Ecto.Migration import Ecto.Migration
import Pointers.Migration import Needle.Migration
alias Bonfire.Data.Social.FeedPublish alias Bonfire.Data.Social.FeedPublish
@feed_publish_table FeedPublish.__schema__(:source) @feed_publish_table FeedPublish.__schema__(:source)
@ -376,10 +376,10 @@ defmodule Bonfire.Data.Social.FeedPublish.Migration do
defp make_feed_publish_table(exprs) do defp make_feed_publish_table(exprs) do
quote do quote do
require Pointers.Migration require Needle.Migration
Pointers.Migration.create_mixin_table(Bonfire.Data.Social.FeedPublish) do Needle.Migration.create_mixin_table(Bonfire.Data.Social.FeedPublish) do
Ecto.Migration.add :feed_id, Ecto.Migration.add :feed_id,
Pointers.Migration.strong_pointer(), primary_key: true Needle.Migration.strong_pointer(), primary_key: true
unquote_splicing(exprs) unquote_splicing(exprs)
end end
end end
@ -434,4 +434,4 @@ scenarios by now:
* [bonfire_data_edges](https://github.com/bonfire-networks/bonfire_data_edges/) (feat. bonus triggers) * [bonfire_data_edges](https://github.com/bonfire-networks/bonfire_data_edges/) (feat. bonus triggers)
If you want to know exactly what's happening, you may want to read the code for If you want to know exactly what's happening, you may want to read the code for
[Pointers.Migration](https://github.com/bonfire-networks/pointers/blob/main/lib/migration.ex). [Needle.Migration](https://github.com/bonfire-networks/needle/blob/main/lib/migration.ex).

View file

@ -82,7 +82,7 @@
| file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info | | file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info |
| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system | | file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |
| flame_on | MIT | 0.5.0 | https://hex.pm/packages/flame_on | | flame_on | MIT | 0.5.0 | https://hex.pm/packages/flame_on |
| flexto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/flexto | | exto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/exto |
| floki | MIT | 0.32.1 | https://hex.pm/packages/floki | | floki | MIT | 0.32.1 | https://hex.pm/packages/floki |
| gen_smtp | BSD-2-Clause; Unrecognized license | 1.2.0 | https://hex.pm/packages/gen_smtp | | gen_smtp | BSD-2-Clause; Unrecognized license | 1.2.0 | https://hex.pm/packages/gen_smtp |
| geo | MIT | 3.4.3 | https://hex.pm/packages/geo | | geo | MIT | 3.4.3 | https://hex.pm/packages/geo |
@ -143,7 +143,7 @@
| plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy | | plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy |
| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto | | plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |
| pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers | | pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers |
| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid | | needle_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/needle_ulid |
| postgrex | Apache 2.0 | 0.16.3 | https://hex.pm/packages/postgrex | | postgrex | Apache 2.0 | 0.16.3 | https://hex.pm/packages/postgrex |
| pseudo_gettext | Undefined | 0.1.0 | https://github.com/tmbb/pseudo_gettext | | pseudo_gettext | Undefined | 0.1.0 | https://github.com/tmbb/pseudo_gettext |
| ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch | | ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch |

View file

@ -80,7 +80,7 @@
| file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info | | file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info |
| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system | | file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |
| flame_on | MIT | 0.2.1 | https://hex.pm/packages/flame_on | | flame_on | MIT | 0.2.1 | https://hex.pm/packages/flame_on |
| flexto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/flexto | | exto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/exto |
| floki | MIT | 0.32.0 | https://hex.pm/packages/floki | | floki | MIT | 0.32.0 | https://hex.pm/packages/floki |
| gen_smtp | BSD 2-clause; Unrecognized license | 1.1.1 | https://hex.pm/packages/gen_smtp | | gen_smtp | BSD 2-clause; Unrecognized license | 1.1.1 | https://hex.pm/packages/gen_smtp |
| geo | MIT | 3.4.3 | https://hex.pm/packages/geo | | geo | MIT | 3.4.3 | https://hex.pm/packages/geo |
@ -139,7 +139,7 @@
| plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy | | plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy |
| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto | | plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |
| pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers | | pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers |
| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid | | needle_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/needle_ulid |
| poolboy | Unlicense; Apache 2.0; ISC | 1.5.2 | https://hex.pm/packages/poolboy | | poolboy | Unlicense; Apache 2.0; ISC | 1.5.2 | https://hex.pm/packages/poolboy |
| postgrex | Apache 2.0 | 0.16.2 | https://hex.pm/packages/postgrex | | postgrex | Apache 2.0 | 0.16.2 | https://hex.pm/packages/postgrex |
| ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch | | ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch |

View file

@ -41,7 +41,7 @@
| exsync | BSD 3-Clause; Unrecognized license | 0.2.4 | https://hex.pm/packages/exsync | | exsync | BSD 3-Clause; Unrecognized license | 0.2.4 | https://hex.pm/packages/exsync |
| faker | MIT | 0.16.0 | https://hex.pm/packages/faker | | faker | MIT | 0.16.0 | https://hex.pm/packages/faker |
| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system | | file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |
| flexto | Apache 2.0 | 0.2.2 | https://github.com/bonfire-networks/flexto | | exto | Apache 2.0 | 0.2.2 | https://github.com/bonfire-networks/exto |
| floki | MIT | 0.30.1 | https://hex.pm/packages/floki | | floki | MIT | 0.30.1 | https://hex.pm/packages/floki |
| gen_smtp | BSD 2-clause; Unrecognized license | 0.15.0 | https://hex.pm/packages/gen_smtp | | gen_smtp | BSD 2-clause; Unrecognized license | 0.15.0 | https://hex.pm/packages/gen_smtp |
| geo | MIT | 3.4.2 | https://hex.pm/packages/geo | | geo | MIT | 3.4.2 | https://hex.pm/packages/geo |
@ -84,7 +84,7 @@
| plug_cowboy | Apache 2.0 | 2.5.0 | https://hex.pm/packages/plug_cowboy | | plug_cowboy | Apache 2.0 | 2.5.0 | https://hex.pm/packages/plug_cowboy |
| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto | | plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |
| pointers | Apache 2.0 | 0.5.1 | https://github.com/bonfire-networks/pointers | | pointers | Apache 2.0 | 0.5.1 | https://github.com/bonfire-networks/pointers |
| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid | | needle_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/needle_ulid |
| poolboy | Unlicense; Apache 2.0; ISC | 1.5.2 | https://hex.pm/packages/poolboy | | poolboy | Unlicense; Apache 2.0; ISC | 1.5.2 | https://hex.pm/packages/poolboy |
| postgrex | Apache 2.0 | 0.15.8 | https://hex.pm/packages/postgrex | | postgrex | Apache 2.0 | 0.15.8 | https://hex.pm/packages/postgrex |
| query_elf | Apache 2.0 | 0.3.0 | https://github.com/bonfire-networks/query_elf | | query_elf | Apache 2.0 | 0.3.0 | https://github.com/bonfire-networks/query_elf |

View file

@ -46,7 +46,7 @@ pointable_schema_extensions = [
:bonfire_pages :bonfire_pages
] ]
config :pointers, :search_path, pointable_schema_extensions config :needle, :search_path, pointable_schema_extensions
# Search these apps/extensions for context or queries modules to index (i.e. they contain modules with a query_module/0 or context_modules/0 function) # Search these apps/extensions for context or queries modules to index (i.e. they contain modules with a query_module/0 or context_modules/0 function)
context_and_queries_extensions = context_and_queries_extensions =
@ -125,8 +125,8 @@ config :bonfire_data_access_control,
] ]
#### Alias modules for readability #### Alias modules for readability
alias Pointers.Pointer alias Needle.Pointer
alias Pointers.Table alias Needle.Table
alias Bonfire.Data.AccessControl.Acl alias Bonfire.Data.AccessControl.Acl
alias Bonfire.Data.AccessControl.Circle alias Bonfire.Data.AccessControl.Circle
@ -193,7 +193,7 @@ alias Bonfire.Files.Media
alias Bonfire.Tag alias Bonfire.Tag
alias Bonfire.Tag.Tagged alias Bonfire.Tag.Tagged
#### Flexto Stitching #### Exto Stitching
## WARNING: This is the flaky magic bit. We use configuration to ## WARNING: This is the flaky magic bit. We use configuration to
## compile extra stuff into modules. If you add new fields or ## compile extra stuff into modules. If you add new fields or
@ -457,7 +457,7 @@ pointer_mixins =
:feed_publishes :feed_publishes
]) ])
config :pointers, Pointer, config :needle, Pointer,
code: code:
(quote do (quote do
field(:dummy, :any, virtual: true) field(:dummy, :any, virtual: true)
@ -479,7 +479,7 @@ config :pointers, Pointer,
unquote_splicing(pointer_mixins) unquote_splicing(pointer_mixins)
end) end)
config :pointers, Table, [] config :needle, Table, []
# now let's weave everything else together for convenience # now let's weave everything else together for convenience
# bonfire_data_access_control # bonfire_data_access_control

View file

@ -94,7 +94,7 @@ config :bonfire, Bonfire.Common.TestInstanceRepo,
# priv: flavour_path <> "/repo" # priv: flavour_path <> "/repo"
# ecto query filtering # ecto query filtering
# config :query_elf, :id_types, [:id, :binary_id, Pointers.ULID] # config :query_elf, :id_types, [:id, :binary_id, Needle.ULID]
# disable Tzdata and replace with Tz library # disable Tzdata and replace with Tz library
config :tzdata, :autoupdate, :disabled config :tzdata, :autoupdate, :disabled
@ -109,8 +109,8 @@ config :elixir, :dbg_callback, {Untangle, :custom_dbg, []}
config :surface, :compiler, warn_on_undefined_props: false config :surface, :compiler, warn_on_undefined_props: false
config :paper_trail, config :paper_trail,
item_type: Pointers.ULID, item_type: Needle.ULID,
originator_type: Pointers.ULID, originator_type: Needle.ULID,
originator_relationship_options: [references: :id], originator_relationship_options: [references: :id],
originator: [name: :user, model: Bonfire.Data.Identity.User] originator: [name: :user, model: Bonfire.Data.Identity.User]

View file

@ -29,7 +29,7 @@ bonfire_data_shared_user = "https://github.com/bonfire-networks/bonfire_data_sha
bonfire_tag = "https://github.com/bonfire-networks/bonfire_tag#main" bonfire_tag = "https://github.com/bonfire-networks/bonfire_tag#main"
## UTILS ## UTILS
arrows = "https://github.com/bonfire-networks/arrows" # arrows = "https://github.com/bonfire-networks/arrows"
activity_pub = "https://github.com/bonfire-networks/activity_pub#develop" activity_pub = "https://github.com/bonfire-networks/activity_pub#develop"
mfm_parser = "https://akkoma.dev/AkkomaGang/mfm-parser.git" mfm_parser = "https://akkoma.dev/AkkomaGang/mfm-parser.git"
nodeinfo = "https://github.com/bonfire-networks/nodeinfo#main" nodeinfo = "https://github.com/bonfire-networks/nodeinfo#main"
@ -39,9 +39,9 @@ emote = "https://github.com/bonfire-networks/emote#master"
paginator = "https://github.com/bonfire-networks/paginator#main" paginator = "https://github.com/bonfire-networks/paginator#main"
voodoo = "https://github.com/bonfire-networks/voodoo#main" voodoo = "https://github.com/bonfire-networks/voodoo#main"
ecto_sparkles = "https://github.com/bonfire-networks/ecto_sparkles#main" ecto_sparkles = "https://github.com/bonfire-networks/ecto_sparkles#main"
flexto = "https://github.com/bonfire-networks/flexto#main" # exto = "https://github.com/bonfire-networks/exto#main"
pointers = "https://github.com/bonfire-networks/pointers#main" # needle = "https://github.com/bonfire-networks/needle#main"
pointers_ulid = "https://github.com/bonfire-networks/pointers_ulid#main" # needle_ulid = "https://github.com/bonfire-networks/needle_ulid#main"
#twinkle_star = "https://github.com/bonfire-networks/twinkle_star" #twinkle_star = "https://github.com/bonfire-networks/twinkle_star"
#tree_magic = "https://github.com/bonfire-networks/tree_magic.ex" #tree_magic = "https://github.com/bonfire-networks/tree_magic.ex"
live_admin = "https://github.com/bonfire-networks/live_admin" live_admin = "https://github.com/bonfire-networks/live_admin"
@ -58,7 +58,7 @@ capsule_supplement = "https://github.com/bonfire-networks/capsule_supplement#wit
# beacon_live_admin = "https://github.com/beaconCMS/beacon_live_admin" # beacon_live_admin = "https://github.com/beaconCMS/beacon_live_admin"
# bonfire_website = "https://github.com/bonfire-networks/bonfire_website#main" # bonfire_website = "https://github.com/bonfire-networks/bonfire_website#main"
bonfire_open_id = "https://github.com/bonfire-networks/bonfire_open_id#main" # bonfire_open_id = "https://github.com/bonfire-networks/bonfire_open_id#main"
# boruta = "https://gitlab.com/patatoid/boruta_auth#master" # boruta = "https://gitlab.com/patatoid/boruta_auth#master"
# rauversion_extension = "https://github.com/mayel/rauversion-phx.git#modular-extension-step2" # rauversion_extension = "https://github.com/mayel/rauversion-phx.git#modular-extension-step2"
@ -81,8 +81,8 @@ paper_trail = "https://github.com/bonfire-networks/paper_trail#with-pointers"
# sentry = "https://github.com/getsentry/sentry-elixir" # sentry = "https://github.com/getsentry/sentry-elixir"
bonfire_editor_ck = "https://github.com/bonfire-networks/bonfire_editor_ck#main" # bonfire_editor_ck = "https://github.com/bonfire-networks/bonfire_editor_ck#main"
bonfire_editor_quill = "https://github.com/bonfire-networks/bonfire_editor_quill#main" # bonfire_editor_quill = "https://github.com/bonfire-networks/bonfire_editor_quill#main"
bonfire_editor_milkdown = "https://github.com/bonfire-networks/bonfire_editor_milkdown" bonfire_editor_milkdown = "https://github.com/bonfire-networks/bonfire_editor_milkdown"
# bonfire_gatherings = "https://github.com/bonfire-networks/bonfire_gatherings" # bonfire_gatherings = "https://github.com/bonfire-networks/bonfire_gatherings"

View file

@ -26,7 +26,7 @@ wobserver_ng = "~> 1.14"
# DB # DB
ecto_sql = "~> 3.8" ecto_sql = "~> 3.8"
flexto = "~> 0.2.3" exto = "~> 0.3"
postgrex = ">= 0.16.2" postgrex = ">= 0.16.2"
ecto_psql_extras = "~> 0.7.4" ecto_psql_extras = "~> 0.7.4"
# endo = "~> 0.1" # endo = "~> 0.1"

View file

@ -1,7 +1,7 @@
defmodule Bonfire.Repo.Migrations.InitPointers do defmodule Bonfire.Repo.Migrations.InitPointers do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
init_pointers_ulid_extra() init_pointers_ulid_extra()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFiles do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Media.Migrations import Bonfire.Files.Media.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
Bonfire.Files.Media.Migrations.migrate_media() Bonfire.Files.Media.Migrations.migrate_media()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Migrations import Bonfire.Social.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Graph.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Graph.Migrations import Bonfire.Social.Graph.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Posts.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Posts.Migrations import Bonfire.Posts.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Messages.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Messages.Migrations import Bonfire.Messages.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.ProfileImages do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
drop_if_exists( drop_if_exists(

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.PeeredURI do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_activity_pub_peered") do alter table("bonfire_data_activity_pub_peered") do

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFilesMixin do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Migrations import Bonfire.Files.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
# cleanup old stuff # cleanup old stuff

View file

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

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Files.Repo.Migrations.FilesRefactor do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_files_media") do alter table("bonfire_files_media") do

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Data.Identity.Repo.Migrations.SettingsJson do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_identity_settings") do alter table("bonfire_data_identity_settings") do

View file

@ -1,7 +1,7 @@
defmodule Bonfire.Repo.Migrations.InitPointers do defmodule Bonfire.Repo.Migrations.InitPointers do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
init_pointers_ulid_extra() init_pointers_ulid_extra()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFiles do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Media.Migrations import Bonfire.Files.Media.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
Bonfire.Files.Media.Migrations.migrate_media() Bonfire.Files.Media.Migrations.migrate_media()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Migrations import Bonfire.Social.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.ProfileImages do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
drop_if_exists( drop_if_exists(

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.PeeredURI do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_activity_pub_peered") do alter table("bonfire_data_activity_pub_peered") do

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFilesMixin do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Migrations import Bonfire.Files.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
# cleanup old stuff # cleanup old stuff

View file

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

View file

@ -1,7 +1,7 @@
defmodule Bonfire.Repo.Migrations.InitPointers do defmodule Bonfire.Repo.Migrations.InitPointers do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
init_pointers_ulid_extra() init_pointers_ulid_extra()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFiles do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Media.Migrations import Bonfire.Files.Media.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
Bonfire.Files.Media.Migrations.migrate_media() Bonfire.Files.Media.Migrations.migrate_media()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Migrations import Bonfire.Social.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.ProfileImages do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
drop_if_exists( drop_if_exists(

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.PeeredURI do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_activity_pub_peered") do alter table("bonfire_data_activity_pub_peered") do

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFilesMixin do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Migrations import Bonfire.Files.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
# cleanup old stuff # cleanup old stuff

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Pages.Repo.Migrations.ImportPages do
use Ecto.Migration use Ecto.Migration
import Bonfire.Pages.Migrations import Bonfire.Pages.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_pages() migrate_pages()

View file

@ -1,7 +1,7 @@
defmodule Bonfire.Repo.Migrations.InitPointers do defmodule Bonfire.Repo.Migrations.InitPointers do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
init_pointers_ulid_extra() init_pointers_ulid_extra()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFiles do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Media.Migrations import Bonfire.Files.Media.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
Bonfire.Files.Media.Migrations.migrate_media() Bonfire.Files.Media.Migrations.migrate_media()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Migrations import Bonfire.Social.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.ProfileImages do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
drop_if_exists( drop_if_exists(

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.PeeredURI do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_activity_pub_peered") do alter table("bonfire_data_activity_pub_peered") do

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFilesMixin do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Migrations import Bonfire.Files.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
# cleanup old stuff # cleanup old stuff

View file

@ -1,7 +1,7 @@
defmodule Bonfire.Repo.Migrations.InitPointers do defmodule Bonfire.Repo.Migrations.InitPointers do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
init_pointers_ulid_extra() init_pointers_ulid_extra()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFiles do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Media.Migrations import Bonfire.Files.Media.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
Bonfire.Files.Media.Migrations.migrate_media() Bonfire.Files.Media.Migrations.migrate_media()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Migrations import Bonfire.Social.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.ProfileImages do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
drop_if_exists( drop_if_exists(

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.PeeredURI do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_activity_pub_peered") do alter table("bonfire_data_activity_pub_peered") do

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFilesMixin do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Migrations import Bonfire.Files.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
# cleanup old stuff # cleanup old stuff

View file

@ -1,8 +1,8 @@
defmodule Bonfire.Repo.Migrations.InitPointers do defmodule Bonfire.Repo.Migrations.InitPointers do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
# import Pointers.ULID.Migration # import Needle.ULID.Migration
def up do def up do
init_pointers() init_pointers()

View file

@ -1,8 +1,8 @@
defmodule Bonfire.Repo.Migrations.InitPointersULID do defmodule Bonfire.Repo.Migrations.InitPointersULID do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
# import Pointers.Migration # import Needle.Migration
import Pointers.ULID.Migration import Needle.ULID.Migration
def change do def change do
init_pointers_ulid_extra() init_pointers_ulid_extra()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFiles do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Media.Migrations import Bonfire.Files.Media.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
Bonfire.Files.Media.Migrations.migrate_media() Bonfire.Files.Media.Migrations.migrate_media()

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Social.Repo.Migrations.ImportSocial do
use Ecto.Migration use Ecto.Migration
import Bonfire.Social.Migrations import Bonfire.Social.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
migrate_social() migrate_social()

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.ProfileImages do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
drop_if_exists( drop_if_exists(

View file

@ -2,7 +2,7 @@ defmodule Bonfire.Social.Repo.Migrations.PeeredURI do
@moduledoc false @moduledoc false
use Ecto.Migration use Ecto.Migration
import Pointers.Migration import Needle.Migration
def up do def up do
alter table("bonfire_data_activity_pub_peered") do alter table("bonfire_data_activity_pub_peered") do

View file

@ -3,7 +3,7 @@ defmodule Bonfire.Repo.Migrations.AddFilesMixin do
use Ecto.Migration use Ecto.Migration
import Bonfire.Files.Migrations import Bonfire.Files.Migrations
import Pointers.Migration import Needle.Migration
def up do def up do
# cleanup old stuff # cleanup old stuff

View file

@ -274,7 +274,7 @@ update-deps-all: deps-unlock-unused pre-update-deps
just js-ext-deps outdated just js-ext-deps outdated
-just mix "hex.outdated --all" -just mix "hex.outdated --all"
# Update a specify dep (eg. `just update.dep pointers`) # Update a specify dep (eg. `just update.dep needle`)
update-dep dep: pre-update-deps update-dep dep: pre-update-deps
just update-fork $dep pull just update-fork $dep pull
just mix-remote "deps.update $dep" just mix-remote "deps.update $dep"
@ -360,39 +360,39 @@ dep-clone-local dep repo:
deps-clone-local-all: deps-clone-local-all:
curl -s https://api.github.com/orgs/bonfire-networks/repos?per_page=500 | ruby -rrubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[just dep.clone.local dep="#{repo["name"]}" repo="#{repo["ssh_url"]}" ]}' curl -s https://api.github.com/orgs/bonfire-networks/repos?per_page=500 | ruby -rrubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[just dep.clone.local dep="#{repo["name"]}" repo="#{repo["ssh_url"]}" ]}'
# Switch to using a local path, eg: just dep.go.local pointers # Switch to using a local path, eg: just dep.go.local needle
dep-go-local dep: dep-go-local dep:
just dep-go-local-path $dep $EXT_PATH$dep just dep-go-local-path $dep $EXT_PATH$dep
# Switch to using a local path, specifying the path, eg: just dep.go.local dep=pointers path=./libs/pointers # Switch to using a local path, specifying the path, eg: just dep.go.local dep=needle path=./libs/needle
dep-go-local-path dep path: dep-go-local-path dep path:
just dep-local add $dep $path just dep-local add $dep $path
just dep-local enable $dep $path just dep-local enable $dep $path
# Switch to using a git repo, eg: just dep.go.git pointers https://github.com/bonfire-networks/pointers (specifying the repo is optional if previously specified) # Switch to using a git repo, eg: just dep.go.git needle https://github.com/bonfire-networks/needle (specifying the repo is optional if previously specified)
dep-go-git dep repo: dep-go-git dep repo:
-just dep-git add $dep $repo -just dep-git add $dep $repo
just dep-git enable $dep NA just dep-git enable $dep NA
just dep-local disable $dep NA just dep-local disable $dep NA
# Switch to using a library from hex.pm, eg: just dep.go.hex dep="pointers" version="_> 0.2" (specifying the version is optional if previously specified) # Switch to using a library from hex.pm, eg: just dep.go.hex dep="needle" version="_> 0.2" (specifying the version is optional if previously specified)
dep-go-hex dep version: dep-go-hex dep version:
-just dep-hex add dep=$dep version=$version -just dep-hex add dep=$dep version=$version
just dep-hex enable $dep NA just dep-hex enable $dep NA
just dep-git disable $dep NA just dep-git disable $dep NA
just dep-local disable $dep NA just dep-local disable $dep NA
# add/enable/disable/delete a hex dep with messctl command, eg: `just dep-hex enable pointers 0.2` # add/enable/disable/delete a hex dep with messctl command, eg: `just dep-hex enable needle 0.2`
dep-hex command dep version: dep-hex command dep version:
just messctl "$command $dep $version" just messctl "$command $dep $version"
just mix "deps.clean $dep" just mix "deps.clean $dep"
# add/enable/disable/delete a git dep with messctl command, eg: `just dep-hex enable pointers https://github.com/bonfire-networks/pointers#main # add/enable/disable/delete a git dep with messctl command, eg: `just dep-hex enable needle https://github.com/bonfire-networks/needle#main
dep-git command dep repo: dep-git command dep repo:
just messctl "$command $dep $repo config/deps.git" just messctl "$command $dep $repo config/deps.git"
just mix "deps.clean $dep" just mix "deps.clean $dep"
# add/enable/disable/delete a local dep with messctl command, eg: `just dep-hex enable pointers ./libs/pointers` # add/enable/disable/delete a local dep with messctl command, eg: `just dep-hex enable needle ./libs/needle`
dep-local command dep path: dep-local command dep path:
just messctl "$command $dep $path config/deps.path" just messctl "$command $dep $path config/deps.path"
just mix "deps.clean $dep" just mix "deps.clean $dep"
@ -726,7 +726,7 @@ shell:
@imix *args='': @imix *args='':
just cmd iex -S mix $@ just cmd iex -S mix $@
# Run a specific mix command, eg: `just mix deps.get` or `just mix "deps.update pointers"` # Run a specific mix command, eg: `just mix deps.get` or `just mix "deps.update needle"`
@mix *args='': @mix *args='':
echo % mix $@ echo % mix $@
{{ if MIX_ENV == "prod" { "just mix-maybe-prod $@" } else { "just cmd mix $@" } }} {{ if MIX_ENV == "prod" { "just mix-maybe-prod $@" } else { "just cmd mix $@" } }}
@ -737,7 +737,7 @@ shell:
@mix-maybe-prod-pre-release *args='': @mix-maybe-prod-pre-release *args='':
{{ if path_exists("./_build/prod/rel/bonfire/bin/bonfire")=="true" { "echo Ignoring mix commands since we already have a prod release (delete _build/prod/rel/bonfire/bin/bonfire if you want to build a new release)" } else { "just cmd mix $@" } }} {{ if path_exists("./_build/prod/rel/bonfire/bin/bonfire")=="true" { "echo Ignoring mix commands since we already have a prod release (delete _build/prod/rel/bonfire/bin/bonfire if you want to build a new release)" } else { "just cmd mix $@" } }}
# Run a specific mix command, while ignoring any deps cloned into forks, eg: `just mix-remote deps.get` or `just mix-remote deps.update pointers` # Run a specific mix command, while ignoring any deps cloned into forks, eg: `just mix-remote deps.get` or `just mix-remote deps.update needle`
mix-remote *args='': init mix-remote *args='': init
echo % WITH_FORKS=0 mix $@ echo % WITH_FORKS=0 mix $@
{{ if WITH_DOCKER == "total" { "docker compose run -e WITH_FORKS=0 web mix $@" } else {"WITH_FORKS=0 mix $@"} }} {{ if WITH_DOCKER == "total" { "docker compose run -e WITH_FORKS=0 web mix $@" } else {"WITH_FORKS=0 mix $@"} }}

10
mix.exs
View file

@ -116,7 +116,7 @@ defmodule Bonfire.Umbrella.MixProject do
deps_prefixes: [ deps_prefixes: [
docs: [ docs: [
"bonfire", "bonfire",
"pointers", "needle",
"paginator", "paginator",
"ecto_shorts", "ecto_shorts",
"ecto_sparkles", "ecto_sparkles",
@ -124,7 +124,7 @@ defmodule Bonfire.Umbrella.MixProject do
"activity_pub", "activity_pub",
"arrows", "arrows",
"ecto_materialized_path", "ecto_materialized_path",
"flexto", "exto",
"grumble", "grumble",
"linkify", "linkify",
"verbs", "verbs",
@ -134,7 +134,7 @@ defmodule Bonfire.Umbrella.MixProject do
], ],
test: [ test: [
"bonfire", "bonfire",
"pointers", "needle",
# "paginator", # "paginator",
"ecto_shorts", "ecto_shorts",
"ecto_sparkles", "ecto_sparkles",
@ -147,7 +147,7 @@ defmodule Bonfire.Umbrella.MixProject do
data: [ data: [
"bonfire_data_", "bonfire_data_",
"bonfire_data_edges", "bonfire_data_edges",
"pointers", "needle",
"bonfire_boundaries", "bonfire_boundaries",
"bonfire_tag", "bonfire_tag",
"bonfire_classify", "bonfire_classify",
@ -279,7 +279,7 @@ defmodule Bonfire.Umbrella.MixProject do
~r/^Bonfire.Fail?/, ~r/^Bonfire.Fail?/,
~r/^Bonfire.Files?/, ~r/^Bonfire.Files?/,
~r/^Bonfire.Mailer?/, ~r/^Bonfire.Mailer?/,
~r/^Pointers?/ ~r/^Needle?/
], ],
"Feature extensions": [~r/^Bonfire.?/, ~r/^ValueFlows.?/], "Feature extensions": [~r/^Bonfire.?/, ~r/^ValueFlows.?/],
Federation: [ Federation: [

View file

@ -6,7 +6,7 @@
"acceptor_pool": {:hex, :acceptor_pool, "1.0.0", "43c20d2acae35f0c2bcd64f9d2bde267e459f0f3fd23dab26485bf518c281b21", [:rebar3], [], "hexpm", "0cbcd83fdc8b9ad2eee2067ef8b91a14858a5883cb7cd800e6fcd5803e158788"}, "acceptor_pool": {:hex, :acceptor_pool, "1.0.0", "43c20d2acae35f0c2bcd64f9d2bde267e459f0f3fd23dab26485bf518c281b21", [:rebar3], [], "hexpm", "0cbcd83fdc8b9ad2eee2067ef8b91a14858a5883cb7cd800e6fcd5803e158788"},
"activity_pub": {:git, "https://github.com/bonfire-networks/activity_pub", "f6169b79eccdecd39b9805511f715f1010529104", [branch: "develop"]}, "activity_pub": {:git, "https://github.com/bonfire-networks/activity_pub", "f6169b79eccdecd39b9805511f715f1010529104", [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"}, "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": {:git, "https://github.com/bonfire-networks/arrows", "277b3bc4babbcf89ea5e7e7fb670e6c13d796026", []}, "arrows": {:hex, :arrows, "0.1.1", "c414e21173115987578bda1bf35a60cde228a16d7e52d9f6c76e1c8914c22c79", [:mix], [], "hexpm", "ce6de75d7cb43a032e9856826c5bace8f43434ee574e4a6a412f9d3b3931062e"},
"assert_value": {:hex, :assert_value, "0.10.3", "bb4cc3f497e1eba276e1e55eb1574bb8657752539a72259d1d7e17e15bd98f6d", [:mix], [], "hexpm", "ca51af160d9ab14b283deac1d48ff72414257792a399dbe3d5cb384f4f3d625b"}, "assert_value": {:hex, :assert_value, "0.10.3", "bb4cc3f497e1eba276e1e55eb1574bb8657752539a72259d1d7e17e15bd98f6d", [:mix], [], "hexpm", "ca51af160d9ab14b283deac1d48ff72414257792a399dbe3d5cb384f4f3d625b"},
"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": {: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_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"},
@ -128,13 +128,13 @@
"excellent_migrations": {:hex, :excellent_migrations, "0.1.6", "5ac916760cee8c63f55a2dbf3eadabb699a60adde5943ce069c1f7ee93f92963", [:mix], [{:credo, "~> 1.5", [hex: :credo, repo: "hexpm", optional: true]}], "hexpm", "c39269b0e4c0412b3e87fd77fe7ce8dd0e8470a6ec3df7d150b8d198b69a0239"}, "excellent_migrations": {:hex, :excellent_migrations, "0.1.6", "5ac916760cee8c63f55a2dbf3eadabb699a60adde5943ce069c1f7ee93f92963", [:mix], [{:credo, "~> 1.5", [hex: :credo, repo: "hexpm", optional: true]}], "hexpm", "c39269b0e4c0412b3e87fd77fe7ce8dd0e8470a6ec3df7d150b8d198b69a0239"},
"exdiff": {:hex, :exdiff, "0.1.5", "3e55bd840214508fd478d91fb07f1671d90d2f0d6f5266296e3b596e07d92305", [:mix], [], "hexpm", "b1ccef642edc28ed3acf1b08c8dbc6e42852d18dfe51b453529588e53c733eba"}, "exdiff": {:hex, :exdiff, "0.1.5", "3e55bd840214508fd478d91fb07f1671d90d2f0d6f5266296e3b596e07d92305", [:mix], [], "hexpm", "b1ccef642edc28ed3acf1b08c8dbc6e42852d18dfe51b453529588e53c733eba"},
"expo": {:hex, :expo, "0.5.1", "249e826a897cac48f591deba863b26c16682b43711dd15ee86b92f25eafd96d9", [:mix], [], "hexpm", "68a4233b0658a3d12ee00d27d37d856b1ba48607e7ce20fd376958d0ba6ce92b"}, "expo": {:hex, :expo, "0.5.1", "249e826a897cac48f591deba863b26c16682b43711dd15ee86b92f25eafd96d9", [:mix], [], "hexpm", "68a4233b0658a3d12ee00d27d37d856b1ba48607e7ce20fd376958d0ba6ce92b"},
"exto": {:git, "https://github.com/bonfire-networks/exto", "44273bc9e530ea9752f534a46836475af12e0355", [branch: "main"]},
"faker": {:hex, :faker, "0.17.0", "671019d0652f63aefd8723b72167ecdb284baf7d47ad3a82a15e9b8a6df5d1fa", [:mix], [], "hexpm", "a7d4ad84a93fd25c5f5303510753789fc2433ff241bf3b4144d3f6f291658a6a"}, "faker": {:hex, :faker, "0.17.0", "671019d0652f63aefd8723b72167ecdb284baf7d47ad3a82a15e9b8a6df5d1fa", [:mix], [], "hexpm", "a7d4ad84a93fd25c5f5303510753789fc2433ff241bf3b4144d3f6f291658a6a"},
"fast_ngram": {:hex, :fast_ngram, "1.2.0", "0652c25d3f66e69e6780121cf19200442fe70da689b39ccaa8998da6ee2f65cc", [:mix], [], "hexpm", "90c949c5b00314d8117a5bf2fbf6a05ef945ce4cad66a47bc26f8d9ec30dc1bd"}, "fast_ngram": {:hex, :fast_ngram, "1.2.0", "0652c25d3f66e69e6780121cf19200442fe70da689b39ccaa8998da6ee2f65cc", [:mix], [], "hexpm", "90c949c5b00314d8117a5bf2fbf6a05ef945ce4cad66a47bc26f8d9ec30dc1bd"},
"fetch_favicon": {:git, "https://github.com/bonfire-networks/fetch_favicon", "5fbcbbd633e954c90c3a6c3a7daf2230a189e919", [branch: "master"]}, "fetch_favicon": {:git, "https://github.com/bonfire-networks/fetch_favicon", "5fbcbbd633e954c90c3a6c3a7daf2230a189e919", [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_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"}, "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.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"},
"flexto": {:git, "https://github.com/bonfire-networks/flexto", "44273bc9e530ea9752f534a46836475af12e0355", [branch: "main"]},
"floki": {:hex, :floki, "0.35.2", "87f8c75ed8654b9635b311774308b2760b47e9a579dabf2e4d5f1e1d42c39e0b", [:mix], [], "hexpm", "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9"}, "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"}, "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", []}, "forecastr": {:git, "https://github.com/bonfire-networks/forecastr", "84235e51e4cd36ca4df03a24718b4367e296c053", []},
@ -204,6 +204,7 @@
"mogrify": {:git, "https://github.com/chaskiq/mogrify.git", "48e237d2332d24ddf5996f78b13d8bc97221b094", [branch: "identify-option"]}, "mogrify": {:git, "https://github.com/chaskiq/mogrify.git", "48e237d2332d24ddf5996f78b13d8bc97221b094", [branch: "identify-option"]},
"mox": {:hex, :mox, "1.1.0", "0f5e399649ce9ab7602f72e718305c0f9cdc351190f72844599545e4996af73c", [:mix], [], "hexpm", "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13"}, "mox": {:hex, :mox, "1.1.0", "0f5e399649ce9ab7602f72e718305c0f9cdc351190f72844599545e4996af73c", [:mix], [], "hexpm", "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13"},
"nebulex": {:hex, :nebulex, "2.5.2", "2d358813ccb2eeea525e3a29c270ad123d3337e97ed9159d9113cf128108bd4c", [:mix], [{:decorator, "~> 1.4", [hex: :decorator, repo: "hexpm", optional: true]}, {:shards, "~> 1.1", [hex: :shards, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "61a122302cf42fa61eca22515b1df21aaaa1b98cf462f6dd0998de9797aaf1c7"}, "nebulex": {:hex, :nebulex, "2.5.2", "2d358813ccb2eeea525e3a29c270ad123d3337e97ed9159d9113cf128108bd4c", [:mix], [{:decorator, "~> 1.4", [hex: :decorator, repo: "hexpm", optional: true]}, {:shards, "~> 1.1", [hex: :shards, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "61a122302cf42fa61eca22515b1df21aaaa1b98cf462f6dd0998de9797aaf1c7"},
"needle_ulid": {:git, "https://github.com/bonfire-networks/needle_ulid", "c20fe48d846a0f3c6074f2c6a4b0edafffe45803", [branch: "main"]},
"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"}, "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"}, "nimble_csv": {:hex, :nimble_csv, "1.2.0", "4e26385d260c61eba9d4412c71cea34421f296d5353f914afe3f2e71cce97722", [:mix], [], "hexpm", "d0628117fcc2148178b034044c55359b26966c6eaa8e2ce15777be3bbc91b12a"},
"nimble_options": {:hex, :nimble_options, "1.1.0", "3b31a57ede9cb1502071fade751ab0c7b8dbe75a9a4c2b5bbb0943a690b63172", [:mix], [], "hexpm", "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99"}, "nimble_options": {:hex, :nimble_options, "1.1.0", "3b31a57ede9cb1502071fade751ab0c7b8dbe75a9a4c2b5bbb0943a690b63172", [:mix], [], "hexpm", "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99"},
@ -252,8 +253,6 @@
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"}, "plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"}, "plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
"plug_http_validator": {:git, "https://github.com/bonfire-networks/plug_http_validator", "dbc277f8a328bc44107174fb1770b1376337697a", [branch: "pr-naive-datetime"]}, "plug_http_validator": {:git, "https://github.com/bonfire-networks/plug_http_validator", "dbc277f8a328bc44107174fb1770b1376337697a", [branch: "pr-naive-datetime"]},
"pointers": {:git, "https://github.com/bonfire-networks/pointers", "81836571494c0d73927128f0504f6f92bd390035", [branch: "main"]},
"pointers_ulid": {:git, "https://github.com/bonfire-networks/pointers_ulid", "c20fe48d846a0f3c6074f2c6a4b0edafffe45803", [branch: "main"]},
"poison": {:hex, :poison, "5.0.0", "d2b54589ab4157bbb82ec2050757779bfed724463a544b6e20d79855a9e43b24", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "11dc6117c501b80c62a7594f941d043982a1bd05a1184280c0d9166eb4d8d3fc"}, "poison": {:hex, :poison, "5.0.0", "d2b54589ab4157bbb82ec2050757779bfed724463a544b6e20d79855a9e43b24", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "11dc6117c501b80c62a7594f941d043982a1bd05a1184280c0d9166eb4d8d3fc"},
"poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"},
"postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"}, "postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"},