version bump 1.2.1
This commit is contained in:
		
							parent
							
								
									d2e236fe5e
								
							
						
					
					
						commit
						d64513c952
					
				
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -31,7 +31,7 @@ clean: clean-baseline ## Remove targets and build artifacts | ||||
| 	rm -f $(TARGET) $(FLOWTARGET) | ||||
| 
 | ||||
| crc32c.flow.js: crc32.flow.js | ||||
| 	cat $^ | sed 's/-306674912/-2097792136/g' > $@ | ||||
| 	cat $^ | sed 's/-306674912/-2097792136/g; s/CRC32\([ \/\.]\)/CRC32C\1/g' > $@ | ||||
| 
 | ||||
| ## Testing
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										100
									
								
								README.md
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										100
									
								
								README.md
									
									
									
									
									
								
							| @ -11,16 +11,57 @@ With [npm](https://www.npmjs.org/package/crc-32): | ||||
| $ npm install crc-32 | ||||
| ``` | ||||
| 
 | ||||
| In the browser: | ||||
| When installed globally, npm installs a script `crc32` that computes the | ||||
| checksum for a specified file or standard input. | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>CDN Availability</b> (click to show)</summary> | ||||
| 
 | ||||
| |    CDN     | URL                                        | | ||||
| |-----------:|:-------------------------------------------| | ||||
| |    `unpkg` | <https://unpkg.com/crc-32/>                | | ||||
| | `jsDelivr` | <https://jsdelivr.com/package/npm/crc-32>  | | ||||
| |    `CDNjs` | <https://cdnjs.com/libraries/crc-32>       | | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| 
 | ||||
| ## Integration | ||||
| 
 | ||||
| Using NodeJS or a bundler: | ||||
| 
 | ||||
| ```js | ||||
| var CRC32 = require("crc-32"); | ||||
| ``` | ||||
| 
 | ||||
| In the browser, the `crc32.js` script can be loaded directly: | ||||
| 
 | ||||
| ```html | ||||
| <script src="crc32.js"></script> | ||||
| ``` | ||||
| 
 | ||||
| The browser exposes a variable `CRC32`. | ||||
| The browser script exposes a variable `CRC32`. | ||||
| 
 | ||||
| When installed globally, npm installs a script `crc32` that computes the | ||||
| checksum for a specified file or standard input. | ||||
| The script will manipulate `module.exports` if available .  This is not always | ||||
| desirable.  To prevent the behavior, define `DO_NOT_EXPORT_CRC`. | ||||
| 
 | ||||
| ### CRC32C (Castagnoli) | ||||
| 
 | ||||
| The module and CDNs also include a parallel script for CRC32C calculations. | ||||
| 
 | ||||
| Using NodeJS or a bundler: | ||||
| 
 | ||||
| ```js | ||||
| var CRC32C = require("crc-32/crc32c"); | ||||
| ``` | ||||
| 
 | ||||
| In the browser, the `crc32c.js` script can be loaded directly: | ||||
| 
 | ||||
| ```html | ||||
| <script src="crc32c.js"></script> | ||||
| ``` | ||||
| 
 | ||||
| The browser exposes a variable `CRC32C`. | ||||
| 
 | ||||
| The script will manipulate `module.exports` if available .  This is not always | ||||
| desirable.  To prevent the behavior, define `DO_NOT_EXPORT_CRC`. | ||||
| @ -44,20 +85,51 @@ The return value is a signed 32-bit integer. | ||||
| For example: | ||||
| 
 | ||||
| ```js | ||||
| // var CRC32 = require('crc-32');             // uncomment this line if in node | ||||
| CRC32.str("SheetJS")                          // -1647298270 | ||||
| CRC32.bstr("SheetJS")                         // -1647298270 | ||||
| CRC32.buf([ 83, 104, 101, 101, 116, 74, 83 ]) // -1647298270 | ||||
| // var CRC32 = require('crc-32');               // uncomment this line if in node | ||||
| CRC32.str("SheetJS")                            // -1647298270 | ||||
| CRC32.bstr("SheetJS")                           // -1647298270 | ||||
| CRC32.buf([ 83, 104, 101, 101, 116, 74, 83 ])   // -1647298270 | ||||
| 
 | ||||
| crc32 = CRC32.buf([83, 104])                  // -1826163454  "Sh" | ||||
| crc32 = CRC32.str("eet", crc32)               //  1191034598  "Sheet" | ||||
| CRC32.bstr("JS", crc32)                       // -1647298270  "SheetJS" | ||||
| crc32 = CRC32.buf([83, 104])                    // -1826163454  "Sh" | ||||
| crc32 = CRC32.str("eet", crc32)                 //  1191034598  "Sheet" | ||||
| CRC32.bstr("JS", crc32)                         // -1647298270  "SheetJS" | ||||
| 
 | ||||
| [CRC32.str("\u2603"),  CRC32.str("\u0003")]   // [ -1743909036,  1259060791 ] | ||||
| [CRC32.bstr("\u2603"), CRC32.bstr("\u0003")]  // [  1259060791,  1259060791 ] | ||||
| [CRC32.buf([0x2603]),  CRC32.buf([0x0003])]   // [  1259060791,  1259060791 ] | ||||
| [CRC32.str("\u2603"),  CRC32.str("\u0003")]     // [ -1743909036,  1259060791 ] | ||||
| [CRC32.bstr("\u2603"), CRC32.bstr("\u0003")]    // [  1259060791,  1259060791 ] | ||||
| [CRC32.buf([0x2603]),  CRC32.buf([0x0003])]     // [  1259060791,  1259060791 ] | ||||
| 
 | ||||
| // var CRC32C = require('crc-32/crc32c');       // uncomment this line if in node | ||||
| CRC32C.str("SheetJS")                           // -284764294 | ||||
| CRC32C.bstr("SheetJS")                          // -284764294 | ||||
| CRC32C.buf([ 83, 104, 101, 101, 116, 74, 83 ])  // -284764294 | ||||
| 
 | ||||
| crc32c = CRC32C.buf([83, 104])                  // -297065629   "Sh" | ||||
| crc32c = CRC32C.str("eet", crc32c)              //  1241364256  "Sheet" | ||||
| CRC32C.bstr("JS", crc32c)                       // -284764294   "SheetJS" | ||||
| 
 | ||||
| [CRC32C.str("\u2603"),  CRC32C.str("\u0003")]   // [  1253703093,  1093509285 ] | ||||
| [CRC32C.bstr("\u2603"), CRC32C.bstr("\u0003")]  // [  1093509285,  1093509285 ] | ||||
| [CRC32C.buf([0x2603]),  CRC32C.buf([0x0003])]   // [  1093509285,  1093509285 ] | ||||
| ``` | ||||
| 
 | ||||
| ### Best Practices | ||||
| 
 | ||||
| Even though the initial seed is optional, for performance reasons it is highly | ||||
| recommended to explicitly pass the default seed 0. | ||||
| 
 | ||||
| In NodeJS with the native Buffer implementation, it is oftentimes faster to | ||||
| convert binary strings with `Buffer.from(bstr, "binary")` first: | ||||
| 
 | ||||
| ```js | ||||
| /* Frequently slower in NodeJS */ | ||||
| crc32 = CRC32.bstr(bstr, 0); | ||||
| /* Frequently faster in NodeJS */ | ||||
| crc32 = CRC32.buf(Buffer.from(bstr, "binary"), 0); | ||||
| ``` | ||||
| 
 | ||||
| This does not apply to browser `Buffer` shims, and thus is not implemented in | ||||
| the library directly. | ||||
| 
 | ||||
| ## Testing | ||||
| 
 | ||||
| `make test` will run the nodejs-based test. | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /* vim: set ts=2: */ | ||||
| /*exported CRC32 */ | ||||
| /*:: declare var DO_NOT_EXPORT_CRC:?boolean; */ | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| CRC32.version = '1.2.0'; | ||||
| CRC32.version = '1.2.1'; | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| /* see perf/crc32table.js */ | ||||
| /*global Int32Array */ | ||||
| function signed_crc_table()/*:CRC32TableType*/ { | ||||
| 	var c = 0, table/*:Array<number>*/ = new Array(256); | ||||
| @ -19,8 +18,7 @@ function signed_crc_table()/*:CRC32TableType*/ { | ||||
| 	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; | ||||
| } | ||||
| 
 | ||||
| var T = signed_crc_table(); | ||||
| /*# slice by 16 tables */ | ||||
| var T0 = signed_crc_table(); | ||||
| function slice_by_16_tables(T) { | ||||
| 	var c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; | ||||
| 
 | ||||
| @ -33,7 +31,7 @@ function slice_by_16_tables(T) { | ||||
| 	for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); | ||||
| 	return out; | ||||
| } | ||||
| var TT = slice_by_16_tables(T); | ||||
| var TT = slice_by_16_tables(T0); | ||||
| var T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4]; | ||||
| var T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9]; | ||||
| var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; | ||||
|  | ||||
							
								
								
									
										106
									
								
								bits/40_crc.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										106
									
								
								bits/40_crc.js
									
									
									
									
									
								
							| @ -1,96 +1,44 @@ | ||||
| /*# charCodeAt is the best approach for binary strings */ | ||||
| function crc32_bstr(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	if(bstr.length > 10000) return crc32_bstr_16(bstr, seed); | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = bstr.length - 1; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	} | ||||
| 	if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1; | ||||
| 	for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| function crc32_bstr_16(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = bstr.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[bstr.charCodeAt(i++) ^ (C & 255)] ^ | ||||
| 		Te[bstr.charCodeAt(i++) ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[bstr.charCodeAt(i++) ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[bstr.charCodeAt(i++) ^ (C >>> 24)] ^ | ||||
| 		Tb[bstr.charCodeAt(i++)] ^ | ||||
| 		Ta[bstr.charCodeAt(i++)] ^ | ||||
| 		T9[bstr.charCodeAt(i++)] ^ | ||||
| 		T8[bstr.charCodeAt(i++)] ^ | ||||
| 		T7[bstr.charCodeAt(i++)] ^ | ||||
| 		T6[bstr.charCodeAt(i++)] ^ | ||||
| 		T5[bstr.charCodeAt(i++)] ^ | ||||
| 		T4[bstr.charCodeAt(i++)] ^ | ||||
| 		T3[bstr.charCodeAt(i++)] ^ | ||||
| 		T2[bstr.charCodeAt(i++)] ^ | ||||
| 		T1[bstr.charCodeAt(i++)] ^ | ||||
| 		T[bstr.charCodeAt(i++)]; | ||||
| 
 | ||||
| function crc32_buf(B/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0; | ||||
| 	for(; i < L;) C = | ||||
| 		Tf[B[i++] ^ (C & 255)] ^ | ||||
| 		Te[B[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[B[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[B[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ | ||||
| 		T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ | ||||
| 		T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf(buf/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	if(buf.length > 2000) return crc32_buf_16(buf, seed); | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = buf.length - 3; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_buf_16(buf/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = buf.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[buf[i++] ^ (C & 255)] ^ | ||||
| 		Te[buf[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[buf[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[buf[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[buf[i++]] ^ | ||||
| 		Ta[buf[i++]] ^ | ||||
| 		T9[buf[i++]] ^ | ||||
| 		T8[buf[i++]] ^ | ||||
| 		T7[buf[i++]] ^ | ||||
| 		T6[buf[i++]] ^ | ||||
| 		T5[buf[i++]] ^ | ||||
| 		T4[buf[i++]] ^ | ||||
| 		T3[buf[i++]] ^ | ||||
| 		T2[buf[i++]] ^ | ||||
| 		T1[buf[i++]] ^ | ||||
| 		T[buf[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*# much much faster to intertwine utf8 and crc, slower to slice by 8 or 16 */ | ||||
| function crc32_str(str/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1; | ||||
| 	for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { | ||||
| 		c = str.charCodeAt(i++); | ||||
| 		if(c < 0x80) { | ||||
| 			C = (C>>>8) ^ T[(C ^ c)&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C^c)&0xFF]; | ||||
| 		} else if(c < 0x800) { | ||||
| 			C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} else if(c >= 0xD800 && c < 0xE000) { | ||||
| 			c = (c&1023)+64; d = str.charCodeAt(i++)&1023; | ||||
| 			C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; | ||||
| 		} else { | ||||
| 			C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} | ||||
| 	} | ||||
| 	return C ^ -1; | ||||
| 	return ~C; | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| CRC32.table = T; | ||||
| CRC32.table = T0; | ||||
| // $FlowIgnore
 | ||||
| CRC32.bstr = crc32_bstr; | ||||
| // $FlowIgnore
 | ||||
|  | ||||
							
								
								
									
										118
									
								
								crc32.flow.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										118
									
								
								crc32.flow.js
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | ||||
| /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /* vim: set ts=2: */ | ||||
| /*exported CRC32 */ | ||||
| /*:: declare var DO_NOT_EXPORT_CRC:?boolean; */ | ||||
| @ -25,13 +25,12 @@ var CRC32/*:CRC32Module*/; | ||||
| 	/*eslint-enable */ | ||||
| 	/*jshint ignore:end */ | ||||
| }(function(CRC32/*:CRC32Module*/) { | ||||
| CRC32.version = '1.2.0'; | ||||
| CRC32.version = '1.2.1'; | ||||
| /*:: | ||||
| type CRC32Type = number; | ||||
| type ABuf = Array<number> | Buffer | Uint8Array; | ||||
| type CRC32TableType = Array<number> | Int32Array; | ||||
| */ | ||||
| /* see perf/crc32table.js */ | ||||
| /*global Int32Array */ | ||||
| function signed_crc_table()/*:CRC32TableType*/ { | ||||
| 	var c = 0, table/*:Array<number>*/ = new Array(256); | ||||
| @ -52,8 +51,7 @@ function signed_crc_table()/*:CRC32TableType*/ { | ||||
| 	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; | ||||
| } | ||||
| 
 | ||||
| var T = signed_crc_table(); | ||||
| /*# slice by 16 tables */ | ||||
| var T0 = signed_crc_table(); | ||||
| function slice_by_16_tables(T) { | ||||
| 	var c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; | ||||
| 
 | ||||
| @ -66,107 +64,55 @@ function slice_by_16_tables(T) { | ||||
| 	for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); | ||||
| 	return out; | ||||
| } | ||||
| var TT = slice_by_16_tables(T); | ||||
| var TT = slice_by_16_tables(T0); | ||||
| var T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4]; | ||||
| var T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9]; | ||||
| var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; | ||||
| /*# charCodeAt is the best approach for binary strings */ | ||||
| function crc32_bstr(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	if(bstr.length > 10000) return crc32_bstr_16(bstr, seed); | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = bstr.length - 1; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	} | ||||
| 	if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1; | ||||
| 	for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| function crc32_bstr_16(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = bstr.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[bstr.charCodeAt(i++) ^ (C & 255)] ^ | ||||
| 		Te[bstr.charCodeAt(i++) ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[bstr.charCodeAt(i++) ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[bstr.charCodeAt(i++) ^ (C >>> 24)] ^ | ||||
| 		Tb[bstr.charCodeAt(i++)] ^ | ||||
| 		Ta[bstr.charCodeAt(i++)] ^ | ||||
| 		T9[bstr.charCodeAt(i++)] ^ | ||||
| 		T8[bstr.charCodeAt(i++)] ^ | ||||
| 		T7[bstr.charCodeAt(i++)] ^ | ||||
| 		T6[bstr.charCodeAt(i++)] ^ | ||||
| 		T5[bstr.charCodeAt(i++)] ^ | ||||
| 		T4[bstr.charCodeAt(i++)] ^ | ||||
| 		T3[bstr.charCodeAt(i++)] ^ | ||||
| 		T2[bstr.charCodeAt(i++)] ^ | ||||
| 		T1[bstr.charCodeAt(i++)] ^ | ||||
| 		T[bstr.charCodeAt(i++)]; | ||||
| 
 | ||||
| function crc32_buf(B/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0; | ||||
| 	for(; i < L;) C = | ||||
| 		Tf[B[i++] ^ (C & 255)] ^ | ||||
| 		Te[B[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[B[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[B[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ | ||||
| 		T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ | ||||
| 		T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf(buf/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	if(buf.length > 2000) return crc32_buf_16(buf, seed); | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = buf.length - 3; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_buf_16(buf/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = buf.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[buf[i++] ^ (C & 255)] ^ | ||||
| 		Te[buf[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[buf[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[buf[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[buf[i++]] ^ | ||||
| 		Ta[buf[i++]] ^ | ||||
| 		T9[buf[i++]] ^ | ||||
| 		T8[buf[i++]] ^ | ||||
| 		T7[buf[i++]] ^ | ||||
| 		T6[buf[i++]] ^ | ||||
| 		T5[buf[i++]] ^ | ||||
| 		T4[buf[i++]] ^ | ||||
| 		T3[buf[i++]] ^ | ||||
| 		T2[buf[i++]] ^ | ||||
| 		T1[buf[i++]] ^ | ||||
| 		T[buf[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*# much much faster to intertwine utf8 and crc, slower to slice by 8 or 16 */ | ||||
| function crc32_str(str/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1; | ||||
| 	for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { | ||||
| 		c = str.charCodeAt(i++); | ||||
| 		if(c < 0x80) { | ||||
| 			C = (C>>>8) ^ T[(C ^ c)&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C^c)&0xFF]; | ||||
| 		} else if(c < 0x800) { | ||||
| 			C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} else if(c >= 0xD800 && c < 0xE000) { | ||||
| 			c = (c&1023)+64; d = str.charCodeAt(i++)&1023; | ||||
| 			C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; | ||||
| 		} else { | ||||
| 			C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} | ||||
| 	} | ||||
| 	return C ^ -1; | ||||
| 	return ~C; | ||||
| } | ||||
| CRC32.table = T; | ||||
| CRC32.table = T0; | ||||
| // $FlowIgnore
 | ||||
| CRC32.bstr = crc32_bstr; | ||||
| // $FlowIgnore
 | ||||
|  | ||||
							
								
								
									
										113
									
								
								crc32.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										113
									
								
								crc32.js
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | ||||
| /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /* vim: set ts=2: */ | ||||
| /*exported CRC32 */ | ||||
| var CRC32; | ||||
| @ -23,8 +23,7 @@ var CRC32; | ||||
| 	/*eslint-enable */ | ||||
| 	/*jshint ignore:end */ | ||||
| }(function(CRC32) { | ||||
| CRC32.version = '1.2.0'; | ||||
| /* see perf/crc32table.js */ | ||||
| CRC32.version = '1.2.1'; | ||||
| /*global Int32Array */ | ||||
| function signed_crc_table() { | ||||
| 	var c = 0, table = new Array(256); | ||||
| @ -45,7 +44,7 @@ function signed_crc_table() { | ||||
| 	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; | ||||
| } | ||||
| 
 | ||||
| var T = signed_crc_table(); | ||||
| var T0 = signed_crc_table(); | ||||
| function slice_by_16_tables(T) { | ||||
| 	var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; | ||||
| 
 | ||||
| @ -58,105 +57,55 @@ function slice_by_16_tables(T) { | ||||
| 	for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); | ||||
| 	return out; | ||||
| } | ||||
| var TT = slice_by_16_tables(T); | ||||
| var TT = slice_by_16_tables(T0); | ||||
| var T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4]; | ||||
| var T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9]; | ||||
| var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; | ||||
| function crc32_bstr(bstr, seed) { | ||||
| 	if(bstr.length > 10000) return crc32_bstr_16(bstr, seed); | ||||
| 	var C = seed ^ -1, L = bstr.length - 1; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	} | ||||
| 	if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_bstr_16(bstr, seed) { | ||||
| 	var C = seed ^ -1, L = bstr.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[bstr.charCodeAt(i++) ^ (C & 255)] ^ | ||||
| 		Te[bstr.charCodeAt(i++) ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[bstr.charCodeAt(i++) ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[bstr.charCodeAt(i++) ^ (C >>> 24)] ^ | ||||
| 		Tb[bstr.charCodeAt(i++)] ^ | ||||
| 		Ta[bstr.charCodeAt(i++)] ^ | ||||
| 		T9[bstr.charCodeAt(i++)] ^ | ||||
| 		T8[bstr.charCodeAt(i++)] ^ | ||||
| 		T7[bstr.charCodeAt(i++)] ^ | ||||
| 		T6[bstr.charCodeAt(i++)] ^ | ||||
| 		T5[bstr.charCodeAt(i++)] ^ | ||||
| 		T4[bstr.charCodeAt(i++)] ^ | ||||
| 		T3[bstr.charCodeAt(i++)] ^ | ||||
| 		T2[bstr.charCodeAt(i++)] ^ | ||||
| 		T1[bstr.charCodeAt(i++)] ^ | ||||
| 		T[bstr.charCodeAt(i++)]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	var C = seed ^ -1; | ||||
| 	for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf(buf, seed) { | ||||
| 	if(buf.length > 2000) return crc32_buf_16(buf, seed); | ||||
| 	var C = seed ^ -1, L = buf.length - 3; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_buf_16(buf, seed) { | ||||
| 	var C = seed ^ -1, L = buf.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[buf[i++] ^ (C & 255)] ^ | ||||
| 		Te[buf[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[buf[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[buf[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[buf[i++]] ^ | ||||
| 		Ta[buf[i++]] ^ | ||||
| 		T9[buf[i++]] ^ | ||||
| 		T8[buf[i++]] ^ | ||||
| 		T7[buf[i++]] ^ | ||||
| 		T6[buf[i++]] ^ | ||||
| 		T5[buf[i++]] ^ | ||||
| 		T4[buf[i++]] ^ | ||||
| 		T3[buf[i++]] ^ | ||||
| 		T2[buf[i++]] ^ | ||||
| 		T1[buf[i++]] ^ | ||||
| 		T[buf[i++]]; | ||||
| function crc32_buf(B, seed) { | ||||
| 	var C = seed ^ -1, L = B.length - 15, i = 0; | ||||
| 	for(; i < L;) C = | ||||
| 		Tf[B[i++] ^ (C & 255)] ^ | ||||
| 		Te[B[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[B[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[B[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ | ||||
| 		T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ | ||||
| 		T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function crc32_str(str, seed) { | ||||
| 	var C = seed ^ -1; | ||||
| 	for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { | ||||
| 		c = str.charCodeAt(i++); | ||||
| 		if(c < 0x80) { | ||||
| 			C = (C>>>8) ^ T[(C ^ c)&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C^c)&0xFF]; | ||||
| 		} else if(c < 0x800) { | ||||
| 			C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} else if(c >= 0xD800 && c < 0xE000) { | ||||
| 			c = (c&1023)+64; d = str.charCodeAt(i++)&1023; | ||||
| 			C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; | ||||
| 		} else { | ||||
| 			C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} | ||||
| 	} | ||||
| 	return C ^ -1; | ||||
| 	return ~C; | ||||
| } | ||||
| CRC32.table = T; | ||||
| CRC32.table = T0; | ||||
| // $FlowIgnore
 | ||||
| CRC32.bstr = crc32_bstr; | ||||
| // $FlowIgnore
 | ||||
|  | ||||
							
								
								
									
										134
									
								
								crc32c.flow.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										134
									
								
								crc32c.flow.js
									
									
									
									
									
								
							| @ -1,9 +1,9 @@ | ||||
| /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /* vim: set ts=2: */ | ||||
| /*exported CRC32 */ | ||||
| /*exported CRC32C */ | ||||
| /*:: declare var DO_NOT_EXPORT_CRC:?boolean; */ | ||||
| /*:: declare function define(cb:()=>any):void; */ | ||||
| var CRC32/*:CRC32Module*/; | ||||
| var CRC32C/*:CRC32Module*/; | ||||
| (function (factory/*:(a:any)=>void*/)/*:void*/ { | ||||
| 	/*jshint ignore:start */ | ||||
| 	/*eslint-disable */ | ||||
| @ -17,21 +17,20 @@ var CRC32/*:CRC32Module*/; | ||||
| 				return module; | ||||
| 			}); | ||||
| 		} else { | ||||
| 			factory(CRC32 = /*::(*/{}/*:: :any)*/); | ||||
| 			factory(CRC32C = /*::(*/{}/*:: :any)*/); | ||||
| 		} | ||||
| 	} else { | ||||
| 		factory(CRC32 = /*::(*/{}/*:: :any)*/); | ||||
| 		factory(CRC32C = /*::(*/{}/*:: :any)*/); | ||||
| 	} | ||||
| 	/*eslint-enable */ | ||||
| 	/*jshint ignore:end */ | ||||
| }(function(CRC32/*:CRC32Module*/) { | ||||
| CRC32.version = '1.2.0'; | ||||
| }(function(CRC32C/*:CRC32Module*/) { | ||||
| CRC32C.version = '1.2.1'; | ||||
| /*:: | ||||
| type CRC32Type = number; | ||||
| type ABuf = Array<number> | Buffer | Uint8Array; | ||||
| type CRC32TableType = Array<number> | Int32Array; | ||||
| */ | ||||
| /* see perf/crc32table.js */ | ||||
| /*global Int32Array */ | ||||
| function signed_crc_table()/*:CRC32TableType*/ { | ||||
| 	var c = 0, table/*:Array<number>*/ = new Array(256); | ||||
| @ -52,8 +51,7 @@ function signed_crc_table()/*:CRC32TableType*/ { | ||||
| 	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; | ||||
| } | ||||
| 
 | ||||
| var T = signed_crc_table(); | ||||
| /*# slice by 16 tables */ | ||||
| var T0 = signed_crc_table(); | ||||
| function slice_by_16_tables(T) { | ||||
| 	var c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; | ||||
| 
 | ||||
| @ -66,111 +64,59 @@ function slice_by_16_tables(T) { | ||||
| 	for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); | ||||
| 	return out; | ||||
| } | ||||
| var TT = slice_by_16_tables(T); | ||||
| var TT = slice_by_16_tables(T0); | ||||
| var T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4]; | ||||
| var T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9]; | ||||
| var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; | ||||
| /*# charCodeAt is the best approach for binary strings */ | ||||
| function crc32_bstr(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	if(bstr.length > 10000) return crc32_bstr_16(bstr, seed); | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = bstr.length - 1; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	} | ||||
| 	if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1; | ||||
| 	for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| function crc32_bstr_16(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = bstr.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[bstr.charCodeAt(i++) ^ (C & 255)] ^ | ||||
| 		Te[bstr.charCodeAt(i++) ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[bstr.charCodeAt(i++) ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[bstr.charCodeAt(i++) ^ (C >>> 24)] ^ | ||||
| 		Tb[bstr.charCodeAt(i++)] ^ | ||||
| 		Ta[bstr.charCodeAt(i++)] ^ | ||||
| 		T9[bstr.charCodeAt(i++)] ^ | ||||
| 		T8[bstr.charCodeAt(i++)] ^ | ||||
| 		T7[bstr.charCodeAt(i++)] ^ | ||||
| 		T6[bstr.charCodeAt(i++)] ^ | ||||
| 		T5[bstr.charCodeAt(i++)] ^ | ||||
| 		T4[bstr.charCodeAt(i++)] ^ | ||||
| 		T3[bstr.charCodeAt(i++)] ^ | ||||
| 		T2[bstr.charCodeAt(i++)] ^ | ||||
| 		T1[bstr.charCodeAt(i++)] ^ | ||||
| 		T[bstr.charCodeAt(i++)]; | ||||
| 
 | ||||
| function crc32_buf(B/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0; | ||||
| 	for(; i < L;) C = | ||||
| 		Tf[B[i++] ^ (C & 255)] ^ | ||||
| 		Te[B[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[B[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[B[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ | ||||
| 		T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ | ||||
| 		T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf(buf/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	if(buf.length > 2000) return crc32_buf_16(buf, seed); | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = buf.length - 3; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_buf_16(buf/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1, L = buf.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[buf[i++] ^ (C & 255)] ^ | ||||
| 		Te[buf[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[buf[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[buf[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[buf[i++]] ^ | ||||
| 		Ta[buf[i++]] ^ | ||||
| 		T9[buf[i++]] ^ | ||||
| 		T8[buf[i++]] ^ | ||||
| 		T7[buf[i++]] ^ | ||||
| 		T6[buf[i++]] ^ | ||||
| 		T5[buf[i++]] ^ | ||||
| 		T4[buf[i++]] ^ | ||||
| 		T3[buf[i++]] ^ | ||||
| 		T2[buf[i++]] ^ | ||||
| 		T1[buf[i++]] ^ | ||||
| 		T[buf[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*# much much faster to intertwine utf8 and crc, slower to slice by 8 or 16 */ | ||||
| function crc32_str(str/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ { | ||||
| 	var C = seed/*:: ? 0 : 0 */ ^ -1; | ||||
| 	for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { | ||||
| 		c = str.charCodeAt(i++); | ||||
| 		if(c < 0x80) { | ||||
| 			C = (C>>>8) ^ T[(C ^ c)&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C^c)&0xFF]; | ||||
| 		} else if(c < 0x800) { | ||||
| 			C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} else if(c >= 0xD800 && c < 0xE000) { | ||||
| 			c = (c&1023)+64; d = str.charCodeAt(i++)&1023; | ||||
| 			C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; | ||||
| 		} else { | ||||
| 			C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} | ||||
| 	} | ||||
| 	return C ^ -1; | ||||
| 	return ~C; | ||||
| } | ||||
| CRC32.table = T; | ||||
| CRC32C.table = T0; | ||||
| // $FlowIgnore
 | ||||
| CRC32.bstr = crc32_bstr; | ||||
| CRC32C.bstr = crc32_bstr; | ||||
| // $FlowIgnore
 | ||||
| CRC32.buf = crc32_buf; | ||||
| CRC32C.buf = crc32_buf; | ||||
| // $FlowIgnore
 | ||||
| CRC32.str = crc32_str; | ||||
| CRC32C.str = crc32_str; | ||||
| })); | ||||
|  | ||||
							
								
								
									
										129
									
								
								crc32c.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										129
									
								
								crc32c.js
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /* vim: set ts=2: */ | ||||
| /*exported CRC32 */ | ||||
| var CRC32; | ||||
| /*exported CRC32C */ | ||||
| var CRC32C; | ||||
| (function (factory) { | ||||
| 	/*jshint ignore:start */ | ||||
| 	/*eslint-disable */ | ||||
| @ -15,16 +15,15 @@ var CRC32; | ||||
| 				return module; | ||||
| 			}); | ||||
| 		} else { | ||||
| 			factory(CRC32 = {}); | ||||
| 			factory(CRC32C = {}); | ||||
| 		} | ||||
| 	} else { | ||||
| 		factory(CRC32 = {}); | ||||
| 		factory(CRC32C = {}); | ||||
| 	} | ||||
| 	/*eslint-enable */ | ||||
| 	/*jshint ignore:end */ | ||||
| }(function(CRC32) { | ||||
| CRC32.version = '1.2.0'; | ||||
| /* see perf/crc32table.js */ | ||||
| }(function(CRC32C) { | ||||
| CRC32C.version = '1.2.1'; | ||||
| /*global Int32Array */ | ||||
| function signed_crc_table() { | ||||
| 	var c = 0, table = new Array(256); | ||||
| @ -45,7 +44,7 @@ function signed_crc_table() { | ||||
| 	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; | ||||
| } | ||||
| 
 | ||||
| var T = signed_crc_table(); | ||||
| var T0 = signed_crc_table(); | ||||
| function slice_by_16_tables(T) { | ||||
| 	var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; | ||||
| 
 | ||||
| @ -58,109 +57,59 @@ function slice_by_16_tables(T) { | ||||
| 	for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); | ||||
| 	return out; | ||||
| } | ||||
| var TT = slice_by_16_tables(T); | ||||
| var TT = slice_by_16_tables(T0); | ||||
| var T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4]; | ||||
| var T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9]; | ||||
| var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; | ||||
| function crc32_bstr(bstr, seed) { | ||||
| 	if(bstr.length > 10000) return crc32_bstr_16(bstr, seed); | ||||
| 	var C = seed ^ -1, L = bstr.length - 1; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	} | ||||
| 	if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_bstr_16(bstr, seed) { | ||||
| 	var C = seed ^ -1, L = bstr.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[bstr.charCodeAt(i++) ^ (C & 255)] ^ | ||||
| 		Te[bstr.charCodeAt(i++) ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[bstr.charCodeAt(i++) ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[bstr.charCodeAt(i++) ^ (C >>> 24)] ^ | ||||
| 		Tb[bstr.charCodeAt(i++)] ^ | ||||
| 		Ta[bstr.charCodeAt(i++)] ^ | ||||
| 		T9[bstr.charCodeAt(i++)] ^ | ||||
| 		T8[bstr.charCodeAt(i++)] ^ | ||||
| 		T7[bstr.charCodeAt(i++)] ^ | ||||
| 		T6[bstr.charCodeAt(i++)] ^ | ||||
| 		T5[bstr.charCodeAt(i++)] ^ | ||||
| 		T4[bstr.charCodeAt(i++)] ^ | ||||
| 		T3[bstr.charCodeAt(i++)] ^ | ||||
| 		T2[bstr.charCodeAt(i++)] ^ | ||||
| 		T1[bstr.charCodeAt(i++)] ^ | ||||
| 		T[bstr.charCodeAt(i++)]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	var C = seed ^ -1; | ||||
| 	for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf(buf, seed) { | ||||
| 	if(buf.length > 2000) return crc32_buf_16(buf, seed); | ||||
| 	var C = seed ^ -1, L = buf.length - 3; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| function crc32_buf_16(buf, seed) { | ||||
| 	var C = seed ^ -1, L = buf.length - 15; | ||||
| 	for(var i = 0; i < L;) C = | ||||
| 		Tf[buf[i++] ^ (C & 255)] ^ | ||||
| 		Te[buf[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[buf[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[buf[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[buf[i++]] ^ | ||||
| 		Ta[buf[i++]] ^ | ||||
| 		T9[buf[i++]] ^ | ||||
| 		T8[buf[i++]] ^ | ||||
| 		T7[buf[i++]] ^ | ||||
| 		T6[buf[i++]] ^ | ||||
| 		T5[buf[i++]] ^ | ||||
| 		T4[buf[i++]] ^ | ||||
| 		T3[buf[i++]] ^ | ||||
| 		T2[buf[i++]] ^ | ||||
| 		T1[buf[i++]] ^ | ||||
| 		T[buf[i++]]; | ||||
| function crc32_buf(B, seed) { | ||||
| 	var C = seed ^ -1, L = B.length - 15, i = 0; | ||||
| 	for(; i < L;) C = | ||||
| 		Tf[B[i++] ^ (C & 255)] ^ | ||||
| 		Te[B[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[B[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[B[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ | ||||
| 		T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ | ||||
| 		T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function crc32_str(str, seed) { | ||||
| 	var C = seed ^ -1; | ||||
| 	for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { | ||||
| 		c = str.charCodeAt(i++); | ||||
| 		if(c < 0x80) { | ||||
| 			C = (C>>>8) ^ T[(C ^ c)&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C^c)&0xFF]; | ||||
| 		} else if(c < 0x800) { | ||||
| 			C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} else if(c >= 0xD800 && c < 0xE000) { | ||||
| 			c = (c&1023)+64; d = str.charCodeAt(i++)&1023; | ||||
| 			C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; | ||||
| 		} else { | ||||
| 			C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} | ||||
| 	} | ||||
| 	return C ^ -1; | ||||
| 	return ~C; | ||||
| } | ||||
| CRC32.table = T; | ||||
| CRC32C.table = T0; | ||||
| // $FlowIgnore
 | ||||
| CRC32.bstr = crc32_bstr; | ||||
| CRC32C.bstr = crc32_bstr; | ||||
| // $FlowIgnore
 | ||||
| CRC32.buf = crc32_buf; | ||||
| CRC32C.buf = crc32_buf; | ||||
| // $FlowIgnore
 | ||||
| CRC32.str = crc32_str; | ||||
| CRC32C.str = crc32_str; | ||||
| })); | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ | ||||
| /* vim: set ts=2: */ | ||||
| /*exported CRC32 */ | ||||
| var CRC32; | ||||
| @ -23,8 +23,7 @@ var CRC32; | ||||
| 	/*eslint-enable */ | ||||
| 	/*jshint ignore:end */ | ||||
| }(function(CRC32) { | ||||
| CRC32.version = '1.2.0'; | ||||
| /* see perf/crc32table.js */ | ||||
| CRC32.version = '1.2.1'; | ||||
| /*global Int32Array */ | ||||
| function signed_crc_table() { | ||||
| 	var c = 0, table = new Array(256); | ||||
| @ -45,70 +44,68 @@ function signed_crc_table() { | ||||
| 	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; | ||||
| } | ||||
| 
 | ||||
| var T = signed_crc_table(); | ||||
| var T0 = signed_crc_table(); | ||||
| function slice_by_16_tables(T) { | ||||
| 	var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; | ||||
| 
 | ||||
| 	for(n = 0; n != 256; ++n) table[n] = T[n]; | ||||
| 	for(n = 0; n != 256; ++n) { | ||||
| 		v = T[n]; | ||||
| 		for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; | ||||
| 	} | ||||
| 	var out = []; | ||||
| 	for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); | ||||
| 	return out; | ||||
| } | ||||
| var TT = slice_by_16_tables(T0); | ||||
| var T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4]; | ||||
| var T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9]; | ||||
| var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; | ||||
| function crc32_bstr(bstr, seed) { | ||||
| 	var C = seed ^ -1, L = bstr.length - 1; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	} | ||||
| 	if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; | ||||
| 	return C ^ -1; | ||||
| 	var C = seed ^ -1; | ||||
| 	for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf(buf, seed) { | ||||
| 	if(buf.length > 10000) return crc32_buf_8(buf, seed); | ||||
| 	var C = seed ^ -1, L = buf.length - 3; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| } | ||||
| 
 | ||||
| function crc32_buf_8(buf, seed) { | ||||
| 	var C = seed ^ -1, L = buf.length - 7; | ||||
| 	for(var i = 0; i < L;) { | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 		C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	} | ||||
| 	while(i < L+7) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; | ||||
| 	return C ^ -1; | ||||
| function crc32_buf(B, seed) { | ||||
| 	var C = seed ^ -1, L = B.length - 15, i = 0; | ||||
| 	for(; i < L;) C = | ||||
| 		Tf[B[i++] ^ (C & 255)] ^ | ||||
| 		Te[B[i++] ^ ((C >> 8) & 255)] ^ | ||||
| 		Td[B[i++] ^ ((C >> 16) & 255)] ^ | ||||
| 		Tc[B[i++] ^ (C >>> 24)] ^ | ||||
| 		Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ | ||||
| 		T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ | ||||
| 		T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; | ||||
| 	L += 15; | ||||
| 	while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; | ||||
| 	return ~C; | ||||
| } | ||||
| 
 | ||||
| function crc32_str(str, seed) { | ||||
| 	var C = seed ^ -1; | ||||
| 	for(var i = 0, L=str.length, c, d; i < L;) { | ||||
| 	for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { | ||||
| 		c = str.charCodeAt(i++); | ||||
| 		if(c < 0x80) { | ||||
| 			C = (C>>>8) ^ T[(C ^ c)&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C^c)&0xFF]; | ||||
| 		} else if(c < 0x800) { | ||||
| 			C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} else if(c >= 0xD800 && c < 0xE000) { | ||||
| 			c = (c&1023)+64; d = str.charCodeAt(i++)&1023; | ||||
| 			C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; | ||||
| 		} else { | ||||
| 			C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; | ||||
| 			C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; | ||||
| 		} | ||||
| 	} | ||||
| 	return C ^ -1; | ||||
| 	return ~C; | ||||
| } | ||||
| CRC32.table = T; | ||||
| CRC32.table = T0; | ||||
| // $FlowIgnore
 | ||||
| CRC32.bstr = crc32_bstr; | ||||
| // $FlowIgnore
 | ||||
|  | ||||
| @ -35,8 +35,8 @@ type _CB = {(data:Buffer):void;}; | ||||
| declare module 'concat-stream' {declare function exports(f:_CB):stream$Duplex;}; | ||||
| declare module 'exit-on-epipe' {}; | ||||
| 
 | ||||
| declare module 'crc-32' { declare var exports:CRC32Module;  }; | ||||
| declare module '../' { declare var exports:CRC32Module; }; | ||||
| declare module 'crc-32' { declare module.exports:CRC32Module;  }; | ||||
| declare module '../' { declare module.exports:CRC32Module; }; | ||||
| 
 | ||||
| declare module 'printj' { | ||||
|   declare function sprintf(fmt:string, ...args:any):string; | ||||
|  | ||||
| @ -20,6 +20,14 @@ function msieversion() | ||||
| 	return parseInt (ua.substring (msie+5, ua.indexOf (".", msie ))); | ||||
| } | ||||
| 
 | ||||
| var Buffer_from = function(){}; | ||||
| 
 | ||||
| if(typeof Buffer !== 'undefined') { | ||||
| 	var nbfs = !Buffer.from; | ||||
| 	if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } | ||||
| 	Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer); | ||||
| } | ||||
| 
 | ||||
| describe('crc32 table', function() { | ||||
| 	it('should match fixed table', function() { | ||||
| 		var overflow = 0; | ||||
| @ -40,7 +48,7 @@ describe('crc32 bits', function() { | ||||
| 		it(msg, function() { | ||||
| 			if(i[2] === 1) assert.equal(X.bstr(i[0]), L); | ||||
| 			assert.equal(X.str(i[0]), i[1]|0); | ||||
| 			if(typeof Buffer !== 'undefined') assert.equal(X.buf(new Buffer(i[0])), L); | ||||
| 			if(typeof Buffer !== 'undefined') assert.equal(X.buf(Buffer_from(i[0])), L); | ||||
| 			var len = i[0].length, step = len < 20000 ? 1 : len < 50000 ? Math.ceil(len / 20000) : Math.ceil(len / 2000); | ||||
| 			for(var x = 0; x < len; x += step) { | ||||
| 				if(i[0].charCodeAt(x) >= 0xD800 && i[0].charCodeAt(x) < 0xE000) continue; | ||||
| @ -51,7 +59,7 @@ describe('crc32 bits', function() { | ||||
| 				var strcrc = X.str(i[0].substr(x), X.str(i[0].substr(0, x))); | ||||
| 				assert.equal(strcrc, i[1]|0); | ||||
| 				if(typeof Buffer !== 'undefined') { | ||||
| 					var buf = new Buffer(i[0]); | ||||
| 					var buf = Buffer_from(i[0]); | ||||
| 					var bufcrc = X.buf(buf.slice(x), X.buf(buf.slice(0, x))); | ||||
| 					assert.equal(bufcrc, L); | ||||
| 				} | ||||
| @ -74,9 +82,9 @@ if(typeof require !== 'undefined') describe("unicode", function() { | ||||
| 				var cc = corpus[ucidx], dd = X.str(c); | ||||
| 				assert.equal(dd, cc, ":" + ucidx + ":" + c + ":" + cc + ":" + dd); | ||||
| 				if(typeof Buffer !== 'undefined') { | ||||
| 					var ee = X.buf(new Buffer(c, "utf8")); | ||||
| 					var ee = X.buf(Buffer_from(c, "utf8")); | ||||
| 					assert.equal(ee, cc, ":" + ucidx + ":" + c + ":" + cc + ":" + ee); | ||||
| 					var ff = X.bstr(String.fromCharCode.apply(null, new Buffer(c, "utf8"))); | ||||
| 					var ff = X.bstr(String.fromCharCode.apply(null, Buffer_from(c, "utf8"))); | ||||
| 					assert.equal(ff, cc, ":" + ucidx + ":" + c + ":" + cc + ":" + ff); | ||||
| 				} | ||||
| 			}; | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"name": "crc-32", | ||||
| 	"version": "1.2.0", | ||||
| 	"version": "1.2.1", | ||||
| 	"author": "sheetjs", | ||||
| 	"description": "Pure-JS CRC-32", | ||||
| 	"keywords": [ "crc", "crc32", "checksum" ], | ||||
| @ -35,7 +35,7 @@ | ||||
| 			"pattern": "crc32.js" | ||||
| 		} | ||||
| 	}, | ||||
| 	"homepage": "http://sheetjs.com/opensource", | ||||
| 	"homepage": "https://sheetjs.com/", | ||||
| 	"files": ["crc32.js", "crc32c.js", "bin/crc32.njs", "LICENSE", "README.md", "types/index.d.ts", "types/*.json"], | ||||
| 	"bugs": { "url": "https://github.com/SheetJS/js-crc32/issues" }, | ||||
| 	"license": "Apache-2.0", | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user