diff --git a/.gitignore b/.gitignore index 2d3e1222ca..94439bb870 100755 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ deps.path /libs/ # /forks/ /forks/*/ +/apps/*/ deps.path* # Dev artifacts @@ -100,3 +101,4 @@ tx # archeometer archeometer_bonfire.db reports/ +docs/xref_graph.svg diff --git a/.is_umbrella.exs b/.is_umbrella.exs new file mode 100644 index 0000000000..4d436ec7aa --- /dev/null +++ b/.is_umbrella.exs @@ -0,0 +1 @@ +// tells Bonfire extensions that they're running in a multi-repo umbrella diff --git a/Dockerfile.dev b/Dockerfile.dev index df29da3778..d102525d0b 100755 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -5,23 +5,21 @@ FROM rust:1.52 AS messctl_build ARG FLAVOUR ARG FLAVOUR_PATH -ENV FORKS=./forks - # build deps # RUN apk update && apk add git rust cargo # fetch messctl -RUN git clone https://github.com/bonfire-networks/messctl $FORKS/messctl/origin 2> /dev/null || (cd $FORKS/messctl/origin && git pull) -RUN cd $FORKS/messctl/origin && git checkout 8f53c86687ba2bd262471c6e8d9490ed00bf1306 +RUN git clone https://github.com/bonfire-networks/messctl forks/messctl/origin 2> /dev/null || (cd forks/messctl/origin && git pull) +RUN cd forks/messctl/origin && git checkout 8f53c86687ba2bd262471c6e8d9490ed00bf1306 # FIXME: try using latest version of messctl # compile messctl -RUN cd $FORKS/messctl && cp -r origin/* . && cargo build --release && cargo install --path . --verbose +RUN cd forks/messctl && cp -r origin/* . && cargo build --release && cargo install --path . --verbose FROM elixir:1.13-alpine -ENV HOME=/opt/app/ TERM=xterm USER=docker FORKS=./forks +ENV HOME=/opt/app/ TERM=xterm USER=docker WORKDIR $HOME # dev tools @@ -50,7 +48,7 @@ RUN apk add git rust cargo RUN apk add imagemagick vips-tools # install the dependency manager -COPY --from=messctl_build $FORKS/messctl/target/release/messctl /bin/ +COPY --from=messctl_build forks/messctl/target/release/messctl /bin/ # JS package manager & builders # RUN npm install -g pnpm esbuild postcss diff --git a/Dockerfile.release b/Dockerfile.release index a4dd7303b6..176ddab2c0 100755 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -63,7 +63,7 @@ COPY data/current_flavour/config/ ./config/ # Optionally include local forks ARG FORKS_TO_COPY_PATH RUN if [ "$FORKS_TO_COPY_PATH" = "data/null" ] ; then rm ./config/deps.path ; else echo "Include locally forked extensions." ; fi -COPY ${FORKS_TO_COPY_PATH} ./forks/ +COPY ${FORKS_TO_COPY_PATH} ./${FORKS_TO_COPY_PATH} # Update Bonfire extensions to latest git version (mostly useful in CI, and temporary: eventually we want to rely on version numbers and lockfile) # RUN mix do bonfire.deps.update @@ -104,10 +104,11 @@ COPY assets assets # include an archive of the source code COPY LICENSE ./ COPY docs/*.md ./docs/ +RUN mkdir -p apps/ RUN mkdir -p forks/ RUN mkdir -p priv/static/ COPY priv/extras/ priv/extras/ -RUN tar --exclude=*.env --exclude=.git --exclude=assets/node_modules --exclude=assets/static/data -czvf priv/static/source.tar.gz lib deps forks assets config docs priv/repo priv/extras mix.exs mix.lock LICENSE +RUN tar --exclude=*.env --exclude=.git --exclude=assets/node_modules --exclude=assets/static/data -czvf priv/static/source.tar.gz lib deps apps forks assets config docs priv/repo priv/extras mix.exs mix.lock LICENSE # prepare static assets COPY data/current_flavour/config/deps_hooks.js data/current_flavour/config/deps_hooks.js diff --git a/assets/install_extensions.sh b/assets/install_extensions.sh index 45d9c9964a..17ed7ff668 100644 --- a/assets/install_extensions.sh +++ b/assets/install_extensions.sh @@ -7,7 +7,7 @@ DEPS=${1} for dep in $DEPS ; do echo "Install JS deps from extension '$dep' with args '$2'" - if cd "forks/$dep/assets" 2>/dev/null ; then + if cd "apps/$dep/assets" 2>/dev/null ; then yarn $2 cd ../../../ fi diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md index f9dbb85f26..591391a893 100755 --- a/docs/DEPLOY.md +++ b/docs/DEPLOY.md @@ -169,7 +169,7 @@ You can also directly call some functions in the code from the command line, for There is a `justfile` with relevant commands (make sure set the `MIX_ENV=prod` env variable): - `just rel-build-release` which builds the docker image of the latest release -- `just rel-build` which builds the docker image, including local changes to any cloned extensions in `./forks/` +- `just rel-build` which builds the docker image, including local changes to any cloned extensions in `./apps/` or `./forks/` - `just rel-tag` adds the "latest" tag to your last build, so that it will be used when running Once you've built and tagged your image, you may need to update the `image` name in `docker-compose.release.release.yml` to match (either your local image name if running on the same machine you used for the build, or a remote image on Docker Hub if you pushed it) and then follow the same steps as for option A1. diff --git a/docs/HACKING.md b/docs/HACKING.md index 9b38e9da09..6fe6800a9b 100755 --- a/docs/HACKING.md +++ b/docs/HACKING.md @@ -187,10 +187,12 @@ The code is somewhat documented inline. You can generate HTML docs (using `Exdoc - messctl is a little utility for programmatically updating the .deps files from which the final elixir dependencies list is compiled by the mess script. The only use of it is in the dep-\* tasks of the Makefile. It is used by some of the project developers and the build does not rely on it. -- `./forks/` is used to hack on local copies of dependencies. You can clone a dependency from its git repo (like a bonfire extension) and use the local version during development, eg: `just dep.clone.local bonfire_me https://github.com/bonfire-networks/bonfire_me` +- `./apps/` and `./forks/` is used to hack on local copies of dependencies. You can clone a dependency from its git repo (like a bonfire extension) and use the local version during development, eg: `just dep-clone-local bonfire_me https://github.com/bonfire-networks/bonfire_me` - You can migrate the DB when the app is running (also runs automatically on startup): `EctoSparkles.Migrator.migrate` +- You can generate a dependency graph using `just xref-graph` which will generate a DOT file at `docs/` (if Graphviz is installed it will also generate an SVG visualisation using `dot`). + ### Usage under Windows (WSL, MSYS or CYGWIN) By default, the `justfile` requires symlinks, which can be enabled with the help of [this link](https://stackoverflow.com/a/59761201). diff --git a/docs/xref_graph.dot b/docs/xref_graph.dot new file mode 100644 index 0000000000..fa7ce81bf6 --- /dev/null +++ b/docs/xref_graph.dot @@ -0,0 +1,2817 @@ +digraph "xref graph" { + "lib/activity_pub/activity_pub.ex" + "lib/activity_pub/activity_pub.ex" -> "lib/activity_pub/actor.ex" [label="(export)"] + "lib/activity_pub/actor.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub/adapter.ex" -> "lib/activity_pub/actor.ex" [label="(export)"] + "lib/activity_pub/adapter.ex" -> "lib/activity_pub/object.ex" [label="(export)"] + "lib/activity_pub/object.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub/object.ex" -> "lib/activity_pub/config.ex" [label="(compile)"] + "lib/activity_pub/object.ex" -> "lib/activity_pub/fetcher.ex" + "lib/activity_pub/fetcher.ex" -> "lib/activity_pub/config.ex" [label="(compile)"] + "lib/activity_pub/fetcher.ex" -> "lib/activity_pub/http/http.ex" + "lib/activity_pub/http/http.ex" -> "lib/activity_pub/http/connection.ex" + "lib/activity_pub/http/http.ex" -> "lib/activity_pub/http/request_builder.ex" + "lib/activity_pub/fetcher.ex" -> "lib/activity_pub/object.ex" + "lib/activity_pub/fetcher.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/utils.ex" -> "lib/activity_pub/config.ex" + "lib/activity_pub/utils.ex" -> "lib/activity_pub_web/activity_pub_web.ex" + "lib/activity_pub_web/activity_pub_web.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub_web/activity_pub_web.ex" -> "lib/activity_pub_web/endpoint.ex" + "lib/activity_pub_web/endpoint.ex" -> "lib/activity_pub_web/channels/user_socket.ex" + "lib/activity_pub/utils.ex" -> "lib/common.ex" [label="(export)"] + "lib/common.ex" -> "lib/activity_pub/config.ex" + "lib/activity_pub/fetcher.ex" -> "lib/activity_pub_web/transmogrifier.ex" + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/activity_pub.ex" + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/actor.ex" [label="(export)"] + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/config.ex" [label="(compile)"] + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/fetcher.ex" + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/object.ex" [label="(export)"] + "lib/activity_pub_web/transmogrifier.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/object.ex" -> "lib/activity_pub/mrf/mrf.ex" + "lib/activity_pub/object.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/object.ex" -> "lib/activity_pub_web/activity_pub_web.ex" + "lib/activity_pub/object.ex" -> "lib/common.ex" [label="(export)"] + "lib/activity_pub/adapter.ex" -> "lib/common.ex" + "lib/activity_pub/actor.ex" -> "lib/activity_pub/config.ex" [label="(compile)"] + "lib/activity_pub/actor.ex" -> "lib/activity_pub/fetcher.ex" + "lib/activity_pub/actor.ex" -> "lib/activity_pub/keys.ex" + "lib/activity_pub/actor.ex" -> "lib/activity_pub/object.ex" [label="(export)"] + "lib/activity_pub/actor.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/actor.ex" -> "lib/activity_pub/webfinger.ex" + "lib/activity_pub/webfinger.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub/webfinger.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub/webfinger.ex" -> "lib/activity_pub/http/http.ex" + "lib/activity_pub/webfinger.ex" -> "lib/activity_pub_web/federator/publisher.ex" + "lib/activity_pub_web/federator/publisher.ex" -> "lib/activity_pub/workers/publisher_worker.ex" + "lib/activity_pub/workers/publisher_worker.ex" -> "lib/activity_pub/object.ex" + "lib/activity_pub/workers/publisher_worker.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/workers/publisher_worker.ex" -> "lib/activity_pub/workers/worker_helper.ex" [label="(compile)"] + "lib/activity_pub/workers/worker_helper.ex" -> "lib/activity_pub/config.ex" + "lib/activity_pub/workers/publisher_worker.ex" -> "lib/activity_pub_web/federator/federator.ex" + "lib/activity_pub_web/federator/federator.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub_web/federator/federator.ex" -> "lib/activity_pub/workers/publisher_worker.ex" + "lib/activity_pub_web/federator/federator.ex" -> "lib/activity_pub/workers/receiver_worker.ex" + "lib/activity_pub/workers/receiver_worker.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/workers/receiver_worker.ex" -> "lib/activity_pub/workers/worker_helper.ex" [label="(compile)"] + "lib/activity_pub/workers/receiver_worker.ex" -> "lib/activity_pub_web/federator/federator.ex" + "lib/activity_pub/workers/receiver_worker.ex" -> "lib/common.ex" + "lib/activity_pub_web/federator/federator.ex" -> "lib/activity_pub_web/federator/publisher.ex" + "lib/activity_pub_web/federator/federator.ex" -> "lib/activity_pub_web/transmogrifier.ex" + "lib/activity_pub/workers/publisher_worker.ex" -> "lib/common.ex" + "lib/activity_pub_web/federator/publisher.ex" -> "lib/activity_pub_web/publisher.ex" + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub/actor.ex" [label="(export)"] + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub/http/http.ex" + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub/instances/instances.ex" + "lib/activity_pub/instances/instances.ex" -> "lib/activity_pub/instances/instance.ex" [label="(compile)"] + "lib/activity_pub/instances/instance.ex" -> "lib/activity_pub/instances/instances.ex" + "lib/activity_pub/instances/instance.ex" -> "lib/common.ex" [label="(export)"] + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub/signature.ex" + "lib/activity_pub/signature.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub/signature.ex" -> "lib/activity_pub/fetcher.ex" + "lib/activity_pub/signature.ex" -> "lib/activity_pub/keys.ex" + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub_web/activity_pub_web.ex" + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub_web/federator/publisher.ex" [label="(compile)"] + "lib/activity_pub_web/publisher.ex" -> "lib/activity_pub_web/transmogrifier.ex" + "lib/activity_pub/actor.ex" -> "lib/common.ex" [label="(export)"] + "lib/activity_pub/activity_pub.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub/activity_pub.ex" -> "lib/activity_pub/config.ex" [label="(compile)"] + "lib/activity_pub/activity_pub.ex" -> "lib/activity_pub/object.ex" [label="(export)"] + "lib/activity_pub/activity_pub.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub/activity_pub.ex" -> "lib/activity_pub_web/federator/federator.ex" + "lib/activity_pub/activity_pub.ex" -> "lib/common.ex" [label="(export)"] + "lib/activity_pub/actor.ex" + "lib/activity_pub/adapter.ex" + "lib/activity_pub/application.ex" + "lib/activity_pub/application.ex" -> "lib/activity_pub_web/endpoint.ex" + "lib/activity_pub/config.ex" + "lib/activity_pub/fetcher.ex" + "lib/activity_pub/http/connection.ex" + "lib/activity_pub/http/http.ex" + "lib/activity_pub/http/request_builder.ex" + "lib/activity_pub/instances/instance.ex" + "lib/activity_pub/instances/instances.ex" + "lib/activity_pub/keys.ex" + "lib/activity_pub/migrations.ex" + "lib/activity_pub/mrf/mrf.ex" + "lib/activity_pub/mrf/simple_policy.ex" + "lib/activity_pub/mrf/simple_policy.ex" -> "lib/activity_pub/config.ex" [label="(compile)"] + "lib/activity_pub/mrf/simple_policy.ex" -> "lib/activity_pub/mrf/mrf.ex" [label="(compile)"] + "lib/activity_pub/object.ex" + "lib/activity_pub/signature.ex" + "lib/activity_pub/utils.ex" + "lib/activity_pub/webfinger.ex" + "lib/activity_pub/workers/publisher_worker.ex" + "lib/activity_pub/workers/receiver_worker.ex" + "lib/activity_pub/workers/worker_helper.ex" + "lib/activity_pub_web/activity_pub_web.ex" + "lib/activity_pub_web/channels/user_socket.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub/config.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub/fetcher.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub/object.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub_web/activity_pub_web.ex" [label="(compile)"] + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub_web/federator/federator.ex" + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub_web/views/actor_view.ex" + "lib/activity_pub_web/views/actor_view.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub_web/views/actor_view.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub_web/views/actor_view.ex" -> "lib/activity_pub_web/activity_pub_web.ex" [label="(compile)"] + "lib/activity_pub_web/controllers/activity_pub_controller.ex" -> "lib/activity_pub_web/views/object_view.ex" + "lib/activity_pub_web/views/object_view.ex" -> "lib/activity_pub/object.ex" + "lib/activity_pub_web/views/object_view.ex" -> "lib/activity_pub/utils.ex" + "lib/activity_pub_web/views/object_view.ex" -> "lib/activity_pub_web/activity_pub_web.ex" [label="(compile)"] + "lib/activity_pub_web/views/object_view.ex" -> "lib/activity_pub_web/transmogrifier.ex" + "lib/activity_pub_web/controllers/redirect_controller.ex" + "lib/activity_pub_web/controllers/redirect_controller.ex" -> "lib/activity_pub/actor.ex" + "lib/activity_pub_web/controllers/redirect_controller.ex" -> "lib/activity_pub/adapter.ex" + "lib/activity_pub_web/controllers/redirect_controller.ex" -> "lib/activity_pub/object.ex" + "lib/activity_pub_web/controllers/redirect_controller.ex" -> "lib/activity_pub/webfinger.ex" + "lib/activity_pub_web/controllers/redirect_controller.ex" -> "lib/activity_pub_web/activity_pub_web.ex" [label="(compile)"] + "lib/activity_pub_web/controllers/webfinger_controller.ex" + "lib/activity_pub_web/controllers/webfinger_controller.ex" -> "lib/activity_pub/webfinger.ex" + "lib/activity_pub_web/controllers/webfinger_controller.ex" -> "lib/activity_pub_web/activity_pub_web.ex" [label="(compile)"] + "lib/activity_pub_web/endpoint.ex" + "lib/activity_pub_web/federator/federator.ex" + "lib/activity_pub_web/federator/publisher.ex" + "lib/activity_pub_web/plugs/http_signature_plug.ex" + "lib/activity_pub_web/publisher.ex" + "lib/activity_pub_web/router.ex" + "lib/activity_pub_web/telemetry.ex" + "lib/activity_pub_web/transmogrifier.ex" + "lib/activity_pub_web/views/actor_view.ex" + "lib/activity_pub_web/views/error_helpers.ex" + "lib/activity_pub_web/views/error_view.ex" + "lib/activity_pub_web/views/error_view.ex" -> "lib/activity_pub_web/activity_pub_web.ex" [label="(compile)"] + "lib/activity_pub_web/views/object_view.ex" + "lib/common.ex" + "lib/graphql/auth.ex" + "lib/graphql/auth.ex" -> "lib/graphql/graphql.ex" + "lib/graphql/graphql.ex" -> "lib/graphql/auth.ex" + "lib/graphql/graphql.ex" -> "lib/graphql/page.ex" + "lib/graphql/page.ex" -> "lib/graphql/page_info.ex" + "lib/graphql/common_resolver.ex" + "lib/graphql/common_resolver.ex" -> "lib/graphql/fields.ex" + "lib/graphql/common_resolver.ex" -> "lib/graphql/graphql.ex" + "lib/graphql/common_resolver.ex" -> "lib/graphql/resolve_fields.ex" [label="(export)"] + "lib/graphql/resolve_fields.ex" -> "lib/graphql/fields.ex" [label="(compile)"] + "lib/graphql/common_resolver.ex" -> "lib/graphql/resolve_pages.ex" [label="(export)"] + "lib/graphql/resolve_pages.ex" -> "lib/graphql/fields.ex" [label="(compile)"] + "lib/graphql/resolve_pages.ex" -> "lib/graphql/graphql.ex" + "lib/graphql/common_schema.ex" + "lib/graphql/common_schema.ex" -> "lib/graphql/auth.ex" [label="(compile)"] + "lib/graphql/common_schema.ex" -> "lib/graphql/common_resolver.ex" + "lib/graphql/dev_tools.ex" + "lib/graphql/fetch_fields.ex" + "lib/graphql/fetch_fields.ex" -> "lib/graphql/fields.ex" + "lib/graphql/fetch_page.ex" + "lib/graphql/fetch_page.ex" -> "lib/graphql/page.ex" + "lib/graphql/fetch_pages.ex" + "lib/graphql/fetch_pages.ex" -> "lib/graphql/pages.ex" + "lib/graphql/pages.ex" -> "lib/graphql/page.ex" + "lib/graphql/fields.ex" + "lib/graphql/graphql.ex" + "lib/graphql/middleware/collapse_errors.ex" + "lib/graphql/middleware/debug.ex" + "lib/graphql/middleware/render_lists.ex" + "lib/graphql/page.ex" + "lib/graphql/page_info.ex" + "lib/graphql/pages.ex" + "lib/graphql/pagination.ex" + "lib/graphql/pagination.ex" -> "lib/graphql/page.ex" + "lib/graphql/pagination.ex" -> "lib/graphql/pages.ex" + "lib/graphql/phases/arguments/data.ex" + "lib/graphql/phases/arguments/data.ex" -> "lib/graphql/types/cursor.ex" [label="(export)"] + "lib/graphql/phases/arguments/flag_invalid.ex" + "lib/graphql/phases/arguments/flag_invalid.ex" -> "lib/graphql/types/cursor.ex" [label="(export)"] + "lib/graphql/phases/arguments/parse.ex" + "lib/graphql/phases/arguments/parse.ex" -> "lib/graphql/types/cursor.ex" [label="(export)"] + "lib/graphql/phases/debug.ex" + "lib/graphql/phases/execution_resolution.ex" + "lib/graphql/phases/plug_pipelines.ex" + "lib/graphql/phases/schema_pipelines.ex" + "lib/graphql/plugs/context.ex" + "lib/graphql/plugs/context.ex" -> "lib/graphql/auth.ex" + "lib/graphql/query_helper.ex" + "lib/graphql/resolve_field.ex" + "lib/graphql/resolve_fields.ex" + "lib/graphql/resolve_page.ex" + "lib/graphql/resolve_page.ex" -> "lib/graphql/graphql.ex" + "lib/graphql/resolve_pages.ex" + "lib/graphql/resolve_root_page.ex" + "lib/graphql/resolve_root_page.ex" -> "lib/graphql/graphql.ex" + "lib/graphql/schema_utils.ex" + "lib/graphql/types/cursor.ex" + "lib/graphql/types/json.ex" + "lib/testing/graphql_assertions.ex" + "lib/web/router.ex" + "lib/web/user_socket.ex" + "lib/acls.ex" + "lib/acls.ex" -> "lib/boundaries.ex" + "lib/boundaries.ex" -> "lib/acls.ex" + "lib/boundaries.ex" -> "lib/controlleds.ex" + "lib/controlleds.ex" -> "lib/acls.ex" + "lib/controlleds.ex" -> "lib/integration.ex" [label="(export)"] + "lib/boundaries.ex" -> "lib/fixtures.ex" + "lib/fixtures.ex" -> "lib/acls.ex" + "lib/fixtures.ex" -> "lib/circles.ex" + "lib/circles.ex" -> "lib/fixtures.ex" + "lib/circles.ex" -> "lib/integration.ex" [label="(export)"] + "lib/circles.ex" -> "lib/queries.ex" [label="(compile)"] + "lib/queries.ex" -> "lib/circles.ex" + "lib/queries.ex" -> "lib/summary.ex" + "lib/queries.ex" -> "lib/verbs.ex" + "lib/verbs.ex" -> "lib/integration.ex" [label="(export)"] + "lib/fixtures.ex" -> "lib/controlleds.ex" + "lib/fixtures.ex" -> "lib/grants.ex" + "lib/grants.ex" -> "lib/circles.ex" + "lib/grants.ex" -> "lib/integration.ex" [label="(export)"] + "lib/grants.ex" -> "lib/queries.ex" [label="(compile)"] + "lib/fixtures.ex" -> "lib/integration.ex" [label="(export)"] + "lib/fixtures.ex" -> "lib/verbs.ex" + "lib/boundaries.ex" -> "lib/integration.ex" [label="(export)"] + "lib/boundaries.ex" -> "lib/queries.ex" [label="(compile)"] + "lib/acls.ex" -> "lib/fixtures.ex" + "lib/acls.ex" -> "lib/integration.ex" [label="(export)"] + "lib/acls.ex" -> "lib/queries.ex" [label="(compile)"] + "lib/acls.ex" -> "lib/stereotyped.ex" + "lib/acls.ex" -> "lib/verbs.ex" + "lib/blocks.ex" + "lib/blocks.ex" -> "lib/circles.ex" + "lib/blocks.ex" -> "lib/integration.ex" [label="(export)"] + "lib/boundaries.ex" + "lib/circles.ex" + "lib/controlleds.ex" + "lib/debug.ex" + "lib/debug.ex" -> "lib/acls.ex" + "lib/debug.ex" -> "lib/boundaries.ex" + "lib/debug.ex" -> "lib/circles.ex" + "lib/debug.ex" -> "lib/integration.ex" [label="(export)"] + "lib/debug.ex" -> "lib/summary.ex" + "lib/debug.ex" -> "lib/verbs.ex" + "lib/fixtures.ex" + "lib/grants.ex" + "lib/integration.ex" + "lib/migrations.ex" + "lib/queries.ex" + "lib/runtime_config.ex" + "lib/stereotyped.ex" + "lib/summary.ex" + "lib/users.ex" + "lib/users.ex" -> "lib/acls.ex" + "lib/users.ex" -> "lib/boundaries.ex" + "lib/users.ex" -> "lib/circles.ex" + "lib/users.ex" -> "lib/integration.ex" [label="(export)"] + "lib/users.ex" -> "lib/stereotyped.ex" + "lib/users.ex" -> "lib/verbs.ex" + "lib/verbs.ex" + "lib/web/boundaries_routes.ex" + "lib/web/components/acls/acl_live.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/acls.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/boundaries.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/circles.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/fixtures.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/grants.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/integration.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/verbs.ex" + "lib/web/components/acls/acl_live.ex" -> "lib/web/components/circles/circle_live.ex" [label="(export)"] + "lib/web/components/circles/circle_live.ex" -> "lib/circles.ex" + "lib/web/components/circles/circle_live.ex" -> "lib/web/live_handler.ex" + "lib/web/live_handler.ex" -> "lib/acls.ex" + "lib/web/live_handler.ex" -> "lib/blocks.ex" + "lib/web/live_handler.ex" -> "lib/boundaries.ex" + "lib/web/live_handler.ex" -> "lib/circles.ex" + "lib/web/live_handler.ex" -> "lib/controlleds.ex" + "lib/web/live_handler.ex" -> "lib/fixtures.ex" + "lib/web/live_handler.ex" -> "lib/grants.ex" + "lib/web/live_handler.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web/components/acls/acl_live.ex" -> "lib/web/components/circles/new_circle_live.ex" [label="(export)"] + "lib/web/components/acls/acl_live.ex" -> "lib/web/live_handler.ex" + "lib/web/components/acls/my_acls_live.ex" + "lib/web/components/acls/my_acls_live.ex" -> "lib/acls.ex" + "lib/web/components/acls/my_acls_live.ex" -> "lib/boundaries.ex" + "lib/web/components/acls/my_acls_live.ex" -> "lib/fixtures.ex" + "lib/web/components/acls/my_acls_live.ex" -> "lib/integration.ex" + "lib/web/components/acls/my_acls_live.ex" -> "lib/verbs.ex" + "lib/web/components/acls/my_acls_live.ex" -> "lib/web/components/acls/acl_live.ex" [label="(export)"] + "lib/web/components/acls/my_acls_live.ex" -> "lib/web/components/acls/new_acl_live.ex" [label="(export)"] + "lib/web/components/acls/new_acl_live.ex" + "lib/web/components/block/block_button_live.ex" + "lib/web/components/block/block_button_live.ex" -> "lib/boundaries.ex" + "lib/web/components/block/block_menu_buttons_live.ex" + "lib/web/components/block/block_menu_buttons_live.ex" -> "lib/web/components/block/block_button_live.ex" [label="(export)"] + "lib/web/components/blocks/blocks_live.ex" + "lib/web/components/blocks/blocks_live.ex" -> "lib/blocks.ex" + "lib/web/components/blocks/blocks_live.ex" -> "lib/boundaries.ex" + "lib/web/components/blocks/blocks_live.ex" -> "lib/integration.ex" + "lib/web/components/blocks/blocks_live.ex" -> "lib/web/components/block/block_button_live.ex" [label="(export)"] + "lib/web/components/check/if_can_live.ex" + "lib/web/components/check/if_can_live.ex" -> "lib/web/live_handler.ex" + "lib/web/components/circles/circle_live.ex" + "lib/web/components/circles/circle_preview_live.ex" + "lib/web/components/circles/drag_drop_WIP/edit_circle_live.ex" + "lib/web/components/circles/drag_drop_WIP/edit_circle_live.ex" -> "lib/circles.ex" + "lib/web/components/circles/my_circles_live.ex" + "lib/web/components/circles/my_circles_live.ex" -> "lib/boundaries.ex" + "lib/web/components/circles/my_circles_live.ex" -> "lib/circles.ex" + "lib/web/components/circles/my_circles_live.ex" -> "lib/fixtures.ex" + "lib/web/components/circles/my_circles_live.ex" -> "lib/integration.ex" + "lib/web/components/circles/my_circles_live.ex" -> "lib/web/components/circles/circle_preview_live.ex" [label="(export)"] + "lib/web/components/circles/my_circles_live.ex" -> "lib/web/components/circles/new_circle_live.ex" [label="(export)"] + "lib/web/components/circles/my_circles_live.ex" -> "lib/web/live_handler.ex" + "lib/web/components/circles/new_circle_live.ex" + "lib/web/components/display/boundary_icon_live.ex" + "lib/web/components/display/boundary_icon_live.ex" -> "lib/boundaries.ex" + "lib/web/components/display/boundary_icon_live.ex" -> "lib/web/live_handler.ex" + "lib/web/components/roles/roles_live.ex" + "lib/web/components/set/boundaries_info_live.ex" + "lib/web/components/set/boundaries_list_live.ex" + "lib/web/components/set/boundaries_list_live.ex" -> "lib/web/components/acls/my_acls_live.ex" [label="(export)"] + "lib/web/components/set/boundaries_selection_live.ex" + "lib/web/components/set/old/boundaries_dropdown_live.ex" + "lib/web/components/set/set_boundaries_live.ex" + "lib/web/components/set/set_boundaries_live.ex" -> "lib/web/components/set/boundaries_list_live.ex" [label="(export)"] + "lib/web/components/set/set_boundaries_live.ex" -> "lib/web/components/set/boundaries_selection_live.ex" [label="(export)"] + "lib/web/components/sidebar/sidebar_live.ex" + "lib/web/components/sidebar/sidebar_live.ex" -> "lib/web/components/sidebar/sidebar_mobile_live.ex" [label="(export)"] + "lib/web/components/sidebar/sidebar_mobile_live.ex" -> "lib/web/components/sidebar/sidebar_nav_live.ex" [label="(export)"] + "lib/web/components/sidebar/sidebar_nav_live.ex" -> "lib/boundaries.ex" + "lib/web/components/sidebar/sidebar_nav_live.ex" -> "lib/fixtures.ex" + "lib/web/components/sidebar/sidebar_live.ex" -> "lib/web/components/sidebar/sidebar_nav_live.ex" [label="(export)"] + "lib/web/components/sidebar/sidebar_mobile_live.ex" + "lib/web/components/sidebar/sidebar_nav_live.ex" + "lib/web/live_handler.ex" + "lib/web/views/boundaries_live.ex" + "lib/web/views/boundaries_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web/views/boundaries_live.ex" -> "lib/web/components/acls/acl_live.ex" + "lib/web/views/boundaries_live.ex" -> "lib/web/components/acls/my_acls_live.ex" + "lib/web/views/boundaries_live.ex" -> "lib/web/components/blocks/blocks_live.ex" [label="(export)"] + "lib/web/views/boundaries_live.ex" -> "lib/web/components/circles/circle_live.ex" + "lib/web/views/boundaries_live.ex" -> "lib/web/components/circles/my_circles_live.ex" + "lib/web/components/bookmarked/bookmarked_live.ex" + "lib/web/components/create_intent/create_intent_live.ex" + "lib/web/components/create_intent/create_intent_live.ex" -> "lib/integration.ex" + "lib/web/components/discover/discover_live.ex" + "lib/web/components/discover/discover_live.ex" -> "lib/web/components/intent/intent_live.ex" [label="(export)"] + "lib/web/components/intent/intent_live.ex" + "lib/web/components/my_needs/my_needs_live.ex" + "lib/web/components/my_needs/my_needs_live.ex" -> "lib/web/components/intent/intent_live.ex" [label="(export)"] + "lib/web/components/my_offers/my_offers_live.ex" + "lib/web/components/my_offers/my_offers_live.ex" -> "lib/web/components/intent/intent_live.ex" [label="(export)"] + "lib/web/components/nav/main_navigation/main_navigation_live.ex" + "lib/web/components/nav/sidebar_deprecated/sidebar_live.ex" + "lib/web/components/nav/sidebar_deprecated/sidebar_live.ex" -> "lib/web/pages/map_live.ex" + "lib/web/pages/home/home_live.ex" + "lib/web/pages/home/home_live.ex" -> "lib/web/components/bookmarked/bookmarked_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/create_intent/create_intent_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/discover/discover_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/my_needs/my_needs_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/my_offers/my_offers_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/nav/main_navigation/main_navigation_live.ex" [label="(export)"] + "lib/web/pages/intent/intent_live.ex" + "lib/web/pages/intent/intent_live.ex" -> "lib/web/pages/intent/matches_live.ex" [label="(export)"] + "lib/web/pages/intent/matches_live.ex" + "lib/web/pages/map_live.ex" + "lib/web/routes.ex" + "lib/categories.ex" + "lib/categories.ex" -> "lib/category.ex" [label="(export)"] + "lib/category.ex" -> "lib/categories.ex" + "lib/category.ex" -> "lib/category_queries.ex" + "lib/category_queries.ex" -> "lib/category.ex" + "lib/categories.ex" -> "lib/category_queries.ex" + "lib/categories.ex" -> "lib/classify.ex" [label="(export)"] + "lib/category.ex" + "lib/category_queries.ex" + "lib/classify.ex" + "lib/graphql/resolver.ex" + "lib/graphql/resolver.ex" -> "lib/categories.ex" + "lib/graphql/resolver.ex" -> "lib/category.ex" [label="(export)"] + "lib/graphql/resolver.ex" -> "lib/category_queries.ex" + "lib/graphql/schema.ex" + "lib/graphql/schema.ex" -> "lib/graphql/resolver.ex" + "lib/migrations.ex" -> "lib/category.ex" + "lib/testing/simulate.ex" + "lib/testing/simulate.ex" -> "lib/categories.ex" + "lib/web/components/category_header_aside/category_header_aside_live.ex" + "lib/web/components/category_header_aside/category_header_aside_live.ex" -> "lib/classify.ex" [label="(export)"] + "lib/web/components/category_header_aside/category_header_aside_live.ex" -> "lib/web/components/create/new_category_live.ex" + "lib/web/components/create/new_category_live.ex" + "lib/web/components/create/new_label_live.ex" + "lib/web/components/create/new_label_live.ex" -> "lib/web/pages/labels/labels_live.ex" + "lib/web/pages/labels/labels_live.ex" -> "lib/categories.ex" + "lib/web/pages/labels/labels_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/pages/labels/labels_live.ex" -> "lib/web/components/category_header_aside/category_header_aside_live.ex" + "lib/web/pages/labels/labels_live.ex" -> "lib/web/components/hero/category_hero_live.ex" [label="(export)"] + "lib/web/components/hero/category_hero_live.ex" -> "lib/classify.ex" [label="(export)"] + "lib/web/components/hero/category_hero_live.ex" -> "lib/web/components/category_header_aside/category_header_aside_live.ex" [label="(export)"] + "lib/web/components/header/category_header_live.ex" + "lib/web/components/header/category_header_live.ex" -> "lib/web/components/taxonomy/breadcrumbs_items_live.ex" [label="(export)"] + "lib/web/components/header/topics_subheader/topics_subheader_live.ex" + "lib/web/components/header/topics_subheader/topics_subheader_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/components/hero/category_hero_live.ex" + "lib/web/components/modal/tag_modal_live.ex" + "lib/web/components/nav/categories_nav_live.ex" + "lib/web/components/nav/categories_nav_live.ex" -> "lib/category.ex" + "lib/web/components/nav/categories_sidebar_live.ex" + "lib/web/components/nav/topics_nav/topics_nav_live.ex" + "lib/web/components/nav/topics_nav/topics_nav_live.ex" -> "lib/category.ex" + "lib/web/components/old/category_preview_live.ex" + "lib/web/components/old/create_category/new_category_live.ex" + "lib/web/components/old/create_category/new_category_live.ex" -> "lib/categories.ex" + "lib/web/components/old/instance_categories_live.ex" + "lib/web/components/old/instance_categories_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/components/old/instance_categories_live.ex" -> "lib/web/components/old/category_preview_live.ex" + "lib/web/components/old/subcategories_live.ex" + "lib/web/components/old/subcategories_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/components/old/subcategories_live.ex" -> "lib/web/components/old/category_preview_live.ex" + "lib/web/components/settings/settings_live.ex" + "lib/web/components/settings/settings_live.ex" -> "lib/classify.ex" + "lib/web/components/taxonomy/breadcrumbs_items_live.ex" + "lib/web/components/taxonomy/breadcrumbs_live.ex" + "lib/web/components/taxonomy/breadcrumbs_live.ex" -> "lib/web/components/taxonomy/breadcrumbs_items_live.ex" [label="(export)"] + "lib/web/components/taxonomy/subcategory_badges_live.ex" + "lib/web/components/topic/topic_live.ex" + "lib/web/components/widgets/widget_subtopics/widget_subtopics_live.ex" + "lib/web/live_handler.ex" -> "lib/categories.ex" + "lib/web/live_handler.ex" -> "lib/category.ex" + "lib/web/pages/categories/categories_live.ex" + "lib/web/pages/categories/categories_live.ex" -> "lib/category.ex" + "lib/web/pages/categories/categories_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/pages/categories/categories_live.ex" -> "lib/web/components/nav/topics_nav/topics_nav_live.ex" [label="(export)"] + "lib/web/pages/category/category_live.ex" + "lib/web/pages/category/category_live.ex" -> "lib/categories.ex" + "lib/web/pages/category/category_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/pages/category/category_live.ex" -> "lib/web/components/hero/category_hero_live.ex" [label="(export)"] + "lib/web/pages/category/category_live.ex" -> "lib/web/components/nav/topics_nav/topics_nav_live.ex" [label="(export)"] + "lib/web/pages/category/category_live.ex" -> "lib/web/pages/labels/labels_live.ex" + "lib/web/pages/labels/labels_live.ex" + "lib/web/pages/old/categories_list_live.ex" + "lib/web/pages/old/categories_list_live.ex" -> "lib/web/components/old/create_category/new_category_live.ex" + "lib/web/pages/old/categories_list_live.ex" -> "lib/web/components/old/instance_categories_live.ex" + "lib/web/pages/old/local/local_categories_live.ex" + "lib/web/pages/old/local/local_categories_live.ex" -> "lib/category.ex" + "lib/web/pages/old/local/local_categories_live.ex" -> "lib/graphql/resolver.ex" + "lib/web/pages/old/remote/remote_categories_live.ex" + "lib/web/pages/old/remote/remote_categories_live.ex" -> "lib/category.ex" + "lib/web/pages/old/remote/remote_categories_live.ex" -> "lib/graphql/resolver.ex" + "lib/cache.ex" + "lib/cache.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/localise/gettext.ex" -> "lib/modularity/cdlr.ex" [label="(compile)"] + "lib/localise/gettext.ex" -> "lib/modularity/config.ex" [label="(compile)"] + "lib/modularity/config.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extend.ex" -> "lib/modularity/config.ex" + "lib/modularity/extend.ex" -> "lib/utils.ex" + "lib/utils.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/utils.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/utils.ex" -> "lib/modularity/types.ex" + "lib/modularity/types.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/types.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/types.ex" -> "lib/modularity/extension_behaviours/schema_module.ex" + "lib/modularity/extension_behaviours/schema_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/schema_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/schema_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviour.ex" -> "lib/modularity/config.ex" + "lib/modularity/extension_behaviour.ex" -> "lib/utils.ex" + "lib/modularity/extension_behaviours/schema_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/uris.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/uris.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/uris.ex" -> "lib/modularity/types.ex" + "lib/uris.ex" -> "lib/pointers/pointers.ex" + "lib/pointers/pointers.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/pointers/pointers.ex" -> "lib/modularity/extend.ex" [label="(compile)"] + "lib/pointers/pointers.ex" -> "lib/modularity/extension_behaviours/context_module.ex" + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/modularity/extension_behaviours/schema_module.ex" + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/modularity/types.ex" + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/context_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/pointers/pointers.ex" -> "lib/modularity/extension_behaviours/query_module.ex" + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/modularity/extension_behaviours/context_module.ex" + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/modularity/extension_behaviours/schema_module.ex" + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/query_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/pointers/pointers.ex" -> "lib/pointers/pointers_queries.ex" + "lib/pointers/pointers_queries.ex" -> "lib/modularity/extension_behaviours/query_module.ex" [label="(compile)"] + "lib/pointers/pointers_queries.ex" -> "lib/utils.ex" + "lib/pointers/pointers.ex" -> "lib/pointers/tables.ex" + "lib/pointers/tables.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/pointers/tables.ex" -> "lib/pointers/tables_queries.ex" + "lib/pointers/tables.ex" -> "lib/utils.ex" + "lib/pointers/pointers.ex" -> "lib/utils.ex" + "lib/uris.ex" -> "lib/utils.ex" + "lib/modularity/extension_behaviours/schema_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/types.ex" -> "lib/pointers/pointers.ex" + "lib/modularity/types.ex" -> "lib/text.ex" + "lib/text.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/text.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/text.ex" -> "lib/uris.ex" [label="(export)"] + "lib/text.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/types.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/types.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/config.ex" -> "lib/utils.ex" + "lib/localise/gettext.ex" -> "lib/modularity/extend.ex" + "lib/cache.ex" -> "lib/modularity/config.ex" + "lib/cache.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/cache.ex" -> "lib/uris.ex" [label="(export)"] + "lib/cache.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/date_times.ex" + "lib/enums.ex" + "lib/http/connection.ex" + "lib/http/connection.ex" -> "lib/modularity/config.ex" + "lib/http/http.ex" + "lib/http/http.ex" -> "lib/cache.ex" + "lib/http/http.ex" -> "lib/http/connection.ex" + "lib/http/http.ex" -> "lib/http/request_builder.ex" + "lib/http/request_builder.ex" + "lib/localise/gettext.ex" + "lib/localise/localise.ex" + "lib/localise/localise.ex" -> "lib/localise/gettext.ex" + "lib/localise/localise.ex" -> "lib/modularity/cdlr.ex" + "lib/localise/localise.ex" -> "lib/modularity/config.ex" + "lib/localise/localise.ex" -> "lib/utils.ex" + "lib/mix_tasks/import2alias.ex" + "lib/modularity/cdlr.ex" + "lib/modularity/changelog_github_datagrabber.ex" + "lib/modularity/changelog_github_datagrabber.ex" -> "lib/modularity/config.ex" + "lib/modularity/changelog_github_datagrabber.ex" -> "lib/modularity/extend.ex" [label="(compile)"] + "lib/modularity/changelog_github_datagrabber.ex" -> "lib/utils.ex" + "lib/modularity/config.ex" + "lib/modularity/declare_helpers.ex" + "lib/modularity/declare_helpers.ex" -> "lib/uris.ex" + "lib/modularity/extend.ex" + "lib/modularity/extension_behaviour.ex" + "lib/modularity/extension_behaviours/config_module.ex" + "lib/modularity/extension_behaviours/config_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/config_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/config_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/config_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/config_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/context_module.ex" + "lib/modularity/extension_behaviours/extension_module.ex" + "lib/modularity/extension_behaviours/extension_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/extension_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/extension_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/extension_module.ex" -> "lib/modularity/extension_behaviours/nav_module.ex" + "lib/modularity/extension_behaviours/nav_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/nav_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/nav_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/nav_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/nav_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/extension_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/extension_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/nav_module.ex" + "lib/modularity/extension_behaviours/query_module.ex" + "lib/modularity/extension_behaviours/schema_module.ex" + "lib/modularity/extension_behaviours/settings_module.ex" + "lib/modularity/extension_behaviours/settings_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/settings_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/settings_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/settings_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/settings_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/widget_module.ex" + "lib/modularity/extension_behaviours/widget_module.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/extension_behaviours/widget_module.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/extension_behaviours/widget_module.ex" -> "lib/modularity/extension_behaviour.ex" [label="(compile)"] + "lib/modularity/extension_behaviours/widget_module.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/extension_behaviours/widget_module.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/extension_diff.ex" + "lib/modularity/extension_diff.ex" -> "lib/modularity/config.ex" + "lib/modularity/extensions.ex" + "lib/modularity/extensions.ex" -> "lib/modularity/extend.ex" + "lib/modularity/extensions.ex" -> "lib/utils.ex" + "lib/modularity/load_extensions_config.ex" + "lib/modularity/load_extensions_config.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/load_extensions_config.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/load_extensions_config.ex" -> "lib/modularity/extension_behaviours/config_module.ex" + "lib/modularity/load_extensions_config.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/load_extensions_config.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/startup_timer.ex" + "lib/modularity/test_interactive.ex" + "lib/modularity/test_interactive.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/modularity/test_interactive.ex" -> "lib/runtime_config.ex" + "lib/runtime_config.ex" -> "lib/modularity/config.ex" + "lib/runtime_config.ex" -> "lib/modularity/extension_behaviours/config_module.ex" [label="(compile)"] + "lib/modularity/test_summary.ex" + "lib/modularity/test_summary.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/modularity/test_summary.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/modularity/test_summary.ex" -> "lib/uris.ex" [label="(export)"] + "lib/modularity/test_summary.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/modularity/types.ex" + "lib/pointers/pointers.ex" + "lib/pointers/pointers_preload.ex" + "lib/pointers/pointers_preload.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/pointers/pointers_preload.ex" -> "lib/pointers/pointers.ex" + "lib/pointers/pointers_preload.ex" -> "lib/utils.ex" + "lib/pointers/pointers_queries.ex" + "lib/pointers/tables.ex" + "lib/pointers/tables_queries.ex" + "lib/repo/common.ex" + "lib/repo/delete.ex" + "lib/repo/delete.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/repo/delete.ex" -> "lib/modularity/config.ex" [label="(export)"] + "lib/repo/delete.ex" -> "lib/modularity/extend.ex" [label="(export)"] + "lib/repo/delete.ex" -> "lib/pointers/pointers.ex" + "lib/repo/delete.ex" -> "lib/uris.ex" [label="(export)"] + "lib/repo/delete.ex" -> "lib/utils.ex" [label="(compile)"] + "lib/repo/preload.ex" + "lib/repo/preload.ex" -> "lib/cache.ex" + "lib/repo/preload.ex" -> "lib/modularity/config.ex" [label="(compile)"] + "lib/repo/preload.ex" -> "lib/modularity/types.ex" + "lib/repo/preload.ex" -> "lib/pointers/pointers.ex" + "lib/repo/preload.ex" -> "lib/pointers/pointers_preload.ex" + "lib/repo/preload.ex" -> "lib/utils.ex" + "lib/repo/repo.ex" + "lib/repo/repo.ex" -> "lib/modularity/config.ex" [label="(compile)"] + "lib/repo/repo.ex" -> "lib/repo/preload.ex" + "lib/repo/repo.ex" -> "lib/repo/repo_template.ex" [label="(compile)"] + "lib/repo/repo.ex" -> "lib/utils.ex" + "lib/repo/repo_template.ex" + "lib/repo/test_instance_repo.ex" + "lib/repo/test_instance_repo.ex" -> "lib/modularity/config.ex" [label="(compile)"] + "lib/repo/test_instance_repo.ex" -> "lib/repo/preload.ex" + "lib/repo/test_instance_repo.ex" -> "lib/repo/repo_template.ex" [label="(compile)"] + "lib/repo/test_instance_repo.ex" -> "lib/utils.ex" + "lib/simulation.ex" + "lib/simulation.ex" -> "lib/localise/gettext.ex" [label="(export)"] + "lib/simulation.ex" -> "lib/localise/localise.ex" [label="(compile)"] + "lib/text.ex" + "lib/uris.ex" + "lib/utils.ex" + "lib/access.ex" + "lib/access.ex" -> "lib/grant.ex" + "lib/grant.ex" -> "lib/acl.ex" + "lib/acl.ex" -> "lib/controlled.ex" + "lib/controlled.ex" -> "lib/acl.ex" + "lib/acl.ex" -> "lib/grant.ex" + "lib/grant.ex" -> "lib/verb.ex" + "lib/access.ex" -> "lib/verb.ex" + "lib/accesses.ex" + "lib/accesses.ex" -> "lib/access.ex" [label="(export)"] + "lib/acl.ex" + "lib/circle.ex" + "lib/circle.ex" -> "lib/encircle.ex" + "lib/controlled.ex" + "lib/encircle.ex" + "lib/grant.ex" + "lib/instance_admin.ex" + "lib/verb.ex" + "lib/actor.ex" + "lib/peer.ex" + "lib/peer.ex" -> "lib/peered.ex" + "lib/peered.ex" -> "lib/peer.ex" + "lib/peered.ex" + "lib/ranked.ex" + "lib/edge.ex" + "lib/edge_total.ex" + "lib/edge_total.ex" -> "lib/edge.ex" [label="(compile)"] + "lib/migration.ex" + "lib/migration.ex" -> "lib/edge.ex" [label="(compile)"] + "lib/migration.ex" -> "lib/edge_total.ex" [label="(compile)"] + "lib/account.ex" + "lib/account.ex" -> "lib/accounted.ex" + "lib/accounted.ex" -> "lib/account.ex" + "lib/accounted.ex" + "lib/auth_credential.ex" + "lib/auth_second_factor.ex" + "lib/care_closure.ex" + "lib/care_closure.ex" -> "lib/caretaker.ex" [label="(compile)"] + "lib/caretaker.ex" + "lib/character.ex" + "lib/character.ex" -> "lib/caretaker.ex" [label="(export)"] + "lib/email.ex" + "lib/extra_info.ex" + "lib/named.ex" + "lib/self.ex" + "lib/settings.ex" + "lib/user.ex" + "lib/shared_user.ex" + "lib/activity.ex" + "lib/ap_activity.ex" + "lib/block.ex" + "lib/bookmark.ex" + "lib/boost.ex" + "lib/created.ex" + "lib/feed.ex" + "lib/feed.ex" -> "lib/feed_publish.ex" + "lib/feed_publish.ex" + "lib/flag.ex" + "lib/follow.ex" + "lib/inbox.ex" + "lib/inbox.ex" -> "lib/feed.ex" + "lib/like.ex" + "lib/message.ex" + "lib/pin.ex" + "lib/post.ex" + "lib/post_content.ex" + "lib/profile.ex" + "lib/replied.ex" + "lib/request.ex" + "lib/see.ex" + "lib/acts/begin.ex" + "lib/acts/begin.ex" -> "lib/acts/commit.ex" + "lib/acts/commit.ex" + "lib/acts/delete.ex" + "lib/acts/delete.ex" -> "lib/acts/work.ex" + "lib/acts/work.ex" -> "lib/acts/delete.ex" + "lib/acts/work.ex" + "lib/bonfire_ecto.ex" + "lib/web/ck.ex" + "lib/web/text_area.ex" + "lib/web/quill.ex" + "lib/fake.ex" + "lib/live_secret/expiration.ex" + "lib/live_secret/expiration.ex" -> "lib/live_secret/pubsub.ex" + "lib/live_secret/pubsub.ex" -> "lib/live_secret/secret.ex" + "lib/live_secret/secret.ex" -> "lib/live_secret/presecret.ex" + "lib/live_secret/presecret.ex" -> "lib/live_secret/operational_key.ex" + "lib/live_secret/secret.ex" -> "lib/live_secret/pubsub.ex" + "lib/live_secret/expiration.ex" -> "lib/live_secret/secret.ex" [label="(export)"] + "lib/live_secret/operational_key.ex" + "lib/live_secret/presecret.ex" + "lib/live_secret/pubsub.ex" + "lib/live_secret/secret.ex" + "lib/web/components/secret_form_live.ex" + "lib/web/live_handler.ex" -> "lib/live_secret/presecret.ex" + "lib/web/live_handler.ex" -> "lib/live_secret/pubsub.ex" + "lib/web/live_handler.ex" -> "lib/live_secret/secret.ex" [label="(export)"] + "lib/web/page_live.ex" + "lib/web/page_live.ex" -> "lib/live_secret/presecret.ex" + "lib/web/page_live.ex" -> "lib/live_secret/secret.ex" [label="(export)"] + "lib/web/page_live.ex" -> "lib/web/components/secret_form_live.ex" + "lib/web/page_live.ex" -> "lib/web/live_handler.ex" + "lib/web/static.ex" + "lib/act.ex" + "lib/debug.ex" -> "lib/act.ex" [label="(export)"] + "lib/debug.ex" -> "lib/epic.ex" [label="(export)"] + "lib/epic.ex" -> "lib/act.ex" [label="(export)"] + "lib/epic.ex" -> "lib/error.ex" [label="(export)"] + "lib/epic.ex" + "lib/epics.ex" + "lib/error.ex" + "lib/test.ex" + "lib/test.ex" -> "lib/epic.ex" [label="(export)"] + "lib/test.ex" -> "lib/error.ex" [label="(export)"] + "lib/web/components/hello_live.ex" + "lib/web/views/home_live.ex" + "lib/web/views/home_live.ex" -> "lib/web/components/hello_live.ex" [label="(export)"] + "lib/auth.ex" + "lib/auth.ex" -> "lib/fail.ex" + "lib/fail.ex" + "lib/adapter/adapter.ex" + "lib/adapter/adapter.ex" -> "lib/adapter/adapter_utils.ex" [label="(export)"] + "lib/adapter/adapter_utils.ex" -> "lib/adapter/adapter.ex" + "lib/adapter/adapter_utils.ex" -> "lib/federation_modules.ex" + "lib/adapter/adapter_utils.ex" -> "lib/integration.ex" [label="(export)"] + "lib/adapter/adapter_utils.ex" -> "lib/peer/instances.ex" + "lib/peer/instances.ex" -> "lib/integration.ex" [label="(export)"] + "lib/adapter/adapter.ex" -> "lib/adapter/incoming.ex" + "lib/adapter/incoming.ex" -> "lib/adapter/adapter.ex" + "lib/adapter/incoming.ex" -> "lib/adapter/adapter_utils.ex" [label="(export)"] + "lib/adapter/incoming.ex" -> "lib/federation_modules.ex" + "lib/adapter/incoming.ex" -> "lib/integration.ex" [label="(export)"] + "lib/adapter/incoming.ex" -> "lib/peer/peered.ex" + "lib/peer/peered.ex" -> "lib/integration.ex" [label="(export)"] + "lib/peer/peered.ex" -> "lib/peer/instances.ex" + "lib/adapter/adapter.ex" -> "lib/adapter/outgoing.ex" + "lib/adapter/outgoing.ex" -> "lib/adapter/adapter_utils.ex" + "lib/adapter/outgoing.ex" -> "lib/federation_modules.ex" + "lib/adapter/outgoing.ex" -> "lib/integration.ex" [label="(export)"] + "lib/adapter/adapter.ex" -> "lib/integration.ex" [label="(export)"] + "lib/adapter/adapter_utils.ex" + "lib/adapter/incoming.ex" + "lib/adapter/nodeinfo_adapter.ex" + "lib/adapter/outgoing.ex" + "lib/boundaries/boundaries_mrf.ex" + "lib/boundaries/boundaries_mrf.ex" -> "lib/peer/peered.ex" + "lib/federation_modules.ex" + "lib/peer/instances.ex" + "lib/peer/peered.ex" + "lib/testing/simulate.ex" -> "lib/adapter/adapter.ex" + "lib/blurred.ex" + "lib/blurred.ex" -> "lib/image_edit.ex" + "lib/image_edit.ex" -> "lib/files.ex" + "lib/files.ex" -> "lib/definitions/document_uploader.ex" + "lib/definitions/document_uploader.ex" -> "lib/blurred.ex" + "lib/definitions/document_uploader.ex" -> "lib/definition.ex" [label="(compile)"] + "lib/definitions/document_uploader.ex" -> "lib/files.ex" + "lib/files.ex" -> "lib/definitions/image_uploader.ex" + "lib/definitions/image_uploader.ex" -> "lib/blurred.ex" + "lib/definitions/image_uploader.ex" -> "lib/definition.ex" [label="(compile)"] + "lib/definitions/image_uploader.ex" -> "lib/files.ex" + "lib/definitions/image_uploader.ex" -> "lib/image_edit.ex" + "lib/files.ex" -> "lib/file_denied.ex" + "lib/files.ex" -> "lib/media.ex" [label="(export)"] + "lib/media.ex" -> "lib/media_queries.ex" + "lib/media_queries.ex" -> "lib/media.ex" + "lib/definition.ex" + "lib/definitions/banner_uploader.ex" + "lib/definitions/banner_uploader.ex" -> "lib/blurred.ex" + "lib/definitions/banner_uploader.ex" -> "lib/definition.ex" [label="(compile)"] + "lib/definitions/banner_uploader.ex" -> "lib/files.ex" + "lib/definitions/banner_uploader.ex" -> "lib/image_edit.ex" + "lib/definitions/document_uploader.ex" + "lib/definitions/favicon_store.ex" + "lib/definitions/favicon_store.ex" -> "lib/blurred.ex" + "lib/definitions/favicon_store.ex" -> "lib/definition.ex" [label="(compile)"] + "lib/definitions/favicon_store.ex" -> "lib/files.ex" + "lib/definitions/icon_uploader.ex" + "lib/definitions/icon_uploader.ex" -> "lib/blurred.ex" + "lib/definitions/icon_uploader.ex" -> "lib/definition.ex" [label="(compile)"] + "lib/definitions/icon_uploader.ex" -> "lib/files.ex" + "lib/definitions/icon_uploader.ex" -> "lib/image_edit.ex" + "lib/definitions/image_uploader.ex" + "lib/file_denied.ex" + "lib/files.ex" + "lib/files_migrations.ex" + "lib/files_migrations.ex" -> "lib/files.ex" [label="(compile)"] + "lib/graphql.ex" + "lib/graphql.ex" -> "lib/definitions/document_uploader.ex" + "lib/graphql.ex" -> "lib/definitions/icon_uploader.ex" + "lib/graphql.ex" -> "lib/definitions/image_uploader.ex" + "lib/graphql.ex" -> "lib/files.ex" + "lib/image_edit.ex" + "lib/media.ex" + "lib/media_queries.ex" + "lib/runtime_config.ex" -> "lib/definitions/document_uploader.ex" + "lib/runtime_config.ex" -> "lib/definitions/icon_uploader.ex" + "lib/runtime_config.ex" -> "lib/definitions/image_uploader.ex" + "lib/geocode.ex" + "lib/geolocation.ex" + "lib/geolocation.ex" -> "lib/geolocation_queries.ex" + "lib/geolocation_queries.ex" -> "lib/geolocation.ex" + "lib/geolocation.ex" -> "lib/geolocations.ex" + "lib/geolocations.ex" -> "lib/geocode.ex" + "lib/geolocations.ex" -> "lib/geolocation.ex" [label="(export)"] + "lib/geolocations.ex" -> "lib/geolocation_queries.ex" + "lib/geolocation_queries.ex" + "lib/geolocations.ex" + "lib/graphql.ex" -> "lib/geolocation.ex" + "lib/graphql.ex" -> "lib/geolocation_queries.ex" + "lib/graphql.ex" -> "lib/geolocations.ex" + "lib/graphql.ex" -> "lib/integration.ex" + "lib/hydration.ex" + "lib/hydration.ex" -> "lib/graphql.ex" + "lib/migrations.ex" -> "lib/geolocation.ex" + "lib/places.ex" + "lib/places.ex" -> "lib/geolocations.ex" + "lib/places.ex" -> "lib/graphql.ex" + "lib/testing/simulate.ex" -> "lib/geolocations.ex" + "lib/web/components/map_live.ex" + "lib/web/components/map_live.ex" -> "lib/geolocations.ex" + "lib/web/components/map_live.ex" -> "lib/places.ex" [label="(export)"] + "lib/web/live_handler.ex" -> "lib/geolocations.ex" + "lib/web/pages/gereric_map_live.ex" + "lib/web/pages/gereric_map_live.ex" -> "lib/web/components/map_live.ex" + "lib/invite_link_schema.ex" + "lib/invite_links.ex" + "lib/invite_links.ex" -> "lib/invite_link_schema.ex" [label="(export)"] + "lib/live_handler.ex" + "lib/live_handler.ex" -> "lib/invite_links.ex" + "lib/web/invites_live.ex" + "lib/web/invites_live.ex" -> "lib/invite_links.ex" [label="(export)"] + "lib/checker.ex" + "lib/mailer.ex" + "lib/runtime_config.ex" -> "lib/mailer.ex" + "lib/accounts/accounts.ex" + "lib/accounts/accounts.ex" -> "lib/accounts/change_password_fields.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/accounts/confirm_email_fields.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/accounts/forgot_password_fields.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/accounts/login_fields.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/accounts/queries.ex" + "lib/accounts/queries.ex" -> "lib/integration.ex" [label="(export)"] + "lib/integration.ex" -> "lib/characters.ex" + "lib/characters.ex" -> "lib/integration.ex" [label="(export)"] + "lib/integration.ex" -> "lib/profiles.ex" + "lib/profiles.ex" -> "lib/integration.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/accounts/second_factors.ex" + "lib/accounts/second_factors.ex" -> "lib/integration.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/integration.ex" [label="(export)"] + "lib/accounts/accounts.ex" -> "lib/mails/mails.ex" + "lib/mails/mails.ex" -> "lib/mails/email_view.ex" + "lib/accounts/accounts.ex" -> "lib/users/users.ex" + "lib/users/users.ex" -> "lib/characters.ex" + "lib/users/users.ex" -> "lib/integration.ex" [label="(export)"] + "lib/users/users.ex" -> "lib/profiles.ex" + "lib/users/users.ex" -> "lib/settings/settings.ex" + "lib/settings/settings.ex" -> "lib/users/users.ex" + "lib/users/users.ex" -> "lib/users/shared_users.ex" + "lib/users/shared_users.ex" -> "lib/accounts/accounts.ex" + "lib/users/shared_users.ex" -> "lib/users/users.ex" + "lib/users/users.ex" -> "lib/users/users_queries.ex" + "lib/users/users_queries.ex" -> "lib/integration.ex" [label="(export)"] + "lib/users/users_queries.ex" -> "lib/users/shared_users.ex" + "lib/accounts/change_password_fields.ex" + "lib/accounts/confirm_email_fields.ex" + "lib/accounts/forgot_password_fields.ex" + "lib/accounts/login_fields.ex" + "lib/accounts/queries.ex" + "lib/accounts/second_factors.ex" + "lib/characters.ex" + "lib/mails/email_view.ex" + "lib/mails/mails.ex" + "lib/me_api_graphql.ex" + "lib/me_api_graphql.ex" -> "lib/accounts/accounts.ex" + "lib/me_api_graphql.ex" -> "lib/users/shared_users.ex" + "lib/me_api_graphql.ex" -> "lib/users/users.ex" + "lib/profiles.ex" + "lib/runtime_config.ex" -> "lib/accounts/accounts.ex" + "lib/runtime_config.ex" -> "lib/users/users.ex" + "lib/settings/load_config.ex" + "lib/settings/load_config.ex" -> "lib/settings/settings.ex" + "lib/settings/settings.ex" + "lib/testing/fake.ex" + "lib/testing/fake.ex" -> "lib/accounts/accounts.ex" + "lib/testing/fake.ex" -> "lib/testing/helpers.ex" [label="(export)"] + "lib/testing/fake.ex" -> "lib/users/users.ex" + "lib/testing/helpers.ex" + "lib/users/delete_worker.ex" + "lib/users/delete_worker.ex" -> "lib/integration.ex" [label="(export)"] + "lib/users/shared_users.ex" + "lib/users/users.ex" + "lib/users/users_queries.ex" + "lib/pages/page.create.ex" + "lib/pages/page.create.ex" -> "lib/pages/page.ex" + "lib/pages/page.ex" + "lib/pages/pages.ex" + "lib/pages/pages.ex" -> "lib/pages/page.ex" + "lib/pages/section.ex" + "lib/pages/section.upsert.ex" + "lib/pages/section.upsert.ex" -> "lib/pages/section.ex" [label="(export)"] + "lib/pages/section.upsert.ex" -> "lib/pages/sections.ex" + "lib/pages/sections.ex" -> "lib/pages/pages.ex" + "lib/pages/sections.ex" -> "lib/pages/section.ex" + "lib/pages/sections.ex" + "lib/pages/unused/content.ex" + "lib/pages/unused/content_media.ex" + "lib/pages/unused/content_text.ex" + "lib/runtime_config.ex" -> "lib/pages/page.create.ex" + "lib/runtime_config.ex" -> "lib/pages/pages.ex" + "lib/runtime_config.ex" -> "lib/pages/section.upsert.ex" + "lib/runtime_config.ex" -> "lib/pages/sections.ex" + "lib/web/components/header/pages_header_live.ex" + "lib/web/components/header/pages_header_live.ex" -> "lib/pages/page.ex" + "lib/web/components/header/pages_header_live.ex" -> "lib/pages/pages.ex" + "lib/web/components/page_edit_preview_live.ex" + "lib/web/components/page_edit_preview_live.ex" -> "lib/pages/pages.ex" + "lib/web/components/smart_inputs/create_page_live.ex" + "lib/web/components/smart_inputs/edit_section_live.ex" + "lib/web/components/smart_inputs/edit_section_live.ex" -> "lib/pages/sections.ex" + "lib/web/page_seo.ex" + "lib/web/page_seo.ex" -> "lib/pages/page.ex" + "lib/web/page_seo.ex" -> "lib/pages/pages.ex" + "lib/web/pages_live_handler.ex" + "lib/web/pages_live_handler.ex" -> "lib/pages/page.ex" + "lib/web/pages_live_handler.ex" -> "lib/pages/pages.ex" + "lib/web/pages_live_handler.ex" -> "lib/pages/section.ex" + "lib/web/pages_live_handler.ex" -> "lib/pages/sections.ex" + "lib/web/views/blog_post_live.ex" + "lib/web/views/blog_post_live.ex" -> "lib/web/components/header/pages_header_live.ex" + "lib/web/views/edit_page_live.ex" + "lib/web/views/edit_page_live.ex" -> "lib/pages/pages.ex" + "lib/web/views/edit_page_live.ex" -> "lib/pages/sections.ex" + "lib/web/views/edit_post_live.ex" + "lib/web/views/page_editable_live.ex" + "lib/web/views/page_editable_live.ex" -> "lib/pages/pages.ex" + "lib/web/views/page_editable_live.ex" -> "lib/pages/sections.ex" + "lib/web/views/page_editable_live.ex" -> "lib/web/components/header/pages_header_live.ex" + "lib/web/views/page_live.ex" + "lib/web/views/page_live.ex" -> "lib/pages/pages.ex" + "lib/web/views/page_live.ex" -> "lib/web/components/header/pages_header_live.ex" + "lib/web/views/pages_live.ex" + "lib/web/views/pages_live.ex" -> "lib/pages/page.ex" + "lib/web/views/pages_live.ex" -> "lib/pages/pages.ex" + "lib/web/views/pages_live.ex" -> "lib/web/components/page_edit_preview_live.ex" [label="(export)"] + "lib/hydration.ex" -> "lib/measure/graphql.ex" + "lib/measure/graphql.ex" -> "lib/integration.ex" + "lib/measure/graphql.ex" -> "lib/measure/measure.ex" + "lib/measure/measure.ex" -> "lib/unit/unit.ex" [label="(export)"] + "lib/measure/graphql.ex" -> "lib/measure/measures.ex" + "lib/measure/measures.ex" -> "lib/measure/measure.ex" [label="(export)"] + "lib/measure/measures.ex" -> "lib/measure/queries.ex" + "lib/measure/queries.ex" -> "lib/measure/measure.ex" + "lib/measure/queries.ex" -> "lib/unit/unit.ex" [label="(export)"] + "lib/measure/measures.ex" -> "lib/unit/unit.ex" [label="(export)"] + "lib/measure/measures.ex" -> "lib/unit/units.ex" + "lib/unit/units.ex" -> "lib/unit/queries.ex" + "lib/unit/queries.ex" -> "lib/unit/unit.ex" + "lib/unit/units.ex" -> "lib/unit/unit.ex" [label="(export)"] + "lib/measure/graphql.ex" -> "lib/measure/queries.ex" + "lib/measure/graphql.ex" -> "lib/unit/queries.ex" + "lib/measure/graphql.ex" -> "lib/unit/unit.ex" + "lib/measure/graphql.ex" -> "lib/unit/units.ex" + "lib/hydration.ex" -> "lib/unit/graphql.ex" + "lib/unit/graphql.ex" -> "lib/integration.ex" + "lib/unit/graphql.ex" -> "lib/measure/measures.ex" + "lib/unit/graphql.ex" -> "lib/unit/queries.ex" + "lib/unit/graphql.ex" -> "lib/unit/unit.ex" [label="(export)"] + "lib/unit/graphql.ex" -> "lib/unit/units.ex" + "lib/measure/graphql.ex" + "lib/measure/measure.ex" + "lib/measure/measures.ex" + "lib/measure/queries.ex" + "lib/migrations.ex" -> "lib/measure/measure.ex" + "lib/migrations.ex" -> "lib/unit/unit.ex" + "lib/testing/simulate.ex" -> "lib/measure/measures.ex" + "lib/testing/simulate.ex" -> "lib/unit/units.ex" + "lib/unit/graphql.ex" + "lib/unit/queries.ex" + "lib/unit/unit.ex" + "lib/unit/units.ex" + "lib/web/components/create_event/create_event_form.ex" + "lib/web/components/create_event/create_event_form.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web/components/create_event/create_event_live.ex" + "lib/web/components/create_event/create_event_live.ex" -> "lib/web/components/create_event/create_event_form.ex" + "lib/web/components/create_event/create_event_live.ex" -> "lib/web/pages/create_observation_form.ex" + "lib/web/components/create_observable_property/create_observable_property_form.ex" + "lib/web/components/create_observable_property/create_observable_property_live.ex" + "lib/web/components/create_observable_property/create_observable_property_live.ex" -> "lib/web/components/create_observable_property/create_observable_property_form.ex" + "lib/web/components/create_phenomenon/create_phenomenon_form.ex" + "lib/web/components/create_phenomenon/create_phenomenon_live.ex" + "lib/web/components/create_phenomenon/create_phenomenon_live.ex" -> "lib/web/components/create_phenomenon/create_phenomenon_form.ex" + "lib/web/pages/create_observation_form.ex" + "lib/web/pages/dashboard/recyclapp_dashboard_live.ex" + "lib/web/pages/dashboard/recyclapp_dashboard_live.ex" -> "lib/web/components/create_event/create_event_live.ex" + "lib/web/pages/dashboard/recyclapp_dashboard_live.ex" -> "lib/web/pages/settings/recyclapp_settings_live.ex" + "lib/web/pages/settings/recyclapp_settings_live.ex" -> "lib/web/components/create_observable_property/create_observable_property_live.ex" + "lib/web/pages/settings/recyclapp_settings_live.ex" -> "lib/web/components/create_phenomenon/create_phenomenon_live.ex" + "lib/web/pages/map/map_live.ex" + "lib/web/pages/settings/recyclapp_settings_live.ex" + "lib/web/pages/success/recyclapp_success_live.ex" + "lib/web/pages/success/recyclapp_success_live.ex" -> "lib/web/pages/dashboard/recyclapp_dashboard_live.ex" + "lib/adapters/meili.ex" + "lib/adapters/meili.ex" -> "lib/http.ex" + "lib/dummy_adapter.ex" + "lib/fuzzy.ex" + "lib/fuzzy.ex" -> "lib/search.ex" + "lib/fuzzy.ex" -> "lib/stopwords.ex" + "lib/http.ex" + "lib/indexer.ex" + "lib/indexer.ex" -> "lib/search.ex" [label="(export)"] + "lib/runtime_config.ex" -> "lib/adapters/meili.ex" + "lib/search.ex" + "lib/stopwords.ex" + "lib/web/form_live.ex" + "lib/web/form_live.ex" -> "lib/web/results_live.ex" [label="(export)"] + "lib/web/live_handler.ex" -> "lib/fuzzy.ex" + "lib/web/results_live.ex" + "lib/web/search_live.ex" + "lib/web/search_live.ex" -> "lib/web/form_live.ex" [label="(export)"] + "lib/web/search_live.ex" -> "lib/web/live_handler.ex" + "lib/web/search_live.ex" -> "lib/web/results_live.ex" [label="(export)"] + "lib/web/search_live.ex" -> "lib/web/widgets/filters_search_live.ex" + "lib/web/widgets/filters_search_live.ex" -> "lib/web/form_live.ex" [label="(export)"] + "lib/web/widgets/filters_search_live.ex" + "lib/activities.ex" + "lib/activities.ex" -> "lib/feed_activities.ex" + "lib/feed_activities.ex" -> "lib/activities.ex" + "lib/feed_activities.ex" -> "lib/ap_activities.ex" + "lib/ap_activities.ex" -> "lib/activities.ex" + "lib/ap_activities.ex" -> "lib/objects.ex" + "lib/objects.ex" -> "lib/activities.ex" + "lib/objects.ex" -> "lib/feed_activities.ex" + "lib/objects.ex" -> "lib/feeds.ex" + "lib/feeds.ex" -> "lib/follows.ex" + "lib/follows.ex" -> "lib/activities.ex" + "lib/follows.ex" -> "lib/edges.ex" + "lib/edges.ex" -> "lib/activities.ex" + "lib/edges.ex" -> "lib/feed_activities.ex" + "lib/edges.ex" -> "lib/objects.ex" + "lib/follows.ex" -> "lib/feed_activities.ex" + "lib/follows.ex" -> "lib/integration.ex" + "lib/integration.ex" -> "lib/activities.ex" + "lib/follows.ex" -> "lib/live_push.ex" + "lib/live_push.ex" -> "lib/activities.ex" + "lib/live_push.ex" -> "lib/feed_activities.ex" + "lib/live_push.ex" -> "lib/feeds.ex" + "lib/follows.ex" -> "lib/requests.ex" + "lib/requests.ex" -> "lib/activities.ex" + "lib/requests.ex" -> "lib/edges.ex" + "lib/requests.ex" -> "lib/follows.ex" + "lib/requests.ex" -> "lib/integration.ex" + "lib/feeds.ex" -> "lib/integration.ex" [label="(export)"] + "lib/feeds.ex" -> "lib/objects.ex" + "lib/objects.ex" -> "lib/tags.ex" + "lib/tags.ex" -> "lib/boosts.ex" + "lib/boosts.ex" -> "lib/activities.ex" + "lib/boosts.ex" -> "lib/edges.ex" + "lib/boosts.ex" -> "lib/feeds.ex" + "lib/boosts.ex" -> "lib/integration.ex" + "lib/boosts.ex" -> "lib/live_push.ex" + "lib/boosts.ex" -> "lib/objects.ex" + "lib/tags.ex" -> "lib/feed_activities.ex" + "lib/objects.ex" -> "lib/threads.ex" + "lib/threads.ex" -> "lib/activities.ex" + "lib/threads.ex" -> "lib/feed_activities.ex" + "lib/feed_activities.ex" -> "lib/feeds.ex" + "lib/feed_activities.ex" -> "lib/flags.ex" + "lib/flags.ex" -> "lib/activities.ex" + "lib/flags.ex" -> "lib/edges.ex" + "lib/feed_activities.ex" -> "lib/integration.ex" + "lib/feed_activities.ex" -> "lib/live_push.ex" + "lib/feed_activities.ex" -> "lib/objects.ex" + "lib/feed_activities.ex" -> "lib/seen.ex" + "lib/seen.ex" -> "lib/edges.ex" + "lib/acts/activity.ex" + "lib/acts/activity.ex" -> "lib/activities.ex" + "lib/acts/activity.ex" -> "lib/feeds.ex" + "lib/acts/activity.under_object.ex" + "lib/acts/activity.under_object.ex" -> "lib/activities.ex" + "lib/acts/activity_pub.ex" + "lib/acts/activity_pub.ex" -> "lib/integration.ex" + "lib/acts/boundaries.ex" + "lib/acts/caretaker.ex" + "lib/acts/categories_auto_boost.ex" + "lib/acts/categories_auto_boost.ex" -> "lib/tags.ex" + "lib/acts/creator.ex" + "lib/acts/deprecated/feeds.ex" + "lib/acts/deprecated/feeds.ex" -> "lib/feeds.ex" + "lib/acts/deprecated/feeds.ex" -> "lib/integration.ex" [label="(export)"] + "lib/acts/files.ex" + "lib/acts/files.ex" -> "lib/integration.ex" [label="(export)"] + "lib/acts/live_push.ex" + "lib/acts/live_push.ex" -> "lib/live_push.ex" + "lib/acts/meilisearch.queue.ex" + "lib/acts/meilisearch.queue.ex" -> "lib/activities.ex" + "lib/acts/meilisearch.queue.ex" -> "lib/integration.ex" + "lib/acts/objects.delete.ex" + "lib/acts/post_contents.ex" + "lib/acts/post_contents.ex" -> "lib/post_contents.ex" + "lib/post_contents.ex" -> "lib/tags.ex" + "lib/acts/posts.publish.ex" + "lib/acts/posts.publish.ex" -> "lib/posts.ex" + "lib/posts.ex" -> "lib/activities.ex" + "lib/posts.ex" -> "lib/feed_activities.ex" + "lib/posts.ex" -> "lib/integration.ex" + "lib/posts.ex" -> "lib/messages.ex" + "lib/messages.ex" -> "lib/activities.ex" + "lib/messages.ex" -> "lib/feed_activities.ex" + "lib/messages.ex" -> "lib/integration.ex" + "lib/messages.ex" -> "lib/live_push.ex" + "lib/messages.ex" -> "lib/objects.ex" + "lib/messages.ex" -> "lib/post_contents.ex" + "lib/messages.ex" -> "lib/tags.ex" + "lib/messages.ex" -> "lib/threads.ex" + "lib/posts.ex" -> "lib/objects.ex" + "lib/posts.ex" -> "lib/post_contents.ex" + "lib/posts.ex" -> "lib/tags.ex" + "lib/acts/tags.ex" + "lib/acts/tags.ex" -> "lib/tags.ex" + "lib/acts/threaded.ex" + "lib/acts/threaded.ex" -> "lib/threads.ex" + "lib/acts/url_previews.ex" + "lib/acts/url_previews.ex" -> "lib/integration.ex" [label="(export)"] + "lib/ap_activities.ex" + "lib/boosts.ex" + "lib/edges.ex" + "lib/feed_activities.ex" + "lib/feeds.ex" + "lib/flags.ex" + "lib/follows.ex" + "lib/likes.ex" + "lib/likes.ex" -> "lib/activities.ex" + "lib/likes.ex" -> "lib/edges.ex" + "lib/likes.ex" -> "lib/feeds.ex" + "lib/likes.ex" -> "lib/integration.ex" + "lib/likes.ex" -> "lib/objects.ex" + "lib/live_push.ex" + "lib/messages.ex" + "lib/objects.ex" + "lib/pins.ex" + "lib/pins.ex" -> "lib/activities.ex" + "lib/pins.ex" -> "lib/edges.ex" + "lib/pins.ex" -> "lib/feeds.ex" + "lib/pins.ex" -> "lib/integration.ex" + "lib/pins.ex" -> "lib/objects.ex" + "lib/post_contents.ex" + "lib/posts.ex" + "lib/requests.ex" + "lib/runtime_config.ex" -> "lib/acts/activity.ex" + "lib/runtime_config.ex" -> "lib/acts/activity_pub.ex" + "lib/runtime_config.ex" -> "lib/acts/boundaries.ex" + "lib/runtime_config.ex" -> "lib/acts/caretaker.ex" + "lib/runtime_config.ex" -> "lib/acts/categories_auto_boost.ex" + "lib/runtime_config.ex" -> "lib/acts/creator.ex" + "lib/runtime_config.ex" -> "lib/acts/files.ex" + "lib/runtime_config.ex" -> "lib/acts/live_push.ex" + "lib/runtime_config.ex" -> "lib/acts/meilisearch.queue.ex" + "lib/runtime_config.ex" -> "lib/acts/objects.delete.ex" + "lib/runtime_config.ex" -> "lib/acts/post_contents.ex" + "lib/runtime_config.ex" -> "lib/acts/posts.publish.ex" + "lib/runtime_config.ex" -> "lib/acts/tags.ex" + "lib/runtime_config.ex" -> "lib/acts/threaded.ex" + "lib/runtime_config.ex" -> "lib/acts/url_previews.ex" + "lib/runtime_config.ex" -> "lib/follows.ex" + "lib/runtime_config.ex" -> "lib/objects.ex" + "lib/runtime_config.ex" -> "lib/posts.ex" + "lib/seen.ex" + "lib/social_api_graphql.ex" + "lib/social_api_graphql.ex" -> "lib/activities.ex" + "lib/social_api_graphql.ex" -> "lib/boosts.ex" + "lib/social_api_graphql.ex" -> "lib/feed_activities.ex" + "lib/social_api_graphql.ex" -> "lib/flags.ex" + "lib/social_api_graphql.ex" -> "lib/follows.ex" + "lib/social_api_graphql.ex" -> "lib/likes.ex" + "lib/social_api_graphql.ex" -> "lib/posts.ex" + "lib/tags.ex" + "lib/testing/fake.ex" -> "lib/follows.ex" + "lib/testing/fake.ex" -> "lib/posts.ex" + "lib/threads.ex" + "lib/autocomplete.ex" + "lib/autocomplete.ex" -> "lib/tag.ex" + "lib/tag.ex" -> "lib/queries.ex" + "lib/queries.ex" -> "lib/tagged.ex" + "lib/tag.ex" -> "lib/tags.ex" + "lib/tags.ex" -> "lib/queries.ex" + "lib/tags.ex" -> "lib/tag.ex" + "lib/tags.ex" -> "lib/tagged.ex" + "lib/tags.ex" -> "lib/text_content/process.ex" + "lib/text_content/process.ex" -> "lib/text_content/formatter.ex" + "lib/text_content/formatter.ex" -> "lib/hashtag.ex" + "lib/text_content/formatter.ex" -> "lib/tags.ex" + "lib/autocomplete.ex" -> "lib/tags.ex" + "lib/graphql/resolver.ex" -> "lib/tags.ex" + "lib/graphql/tag_schema.ex" + "lib/graphql/tag_schema.ex" -> "lib/graphql/resolver.ex" + "lib/hashtag.ex" + "lib/migrations.ex" -> "lib/hashtag.ex" [label="(compile)"] + "lib/migrations.ex" -> "lib/tagged.ex" + "lib/tag.ex" + "lib/tagged.ex" + "lib/text_content/formatter.ex" + "lib/text_content/process.ex" + "lib/web/api/autocomplete.ex" + "lib/web/api/autocomplete.ex" -> "lib/autocomplete.ex" + "lib/web/components/enter_tags_live.ex" + "lib/web/components/enter_tags_live.ex" -> "lib/web/components/tag_autocomplete_live.ex" + "lib/web/components/tag_autocomplete_live.ex" -> "lib/autocomplete.ex" [label="(export)"] + "lib/web/components/tag_autocomplete_live.ex" + "lib/web/components/tag_autocomplete_meili_direct_live.ex" + "lib/web/components/widget_tags/widget_tags_live.ex" + "lib/web/components/widget_tags/widget_tags_live.ex" -> "lib/hashtag.ex" [label="(export)"] + "lib/web/components/widget_tags/widget_tags_live.ex" -> "lib/tags.ex" + "lib/web/pages/tag_feed_live.ex" + "lib/web/pages/tag_feed_live.ex" -> "lib/hashtag.ex" + "lib/web/pages/tag_feed_live.ex" -> "lib/tagged.ex" + "lib/web/pages/tag_feed_live.ex" -> "lib/tags.ex" + "lib/web/pages/tag_feed_live.ex" -> "lib/web/components/widget_tags/widget_tags_live.ex" + "lib/common_routes.ex" + "lib/component_id.ex" + "lib/component_id.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/ui_common.ex" -> "lib/components/placeholders/live_component.ex" + "lib/components/placeholders/live_component.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/placeholders/live_component.ex" -> "lib/live_plugs/csrf.ex" + "lib/live_plugs/csrf.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/live_plugs/csrf.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/live_plugs/csrf.ex" -> "lib/web.ex" [label="(compile)"] + "lib/web.ex" -> "lib/layout/layout_view.ex" + "lib/layout/layout_view.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/layout/layout_view.ex" -> "lib/layout/layout_live.ex" + "lib/layout/layout_live.ex" -> "lib/components/modals/preview_content_live.ex" [label="(export)"] + "lib/components/modals/preview_content_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/modals/preview_content_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/modals/preview_content_live.ex" -> "lib/live_handlers.ex" + "lib/live_handlers.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/live_handlers.ex" -> "lib/layout/persistent_live.ex" + "lib/layout/persistent_live.ex" -> "lib/components/nav/header/guest_header_live.ex" + "lib/components/nav/header/guest_header_live.ex" -> "lib/components/nav/header/page_header_live.ex" [label="(export)"] + "lib/components/nav/header/page_header_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/header/page_header_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/header/page_header_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/header/guest_header_live.ex" -> "lib/components/nav/logo/logo_link_live.ex" [label="(export)"] + "lib/components/nav/logo/logo_link_live.ex" -> "lib/components/link_live.ex" [label="(export)"] + "lib/components/link_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/link_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/link_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/logo/logo_link_live.ex" -> "lib/components/nav/logo/logo_live.ex" [label="(export)"] + "lib/components/nav/logo/logo_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/logo/logo_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/logo/logo_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/logo/logo_link_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/logo/logo_link_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/logo/logo_link_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/header/guest_header_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/header/guest_header_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/header/guest_header_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/persistent_live.ex" -> "lib/components/nav/header/logged_header_live.ex" + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/nav/app_switcher/apps_live.ex" [label="(export)"] + "lib/components/nav/app_switcher/apps_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/app_switcher/apps_live.ex" -> "lib/components/link_live.ex" [label="(export)"] + "lib/components/nav/app_switcher/apps_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/app_switcher/apps_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/app_switcher/apps_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/nav/header/page_header_live.ex" + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/nav/logo/logo_link_live.ex" [label="(export)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/nav/user_dropdown/user_menu_live.ex" [label="(export)"] + "lib/components/nav/user_dropdown/user_menu_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/user_dropdown/user_menu_live.ex" -> "lib/components/images/avatar_live.ex" [label="(export)"] + "lib/components/images/avatar_live.ex" -> "lib/components/images/lazy_image.ex" [label="(export)"] + "lib/components/images/lazy_image.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/images/lazy_image.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/images/lazy_image.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/images/avatar_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/images/avatar_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/images/avatar_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/user_dropdown/user_menu_live.ex" -> "lib/components/nav/user_dropdown/user_menu_links_live.ex" [label="(export)"] + "lib/components/nav/user_dropdown/user_menu_links_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/user_dropdown/user_menu_links_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/user_dropdown/user_menu_links_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/user_dropdown/user_menu_links_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/user_dropdown/user_menu_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/user_dropdown/user_menu_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/user_dropdown/user_menu_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/placeholders/badge_counter_live.ex" [label="(export)"] + "lib/components/placeholders/badge_counter_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/placeholders/badge_counter_live.ex" -> "lib/live_handlers.ex" + "lib/components/placeholders/badge_counter_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/placeholders/badge_counter_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/components/smart_input/smart_input_container_live.ex" [label="(export)"] + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/components/smart_input/button/smart_input_buttons_live.ex" [label="(export)"] + "lib/components/smart_input/button/smart_input_buttons_live.ex" -> "lib/components/smart_input/button/smart_input_button_live.ex" [label="(export)"] + "lib/components/smart_input/button/smart_input_button_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/button/smart_input_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/button/smart_input_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/button/smart_input_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/button/smart_input_buttons_live.ex" -> "lib/components/smart_input/smart_input_live.ex" + "lib/components/smart_input/smart_input_live.ex" -> "lib/components/smart_input/smart_input_container_live.ex" + "lib/components/smart_input/smart_input_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/smart_input_live.ex" -> "lib/layout/persistent_live.ex" + "lib/components/smart_input/smart_input_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/smart_input_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/button/smart_input_buttons_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/button/smart_input_buttons_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/button/smart_input_buttons_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/components/smart_input/headers/smart_input_header_modal_live.ex" [label="(export)"] + "lib/components/smart_input/headers/smart_input_header_modal_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/headers/smart_input_header_modal_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/headers/smart_input_header_modal_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/headers/smart_input_header_modal_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/components/smart_input/smart_input_live.ex" [label="(export)"] + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/live_handlers.ex" + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/smart_input_container_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/header/logged_header_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/persistent_live.ex" -> "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" [label="(export)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" -> "lib/components/nav/extension_menu/extension_menu_nav_live.ex" [label="(export)"] + "lib/components/nav/extension_menu/extension_menu_nav_live.ex" -> "lib/components/widgets/widget_live.ex" [label="(export)"] + "lib/components/widgets/widget_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/widgets/widget_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/extension_menu/extension_menu_nav_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/extension_menu/extension_menu_nav_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/extension_menu/extension_menu_nav_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" -> "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" + "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" -> "lib/components/widgets/widget_block_live.ex" [label="(export)"] + "lib/components/widgets/widget_block_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_block_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_block_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" -> "lib/components/widgets/widget_feedbacks/feedback_button_live.ex" [label="(export)"] + "lib/components/widgets/widget_feedbacks/feedback_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_feedbacks/feedback_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_feedbacks/feedback_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/persistent_live.ex" -> "lib/components/smart_input/smart_input_container_live.ex" + "lib/layout/persistent_live.ex" -> "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" + "lib/layout/persistent_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/layout/persistent_live.ex" -> "lib/live_handlers.ex" + "lib/layout/persistent_live.ex" -> "lib/live_plugs/live_plugs.ex" [label="(export)"] + "lib/live_plugs/live_plugs.ex" -> "lib/layout/persistent_live.ex" + "lib/live_plugs/live_plugs.ex" -> "lib/live_plugs/allow_test_sandbox.ex" + "lib/live_plugs/allow_test_sandbox.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/live_plugs/allow_test_sandbox.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/live_plugs/allow_test_sandbox.ex" -> "lib/web.ex" [label="(compile)"] + "lib/live_plugs/live_plugs.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/layout/persistent_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/layout/persistent_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/live_handlers.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/live_handlers.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/modals/preview_content_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/modals/preview_content_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/layout_live.ex" -> "lib/components/modals/reusable_modal_live.ex" [label="(export)"] + "lib/components/modals/reusable_modal_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/modals/reusable_modal_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/modals/reusable_modal_live.ex" -> "lib/live_handlers.ex" + "lib/components/modals/reusable_modal_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/modals/reusable_modal_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/layout_live.ex" -> "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" [label="(export)"] + "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" -> "lib/components/images/avatar_live.ex" [label="(export)"] + "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/layout_live.ex" -> "lib/components/notification/notification_live.ex" [label="(export)"] + "lib/components/notification/notification_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/notification/notification_live.ex" -> "lib/components/widgets/widget_feedbacks/feedback_button_live.ex" [label="(export)"] + "lib/components/notification/notification_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/notification/notification_live.ex" -> "lib/live_handlers.ex" + "lib/components/notification/notification_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/notification/notification_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/layout_live.ex" -> "lib/components/smart_input/smart_input_live.ex" + "lib/layout/layout_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/layout/layout_live.ex" -> "lib/layout/persistent_live.ex" [label="(export)"] + "lib/layout/layout_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/layout/layout_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/layout/layout_view.ex" -> "lib/seo.ex" + "lib/layout/layout_view.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/layout/layout_view.ex" -> "lib/web.ex" [label="(compile)"] + "lib/web.ex" -> "lib/ui_common.ex" + "lib/components/placeholders/live_component.ex" -> "lib/live_plugs/live_plugs.ex" [label="(export)"] + "lib/components/placeholders/live_component.ex" -> "lib/live_plugs/locale.ex" + "lib/live_plugs/locale.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/live_plugs/locale.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/live_plugs/locale.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/placeholders/live_component.ex" -> "lib/live_plugs/static_changed.ex" + "lib/live_plugs/static_changed.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/live_plugs/static_changed.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/live_plugs/static_changed.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/placeholders/live_component.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/placeholders/live_component.ex" -> "lib/web.ex" [label="(compile)"] + "lib/ui_common.ex" -> "lib/notifications.ex" + "lib/notifications.ex" -> "lib/components/notification/notification_live.ex" + "lib/notifications.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/notifications.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/notifications.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/actions/boost/boost_action_live.ex" + "lib/components/actions/boost/boost_action_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/actions/boost/boost_action_live.ex" -> "lib/live_handlers.ex" + "lib/components/actions/boost/boost_action_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/actions/boost/boost_action_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/actions/flag/flag_action_live.ex" + "lib/components/actions/flag/flag_action_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/actions/flag/flag_action_live.ex" -> "lib/components/modals/open_modal_live.ex" [label="(export)"] + "lib/components/modals/open_modal_live.ex" -> "lib/components/modals/reusable_modal_live.ex" [label="(compile)"] + "lib/components/modals/open_modal_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/modals/open_modal_live.ex" -> "lib/live_handlers.ex" + "lib/components/modals/open_modal_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/modals/open_modal_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/actions/flag/flag_action_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/actions/flag/flag_action_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/actions/flag/flag_action_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/actions/flag/follow/follow_button_live.ex" + "lib/components/actions/flag/follow/follow_button_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/actions/flag/follow/follow_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/actions/flag/follow/follow_button_live.ex" -> "lib/live_handlers.ex" + "lib/components/actions/flag/follow/follow_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/actions/flag/follow/follow_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/actions/like/like_action_live.ex" + "lib/components/actions/like/like_action_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/actions/like/like_action_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/actions/like/like_action_live.ex" -> "lib/live_handlers.ex" + "lib/components/actions/like/like_action_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/actions/like/like_action_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/extensions/extension_diff_live.ex" + "lib/components/extensions/extension_diff_live.ex" -> "lib/diff_render/diff_render_view.ex" + "lib/diff_render/diff_render_view.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/diff_render/diff_render_view.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/diff_render/diff_render_view.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/extensions/extension_diff_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/extensions/extension_diff_live.ex" -> "lib/live_plugs/csrf.ex" + "lib/components/extensions/extension_diff_live.ex" -> "lib/live_plugs/live_plugs.ex" [label="(export)"] + "lib/components/extensions/extension_diff_live.ex" -> "lib/live_plugs/locale.ex" + "lib/components/extensions/extension_diff_live.ex" -> "lib/live_plugs/static_changed.ex" + "lib/components/extensions/extension_diff_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/extensions/extension_diff_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/extensions/extension_toggle_live.ex" + "lib/components/extensions/extension_toggle_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/extensions/extension_toggle_live.ex" -> "lib/live_handlers.ex" + "lib/components/extensions/extension_toggle_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/extensions/extension_toggle_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/extensions/extensions_live.ex" + "lib/components/extensions/extensions_live.ex" -> "lib/components/extensions/extension_toggle_live.ex" [label="(export)"] + "lib/components/extensions/extensions_live.ex" -> "lib/components/widgets/widget_apps/widget_apps_live.ex" [label="(export)"] + "lib/components/widgets/widget_apps/widget_apps_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/widgets/widget_apps/widget_apps_live.ex" -> "lib/components/widgets/widget_block_live.ex" [label="(export)"] + "lib/components/widgets/widget_apps/widget_apps_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_apps/widget_apps_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_apps/widget_apps_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/extensions/extensions_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/extensions/extensions_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/extensions/extensions_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/icon.ex" + "lib/components/images/avatar_live.ex" + "lib/components/images/lazy_image.ex" + "lib/components/link_live.ex" + "lib/components/link_patch_live.ex" + "lib/components/link_patch_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/link_patch_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/link_patch_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/modals/open_modal_live.ex" + "lib/components/modals/open_preview_live.ex" + "lib/components/modals/open_preview_live.ex" -> "lib/components/modals/open_modal_live.ex" [label="(export)"] + "lib/components/modals/open_preview_live.ex" -> "lib/components/modals/preview_content_live.ex" + "lib/components/modals/open_preview_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/modals/open_preview_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/modals/open_preview_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/modals/preview_content_live.ex" + "lib/components/modals/reusable_modal_live.ex" + "lib/components/multiselect/live_handler.ex" + "lib/components/multiselect/live_handler.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/multiselect/live_handler.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/multiselect/live_handler.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/multiselect/multiselect_live.ex" + "lib/components/multiselect/multiselect_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/multiselect/multiselect_live.ex" -> "lib/live_handlers.ex" + "lib/components/multiselect/multiselect_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/multiselect/multiselect_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/multiselect/user_selector_live.ex" + "lib/components/multiselect/user_selector_live.ex" -> "lib/components/multiselect/multiselect_live.ex" [label="(export)"] + "lib/components/multiselect/user_selector_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/multiselect/user_selector_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/multiselect/user_selector_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/app_switcher/apps_live.ex" + "lib/components/nav/app_switcher/explore_nav_live.ex" + "lib/components/nav/app_switcher/explore_nav_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/app_switcher/explore_nav_live.ex" -> "lib/components/link_live.ex" [label="(export)"] + "lib/components/nav/app_switcher/explore_nav_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/app_switcher/explore_nav_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/app_switcher/explore_nav_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/back_button_live.ex" + "lib/components/nav/back_button_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/back_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/back_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/back_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/extension_menu/extension_horizontal_menu_live.ex" + "lib/components/nav/extension_menu/extension_horizontal_menu_live.ex" -> "lib/components/widgets/widget_live.ex" [label="(export)"] + "lib/components/nav/extension_menu/extension_horizontal_menu_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/extension_menu/extension_horizontal_menu_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/extension_menu/extension_horizontal_menu_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/extension_menu/extension_menu_nav_live.ex" + "lib/components/nav/header/guest_header_live.ex" + "lib/components/nav/header/logged_header_live.ex" + "lib/components/nav/header/page_header_live.ex" + "lib/components/nav/logo/logo_link_live.ex" + "lib/components/nav/logo/logo_live.ex" + "lib/components/nav/nav_footer_mobile/nav_footer_mobile_user_live.ex" + "lib/components/nav/nav_sidebar/default_nav_live.ex" + "lib/components/nav/nav_sidebar/default_nav_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/nav_sidebar/default_nav_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/nav_sidebar/default_nav_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/nav_sidebar/default_nav_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/nav_sidebar/nav_sidebar_live.ex" + "lib/components/nav/page_title/page_title_live.ex" + "lib/components/nav/page_title/page_title_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/nav/page_title/page_title_live.ex" -> "lib/components/link_live.ex" [label="(export)"] + "lib/components/nav/page_title/page_title_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/page_title/page_title_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/page_title/page_title_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/tabs/tabs_live.ex" + "lib/components/nav/tabs/tabs_live.ex" -> "lib/components/link_patch_live.ex" [label="(export)"] + "lib/components/nav/tabs/tabs_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/nav/tabs/tabs_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/nav/tabs/tabs_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/nav/user_dropdown/user_menu_links_live.ex" + "lib/components/nav/user_dropdown/user_menu_live.ex" + "lib/components/notification/notification_live.ex" + "lib/components/paginate/load_more_live.ex" + "lib/components/paginate/load_more_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/paginate/load_more_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/paginate/load_more_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/paginate/load_previous_live.ex" + "lib/components/paginate/load_previous_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/paginate/load_previous_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/paginate/load_previous_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/pinned/instance_pinned_live.ex" + "lib/components/pinned/instance_pinned_live.ex" -> "lib/components/pinned/pinned_carousel_live.ex" [label="(export)"] + "lib/components/pinned/pinned_carousel_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/pinned/pinned_carousel_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/pinned/pinned_carousel_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/pinned/instance_pinned_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/pinned/instance_pinned_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/pinned/instance_pinned_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/pinned/my_pinned_live.ex" + "lib/components/pinned/my_pinned_live.ex" -> "lib/components/pinned/pinned_carousel_live.ex" [label="(export)"] + "lib/components/pinned/my_pinned_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/pinned/my_pinned_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/pinned/my_pinned_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/pinned/pinned_carousel_live.ex" + "lib/components/placeholders/badge_counter_live.ex" + "lib/components/placeholders/empty_feed.ex" + "lib/components/placeholders/empty_feed.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/placeholders/empty_feed.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/placeholders/empty_feed.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/placeholders/live_component.ex" + "lib/components/profile_item/profile_item_live.ex" + "lib/components/profile_item/profile_item_live.ex" -> "lib/component_id.ex" + "lib/components/profile_item/profile_item_live.ex" -> "lib/components/actions/flag/follow/follow_button_live.ex" [label="(export)"] + "lib/components/profile_item/profile_item_live.ex" -> "lib/components/images/avatar_live.ex" [label="(export)"] + "lib/components/profile_item/profile_item_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/profile_item/profile_item_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/profile_item/profile_item_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/avatars_settings_live.ex" + "lib/components/settings/avatars_settings_live.ex" -> "lib/components/images/avatar_live.ex" + "lib/components/settings/avatars_settings_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/avatars_settings_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/avatars_settings_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/change_font_live.ex" + "lib/components/settings/change_font_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/change_font_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/change_font_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/change_locale_live.ex" + "lib/components/settings/change_locale_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/change_locale_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/change_locale_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/change_theme_live.ex" + "lib/components/settings/change_theme_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/change_theme_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/change_theme_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/change_themes_lives.ex" + "lib/components/settings/change_themes_lives.ex" -> "lib/components/settings/change_theme_live.ex" [label="(export)"] + "lib/components/settings/change_themes_lives.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/change_themes_lives.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/change_themes_lives.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/sidebar/sidebar_instance_settings_live.ex" + "lib/components/settings/sidebar/sidebar_instance_settings_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/settings/sidebar/sidebar_instance_settings_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/sidebar/sidebar_instance_settings_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/sidebar/sidebar_instance_settings_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/sidebar/sidebar_settings_nav_live.ex" + "lib/components/settings/sidebar/sidebar_settings_nav_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/settings/sidebar/sidebar_settings_nav_live.ex" -> "lib/components/widgets/widget_live.ex" [label="(export)"] + "lib/components/settings/sidebar/sidebar_settings_nav_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/sidebar/sidebar_settings_nav_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/sidebar/sidebar_settings_nav_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/settings/smart_input_settings_live.ex" + "lib/components/settings/smart_input_settings_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/settings/smart_input_settings_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/settings/smart_input_settings_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/button/choose_input_type_button_live.ex" + "lib/components/smart_input/button/choose_input_type_button_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/button/choose_input_type_button_live.ex" -> "lib/components/smart_input/smart_input_live.ex" + "lib/components/smart_input/button/choose_input_type_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/button/choose_input_type_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/button/choose_input_type_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/button/mobile_smart_input_button_live.ex" + "lib/components/smart_input/button/mobile_smart_input_button_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/button/mobile_smart_input_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/button/mobile_smart_input_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/button/mobile_smart_input_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/button/smart_input_button_live.ex" + "lib/components/smart_input/button/smart_input_buttons_live.ex" + "lib/components/smart_input/headers/smart_input_header_live.ex" + "lib/components/smart_input/headers/smart_input_header_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/headers/smart_input_header_live.ex" -> "lib/components/smart_input/smart_input_live.ex" + "lib/components/smart_input/headers/smart_input_header_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/headers/smart_input_header_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/headers/smart_input_header_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/headers/smart_input_header_modal_live.ex" + "lib/components/smart_input/input_boundaries_live.ex" + "lib/components/smart_input/input_boundaries_live.ex" -> "lib/components/smart_input/select_recipients_live.ex" [label="(export)"] + "lib/components/smart_input/select_recipients_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/select_recipients_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/select_recipients_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/input_boundaries_live.ex" -> "lib/components/smart_input/smart_input_live.ex" + "lib/components/smart_input/input_boundaries_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/input_boundaries_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/input_boundaries_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/input_controls_live.ex" + "lib/components/smart_input/input_controls_live.ex" -> "lib/components/smart_input/upload/upload_button_live.ex" [label="(export)"] + "lib/components/smart_input/upload/upload_button_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/upload/upload_button_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/upload/upload_button_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/upload/upload_button_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/input_controls_live.ex" -> "lib/components/smart_input/upload/upload_previews_live.ex" [label="(export)"] + "lib/components/smart_input/upload/upload_previews_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/smart_input/upload/upload_previews_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/upload/upload_previews_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/upload/upload_previews_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/input_controls_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/input_controls_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/input_controls_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/select_recipients_live.ex" + "lib/components/smart_input/smart_input_container_live.ex" + "lib/components/smart_input/smart_input_inline_live.ex" + "lib/components/smart_input/smart_input_inline_live.ex" -> "lib/components/smart_input/smart_input_container_live.ex" + "lib/components/smart_input/smart_input_inline_live.ex" -> "lib/components/smart_input/smart_input_live.ex" [label="(export)"] + "lib/components/smart_input/smart_input_inline_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/smart_input_inline_live.ex" -> "lib/live_handlers.ex" + "lib/components/smart_input/smart_input_inline_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/smart_input_inline_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/smart_input/smart_input_live.ex" + "lib/components/smart_input/upload/upload_button_live.ex" + "lib/components/smart_input/upload/upload_previews_live.ex" + "lib/components/smart_input/write_editor_live.ex" + "lib/components/smart_input/write_editor_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/smart_input/write_editor_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/smart_input/write_editor_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/team/team_live.ex" + "lib/components/team/team_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/team/team_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/team/team_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/team/team_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widget_app_menu/widget_app_menu_live.ex" + "lib/components/widgets/widget_app_menu/widget_app_menu_live.ex" -> "lib/components/widgets/widget_block_live.ex" [label="(export)"] + "lib/components/widgets/widget_app_menu/widget_app_menu_live.ex" -> "lib/components/widgets/widget_live.ex" [label="(export)"] + "lib/components/widgets/widget_app_menu/widget_app_menu_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_app_menu/widget_app_menu_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_app_menu/widget_app_menu_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widget_apps/widget_apps_live.ex" + "lib/components/widgets/widget_block_live.ex" + "lib/components/widgets/widget_feedbacks/feedback_button_live.ex" + "lib/components/widgets/widget_feedbacks/widget_feedback_live.ex" + "lib/components/widgets/widget_instance_info/widget_instance_info_live.ex" + "lib/components/widgets/widget_instance_info/widget_instance_info_live.ex" -> "lib/components/nav/logo/logo_link_live.ex" [label="(export)"] + "lib/components/widgets/widget_instance_info/widget_instance_info_live.ex" -> "lib/components/widgets/widget_block_live.ex" [label="(export)"] + "lib/components/widgets/widget_instance_info/widget_instance_info_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_instance_info/widget_instance_info_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_instance_info/widget_instance_info_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widget_links/widget_links_live.ex" + "lib/components/widgets/widget_links/widget_links_live.ex" -> "lib/components/icon.ex" [label="(export)"] + "lib/components/widgets/widget_links/widget_links_live.ex" -> "lib/components/widgets/widget_block_live.ex" [label="(export)"] + "lib/components/widgets/widget_links/widget_links_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_links/widget_links_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_links/widget_links_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widget_live.ex" + "lib/components/widgets/widget_text/widget_text_live.ex" + "lib/components/widgets/widget_text/widget_text_live.ex" -> "lib/components/widgets/widget_block_live.ex" [label="(export)"] + "lib/components/widgets/widget_text/widget_text_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widget_text/widget_text_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widget_text/widget_text_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/components/widgets/widgets_live.ex" + "lib/components/widgets/widgets_live.ex" -> "lib/components/widgets/widget_live.ex" [label="(export)"] + "lib/components/widgets/widgets_live.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/components/widgets/widgets_live.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/components/widgets/widgets_live.ex" -> "lib/web.ex" [label="(compile)"] + "lib/controllers/session_redirect.ex" + "lib/controllers/session_redirect.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/controllers/session_redirect.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/controllers/session_redirect.ex" -> "lib/web.ex" [label="(compile)"] + "lib/diff_render/diff_render_view.ex" + "lib/endpoint_template.ex" + "lib/error/basic_view.ex" + "lib/error/basic_view.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/error/basic_view.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/error/basic_view.ex" -> "lib/web.ex" [label="(compile)"] + "lib/error/error_controller.ex" + "lib/error/error_controller.ex" -> "lib/error/error_view.ex" + "lib/error/error_view.ex" -> "lib/error/basic_view.ex" + "lib/error/error_view.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/error/error_view.ex" -> "lib/live_handlers_graceful_degradation_controller.ex" + "lib/live_handlers_graceful_degradation_controller.ex" -> "lib/error/basic_view.ex" + "lib/live_handlers_graceful_degradation_controller.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/live_handlers_graceful_degradation_controller.ex" -> "lib/live_handlers.ex" + "lib/live_handlers_graceful_degradation_controller.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/live_handlers_graceful_degradation_controller.ex" -> "lib/web.ex" [label="(compile)"] + "lib/error/error_view.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/error/error_view.ex" -> "lib/web.ex" [label="(compile)"] + "lib/error/error_controller.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/error/error_controller.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/error/error_controller.ex" -> "lib/web.ex" [label="(compile)"] + "lib/error/error_view.ex" + "lib/error_helpers.ex" + "lib/layout/layout_live.ex" + "lib/layout/layout_view.ex" + "lib/layout/persistent_live.ex" + "lib/live_handlers.ex" + "lib/live_handlers_graceful_degradation_controller.ex" + "lib/live_plugs/allow_test_sandbox.ex" + "lib/live_plugs/csrf.ex" + "lib/live_plugs/live_plugs.ex" + "lib/live_plugs/locale.ex" + "lib/live_plugs/static_changed.ex" + "lib/notifications.ex" + "lib/plugs/activity_pub.ex" + "lib/plugs/error_reporting.ex" + "lib/plugs/multi_tenancy.ex" + "lib/seo.ex" + "lib/static_generator/maybe_static_generator_plug.ex" + "lib/static_generator/maybe_static_generator_plug.ex" -> "lib/static_generator/static_generator.ex" [label="(compile)"] + "lib/static_generator/static_fallback_controller.ex" + "lib/static_generator/static_fallback_controller.ex" -> "lib/error_helpers.ex" [label="(export)"] + "lib/static_generator/static_fallback_controller.ex" -> "lib/static_generator/static_generator.ex" + "lib/static_generator/static_fallback_controller.ex" -> "lib/ui_common.ex" [label="(compile)"] + "lib/static_generator/static_fallback_controller.ex" -> "lib/web.ex" [label="(compile)"] + "lib/static_generator/static_generator.ex" + "lib/static_generator/static_generator_plug.ex" + "lib/ui_common.ex" + "lib/web.ex" + "lib/coordination/test_driven.ex" + "lib/web/components/create_label/create_label_live.ex" + "lib/web/components/create_task/create_task_container_live.ex" + "lib/web/components/create_task/create_task_container_live.ex" -> "lib/web/components/create_task/create_task_live.ex" [label="(export)"] + "lib/web/components/create_task/create_task_live.ex" -> "lib/integration.ex" + "lib/web/components/create_task/create_task_live.ex" -> "lib/web/pages/process/process_live.ex" + "lib/web/components/create_task/create_task_live.ex" -> "lib/web/pages/task/task_live.ex" + "lib/web/pages/task/task_live.ex" -> "lib/web/components/task_hero/task_hero_live.ex" [label="(export)"] + "lib/web/components/task_hero/task_hero_live.ex" -> "lib/web/components/task_actions/task_actions_live.ex" [label="(export)"] + "lib/web/components/task_hero/task_hero_live.ex" -> "lib/web/components/task_set_status/task_set_status_live.ex" [label="(export)"] + "lib/web/pages/task/task_live.ex" -> "lib/web/components/task_thread/task_thread_live.ex" [label="(export)"] + "lib/web/components/create_task/create_task_live.ex" + "lib/web/components/nav/lists_navigation_live.ex" + "lib/web/components/nav/sidebar_navigation_live.ex" + "lib/web/components/nav/sidebar_navigation_live.ex" -> "lib/web/pages/processes/processes_live.ex" + "lib/web/components/settings/team_live.ex" + "lib/web/components/task_actions/task_actions_live.ex" + "lib/web/components/task_actions/task_actions_menu_live.ex" + "lib/web/components/task_hero/task_hero_live.ex" + "lib/web/components/task_preview/task_preview_live.ex" + "lib/web/components/task_preview/task_preview_live.ex" -> "lib/web/components/task_actions/task_actions_menu_live.ex" [label="(export)"] + "lib/web/components/task_set_status/task_set_status_live.ex" + "lib/web/components/task_thread/task_thread_live.ex" + "lib/web/components/widgets/process_info/process_info_live.ex" + "lib/web/components/widgets/tasks_filter/tasks_filter_live.ex" + "lib/web/components/widgets/upcoming_task/upcoming_task_live.ex" + "lib/web/components/widgets/widget_task_actions/widget_task_actions_live.ex" + "lib/web/components/widgets/widget_task_actions/widget_task_actions_live.ex" -> "lib/web/components/task_actions/task_actions_live.ex" [label="(export)"] + "lib/web/components/widgets/widget_task_actions/widget_task_actions_live.ex" -> "lib/web/components/task_set_status/task_set_status_live.ex" [label="(export)"] + "lib/web/pages/feed/feed_live.ex" + "lib/web/pages/labels/labels_live.ex" -> "lib/web/components/create_label/create_label_live.ex" [label="(export)"] + "lib/web/pages/likes/likes_live.ex" + "lib/web/pages/process/process_live.ex" + "lib/web/pages/processes/processes_live.ex" + "lib/web/pages/task/task_live.ex" + "lib/web/pages/tasks/tasks_live.ex" + "lib/web/pages/tasks/tasks_live.ex" -> "lib/web/pages/feed/feed_live.ex" + "lib/web/pages/tasks/tasks_live.ex" -> "lib/web/pages/process/process_live.ex" [label="(compile)"] + "lib/web/pages/tasks/tasks_live.ex" -> "lib/web/pages/processes/processes_live.ex" + "lib/web/pages/todo/todo_live.ex" + "lib/web/pages/todo/todo_live.ex" -> "lib/web/components/create_task/create_task_live.ex" + "lib/web/pages/todo/todo_live.ex" -> "lib/web/pages/process/process_live.ex" [label="(compile)"] + "lib/kanban/test_driven.ex" + "lib/web/components/bin/bin_live.ex" + "lib/web/components/bin/bin_live.ex" -> "lib/web/components/card_preview/card_live.ex" [label="(export)"] + "lib/web/components/bin/bin_live.ex" -> "lib/web/components/create_card/create_card_live.ex" [label="(export)"] + "lib/web/components/create_card/create_card_live.ex" -> "lib/integration.ex" + "lib/web/components/board/board_preview_live.ex" + "lib/web/components/card_modal/card_dates_live.ex" + "lib/web/components/card_modal/card_hero_live.ex" + "lib/web/components/card_modal/card_labels_live.ex" + "lib/web/components/card_modal/card_main_live.ex" + "lib/web/components/card_modal/card_members_live.ex" + "lib/web/components/card_modal/card_modal_live.ex" + "lib/web/components/card_modal/card_modal_live.ex" -> "lib/web/components/card_modal/card_hero_live.ex" [label="(export)"] + "lib/web/components/card_modal/card_modal_live.ex" -> "lib/web/components/card_modal/card_main_live.ex" [label="(export)"] + "lib/web/components/card_modal/card_modal_live.ex" -> "lib/web/components/card_modal/card_sidebar_live.ex" [label="(export)"] + "lib/web/components/card_modal/card_sidebar_live.ex" -> "lib/web/components/card_modal/card_dates_live.ex" [label="(export)"] + "lib/web/components/card_modal/card_sidebar_live.ex" -> "lib/web/components/card_modal/card_labels_live.ex" [label="(export)"] + "lib/web/components/card_modal/card_sidebar_live.ex" -> "lib/web/components/card_modal/card_members_live.ex" [label="(export)"] + "lib/web/components/card_modal/card_sidebar_live.ex" + "lib/web/components/card_preview/card_live.ex" + "lib/web/components/create_bin/create_bin_live.ex" + "lib/web/components/create_board/create_board_live.ex" + "lib/web/components/create_card/create_card_live.ex" + "lib/web/components/navigation/navigation_live.ex" + "lib/web/components/navigation/navigation_live.ex" -> "lib/web/components/create_board/create_board_live.ex" [label="(export)"] + "lib/web/components/panel/panel_live.ex" + "lib/web/pages/board/board_live.ex" + "lib/web/pages/board/board_live.ex" -> "lib/integration.ex" + "lib/web/pages/board/board_live.ex" -> "lib/web/components/bin/bin_live.ex" [label="(export)"] + "lib/web/pages/board/board_live.ex" -> "lib/web/components/card_modal/card_modal_live.ex" [label="(export)"] + "lib/web/pages/board/board_live.ex" -> "lib/web/components/create_bin/create_bin_live.ex" [label="(export)"] + "lib/web/pages/board/board_live.ex" -> "lib/web/components/panel/panel_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/board/board_preview_live.ex" [label="(export)"] + "lib/web/pages/home/home_live.ex" -> "lib/web/components/navigation/navigation_live.ex" [label="(export)"] + "lib/components/create_user/create_user_view_live.ex" + "lib/components/login/login_view_live.ex" + "lib/components/login/login_view_live.ex" -> "lib/views/confirm_email/confirm_email_controller.ex" + "lib/views/confirm_email/confirm_email_controller.ex" -> "lib/views/confirm_email/confirm_email_live.ex" + "lib/views/confirm_email/confirm_email_live.ex" -> "lib/views/confirm_email/confirm_email_controller.ex" + "lib/components/login/login_view_live.ex" -> "lib/views/forgot_password/forgot_password_controller.ex" + "lib/views/forgot_password/forgot_password_controller.ex" -> "lib/views/change_password/change_password_controller.ex" + "lib/views/change_password/change_password_controller.ex" -> "lib/views/change_password/change_password_live.ex" + "lib/views/change_password/change_password_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/forgot_password/forgot_password_controller.ex" -> "lib/views/forgot_password/forgot_password_live.ex" + "lib/views/forgot_password/forgot_password_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/forgot_password/forgot_password_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/forgot_password/forgot_password_live.ex" -> "lib/views/forgot_password/forgot_password_controller.ex" + "lib/components/profile/profile_follows/profile_follows_live.ex" + "lib/components/profile/profile_hero/profile_hero_full_live.ex" + "lib/components/profile/profile_hero/profile_hero_full_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/components/remote_interaction/remote_interaction_form_live.ex" + "lib/components/settings/account/edit_account_live.ex" + "lib/components/settings/dashboard/user_dashboard_live.ex" + "lib/components/settings/header_aside_mobile_menu/header_aside_mobile_menu_live.ex" + "lib/components/settings/instance/dashboard/instance_dashboard_live.ex" + "lib/components/settings/instance/instance_old/admin_live.ex" + "lib/components/settings/instance/instance_old/admin_live.ex" -> "lib/components/settings/settings_items/discoverable_live.ex" [label="(export)"] + "lib/components/settings/instance/instance_old/admin_live.ex" -> "lib/components/widgets/widget_users/widget_users_live.ex" + "lib/components/settings/instance/instance_old/admin_live.ex" -> "lib/views/users_directory/users_directory_live.ex" + "lib/views/users_directory/users_directory_live.ex" -> "lib/components/user_previews/user_preview_live.ex" [label="(export)"] + "lib/components/user_previews/user_preview_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/views/users_directory/users_directory_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/views/users_directory/users_directory_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/users_directory/users_directory_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/components/settings/instance/instance_old/terms_live.ex" + "lib/components/settings/instance/members/instance_members_live.ex" + "lib/components/settings/instance/navigation/instance_navigation_live.ex" + "lib/components/settings/instance/posts/instance_posts_live.ex" + "lib/components/settings/instance/preferences/instance_preferences_live.ex" + "lib/components/settings/instance/preferences/instance_preferences_live.ex" -> "lib/components/settings/settings_items/discoverable_live.ex" [label="(export)"] + "lib/components/settings/instance/preferences/instance_preferences_live.ex" -> "lib/components/widgets/widget_users/widget_users_live.ex" + "lib/components/settings/instance/preferences/instance_preferences_live.ex" -> "lib/views/users_directory/users_directory_live.ex" + "lib/components/settings/preferences/preferences_live.ex" + "lib/components/settings/preferences/preferences_live.ex" -> "lib/components/settings/settings_items/discoverable_live.ex" [label="(export)"] + "lib/components/settings/profile/edit_profile_live.ex" + "lib/components/settings/settings_items/discoverable_live.ex" + "lib/components/settings/shared_user/shared_user_live.ex" + "lib/components/signup/signup_form_live.ex" + "lib/components/switch_user/account_users_live.ex" + "lib/components/switch_user/account_users_live.ex" -> "lib/components/user_previews/user_preview_live.ex" [label="(export)"] + "lib/components/user_previews/user_preview_live.ex" + "lib/components/widgets/widget_profile/widget_profile_live.ex" + "lib/components/widgets/widget_users/widget_admins_live.ex" + "lib/components/widgets/widget_users/widget_admins_live.ex" -> "lib/components/widgets/widget_users/widget_users_live.ex" [label="(export)"] + "lib/components/widgets/widget_users/widget_users_live.ex" + "lib/live_handlers/profiles_live_handler.ex" + "lib/live_handlers/settings_live_handler.ex" + "lib/live_handlers/users_live_handler.ex" + "lib/live_plugs/account_required.ex" + "lib/live_plugs/admin_required.ex" + "lib/live_plugs/guest_only.ex" + "lib/live_plugs/load_current_account.ex" + "lib/live_plugs/load_current_account_users.ex" + "lib/live_plugs/load_current_user.ex" + "lib/live_plugs/load_current_user_circles.ex" + "lib/live_plugs/user_auth_live_mount.ex" + "lib/live_plugs/user_auth_live_mount.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/live_plugs/user_required.ex" + "lib/me_routes.ex" + "lib/plugs/account_required.ex" + "lib/plugs/admin_required.ex" + "lib/plugs/load_current_account.ex" + "lib/plugs/load_current_account_users.ex" + "lib/plugs/load_current_user.ex" + "lib/plugs/user_required.ex" + "lib/views/change_password/change_password_controller.ex" + "lib/views/change_password/change_password_live.ex" + "lib/views/confirm_email/confirm_email_controller.ex" + "lib/views/confirm_email/confirm_email_live.ex" + "lib/views/create_user/create_user_controller.ex" + "lib/views/create_user/create_user_controller.ex" -> "lib/views/create_user/create_user_live.ex" + "lib/views/create_user/create_user_live.ex" -> "lib/components/create_user/create_user_view_live.ex" [label="(export)"] + "lib/views/create_user/create_user_live.ex" -> "lib/live_plugs/account_required.ex" + "lib/views/create_user/create_user_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/create_user/create_user_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/create_user/create_user_live.ex" + "lib/views/dashboard/logged_dashboard_live.ex" + "lib/views/dashboard/logged_dashboard_live.ex" -> "lib/live_plugs/account_required.ex" + "lib/views/dashboard/logged_dashboard_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/dashboard/logged_dashboard_live.ex" -> "lib/live_plugs/load_current_account_users.ex" + "lib/views/dashboard/logged_dashboard_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/error/error_live.ex" + "lib/views/error/error_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/error/error_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/forgot_password/forgot_password_controller.ex" + "lib/views/forgot_password/forgot_password_live.ex" + "lib/views/login/login_controller.ex" + "lib/views/login/login_controller.ex" -> "lib/views/login/login_live.ex" + "lib/views/login/login_live.ex" -> "lib/components/login/login_view_live.ex" [label="(export)"] + "lib/views/login/login_live.ex" + "lib/views/logout/logout_controller.ex" + "lib/views/profile/character_live.ex" + "lib/views/profile/character_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/profile/character_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/profile/character_live.ex" -> "lib/views/profile/profile_live.ex" + "lib/views/profile/profile_live.ex" -> "lib/components/profile/profile_hero/profile_hero_full_live.ex" + "lib/views/profile/profile_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/profile/profile_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/profile/profile_live.ex" + "lib/views/remote_interaction/remote_interaction_live.ex" + "lib/views/remote_interaction/remote_interaction_live.ex" -> "lib/components/remote_interaction/remote_interaction_form_live.ex" [label="(export)"] + "lib/views/remote_interaction/remote_interaction_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/settings/instance_settings_live.ex" + "lib/views/settings/instance_settings_live.ex" -> "lib/components/settings/instance/dashboard/instance_dashboard_live.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/components/settings/instance/instance_old/terms_live.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/components/settings/instance/members/instance_members_live.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/components/settings/instance/posts/instance_posts_live.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/components/settings/instance/preferences/instance_preferences_live.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/components/settings/shared_user/shared_user_live.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/views/settings/instance_settings_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/settings/instance_settings_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/settings/instance_settings_live.ex" -> "lib/live_plugs/user_required.ex" + "lib/views/settings/settings_live.ex" + "lib/views/settings/settings_live.ex" -> "lib/components/settings/account/edit_account_live.ex" [label="(export)"] + "lib/views/settings/settings_live.ex" -> "lib/components/settings/dashboard/user_dashboard_live.ex" [label="(export)"] + "lib/views/settings/settings_live.ex" -> "lib/components/settings/preferences/preferences_live.ex" [label="(export)"] + "lib/views/settings/settings_live.ex" -> "lib/components/settings/profile/edit_profile_live.ex" [label="(export)"] + "lib/views/settings/settings_live.ex" -> "lib/components/settings/shared_user/shared_user_live.ex" [label="(export)"] + "lib/views/settings/settings_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/views/settings/settings_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/settings/settings_live.ex" -> "lib/live_plugs/load_current_user.ex" + "lib/views/settings/settings_live.ex" -> "lib/live_plugs/user_required.ex" + "lib/views/settings/settings_upload_controller.ex" + "lib/views/signup/signup_controller.ex" + "lib/views/signup/signup_controller.ex" -> "lib/views/signup/signup_live.ex" + "lib/views/signup/signup_live.ex" -> "lib/components/signup/signup_form_live.ex" [label="(export)"] + "lib/views/signup/signup_live.ex" -> "lib/views/signup/signup_controller.ex" + "lib/views/signup/signup_live.ex" + "lib/views/switch_user/switch_user_controller.ex" + "lib/views/switch_user/switch_user_controller.ex" -> "lib/views/switch_user/switch_user_live.ex" + "lib/views/switch_user/switch_user_live.ex" -> "lib/components/switch_user/account_users_live.ex" [label="(export)"] + "lib/views/switch_user/switch_user_live.ex" -> "lib/live_plugs/account_required.ex" + "lib/views/switch_user/switch_user_live.ex" -> "lib/live_plugs/load_current_account.ex" + "lib/views/switch_user/switch_user_live.ex" -> "lib/live_plugs/load_current_account_users.ex" + "lib/views/switch_user/switch_user_live.ex" + "lib/views/users_directory/users_directory_live.ex" + "lib/web/components/form_extras_live.ex" + "lib/web/components/profile_inventory_live.ex" + "lib/web/components/sidebar_navigation_live.ex" + "lib/web/pages/inventory/inventory_live.ex" + "lib/web/pages/materials/materials_live.ex" + "lib/web/pages/process/process_live.ex" -> "lib/web/components/form_extras_live.ex" + "lib/web/pages/resource/resource_live.ex" + "lib/web/pages/resource/resource_live.ex" -> "lib/web/components/form_extras_live.ex" + "lib/web/pages/resource/resource_live.ex" -> "lib/web/pages/process/process_live.ex" [label="(compile)"] + "lib/web/reflow_routes.ex" + "lib/components/activity/actions/actions_live.ex" + "lib/components/activity/actions/actions_live.ex" -> "lib/components/activity/actions/more_actions_live.ex" [label="(export)"] + "lib/components/activity/actions/more_actions_live.ex" -> "lib/components/activity/actions/delete_object_live.ex" [label="(export)"] + "lib/components/activity/actions/delete_object_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/components/activity/actions/more_actions_live.ex" -> "lib/components/activity/actions/pin/pin_action_live.ex" [label="(export)"] + "lib/components/activity/actions/more_actions_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/components/activity/actions/actions_live.ex" -> "lib/components/activity/actions/reactions_live.ex" [label="(export)"] + "lib/components/activity/actions/reactions_live.ex" -> "lib/components/activity/actions/actions_live.ex" + "lib/components/activity/actions/reactions_live.ex" -> "lib/components/activity/actions/reply/reply_live.ex" [label="(export)"] + "lib/components/activity/actions/actions_live.ex" -> "lib/components/object_with_thread/object_thread_load_live.ex" + "lib/components/object_with_thread/object_thread_load_live.ex" -> "lib/components/object_with_thread/object_thread_live.ex" [label="(export)"] + "lib/components/object_with_thread/object_thread_live.ex" -> "lib/components/activity/activity_live.ex" [label="(export)"] + "lib/components/activity/activity_live.ex" -> "lib/components/activity/actions/actions_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/actions/category_actions/category_actions_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/actions/event_actions/event_actions_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/actions/flagged_actions_live.ex" + "lib/components/activity/actions/flagged_actions_live.ex" -> "lib/components/activity/actions/delete_object_live.ex" [label="(export)"] + "lib/components/activity/actions/flagged_actions_live.ex" -> "lib/components/activity/actions/more_actions_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/actions/process_actions/process_actions_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/media/media_live.ex" + "lib/components/activity/media/media_live.ex" -> "lib/components/activity/media/remote_media_live.ex" [label="(export)"] + "lib/components/activity/media/remote_media_live.ex" -> "lib/components/activity/media/media_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/category/category_live.ex" + "lib/components/activity/object/category/category_live.ex" -> "lib/components/activity/actions/category_actions/category_actions_live.ex" [label="(export)"] + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/character/character_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/economic_event/economic_event_live.ex" + "lib/components/activity/object/economic_event/economic_event_live.ex" -> "lib/components/activity/object/economic_resource/economic_resource_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/economic_resource/economic_resource_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/intent/intent_task_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/note/note_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/process/process_list/process_list_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/object/unknown/unknown_live.ex" + "lib/components/activity/activity_live.ex" -> "lib/components/activity/subject/subject_live.ex" + "lib/components/activity/subject/subject_live.ex" -> "lib/components/activity/actions/more_actions_live.ex" [label="(export)"] + "lib/components/activity/subject/subject_live.ex" -> "lib/components/activity/date_ago_live.ex" [label="(export)"] + "lib/components/activity/date_ago_live.ex" -> "lib/components/activity/instance_icon_live.ex" [label="(export)"] + "lib/components/activity/subject/subject_live.ex" -> "lib/components/activity/instance_icon_live.ex" [label="(export)"] + "lib/components/activity/activity_live.ex" -> "lib/components/activity/subject/subject_minimal_live.ex" + "lib/components/activity/subject/subject_minimal_live.ex" -> "lib/components/activity/date_ago_live.ex" [label="(export)"] + "lib/components/object_with_thread/object_thread_live.ex" -> "lib/components/thread/thread_live.ex" [label="(export)"] + "lib/components/thread/thread_live.ex" -> "lib/components/smart_input/write/write_post_content_live.ex" + "lib/components/smart_input/write/write_post_content_live.ex" -> "lib/live_handlers/posts_live_handler.ex" + "lib/live_handlers/posts_live_handler.ex" -> "lib/live_handlers/messages_live_handler.ex" + "lib/live_handlers/messages_live_handler.ex" -> "lib/components/messages/message_threads_live.ex" + "lib/components/thread/thread_live.ex" -> "lib/components/thread/comment_live.ex" [label="(export)"] + "lib/components/thread/comment_live.ex" -> "lib/components/activity/activity_live.ex" [label="(export)"] + "lib/components/thread/thread_live.ex" -> "lib/live_handlers/threads_live_handler.ex" + "lib/live_handlers/threads_live_handler.ex" -> "lib/components/thread/thread_live.ex" + "lib/components/object_with_thread/object_thread_load_live.ex" -> "lib/live_handlers/objects_live_handler.ex" + "lib/components/activity/actions/category_actions/category_actions_live.ex" + "lib/components/activity/actions/delete_object_live.ex" + "lib/components/activity/actions/event_actions/event_actions_live.ex" + "lib/components/activity/actions/flagged_actions_live.ex" + "lib/components/activity/actions/main_object_info_live.ex" + "lib/components/activity/actions/more_actions_live.ex" + "lib/components/activity/actions/no_actions_live.ex" + "lib/components/activity/actions/pin/pin_action_live.ex" + "lib/components/activity/actions/process_actions/process_actions_live.ex" + "lib/components/activity/actions/reactions_live.ex" + "lib/components/activity/actions/reply/reply_live.ex" + "lib/components/activity/actions/view_thread/view_thread_live.ex" + "lib/components/activity/activity_live.ex" + "lib/components/activity/date_ago_live.ex" + "lib/components/activity/instance_icon_live.ex" + "lib/components/activity/media/media_live.ex" + "lib/components/activity/media/remote_media_live.ex" + "lib/components/activity/object/category/category_live.ex" + "lib/components/activity/object/character/character_live.ex" + "lib/components/activity/object/economic_event/economic_event_live.ex" + "lib/components/activity/object/economic_resource/economic_resource_live.ex" + "lib/components/activity/object/intent/intent_task_live.ex" + "lib/components/activity/object/note/note_live.ex" + "lib/components/activity/object/process/process_list/process_list_live.ex" + "lib/components/activity/object/process/process_reflow/process_reflow_live.ex" + "lib/components/activity/object/unknown/unknown_live.ex" + "lib/components/activity/replied_date_ago_live.ex" + "lib/components/activity/replied_date_ago_live.ex" -> "lib/components/activity/instance_icon_live.ex" [label="(export)"] + "lib/components/activity/subject/provider_receiver_live.ex" + "lib/components/activity/subject/provider_receiver_live.ex" -> "lib/components/activity/instance_icon_live.ex" [label="(export)"] + "lib/components/activity/subject/subject_live.ex" + "lib/components/activity/subject/subject_minimal_live.ex" + "lib/components/feeds/feed_live.ex" + "lib/components/feeds/feed_live.ex" -> "lib/components/activity/activity_live.ex" [label="(export)"] + "lib/components/feeds/feed_live.ex" -> "lib/live_handlers/feeds_live_handler.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/activity/object/category/category_live.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/activity/object/character/character_live.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/activity/object/economic_event/economic_event_live.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/activity/object/economic_resource/economic_resource_live.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/activity/object/intent/intent_task_live.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/activity/object/process/process_list/process_list_live.ex" + "lib/live_handlers/feeds_live_handler.ex" -> "lib/components/feeds/feed_live.ex" + "lib/components/feeds/header_aside_feeds_live.ex" + "lib/components/feeds/header_aside_notifications_seen_live.ex" + "lib/components/feeds/profile_boosts/profile_boosts_live.ex" + "lib/components/feeds/profile_boosts/profile_boosts_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/components/feeds/profile_posts/profile_posts_live.ex" + "lib/components/feeds/profile_posts/profile_posts_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/components/feeds/profile_timeline/profile_timeline_live.ex" + "lib/components/feeds/profile_timeline/profile_timeline_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/components/flags/flags_live.ex" + "lib/components/flags/flags_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/components/hero/hero_live.ex" + "lib/components/messages/message_threads_live.ex" + "lib/components/messages/sidebar_messages_mobile_live.ex" + "lib/components/messages/sidebar_messages_mobile_live.ex" -> "lib/components/messages/message_threads_live.ex" [label="(export)"] + "lib/components/object_with_thread/banner_previous_thread/banner_previous_thread_live.ex" + "lib/components/object_with_thread/object_header_aside/object_header_aside_live.ex" + "lib/components/object_with_thread/object_thread_live.ex" + "lib/components/object_with_thread/object_thread_load_live.ex" + "lib/components/settings/my_feed_item_live.ex" + "lib/components/settings/my_feed_items_live.ex" + "lib/components/settings/my_feed_items_live.ex" -> "lib/components/settings/my_feed_item_live.ex" [label="(export)"] + "lib/components/smart_input/write/old/set_cw_live.ex" + "lib/components/smart_input/write/write_post_content_live.ex" + "lib/components/thread/comment_live.ex" + "lib/components/thread/load_previous_live.ex" + "lib/components/thread/thread_live.ex" + "lib/components/widgets/widget_messages/widget_messages_live.ex" + "lib/components/widgets/widget_notification/widget_notification_live.ex" + "lib/components/widgets/widget_notification/widget_notification_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/live_handlers/boosts_live_handler.ex" + "lib/live_handlers/feeds_live_handler.ex" + "lib/live_handlers/flags_live_handler.ex" + "lib/live_handlers/follows_live_handler.ex" + "lib/live_handlers/likes_live_handler.ex" + "lib/live_handlers/messages_live_handler.ex" + "lib/live_handlers/objects_live_handler.ex" + "lib/live_handlers/pins_live_handler.ex" + "lib/live_handlers/posts_live_handler.ex" + "lib/live_handlers/threads_live_handler.ex" + "lib/social_routes.ex" + "lib/views/_deprecated/federation/federation_live.ex" + "lib/views/_deprecated/federation/federation_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/views/_deprecated/federation/federation_live.ex" -> "lib/live_handlers/feeds_live_handler.ex" + "lib/views/_deprecated/likes/likes_live.ex" + "lib/views/_deprecated/likes/likes_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/views/_deprecated/likes/likes_live.ex" -> "lib/live_handlers/feeds_live_handler.ex" + "lib/views/_deprecated/local/local_live.ex" + "lib/views/_deprecated/local/local_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/views/_deprecated/local/local_live.ex" -> "lib/live_handlers/feeds_live_handler.ex" + "lib/views/feeds/feeds_live.ex" + "lib/views/feeds/feeds_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/views/feeds/feeds_live.ex" -> "lib/live_handlers/feeds_live_handler.ex" + "lib/views/feeds/feeds_live.ex" -> "lib/views/_deprecated/federation/federation_live.ex" + "lib/views/feeds/feeds_live.ex" -> "lib/views/_deprecated/likes/likes_live.ex" + "lib/views/feeds/feeds_live.ex" -> "lib/views/_deprecated/local/local_live.ex" + "lib/views/feeds/notifications/notifications_live.ex" + "lib/views/feeds/notifications/notifications_live.ex" -> "lib/components/feeds/feed_live.ex" [label="(export)"] + "lib/views/feeds/notifications/notifications_live.ex" -> "lib/components/feeds/header_aside_notifications_seen_live.ex" + "lib/views/messages/messages_live.ex" + "lib/views/messages/messages_live.ex" -> "lib/components/feeds/header_aside_notifications_seen_live.ex" + "lib/views/messages/messages_live.ex" -> "lib/components/object_with_thread/object_thread_live.ex" [label="(export)"] + "lib/views/messages/messages_live.ex" -> "lib/live_handlers/messages_live_handler.ex" + "lib/views/threads/discussion_live.ex" + "lib/views/threads/discussion_live.ex" -> "lib/components/object_with_thread/object_thread_live.ex" [label="(export)"] + "lib/views/threads/discussion_live.ex" -> "lib/live_handlers/objects_live_handler.ex" + "lib/views/threads/post_live.ex" + "lib/views/threads/post_live.ex" -> "lib/components/object_with_thread/object_thread_live.ex" [label="(export)"] + "lib/views/threads/post_live.ex" -> "lib/live_handlers/objects_live_handler.ex" + "lib/views/threads/write_live.ex" + "lib/components/assign_item/assign_item_live.ex" + "lib/components/create_economic_event/create_economic_event_live.ex" + "lib/components/create_economic_event/live_handler.ex" + "lib/components/create_economic_event/live_handler.ex" -> "lib/live/resource_live_handler.ex" + "lib/components/create_economic_event/live_handler.ex" -> "lib/live/resource_spec_live_handler.ex" + "lib/components/create_intent/create_intent_live.ex" + "lib/components/create_intent/create_intent_live.ex" -> "lib/components/assign_item/assign_item_live.ex" [label="(export)"] + "lib/components/create_intent/create_intent_live.ex" -> "lib/components/select_process/select_process_live.ex" [label="(export)"] + "lib/components/select_process/select_process_live.ex" -> "lib/components/processes_list/processes_list_live.ex" + "lib/components/create_intent/deprecated/publish_ad_live.ex" + "lib/components/create_intent/intent_create_activity_fields_live.ex" + "lib/components/create_intent/intent_create_activity_fields_live.ex" -> "lib/components/geolocations/add_location_live.ex" + "lib/components/create_intent/intent_create_activity_fields_live.ex" -> "lib/components/label/add_label_live.ex" + "lib/components/label/add_label_live.ex" -> "lib/components/label/create_label_live.ex" + "lib/components/create_intent/intent_create_activity_fields_live.ex" -> "lib/components/milestones/add_milestone_live.ex" + "lib/components/create_intent/intent_create_activity_live.ex" + "lib/components/create_intent/intent_create_activity_live.ex" -> "lib/components/create_intent/intent_create_activity_fields_live.ex" + "lib/components/create_process/create_process_live.ex" + "lib/components/create_process/create_process_live.ex" -> "lib/live/process_live_handler.ex" + "lib/components/create_process/create_process_smart_input_live.ex" + "lib/components/create_process/create_process_smart_input_live.ex" -> "lib/components/create_process/create_process_live.ex" [label="(export)"] + "lib/components/create_resource_specification/create_resource_spec_form.ex" + "lib/components/create_resource_specification/create_resource_spec_form.ex" -> "lib/integration.ex" [label="(export)"] + "lib/components/create_resource_specification/create_resource_specification_live.ex" + "lib/components/create_resource_specification/create_resource_specification_live.ex" -> "lib/components/create_resource_specification/create_resource_spec_form.ex" + "lib/components/create_unit/create_unit_form.ex" + "lib/components/create_unit/create_unit_live.ex" + "lib/components/create_unit/create_unit_live.ex" -> "lib/components/create_unit/create_unit_form.ex" + "lib/components/create_value_calculation/create_value_calculation_form.ex" + "lib/components/create_value_calculation/create_value_calculation_live.ex" + "lib/components/create_value_calculation/create_value_calculation_live.ex" -> "lib/components/create_value_calculation/create_value_calculation_form.ex" + "lib/components/due_item/due_item_live.ex" + "lib/components/due_item/simple_due_item/simple_due_item_live.ex" + "lib/components/edit_description/edit_description_live.ex" + "lib/components/edit_process/edit_process_live.ex" + "lib/components/filters/filters_live.ex" + "lib/components/geolocations/add_location_live.ex" + "lib/components/label/add_label_live.ex" + "lib/components/label/create_label_live.ex" + "lib/components/like_item/like_item_live.ex" + "lib/components/location/location_widget_live.ex" + "lib/components/milestones/add_milestone_live.ex" + "lib/components/milestones/create_milestone_live.ex" + "lib/components/primary_accountable/primary_accountable_widget_live.ex" + "lib/components/process/process_hero/process_hero_live.ex" + "lib/components/processes_list/processes_list_live.ex" + "lib/components/proposal_feed/deprecated/ads_live.ex" + "lib/components/proposal_feed/deprecated/proposal_feed_live.ex" + "lib/components/resource/resource_hero_live.ex" + "lib/components/resource/resource_navigation_live.ex" + "lib/components/resource_item/resource_item_live.ex" + "lib/components/select_economic_event/select_economic_event_live.ex" + "lib/components/select_economic_event/select_economic_event_live.ex" -> "lib/components/create_economic_event/create_economic_event_live.ex" [label="(export)"] + "lib/components/select_process/select_process_live.ex" + "lib/components/status_item/status_item_live.ex" + "lib/components/widgets/filter_intents/filter_intents_live.ex" + "lib/live/event_live_handler.ex" + "lib/live/intent_live_handler.ex" + "lib/live/process_live_handler.ex" + "lib/live/resource_live_handler.ex" + "lib/live/resource_spec_live_handler.ex" + "lib/views/settings/settings_live.ex" -> "lib/components/create_resource_specification/create_resource_specification_live.ex" + "lib/views/settings/settings_live.ex" -> "lib/components/create_unit/create_unit_live.ex" + "lib/views/settings/settings_live.ex" -> "lib/components/create_value_calculation/create_value_calculation_live.ex" + "lib/web_upcycle/components/_deprecated/create_need/create_need_live.ex" + "lib/web_upcycle/components/_deprecated/create_need/create_need_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/_deprecated/create_offer/create_offer_live.ex" + "lib/web_upcycle/components/_deprecated/create_offer/create_offer_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/_deprecated/create_offer/create_offer_live.ex" -> "lib/web_upcycle/components/resource/create_resource_live.ex" [label="(export)"] + "lib/web_upcycle/components/resource/create_resource_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/_deprecated/main_navigation/main_navigation_live.ex" + "lib/web_upcycle/components/_deprecated/my_offers/my_offers_live.ex" + "lib/web_upcycle/components/_deprecated/my_offers/my_offers_live.ex" -> "lib/web_upcycle/components/intent/intent_preview_live.ex" [label="(export)"] + "lib/web_upcycle/components/intent/intent_preview_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/discover/discover_live.ex" + "lib/web_upcycle/components/discover/discover_live.ex" -> "lib/web_upcycle/components/intent/intent_preview_live.ex" [label="(export)"] + "lib/web_upcycle/components/intent/create_intent_live.ex" + "lib/web_upcycle/components/intent/create_intent_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/intent/intent_preview_live.ex" + "lib/web_upcycle/components/intent/my_intents_live.ex" + "lib/web_upcycle/components/intent/my_intents_live.ex" -> "lib/web_upcycle/components/intent/intent_preview_live.ex" [label="(export)"] + "lib/web_upcycle/components/resource/create_resource_live.ex" + "lib/web_upcycle/components/resource/edit_resource_live.ex" + "lib/web_upcycle/components/resource/edit_resource_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/resource/resource_actions_live.ex" + "lib/web_upcycle/components/resource/resource_actions_live.ex" -> "lib/web_upcycle/components/resource/edit_resource_live.ex" [label="(export)"] + "lib/web_upcycle/components/resource/resource_preview_live.ex" + "lib/web_upcycle/components/resource/resource_preview_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/resource/resource_preview_live.ex" -> "lib/web_upcycle/components/resource/resource_actions_live.ex" [label="(export)"] + "lib/web_upcycle/components/transfer/create_transfer_live.ex" + "lib/web_upcycle/components/transfer/create_transfer_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/components/transfer/transfer_live.ex" + "lib/web_upcycle/components/transfer/transfer_live.ex" -> "lib/web_upcycle/components/resource/resource_preview_live.ex" [label="(export)"] + "lib/web_upcycle/pages/home/home_live.ex" + "lib/web_upcycle/pages/home/home_live.ex" -> "lib/web_upcycle/components/discover/discover_live.ex" [label="(export)"] + "lib/web_upcycle/pages/home/home_live.ex" -> "lib/web_upcycle/components/intent/my_intents_live.ex" [label="(export)"] + "lib/web_upcycle/pages/home/home_live.ex" -> "lib/web_upcycle/components/resource/create_resource_live.ex" [label="(export)"] + "lib/web_upcycle/pages/home/home_live.ex" -> "lib/web_upcycle/components/transfer/create_transfer_live.ex" [label="(export)"] + "lib/web_upcycle/pages/intent/intent_live.ex" + "lib/web_upcycle/pages/intent/intent_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/pages/intent/intent_live.ex" -> "lib/web_upcycle/pages/intent/matches_live.ex" [label="(export)"] + "lib/web_upcycle/pages/intent/matches_live.ex" + "lib/web_upcycle/pages/inventory_live.ex" + "lib/web_upcycle/pages/map_live.ex" + "lib/web_upcycle/pages/org_register_live.ex" + "lib/web_upcycle/pages/organizations_live.ex" + "lib/web_upcycle/pages/register_live.ex" + "lib/web_upcycle/pages/resource/inventory_live.ex" + "lib/web_upcycle/pages/resource/inventory_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/pages/resource/inventory_live.ex" -> "lib/web_upcycle/components/resource/resource_preview_live.ex" [label="(export)"] + "lib/web_upcycle/pages/resource/resource_live.ex" + "lib/web_upcycle/pages/resource/resource_live.ex" -> "lib/integration.ex" [label="(export)"] + "lib/web_upcycle/pages/resource/resource_live.ex" -> "lib/web_upcycle/components/resource/resource_actions_live.ex" [label="(export)"] + "lib/web_upcycle/pages/starred/starred_live.ex" + "lib/web_upcycle/pages/transfer_live.ex" + "lib/web_upcycle/pages/transfers/transfers_live.ex" + "lib/web_upcycle/pages/transfers/transfers_live.ex" -> "lib/web_upcycle/components/transfer/transfer_live.ex" [label="(export)"] + "lib/web_upcycle/pages/user_login.ex" + "lib/web_upcycle/pages/view_inventory_live.ex" + "lib/web_upcycle/routes.ex" + "lib/agent/agent_graphql.ex" + "lib/agent/agent_graphql.ex" -> "lib/agent/agents.ex" + "lib/agent/agents.ex" -> "lib/agent/organizations.ex" + "lib/agent/organizations.ex" -> "lib/agent/agents.ex" + "lib/agent/agents.ex" -> "lib/agent/people.ex" + "lib/agent/people.ex" -> "lib/agent/agents.ex" + "lib/agent/agents.ex" -> "lib/util/util.ex" + "lib/util/util.ex" -> "lib/util/federation.ex" + "lib/util/federation.ex" -> "lib/knowledge/action/actions.ex" + "lib/knowledge/action/actions.ex" -> "lib/knowledge/action/action.ex" [label="(export)"] + "lib/agent/agent_graphql.ex" -> "lib/agent/organizations.ex" + "lib/agent/agent_graphql.ex" -> "lib/agent/people.ex" + "lib/agent/agents.ex" + "lib/agent/organizations.ex" + "lib/agent/people.ex" + "lib/agreement/agreement.ex" + "lib/agreement/graphql.ex" + "lib/all_migrations.ex" + "lib/all_migrations.ex" -> "lib/claim/migrations.ex" + "lib/claim/migrations.ex" -> "lib/claim/claim.ex" + "lib/claim/claim.ex" -> "lib/economic_event/event.ex" + "lib/economic_event/event.ex" -> "lib/economic_event/event_queries.ex" + "lib/economic_event/event_queries.ex" -> "lib/economic_event/event.ex" + "lib/economic_event/event_queries.ex" -> "lib/util/util.ex" + "lib/economic_event/event.ex" -> "lib/economic_event/events.ex" + "lib/economic_event/events.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/economic_event/events.ex" -> "lib/economic_event/event_queries.ex" + "lib/economic_event/events.ex" -> "lib/economic_event/event_side_effects.ex" + "lib/economic_event/event_side_effects.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/economic_event/event_side_effects.ex" -> "lib/economic_resource/resources.ex" + "lib/economic_resource/resources.ex" -> "lib/economic_event/trace.ex" + "lib/economic_event/trace.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/economic_event/trace.ex" -> "lib/economic_event/events.ex" + "lib/economic_event/trace.ex" -> "lib/economic_resource/resource.ex" [label="(export)"] + "lib/economic_resource/resource.ex" -> "lib/economic_resource/resource_queries.ex" + "lib/economic_resource/resource_queries.ex" -> "lib/economic_event/event.ex" + "lib/economic_resource/resource_queries.ex" -> "lib/economic_resource/resource.ex" + "lib/economic_resource/resource_queries.ex" -> "lib/util/util.ex" + "lib/economic_resource/resource.ex" -> "lib/economic_resource/resources.ex" + "lib/economic_resource/resource.ex" -> "lib/knowledge/action/action.ex" + "lib/economic_resource/resource.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/knowledge/resource_specification/resource_spec.ex" -> "lib/economic_resource/resource.ex" + "lib/knowledge/resource_specification/resource_spec.ex" -> "lib/knowledge/resource_specification/resource_spec_queries.ex" + "lib/knowledge/resource_specification/resource_spec_queries.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/knowledge/resource_specification/resource_spec_queries.ex" -> "lib/util/util.ex" + "lib/knowledge/resource_specification/resource_spec.ex" -> "lib/knowledge/resource_specification/resource_specs.ex" + "lib/knowledge/resource_specification/resource_specs.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" [label="(export)"] + "lib/knowledge/resource_specification/resource_specs.ex" -> "lib/knowledge/resource_specification/resource_spec_queries.ex" + "lib/knowledge/resource_specification/resource_specs.ex" -> "lib/util/federation.ex" + "lib/knowledge/resource_specification/resource_specs.ex" -> "lib/util/util.ex" + "lib/knowledge/resource_specification/resource_spec.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/economic_resource/resource.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/economic_event/trace.ex" -> "lib/economic_resource/resources.ex" + "lib/economic_event/trace.ex" -> "lib/process/process.ex" [label="(export)"] + "lib/process/process.ex" -> "lib/economic_event/event.ex" + "lib/process/process.ex" -> "lib/knowledge/process_specification/process_spec.ex" + "lib/knowledge/process_specification/process_spec.ex" -> "lib/knowledge/process_specification/process_spec_queries.ex" + "lib/knowledge/process_specification/process_spec_queries.ex" -> "lib/knowledge/process_specification/process_spec.ex" + "lib/knowledge/process_specification/process_spec_queries.ex" -> "lib/util/util.ex" + "lib/knowledge/process_specification/process_spec.ex" -> "lib/knowledge/process_specification/process_specs.ex" + "lib/knowledge/process_specification/process_specs.ex" -> "lib/knowledge/process_specification/process_spec.ex" [label="(export)"] + "lib/knowledge/process_specification/process_specs.ex" -> "lib/knowledge/process_specification/process_spec_queries.ex" + "lib/knowledge/process_specification/process_specs.ex" -> "lib/util/federation.ex" + "lib/knowledge/process_specification/process_specs.ex" -> "lib/util/util.ex" + "lib/knowledge/process_specification/process_spec.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/process/process.ex" -> "lib/planning/intent/intent.ex" + "lib/planning/intent/intent.ex" -> "lib/economic_resource/resource.ex" + "lib/planning/intent/intent.ex" -> "lib/knowledge/action/action.ex" + "lib/planning/intent/intent.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/planning/intent/intent.ex" -> "lib/planning/intent/intent_queries.ex" + "lib/planning/intent/intent_queries.ex" -> "lib/planning/intent/intent.ex" + "lib/planning/intent/intent_queries.ex" -> "lib/util/util.ex" + "lib/planning/intent/intent.ex" -> "lib/planning/intent/intents.ex" + "lib/planning/intent/intents.ex" -> "lib/knowledge/action/actions.ex" + "lib/planning/intent/intents.ex" -> "lib/planning/intent/intent.ex" [label="(export)"] + "lib/planning/intent/intents.ex" -> "lib/planning/intent/intent_queries.ex" + "lib/planning/intent/intents.ex" -> "lib/util/federation.ex" + "lib/planning/intent/intents.ex" -> "lib/util/util.ex" + "lib/planning/intent/intent.ex" -> "lib/process/process.ex" + "lib/planning/intent/intent.ex" -> "lib/proposal/proposal.ex" + "lib/proposal/proposal.ex" -> "lib/planning/intent/intent.ex" + "lib/proposal/proposal.ex" -> "lib/proposal/proposal_queries.ex" + "lib/proposal/proposal_queries.ex" -> "lib/proposal/proposal.ex" + "lib/proposal/proposal_queries.ex" -> "lib/util/util.ex" + "lib/proposal/proposal.ex" -> "lib/proposal/proposals.ex" + "lib/proposal/proposals.ex" -> "lib/proposal/proposal.ex" [label="(export)"] + "lib/proposal/proposals.ex" -> "lib/proposal/proposal_queries.ex" + "lib/proposal/proposals.ex" -> "lib/util/federation.ex" + "lib/proposal/proposals.ex" -> "lib/util/util.ex" + "lib/proposal/proposal.ex" -> "lib/proposal/proposed_intent.ex" + "lib/proposal/proposed_intent.ex" -> "lib/planning/intent/intent.ex" [label="(export)"] + "lib/proposal/proposed_intent.ex" -> "lib/proposal/proposal.ex" [label="(export)"] + "lib/proposal/proposal.ex" -> "lib/proposal/proposed_to.ex" + "lib/proposal/proposed_to.ex" -> "lib/proposal/proposal.ex" [label="(export)"] + "lib/proposal/proposal.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/planning/intent/intent.ex" -> "lib/proposal/proposed_intent.ex" + "lib/planning/intent/intent.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/process/process.ex" -> "lib/process/process_queries.ex" + "lib/process/process_queries.ex" -> "lib/process/process.ex" + "lib/process/process_queries.ex" -> "lib/util/util.ex" + "lib/process/process.ex" -> "lib/process/processes.ex" + "lib/process/processes.ex" -> "lib/economic_event/events.ex" + "lib/process/processes.ex" -> "lib/economic_event/trace.ex" + "lib/process/processes.ex" -> "lib/economic_event/track.ex" + "lib/economic_event/track.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/economic_event/track.ex" -> "lib/economic_event/events.ex" + "lib/economic_event/track.ex" -> "lib/economic_resource/resource.ex" [label="(export)"] + "lib/economic_event/track.ex" -> "lib/economic_resource/resources.ex" + "lib/economic_event/track.ex" -> "lib/process/process.ex" [label="(export)"] + "lib/economic_event/track.ex" -> "lib/process/processes.ex" + "lib/economic_event/track.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/process/processes.ex" -> "lib/planning/intent/intents.ex" + "lib/process/processes.ex" -> "lib/process/process.ex" [label="(export)"] + "lib/process/processes.ex" -> "lib/process/process_queries.ex" + "lib/process/processes.ex" -> "lib/util/federation.ex" + "lib/process/processes.ex" -> "lib/util/util.ex" + "lib/process/process.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/economic_event/trace.ex" -> "lib/process/processes.ex" + "lib/economic_event/trace.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/economic_resource/resources.ex" -> "lib/economic_event/track.ex" + "lib/economic_resource/resources.ex" -> "lib/economic_resource/resource.ex" [label="(export)"] + "lib/economic_resource/resources.ex" -> "lib/economic_resource/resource_queries.ex" + "lib/economic_resource/resources.ex" -> "lib/knowledge/action/actions.ex" + "lib/economic_resource/resources.ex" -> "lib/util/federation.ex" + "lib/economic_resource/resources.ex" -> "lib/util/util.ex" + "lib/economic_event/events.ex" -> "lib/economic_event/trace.ex" + "lib/economic_event/events.ex" -> "lib/economic_event/track.ex" + "lib/economic_event/events.ex" -> "lib/economic_resource/resources.ex" + "lib/economic_event/events.ex" -> "lib/knowledge/action/actions.ex" + "lib/economic_event/events.ex" -> "lib/knowledge/resource_specification/resource_specs.ex" + "lib/economic_event/events.ex" -> "lib/util/federation.ex" + "lib/economic_event/events.ex" -> "lib/util/util.ex" + "lib/economic_event/events.ex" -> "lib/value_calculation/value_calculations.ex" + "lib/value_calculation/value_calculations.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/value_calculation/value_calculations.ex" -> "lib/knowledge/action/actions.ex" + "lib/value_calculation/value_calculations.ex" -> "lib/util/util.ex" + "lib/value_calculation/value_calculations.ex" -> "lib/value_calculation/formula2.ex" + "lib/value_calculation/value_calculations.ex" -> "lib/value_calculation/value_calc_queries.ex" + "lib/value_calculation/value_calc_queries.ex" -> "lib/util/util.ex" + "lib/value_calculation/value_calc_queries.ex" -> "lib/value_calculation/value_calculation.ex" + "lib/value_calculation/value_calculation.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/value_calculation/value_calculation.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/value_calculation/value_calculation.ex" -> "lib/value_calculation/value_calc_queries.ex" + "lib/value_calculation/value_calculations.ex" -> "lib/value_calculation/value_calculation.ex" [label="(export)"] + "lib/economic_event/event.ex" -> "lib/economic_resource/resource.ex" + "lib/economic_event/event.ex" -> "lib/knowledge/action/action.ex" + "lib/economic_event/event.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/economic_event/event.ex" -> "lib/process/process.ex" + "lib/economic_event/event.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/economic_event/event.ex" -> "lib/value_calculation/value_calculation.ex" + "lib/claim/claim.ex" -> "lib/knowledge/action/action.ex" + "lib/claim/claim.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/claim/claim.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/claim/migrations.ex" -> "lib/economic_event/event.ex" + "lib/claim/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/claim/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/economic_event/migrations.ex" + "lib/economic_event/migrations.ex" -> "lib/economic_event/event.ex" + "lib/economic_event/migrations.ex" -> "lib/economic_resource/resource.ex" + "lib/economic_event/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/economic_event/migrations.ex" -> "lib/process/process.ex" + "lib/economic_event/migrations.ex" -> "lib/util/util.ex" + "lib/economic_event/migrations.ex" -> "lib/value_calculation/value_calculation.ex" + "lib/all_migrations.ex" -> "lib/economic_resource/migrations.ex" + "lib/economic_resource/migrations.ex" -> "lib/economic_resource/resource.ex" + "lib/economic_resource/migrations.ex" -> "lib/knowledge/process_specification/process_spec.ex" + "lib/economic_resource/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/economic_resource/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/knowledge/process_specification/migrations.ex" + "lib/knowledge/process_specification/migrations.ex" -> "lib/knowledge/process_specification/process_spec.ex" + "lib/knowledge/process_specification/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/knowledge/process_specification/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/knowledge/resource_specification/migrations.ex" + "lib/knowledge/resource_specification/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/knowledge/resource_specification/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/planning/commitment/migrations.ex" + "lib/planning/commitment/migrations.ex" -> "lib/economic_resource/resource.ex" + "lib/planning/commitment/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/planning/commitment/migrations.ex" -> "lib/planning/commitment/commitment.ex" + "lib/planning/commitment/commitment.ex" -> "lib/economic_resource/resource.ex" + "lib/planning/commitment/commitment.ex" -> "lib/knowledge/action/action.ex" + "lib/planning/commitment/commitment.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/planning/commitment/commitment.ex" -> "lib/planning/commitment/commitment_queries.ex" + "lib/planning/commitment/commitment_queries.ex" -> "lib/planning/commitment/commitment.ex" + "lib/planning/commitment/commitment_queries.ex" -> "lib/util/util.ex" + "lib/planning/commitment/commitment.ex" -> "lib/planning/commitment/commitments.ex" + "lib/planning/commitment/commitments.ex" -> "lib/knowledge/action/actions.ex" + "lib/planning/commitment/commitments.ex" -> "lib/planning/commitment/commitment.ex" + "lib/planning/commitment/commitments.ex" -> "lib/planning/commitment/commitment_queries.ex" + "lib/planning/commitment/commitments.ex" -> "lib/util/util.ex" [label="(export)"] + "lib/planning/commitment/commitment.ex" -> "lib/process/process.ex" + "lib/planning/commitment/commitment.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/planning/commitment/migrations.ex" -> "lib/process/process.ex" + "lib/planning/commitment/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/planning/intent/migrations.ex" + "lib/planning/intent/migrations.ex" -> "lib/economic_resource/resource.ex" + "lib/planning/intent/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/planning/intent/migrations.ex" -> "lib/planning/intent/intent.ex" + "lib/planning/intent/migrations.ex" -> "lib/process/process.ex" + "lib/planning/intent/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/planning/satisfaction/migrations.ex" + "lib/planning/satisfaction/migrations.ex" -> "lib/planning/intent/intent.ex" + "lib/planning/satisfaction/migrations.ex" -> "lib/planning/satisfaction/satisfaction.ex" + "lib/planning/satisfaction/satisfaction.ex" -> "lib/planning/intent/intent.ex" + "lib/planning/satisfaction/satisfaction.ex" -> "lib/planning/satisfaction/satisfaction_queries.ex" + "lib/planning/satisfaction/satisfaction_queries.ex" -> "lib/planning/satisfaction/satisfaction.ex" + "lib/planning/satisfaction/satisfaction_queries.ex" -> "lib/util/util.ex" + "lib/planning/satisfaction/satisfaction.ex" -> "lib/planning/satisfaction/satisfactions.ex" + "lib/planning/satisfaction/satisfactions.ex" -> "lib/planning/satisfaction/satisfaction.ex" + "lib/planning/satisfaction/satisfactions.ex" -> "lib/planning/satisfaction/satisfaction_queries.ex" + "lib/planning/satisfaction/satisfactions.ex" -> "lib/util/util.ex" [label="(export)"] + "lib/planning/satisfaction/satisfaction.ex" -> "lib/util/util.ex" [label="(compile)"] + "lib/planning/satisfaction/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/process/migrations.ex" + "lib/process/migrations.ex" -> "lib/knowledge/process_specification/process_spec.ex" + "lib/process/migrations.ex" -> "lib/process/process.ex" + "lib/process/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/proposal/migrations.ex" + "lib/proposal/migrations.ex" -> "lib/planning/intent/intent.ex" + "lib/proposal/migrations.ex" -> "lib/proposal/proposal.ex" + "lib/proposal/migrations.ex" -> "lib/proposal/proposed_intent.ex" + "lib/proposal/migrations.ex" -> "lib/proposal/proposed_to.ex" + "lib/proposal/migrations.ex" -> "lib/util/util.ex" + "lib/all_migrations.ex" -> "lib/value_calculation/migrations.ex" + "lib/value_calculation/migrations.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/value_calculation/migrations.ex" -> "lib/util/util.ex" + "lib/value_calculation/migrations.ex" -> "lib/value_calculation/value_calculation.ex" + "lib/appreciation/graphql.ex" + "lib/claim/claim.ex" + "lib/claim/claim_queries.ex" + "lib/claim/claim_queries.ex" -> "lib/claim/claim.ex" + "lib/claim/claim_queries.ex" -> "lib/util/util.ex" + "lib/claim/claims.ex" + "lib/claim/claims.ex" -> "lib/claim/claim.ex" [label="(export)"] + "lib/claim/claims.ex" -> "lib/claim/claim_queries.ex" + "lib/claim/claims.ex" -> "lib/knowledge/action/actions.ex" + "lib/claim/claims.ex" -> "lib/util/federation.ex" + "lib/claim/graphql.ex" + "lib/claim/graphql.ex" -> "lib/claim/claim.ex" + "lib/claim/graphql.ex" -> "lib/claim/claim_queries.ex" + "lib/claim/graphql.ex" -> "lib/claim/claims.ex" + "lib/claim/migrations.ex" + "lib/economic_event/event.ex" + "lib/economic_event/event_queries.ex" + "lib/economic_event/event_side_effects.ex" + "lib/economic_event/events.ex" + "lib/economic_event/graphql.ex" + "lib/economic_event/graphql.ex" -> "lib/economic_event/event.ex" + "lib/economic_event/graphql.ex" -> "lib/economic_event/event_queries.ex" + "lib/economic_event/graphql.ex" -> "lib/economic_event/events.ex" + "lib/economic_event/graphql.ex" -> "lib/util/graphql.ex" + "lib/util/graphql.ex" -> "lib/agent/agents.ex" + "lib/util/graphql.ex" -> "lib/util/util.ex" + "lib/economic_event/graphql.ex" -> "lib/util/simulate.ex" + "lib/util/simulate.ex" -> "lib/agent/agents.ex" + "lib/util/simulate.ex" -> "lib/claim/claims.ex" + "lib/util/simulate.ex" -> "lib/economic_event/events.ex" + "lib/util/simulate.ex" -> "lib/economic_resource/resources.ex" + "lib/util/simulate.ex" -> "lib/knowledge/action/actions.ex" + "lib/util/simulate.ex" -> "lib/knowledge/process_specification/process_specs.ex" + "lib/util/simulate.ex" -> "lib/knowledge/resource_specification/resource_specs.ex" + "lib/util/simulate.ex" -> "lib/planning/intent/intents.ex" + "lib/util/simulate.ex" -> "lib/process/processes.ex" + "lib/util/simulate.ex" -> "lib/proposal/proposals.ex" + "lib/util/simulate.ex" -> "lib/proposal/proposed_intents.ex" + "lib/proposal/proposed_intents.ex" -> "lib/planning/intent/intent.ex" [label="(export)"] + "lib/proposal/proposed_intents.ex" -> "lib/proposal/proposal.ex" [label="(export)"] + "lib/proposal/proposed_intents.ex" -> "lib/proposal/proposed_intent.ex" [label="(export)"] + "lib/proposal/proposed_intents.ex" -> "lib/proposal/proposed_intent_queries.ex" + "lib/proposal/proposed_intent_queries.ex" -> "lib/proposal/proposed_intent.ex" + "lib/proposal/proposed_intent_queries.ex" -> "lib/util/util.ex" + "lib/proposal/proposed_intents.ex" -> "lib/util/federation.ex" + "lib/util/simulate.ex" -> "lib/proposal/proposed_tos.ex" + "lib/proposal/proposed_tos.ex" -> "lib/proposal/proposal.ex" [label="(export)"] + "lib/proposal/proposed_tos.ex" -> "lib/proposal/proposed_to.ex" + "lib/proposal/proposed_tos.ex" -> "lib/proposal/proposed_to_queries.ex" + "lib/proposal/proposed_to_queries.ex" -> "lib/proposal/proposed_to.ex" + "lib/proposal/proposed_to_queries.ex" -> "lib/util/util.ex" + "lib/proposal/proposed_tos.ex" -> "lib/util/federation.ex" + "lib/util/simulate.ex" -> "lib/value_calculation/value_calculations.ex" + "lib/economic_event/graphql.ex" -> "lib/util/util.ex" + "lib/economic_event/migrations.ex" + "lib/economic_event/trace.ex" + "lib/economic_event/track.ex" + "lib/economic_resource/graphql.ex" + "lib/economic_resource/graphql.ex" -> "lib/agent/agents.ex" + "lib/economic_resource/graphql.ex" -> "lib/economic_resource/resource.ex" + "lib/economic_resource/graphql.ex" -> "lib/economic_resource/resource_queries.ex" + "lib/economic_resource/graphql.ex" -> "lib/economic_resource/resources.ex" + "lib/economic_resource/graphql.ex" -> "lib/util/graphql.ex" + "lib/economic_resource/graphql.ex" -> "lib/util/simulate.ex" + "lib/economic_resource/graphql.ex" -> "lib/util/util.ex" + "lib/economic_resource/migrations.ex" + "lib/economic_resource/resource.ex" + "lib/economic_resource/resource_queries.ex" + "lib/economic_resource/resources.ex" + "lib/hydration.ex" -> "lib/agent/agent_graphql.ex" + "lib/hydration.ex" -> "lib/claim/graphql.ex" + "lib/hydration.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/hydration.ex" -> "lib/economic_event/graphql.ex" + "lib/hydration.ex" -> "lib/economic_resource/graphql.ex" + "lib/hydration.ex" -> "lib/economic_resource/resource.ex" [label="(export)"] + "lib/hydration.ex" -> "lib/knowledge/action/graphql.ex" + "lib/knowledge/action/graphql.ex" -> "lib/knowledge/action/actions.ex" + "lib/hydration.ex" -> "lib/knowledge/process_specification/graphql.ex" + "lib/knowledge/process_specification/graphql.ex" -> "lib/knowledge/process_specification/process_spec.ex" + "lib/knowledge/process_specification/graphql.ex" -> "lib/knowledge/process_specification/process_spec_queries.ex" + "lib/knowledge/process_specification/graphql.ex" -> "lib/knowledge/process_specification/process_specs.ex" + "lib/knowledge/process_specification/graphql.ex" -> "lib/util/graphql.ex" + "lib/knowledge/process_specification/graphql.ex" -> "lib/util/simulate.ex" + "lib/knowledge/process_specification/graphql.ex" -> "lib/util/util.ex" + "lib/hydration.ex" -> "lib/knowledge/resource_specification/graphql.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/economic_resource/graphql.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/knowledge/resource_specification/resource_spec.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/knowledge/resource_specification/resource_spec_queries.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/knowledge/resource_specification/resource_specs.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/util/graphql.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/util/simulate.ex" + "lib/knowledge/resource_specification/graphql.ex" -> "lib/util/util.ex" + "lib/hydration.ex" -> "lib/planning/commitment/graphql.ex" + "lib/planning/commitment/graphql.ex" -> "lib/planning/commitment/commitments.ex" + "lib/planning/commitment/graphql.ex" -> "lib/planning/satisfaction/satisfactions.ex" + "lib/hydration.ex" -> "lib/planning/intent/intent.ex" [label="(export)"] + "lib/hydration.ex" -> "lib/planning/intent/intent_graphql.ex" + "lib/planning/intent/intent_graphql.ex" -> "lib/planning/intent/intent.ex" + "lib/planning/intent/intent_graphql.ex" -> "lib/planning/intent/intent_queries.ex" + "lib/planning/intent/intent_graphql.ex" -> "lib/planning/intent/intents.ex" + "lib/planning/intent/intent_graphql.ex" -> "lib/planning/satisfaction/satisfactions.ex" + "lib/planning/intent/intent_graphql.ex" -> "lib/util/graphql.ex" + "lib/planning/intent/intent_graphql.ex" -> "lib/util/util.ex" + "lib/hydration.ex" -> "lib/planning/satisfaction/graphql.ex" + "lib/planning/satisfaction/graphql.ex" -> "lib/economic_event/event.ex" [label="(export)"] + "lib/planning/satisfaction/graphql.ex" -> "lib/planning/commitment/commitment.ex" [label="(export)"] + "lib/planning/satisfaction/graphql.ex" -> "lib/planning/satisfaction/satisfaction.ex" [label="(export)"] + "lib/planning/satisfaction/graphql.ex" -> "lib/planning/satisfaction/satisfactions.ex" + "lib/hydration.ex" -> "lib/process/graphql.ex" + "lib/process/graphql.ex" -> "lib/process/process.ex" + "lib/process/graphql.ex" -> "lib/process/process_queries.ex" + "lib/process/graphql.ex" -> "lib/process/processes.ex" + "lib/process/graphql.ex" -> "lib/util/graphql.ex" + "lib/process/graphql.ex" -> "lib/util/simulate.ex" + "lib/process/graphql.ex" -> "lib/util/util.ex" + "lib/hydration.ex" -> "lib/process/process.ex" [label="(export)"] + "lib/hydration.ex" -> "lib/proposal/proposal_graphql.ex" + "lib/proposal/proposal_graphql.ex" -> "lib/proposal/proposal.ex" + "lib/proposal/proposal_graphql.ex" -> "lib/proposal/proposal_queries.ex" + "lib/proposal/proposal_graphql.ex" -> "lib/proposal/proposals.ex" + "lib/proposal/proposal_graphql.ex" -> "lib/util/util.ex" + "lib/hydration.ex" -> "lib/proposal/proposed_intent_graphql.ex" + "lib/proposal/proposed_intent_graphql.ex" -> "lib/planning/intent/intent_graphql.ex" + "lib/proposal/proposed_intent_graphql.ex" -> "lib/proposal/proposal_graphql.ex" + "lib/proposal/proposed_intent_graphql.ex" -> "lib/proposal/proposed_intents.ex" + "lib/hydration.ex" -> "lib/proposal/proposed_to_graphql.ex" + "lib/proposal/proposed_to_graphql.ex" -> "lib/agent/agents.ex" + "lib/proposal/proposed_to_graphql.ex" -> "lib/proposal/proposal_graphql.ex" + "lib/proposal/proposed_to_graphql.ex" -> "lib/proposal/proposed_tos.ex" + "lib/hydration.ex" -> "lib/util/graphql.ex" [label="(export)"] + "lib/hydration.ex" -> "lib/util/util.ex" + "lib/hydration.ex" -> "lib/value_calculation/graphql.ex" + "lib/value_calculation/graphql.ex" -> "lib/knowledge/action/graphql.ex" + "lib/value_calculation/graphql.ex" -> "lib/value_calculation/value_calc_queries.ex" + "lib/value_calculation/graphql.ex" -> "lib/value_calculation/value_calculation.ex" + "lib/value_calculation/graphql.ex" -> "lib/value_calculation/value_calculations.ex" + "lib/knowledge/action/action.ex" + "lib/knowledge/action/actions.ex" + "lib/knowledge/action/graphql.ex" + "lib/knowledge/process_specification/graphql.ex" + "lib/knowledge/process_specification/migrations.ex" + "lib/knowledge/process_specification/process_spec.ex" + "lib/knowledge/process_specification/process_spec_queries.ex" + "lib/knowledge/process_specification/process_specs.ex" + "lib/knowledge/resource_specification/graphql.ex" + "lib/knowledge/resource_specification/migrations.ex" + "lib/knowledge/resource_specification/resource_spec.ex" + "lib/knowledge/resource_specification/resource_spec_queries.ex" + "lib/knowledge/resource_specification/resource_specs.ex" + "lib/plan/graphql.ex" + "lib/planning/commitment/commitment.ex" + "lib/planning/commitment/commitment_queries.ex" + "lib/planning/commitment/commitments.ex" + "lib/planning/commitment/graphql.ex" + "lib/planning/commitment/migrations.ex" + "lib/planning/intent/intent.ex" + "lib/planning/intent/intent_graphql.ex" + "lib/planning/intent/intent_queries.ex" + "lib/planning/intent/intents.ex" + "lib/planning/intent/migrations.ex" + "lib/planning/satisfaction/graphql.ex" + "lib/planning/satisfaction/migrations.ex" + "lib/planning/satisfaction/satisfaction.ex" + "lib/planning/satisfaction/satisfaction_queries.ex" + "lib/planning/satisfaction/satisfactions.ex" + "lib/process/graphql.ex" + "lib/process/migrations.ex" + "lib/process/process.ex" + "lib/process/process_queries.ex" + "lib/process/processes.ex" + "lib/proposal/migrations.ex" + "lib/proposal/proposal.ex" + "lib/proposal/proposal_graphql.ex" + "lib/proposal/proposal_queries.ex" + "lib/proposal/proposals.ex" + "lib/proposal/proposed_intent.ex" + "lib/proposal/proposed_intent_graphql.ex" + "lib/proposal/proposed_intent_queries.ex" + "lib/proposal/proposed_intents.ex" + "lib/proposal/proposed_to.ex" + "lib/proposal/proposed_to_graphql.ex" + "lib/proposal/proposed_to_queries.ex" + "lib/proposal/proposed_tos.ex" + "lib/recipe/graphql.ex" + "lib/scenario/graphql.ex" + "lib/util/federation.ex" + "lib/util/graphql.ex" + "lib/util/simulate.ex" + "lib/util/util.ex" + "lib/value_calculation/formula2.ex" + "lib/value_calculation/graphql.ex" + "lib/value_calculation/migrations.ex" + "lib/value_calculation/value_calc_queries.ex" + "lib/value_calculation/value_calculation.ex" + "lib/value_calculation/value_calculations.ex" + "lib/value_flows.ex" + "lib/graphql_schema.ex" + "lib/schema.ex" + "lib/subscriptions.ex" + "lib/classifications.ex" + "lib/graphql_hydration.ex" + "lib/graphql_hydration.ex" -> "lib/observable_phenomenon/graphql.ex" + "lib/observable_phenomenon/graphql.ex" -> "lib/classifications.ex" + "lib/observable_phenomenon/graphql.ex" -> "lib/observable_phenomenon/phenomenons.ex" + "lib/observable_phenomenon/phenomenons.ex" -> "lib/classifications.ex" + "lib/observable_phenomenon/graphql.ex" -> "lib/observable_properties/graphql.ex" + "lib/observable_properties/graphql.ex" -> "lib/classifications.ex" + "lib/observable_properties/graphql.ex" -> "lib/observable_properties/properties.ex" + "lib/observable_properties/properties.ex" -> "lib/classifications.ex" + "lib/observable_phenomenon/graphql.ex" -> "lib/observable_properties/properties.ex" + "lib/graphql_hydration.ex" -> "lib/observable_properties/graphql.ex" + "lib/graphql_hydration.ex" -> "lib/observation/graphql_resolvers.ex" + "lib/observation/graphql_resolvers.ex" -> "lib/classifications.ex" + "lib/observation/graphql_resolvers.ex" -> "lib/observation/observation.ex" + "lib/observation/observation.ex" -> "lib/observation/observations.ex" + "lib/observation/observations.ex" -> "lib/observation/observation.ex" [label="(export)"] + "lib/observation/observations.ex" -> "lib/observation/queries.ex" + "lib/observation/queries.ex" -> "lib/observation/observation.ex" + "lib/observation/observation.ex" -> "lib/observation/queries.ex" + "lib/observation/graphql_resolvers.ex" -> "lib/observation/observations.ex" + "lib/observation/graphql_resolvers.ex" -> "lib/observation/queries.ex" + "lib/migrations.ex" -> "lib/observation/observation.ex" + "lib/observable_phenomenon/graphql.ex" + "lib/observable_phenomenon/phenomenons.ex" + "lib/observable_properties/graphql.ex" + "lib/observable_properties/properties.ex" + "lib/observation/graphql_resolvers.ex" + "lib/observation/observation.ex" + "lib/observation/observations.ex" + "lib/observation/queries.ex" + "lib/seeds.ex" + "lib/seeds.ex" -> "lib/classifications.ex" + "lib/seeds.ex" -> "lib/observable_properties/properties.ex" + "lib/testing/simulate.ex" -> "lib/observable_phenomenon/phenomenons.ex" + "lib/testing/simulate.ex" -> "lib/observable_properties/properties.ex" + "lib/testing/simulate.ex" -> "lib/observation/observations.ex" + "lib/nodeinfo.ex" + "lib/nodeinfo/adapter.ex" + "lib/nodeinfo_web.ex" + "lib/nodeinfo_web/controllers/nodeinfo_controller.ex" + "lib/nodeinfo_web/controllers/nodeinfo_controller.ex" -> "lib/nodeinfo/adapter.ex" + "lib/nodeinfo_web/controllers/nodeinfo_controller.ex" -> "lib/nodeinfo_web.ex" [label="(compile)"] + "lib/nodeinfo_web/router.ex" + "lib/changesets.ex" + "lib/changesets.ex" -> "lib/util.ex" + "lib/class.ex" + "lib/class.ex" -> "lib/changesets.ex" [label="(export)"] + "lib/class.ex" -> "lib/pointable.ex" [label="(compile)"] + "lib/pointable.ex" -> "lib/util.ex" + "lib/form.ex" + "lib/form.ex" -> "lib/util.ex" + "lib/migration.ex" -> "lib/pointer.ex" + "lib/pointer.ex" -> "lib/table.ex" + "lib/table.ex" -> "lib/changesets.ex" [label="(export)"] + "lib/table.ex" -> "lib/pointable.ex" [label="(compile)"] + "lib/pointer.ex" -> "lib/tables.ex" + "lib/tables.ex" -> "lib/not_found.ex" + "lib/tables.ex" -> "lib/table.ex" [label="(export)"] + "lib/migration.ex" -> "lib/table.ex" + "lib/mixin.ex" + "lib/mixin.ex" -> "lib/util.ex" + "lib/not_found.ex" + "lib/pointable.ex" + "lib/pointer.ex" + "lib/pointers.ex" + "lib/pointers.ex" -> "lib/pointer.ex" [label="(export)"] + "lib/pointers.ex" -> "lib/tables.ex" + "lib/pointers.ex" -> "lib/util.ex" + "lib/random.ex" + "lib/random.ex" -> "lib/util.ex" + "lib/table.ex" + "lib/tables.ex" + "lib/unpointable.ex" + "lib/unpointable.ex" -> "lib/util.ex" + "lib/util.ex" + "lib/virtual.ex" + "lib/virtual.ex" -> "lib/util.ex" +} diff --git a/flavours/classic/config/deps.hex b/flavours/classic/config/deps.hex index 775f744d4e..837f4054f0 100755 --- a/flavours/classic/config/deps.hex +++ b/flavours/classic/config/deps.hex @@ -1,7 +1,7 @@ earmark = "~> 1.4.28" # handle markdown # earmark_parser = "~> 1.4.25" # parse markdown # Web -# livebook = "~> 0.5.2" +# livebook = "~> 0.7.2" surface = "~> 0.9.0" phoenix_live_dashboard = "~> 0.7.0" plug_cowboy = "~> 2.5.2" diff --git a/flavours/cooperation/config/deps.hex b/flavours/cooperation/config/deps.hex index 1323bb59ca..32ad29b177 100644 --- a/flavours/cooperation/config/deps.hex +++ b/flavours/cooperation/config/deps.hex @@ -1,7 +1,7 @@ earmark = "~> 1.4.28" # handle markdown # earmark_parser = "~> 1.4.25" # parse markdown # Web -# livebook = "~> 0.5.2" +# livebook = "~> 0.7.2" surface = "~> 0.9.0" phoenix = "~> 1.7.0-rc.0" # note: usually we should let surface specify the version of both phoenix and liveview phoenix_view = "~> 2.0" # should match phx/lv - dunno why isn't upgraded otherwise diff --git a/flavours/reflow/config/deps.hex b/flavours/reflow/config/deps.hex index afa6a85a4e..b7deaf12e4 100755 --- a/flavours/reflow/config/deps.hex +++ b/flavours/reflow/config/deps.hex @@ -1,7 +1,7 @@ earmark = "~> 1.4.28" # handle markdown earmark_parser = "~> 1.4" # parse markdown # Web -# livebook = "~> 0.5.2" +# livebook = "~> 0.7.2" # surface = "~> 0.9.0" phoenix_live_dashboard = "~> 0.7.0" plug_cowboy = "~> 2.5.2" diff --git a/flavours/upcycle/config/deps.hex b/flavours/upcycle/config/deps.hex index 020c891ddd..21481be2a6 100644 --- a/flavours/upcycle/config/deps.hex +++ b/flavours/upcycle/config/deps.hex @@ -1,7 +1,7 @@ earmark = "~> 1.4.28" # handle markdown earmark_parser = "~> 1.4" # parse markdown # Web -# livebook = "~> 0.5.2" +# livebook = "~> 0.7.2" surface = "~> 0.9.0" phoenix_live_dashboard = "~> 0.7.0" plug_cowboy = "~> 2.5.2" diff --git a/justfile b/justfile index b10f4396e2..c322736493 100644 --- a/justfile +++ b/justfile @@ -20,7 +20,7 @@ APP_DOCKER_IMAGE := env_var_or_default('APP_DOCKER_IMAGE', "bonfirenetworks/bonf DB_DOCKER_IMAGE := if arch() == "aarch64" { "ghcr.io/baosystems/postgis:12-3.3" } else { env_var_or_default('DB_DOCKER_IMAGE', "postgis/postgis:12-3.3-alpine") } ## Other configs - edit these here if necessary -FORKS_PATH := "forks/" +FORKS_PATH := "apps/" ORG_NAME := "bonfirenetworks" APP_NAME := "bonfire" APP_VSN_EXTRA := "beta" @@ -65,6 +65,7 @@ pre-setup flavour='classic': @ln -sf ./config/dev/ ./config/test/ @rm .env | true @ln -sf ./config/$MIX_ENV/.env ./.env + @mkdir -p apps/ @mkdir -p forks/ @mkdir -p data/uploads/ @mkdir -p priv/static/data @@ -219,13 +220,13 @@ update-dep dep: just mix-remote "deps.update $dep" ./assets/install_extensions.sh $dep -# Pull the latest commits from all ./forks +# Pull the latest commits from all forks update-forks: @jungle git fetch || echo "Jungle not available, will fetch one by one instead." @chmod +x git-publish.sh && find $FORKS_PATH -mindepth 1 -maxdepth 1 -type d -exec ./git-publish.sh {} rebase \; # TODO: run in parallel? find $FORKS_PATH -mindepth 1 -maxdepth 1 -type d | xargs -P 50 -I '{}' ./git-publish.sh '{}' -# Pull the latest commits from all ./forks +# Pull the latest commits from all forks update-fork dep: @chmod +x git-publish.sh && find $FORKS_PATH/$dep -mindepth 0 -maxdepth 0 -type d -exec ./git-publish.sh {} pull \; @@ -322,6 +323,7 @@ pre-push-hooks: pre-contrib-hooks # just mix changelog pre-contrib-hooks: + -sed -i '' 's,/apps/,/deps/,' config/deps_hooks.js -sed -i '' 's,/forks/,/deps/,' config/deps_hooks.js # Push all changes to the app and extensions in ./forks @@ -346,7 +348,7 @@ contrib-rel-push: contrib-release rel-build-release rel-push # Count lines of code (requires cloc: `brew install cloc`) cloc: - cloc lib config forks/*/lib forks/*/test test + cloc lib config apps/*/lib apps/*/test test # Run the git add command on each fork git-forks-add: deps-git-fix @@ -373,7 +375,7 @@ deps-git-fix: @git-merge branch: git merge --no-ff --no-commit $branch -# Find any git conflicts in ./forks +# Find any git conflicts in forks @git-conflicts: find $FORKS_PATH -mindepth 1 -maxdepth 1 -type d -exec echo add {} \; -exec git -C '{}' diff --name-only --diff-filter=U \; @@ -383,7 +385,7 @@ deps-git-fix: #### TESTING RELATED COMMANDS #### -# Run tests. You can also run only specific tests, eg: `just test forks/bonfire_social/test` +# Run tests. You can also run only specific tests, eg: `just test apps/bonfire_social/test` test *args='': @echo "Testing $@..." MIX_ENV=test just mix test $@ @@ -407,10 +409,10 @@ test-watch *args='': test-interactive *args='': @MIX_ENV=test just mix test.interactive --stale $@ -ap_lib := "forks/activity_pub" -ap_integration := "forks/bonfire_federate_activitypub/test/activity_pub_integration" -ap_boundaries := "forks/bonfire_federate_activitypub/test/ap_boundaries" -ap_ext := "forks/*/test/*federat* forks/*/test/*/*federat* forks/*/test/*/*/*federat*" +ap_lib := "apps/activity_pub" +ap_integration := "apps/bonfire_federate_activitypub/test/activity_pub_integration" +ap_boundaries := "apps/bonfire_federate_activitypub/test/ap_boundaries" +ap_ext := "apps/*/test/*federat* apps/*/test/*/*federat* apps/*/test/*/*/*federat*" # ap_two := "forks/bonfire_federate_activitypub/test/dance" test-federation: @@ -452,6 +454,7 @@ rel-config-prepare: # copy current flavour's config, without using symlinks rel-prepare: rel-config-prepare + mkdir -p apps/ mkdir -p forks/ mkdir -p data/uploads/ mkdir -p data/null/ @@ -459,15 +462,18 @@ rel-prepare: rel-config-prepare # Build the Docker image (with no caching) rel-rebuild: rel-init rel-prepare assets-prepare - just rel-build "forks/" --no-cache + just rel-build {{FORKS_PATH}} --no-cache # Build the Docker image (NOT including changes to local forks) rel-build-release: rel-init rel-prepare assets-prepare - @echo "Please note that the build will not include any changes in forks/ that haven't been committed and pushed, you may want to run just contrib-release first." + @echo "Please note that the build will not include any changes in forks that haven't been committed and pushed, you may want to run just contrib-release first." @just rel-build "data/null" --no-cache # Build the Docker image (including changes to local forks, and using caching) -rel-build FORKS_TO_COPY_PATH="forks/" ARGS="": rel-init rel-prepare assets-prepare +rel-build FORKS_TO_COPY_PATH="" ARGS="": + @rel-build-path {{ if FORKS_TO_COPY_PATH != "" {FORKS_TO_COPY_PATH} else {FORKS_PATH} }} ARGS + +rel-build-path FORKS_TO_COPY_PATH ARGS="": rel-init rel-prepare assets-prepare @echo "Building $APP_NAME with flavour $FLAVOUR for arch {{arch()}}." @docker build $ARGS --progress=plain \ --build-arg FLAVOUR_PATH=data/current_flavour \ @@ -582,10 +588,15 @@ docker-stop-web: @mix *args='': 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 pointers` mix-remote *args='': init {{ if WITH_DOCKER == "total" { "docker-compose run -e WITH_FORKS=0 web mix $@" } else {"WITH_FORKS=0 mix $@"} }} +xref-dot: + just mix xref graph --format dot --include-siblings + (awk '{if (!a[$0]++ && $1 != "}") print}' apps/*/xref_graph.dot; echo }) > docs/xref_graph.dot + dot -Tsvg docs/xref_graph.dot -o docs/xref_graph.svg + # Run a specific exh command, see https://github.com/rowlandcodes/exhelp exh *args='': just cmd "exh -S mix $@" @@ -621,6 +632,7 @@ assets-prepare: # Workarounds for some issues running migrations db-pre-migrations: -touch deps/*/lib/migrations.ex + -touch apps/*/lib/migrations.ex -touch forks/*/lib/migrations.ex -touch priv/repo/* diff --git a/lib/mix/mess.exs b/lib/mix/mess.exs new file mode 100644 index 0000000000..f82ab927e0 --- /dev/null +++ b/lib/mix/mess.exs @@ -0,0 +1,110 @@ +# Copyright (c) 2020 James Laver, mess Contributors +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +if not Code.ensure_loaded?(Mess) do + defmodule Mess do + @sources [path: "deps.path", git: "deps.git", hex: "deps.hex"] + + @newline ~r/(?:\r\n|[\r\n])/ + @parser ~r/^(?\s*)((?[a-z_][a-z0-9_]+)\s*=\s*"(?[^"]+)")?(?.*)/ + @git_branch ~r/(?[^#]+)(#(?.+))?/ + + def umbrella_path(opts \\ []), + do: opts[:umbrella_path] || if(Mix.env() != :prod, do: "apps/", else: nil) + + def deps(sources \\ @sources, extra_deps, opts \\ []), + do: Enum.flat_map(sources, fn {k, v} -> read(v, k) end) |> deps_packages(extra_deps, opts) + + defp deps_packages(packages, extra_deps, opts), + do: Enum.flat_map(packages, &dep_spec(&1, opts)) |> deps_uniq(extra_deps, opts) + + defp deps_uniq(packages, extra_deps, opts), + do: Enum.uniq_by(packages ++ extra_deps, &elem(&1, 0)) |> maybe_filter_umbrella(opts) + + defp maybe_filter_umbrella(deps, opts) do + if opts[:umbrella_root?] do + Enum.reject(deps, fn dep -> + dep_opts = elem(dep, 1) + is_list(dep_opts) and dep_opts[:from_umbrella] + end) + + # |> IO.inspect(label: "umbrella_root") + else + if umbrella_path(opts) do + umbrella_deps = read_umbrella("../../config/deps.path", opts) + + deps + |> Enum.map(fn dep -> + name = elem(dep, 0) + + case umbrella_deps[name] do + nil -> + dep + + dep_opts -> + if dep_opts[:from_umbrella] do + {name, in_umbrella: true, override: true} + else + {name, dep_opts |> Keyword.put(:path, "../../#{dep_opts[:path]}")} + end + end + end) + + # |> IO.inspect(label: "in_umbrella") + else + deps + end + end + end + + defp read_umbrella(path, opts) when is_binary(path) do + if File.exists?(path) do + read(path, :path) + |> Enum.flat_map(&dep_spec(&1, opts)) + else + [] + end + end + + defp read(path, kind) when is_binary(path), do: have_read(File.read(path), kind) + + defp have_read({:error, :enoent}, _kind), do: [] + + defp have_read({:ok, file}, kind), + do: Enum.map(String.split(file, @newline), &read_line(&1, kind)) + + defp read_line(line, kind), + do: Map.put(Regex.named_captures(@parser, line), :kind, kind) + + defp dep_spec(%{"package" => ""}, _opts), do: [] + + defp dep_spec(%{"package" => p, "value" => v, :kind => :hex}, _opts), + do: pkg(p, v, override: true) + + defp dep_spec(%{"package" => p, "value" => v, :kind => :path}, opts) do + umbrella_path = umbrella_path(opts) + + if umbrella_path && String.starts_with?(v, umbrella_path) do + pkg(p, from_umbrella: true, override: true, path: v) + else + pkg(p, path: v, override: true) + end + end + + defp dep_spec(%{"package" => p, "value" => v, :kind => :git}, _opts), do: git(v, p) + + defp git(line, p) when is_binary(line), + do: git(Regex.named_captures(@git_branch, line), p) + + defp git(%{"branch" => "", "repo" => r}, p), + do: pkg(p, git: r, override: true) + + defp git(%{"branch" => b, "repo" => r}, p), + do: pkg(p, git: r, branch: b, override: true) + + defp pkg(name, opts), do: [{String.to_atom(name), opts}] + defp pkg(name, version, opts), do: [{String.to_atom(name), version, opts}] + end +end diff --git a/lib/mix/mess/mess.exs b/lib/mix/mess/mess.exs deleted file mode 100644 index 594d1d23f1..0000000000 --- a/lib/mix/mess/mess.exs +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2020 James Laver, mess Contributors -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -if not Code.ensure_loaded?(Mess) do - defmodule Mess do - @sources [path: "deps.path", git: "deps.git", hex: "deps.hex"] - - @newline ~r/(?:\r\n|[\r\n])/ - @parser ~r/^(?\s*)((?[a-z_][a-z0-9_]+)\s*=\s*"(?[^"]+)")?(?.*)/ - @git_branch ~r/(?[^#]+)(#(?.+))?/ - - def deps(sources \\ @sources, deps), - do: deps(Enum.flat_map(sources, fn {k, v} -> read(v, k) end), deps, :deps) - - defp deps(packages, deps, :deps), - do: deps(Enum.flat_map(packages, &dep_spec/1), deps, :uniq) - - defp deps(packages, deps, :uniq), - do: Enum.uniq_by(packages ++ deps, &elem(&1, 0)) - - defp read(path, kind) when is_binary(path), do: read(File.read(path), kind) - defp read({:error, :enoent}, _kind), do: [] - - defp read({:ok, file}, kind), - do: Enum.map(String.split(file, @newline), &read_line(&1, kind)) - - defp read_line(line, kind), - do: Map.put(Regex.named_captures(@parser, line), :kind, kind) - - defp dep_spec(%{"package" => ""}), do: [] - - defp dep_spec(%{"package" => p, "value" => v, :kind => :hex}), - do: pkg(p, v, override: true) - - defp dep_spec(%{"package" => p, "value" => v, :kind => :path}), - do: pkg(p, path: v, override: true) - - defp dep_spec(%{"package" => p, "value" => v, :kind => :git}), do: git(v, p) - - defp git(line, p) when is_binary(line), - do: git(Regex.named_captures(@git_branch, line), p) - - defp git(%{"branch" => "", "repo" => r}, p), - do: pkg(p, git: r, override: true) - - defp git(%{"branch" => b, "repo" => r}, p), - do: pkg(p, git: r, branch: b, override: true) - - defp pkg(name, opts), do: [{String.to_atom(name), opts}] - defp pkg(name, version, opts), do: [{String.to_atom(name), version, opts}] - end -end diff --git a/lib/mix/mess/mixer.ex b/lib/mix/mixer.ex similarity index 98% rename from lib/mix/mess/mixer.ex rename to lib/mix/mixer.ex index f40208486d..d1104661fa 100644 --- a/lib/mix/mess/mixer.ex +++ b/lib/mix/mixer.ex @@ -150,6 +150,9 @@ if not Code.ensure_loaded?(Bonfire.Mixer) do def source_url_pattern("deps/" <> _ = path, line), do: bonfire_ext_pattern(path, line) + def source_url_pattern("apps/" <> _ = path, line), + do: bonfire_ext_pattern(path, line) + def source_url_pattern("forks/" <> _ = path, line), do: bonfire_ext_pattern(path, line) diff --git a/mix.exs b/mix.exs index 44b05d4f08..cad7f199cf 100755 --- a/mix.exs +++ b/mix.exs @@ -1,10 +1,13 @@ -Code.eval_file("lib/mix/mess/mess.exs") -Code.eval_file("lib/mix/mess/mixer.ex") +Code.eval_file("lib/mix/mess.exs") +Code.eval_file("lib/mix/mixer.ex") defmodule Bonfire.MixProject do use Mix.Project alias Bonfire.Mixer + @umbrella_path if Mix.env() != :prod, do: "apps/", else: nil + @mess_opts [umbrella_root?: true, umbrella_path: @umbrella_path] + @extra_deps [ ## password hashing - builtin vs nif {:pbkdf2_elixir, "~> 2.0", only: [:dev, :test]}, @@ -14,7 +17,7 @@ defmodule Bonfire.MixProject do {:sentry, "~> 8.0", only: [:dev, :prod]}, ## dev conveniences - # {:dbg, "~> 1.0", only: [:dev, :test]}, + # {:phoenix_live_reload, "~> 1.3", only: :dev}, # {:exsync, git: "https://github.com/falood/exsync", only: :dev}, # {:mix_unused, "~> 0.4", only: :dev}, @@ -39,9 +42,8 @@ defmodule Bonfire.MixProject do # tests {:floki, ">= 0.0.0", only: [:dev, :test]}, - {:ex_machina, "~> 2.4", only: :test}, {:mock, "~> 0.3", only: :test}, - {:mox, "~> 1.0", only: :test}, + # {:mox, "~> 1.0", only: :test}, {:zest, "~> 0.1.0"}, {:grumble, "~> 0.1.3", only: [:test], override: true}, {:mix_test_watch, "~> 1.1", only: :test, runtime: false, override: true}, @@ -151,7 +153,7 @@ defmodule Bonfire.MixProject do localise: ["bonfire"], localise_self: [] ], - deps: Mess.deps(Mixer.mess_sources(@default_flavour), @extra_deps) + deps: Mess.deps(Mixer.mess_sources(@default_flavour), @extra_deps, @mess_opts) ] def config, do: @config @@ -160,6 +162,7 @@ defmodule Bonfire.MixProject do def project do [ app: :bonfire, + apps_path: @umbrella_path, version: Mixer.version(config()), elixir: config()[:elixir], elixirc_options: [debug_info: true, docs: true],