UNPKG

pure-fts

Version:
1,299 lines (1,190 loc) 206 kB
<!doctype html> <html> <head> <title>Tests &amp; Coverage</title> <script> headings = []; onload = function () { headings = document.querySelectorAll('h2'); reset(); }; onscroll = function (e) { var heading = find(window.scrollY); if (!heading) return; var links = document.querySelectorAll('#menu a') , link; for (var i = 0, len = links.length; i < len; ++i) { link = links[i]; link.className = link.getAttribute('href') == '#' + heading.id ? 'active' : ''; } }; function find (y) { var i = headings.length , heading; while (i--) { heading = headings[i]; if (y >= heading.offsetTop) { return heading; } } } function toggle (className) { var elements = document.getElementsByClassName(className); for (var i = 0, il = elements.length; i < il; ++i) { var element = elements[i]; if (element.classList.contains('hide')) { element.classList.remove('hide'); element.classList.add('show'); } else { element.classList.remove('show'); element.classList.add('hide'); } }; } function reset () { var shownElements = document.getElementsByClassName('show'); var filterElements = document.querySelectorAll('input[type=checkbox]'); for (var i = 0, il = filterElements.length; i < il; ++i) { filterElements[i].checked = false; } // Check any filters with visible elements for (i = 0, il = shownElements.length; i < il; ++i) { var shownElement = shownElements[i]; var classNames = shownElement.className.split(' '); for (var ci = 0, cl = classNames.length; ci < cl; ++ci){ var element = document.getElementById('show-' + classNames[ci]); if (element) { element.checked = true; } } } }; function filter (element) { toggle(element.value); reset(); } </script> <style> body { font: 14px/1.6 Helvetica, Arial, sans-serif; margin: 0; color: #2c2c2c; } #coverage { padding: 60px; } h1 a:hover { text-decoration: none; } h2 { width: 80%; margin-top: 80px; margin-bottom: 0; font-weight: 100; letter-spacing: 1px; } ul { margin-top: 20px; padding: 0 15px; width: 100%; } ul li { float: left; width: 40%; margin-top: 5px; margin-right: 60px; list-style: none; padding: 5px 0; font-size: 12px; } #menu { position: fixed; font-size: 12px; overflow-y: auto; top: 0; right: 0; margin: 0; height: 100%; padding: 15px 15px; border-left: 1px solid #eee; background-color: #666; } #menu::after { display: block; content: ''; padding-top: 80px; } #menu li a { display: block; color: white; padding: 0 5px 0 35px; transition: background 300ms; text-decoration: none; } #menu li { position: relative; list-style: none; } #menu a:hover, #menu a.active { text-decoration: none; background: rgba(255,255,255,.4); } #menu li:hover .cov { opacity: 1; } #menu li .dirname { opacity: .60; padding-right: 2px; } #menu li .basename { opacity: 1; } #menu .cov { background: rgba(0,0,0,.3); position: absolute; top: 0; font-size: 9px; text-align: center; opacity: .8; width: 22px; border-radius: 10px; padding: 2px 3px; } #files .stats:nth-child(2n) { display: inline-block; margin-top: 15px; border: 1px solid #eee; padding: 10px; border-radius: 5px; } .stats div { float: left; padding: 0 5px; } .stats::after { display: block; content: ''; clear: both; } .stats .sloc::after { content: ' SLOC'; color: #b6b6b6; } .stats .percentage::after { content: ' coverage'; color: #b6b6b6; } .stats .hits::before { content: '('; color: #b6b6b6; } .stats .hits::after { content: ' Covered'; color: #b6b6b6; } .stats .misses::after { content: ' Not Covered)'; color: #b6b6b6; } .stats .failures::after { content: ' Failures'; color: #b6b6b6; } .stats .skipped::after { content: ' Skipped'; color: #b6b6b6; } .stats .test-count::after { content: ' Tests'; color: #b6b6b6; } .stats .duration::before { content: '('; color: #b6b6b6; } .stats .duration::after { content: ' ms)'; color: #b6b6b6; } .high { color: #00d4b4; } .medium { color: #e87d0d; } .low { color: #d4081a; } .terrible { color: #d4081a; font-weight: bold; } #files table { width: 80%; margin-top: 10px; border-collapse: collapse; border: 1px solid #cbcbcb; color: #363636; border-radius: 3px; } #files thead { display: none; } table td.line, table td.hits { width: 20px; background: #eaeaea; text-align: center; font-size: 11px; padding: 0 10px; color: #949494; } table td.hits { width: 10px; padding: 2px 5px; color: rgba(0,0,0,.2); background: #f0f0f0; } table td.sourcemaps { width: 1%; border-left: 1px solid #cbcbcb; padding: 0 10px; } td.sourcemaps.file { background: #f0f0f0; } tr.miss td.line, tr.miss td.hits { background: #e6c3c7; } tr.miss td { background: #f8d5d8; } td.source { padding-left: 15px; line-height: 15px; white-space: pre; font: 12px monaco, monospace; } td.source div { display: inline-block; } td.source div.true { background: #bae8bf; } td.source div.false { background: #e8e5ba; } td.source div.never { background: #f8d5d8; } #tests { padding: 60px; } #tests table { width: 80%; margin-top: 10px; border-collapse: collapse; border: 1px solid #cbcbcb; color: #363636; border-radius: 3px; } #tests thead { background: #F5F5F5; } #tests tr { border: 1px solid #ccc; } #tests td { padding-left: 8px; } #tests .success:nth-child(2n) { background: #F5F5F5; } #tests .failure { background: #FF9E9E; } #tests table .skipped { background: #AA82FF; } #tests .success { color: #949494; } #tests .failure .test-title { font-weight: bold; margin-top: 5px; } #tests .stack { margin-top: 4px; padding-left: 15px; margin-bottom: 12px; font: 12px monaco, monospace; white-space: pre; line-height: 15px; } .hide { position: absolute; left: -9999em; } .show { position: relative; } #filters { width: 75%; margin-top: 25px; } #filters label { margin-right: 10px; } </style> </head> <body> <div id="tests"> <h1>Test Report</h1> <div class="stats high"> <div class="failures">0</div> <div class="skipped">0</div> <div class="test-count">36</div> <div class="duration">680</div> </div> <div id="filters"> <input type="checkbox" checked="" onchange="filter(this)" value="success" id="show-success"><label for="show-success">Show Success</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="failure" id="show-failure"><label for="show-failure">Show Failure</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="matching_objects" id="show-matching_objects"><label for="show-matching_objects">matching objects</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="callback-friendly_JSON.parse" id="show-callback-friendly_JSON.parse"><label for="show-callback-friendly_JSON.parse">callback-friendly JSON.parse</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="can_freeze" id="show-can_freeze"><label for="show-can_freeze">can freeze</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="a_large_test,_&gt;1024_objects" id="show-a_large_test,_&gt;1024_objects"><label for="show-a_large_test,_&gt;1024_objects">a large test, &gt;1024 objects</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="an_exact_multiple_test,_1024_objects" id="show-an_exact_multiple_test,_1024_objects"><label for="show-an_exact_multiple_test,_1024_objects">an exact multiple test, 1024 objects</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="zipped_pft_file" id="show-zipped_pft_file"><label for="show-zipped_pft_file">zipped pft file</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="create_objects" id="show-create_objects"><label for="show-create_objects">create objects</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="can_add_and_find_objects" id="show-can_add_and_find_objects"><label for="show-can_add_and_find_objects">can add and find objects</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="invalid_file" id="show-invalid_file"><label for="show-invalid_file">invalid file</label></input> <input type="checkbox" checked="" onchange="filter(this)" value="thaw_errors" id="show-thaw_errors"><label for="show-thaw_errors">thaw errors</label></input> </div> <table> <thead> <tr> <th>ID</th> <th>Title</th> <th>Duration (ms)</th> </tr> </thead> <tbody> <tr class="show matching_objects success"> <td class="test-id">1</td> <td class="test-title">matching objects makes a matcher </td> <td class="test-duration">10</td> </tr> <tr class="show callback-friendly_JSON.parse success"> <td class="test-id">2</td> <td class="test-title">callback-friendly JSON.parse doesn&#x27;t throw an exception </td> <td class="test-duration">1</td> </tr> <tr class="show can_freeze success"> <td class="test-id">3</td> <td class="test-title">can freeze can freeze an object to a file </td> <td class="test-duration">56</td> </tr> <tr class="show can_freeze success"> <td class="test-id">4</td> <td class="test-title">can freeze can freeze an object to a file </td> <td class="test-duration">7</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">5</td> <td class="test-title">a large test, &gt;1024 objects can find first object in first bag </td> <td class="test-duration">3</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">6</td> <td class="test-title">a large test, &gt;1024 objects can find an object twice </td> <td class="test-duration">4</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">7</td> <td class="test-title">a large test, &gt;1024 objects errors on missing object </td> <td class="test-duration">3</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">8</td> <td class="test-title">a large test, &gt;1024 objects can find last object in first bag </td> <td class="test-duration">3</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">9</td> <td class="test-title">a large test, &gt;1024 objects can find first object in second bag </td> <td class="test-duration">3</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">10</td> <td class="test-title">a large test, &gt;1024 objects can find first object in second bag </td> <td class="test-duration">4</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">11</td> <td class="test-title">a large test, &gt;1024 objects can find first object in last bag </td> <td class="test-duration">3</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">12</td> <td class="test-title">a large test, &gt;1024 objects can search for indexed term </td> <td class="test-duration">6</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">13</td> <td class="test-title">a large test, &gt;1024 objects can search for missing term </td> <td class="test-duration">37</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">14</td> <td class="test-title">a large test, &gt;1024 objects can find last object in last bag </td> <td class="test-duration">2</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">15</td> <td class="test-title">a large test, &gt;1024 objects can find range across bags </td> <td class="test-duration">6</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">16</td> <td class="test-title">a large test, &gt;1024 objects can find range with invalid endpoints (across bags) </td> <td class="test-duration">4</td> </tr> <tr class="show a_large_test,_&gt;1024_objects success"> <td class="test-id">17</td> <td class="test-title">a large test, &gt;1024 objects can find range with invalid endpoints (outside total range) </td> <td class="test-duration">311</td> </tr> <tr class="show an_exact_multiple_test,_1024_objects success"> <td class="test-id">18</td> <td class="test-title">an exact multiple test, 1024 objects can find first object in only bag </td> <td class="test-duration">2</td> </tr> <tr class="show an_exact_multiple_test,_1024_objects success"> <td class="test-id">19</td> <td class="test-title">an exact multiple test, 1024 objects can find last object in only bag </td> <td class="test-duration">3</td> </tr> <tr class="show an_exact_multiple_test,_1024_objects success"> <td class="test-id">20</td> <td class="test-title">an exact multiple test, 1024 objects can search bag </td> <td class="test-duration">2</td> </tr> <tr class="show an_exact_multiple_test,_1024_objects success"> <td class="test-id">21</td> <td class="test-title">an exact multiple test, 1024 objects can search for bad term </td> <td class="test-duration">1</td> </tr> <tr class="show an_exact_multiple_test,_1024_objects success"> <td class="test-id">22</td> <td class="test-title">an exact multiple test, 1024 objects can find mid range </td> <td class="test-duration">17</td> </tr> <tr class="show zipped_pft_file success"> <td class="test-id">23</td> <td class="test-title">zipped pft file can find small range </td> <td class="test-duration">5</td> </tr> <tr class="show create_objects success"> <td class="test-id">24</td> <td class="test-title">create objects creates an object with new </td> <td class="test-duration">1</td> </tr> <tr class="show create_objects success"> <td class="test-id">25</td> <td class="test-title">create objects creates an object without new </td> <td class="test-duration">0</td> </tr> <tr class="show can_add_and_find_objects success"> <td class="test-id">26</td> <td class="test-title">can add and find objects stores an object once added </td> <td class="test-duration">1</td> </tr> <tr class="show can_add_and_find_objects success"> <td class="test-id">27</td> <td class="test-title">can add and find objects handles missing fts </td> <td class="test-duration">0</td> </tr> <tr class="show can_add_and_find_objects success"> <td class="test-id">28</td> <td class="test-title">can add and find objects handles present fts </td> <td class="test-duration">0</td> </tr> <tr class="show can_add_and_find_objects success"> <td class="test-id">29</td> <td class="test-title">can add and find objects handles missing fts &amp; desc </td> <td class="test-duration">1</td> </tr> <tr class="show can_add_and_find_objects success"> <td class="test-id">30</td> <td class="test-title">can add and find objects throws when adding a bad object </td> <td class="test-duration">1</td> </tr> <tr class="show can_add_and_find_objects success"> <td class="test-id">31</td> <td class="test-title">can add and find objects errors when obj not found </td> <td class="test-duration">0</td> </tr> <tr class="show zipped_pft_file success"> <td class="test-id">32</td> <td class="test-title">zipped pft file can be thawed </td> <td class="test-duration">7</td> </tr> <tr class="show invalid_file success"> <td class="test-id">33</td> <td class="test-title">invalid file reports error on thaw </td> <td class="test-duration">1</td> </tr> <tr class="show thaw_errors success"> <td class="test-id">34</td> <td class="test-title">thaw errors errors on invalid version </td> <td class="test-duration">0</td> </tr> <tr class="show thaw_errors success"> <td class="test-id">35</td> <td class="test-title">thaw errors errors on nonexistent file </td> <td class="test-duration">1</td> </tr> <tr class="show thaw_errors success"> <td class="test-id">36</td> <td class="test-title">thaw errors errors on invalid format </td> <td class="test-duration">0</td> </tr> </tbody> </table> </div> <div id="coverage"> <h1>Code Coverage Report</h1> <div id="menu"> <li><a href="#tests">Test Report</a></li> <li><a href="#coverage">Coverage Report</a></li> <li> <span class="cov high">100</span> <a href="#index.js"><span class="basename">index.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/add.js"><span class="dirname">lib/</span><span class="basename">add.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/clean.js"><span class="dirname">lib/</span><span class="basename">clean.js</span></a> </li> <li> <span class="cov high">92.31</span> <a href="#lib/findIndex.js"><span class="dirname">lib/</span><span class="basename">findIndex.js</span></a> </li> <li> <span class="cov high">95.56</span> <a href="#lib/findRange.js"><span class="dirname">lib/</span><span class="basename">findRange.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/freeze.js"><span class="dirname">lib/</span><span class="basename">freeze.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/fts.js"><span class="dirname">lib/</span><span class="basename">fts.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/get.js"><span class="dirname">lib/</span><span class="basename">get.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/indexConfig.js"><span class="dirname">lib/</span><span class="basename">indexConfig.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/loadIndexes.js"><span class="dirname">lib/</span><span class="basename">loadIndexes.js</span></a> </li> <li> <span class="cov high">98.46</span> <a href="#lib/makeIndex.js"><span class="dirname">lib/</span><span class="basename">makeIndex.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/pure-fts.js"><span class="dirname">lib/</span><span class="basename">pure-fts.js</span></a> </li> <li> <span class="cov high">100</span> <a href="#lib/search.js"><span class="dirname">lib/</span><span class="basename">search.js</span></a> </li> <li> <span class="cov high">98.23</span> <a href="#lib/thaw.js"><span class="dirname">lib/</span><span class="basename">thaw.js</span></a> </li> </div> <div class="stats high"> <div class="percentage">98.63%</div> <div class="sloc">512</div> <div class="hits">505</div> <div class="misses">7</div> </div> <div id="files"> <div class="file"> <h2 id="index.js">index.js</h2> <div class="stats high"> <div class="percentage">100%</div> <div class="sloc">2</div> <div class="hits">2</div> <div class="misses">0</div> </div> <table> <thead> <tr> <th>Line</th> <th>Hits</th> <th>Source</th> </tr> </thead> <tbody> <tr class="hit"> <td class="line">1</td> <td class="hits">1</td> <td class="source">&#x27;use strict&#x27;;</td> </tr> <tr class="hit"> <td class="line">2</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">3</td> <td class="hits">1</td> <td class="source">module.exports = require(&#x27;./lib/pure-fts.js&#x27;);</td> </tr> <tr class="hit"> <td class="line">4</td> <td class="hits"></td> <td class="source"></td> </tr> </tbody> </table> </div> <div class="file"> <h2 id="lib/add.js">lib/add.js</h2> <div class="stats high"> <div class="percentage">100%</div> <div class="sloc">46</div> <div class="hits">46</div> <div class="misses">0</div> </div> <table> <thead> <tr> <th>Line</th> <th>Hits</th> <th>Source</th> </tr> </thead> <tbody> <tr class="hit"> <td class="line">1</td> <td class="hits">1</td> <td class="source">&#x27;use strict&#x27;;</td> </tr> <tr class="hit"> <td class="line">2</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">3</td> <td class="hits">1</td> <td class="source">var stopWords = {</td> </tr> <tr class="hit"> <td class="line">4</td> <td class="hits"></td> <td class="source"> &#x27;constructor&#x27;: true,</td> </tr> <tr class="hit"> <td class="line">5</td> <td class="hits"></td> <td class="source"> &#x27;toString&#x27;: true,</td> </tr> <tr class="hit"> <td class="line">6</td> <td class="hits"></td> <td class="source"> &#x27;hasOwnProperty&#x27;: true,</td> </tr> <tr class="hit"> <td class="line">7</td> <td class="hits"></td> <td class="source"> &#x27;__proto__&#x27;: true,</td> </tr> <tr class="hit"> <td class="line">8</td> <td class="hits"></td> <td class="source"> &#x27;valueOf&#x27;: true,</td> </tr> <tr class="hit"> <td class="line">9</td> <td class="hits"></td> <td class="source"> &#x27;npm&#x27;: true</td> </tr> <tr class="hit"> <td class="line">10</td> <td class="hits"></td> <td class="source">};</td> </tr> <tr class="hit"> <td class="line">11</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">12</td> <td class="hits">1</td> <td class="source">function is_stopword(word) {</td> </tr> <tr class="hit"> <td class="line">13</td> <td class="hits">30147</td> <td class="source"> if (word.length &lt;= 3) {</td> </tr> <tr class="hit"> <td class="line">14</td> <td class="hits">12061</td> <td class="source"> return true;</td> </tr> <tr class="hit"> <td class="line">15</td> <td class="hits"></td> <td class="source"> }</td> </tr> <tr class="hit"> <td class="line">16</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">17</td> <td class="hits">18086</td> <td class="source"> return stopWords[word];</td> </tr> <tr class="hit"> <td class="line">18</td> <td class="hits"></td> <td class="source">}</td> </tr> <tr class="hit"> <td class="line">19</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">20</td> <td class="hits">1</td> <td class="source">function is_not_stopword(word) {</td> </tr> <tr class="hit"> <td class="line">21</td> <td class="hits">18086</td> <td class="source"> return !is_stopword(word);</td> </tr> <tr class="hit"> <td class="line">22</td> <td class="hits"></td> <td class="source">}</td> </tr> <tr class="hit"> <td class="line">23</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">24</td> <td class="hits">1</td> <td class="source">function addfts(purefts, term, name) {</td> </tr> <tr class="hit"> <td class="line">25</td> <td class="hits">12061</td> <td class="source"> if (is_stopword(term)) {</td> </tr> <tr class="hit"> <td class="line">26</td> <td class="hits">6</td> <td class="source"> return;</td> </tr> <tr class="hit"> <td class="line">27</td> <td class="hits"></td> <td class="source"> }</td> </tr> <tr class="hit"> <td class="line">28</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">29</td> <td class="hits">12055</td> <td class="source"> purefts.fts[term] = purefts.fts[term] || {</td> </tr> <tr class="hit"> <td class="line">30</td> <td class="hits"></td> <td class="source"> name: term,</td> </tr> <tr class="hit"> <td class="line">31</td> <td class="hits"></td> <td class="source"> hits: []</td> </tr> <tr class="hit"> <td class="line">32</td> <td class="hits"></td> <td class="source"> };</td> </tr> <tr class="hit"> <td class="line">33</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">34</td> <td class="hits">12055</td> <td class="source"> purefts.fts[term].hits.push(name);</td> </tr> <tr class="hit"> <td class="line">35</td> <td class="hits"></td> <td class="source">}</td> </tr> <tr class="hit"> <td class="line">36</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">37</td> <td class="hits">1</td> <td class="source">function add(obj) {</td> </tr> <tr class="hit"> <td class="line">38</td> <td class="hits">6032</td> <td class="source"> if (!obj || !obj.name) {</td> </tr> <tr class="hit"> <td class="line">39</td> <td class="hits">2</td> <td class="source"> throw new Error(&quot;Cannot add object %j: no &#x60;name&#x60; member&quot;, obj);</td> </tr> <tr class="hit"> <td class="line">40</td> <td class="hits"></td> <td class="source"> }</td> </tr> <tr class="hit"> <td class="line">41</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">42</td> <td class="hits">6030</td> <td class="source"> var purefts = this;</td> </tr> <tr class="hit"> <td class="line">43</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">44</td> <td class="hits">6030</td> <td class="source"> purefts.keys.push(obj.name);</td> </tr> <tr class="hit"> <td class="line">45</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">46</td> <td class="hits"></td> <td class="source"> // add fts entries</td> </tr> <tr class="hit"> <td class="line">47</td> <td class="hits">6030</td> <td class="source"> if (!obj.fts) {</td> </tr> <tr class="hit"> <td class="line">48</td> <td class="hits">3</td> <td class="source"> obj.fts = obj.description || &quot;&quot;;</td> </tr> <tr class="hit"> <td class="line">49</td> <td class="hits"></td> <td class="source"> }</td> </tr> <tr class="hit"> <td class="line">50</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">51</td> <td class="hits">6030</td> <td class="source"> obj.fts.split(&#x27; &#x27;).filter(is_not_stopword)</td> </tr> <tr class="hit"> <td class="line">52</td> <td class="hits"></td> <td class="source"> .forEach(function (term) {</td> </tr> <tr class="hit"> <td class="line">53</td> <td class="hits">6031</td> <td class="source"> addfts(purefts, term, obj.name);</td> </tr> <tr class="hit"> <td class="line">54</td> <td class="hits"></td> <td class="source"> });</td> </tr> <tr class="hit"> <td class="line">55</td> <td class="hits">6030</td> <td class="source"> addfts(purefts, obj.name, obj.name);</td> </tr> <tr class="hit"> <td class="line">56</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">57</td> <td class="hits">6030</td> <td class="source"> purefts.values[obj.name] = obj;</td> </tr> <tr class="hit"> <td class="line">58</td> <td class="hits"></td> <td class="source">}</td> </tr> <tr class="hit"> <td class="line">59</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">60</td> <td class="hits">1</td> <td class="source">module.exports = add;</td> </tr> <tr class="hit"> <td class="line">61</td> <td class="hits"></td> <td class="source"></td> </tr> </tbody> </table> </div> <div class="file"> <h2 id="lib/clean.js">lib/clean.js</h2> <div class="stats high"> <div class="percentage">100%</div> <div class="sloc">7</div> <div class="hits">7</div> <div class="misses">0</div> </div> <table> <thead> <tr> <th>Line</th> <th>Hits</th> <th>Source</th> </tr> </thead> <tbody> <tr class="hit"> <td class="line">1</td> <td class="hits">1</td> <td class="source">&#x27;use strict&#x27;;</td> </tr> <tr class="hit"> <td class="line">2</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">3</td> <td class="hits">1</td> <td class="source">function clean() {</td> </tr> <tr class="hit"> <td class="line">4</td> <td class="hits">4</td> <td class="source"> var purefts = this;</td> </tr> <tr class="hit"> <td class="line">5</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">6</td> <td class="hits">4</td> <td class="source"> purefts.keys = purefts.keys.sort();</td> </tr> <tr class="hit"> <td class="line">7</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">8</td> <td class="hits">4</td> <td class="source"> return;</td> </tr> <tr class="hit"> <td class="line">9</td> <td class="hits"></td> <td class="source">}</td> </tr> <tr class="hit"> <td class="line">10</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">11</td> <td class="hits">1</td> <td class="source">module.exports = clean;</td> </tr> <tr class="hit"> <td class="line">12</td> <td class="hits"></td> <td class="source"></td> </tr> </tbody> </table> </div> <div class="file"> <h2 id="lib/findIndex.js">lib/findIndex.js</h2> <div class="stats high"> <div class="percentage">92.31%</div> <div class="sloc">26</div> <div class="hits">24</div> <div class="misses">2</div> </div> <table> <thead> <tr> <th>Line</th> <th>Hits</th> <th>Source</th> </tr> </thead> <tbody> <tr class="hit"> <td class="line">1</td> <td class="hits">1</td> <td class="source">&#x27;use strict&#x27;;</td> </tr> <tr class="hit"> <td class="line">2</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">3</td> <td class="hits">1</td> <td class="source">var bsearch = require(&#x27;binary-search&#x27;);</td> </tr> <tr class="hit"> <td class="line">4</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">5</td> <td class="hits">1</td> <td class="source">function findIndex(config, name, cb) {</td> </tr> <tr class="hit"> <td class="line">6</td> <td class="hits">98</td> <td class="source"> var bag_idx,</td> </tr> <tr class="hit"> <td class="line">7</td> <td class="hits"></td> <td class="source"> bag,</td> </tr> <tr class="hit"> <td class="line">8</td> <td class="hits"></td> <td class="source"> idx;</td> </tr> <tr class="hit"> <td class="line">9</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit"> <td class="line">10</td> <td class="hits">98</td> <td class="source"> bag_idx = bsearch(config.index, name, function (a, b) {</td> </tr> <tr class="hit"> <td class="line">11</td> <td class="hits">513</td> <td class="source"> return a.last &lt; b ? -1 : (a.first &gt; b ? 1 : 0);</td> </tr> <tr class="hit"> <td class="line">12</td> <td class="hits"></td> <td class="source"> });</td> </tr> <tr class="hit"> <td class="line">13</td> <td class="hits"></td> <td class="source"></td> </tr> <tr class="hit">