JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q15388F
  • License MIT

Opinionated state management

Package Exports

  • subjective

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (subjective) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Subjective

  • Opinionated state management
  • Type safety by design
  • Selector functions
  • Update functions
  • Composition

Concepts

State

// define new state
const state = new Subjective(
    productState,
    productStateFns,
);

EXAMPLE

Selector function

// subscribe to state.filter.type and notify with its value
state.select(s => s.filter.type).subscribe();

// subscribe to state.filter.type and notify with a whole state
state.select(s => s.filter.type, true).subscribe();

EXAMPLE

Update function

// update value of state.filter.type
state.update(f => f.updateFilterType, type);

// update value of state.filter.type and do not notify subscribers
state.update(f => f.updateFilterType, type, false);

// update value of state.filter.type and return updated state
const updatedState = state.update(f => f.updateFilterType, type);

EXAMPLE

Examples

NOTES

Immutable pattern

Always use immutable pattern otherwise it will not work. We can't rely on mutations since object reference is always the same.

Type-safety

Types are always inferred either from state class or payload parameter of the update function.

Credits