version bump 1.2.0: infrastructure
This commit is contained in:
parent
06fac2b063
commit
d750710810
12
.eslintrc
12
.eslintrc
@ -5,14 +5,14 @@
|
||||
"ecmaVersion": 3,
|
||||
},
|
||||
"plugins": [ "html", "json" ],
|
||||
"!extends": "eslint:recommended",
|
||||
"extends": "eslint:recommended",
|
||||
"rules": {
|
||||
"no-console": 0,
|
||||
"no-bitwise": 0,
|
||||
"curly": 0,
|
||||
"comma-style": [ 2, "last" ],
|
||||
"comma-dangle": [ 2, "never" ],
|
||||
"curly": 0,
|
||||
"no-bitwise": 0,
|
||||
"no-console": 0,
|
||||
"no-trailing-spaces": 2,
|
||||
"semi": [ 2, "always" ],
|
||||
"comma-dangle": [ 2, "never" ]
|
||||
"semi": [ 2, "always" ]
|
||||
}
|
||||
}
|
||||
|
11
.spelling
Normal file
11
.spelling
Normal file
@ -0,0 +1,11 @@
|
||||
# adler32.js (C) 2014-present SheetJS -- http://sheetjs.com
|
||||
SheetJS
|
||||
31-bit
|
||||
32-bit
|
||||
ADLER-32
|
||||
UCS-2
|
||||
UTF-8
|
||||
adler32
|
||||
checksum
|
||||
nodejs
|
||||
npm
|
@ -1,5 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "9"
|
||||
- "8"
|
||||
- "7"
|
||||
- "6"
|
||||
|
14
Makefile
14
Makefile
@ -57,6 +57,9 @@ clean-baseline: ## Remove test baselines
|
||||
|
||||
## Code Checking
|
||||
|
||||
.PHONY: fullint
|
||||
fullint: lint old-lint tslint flow mdlint ## Run all checks
|
||||
|
||||
.PHONY: lint
|
||||
lint: $(TARGET) $(AUXTARGETS) ## Run eslint checks
|
||||
@eslint --ext .js,.njs,.json,.html,.htm $(TARGET) $(AUXTARGETS) $(CMDS) $(HTMLLINT) package.json bower.json
|
||||
@ -71,6 +74,11 @@ old-lint: $(TARGET) $(AUXTARGETS) ## Run jshint and jscs checks
|
||||
@jscs $(TARGET) $(AUXTARGETS)
|
||||
if [ -e $(CLOSURE) ]; then java -jar $(CLOSURE) $(REQS) $(FLOWTARGET) --jscomp_warning=reportUnknownTypes >/dev/null; fi
|
||||
|
||||
.PHONY: tslint
|
||||
tslint: $(TARGET) ## Run typescript checks
|
||||
#@npm install dtslint typescript
|
||||
#@npm run-script dtslint
|
||||
dtslint types
|
||||
|
||||
.PHONY: flow
|
||||
flow: lint ## Run flow checker
|
||||
@ -86,6 +94,12 @@ misc/coverage.html: $(TARGET) test.js
|
||||
coveralls: ## Coverage Test + Send to coveralls.io
|
||||
mocha --require blanket --reporter mocha-lcov-reporter -t 20000 | node ./node_modules/coveralls/bin/coveralls.js
|
||||
|
||||
MDLINT=README.md
|
||||
.PHONY: mdlint
|
||||
mdlint: $(MDLINT) ## Check markdown documents
|
||||
alex $^
|
||||
mdspell -a -n -x -r --en-us $^
|
||||
|
||||
.PHONY: perf
|
||||
perf: ## Run Performance Tests
|
||||
@bash perf/perf.sh
|
||||
|
23
README.md
23
README.md
@ -14,7 +14,7 @@ $ npm install adler-32
|
||||
In the browser:
|
||||
|
||||
```html
|
||||
<script lang="javascript" src="adler32.js"></script>
|
||||
<script src="adler32.js"></script>
|
||||
```
|
||||
|
||||
The browser exposes a variable `ADLER32`.
|
||||
@ -22,9 +22,8 @@ The browser exposes a variable `ADLER32`.
|
||||
When installed globally, npm installs a script `adler32` that computes the
|
||||
checksum for a specified file or standard input.
|
||||
|
||||
The script will manipulate `module.exports` if available (e.g. in a CommonJS
|
||||
`require` context). This is not always desirable. To prevent the behavior,
|
||||
define `DO_NOT_EXPORT_ADLER`.
|
||||
The script will manipulate `module.exports` if available . This is not always
|
||||
desirable. To prevent the behavior, define `DO_NOT_EXPORT_ADLER`.
|
||||
|
||||
## Usage
|
||||
|
||||
@ -34,12 +33,12 @@ optional second argument representing the starting "seed" (for running hash).
|
||||
The return value is a signed 32-bit integer.
|
||||
|
||||
- `ADLER32.buf(byte array or buffer[, seed])` assumes the argument is a sequence
|
||||
of 8-bit unsigned integers (e.g. nodejs `Buffer` or simple array of ints).
|
||||
of 8-bit unsigned integers (nodejs `Buffer`, `Uint8Array` or array of bytes).
|
||||
|
||||
- `ADLER32.bstr(binary string[, seed])` assumes the argument as a binary string
|
||||
- `ADLER32.bstr(binary string[, seed])` assumes the argument is a binary string
|
||||
where byte `i` is the low byte of the UCS-2 char: `str.charCodeAt(i) & 0xFF`
|
||||
|
||||
- `ADLER32.str(string)` assumes the argument as a standard JS string and
|
||||
- `ADLER32.str(string)` assumes the argument is a standard JS string and
|
||||
calculates the hash of the UTF-8 encoding.
|
||||
|
||||
For example:
|
||||
@ -68,7 +67,7 @@ To run the in-browser tests, run a local server and go to the `ctest` directory.
|
||||
|
||||
To update the browser artifacts, run `make ctest`.
|
||||
|
||||
To generate the bits file, use the `adler32` function from python zlib:
|
||||
To generate the bits file, use the `adler32` function from python `zlib`:
|
||||
|
||||
```python
|
||||
>>> from zlib import adler32
|
||||
@ -81,7 +80,7 @@ To generate the bits file, use the `adler32` function from python zlib:
|
||||
2023497376
|
||||
```
|
||||
|
||||
The included `adler32.njs` script can process files or stdin:
|
||||
The included `adler32.njs` script can process files or standard input:
|
||||
|
||||
```bash
|
||||
$ echo "this is a test" > t.txt
|
||||
@ -89,7 +88,7 @@ $ bin/adler32.njs t.txt
|
||||
726861088
|
||||
```
|
||||
|
||||
For comparison, the included `adler32.py` script uses python zlib:
|
||||
For comparison, the included `adler32.py` script uses python `zlib`:
|
||||
|
||||
```bash
|
||||
$ bin/adler32.py t.txt
|
||||
@ -101,7 +100,7 @@ $ bin/adler32.py t.txt
|
||||
`make perf` will run algorithmic performance tests (which should justify certain
|
||||
decisions in the code).
|
||||
|
||||
Bit twiddling is much faster than taking the mod on Safari and older Firefoxes.
|
||||
Bit twiddling is much faster than taking the mod in Safari and Firefox browsers.
|
||||
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`:
|
||||
|
||||
@ -122,7 +121,7 @@ F[255] (* bstr: x \[Element] Integers && 1 <= x <= 3854 *)
|
||||
F[127] (* ascii: x \[Element] Integers && 1 <= x <= 5321 *)
|
||||
```
|
||||
|
||||
Subtract up to 4 elements for the unicode case.
|
||||
Subtract up to 4 elements for the Unicode case.
|
||||
|
||||
## License
|
||||
|
||||
|
@ -1,32 +1,34 @@
|
||||
/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
||||
/* vim: set ts=2: */
|
||||
/*exported ADLER32 */
|
||||
var ADLER32;
|
||||
/*:: declare var DO_NOT_EXPORT_ADLER: any; */
|
||||
/*:: declare var define: any; */
|
||||
(function (factory) {
|
||||
/*:: declare var DO_NOT_EXPORT_ADLER:?boolean; */
|
||||
/*:: declare function define(cb:()=>any):void; */
|
||||
var ADLER32/*:ADLER32Module*/;
|
||||
(function (factory/*:(a:any)=>void*/)/*:void*/ {
|
||||
/*jshint ignore:start */
|
||||
/*eslint-disable */
|
||||
if(typeof DO_NOT_EXPORT_ADLER === 'undefined') {
|
||||
if('object' === typeof exports) {
|
||||
factory(exports);
|
||||
} else if ('function' === typeof define && define.amd) {
|
||||
define(function () {
|
||||
var module = {};
|
||||
var module/*:ADLER32Module*/ = /*::(*/{}/*:: :any)*/;
|
||||
factory(module);
|
||||
return module;
|
||||
});
|
||||
} else {
|
||||
factory(ADLER32 = {});
|
||||
factory(ADLER32 = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
} else {
|
||||
factory(ADLER32 = {});
|
||||
factory(ADLER32 = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
/*eslint-enable */
|
||||
/*jshint ignore:end */
|
||||
}(function(ADLER32) {
|
||||
ADLER32.version = '1.1.0';
|
||||
}(function(ADLER32/*:ADLER32Module*/) {
|
||||
ADLER32.version = '1.2.0';
|
||||
/*::
|
||||
type ADLER32Type = number;
|
||||
type ABuf = Array<number> | Buffer;
|
||||
type ABuf = Array<number> | Buffer | Uint8Array;
|
||||
*/
|
||||
/*# consult README.md for the magic number */
|
||||
/*# charCodeAt is the best approach for binary strings */
|
||||
@ -90,7 +92,10 @@ function adler32_str(str/*:string*/, seed/*:?ADLER32Type*/)/*:ADLER32Type*/ {
|
||||
}
|
||||
return ((b%65521) << 16) | (a%65521);
|
||||
}
|
||||
// $FlowIgnore
|
||||
ADLER32.bstr = adler32_bstr;
|
||||
// $FlowIgnore
|
||||
ADLER32.buf = adler32_buf;
|
||||
// $FlowIgnore
|
||||
ADLER32.str = adler32_str;
|
||||
}));
|
||||
|
@ -4,6 +4,7 @@
|
||||
var ADLER32;
|
||||
(function (factory) {
|
||||
/*jshint ignore:start */
|
||||
/*eslint-disable */
|
||||
if(typeof DO_NOT_EXPORT_ADLER === 'undefined') {
|
||||
if('object' === typeof exports) {
|
||||
factory(exports);
|
||||
@ -19,9 +20,10 @@ var ADLER32;
|
||||
} else {
|
||||
factory(ADLER32 = {});
|
||||
}
|
||||
/*eslint-enable */
|
||||
/*jshint ignore:end */
|
||||
}(function(ADLER32) {
|
||||
ADLER32.version = '1.1.0';
|
||||
ADLER32.version = '1.2.0';
|
||||
function adler32_bstr(bstr, seed) {
|
||||
var a = 1, b = 0, L = bstr.length, M = 0;
|
||||
if(typeof seed === 'number') { a = seed & 0xFFFF; b = seed >>> 16; }
|
||||
@ -81,7 +83,10 @@ function adler32_str(str, seed) {
|
||||
}
|
||||
return ((b%65521) << 16) | (a%65521);
|
||||
}
|
||||
// $FlowIgnore
|
||||
ADLER32.bstr = adler32_bstr;
|
||||
// $FlowIgnore
|
||||
ADLER32.buf = adler32_buf;
|
||||
// $FlowIgnore
|
||||
ADLER32.str = adler32_str;
|
||||
}));
|
||||
|
@ -1,6 +1,8 @@
|
||||
#!/usr/bin/env node
|
||||
/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
||||
/* eslint-env node */
|
||||
/* vim: set ts=2 ft=javascript: */
|
||||
/*jshint node:true */
|
||||
|
||||
var X/*:ADLER32Module*/;
|
||||
try { X = require('../'); } catch(e) { X = require('adler-32'); }
|
||||
|
@ -1,25 +1,27 @@
|
||||
/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
||||
/* vim: set ts=2: */
|
||||
/*exported ADLER32 */
|
||||
var ADLER32;
|
||||
/*:: declare var DO_NOT_EXPORT_ADLER: any; */
|
||||
/*:: declare var define: any; */
|
||||
(function (factory) {
|
||||
/*:: declare var DO_NOT_EXPORT_ADLER:?boolean; */
|
||||
/*:: declare function define(cb:()=>any):void; */
|
||||
var ADLER32/*:ADLER32Module*/;
|
||||
(function (factory/*:(a:any)=>void*/)/*:void*/ {
|
||||
/*jshint ignore:start */
|
||||
/*eslint-disable */
|
||||
if(typeof DO_NOT_EXPORT_ADLER === 'undefined') {
|
||||
if('object' === typeof exports) {
|
||||
factory(exports);
|
||||
} else if ('function' === typeof define && define.amd) {
|
||||
define(function () {
|
||||
var module = {};
|
||||
var module/*:ADLER32Module*/ = /*::(*/{}/*:: :any)*/;
|
||||
factory(module);
|
||||
return module;
|
||||
});
|
||||
} else {
|
||||
factory(ADLER32 = {});
|
||||
factory(ADLER32 = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
} else {
|
||||
factory(ADLER32 = {});
|
||||
factory(ADLER32 = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
/*eslint-enable */
|
||||
/*jshint ignore:end */
|
||||
}(function(ADLER32) {
|
||||
}(function(ADLER32/*:ADLER32Module*/) {
|
||||
|
@ -1 +1 @@
|
||||
ADLER32.version = '1.1.0';
|
||||
ADLER32.version = '1.2.0';
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*::
|
||||
type ADLER32Type = number;
|
||||
type ABuf = Array<number> | Buffer;
|
||||
type ABuf = Array<number> | Buffer | Uint8Array;
|
||||
*/
|
||||
|
@ -1,3 +1,6 @@
|
||||
// $FlowIgnore
|
||||
ADLER32.bstr = adler32_bstr;
|
||||
// $FlowIgnore
|
||||
ADLER32.buf = adler32_buf;
|
||||
// $FlowIgnore
|
||||
ADLER32.str = adler32_str;
|
||||
|
@ -4,6 +4,7 @@
|
||||
var ADLER32;
|
||||
(function (factory) {
|
||||
/*jshint ignore:start */
|
||||
/*eslint-disable */
|
||||
if(typeof DO_NOT_EXPORT_ADLER === 'undefined') {
|
||||
if('object' === typeof exports) {
|
||||
factory(exports);
|
||||
@ -19,9 +20,10 @@ var ADLER32;
|
||||
} else {
|
||||
factory(ADLER32 = {});
|
||||
}
|
||||
/*eslint-enable */
|
||||
/*jshint ignore:end */
|
||||
}(function(ADLER32) {
|
||||
ADLER32.version = '1.1.0';
|
||||
ADLER32.version = '1.2.0';
|
||||
function adler32_bstr(bstr, seed) {
|
||||
var a = 1, b = 0, L = bstr.length, M = 0;
|
||||
if(typeof seed === 'number') { a = seed & 0xFFFF; b = seed >>> 16; }
|
||||
@ -81,7 +83,10 @@ function adler32_str(str, seed) {
|
||||
}
|
||||
return ((b%65521) << 16) | (a%65521);
|
||||
}
|
||||
// $FlowIgnore
|
||||
ADLER32.bstr = adler32_bstr;
|
||||
// $FlowIgnore
|
||||
ADLER32.buf = adler32_buf;
|
||||
// $FlowIgnore
|
||||
ADLER32.str = adler32_str;
|
||||
}));
|
||||
|
@ -22,13 +22,10 @@ var bits = [
|
||||
];
|
||||
if(typeof module !== "undefined") module.exports = bits;
|
||||
/*::
|
||||
type ArrayLike = any;
|
||||
type Stringifier = {(d:ArrayLike):string};
|
||||
|
||||
declare class ADLER32Module {
|
||||
bstr(s:string, seed:?ADLER32Type):ADLER32Type;
|
||||
buf(b:ABuf, seed:?ADLER32Type):ADLER32Type;
|
||||
str(s:string, seed:?ADLER32Type):ADLER32Type;
|
||||
bstr(s:string, seed?:ADLER32Type):ADLER32Type;
|
||||
buf(b:ABuf, seed?:ADLER32Type):ADLER32Type;
|
||||
str(s:string, seed?:ADLER32Type):ADLER32Type;
|
||||
version:string;
|
||||
};
|
||||
*/
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*jshint browser:true */
|
||||
/*global ADLER32, console */
|
||||
/*eslint-env browser */
|
||||
/*global ADLER32, console, Uint8Array */
|
||||
/*:: declare var ADLER32: ADLER32Module; */
|
||||
var X = ADLER32;
|
||||
|
||||
@ -17,6 +18,10 @@ function is_defined(val/*:any*/, keys/*:Array<string>*/)/*:boolean*/ {
|
||||
}
|
||||
|
||||
/*# buffer to string; IE String.fromCharCode.apply limit, manual chunk */
|
||||
/*::
|
||||
type ArrayLike = any;
|
||||
type Stringifier = {(d:ArrayLike):string};
|
||||
*/
|
||||
function make_chunk_buf_to_str(BType/*:function*/)/*:Stringifier*/ {
|
||||
return function(data/*:any*/)/*:string*/ {
|
||||
var o = "", l = 0, w = 10240, L = data.byteLength/w;
|
||||
@ -66,7 +71,7 @@ var readcb = function(e/*:Event*/) {
|
||||
console_log("onload", new Date(), rABS, false);
|
||||
var target/*:FileReader*/ = (e.target/*:any*/);
|
||||
var data = target.result;
|
||||
var val/*:ADLER32Type*/ = rABS ? X.bstr(data) : X.str(bstrify(data));
|
||||
var val/*:ADLER32Type*/ = rABS ? X.bstr(/*::(*/data/*:: :any)*/) : X.str(bstrify(data));
|
||||
process_value(val);
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*jshint browser:true */
|
||||
/*global ADLER32, console */
|
||||
/*eslint-env browser */
|
||||
/*global ADLER32, console, Uint8Array */
|
||||
var X = ADLER32;
|
||||
|
||||
function console_log() { if(typeof console !== 'undefined') console.log.apply(console, [].slice.call(arguments)); }
|
||||
|
@ -45,6 +45,7 @@ Use readAsBinaryString: (when available) <input type="checkbox" name="userabs" c
|
||||
<script src="adler32.js"></script>
|
||||
<script src="demo/browser.flow.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*eslint-env browser */
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-36810333-1']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
@ -1,11 +1,8 @@
|
||||
/*::
|
||||
type ArrayLike = any;
|
||||
type Stringifier = {(d:ArrayLike):string};
|
||||
|
||||
declare class ADLER32Module {
|
||||
bstr(s:string, seed:?ADLER32Type):ADLER32Type;
|
||||
buf(b:ABuf, seed:?ADLER32Type):ADLER32Type;
|
||||
str(s:string, seed:?ADLER32Type):ADLER32Type;
|
||||
bstr(s:string, seed?:ADLER32Type):ADLER32Type;
|
||||
buf(b:ABuf, seed?:ADLER32Type):ADLER32Type;
|
||||
str(s:string, seed?:ADLER32Type):ADLER32Type;
|
||||
version:string;
|
||||
};
|
||||
*/
|
||||
|
19
package.json
19
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "adler-32",
|
||||
"version": "1.1.0",
|
||||
"version": "1.2.0",
|
||||
"author": "sheetjs",
|
||||
"description": "Pure-JS ADLER-32",
|
||||
"keywords": [ "adler32", "checksum" ],
|
||||
@ -8,25 +8,34 @@
|
||||
"adler32": "./bin/adler32.njs"
|
||||
},
|
||||
"main": "./adler32",
|
||||
"types": "types",
|
||||
"dependencies": {
|
||||
"printj":"~1.1.0",
|
||||
"exit-on-epipe":"~1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha":"~2.5.3",
|
||||
"codepage":"~1.10.0"
|
||||
"blanket": "~1.2.3",
|
||||
"codepage":"~1.10.0",
|
||||
"@sheetjs/uglify-js":"~2.7.3",
|
||||
"@types/node":"^8.0.7",
|
||||
"dtslint": "^0.1.2",
|
||||
"typescript": "2.2.0"
|
||||
},
|
||||
"repository": { "type":"git", "url":"git://github.com/SheetJS/js-adler32.git" },
|
||||
"scripts": {
|
||||
"pretest": "git submodule init && git submodule update",
|
||||
"test": "make test"
|
||||
"test": "make test",
|
||||
"build": "make",
|
||||
"lint": "make fullint",
|
||||
"dtslint": "dtslint types"
|
||||
},
|
||||
"config": {
|
||||
"blanket": {
|
||||
"pattern": "adler32.js"
|
||||
}
|
||||
},
|
||||
"files": ["adler32.js", "bin/adler32.njs", "LICENSE", "README.md"],
|
||||
"homepage": "http://sheetjs.com/opensource",
|
||||
"files": ["adler32.js", "bin/adler32.njs", "LICENSE", "README.md", "types/index.d.ts", "types/*.json"],
|
||||
"bugs": { "url": "https://github.com/SheetJS/js-adler32/issues" },
|
||||
"license": "Apache-2.0",
|
||||
"engines": { "node": ">=0.8" }
|
||||
|
9
types/adler32-test.ts
Normal file
9
types/adler32-test.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import { buf, bstr, str } from 'adler-32';
|
||||
|
||||
const t1: number = buf([1,2,3,4,5]);
|
||||
const t3: number = bstr("\u0001\u0002\u0003\u0004\u0005");
|
||||
const t5: number = str("\u0001\u0002\u0003\u0004\u0005");
|
||||
|
||||
const t2: number = buf(new Uint8Array([1,2,3,4,5]), t3);
|
||||
const t4: number = bstr("\u0001\u0002\u0003\u0004\u0005", t5);
|
||||
const t6: number = str("\u0001\u0002\u0003\u0004\u0005", t1);
|
90
types/bin_adler32.ts
Executable file
90
types/bin_adler32.ts
Executable file
@ -0,0 +1,90 @@
|
||||
/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
||||
/* eslint-env node */
|
||||
/* vim: set ts=2 ft=javascript: */
|
||||
/*jshint node:true */
|
||||
/// <reference types="../node_modules/@types/node/" />
|
||||
/* node type definition is missing writable stream _writev */
|
||||
interface Chunk { chunk: any; encoding: string; }
|
||||
type CBType = () => void;
|
||||
|
||||
import X = require("adler-32");
|
||||
import 'exit-on-epipe';
|
||||
import fs = require('fs');
|
||||
import stream = require('stream');
|
||||
import { sprintf } from "printj";
|
||||
|
||||
const help = (): number => {
|
||||
[
|
||||
"usage: adler32 [options] [filename]",
|
||||
"",
|
||||
"Options:",
|
||||
" -h, --help output usage information",
|
||||
" -V, --version output the version number",
|
||||
" -S, --seed=<n> use integer seed as starting value (default 1)",
|
||||
" -H, --hex-seed=<h> use hex seed as starting value (default 1)",
|
||||
" -d, --signed print result with format `%d` (default)",
|
||||
" -u, --unsigned print result with format `%u`",
|
||||
" -x, --hex print result with format `%0.8x`",
|
||||
" -X, --HEX print result with format `%0.8X`",
|
||||
" -F, --format=<s> use specified printf format",
|
||||
"",
|
||||
"Set filename = '-' or pipe data into adler32 to read from stdin",
|
||||
"Default output mode is signed (-d)",
|
||||
""
|
||||
].forEach(function(l) { console.log(l); });
|
||||
return 0;
|
||||
};
|
||||
|
||||
const version = (): number => { console.log(X.version); return 0; };
|
||||
|
||||
|
||||
const die = (msg: string, ec?: number): void => { console.error(msg); process.exit(ec || 0); };
|
||||
|
||||
const args/*:Array<string>*/ = process.argv.slice(2);
|
||||
let filename/*:string*/ = "";
|
||||
let fmt/*:string*/ = "";
|
||||
let seed = 0, r = 10;
|
||||
|
||||
for(let i = 0; i < args.length; ++i) {
|
||||
const arg = args[i];
|
||||
if(arg.charCodeAt(0) !== 45) { if(filename === "") filename = arg; continue; }
|
||||
const m = arg.indexOf("=") === -1 ? arg : arg.substr(0, arg.indexOf("="));
|
||||
switch(m) {
|
||||
case "-": filename = "-"; break;
|
||||
|
||||
case "--help": case "-h": process.exit(help()); break;
|
||||
case "--version": case "-V": process.exit(version()); break;
|
||||
|
||||
case "--signed": case "-d": fmt = "%d"; break;
|
||||
case "--unsigned": case "-u": fmt = "%u"; break;
|
||||
case "--hex": case "-x": fmt = "%0.8x"; break;
|
||||
case "--HEX": case "-X": fmt = "%0.8X"; break;
|
||||
case "--format": case "-F":
|
||||
fmt = ((m!==arg) ? arg.substr(m.length+1) : args[++i])||""; break;
|
||||
|
||||
case "--hex-seed": case "-H": r = 16;
|
||||
/* falls through */
|
||||
case "--seed": case "-S":
|
||||
seed=parseInt((m!==arg) ? arg.substr(m.length+1) : args[++i], r)||0; break;
|
||||
|
||||
default: die("adler32: unrecognized option `" + arg + "'", 22);
|
||||
}
|
||||
}
|
||||
|
||||
if(!process.stdin.isTTY) filename = filename || "-";
|
||||
if(filename.length===0) die("adler32: must specify a filename ('-' for stdin)",1);
|
||||
|
||||
let adler32 = seed;
|
||||
// $FlowIgnore -- Writable is callable but type sig disagrees
|
||||
const writable = new stream.Writable();
|
||||
writable._write = (chunk: any, e: string, cb: CBType) => { adler32 = X.buf(chunk, adler32); cb(); };
|
||||
(<any>writable)._writev = (chunks: Chunk[], cb: CBType) => {
|
||||
chunks.forEach(function(c) { adler32 = X.buf(c.chunk, adler32);}); cb();
|
||||
};
|
||||
writable.on('finish', () => {
|
||||
console.log(fmt === "" ? adler32 : sprintf(fmt, adler32));
|
||||
});
|
||||
|
||||
if(filename === "-") process.stdin.pipe(writable);
|
||||
else if(fs.existsSync(filename)) fs.createReadStream(filename).pipe(writable);
|
||||
else die("adler32: " + filename + ": No such file or directory", 2);
|
14
types/index.d.ts
vendored
Normal file
14
types/index.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
||||
// TypeScript Version: 2.2
|
||||
|
||||
/** Version string */
|
||||
export const version: string;
|
||||
|
||||
/** Process a node buffer or byte array */
|
||||
export function buf(data: number[] | Uint8Array, seed?: number): number;
|
||||
|
||||
/** Process a binary string */
|
||||
export function bstr(data: string, seed?: number): number;
|
||||
|
||||
/** Process a JS string based on the UTF8 encoding */
|
||||
export function str(data: string, seed?: number): number;
|
14
types/tsconfig.json
Normal file
14
types/tsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [ "es5" ],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": ".",
|
||||
"paths": { "adler-32": ["."] },
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
}
|
||||
}
|
11
types/tslint.json
Normal file
11
types/tslint.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "dtslint/dtslint.json",
|
||||
"rules": {
|
||||
"whitespace": false,
|
||||
"no-sparse-arrays": false,
|
||||
"only-arrow-functions": false,
|
||||
"no-consecutive-blank-lines": false,
|
||||
"prefer-conditional-expression": false,
|
||||
"one-variable-per-declaration": false
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user