UNPKG

dgeni-alive

Version:
405 lines (404 loc) 14.1 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for packages/search/processors/search-index.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../../prettify.css" /> <link rel="stylesheet" href="../../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../../index.html">all files</a> / <a href="index.html">packages/search/processors/</a> search-index.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">28.21% </span> <span class="quiet">Statements</span> <span class='fraction'>11/39</span> </div> <div class='fl pad1y space-right2'> <span class="strong">0% </span> <span class="quiet">Branches</span> <span class='fraction'>0/26</span> </div> <div class='fl pad1y space-right2'> <span class="strong">11.11% </span> <span class="quiet">Functions</span> <span class='fraction'>1/9</span> </div> <div class='fl pad1y space-right2'> <span class="strong">28.21% </span> <span class="quiet">Lines</span> <span class='fraction'>11/39</span> </div> </div> </div> <div class='status-line low'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict'; &nbsp; var _ = require('lodash'); var stemmer = require('stemmer'); var tokenizer = require('keyword-extractor'); var decode = require('ent/decode'); var bloom = require('bloomfilter'); var ByteBuffer = require("bytebuffer"); &nbsp; module.exports = function generateSearchIndexProcessorFactory(aliasMap, log, renderMarkdown) { /** * Removes code blocks, tags and other useless content from string */ <span class="fstat-no" title="function not covered" > function cleanText(md) {</span> <span class="cstat-no" title="statement not covered" > var res = '';</span> <span class="cstat-no" title="statement not covered" > if (md) {</span> <span class="cstat-no" title="statement not covered" > res = decode(md.replace(/[\r\n]+/g, ' ').replace(/&lt;code.+?code&gt;/mgi, ' ').replace(/&lt;.+?&gt;/gm, ' '));</span> } <span class="cstat-no" title="statement not covered" > return res;</span> } &nbsp; var debug = log.debug; &nbsp; var errorRate = 0.001; &nbsp; return { $runAfter: ['inlineTagProcessor'], $runBefore: ['writing-files'], errorRate: <span class="fstat-no" title="function not covered" >function (v) {</span> <span class="cstat-no" title="statement not covered" > if (v) {</span> <span class="cstat-no" title="statement not covered" > errorRate = v;</span> <span class="cstat-no" title="statement not covered" > return this;</span> } <span class="cstat-no" title="statement not covered" > return errorRate;</span> }, $process: <span class="fstat-no" title="function not covered" >function generateSearchIndexProcessor (docs) {</span> &nbsp; <span class="cstat-no" title="statement not covered" > var tokens = [];</span> <span class="cstat-no" title="statement not covered" > var buffer = new ByteBuffer(0);</span> &nbsp; <span class="cstat-no" title="statement not covered" > var index = docs.filter(<span class="fstat-no" title="function not covered" >function (v) {</span></span> // build search index for rendered docs only // do not dig down to the document sources // and skip extra content <span class="cstat-no" title="statement not covered" > return ['componentGroup', 'config', 'nav-data', 'website'].indexOf(v.docType) &lt; 0 &amp;&amp;</span> !!v.renderedContent; }).map(<span class="fstat-no" title="function not covered" >function(v) {</span> // for each document extract only certain properties <span class="cstat-no" title="statement not covered" > var index = tokenizer.extract(</span> ['events', 'properties', 'methods', 'name', 'codeName', 'renderedContent', 'docType'].map(<span class="fstat-no" title="function not covered" >function(k) {</span> <span class="cstat-no" title="statement not covered" > if ('string' === typeof v[k]) {</span> // rendered content should be cleaned a bit <span class="cstat-no" title="statement not covered" > return 'renderedContent' === k ? cleanText(v[k]) : v[k];</span> } else <span class="cstat-no" title="statement not covered" >if (v[k]) {</span> <span class="cstat-no" title="statement not covered" > var m = v[k];</span> <span class="cstat-no" title="statement not covered" > return [m.codeName || '',</span> m.name || '', cleanText(m.renderedContent || ''), m.alias || '', m.eventTarget || '', m.eventType || '' ].join(' '); } else { <span class="cstat-no" title="statement not covered" > return '';</span> } }).join(' ').replace(/(\$(\w+))/g, '$1 $2'), { language: "english", remove_digits: true, return_changed_case: true, remove_duplicates: true }); &nbsp; <span class="cstat-no" title="statement not covered" > var filter = new bloom.BloomFilter(</span> Math.ceil(index.length * Math.abs(Math.log(errorRate)) / (Math.pow(Math.LN2, 2))), Math.ceil(Math.log2(1/errorRate))); &nbsp; <span class="cstat-no" title="statement not covered" > index.forEach(<span class="fstat-no" title="function not covered" >function(v) {</span></span> <span class="cstat-no" title="statement not covered" > filter.add(v);</span> }) &nbsp; <span class="cstat-no" title="statement not covered" > buffer.ensureCapacity(buffer.limit + filter.buckets.length*4);</span> &nbsp; // append filter // use lodash for node &lt;4.0 compat because buckets is a typed array // TODO: revert to array method by the end of node 0.12 LTS (https://github.com/nodejs/LTS#lts_schedule) <span class="cstat-no" title="statement not covered" > _.forEach(filter.buckets, <span class="fstat-no" title="function not covered" >function(v) {</span></span> <span class="cstat-no" title="statement not covered" > buffer.writeInt32(v);</span> }) &nbsp; // update index <span class="cstat-no" title="statement not covered" > tokens.push({</span> name: v.name, path: v.areaKey || v.path, type: v.docType, size: filter.buckets.length }); }); &nbsp; <span class="cstat-no" title="statement not covered" > docs.push({</span> docType: 'search-data-index', id: 'search-index', name: 'search.index', renderedContent: buffer.toBinary(0,buffer.offset) }); &nbsp; <span class="cstat-no" title="statement not covered" > docs.push({</span> docType: 'search-data', id: 'search-meta', renderedContent: JSON.stringify(tokens) }); } }; }; &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Aug 18 2016 17:08:09 GMT+0300 (MSK) </div> </div> <script src="../../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../../sorter.js"></script> </body> </html>