forked from sheetjs/sheetjs
		
	version bump 0.11.8: CFB 1.0.0
- travis node 9 test - demo refresh
This commit is contained in:
		
							parent
							
								
									1ab13069cb
								
							
						
					
					
						commit
						3f6f8e93ed
					
				| @ -31,6 +31,7 @@ tmp | ||||
| *.exe | ||||
| *.img | ||||
| .gitignore | ||||
| .gitattributes | ||||
| .fossaignore | ||||
| .spelling | ||||
| .eslintrc | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| language: node_js | ||||
| node_js: | ||||
|   - "9" | ||||
|   - "8" | ||||
|   - "7" | ||||
|   - "6" | ||||
| @ -9,16 +10,18 @@ matrix: | ||||
|       env: TZ="America/New_York" FMTS=misc | ||||
|     - node_js: "8" | ||||
|       env: TZ="America/Los_Angeles" | ||||
|     - node_js: "6" | ||||
|       env: TZ="Europe/London" FMTS=misc | ||||
|     - node_js: "8" | ||||
|       env: TZ="Europe/London" FMTS=misc | ||||
|     - node_js: "6" | ||||
|       env: TZ="Europe/Berlin" | ||||
|     - node_js: "6" | ||||
|       env: TZ="Asia/Kolkata" FMTS=misc | ||||
|     - node_js: "7" | ||||
|     - node_js: "9" | ||||
|       env: TZ="Asia/Shanghai" | ||||
|     - node_js: "8" | ||||
|       env: TZ="Asia/Seoul" FMTS=misc | ||||
|     - node_js: "7" | ||||
|       env: TZ="America/Cancun" FMTS=misc | ||||
| 
 | ||||
|     - node_js: "5" | ||||
|       env: TZ="America/Anchorage" FMTS=misc | ||||
|  | ||||
| @ -188,7 +188,7 @@ The [`demos` directory](demos/) includes sample projects for: | ||||
| 
 | ||||
| **Frameworks and APIs** | ||||
| - [`angular 1.x`](demos/angular/) | ||||
| - [`angular 2.x / 4.x`](demos/angular2/) | ||||
| - [`angular 2.x / 4.x / 5.x`](demos/angular2/) | ||||
| - [`meteor`](demos/meteor/) | ||||
| - [`react and react-native`](demos/react/) | ||||
| - [`vue 2.x and weex`](demos/vue/) | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| XLSX.version = '0.11.7'; | ||||
| XLSX.version = '0.11.8'; | ||||
|  | ||||
| @ -38,7 +38,7 @@ type CFBFiles = {[n:string]:CFBEntry}; | ||||
| /* [MS-CFB] v20130118 */ | ||||
| var CFB = (function _CFB(){ | ||||
| var exports/*:CFBModule*/ = /*::(*/{}/*:: :any)*/; | ||||
| exports.version = '0.13.2'; | ||||
| exports.version = '1.0.0'; | ||||
| /* [MS-CFB] 2.6.4 */ | ||||
| function namecmp(l/*:string*/, r/*:string*/)/*:number*/ { | ||||
| 	var L = l.split("/"), R = r.split("/"); | ||||
| @ -141,16 +141,15 @@ sector_list.fat_addrs = fat_addrs; | ||||
| sector_list.ssz = ssz; | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| var files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [], FullPathDir = {}; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex); | ||||
| var files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = []; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); | ||||
| 
 | ||||
| build_full_paths(FileIndex, FullPathDir, FullPaths, Paths); | ||||
| build_full_paths(FileIndex, FullPaths, Paths); | ||||
| Paths.shift(); | ||||
| 
 | ||||
| var o = { | ||||
| 	FileIndex: FileIndex, | ||||
| 	FullPaths: FullPaths, | ||||
| 	FullPathDir: FullPathDir | ||||
| 	FullPaths: FullPaths | ||||
| }; | ||||
| 
 | ||||
| // $FlowIgnore
 | ||||
| @ -202,7 +201,7 @@ function sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array<RawBytes>*/ { | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.4 Red-Black Tree */ | ||||
| function build_full_paths(FI/*:CFBFileIndex*/, FPD/*:CFBFullPathDir*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ { | ||||
| function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ { | ||||
| 	var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; | ||||
| 	var dad/*:Array<number>*/ = [], q/*:Array<number>*/ = []; | ||||
| 
 | ||||
| @ -238,10 +237,23 @@ function build_full_paths(FI/*:CFBFileIndex*/, FPD/*:CFBFullPathDir*/, FP/*:Arra | ||||
| 	FP[0] += "/"; | ||||
| 	for(i=1; i < pl; ++i) { | ||||
| 		if(FI[i].type !== 2 /* stream */) FP[i] += "/"; | ||||
| 		FPD[FP[i]] = FI[i]; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ { | ||||
| 	var start = entry.start, size = entry.size; | ||||
| 	//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);
 | ||||
| 	var o = []; | ||||
| 	var idx = start; | ||||
| 	while(mini && size > 0 && idx >= 0) { | ||||
| 		o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); | ||||
| 		size -= MSSZ; | ||||
| 		idx = __readInt32LE(mini, idx * 4); | ||||
| 	} | ||||
| 	if(o.length === 0) return (new_buf(0)/*:any*/); | ||||
| 	return (bconcat(o).slice(0, entry.size)/*:any*/); | ||||
| } | ||||
| 
 | ||||
| /** Chase down the rest of the DIFAT chain to build a comprehensive list | ||||
|     DIFAT chains by storing the next sector number as the last 32 bits */ | ||||
| function sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array<RawBytes>*/, ssz/*:number*/, fat_addrs)/*:void*/ { | ||||
| @ -303,7 +315,7 @@ function make_sector_list(sectors/*:Array<RawBytes>*/, dir_start/*:number*/, fat | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex) { | ||||
| function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex, mini) { | ||||
| 	var minifat_store = 0, pl = (Paths.length?2:0); | ||||
| 	var sector = sector_list[dir_start].data; | ||||
| 	var i = 0, namelen = 0, name; | ||||
| @ -345,7 +357,7 @@ function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sector | ||||
| 		} else { | ||||
| 			o.storage = 'minifat'; | ||||
| 			if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { | ||||
| 				o.content = (sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size)/*:any*/); | ||||
| 				o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); | ||||
| 				prep_blob(o.content, 0); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| @ -19,7 +19,7 @@ can be installed with Bash on Windows or with `cygwin`. | ||||
| 
 | ||||
| **Frameworks and APIs** | ||||
| - [`angular 1.x`](angular/) | ||||
| - [`angular 2.x / 4.x`](angular2/) | ||||
| - [`angular 2.x / 4.x / 5.x`](angular2/) | ||||
| - [`meteor`](meteor/) | ||||
| - [`react and react-native`](react/) | ||||
| - [`vue 2.x and weex`](vue/) | ||||
|  | ||||
| @ -14,3 +14,10 @@ angular: | ||||
| 	if [ ! -e node_modules/xlsx ]; then cd node_modules; ln -s ../../../ xlsx; cd -; fi | ||||
| 	ng build | ||||
| 
 | ||||
| 	# Test Angular5 build | ||||
| 	cp package.json-angular5 package.json | ||||
| 	npm install | ||||
| 	if [ ! -e node_modules ]; then mkdir node_modules; fi | ||||
| 	if [ ! -e node_modules/xlsx ]; then cd node_modules; ln -s ../../../ xlsx; cd -; fi | ||||
| 	ng build | ||||
| 
 | ||||
|  | ||||
| @ -67,27 +67,20 @@ saveAs(new Blob([s2ab(wbout)]), 'SheetJS.xlsx'); | ||||
| 
 | ||||
| ## Switching between Angular versions | ||||
| 
 | ||||
| Modules that work with Angular 2 largely work as-is with Angular 4.  Switching | ||||
| Modules that work with Angular 2 largely work as-is with Angular 4+.  Switching | ||||
| between versions is mostly a matter of installing the correct version of the | ||||
| core and associated modules.  This demo includes a `package.json` for Angular 2 | ||||
| and another `package.json` for Angular 4. | ||||
| core and associated modules.  This demo includes `package.json-angular#` files | ||||
| for Angular 2, Angular 4, and Angular 5 | ||||
| 
 | ||||
| Switching to Angular 2 is as simple as: | ||||
| To test a particular Angular version, overwrite `package.json`: | ||||
| 
 | ||||
| ```bash | ||||
| # switch to Angular 2 | ||||
| $ cp package.json-angular2 package.json | ||||
| $ npm install | ||||
| $ ng serve | ||||
| ``` | ||||
| 
 | ||||
| Switching to Angular 4 is as simple as: | ||||
| 
 | ||||
| ```bash | ||||
| $ cp package.json-angular4 package.json | ||||
| $ npm install | ||||
| $ ng serve | ||||
| ``` | ||||
| 
 | ||||
| ## XLSX Symbolic Link | ||||
| 
 | ||||
| In this tree, `node_modules/xlsx` is a link pointing back to the root.  This | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| { | ||||
|   "name": "angular2", | ||||
|   "name": "angular5", | ||||
|   "version": "0.0.0", | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
| @ -9,27 +9,31 @@ | ||||
|   }, | ||||
|   "private": true, | ||||
|   "dependencies": { | ||||
|     "@angular/animations": "^4.0.0", | ||||
|     "@angular/common": "^4.0.0", | ||||
|     "@angular/compiler": "^4.0.0", | ||||
|     "@angular/core": "^4.0.0", | ||||
|     "@angular/forms": "^4.0.0", | ||||
|     "@angular/http": "^4.0.0", | ||||
|     "@angular/platform-browser": "^4.0.0", | ||||
|     "@angular/platform-browser-dynamic": "^4.0.0", | ||||
|     "@angular/router": "^4.0.0", | ||||
|     "@angular/animations": "^5.0.0", | ||||
|     "@angular/common": "^5.0.0", | ||||
|     "@angular/compiler": "^5.0.0", | ||||
| 
 | ||||
|     "@angular/core": "^5.0.0", | ||||
|     "@angular/forms": "^5.0.0", | ||||
|     "@angular/http": "^5.0.0", | ||||
|     "@angular/platform-browser": "^5.0.0", | ||||
|     "@angular/platform-browser-dynamic": "^5.0.0", | ||||
| 
 | ||||
|     "@angular/router": "^5.0.0", | ||||
|     "core-js": "^2.4.1", | ||||
|     "rxjs": "^5.1.0", | ||||
|     "zone.js": "^0.8.4", | ||||
| 
 | ||||
|     "rxjs": "^5.5.2", | ||||
| 
 | ||||
|     "zone.js": "^0.8.14", | ||||
|     "file-saver": "^1.3.3" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@angular/cli": "1.1.2", | ||||
|     "@angular/compiler-cli": "^4.0.0", | ||||
|     "@angular/language-service": "^4.0.0", | ||||
|     "@angular/cli": "1.5.0", | ||||
|     "@angular/compiler-cli": "^5.0.0", | ||||
|     "@angular/language-service": "^5.0.0", | ||||
|     "@types/node": "~6.0.60", | ||||
|     "ts-node": "~3.0.4", | ||||
|     "tslint": "~5.3.2", | ||||
|     "typescript": "~2.3.3" | ||||
|     "ts-node": "~3.2.0", | ||||
|     "tslint": "~5.7.0", | ||||
|     "typescript": "~2.4.2" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| { | ||||
|   "name": "angular2", | ||||
|   "name": "angular4", | ||||
|   "version": "0.0.0", | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|  | ||||
							
								
								
									
										39
									
								
								demos/angular2/package.json-angular5
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										39
									
								
								demos/angular2/package.json-angular5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| { | ||||
|   "name": "angular5", | ||||
|   "version": "0.0.0", | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "ng": "ng", | ||||
|     "start": "ng serve", | ||||
|     "build": "ng build" | ||||
|   }, | ||||
|   "private": true, | ||||
|   "dependencies": { | ||||
|     "@angular/animations": "^5.0.0", | ||||
|     "@angular/common": "^5.0.0", | ||||
|     "@angular/compiler": "^5.0.0", | ||||
| 
 | ||||
|     "@angular/core": "^5.0.0", | ||||
|     "@angular/forms": "^5.0.0", | ||||
|     "@angular/http": "^5.0.0", | ||||
|     "@angular/platform-browser": "^5.0.0", | ||||
|     "@angular/platform-browser-dynamic": "^5.0.0", | ||||
| 
 | ||||
|     "@angular/router": "^5.0.0", | ||||
|     "core-js": "^2.4.1", | ||||
| 
 | ||||
|     "rxjs": "^5.5.2", | ||||
| 
 | ||||
|     "zone.js": "^0.8.14", | ||||
|     "file-saver": "^1.3.3" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@angular/cli": "1.5.0", | ||||
|     "@angular/compiler-cli": "^5.0.0", | ||||
|     "@angular/language-service": "^5.0.0", | ||||
|     "@types/node": "~6.0.60", | ||||
|     "ts-node": "~3.2.0", | ||||
|     "tslint": "~5.7.0", | ||||
|     "typescript": "~2.4.2" | ||||
|   } | ||||
| } | ||||
| @ -10,7 +10,7 @@ into web pages with script tags: | ||||
| The library can also be imported directly from JSX code with: | ||||
| 
 | ||||
| ```js | ||||
| import * as XLSX from 'xlsx'; | ||||
| import XLSX from 'xlsx'; | ||||
| ``` | ||||
| 
 | ||||
| This demo shows a simple JSX component transpiled in the browser using the babel | ||||
|  | ||||
| @ -1,3 +1,3 @@ | ||||
| /* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */ | ||||
| import * as XLSX from 'xlsx'; | ||||
| import XLSX from 'xlsx'; | ||||
| import { saveAs } from 'file-saver'; | ||||
|  | ||||
							
								
								
									
										2
									
								
								demos/react/react-native.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								demos/react/react-native.js
									
									
									
									
										vendored
									
									
								
							| @ -1,5 +1,5 @@ | ||||
| /* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */ | ||||
| import * as XLSX from 'xlsx'; | ||||
| import XLSX from 'xlsx'; | ||||
| 
 | ||||
| import React, { Component } from 'react'; | ||||
| import { AppRegistry, StyleSheet, Text, View, Button, Alert, Image } from 'react-native'; | ||||
|  | ||||
							
								
								
									
										6
									
								
								dist/xlsx.core.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										6
									
								
								dist/xlsx.core.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/xlsx.core.min.map
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/xlsx.core.min.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										26
									
								
								dist/xlsx.full.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										26
									
								
								dist/xlsx.full.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/xlsx.full.min.map
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/xlsx.full.min.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										36
									
								
								dist/xlsx.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										36
									
								
								dist/xlsx.js
									
									
									
									
										vendored
									
									
								
							| @ -4,7 +4,7 @@ | ||||
| /*global global, exports, module, require:false, process:false, Buffer:false */ | ||||
| var XLSX = {}; | ||||
| (function make_xlsx(XLSX){ | ||||
| XLSX.version = '0.11.7'; | ||||
| XLSX.version = '0.11.8'; | ||||
| var current_codepage = 1200; | ||||
| /*global cptable:true */ | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| @ -1026,7 +1026,7 @@ var DO_NOT_EXPORT_CFB = true; | ||||
| /* [MS-CFB] v20130118 */ | ||||
| var CFB = (function _CFB(){ | ||||
| var exports = {}; | ||||
| exports.version = '0.13.2'; | ||||
| exports.version = '1.0.0'; | ||||
| /* [MS-CFB] 2.6.4 */ | ||||
| function namecmp(l, r) { | ||||
| 	var L = l.split("/"), R = r.split("/"); | ||||
| @ -1129,16 +1129,15 @@ sector_list.fat_addrs = fat_addrs; | ||||
| sector_list.ssz = ssz; | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| var files = {}, Paths = [], FileIndex = [], FullPaths = [], FullPathDir = {}; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex); | ||||
| var files = {}, Paths = [], FileIndex = [], FullPaths = []; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); | ||||
| 
 | ||||
| build_full_paths(FileIndex, FullPathDir, FullPaths, Paths); | ||||
| build_full_paths(FileIndex, FullPaths, Paths); | ||||
| Paths.shift(); | ||||
| 
 | ||||
| var o = { | ||||
| 	FileIndex: FileIndex, | ||||
| 	FullPaths: FullPaths, | ||||
| 	FullPathDir: FullPathDir | ||||
| 	FullPaths: FullPaths | ||||
| }; | ||||
| 
 | ||||
| // $FlowIgnore
 | ||||
| @ -1190,7 +1189,7 @@ function sectorify(file, ssz) { | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.4 Red-Black Tree */ | ||||
| function build_full_paths(FI, FPD, FP, Paths) { | ||||
| function build_full_paths(FI, FP, Paths) { | ||||
| 	var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; | ||||
| 	var dad = [], q = []; | ||||
| 
 | ||||
| @ -1226,10 +1225,23 @@ function build_full_paths(FI, FPD, FP, Paths) { | ||||
| 	FP[0] += "/"; | ||||
| 	for(i=1; i < pl; ++i) { | ||||
| 		if(FI[i].type !== 2 /* stream */) FP[i] += "/"; | ||||
| 		FPD[FP[i]] = FI[i]; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function get_mfat_entry(entry, payload, mini) { | ||||
| 	var start = entry.start, size = entry.size; | ||||
| 	//return (payload.slice(start*MSSZ, start*MSSZ + size));
 | ||||
| 	var o = []; | ||||
| 	var idx = start; | ||||
| 	while(mini && size > 0 && idx >= 0) { | ||||
| 		o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); | ||||
| 		size -= MSSZ; | ||||
| 		idx = __readInt32LE(mini, idx * 4); | ||||
| 	} | ||||
| 	if(o.length === 0) return (new_buf(0)); | ||||
| 	return (bconcat(o).slice(0, entry.size)); | ||||
| } | ||||
| 
 | ||||
| /** Chase down the rest of the DIFAT chain to build a comprehensive list | ||||
|     DIFAT chains by storing the next sector number as the last 32 bits */ | ||||
| function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { | ||||
| @ -1291,7 +1303,7 @@ function make_sector_list(sectors, dir_start, fat_addrs, ssz) { | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex) { | ||||
| function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) { | ||||
| 	var minifat_store = 0, pl = (Paths.length?2:0); | ||||
| 	var sector = sector_list[dir_start].data; | ||||
| 	var i = 0, namelen = 0, name; | ||||
| @ -1333,7 +1345,7 @@ function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, Fil | ||||
| 		} else { | ||||
| 			o.storage = 'minifat'; | ||||
| 			if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { | ||||
| 				o.content = (sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size)); | ||||
| 				o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); | ||||
| 				prep_blob(o.content, 0); | ||||
| 			} | ||||
| 		} | ||||
| @ -2102,7 +2114,7 @@ var matchtag = (function() { | ||||
| })(); | ||||
| 
 | ||||
| function htmldecode(str) { | ||||
| 	return str.trim().replace(/\s+/g, " ").replace(/<\s*[bB][rR]\s*\/?/g,"\n").replace(/<[^>]*>/g,"").replace(/ /g, " "); | ||||
| 	return str.trim().replace(/\s+/g, " ").replace(/<\s*[bB][rR]\s*\/?>/g,"\n").replace(/<[^>]*>/g,"").replace(/ /g, " "); | ||||
| } | ||||
| 
 | ||||
| var vtregex = (function(){ var vt_cache = {}; | ||||
|  | ||||
							
								
								
									
										24
									
								
								dist/xlsx.min.js
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										24
									
								
								dist/xlsx.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/xlsx.min.map
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								dist/xlsx.min.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -4,7 +4,7 @@ The [`demos` directory](demos/) includes sample projects for: | ||||
| 
 | ||||
| **Frameworks and APIs** | ||||
| - [`angular 1.x`](demos/angular/) | ||||
| - [`angular 2.x / 4.x`](demos/angular2/) | ||||
| - [`angular 2.x / 4.x / 5.x`](demos/angular2/) | ||||
| - [`meteor`](demos/meteor/) | ||||
| - [`react and react-native`](demos/react/) | ||||
| - [`vue 2.x and weex`](demos/vue/) | ||||
|  | ||||
| @ -179,7 +179,7 @@ The [`demos` directory](demos/) includes sample projects for: | ||||
| 
 | ||||
| **Frameworks and APIs** | ||||
| - [`angular 1.x`](demos/angular/) | ||||
| - [`angular 2.x / 4.x`](demos/angular2/) | ||||
| - [`angular 2.x / 4.x / 5.x`](demos/angular2/) | ||||
| - [`meteor`](demos/meteor/) | ||||
| - [`react and react-native`](demos/react/) | ||||
| - [`vue 2.x and weex`](demos/vue/) | ||||
|  | ||||
| @ -55,10 +55,6 @@ type CFBModule = { | ||||
| 	utils:CFBUtils; | ||||
| }; | ||||
| 
 | ||||
| type CFBFullPathDir = { | ||||
| 	[n:string]: CFBEntry; | ||||
| } | ||||
| 
 | ||||
| type CFBUtils = any; | ||||
| 
 | ||||
| type CheckFieldFunc = {(hexstr:string, fld:string):void;}; | ||||
| @ -114,7 +110,6 @@ type CFBContainer = { | ||||
| 		sectors:Array<any>; | ||||
| 	}; | ||||
| 	FileIndex:CFBFileIndex; | ||||
| 	FullPathDir:CFBFullPathDir; | ||||
| 	FullPaths:Array<string>; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"name": "xlsx", | ||||
| 	"version": "0.11.7", | ||||
| 	"version": "0.11.8", | ||||
| 	"author": "sheetjs", | ||||
| 	"description": "SheetJS Spreadsheet data parser and writer", | ||||
| 	"keywords": [ "excel", "xls", "xlsx", "xlsb", "xlsm", "ods", "csv", "dbf", "dif", "sylk", "office", "spreadsheet" ], | ||||
| @ -20,7 +20,7 @@ | ||||
| 		"exit-on-epipe": "~1.0.1", | ||||
| 		"ssf": "~0.10.1", | ||||
| 		"codepage": "~1.11.0", | ||||
| 		"cfb": "~0.13.2", | ||||
| 		"cfb": "~1.0.0", | ||||
| 		"crc-32": "~1.1.1", | ||||
| 		"adler-32": "~1.1.0", | ||||
| 		"commander": "~2.11.0" | ||||
|  | ||||
							
								
								
									
										2
									
								
								test.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								test.js
									
									
									
									
									
								
							| @ -1863,7 +1863,7 @@ describe('HTML', function() { | ||||
| 		it('should generate strings if raw option is passed', function() { plaintext_test(X.utils.table_to_book(get_dom_element(html_str), {raw:true}), true, true); }); | ||||
| 		it('should handle newlines correctly', function() { | ||||
| 			var table = get_dom_element("<table><tr><td>foo<br/>bar</td><td>baz</td></tr></table>"); | ||||
| 			var wb = X.utils.table_to_book(table) | ||||
| 			var wb = X.utils.table_to_book(table); | ||||
| 			assert.equal(get_cell(wb.Sheets.Sheet1, "A1").v, "foo\nbar"); | ||||
| 		}); | ||||
| 	}); | ||||
|  | ||||
| @ -1862,9 +1862,8 @@ describe('HTML', function() { | ||||
| 		it('should interpret values by default', function() { plaintext_test(X.utils.table_to_book(get_dom_element(html_str)), false, true); }); | ||||
| 		it('should generate strings if raw option is passed', function() { plaintext_test(X.utils.table_to_book(get_dom_element(html_str), {raw:true}), true, true); }); | ||||
| 		it('should handle newlines correctly', function() { | ||||
| 			var table = document.createElement('table'); | ||||
| 			table.innerHTML = "<tr><td>foo<br/>bar</td><td>baz</td></tr>"; | ||||
| 			var wb = X.utils.table_to_book(table) | ||||
| 			var table = get_dom_element("<table><tr><td>foo<br/>bar</td><td>baz</td></tr></table>"); | ||||
| 			var wb = X.utils.table_to_book(table); | ||||
| 			assert.equal(get_cell(wb.Sheets.Sheet1, "A1").v, "foo\nbar"); | ||||
| 		}); | ||||
| 	}); | ||||
|  | ||||
							
								
								
									
										34
									
								
								xlsx.flow.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										34
									
								
								xlsx.flow.js
									
									
									
									
									
								
							| @ -4,7 +4,7 @@ | ||||
| /*global global, exports, module, require:false, process:false, Buffer:false */ | ||||
| var XLSX = {}; | ||||
| (function make_xlsx(XLSX){ | ||||
| XLSX.version = '0.11.7'; | ||||
| XLSX.version = '0.11.8'; | ||||
| var current_codepage = 1200; | ||||
| /*:: declare var cptable:any; */ | ||||
| /*global cptable:true */ | ||||
| @ -1089,7 +1089,7 @@ type CFBFiles = {[n:string]:CFBEntry}; | ||||
| /* [MS-CFB] v20130118 */ | ||||
| var CFB = (function _CFB(){ | ||||
| var exports/*:CFBModule*/ = /*::(*/{}/*:: :any)*/; | ||||
| exports.version = '0.13.2'; | ||||
| exports.version = '1.0.0'; | ||||
| /* [MS-CFB] 2.6.4 */ | ||||
| function namecmp(l/*:string*/, r/*:string*/)/*:number*/ { | ||||
| 	var L = l.split("/"), R = r.split("/"); | ||||
| @ -1192,16 +1192,15 @@ sector_list.fat_addrs = fat_addrs; | ||||
| sector_list.ssz = ssz; | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| var files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [], FullPathDir = {}; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex); | ||||
| var files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = []; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); | ||||
| 
 | ||||
| build_full_paths(FileIndex, FullPathDir, FullPaths, Paths); | ||||
| build_full_paths(FileIndex, FullPaths, Paths); | ||||
| Paths.shift(); | ||||
| 
 | ||||
| var o = { | ||||
| 	FileIndex: FileIndex, | ||||
| 	FullPaths: FullPaths, | ||||
| 	FullPathDir: FullPathDir | ||||
| 	FullPaths: FullPaths | ||||
| }; | ||||
| 
 | ||||
| // $FlowIgnore
 | ||||
| @ -1253,7 +1252,7 @@ function sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array<RawBytes>*/ { | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.4 Red-Black Tree */ | ||||
| function build_full_paths(FI/*:CFBFileIndex*/, FPD/*:CFBFullPathDir*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ { | ||||
| function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ { | ||||
| 	var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; | ||||
| 	var dad/*:Array<number>*/ = [], q/*:Array<number>*/ = []; | ||||
| 
 | ||||
| @ -1289,10 +1288,23 @@ function build_full_paths(FI/*:CFBFileIndex*/, FPD/*:CFBFullPathDir*/, FP/*:Arra | ||||
| 	FP[0] += "/"; | ||||
| 	for(i=1; i < pl; ++i) { | ||||
| 		if(FI[i].type !== 2 /* stream */) FP[i] += "/"; | ||||
| 		FPD[FP[i]] = FI[i]; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ { | ||||
| 	var start = entry.start, size = entry.size; | ||||
| 	//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);
 | ||||
| 	var o = []; | ||||
| 	var idx = start; | ||||
| 	while(mini && size > 0 && idx >= 0) { | ||||
| 		o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); | ||||
| 		size -= MSSZ; | ||||
| 		idx = __readInt32LE(mini, idx * 4); | ||||
| 	} | ||||
| 	if(o.length === 0) return (new_buf(0)/*:any*/); | ||||
| 	return (bconcat(o).slice(0, entry.size)/*:any*/); | ||||
| } | ||||
| 
 | ||||
| /** Chase down the rest of the DIFAT chain to build a comprehensive list | ||||
|     DIFAT chains by storing the next sector number as the last 32 bits */ | ||||
| function sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array<RawBytes>*/, ssz/*:number*/, fat_addrs)/*:void*/ { | ||||
| @ -1354,7 +1366,7 @@ function make_sector_list(sectors/*:Array<RawBytes>*/, dir_start/*:number*/, fat | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex) { | ||||
| function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex, mini) { | ||||
| 	var minifat_store = 0, pl = (Paths.length?2:0); | ||||
| 	var sector = sector_list[dir_start].data; | ||||
| 	var i = 0, namelen = 0, name; | ||||
| @ -1396,7 +1408,7 @@ function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sector | ||||
| 		} else { | ||||
| 			o.storage = 'minifat'; | ||||
| 			if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { | ||||
| 				o.content = (sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size)/*:any*/); | ||||
| 				o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); | ||||
| 				prep_blob(o.content, 0); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
							
								
								
									
										34
									
								
								xlsx.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										34
									
								
								xlsx.js
									
									
									
									
									
								
							| @ -4,7 +4,7 @@ | ||||
| /*global global, exports, module, require:false, process:false, Buffer:false */ | ||||
| var XLSX = {}; | ||||
| (function make_xlsx(XLSX){ | ||||
| XLSX.version = '0.11.7'; | ||||
| XLSX.version = '0.11.8'; | ||||
| var current_codepage = 1200; | ||||
| /*global cptable:true */ | ||||
| if(typeof module !== "undefined" && typeof require !== 'undefined') { | ||||
| @ -1026,7 +1026,7 @@ var DO_NOT_EXPORT_CFB = true; | ||||
| /* [MS-CFB] v20130118 */ | ||||
| var CFB = (function _CFB(){ | ||||
| var exports = {}; | ||||
| exports.version = '0.13.2'; | ||||
| exports.version = '1.0.0'; | ||||
| /* [MS-CFB] 2.6.4 */ | ||||
| function namecmp(l, r) { | ||||
| 	var L = l.split("/"), R = r.split("/"); | ||||
| @ -1129,16 +1129,15 @@ sector_list.fat_addrs = fat_addrs; | ||||
| sector_list.ssz = ssz; | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| var files = {}, Paths = [], FileIndex = [], FullPaths = [], FullPathDir = {}; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex); | ||||
| var files = {}, Paths = [], FileIndex = [], FullPaths = []; | ||||
| read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); | ||||
| 
 | ||||
| build_full_paths(FileIndex, FullPathDir, FullPaths, Paths); | ||||
| build_full_paths(FileIndex, FullPaths, Paths); | ||||
| Paths.shift(); | ||||
| 
 | ||||
| var o = { | ||||
| 	FileIndex: FileIndex, | ||||
| 	FullPaths: FullPaths, | ||||
| 	FullPathDir: FullPathDir | ||||
| 	FullPaths: FullPaths | ||||
| }; | ||||
| 
 | ||||
| // $FlowIgnore
 | ||||
| @ -1190,7 +1189,7 @@ function sectorify(file, ssz) { | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.4 Red-Black Tree */ | ||||
| function build_full_paths(FI, FPD, FP, Paths) { | ||||
| function build_full_paths(FI, FP, Paths) { | ||||
| 	var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; | ||||
| 	var dad = [], q = []; | ||||
| 
 | ||||
| @ -1226,10 +1225,23 @@ function build_full_paths(FI, FPD, FP, Paths) { | ||||
| 	FP[0] += "/"; | ||||
| 	for(i=1; i < pl; ++i) { | ||||
| 		if(FI[i].type !== 2 /* stream */) FP[i] += "/"; | ||||
| 		FPD[FP[i]] = FI[i]; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function get_mfat_entry(entry, payload, mini) { | ||||
| 	var start = entry.start, size = entry.size; | ||||
| 	//return (payload.slice(start*MSSZ, start*MSSZ + size));
 | ||||
| 	var o = []; | ||||
| 	var idx = start; | ||||
| 	while(mini && size > 0 && idx >= 0) { | ||||
| 		o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); | ||||
| 		size -= MSSZ; | ||||
| 		idx = __readInt32LE(mini, idx * 4); | ||||
| 	} | ||||
| 	if(o.length === 0) return (new_buf(0)); | ||||
| 	return (bconcat(o).slice(0, entry.size)); | ||||
| } | ||||
| 
 | ||||
| /** Chase down the rest of the DIFAT chain to build a comprehensive list | ||||
|     DIFAT chains by storing the next sector number as the last 32 bits */ | ||||
| function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { | ||||
| @ -1291,7 +1303,7 @@ function make_sector_list(sectors, dir_start, fat_addrs, ssz) { | ||||
| } | ||||
| 
 | ||||
| /* [MS-CFB] 2.6.1 Compound File Directory Entry */ | ||||
| function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex) { | ||||
| function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) { | ||||
| 	var minifat_store = 0, pl = (Paths.length?2:0); | ||||
| 	var sector = sector_list[dir_start].data; | ||||
| 	var i = 0, namelen = 0, name; | ||||
| @ -1333,7 +1345,7 @@ function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, Fil | ||||
| 		} else { | ||||
| 			o.storage = 'minifat'; | ||||
| 			if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { | ||||
| 				o.content = (sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size)); | ||||
| 				o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); | ||||
| 				prep_blob(o.content, 0); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user