#applications #model #dataflow #unidirectional

infect

Intent/effect/task - A variation on the Model View Intent (MVI) and State Action Model (SAM) paradigms

18 releases

0.0.30 Jan 3, 2024
0.0.29 Apr 18, 2023
0.0.26 Mar 27, 2023

#290 in Asynchronous

Download history 6/week @ 2024-05-31 30/week @ 2024-06-07 17/week @ 2024-06-14 6/week @ 2024-07-05 231/week @ 2024-07-26 22/week @ 2024-08-02

192 downloads per month

MPL-2.0 license

34KB
573 lines

infect

Crates.io Docs.rs Deps.rs Security audit Continuous integration License: MPL 2.0

A variation on the Model-View-Intent (MVI) and State-Action-Model (SAM) paradigms using

  • intents for rejecting or accepting user interaction and commands,
  • (immediate) effects for updating the model according to observed events without feedback,
  • tasks for inducing concurrent side-effects.

Naming

The semantic distinction of external triggers, inputs, or events (as in event sourcing) into intents and effects is the characteristic difference from existing approaches. Both stimuli are combined into a messages for transporting and feeding them into the system.

Each message induces at most one task for triggering side-effects.

Combining intent, effect, and task gives infect.

License

Licensed under the Mozilla Public License 2.0 (MPL-2.0) (see MPL-2.0.txt or https://www.mozilla.org/MPL/2.0/).

Permissions of this copyleft license are conditioned on making available source code of licensed files and modifications of those files under the same license (or in certain cases, one of the GNU licenses). Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work may be distributed under different terms and without source code for files added in the larger work.

Contribution

Any contribution intentionally submitted for inclusion in the work by you shall be licensed under the Mozilla Public License 2.0 (MPL-2.0).

It is required to add the following header with the corresponding SPDX short identifier to the top of each file:

// SPDX-License-Identifier: MPL-2.0

Dependencies

~0.6–0.9MB
~16K SLoC