weavedev/store

View on GitHub
docs/index.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@weavedev/store</title><meta name="description" content="Documentation for @weavedev/store"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os"</script><header class="tsd-page-toolbar">
<div class="tsd-toolbar-contents container">
<div class="table-cell" id="tsd-search" data-base=".">
<div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-text)"></path></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">@weavedev/store</a></div>
<div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
<div class="container container-main">
<div class="col-8 col-content">
<div class="tsd-page-title">
<h2>@weavedev/store</h2></div>
<div class="tsd-panel tsd-typography">
<a href="#store" id="store" style="color: inherit; text-decoration: none;">
  <h1>store</h1>
</a>
<p><a href="https://travis-ci.org/weavedev/store"><img src="https://img.shields.io/travis/weavedev/store.svg" alt="Build Status - Travis CI"></a>
<a href="https://codeclimate.com/github/weavedev/store/test_coverage"><img src="https://img.shields.io/codeclimate/coverage/weavedev/store.svg" alt="Test Coverage - Code Climate"></a>
<a href="https://github.com/weavedev/store/blob/master/LICENSE"><img src="https://img.shields.io/github/license/weavedev/store.svg" alt="MIT"></a>
<a href="https://www.npmjs.com/package/@weavedev/store"><img src="https://img.shields.io/npm/v/@weavedev/store.svg" alt="NPM"></a></p>
<p>Opinionated drop-in <a href="http://redux.js.org/">Redux</a> store with <a href="https://redux-saga.js.org">Redux-Saga</a></p>

<a href="#install" id="install" style="color: inherit; text-decoration: none;">
  <h2>Install</h2>
</a>
<pre><code><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-0">i</span><span class="hl-1"> @</span><span class="hl-0">weavedev</span><span class="hl-1">/</span><span class="hl-0">store</span>
</code></pre>

<a href="#api-documentation" id="api-documentation" style="color: inherit; text-decoration: none;">
  <h2>API documentation</h2>
</a>
<p>We generate API documentation with <a href="https://typedoc.org">TypeDoc</a>.</p>
<p><a href="https://weavedev.github.io/store/"><img src="https://img.shields.io/badge/API-Documentation-blue?style=for-the-badge&logo=typescript" alt="API Documentation"></a></p>

<a href="#usage" id="usage" style="color: inherit; text-decoration: none;">
  <h2>Usage</h2>
</a>

<a href="#initialization" id="initialization" style="color: inherit; text-decoration: none;">
  <h3>Initialization</h3>
</a>

<a href="#basic-initialization" id="basic-initialization" style="color: inherit; text-decoration: none;">
  <h4>Basic initialization</h4>
</a>
<p>The recommended way to create the <code>store</code> is with the <code>init()</code> function.</p>
<pre><code class="language-ts"><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">init</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@weavedev/store/init&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">init</span><span class="hl-1">();</span>
</code></pre>

<a href="#custom-initialization-with-middlewares" id="custom-initialization-with-middlewares" style="color: inherit; text-decoration: none;">
  <h4>Custom initialization with middlewares</h4>
</a>
<p>If you want to use your own middlewares you can pass them as arguments.</p>
<pre><code class="language-ts"><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">init</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@weavedev/store/init&#39;</span><span class="hl-1">;</span><br/><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">logger</span><span class="hl-1">, </span><span class="hl-0">router</span><span class="hl-1">, </span><span class="hl-0">uploader</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;./middlewares&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">init</span><span class="hl-1">(</span><span class="hl-0">logger</span><span class="hl-1">, </span><span class="hl-0">router</span><span class="hl-1">, </span><span class="hl-0">uploader</span><span class="hl-1">);</span>
</code></pre>

<a href="#automatic-initialization" id="automatic-initialization" style="color: inherit; text-decoration: none;">
  <h4>Automatic initialization</h4>
</a>
<p>When the <code>store</code> object is imported and <code>window.store</code> has not already been initialized this package will initialize it for you.</p>
<pre><code class="language-ts"><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">store</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@weavedev/store&#39;</span><span class="hl-1">;</span>
</code></pre>

<a href="#note" id="note" style="color: inherit; text-decoration: none;">
  <h6>NOTE</h6>
</a>
<p>The purpose of automatic initialization and the importable <code>store</code> object are to provide an easy way to migrate an existing project. Manually initializing the store is recommended.</p>

<a href="#reducers" id="reducers" style="color: inherit; text-decoration: none;">
  <h3>Reducers</h3>
</a>

<a href="#adding-reducers" id="adding-reducers" style="color: inherit; text-decoration: none;">
  <h4>Adding reducers</h4>
</a>
<p>Adding reducers to the <code>window.storeReducers</code> object registers them on the <code>store</code> and allows you to dispatch actions on them.</p>
<pre><code class="language-ts"><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">Action</span><span class="hl-1">, </span><span class="hl-0">Reducer</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;redux&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">// Clear message action</span><br/><span class="hl-2">export</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">CLEAR_MESSAGE</span><span class="hl-1"> = </span><span class="hl-3">&#39;CLEAR_MESSAGE&#39;</span><span class="hl-1">;</span><br/><span class="hl-6">type</span><span class="hl-1"> </span><span class="hl-8">ClearMessage</span><span class="hl-1"> = </span><span class="hl-8">Action</span><span class="hl-1">&lt;</span><span class="hl-6">typeof</span><span class="hl-1"> </span><span class="hl-7">CLEAR_MESSAGE</span><span class="hl-1">&gt;;</span><br/><span class="hl-2">export</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-4">clearMessage</span><span class="hl-1"> = (): </span><span class="hl-8">ClearMessage</span><span class="hl-1"> </span><span class="hl-6">=&gt;</span><span class="hl-1"> ({</span><br/><span class="hl-1">    </span><span class="hl-0">type:</span><span class="hl-1"> </span><span class="hl-7">CLEAR_MESSAGE</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Set message action</span><br/><span class="hl-2">export</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">SET_MESSAGE</span><span class="hl-1"> = </span><span class="hl-3">&#39;SET_MESSAGE&#39;</span><span class="hl-1">;</span><br/><span class="hl-6">interface</span><span class="hl-1"> </span><span class="hl-8">SetMessage</span><span class="hl-1"> </span><span class="hl-6">extends</span><span class="hl-1"> </span><span class="hl-8">Action</span><span class="hl-1">&lt;</span><span class="hl-6">typeof</span><span class="hl-1"> </span><span class="hl-7">SET_MESSAGE</span><span class="hl-1">&gt; {</span><br/><span class="hl-1">    </span><span class="hl-0">message</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><span class="hl-2">export</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-4">setMessage</span><span class="hl-1"> = (</span><span class="hl-0">message</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">): </span><span class="hl-8">SetMessage</span><span class="hl-1"> </span><span class="hl-6">=&gt;</span><span class="hl-1"> ({</span><br/><span class="hl-1">    </span><span class="hl-0">type:</span><span class="hl-1"> </span><span class="hl-7">SET_MESSAGE</span><span class="hl-1">,</span><br/><span class="hl-1">    </span><span class="hl-0">message</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Message reducer</span><br/><span class="hl-0">window</span><span class="hl-1">.</span><span class="hl-0">storeReducers</span><span class="hl-1">.</span><span class="hl-4">myMessageReducer</span><span class="hl-1"> = (</span><span class="hl-0">state</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1"> = </span><span class="hl-3">&#39;default value&#39;</span><span class="hl-1">, </span><span class="hl-0">action</span><span class="hl-1">: </span><span class="hl-8">StoreActions</span><span class="hl-1">): </span><span class="hl-8">string</span><span class="hl-1"> </span><span class="hl-6">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1">    </span><span class="hl-2">switch</span><span class="hl-1">(</span><span class="hl-0">action</span><span class="hl-1">.</span><span class="hl-0">type</span><span class="hl-1">) {</span><br/><span class="hl-1">        </span><span class="hl-2">case</span><span class="hl-1"> </span><span class="hl-3">&#39;CLEAR_MESSAGE&#39;</span><span class="hl-1">:</span><br/><span class="hl-1">            </span><span class="hl-2">return</span><span class="hl-1"> </span><span class="hl-3">&#39;&#39;</span><span class="hl-1">;</span><br/><span class="hl-1">        </span><span class="hl-2">case</span><span class="hl-1"> </span><span class="hl-3">&#39;SET_MESSAGE&#39;</span><span class="hl-1">:</span><br/><span class="hl-1">            </span><span class="hl-2">return</span><span class="hl-1"> </span><span class="hl-0">action</span><span class="hl-1">.</span><span class="hl-0">message</span><span class="hl-1">;</span><br/><span class="hl-1">        </span><span class="hl-2">default</span><span class="hl-1">:</span><br/><span class="hl-1">            </span><span class="hl-2">return</span><span class="hl-1"> </span><span class="hl-0">state</span><span class="hl-1">;</span><br/><span class="hl-1">    }</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-6">declare</span><span class="hl-1"> </span><span class="hl-0">global</span><span class="hl-1"> {</span><br/><span class="hl-1">    </span><span class="hl-6">interface</span><span class="hl-1"> </span><span class="hl-8">StoreReducersMap</span><span class="hl-1"> {</span><br/><span class="hl-1">        </span><span class="hl-0">myMessageReducer</span><span class="hl-1">: </span><span class="hl-8">Reducer</span><span class="hl-1">&lt;</span><span class="hl-8">string</span><span class="hl-1">, </span><span class="hl-8">StoreActions</span><span class="hl-1">&gt;;</span><br/><span class="hl-1">    }</span><br/><br/><span class="hl-1">    </span><span class="hl-6">interface</span><span class="hl-1"> </span><span class="hl-8">StoreActionsMap</span><span class="hl-1"> {</span><br/><span class="hl-1">        </span><span class="hl-0">myMessageReducer</span><span class="hl-1">: </span><span class="hl-8">SetMessage</span><span class="hl-1"> | </span><span class="hl-8">ClearMessage</span><span class="hl-1">;</span><br/><span class="hl-1">    }</span><br/><span class="hl-1">}</span>
</code></pre>

<a href="#removing-reducers" id="removing-reducers" style="color: inherit; text-decoration: none;">
  <h4>Removing reducers</h4>
</a>
<p>After removing a reducer from <code>window.storeReducers</code> it will no longer listen to dispatched actions. After a reducer is removed from <code>window.storeReducers</code> its state will be removed.</p>
<pre><code class="language-ts"><span class="hl-6">delete</span><span class="hl-1"> </span><span class="hl-0">window</span><span class="hl-1">.</span><span class="hl-0">storeReducers</span><span class="hl-1">.</span><span class="hl-0">myMessageReducer</span><span class="hl-1">;</span>
</code></pre>

<a href="#sagas" id="sagas" style="color: inherit; text-decoration: none;">
  <h3>Sagas</h3>
</a>

<a href="#adding-sagas" id="adding-sagas" style="color: inherit; text-decoration: none;">
  <h4>Adding sagas</h4>
</a>
<p>Adding sagas to the <code>window.storeSagas</code> object registers them on the <code>store</code> and runs them to start listening to dispatched actions.</p>
<pre><code class="language-ts"><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">call</span><span class="hl-1">, </span><span class="hl-0">takeLatest</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;redux-saga/effects&#39;</span><span class="hl-1">;</span><br/><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">SetMessage</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;./myMessageReducer&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">// Message saga</span><br/><span class="hl-0">window</span><span class="hl-1">.</span><span class="hl-0">storeSagas</span><span class="hl-1">.</span><span class="hl-4">myMessageSaga</span><span class="hl-1"> = </span><span class="hl-6">function*</span><span class="hl-1"> (): </span><span class="hl-8">Iterator</span><span class="hl-1">&lt;</span><span class="hl-8">any</span><span class="hl-1">&gt; {</span><br/><span class="hl-1">    </span><span class="hl-2">yield</span><span class="hl-1"> </span><span class="hl-4">takeLatest</span><span class="hl-1">(</span><span class="hl-3">&#39;SET_MESSAGE&#39;</span><span class="hl-1">, </span><span class="hl-6">function*</span><span class="hl-1"> (</span><span class="hl-0">action</span><span class="hl-1">: </span><span class="hl-8">SetMessage</span><span class="hl-1">): </span><span class="hl-8">Iterator</span><span class="hl-1">&lt;</span><span class="hl-8">any</span><span class="hl-1">&gt; {</span><br/><span class="hl-1">        </span><span class="hl-2">yield</span><span class="hl-1"> </span><span class="hl-4">call</span><span class="hl-1">(</span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">, </span><span class="hl-0">action</span><span class="hl-1">.</span><span class="hl-0">message</span><span class="hl-1">);</span><br/><span class="hl-1">    });</span><br/><span class="hl-1">};</span>
</code></pre>

<a href="#removing-sagas" id="removing-sagas" style="color: inherit; text-decoration: none;">
  <h4>Removing sagas</h4>
</a>
<p>After removing a saga from <code>window.storeSagas</code> it will no longer listen to dispatched actions and if the saga is running it will be cancelled.</p>
<pre><code class="language-ts"><span class="hl-6">delete</span><span class="hl-1"> </span><span class="hl-0">window</span><span class="hl-1">.</span><span class="hl-0">storeSagas</span><span class="hl-1">.</span><span class="hl-0">myMessageSaga</span><span class="hl-1">;</span>
</code></pre>

<a href="#global-types" id="global-types" style="color: inherit; text-decoration: none;">
  <h3>Global types</h3>
</a>
<p>This package provides the following global types</p>

<a href="#storeactions" id="storeactions" style="color: inherit; text-decoration: none;">
  <h4><code>StoreActions</code></h4>
</a>
<p>Any actions known to the store. Useful when creating reducers.</p>
<pre><code class="language-ts"><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-4">myReducer</span><span class="hl-1">(</span><span class="hl-0">state</span><span class="hl-1">: </span><span class="hl-8">string</span><span class="hl-1">, </span><span class="hl-0">action</span><span class="hl-1">: </span><span class="hl-8">StoreActions</span><span class="hl-1">): </span><span class="hl-8">string</span><span class="hl-1"> {</span><br/><span class="hl-1">    </span><span class="hl-5">// ...</span><br/><span class="hl-1">}</span>
</code></pre>

<a href="#storeactionsmap" id="storeactionsmap" style="color: inherit; text-decoration: none;">
  <h4><code>StoreActionsMap</code></h4>
</a>
<p>Any actions you want to use with the store you can add to the <code>StoreActionsMap</code>. These actions will be available on the global <code>StoreActions</code> type.</p>
<pre><code class="language-ts"><span class="hl-6">declare</span><span class="hl-1"> </span><span class="hl-0">global</span><span class="hl-1"> {</span><br/><span class="hl-1">    </span><span class="hl-6">interface</span><span class="hl-1"> </span><span class="hl-8">StoreActionsMap</span><span class="hl-1"> {</span><br/><span class="hl-1">        </span><span class="hl-0">myReducer</span><span class="hl-1">: </span><span class="hl-8">Action</span><span class="hl-1">&lt;</span><span class="hl-3">&#39;MY_ACTION&#39;</span><span class="hl-1">&gt;;</span><br/><span class="hl-1">    }</span><br/><span class="hl-1">}</span>
</code></pre>

<a href="#storereducersmap" id="storereducersmap" style="color: inherit; text-decoration: none;">
  <h4><code>StoreReducersMap</code></h4>
</a>
<p>Any reducers you want to use with the store you can add to the <code>StoreReducersMap</code>. This wil also bind the types to <code>StoreState</code>.</p>
<pre><code class="language-ts"><span class="hl-6">declare</span><span class="hl-1"> </span><span class="hl-0">global</span><span class="hl-1"> {</span><br/><span class="hl-1">    </span><span class="hl-6">interface</span><span class="hl-1"> </span><span class="hl-8">StoreReducersMap</span><span class="hl-1"> {</span><br/><span class="hl-1">        </span><span class="hl-0">myReducer</span><span class="hl-1">: </span><span class="hl-8">Reducer</span><span class="hl-1">&lt;</span><span class="hl-8">string</span><span class="hl-1">, </span><span class="hl-8">StoreActions</span><span class="hl-1">&gt;;</span><br/><span class="hl-1">    }</span><br/><span class="hl-1">}</span>
</code></pre>

<a href="#storesagasmap" id="storesagasmap" style="color: inherit; text-decoration: none;">
  <h4><code>StoreSagasMap</code></h4>
</a>
<p>It exists. You will probably not need it. But just in case you are looking for it, here it is.</p>
<pre><code class="language-ts"><span class="hl-6">declare</span><span class="hl-1"> </span><span class="hl-0">global</span><span class="hl-1"> {</span><br/><span class="hl-1">    </span><span class="hl-6">interface</span><span class="hl-1"> </span><span class="hl-8">StoreSagasMap</span><span class="hl-1"> {</span><br/><span class="hl-1">        </span><span class="hl-0">mySaga</span><span class="hl-1">: </span><span class="hl-8">Saga</span><span class="hl-1">;</span><br/><span class="hl-1">    }</span><br/><span class="hl-1">}</span>
</code></pre>

<a href="#storestate" id="storestate" style="color: inherit; text-decoration: none;">
  <h4><code>StoreState</code></h4>
</a>
<p>The <code>StoreState</code> type describes the return type of <code>window.store.getState()</code>. Useful when using stored values.</p>
<pre><code class="language-ts"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">state</span><span class="hl-1">: </span><span class="hl-8">StoreState</span><span class="hl-1"> = </span><span class="hl-0">window</span><span class="hl-1">.</span><span class="hl-0">store</span><span class="hl-1">.</span><span class="hl-4">getState</span><span class="hl-1">();</span>
</code></pre>

<a href="#logging" id="logging" style="color: inherit; text-decoration: none;">
  <h3>Logging</h3>
</a>
<p>Setting <code>window.DEV_MODE</code> to <code>true</code> before initializing will enable logging in the console and with the <a href="https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=en">Chrome Redux DevTools</a>.</p>
<pre><code class="language-ts"><span class="hl-2">import</span><span class="hl-1"> { </span><span class="hl-0">init</span><span class="hl-1"> } </span><span class="hl-2">from</span><span class="hl-1"> </span><span class="hl-3">&#39;@weavedev/store/init&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-0">window</span><span class="hl-1">.</span><span class="hl-7">DEV_MODE</span><span class="hl-1"> = </span><span class="hl-6">true</span><span class="hl-1">;</span><br/><br/><span class="hl-4">init</span><span class="hl-1">();</span>
</code></pre>

<a href="#license" id="license" style="color: inherit; text-decoration: none;">
  <h2>License</h2>
</a>
<p><a href="https://github.com/weavedev/store/blob/master/LICENSE">MIT</a></p>
<p>Made by <a href="https://github.com/gerarts">Paul Gerarts</a> and <a href="https://weave.nl">Weave</a></p>
</div></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
<h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Settings</h3></summary>
<div class="tsd-accordion-details">
<div class="tsd-filter-visibility">
<h4 class="uppercase">Member Visibility</h4><form>
<ul id="tsd-filter-options">
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-private" name="private"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Private</span></label></li>
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li>
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></form></div>
<div class="tsd-theme-toggle">
<h4 class="uppercase">Theme</h4><select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div>
<nav class="tsd-navigation primary">
<details class="tsd-index-accordion" open><summary class="tsd-accordion-summary">
<h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
<div class="tsd-accordion-details">
<ul>
<li class="current selected"><a href="modules.html">@weavedev/store</a>
<ul>
<li class="tsd-kind-module"><a href="modules/init.html">init</a></li>
<li class="tsd-kind-module"><a href="modules/store.html">store</a></li></ul></li></ul></div></details></nav></div></div>
<div class="container tsd-generator">
<p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div>
<div class="overlay"></div><script src="assets/main.js"></script></body></html>