# Contains code from Pleroma <https://pleroma.social/> and CommonsPub <https://commonspub.org/>
# SPDX-License-Identifier: AGPL-3.0-only
defmoduleActivityPub.Aspectdo
@moduledoc"""
We focus on `Aspects` instead of working directly with ActivityPub _types_. An `Aspect`—a concept we coined as well—is a group of fields and functionality that any `ActivityPub.Entity` can have.
# Contains code from Pleroma <https://pleroma.social/> and CommonsPub <https://commonspub.org/>
# SPDX-License-Identifier: AGPL-3.0-only
defmoduleActivityPub.ActorAspectdo
@moduledoc"""
`ActorAspect` implements [_Actor_ as defined in the ActivityPub specifications](https://www.w3.org/TR/activitypub/#actors). There are different _Actor_ types: _Application, Group, Person_, etc. but all of them can have common properties: _preferred_username, inbox, outbox, followers_, etc.
# Contains code from Pleroma <https://pleroma.social/> and CommonsPub <https://commonspub.org/>
# SPDX-License-Identifier: AGPL-3.0-only
defmoduleActivityPub.Entitydo
@moduledoc"""
`Entity` is used to refer to any ActivityPub `Object` or `Link` in the library—ActivityPub `Object` and `Link` are disjoint, they are different things. An AP `Entity` is just a map which also has the field `__ap__` set to a `ActivityPub.Metadata` struct.
# Contains code from Pleroma <https://pleroma.social/> and CommonsPub <https://commonspub.org/>
# SPDX-License-Identifier: AGPL-3.0-only
defmoduleActivityPub.Metadatado
@moduledoc"""
The `Metadata` struct stores some metadata information that's useful to know if the `ActivityPub.Entity` is local (or coming from another federated instance), if it was loaded, if it was already stored, the implemented aspects, the types, etc.