Skip to content

Commit

Permalink
update dependence
Browse files Browse the repository at this point in the history
add package-lock.json
use rc file to config mocha instead of deprecated mocha.opts
  • Loading branch information
Donaldcwl committed May 31, 2019
1 parent aa31eff commit f00a3eb
Show file tree
Hide file tree
Showing 23 changed files with 6,307 additions and 2,500 deletions.
4 changes: 4 additions & 0 deletions .mocharc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
recursive: true,
require: ['@babel/register', '@babel/polyfill', './test/setup_jsdom.js']
}
2 changes: 1 addition & 1 deletion coverage/badge.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 5 additions & 4 deletions coverage/base.css
Original file line number Diff line number Diff line change
Expand Up @@ -172,16 +172,17 @@ table.coverage td span.cline-any {
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }

.medium .chart { border:1px solid #666; }
.medium .cover-fill { background: #666; }
/* dark yellow (gold) */
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
.medium .chart { border:1px solid #f9cd0b; }
/* light yellow */
.medium { background: #fff4c2; }

.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }

span.cline-neutral { background: #eaeaea; }
.medium { background: #eaeaea; }

.coverage-summary td.empty {
opacity: .5;
Expand Down
6 changes: 3 additions & 3 deletions coverage/coverage-final.json

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions coverage/coverage-summary.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{"total": {"lines":{"total":164,"covered":42,"skipped":0,"pct":25.61},"statements":{"total":178,"covered":43,"skipped":0,"pct":24.16},"functions":{"total":21,"covered":7,"skipped":0,"pct":33.33},"branches":{"total":87,"covered":15,"skipped":0,"pct":17.24}}
,"/Users/arivera/Documents/Dev/browser-image-compression/lib/image-compression.js": {"lines":{"total":31,"covered":0,"skipped":0,"pct":0},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":31,"covered":0,"skipped":0,"pct":0},"branches":{"total":18,"covered":0,"skipped":0,"pct":0}}
,"/Users/arivera/Documents/Dev/browser-image-compression/lib/index.js": {"lines":{"total":27,"covered":15,"skipped":0,"pct":55.56},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":27,"covered":15,"skipped":0,"pct":55.56},"branches":{"total":22,"covered":8,"skipped":0,"pct":36.36}}
,"/Users/arivera/Documents/Dev/browser-image-compression/lib/utils.js": {"lines":{"total":106,"covered":27,"skipped":0,"pct":25.47},"functions":{"total":19,"covered":6,"skipped":0,"pct":31.58},"statements":{"total":120,"covered":28,"skipped":0,"pct":23.33},"branches":{"total":47,"covered":7,"skipped":0,"pct":14.89}}
{"total": {"lines":{"total":164,"covered":126,"skipped":0,"pct":76.83},"statements":{"total":178,"covered":128,"skipped":0,"pct":71.91},"functions":{"total":21,"covered":18,"skipped":0,"pct":85.71},"branches":{"total":87,"covered":49,"skipped":0,"pct":56.32}}
,"/Users/donald/Project/browser-image-compression/lib/image-compression.js": {"lines":{"total":31,"covered":29,"skipped":0,"pct":93.55},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":31,"covered":29,"skipped":0,"pct":93.55},"branches":{"total":18,"covered":15,"skipped":0,"pct":83.33}}
,"/Users/donald/Project/browser-image-compression/lib/index.js": {"lines":{"total":27,"covered":24,"skipped":0,"pct":88.89},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":27,"covered":24,"skipped":0,"pct":88.89},"branches":{"total":22,"covered":15,"skipped":0,"pct":68.18}}
,"/Users/donald/Project/browser-image-compression/lib/utils.js": {"lines":{"total":106,"covered":73,"skipped":0,"pct":68.87},"functions":{"total":19,"covered":16,"skipped":0,"pct":84.21},"statements":{"total":120,"covered":75,"skipped":0,"pct":62.5},"branches":{"total":47,"covered":19,"skipped":0,"pct":40.43}}
}
138 changes: 69 additions & 69 deletions coverage/image-compression.js.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,31 +20,31 @@ <h1>
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="strong">93.55% </span>
<span class="quiet">Statements</span>
<span class='fraction'>0/31</span>
<span class='fraction'>29/31</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="strong">83.33% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/18</span>
<span class='fraction'>15/18</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/1</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="strong">93.55% </span>
<span class="quiet">Lines</span>
<span class='fraction'>0/31</span>
<span class='fraction'>29/31</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line low'></div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
Expand Down Expand Up @@ -130,62 +130,62 @@ <h1>
<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-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">6x</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-yes">6x</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-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</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-yes">6x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</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-yes">6x</span>
<span class="cline-any cline-yes">6x</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-yes">6x</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-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-no">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">5x</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-yes">5x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">5x</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-yes">3x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</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-yes">2x</span>
<span class="cline-any cline-yes">2x</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-yes">2x</span>
<span class="cline-any cline-yes">2x</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-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { canvasToFile, drawFileInCanvas, followExifOrientation, getExifOrientation, handleMaxWidthOrHeight } from './utils'
&nbsp;
/**
Expand All @@ -199,70 +199,70 @@ <h1>
* @param {number} [options.exifOrientation=] - default to be the exif orientation from the image file
* @returns {Promise&lt;File | Blob&gt;}
*/
export default async function <span class="fstat-no" title="function not covered" >compress </span>(file, options) {
let remainingTrials = <span class="cstat-no" title="statement not covered" >options.maxIteration || 10</span>
export default async function compress (file, options) {
let remainingTrials = options.maxIteration || 10
&nbsp;
const maxSizeByte = <span class="cstat-no" title="statement not covered" >options.maxSizeMB * 1024 * 1024</span>
const maxSizeByte = options.maxSizeMB * 1024 * 1024
&nbsp;
// no need to compress or resize
<span class="cstat-no" title="statement not covered" > if (file.size &lt;= maxSizeByte &amp;&amp; typeof options.maxWidthOrHeight === 'undefined') {</span>
<span class="missing-if-branch" title="if path not taken" >I</span>if (file.size &lt;= maxSizeByte &amp;&amp; typeof options.maxWidthOrHeight === 'undefined') {
<span class="cstat-no" title="statement not covered" > return file</span>
}
&nbsp;
let img, canvas, isResized
&nbsp;
// drawFileInCanvas
let temp = <span class="cstat-no" title="statement not covered" >await drawFileInCanvas(file)</span>
<span class="cstat-no" title="statement not covered" > img = temp[0]</span>
<span class="cstat-no" title="statement not covered" > canvas = temp[1]</span>
let temp = await drawFileInCanvas(file)
img = temp[0]
canvas = temp[1]
&nbsp;
// handleMaxWidthOrHeight
let temp2 = <span class="cstat-no" title="statement not covered" >handleMaxWidthOrHeight(img, canvas, options)</span>
<span class="cstat-no" title="statement not covered" > canvas = temp2[0]</span>
<span class="cstat-no" title="statement not covered" > isResized = temp2[1]</span>
let temp2 = handleMaxWidthOrHeight(img, canvas, options)
canvas = temp2[0]
isResized = temp2[1]
&nbsp;
// exifOrientation
<span class="cstat-no" title="statement not covered" > options.exifOrientation = options.exifOrientation || await getExifOrientation(file)</span>
<span class="cstat-no" title="statement not covered" > canvas = followExifOrientation(img, canvas, options.exifOrientation)</span>
options.exifOrientation = options.exifOrientation || <span class="branch-1 cbranch-no" title="branch not covered" >await getExifOrientation(file)</span>
canvas = followExifOrientation(img, canvas, options.exifOrientation)
&nbsp;
// no need to compress or resize
<span class="cstat-no" title="statement not covered" > if (file.size &lt;= maxSizeByte &amp;&amp; !isResized) {</span>
<span class="missing-if-branch" title="if path not taken" >I</span>if (file.size &lt;= maxSizeByte &amp;&amp; !isResized) {
<span class="cstat-no" title="statement not covered" > return file</span>
}
&nbsp;
let quality = <span class="cstat-no" title="statement not covered" >1</span>
let compressedFile = <span class="cstat-no" title="statement not covered" >await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)</span>
<span class="cstat-no" title="statement not covered" > if (file.type === 'image/png') {</span>
<span class="cstat-no" title="statement not covered" > while (remainingTrials-- &amp;&amp; compressedFile.size &gt; maxSizeByte) {</span>
<span class="cstat-no" title="statement not covered" > canvas.width *= 0.9</span>
<span class="cstat-no" title="statement not covered" > canvas.height *= 0.9</span>
let quality = 1
let compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
if (file.type === 'image/png') {
while (remainingTrials-- &amp;&amp; compressedFile.size &gt; maxSizeByte) {
canvas.width *= 0.9
canvas.height *= 0.9
&nbsp;
const ctx = <span class="cstat-no" title="statement not covered" >canvas.getContext('2d')</span>
<span class="cstat-no" title="statement not covered" > ctx.drawImage(img, 0, 0, canvas.width, canvas.height)</span>
const ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
&nbsp;
<span class="cstat-no" title="statement not covered" > compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)</span>
compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
}
} else { // if (file.type === 'image/jpeg') {
<span class="cstat-no" title="statement not covered" > while (remainingTrials-- &amp;&amp; compressedFile.size &gt; maxSizeByte) {</span>
<span class="cstat-no" title="statement not covered" > canvas.width *= 0.9</span>
<span class="cstat-no" title="statement not covered" > canvas.height *= 0.9</span>
while (remainingTrials-- &amp;&amp; compressedFile.size &gt; maxSizeByte) {
canvas.width *= 0.9
canvas.height *= 0.9
&nbsp;
const ctx = <span class="cstat-no" title="statement not covered" >canvas.getContext('2d')</span>
<span class="cstat-no" title="statement not covered" > ctx.drawImage(img, 0, 0, canvas.width, canvas.height)</span>
const ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
&nbsp;
<span class="cstat-no" title="statement not covered" > quality *= 0.9</span>
<span class="cstat-no" title="statement not covered" > compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)</span>
quality *= 0.9
compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
}
}
&nbsp;
<span class="cstat-no" title="statement not covered" > return compressedFile</span>
return compressedFile
}</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="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu May 23 2019 12:17:12 GMT-0500 (CDT)
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri May 31 2019 16:08:29 GMT+0800 (Hong Kong Standard Time)
</div>
</div>
<script src="prettify.js"></script>
Expand Down
Loading

0 comments on commit f00a3eb

Please sign in to comment.