Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
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.1.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-75%
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
  }
);

Keywords

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc