Entity Component System (ECS) library for Elixir, offering a suite of features including: flexible queries with multiple filters, dynamic bidirectional relationships, versatile tagging capabilities, system event subscriptions, or asynchronous system execution.
APACHE-2.0 License
Ecspanse.Resource.State
in favor of Ecspanse.State
functionality.Ecspanse.insert_resource/2
Ecspanse.init_state/2
Ecspanse.State
state functionalities. See the breaking changes for more details.Ecspanse.Event.StateTransition
eventEcspanse.Component.Name
componentEcspanse.Query.entity_exists?/1
to check if an entity still existsEcspanse.Command.add_and_fetch_component!/2
wrapper to return a component after creationEcspanse.Command.update_and_fetch_component!/2
wrapper to return a component after updatePublished by iacobson 10 months ago
Published by iacobson 11 months ago
Ecspanse.Projection
to include the state of the projection
Ecspanse.Projection{}
struct, together with the projection state.c:Ecspanse.Projection.project/1
callback returns now the projection state as well as the projection result.Projection.run?/2
callback has been removed. The functionality is now handled by the c:Ecspanse.Projection.project/1
callback, by returning :halt
.c:Ecspanse.Projection.project/1
callback should now return also the state of the projection. See the documentation for more details.c:Ecspanse.Projection.on_change/3
callback takes as second and third argument the t:Ecspanse.Projection.t/0
.c:Ecspanse.Projection.get!/1
callback now returns a t:Ecspanse.Projection.t/0
.Published by iacobson 11 months ago
c:Ecspanse.Projection.run?/2
optional callback to run projections conditionally.Published by iacobson 12 months ago
c:Ecspanse.Projection.on_change/3
is called on Projection server initialization.Published by iacobson about 1 year ago
Ecspanse.Command.clone_entity!/2
and Ecspanse.Command.deep_clone_entity!/2
now accept an :id
option to set the id of the cloned entity.Published by iacobson about 1 year ago
Ecspanse.Projection.on_change/3
replaces the on_change/2
callback and now takes both the new projection as well as the previous projection as arguments.Published by iacobson about 1 year ago
Ecspanse.Projection
to build state projections across entities and components.Published by iacobson about 1 year ago
Ecspanse.Query.select/2
new option: :for_ancestors_of
Ecspanse.Query.list_ancestors/1
Ecspanse.Query.list_tagged_components_for_ancestors/2
Published by iacobson about 1 year ago
Ecspanse.Event.{ComponentCreated, ComponentUpdated, ComponentDeleted, ResourceCreated, ResourceUpdated, ResourceDeleted}
. Use custom emitted events or short-lived components instead.Published by iacobson about 1 year ago
Ecspanse.Query
and Ecspanse.Command
in all systems, so all the queries and commands are available without needing the respective module prefix.Ecspanse
in the setup module that use Ecspanse
so the system scheduling functions are available without needing the module prefix.Published by iacobson about 1 year ago
Ecspanse.Query.list_tags/1
to list a component's tags.Ecspanse.Query.list_components/1
to list all components of an entity.Ecspanse.Command.clone_entity/1
to clone an entity without its relationships.Ecspanse.Command.deep_clone_entity/1
to clone an entity with its descendants.Published by iacobson about 1 year ago
batch_key
to avoid race conditions for different events processed by the same system.Published by iacobson about 1 year ago
use Ecspanse.Component.Timer
and use Ecspanse.Event.Timer
are now deprecated.use Ecspanse.Template.Component.Timer
and use Ecspanse.Template.Event.Timer
instead.Ecspanse.Template.Component
and Ecspanse.Template.Event
to simplify the creation of related components and events.Ecspanse.Query.fetch_component/2
to fetch a system's component by a list of tags.Published by iacobson about 1 year ago
plug_crypto
credo
, ex_doc
, jason
Published by iacobson about 1 year ago
:package
to the mix filePublished by iacobson about 1 year ago
The initial release