Socket
Socket
Sign inDemoInstall

adler-32

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

adler-32 - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

26

adler32.js

@@ -13,11 +13,11 @@ /* adler32.js (C) 2014 SheetJS -- http://sheetjs.com */

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
for(;M>0;--M) {
a += bstr.charCodeAt(i++);
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += bstr.charCodeAt(i);
b += a;
}
a %= 65521;
b %= 65521;
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return ((b%65521) << 16) | (a%65521);
}

@@ -28,11 +28,11 @@

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
for(;M>0;--M) {
a += buf[i++];
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += buf[i];
b += a;
}
a %= 65521;
b %= 65521;
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return ((b%65521) << 16) | (a%65521);
}

@@ -66,3 +66,3 @@

}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return (b << 16) | a;
}

@@ -69,0 +69,0 @@ ADLER32.bstr = adler32_bstr;

@@ -8,11 +8,11 @@ /* consult README.md for the magic number */

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
for(;M>0;--M) {
a += bstr.charCodeAt(i++);
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += bstr.charCodeAt(i);
b += a;
}
a %= 65521;
b %= 65521;
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return ((b%65521) << 16) | (a%65521);
}

@@ -23,11 +23,11 @@

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
for(;M>0;--M) {
a += buf[i++];
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += buf[i];
b += a;
}
a %= 65521;
b %= 65521;
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return ((b%65521) << 16) | (a%65521);
}

@@ -61,3 +61,3 @@

}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return (b << 16) | a;
}

@@ -13,11 +13,11 @@ /* adler32.js (C) 2014 SheetJS -- http://sheetjs.com */

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
for(;M>0;--M) {
a += bstr.charCodeAt(i++);
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += bstr.charCodeAt(i);
b += a;
}
a %= 65521;
b %= 65521;
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return ((b%65521) << 16) | (a%65521);
}

@@ -28,11 +28,11 @@

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
for(;M>0;--M) {
a += buf[i++];
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += buf[i];
b += a;
}
a %= 65521;
b %= 65521;
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return ((b%65521) << 16) | (a%65521);
}

@@ -66,3 +66,3 @@

}
return b > 32767 ? (((b - 65536) * 65536) | a) : ((b * 65536) | a);
return (b << 16) | a;
}

@@ -69,0 +69,0 @@ ADLER32.bstr = adler32_bstr;

{
"name": "adler-32",
"version": "0.1.0",
"version": "0.2.0",
"author": "sheetjs",

@@ -5,0 +5,0 @@ "description": "Pure-JS ADLER-32",

@@ -1,3 +0,1 @@

var table = require('../').table;
function sheetjs1(bstr) {

@@ -17,3 +15,17 @@ var a = 1, b = 0, L = bstr.length;

for(var i = 0; i < L;) {
M = Math.min(L-i, 3854);
M = Math.min(L-i, 3850)+i;
for(;i<M;i++) {
a += bstr.charCodeAt(i);
b += a;
}
a = (15*(a>>>16)+(a&65535))
b = (15*(b>>>16)+(b&65535))
}
return ((b%65521) << 16) | (a%65521);
}
function sheetjs3(bstr) {
var a = 1, b = 0, L = bstr.length, M;
for(var i = 0; i < L;) {
M = Math.min(L-i, 5552);
for(;M>0;--M) {

@@ -29,12 +41,26 @@ a += bstr.charCodeAt(i++);

var foobar = "foobarbazqux";
for(var i = 0; i != 11; ++i) foobar += " " + foobar;
var foobar = [255,255,255,255,255,255].map(function(x) { return String.fromCharCode(x); }).join("");
foobar += foobar;
foobar += foobar;
foobar += foobar;
foobar += foobar;
foobar += foobar;
foobar += foobar;
foobar.charCodeAt(0);
var m = 2048;
var assert = require('assert');
assert.equal(sheetjs1(foobar), sheetjs2(foobar));
var BM = require('./bm');
var suite = new BM('binary string');
for(var i = 0; i != 14; ++i) {
foobar += foobar;
foobar.charCodeAt(0);
assert.equal(sheetjs1(foobar), sheetjs3(foobar));
assert.equal(sheetjs1(foobar), sheetjs2(foobar));
//for(var j = 0; j != 200; ++j) assert.equal(sheetjs2(foobar), sheetjs3(foobar));
var suite = new BM('binary string (' + foobar.length + ')');
suite.add('sheetjs 1', function() { for(var j = 0; j != 1000; ++j) sheetjs1(foobar); });
suite.add('sheetjs 2', function() { for(var j = 0; j != 1000; ++j) sheetjs2(foobar); });
suite.run();
if(i<3) suite.add('sheetjs 1', function() { for(var j = 0; j != m; ++j) sheetjs1(foobar); });
suite.add('sheetjs 2', function() { for(var j = 0; j != m; ++j) sheetjs2(foobar); });
suite.add('sheetjs 3', function() { for(var j = 0; j != m; ++j) sheetjs3(foobar); });
suite.run();
m>>>=1; if(m < 10) m = 10;
}

@@ -54,2 +54,13 @@ # adler32

Bit twiddling is much faster than taking the mod on Safari and older Firefoxes.
Instead of taking the literal mod 65521, it is faster to keep it in the integers
by bit-shifting: `65536 ~ 15 mod 65521` so for nonnegative integer `a`:
```
a = (a >>> 16) * 65536 + (a & 65535) [equality]
a ~ (a >>> 16) * 15 + (a & 65535) mod 65521
```
The mod is taken at the very end, since the intermediate result may exceed 65521
## Magic Number

@@ -56,0 +67,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc