🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

mst-async-store

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mst-async-store

Asynchronous store and container implementation for mobx-state-tree

1.0.0
Source
npm
Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

mst-async-store

GitHub license Build Status Coverage Dependencies

An opinionated asynchronous store and container implementation for mobx-state-tree.

Reasoning

One of the most common challenges when implementing a store solution is how to handle asynchronous data sets. mst-async-store aims to simplify this by allowing you to create powerful asynchronous stores in a matter of seconds. An mst-async-store implements the most common fetch patterns and support fetch queues, fail states and time to live out of the box.

It's as simple as this:

import axios from 'axios';
import { when } from 'mobx';
import { createAsyncStore } from 'mst-async-store';

// Generate store model
const MyAsyncStore = createAsyncStore(
  'MyAsyncStore', // Name of store
  MyModel, // Your MST model representing one item
  (self) => (
    {
      // Logic to fetch one item
      async fetchOne(id: string) {
        const data = await axios.get(`/one/${id}`);
        return MyModel.create(data.response);
      },
      // Logic to fetch many items
      async fetchMany(ids: string[]) {
        const data = await axios.get(`/many`, { ids });
        return data.response.map((d) => MyModel.create(d));
      },
      // Logic to fetch all items
      async fetchAll() {
        const data = await axios.get(`/all`);
        return data.response.map((d) => MyModel.create(d));
      },
    },
    // Store options
    { ttl: 10000, failstateTtl: 5000 }
  )
);

// Instantiate store
const myAsyncStore = MyAsyncStore.create();

// Ask the store to return container with id 'foo'
const container = myAsyncStore.get('foo');
when(
  () => container.isReady,
  () => {
    const myModel = container.value;
    // myModel is an instance of MyModel
  }
);

FAQs

Package last updated on 08 Jan 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts