UNPKG

jsdoc-oblivion

Version:
3,815 lines (1,232 loc) 57.8 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=yes, width=device-width"> <title>Oblivion — Module: documents/probe</title> <link rel="shortcut icon" href="/favicon.ico"> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/sunlight.dark.css"> <link type="text/css" rel="stylesheet" href="styles/site.oblivion.css"> </head> <body> <div class="container-fluid"> <div class="navbar navbar-fixed-top navbar-inverse"> <div class="navbar-inner"> <a class="brand" href="index.html">Oblivion</a> <ul class="nav"> <li class="dropdown"> <a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b class="caret"></b></a> <ul class="dropdown-menu "> <li> <a href="module-base.html">base</a> </li> <li> <a href="chains_.html">base/chains</a> </li> <li> <a href="binder.html">documents/binder</a> </li> <li> <a href="model_.html">documents/model</a> </li> <li> <a href="probe.html">documents/probe</a> </li> <li> <a href="schema_.html">documents/schema</a> </li> <li> <a href="collector.html">ink/collector</a> </li> <li> <a href="bussable_.html">mixins/bussable</a> </li> <li> <a href="signalable_.html">mixins/signalable</a> </li> <li> <a href="format.html">strings/format</a> </li> <li> <a href="logger.html">utils/logger</a> </li> </ul> </li> <li class="dropdown"> <a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a> <ul class="dropdown-menu "> <li> <a href="base.html">base</a> </li> <li> <a href="chains.html">base/chains</a> </li> <li> <a href="model.html">documents/model</a> </li> <li> <a href="probe.queryOperators.html">documents/probe.queryOperators</a> </li> <li> <a href="probe.updateOperators.html">documents/probe.updateOperators</a> </li> <li> <a href="collector-ACollector.html">ink/collector~ACollector</a> </li> <li> <a href="collector-CollectorBase_.html">ink/collector~CollectorBase</a> </li> <li> <a href="collector-OCollector.html">ink/collector~OCollector</a> </li> <li> <a href="signalable-Signal.html">mixins/signalable~Signal</a> </li> <li> <a href="logger.Logger.html">utils/logger.Logger</a> </li> </ul> </li> <li class="dropdown"> <a href="mixins.list.html" class="dropdown-toggle" data-toggle="dropdown">Mixins<b class="caret"></b></a> <ul class="dropdown-menu "> <li> <a href="schema.html">documents/schema</a> </li> <li> <a href="bussable.html">mixins/bussable</a> </li> <li> <a href="signalable.html">mixins/signalable</a> </li> </ul> </li> </ul> </div> </div> <div class="row-fluid"> <div class="span3"> <div id="toc"></div> </div> <div class="span9"> <div id="main"> <h1 class="page-title">Module: documents/probe</h1> <section> <header> <h2> documents/probe </h2> </header> <article> <div class="container-overview"> <div class="description">Queries objects in memory using a mongo-like notation for reaching into objects and filtering for records</div> <dl class="details"> <dt class="tag-author">Author:</dt> <dd class="tag-author"> <ul> <li>Terry Weiss</li> </ul> </dd> <dt class="tag-license">License:</dt> <dd class="tag-license"> <ul class="dummy"> <li>MIT</li> </ul> </dd> </dl> </div> <h3 class="subsection-title">Requires</h3> <ul> <li>module:lodash</li> </ul> <h3 class="subsection-title">Classes</h3> <dl> <dt><a href="probe.queryOperators.html">queryOperators</a></dt> <dd></dd> <dt><a href="probe.updateOperators.html">updateOperators</a></dt> <dd></dd> </dl> <h3 class="subsection-title">Members</h3> <dl> <dt class="name" id="delimiter"> <h4><span class="type-signature">&lt;static> </span>delimiter<span class="type-signature"> :string</span></h4> </dt> <dd> <div class="description"> The delimiter to use when splitting an expression </div> <h5>Type:</h5> <ul> <li> <span class="param-type">string</span> </li> </ul> <dl class="details"> <dt class="tag-default">Default Value:</dt> <dd class="tag-default"> <ul class="dummy"> <li>'.'</li> </ul> </dd> </dl> </dd> <dt class="name" id="nestedOps"> <h4><span class="type-signature">&lt;private, inner> </span>nestedOps<span class="type-signature"> :array.&lt;string></span></h4> </dt> <dd> <div class="description"> The list of operators that are nested within the expression object. These take the form <code>{path:{operator:operand}}</code> </div> <h5>Type:</h5> <ul> <li> <span class="param-type">array.&lt;string></span> </li> </ul> <dl class="details"> </dl> </dd> <dt class="name" id="operations"> <h4><span class="type-signature">&lt;private, inner> </span>operations<span class="type-signature"></span></h4> </dt> <dd> <div class="description"> The query operations that evaluate directly from an operation </div> <dl class="details"> </dl> </dd> <dt class="name" id="prefixOps"> <h4><span class="type-signature">&lt;private, inner> </span>prefixOps<span class="type-signature"> :array.&lt;string></span></h4> </dt> <dd> <div class="description"> The list of operators that prefix the expression object. These take the form <code>{operator:{operands}}</code> or <code>{operator: [operands]}</code> </div> <h5>Type:</h5> <ul> <li> <span class="param-type">array.&lt;string></span> </li> </ul> <dl class="details"> </dl> </dd> </dl> <h3 class="subsection-title">Methods</h3> <dl> <dt> <h4 class="name" id="all"><span class="type-signature">&lt;static> </span>all<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {boolean}</span></h4> </dt> <dd> <div class="description"> Returns true if all items match the query </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">boolean</span> </dd> </dl> </dd> <dt> <h4 class="name" id="any"><span class="type-signature">&lt;static> </span>any<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {boolean}</span></h4> </dt> <dd> <div class="description"> Returns true if any of the items match the query </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">boolean</span> </dd> </dl> </dd> <dt> <h4 class="name" id="every"><span class="type-signature">&lt;static> </span>every<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {boolean}</span></h4> </dt> <dd> <div class="description"> Returns true if all items match the query. Aliases as `all` </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">boolean</span> </dd> </dl> </dd> <dt> <h4 class="name" id="find"><span class="type-signature">&lt;static> </span>find<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {array}</span></h4> </dt> <dd> <div class="description"> Find all records that match a query </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> The results </div> <dl> <dt> Type </dt> <dd> <span class="param-type">array</span> </dd> </dl> </dd> <dt> <h4 class="name" id="findKeys"><span class="type-signature">&lt;static> </span>findKeys<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {array}</span></h4> </dt> <dd> <div class="description"> Find all records that match a query and returns the keys for those items. This is similar to <a href="probe.html#find">module:documents/probe.find</a> but instead of returning records, returns the keys. If `obj` is an object it will return the hash key. If 'obj' is an array, it will return the index </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">array</span> </dd> </dl> </dd> <dt> <h4 class="name" id="findOne"><span class="type-signature">&lt;static> </span>findOne<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Returns the first record that matches the query. Aliased as `seek`. </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="findOneKey"><span class="type-signature">&lt;static> </span>findOneKey<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Returns the first record that matches the query and returns its key or index depending on whether `obj` is an object or array respectively. Aliased as `seekKey`. </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="get"><span class="type-signature">&lt;static> </span>get<span class="signature">(path, record)</span><span class="type-signature"> &rarr; {*}</span></h4> </dt> <dd> <div class="description"> Reaches into an object and allows you to get at a value deeply nested in an object. This is not a query, but a straight reach in, useful for event bindings </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>path</code></td> <td class="type"> <span class="param-type">array</span> </td> <td class="description last">The split path of the element to work with</td> </tr> <tr> <td class="name"><code>record</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The record to reach into</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> Whatever was found in the record </div> <dl> <dt> Type </dt> <dd> <span class="param-type">*</span> </dd> </dl> </dd> <dt> <h4 class="name" id="mixin"><span class="type-signature">&lt;static> </span>mixin<span class="signature">(obj, collection)</span><span class="type-signature"></span></h4> </dt> <dd> <div class="description"> Binds the query and update methods to a specific object and adds the methods to that object. When called these methods can skip the first parameter so that find(object, query) can just be called as object.find(query) </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">object</span> | <span class="param-type">array</span> </td> <td class="description last">The object or array to bind to</td> </tr> <tr> <td class="name"><code>collection</code></td> <td class="type"> <span class="param-type">object</span> | <span class="param-type">array</span> </td> <td class="description last">If the collection is not the same as <code>this</code> but is a property, or even a whole other object, you specify that here. Otherwise the <code>obj</code> is assumed to be the same as the collecion</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> </dd> <dt> <h4 class="name" id="proxy"><span class="type-signature">&lt;static> </span>proxy<span class="signature">(obj)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Binds the query and update methods to a new object. When called these methods can skip the first parameter so that find(object, query) can just be called as find(query) </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">object</span> | <span class="param-type">array</span> </td> <td class="description last">The object or array to bind to</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> An object with method bindings in place </div> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="remove"><span class="type-signature">&lt;static> </span>remove<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {object|array}</span></h4> </dt> <dd> <div class="description"> Remove all items in the object/array that match the query </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> The array or object as appropriate without the records. </div> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> | <span class="param-type">array</span> </dd> </dl> </dd> <dt> <h4 class="name" id="set"><span class="type-signature">&lt;static> </span>set<span class="signature">(path, record, setter, newValue)</span><span class="type-signature"></span></h4> </dt> <dd> <div class="description"> This will write the value into a record at the path, creating intervening objects if they don't exist. This does not work as filtered update and is meant to be used on a single record. It is a nice way of setting a property at an arbitrary depth at will. </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>path</code></td> <td class="type"> <span class="param-type">array</span> </td> <td class="description last">The split path of the element to work with</td> </tr> <tr> <td class="name"><code>record</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The record to reach into</td> </tr> <tr> <td class="name"><code>setter</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="description last">The set operation. See <a href="probe.updateOperators.html">module:documents/probe.updateOperators</a> for the operators you can use.</td> </tr> <tr> <td class="name"><code>newValue</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The value to write to the, or if the operator is $pull, the query of items to look for</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> </dd> <dt> <h4 class="name" id="some"><span class="type-signature">&lt;static> </span>some<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {boolean}</span></h4> </dt> <dd> <div class="description"> Returns true if any of the items match the query. Aliases as `any` </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">boolean</span> </dd> </dl> </dd> <dt> <h4 class="name" id="unique"><span class="type-signature">&lt;static> </span>unique<span class="signature">(obj, qu)</span><span class="type-signature"> &rarr; {array}</span></h4> </dt> <dd> <div class="description"> Returns the set of unique records that match a query </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query to execute. See <a href="probe.queryOperators.html">module:documents/probe.queryOperators</a> for the operators you can use.</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <dl> <dt> Type </dt> <dd> <span class="param-type">array</span> </dd> </dl> </dd> <dt> <h4 class="name" id="update"><span class="type-signature">&lt;static> </span>update<span class="signature">(obj, qu, setDocument)</span><span class="type-signature"></span></h4> </dt> <dd> <div class="description"> Updates all records in obj that match the query. See <a href="probe.updateOperators.html">module:documents/probe.updateOperators</a> for the operators that are supported. </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">object</span> | <span class="param-type">array</span> </td> <td class="description last">The object to update</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The query which will be used to identify the records to updated</td> </tr> <tr> <td class="name"><code>setDocument</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The update operator. See <a href="probe.updateOperators.html">module:documents/probe.updateOperators</a></td> </tr> </tbody> </table> </div> <dl class="details"> </dl> </dd> <dt> <h4 class="name" id="execQuery"><span class="type-signature">&lt;private, inner> </span>execQuery<span class="signature">(obj, qu, shortCircuit, stopOnFirst)</span><span class="type-signature"></span></h4> </dt> <dd> <div class="description"> Executes a query by traversing a document and evaluating each record </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Argument</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">array</span> | <span class="param-type">object</span> </td> <td class="attributes"> </td> <td class="description last">The object to query</td> </tr> <tr> <td class="name"><code>qu</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> </td> <td class="description last">The query to execute</td> </tr> <tr> <td class="name"><code>shortCircuit</code></td> <td class="type"> <span class="param-type">boolean</span> </td> <td class="attributes"> &lt;nullable><br> </td> <td class="description last">When true, the condition that matches the query stops evaluation for that record, otherwise all conditions have to be met</td> </tr> <tr> <td class="name"><code>stopOnFirst</code></td> <td class="type"> <span class="param-type">boolean</span> </td> <td class="attributes"> &lt;nullable><br> </td> <td class="description last">When true all evaluation stops after the first record is found to match the conditons</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> </dd> <dt> <h4 class="name" id="parseQueryExpression"><span class="type-signature">&lt;private, inner> </span>parseQueryExpression<span class="signature">(obj)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Parses a query request and builds an object that can used to process a query target </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>obj</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The expression object</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> All components of the expression in a kind of execution tree </div> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="processExpressionObject"><span class="type-signature">&lt;private, inner> </span>processExpressionObject<span class="signature">(val, key)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Interrogates a single query expression object and calls the appropriate handler for its contents </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>val</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The expression</td> </tr> <tr> <td class="name"><code>key</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The prefix</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> A formatted operation definition </div> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="processNestedOperator"><span class="type-signature">&lt;private, inner> </span>processNestedOperator<span class="signature">(path, operand)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Processes a nested operator by picking the operator out of the expression object. Returns a formatted object that can be used for querying </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>path</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="description last">The path to element to work with</td> </tr> <tr> <td class="name"><code>operand</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The operands to use for the query</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> A formatted operation definition </div> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="processPrefixOperator"><span class="type-signature">&lt;private, inner> </span>processPrefixOperator<span class="signature">(operation, operand)</span><span class="type-signature"> &rarr; {object}</span></h4> </dt> <dd> <div class="description"> Processes a prefixed operator and then passes control to the nested operator method to pick out the contained values </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table table-striped"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>operation</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="description last">The operation prefix</td> </tr> <tr> <td class="name"><code>operand</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">The operands to use for the query</td> </tr> </tbody> </table> </div> <dl class="details"> </dl> <h5>Returns:</h5> <div class="param-desc"> A formatted operation definition </div> <dl> <dt> Type </dt> <dd> <span class="param-type">object</span> </dd> </dl> </dd> <dt> <h4 class="name" id="pushin"><span class="type-signature">&lt;private, inner> </span>pushin<span class="signature">(path, record, setter, newValue)</span><span class="type-signature"></span></h4> </dt> <dd> <div class="description"> This will write the value into a record at the path, creating intervening objects if they don't exist </div> <h5>Parameters:</h5> <div class="params-table-container"> <table class="params table ta