UNPKG

qminer

Version:

A C++ based data analytics platform for processing large-scale real-time streams containing structured and unstructured data

870 lines (863 loc) 34 kB
<!doctype html> <html> <head> <meta name="generator" content="JSDoc 3"> <meta charset="utf-8"> <title>Class: Base</title> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link href="css/baseline.css" rel="stylesheet"> </head> <body onload="prettyPrint()"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-content"> <a href="index.html" class="jsdoc-navbar-package-name">QMiner JavaScript API v9.4.0</a> </div> </div> </nav> <div id="jsdoc-body-container"> <div id="jsdoc-content"> <div id="jsdoc-content-container"> <div id="jsdoc-main" role="main"> <header class="page-header"> <div class="symbol-detail-labels"><span class="label label-kind">class</span>&nbsp;<span class="label label-static">static</span></div> <h1><small><a href="module-qm.html">qm</a>.<wbr></small><span class="symbol-name">Base</span></h1> <p class="source-link">Source: <a href="qminerdoc.js.html#source-line-363">qminerdoc.<wbr>js:363</a></p> <div class="symbol-classdesc"> <p>Represents the database and holds stores.</p> </div> <dl class="dl-compact"> </dl> </header> <section id="summary"> <div class="summary-callout"> <h2 class="summary-callout-heading">Methods</h2> <div class="summary-content"> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-qm.Base.html#close">close()</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#createStore">createStore(storeDef[, storeSizeInMB])</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#garbageCollect">garbageCollect([max_time])</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#getStats">getStats()</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#getStoreList">getStoreList()</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-qm.Base.html#getStreamAggr">getStreamAggr(saName)</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#getStreamAggrNames">getStreamAggrNames()</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#getStreamAggrStats">getStreamAggrStats()</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#isClosed">isClosed()</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#isStore">isStore(name)</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-qm.Base.html#loadCSV">loadCSV(opts[, callback])</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#partialFlush">partialFlush([window])</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#search">search(query)</a></dt> <dd> </dd> <dt><a href="module-qm.Base.html#store">store(name)</a></dt> <dd> </dd> </dl> </div> </div> </div> </section> <section> <h2 id="Base">new&nbsp;<span class="symbol-name">Base</span><span class="signature"><span class="signature-params">(paramObj)</span></span></h2> <p>Base</p> <section> <h3> Example </h3> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // using a constructor, in open mode var base &#x3D; new qm.Base({ mode: &#x27;open&#x27; }); base.close();</code></pre> </div> </section> <section> <h3>Parameter</h3> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>paramObj</p> </td> <td> <p><a href="module-qm.html#~BaseConstructorParam">module:qm~BaseConstructorParam</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The base constructor parameter object.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> </dl> </section> <section> <h2>Methods</h2> <section> <h3 id="close"><span class="symbol-name">close</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> null</span></span></h3> <p>Closes the database.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // using a constructor, in open mode var base &#x3D; new qm.Base({ mode: &#x27;open&#x27; }); // close the database base.close();</code></pre> </div> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>null</code>B No value is returned.</p> </dd> </dl> <h3 id="createStore"><span class="symbol-name">createStore</span><span class="signature"><span class="signature-params">(storeDef[, storeSizeInMB])</span>&nbsp;&rarr; <span class="signature-returns"> (<a href="module-qm.Store.html">module:qm.Store</a> or Array of <a href="module-qm.Store.html">module:qm.Store</a>)</span></span></h3> <p>Creates a new store.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a new base with one store var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [ { name: &quot;Superheroes&quot;, fields: [ { name: &quot;Name&quot;, type: &quot;string&quot; }, { name: &quot;Superpowers&quot;, type: &quot;string_v&quot; }, { name: &quot;YearsActive&quot;, type: &quot;int&quot; } ] }] }); // create a new store called &quot;Supervillains&quot; in the base base.createStore({ name: &quot;Supervillians&quot;, fields: [ { name: &quot;Name&quot;, type: &quot;string&quot; }, { name: &quot;Superpowers&quot;, type: &quot;string_v&quot; }, { name: &quot;YearsActive&quot;, type: &quot;int&quot; } ] }); // create two new stores called &quot;Cities&quot; and &quot;Leagues&quot; base.createStore([ { name: &quot;Cities&quot;, fields: [ { name: &quot;Name&quot;, type: &quot;string&quot;, primary: true }, { name: &quot;Population&quot;, type: &quot;int&quot; } ] }, { name: &quot;Leagues&quot;, fields: [ { name: &quot;Name&quot;, type: &quot;string&quot; }, { name: &quot;Members&quot;, type: &quot;string_v&quot; } ] } ]); base.close();</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>storeDef</p> </td> <td> <p>Array of <a href="module-qm.html#~SchemaDef">module:qm~SchemaDef</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The definition of the store(s).</p> </td> </tr> <tr> <td> <p>storeSizeInMB</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>The reserved size of the store(s).</p> <p>Defaults to <code>1024</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>(<a href="module-qm.Store.html">module:qm.Store</a> or Array of <a href="module-qm.Store.html">module:qm.Store</a>)</code>B - Returns a store or an array of stores (if the schema definition was an array).</p> </dd> </dl> <h3 id="garbageCollect"><span class="symbol-name">garbageCollect</span><span class="signature"><span class="signature-params">([max_time])</span></span></h3> <p>Calls qminer garbage collector to remove records outside time windows. For application example see <a href="module-qm.html#~SchemaTimeWindowDef">module:qm~SchemaTimeWindowDef</a>.</p> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>max_time</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>Maximal number of time each store can spend on cleaning backlog in milisecons. If -1 then no limit is applied.</p> <p>Defaults to <code>-1</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> </dl> <h3 id="getStats"><span class="symbol-name">getStats</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-qm.html#~PerformanceStatBase">module:qm~PerformanceStatBase</a></span></span></h3> <p>Retrieves performance statistics for qminer.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a base with two stores var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [ { name: &quot;KwikEMart&quot;, fields: [ { name: &quot;Worker&quot;, type: &quot;string&quot; }, { name: &quot;Groceries&quot;, type: &quot;string_v&quot; } ] }, { name: &quot;NuclearPowerplant&quot;, fields: [ { name: &quot;Owner&quot;, type: &quot;string&quot; }, { name: &quot;NumberOfAccidents&quot;, type: &quot;int&quot; }, { name: &quot;Workers&quot;, type: &quot;string_v&quot; } ] }] }); // call the garbage collector base.getStats(); base.close();</code></pre> </div> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-qm.html#~PerformanceStatBase">module:qm~PerformanceStatBase</a></code>B The performance statistics.</p> </dd> </dl> <h3 id="getStoreList"><span class="symbol-name">getStoreList</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Array of object</span></span></h3> <p>Returns a list of store descriptors.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a base with two stores var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [ { name: &quot;KwikEMart&quot;, fields: [ { name: &quot;Worker&quot;, type: &quot;string&quot; }, { name: &quot;Groceries&quot;, type: &quot;string_v&quot; } ] }, { name: &quot;NuclearPowerplant&quot;, fields: [ { name: &quot;Owner&quot;, type: &quot;string&quot; }, { name: &quot;NumberOfAccidents&quot;, type: &quot;int&quot; }, { name: &quot;Workers&quot;, type: &quot;string_v&quot; } ] }] }); // get the list of store descriptors var exists &#x3D; base.getStoreList(); base.close();</code></pre> </div> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Array of object</code>B An array of store descriptors. The store descriptor <code>storeDesc</code> contains the properties: <br>1. <code>storeDesc.storeId</code> - The store ID. Type <code>number</code>. <br>2. <code>storeDesc.storeName</code> - Store name. Type <code>string</code>. <br>3. <code>storeDesc.storeRecords</code> - Number of records in store. Type <code>number</code>. <br>4. <code>storeDesc.fields</code> - The store field schema. Type <code>Array of <a href="module-qm.html#~SchemaFieldDef">module:qm.SchemaFieldDef</a></code>. <br>5. <code>storeDesc.keys</code> - The store key schema. Type <code>Array of <a href="module-qm.html#~SchemaKeyDef">module:qm.SchemaKeyDef</a></code>. <br>6. <code>storeDesc.joins</code> - The store join schema. Type <code>Array of <a href="module-qm.html#~SchemaJoinDef">module:qm.SchemaJoinDef</a></code>. </p> </dd> </dl> <h3 id="getStreamAggr"><span class="symbol-name">getStreamAggr</span><span class="signature"><span class="signature-params">(saName)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-qm.StreamAggr.html">module:qm.StreamAggr</a></span></span></h3> <p>Gets the stream aggregate of the given name.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a simple base containing one store var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [{ name: &quot;People&quot;, fields: [ { name: &quot;Name&quot;, type: &quot;string&quot; }, { name: &quot;Gendre&quot;, type: &quot;string&quot; }, ] }, { name: &quot;Laser&quot;, fields: [ { name: &quot;Time&quot;, type: &quot;datetime&quot; }, { name: &quot;WaveLength&quot;, type: &quot;float&quot; } ] }] }); // create a new time series window buffer stream aggregator for &#x27;Laser&#x27; store (with the JSON object) var wavelength &#x3D; { name: &quot;WaveLengthLaser&quot;, type: &quot;timeSeriesWinBuf&quot;, store: &quot;Laser&quot;, timestamp: &quot;Time&quot;, value: &quot;WaveLength&quot;, winsize: 10000 } var sa &#x3D; base.store(&quot;Laser&quot;).addStreamAggr(wavelength); // get the stream aggregate with the name &#x27;Laser&#x27; var streamAggr &#x3D; base.getStreamAggr(&#x27;WaveLengthLaser&#x27;); base.close();</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>saName</p> </td> <td> <p>string</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The name of the stream aggregate.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-qm.StreamAggr.html">module:qm.StreamAggr</a></code>B The stream aggregate whose name is <code>saName</code>.</p> </dd> </dl> <h3 id="getStreamAggrNames"><span class="symbol-name">getStreamAggrNames</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Array of string</span></span></h3> <p>Gets an array of the stream aggregate names in the base.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a simple base containing one store var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [{ name: &quot;People&quot;, fields: [ { name: &quot;Name&quot;, type: &quot;string&quot; }, { name: &quot;Gendre&quot;, type: &quot;string&quot; }, ] }, { name: &quot;Laser&quot;, fields: [ { name: &quot;Time&quot;, type: &quot;datetime&quot; }, { name: &quot;WaveLength&quot;, type: &quot;float&quot; } ] }] }); // create a new stream aggregator for &#x27;People&#x27; store, get the length of the record name (with the function object) var aggr &#x3D; new qm.StreamAggr(base, new function () { var length &#x3D; 0; this.name &#x3D; &#x27;nameLength&#x27;, this.onAdd &#x3D; function (rec) { length &#x3D; rec.Name.length; }; this.saveJson &#x3D; function (limit) { return { val: length }; } }, &quot;People&quot;); // create a new time series window buffer stream aggregator for &#x27;Laser&#x27; store (with the JSON object) var wavelength &#x3D; { name: &quot;WaveLengthLaser&quot;, type: &quot;timeSeriesWinBuf&quot;, store: &quot;Laser&quot;, timestamp: &quot;Time&quot;, value: &quot;WaveLength&quot;, winsize: 10000 } var sa &#x3D; base.store(&quot;Laser&quot;).addStreamAggr(wavelength); // get the stream aggregates names var streamAggrNames &#x3D; base.getStreamAggrNames(); base.close();</code></pre> </div> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Array of string</code>B The array containing the stream aggregate names.</p> </dd> </dl> <h3 id="getStreamAggrStats"><span class="symbol-name">getStreamAggrStats</span><span class="signature"><span class="signature-params">()</span></span></h3> <p>Retrieves performance statistics for stream aggregates.</p> <dl class="dl-compact"> </dl> <h3 id="isClosed"><span class="symbol-name">isClosed</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Boolean</span></span></h3> <p>Checks if the base is closed.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // using a constructor, in open mode var base &#x3D; new qm.Base({ mode: &#x27;open&#x27; }); // check if the base is closed var closed &#x3D; base.isClosed(); // close the database base.close();</code></pre> </div> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Boolean</code>B Returns <code>true</code>, if the base is closed.</p> </dd> </dl> <h3 id="isStore"><span class="symbol-name">isStore</span><span class="signature"><span class="signature-params">(name)</span>&nbsp;&rarr; <span class="signature-returns"> boolean</span></span></h3> <p>Checks if there is a store.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a base with two stores var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [ { name: &quot;KwikEMart&quot;, fields: [ { name: &quot;Worker&quot;, type: &quot;string&quot; }, { name: &quot;Groceries&quot;, type: &quot;string_v&quot; } ] }, { name: &quot;NuclearPowerplant&quot;, fields: [ { name: &quot;Owner&quot;, type: &quot;string&quot; }, { name: &quot;NumberOfAccidents&quot;, type: &quot;int&quot; }, { name: &quot;Workers&quot;, type: &quot;string_v&quot; } ] }] }); // get the &quot;KwikEMart&quot; store var exists &#x3D; base.isStore(&quot;KwikEMart&quot;); // true base.close();</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>name</p> </td> <td> <p>string</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Store name.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>boolean</code>B True, if there exists a store with the store <code>name</code>. Otherwise, false.</p> </dd> </dl> <h3 id="loadCSV"><span class="symbol-name">loadCSV</span><span class="signature"><span class="signature-params">(opts[, callback])</span></span></h3> <p>Loads the store from a CSV file.</p> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>opts</p> </td> <td> <p><a href="module-qm.html#~BaseLoadCSVParam">module:qm~BaseLoadCSVParam</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Options object.</p> </td> </tr> <tr> <td> <p>callback</p> </td> <td> <p>function()</p> </td> <td> <p>Yes</p> </td> <td> <p>Callback function, called on errors and when the procedure finishes.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> </dl> <h3 id="partialFlush"><span class="symbol-name">partialFlush</span><span class="signature"><span class="signature-params">([window])</span>&nbsp;&rarr; <span class="signature-returns"> number</span></span></h3> <p>Base saves dirty data given some time window.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a base with two stores var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [ { name: &quot;KwikEMart&quot;, fields: [ { name: &quot;Worker&quot;, type: &quot;string&quot; }, { name: &quot;Groceries&quot;, type: &quot;string_v&quot; } ] }, { name: &quot;NuclearPowerplant&quot;, fields: [ { name: &quot;Owner&quot;, type: &quot;string&quot; }, { name: &quot;NumberOfAccidents&quot;, type: &quot;int&quot; }, { name: &quot;Workers&quot;, type: &quot;string_v&quot; } ] }] }); // call the garbage collector base.partialFlush(); base.close();</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>window</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>Length of available time window in miliseconds.</p> <p>Defaults to <code>500</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>number</code>B Number of records it flushed.</p> </dd> </dl> <h3 id="search"><span class="symbol-name">search</span><span class="signature"><span class="signature-params">(query)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-qm.RecordSet.html">module:qm.RecordSet</a></span></span></h3> <p>Makes a query search and returns a record set.</p> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>query</p> </td> <td> <p><a href="module-qm.html#~QueryObject">module:qm~QueryObject</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Query language JSON object.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-qm.RecordSet.html">module:qm.RecordSet</a></code>B The record set that matches the search criterion.</p> </dd> </dl> <h3 id="store"><span class="symbol-name">store</span><span class="signature"><span class="signature-params">(name)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-qm.Store.html">module:qm.Store</a></span></span></h3> <p>Returns the store with the specified name.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import qm module var qm &#x3D; require(&#x27;qminer&#x27;); // create a base with two stores var base &#x3D; new qm.Base({ mode: &quot;createClean&quot;, schema: [ { name: &quot;KwikEMart&quot;, fields: [ { name: &quot;Worker&quot;, type: &quot;string&quot; }, { name: &quot;Groceries&quot;, type: &quot;string_v&quot; } ] }, { name: &quot;NuclearPowerplant&quot;, fields: [ { name: &quot;Owner&quot;, type: &quot;string&quot; }, { name: &quot;NumberOfAccidents&quot;, type: &quot;int&quot; }, { name: &quot;Workers&quot;, type: &quot;string_v&quot; } ] }] }); // get the &quot;KwikEMart&quot; store var store &#x3D; base.store(&quot;KwikEMart&quot;); // returns the store with the name &quot;KwikEMart&quot; base.close();</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>name</p> </td> <td> <p>string</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Store name.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-qm.Store.html">module:qm.Store</a></code>B The store.</p> </dd> </dl> </section> </section> </div> </div> <nav id="jsdoc-toc-nav" role="navigation"></nav> </div> </div> <footer id="jsdoc-footer" class="jsdoc-footer"> <div id="jsdoc-footer-container"> <p> </p> </div> </footer> <script src="scripts/jquery.min.js"></script> <script src="scripts/tree.jquery.js"></script> <script src="scripts/prettify.js"></script> <script src="scripts/jsdoc-toc.js"></script> <script src="scripts/linenumber.js"></script> <script src="scripts/scrollanchor.js"></script> </body> </html>