@postnord/pn-marketweb-components 2.0.120 → 2.0.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/_commonjsHelpers-206db00d.js +37 -0
- package/cjs/convert-b219d02d.js +1826 -0
- package/cjs/loader.cjs.js +1 -1
- package/cjs/pn-chart.cjs.entry.js +21919 -0
- package/cjs/pn-charts-card.cjs.entry.js +21 -0
- package/cjs/pn-find-price.cjs.entry.js +2 -1
- package/cjs/pn-find-service-and-price.cjs.entry.js +2 -1
- package/cjs/pn-market-web-components.cjs.js +1 -1
- package/cjs/pn-product-pricelist.cjs.entry.js +2 -1
- package/cjs/pn-quick-cta.cjs.entry.js +1 -1
- package/cjs/pn-quote-card.cjs.entry.js +1 -1
- package/cjs/pn-spotlight.cjs.entry.js +1 -1
- package/cjs/pn-stats-info-data.cjs.entry.js +1 -1
- package/cjs/pn-teaser-card.cjs.entry.js +4 -2
- package/collection/collection-manifest.json +2 -0
- package/collection/components/cards/pn-quote-card/pn-quote-card.css +62 -1
- package/collection/components/cards/pn-quote-card/pn-quote-card.stories.js +4 -4
- package/collection/components/cards/pn-teaser-card/pn-teaser-card.css +40 -6
- package/collection/components/cards/pn-teaser-card/pn-teaser-card.js +5 -2
- package/collection/components/cards/pn-teaser-card/pn-teaser-card.stories.js +23 -12
- package/collection/components/charts/pn-chart/pn-chart-helper.js +52 -0
- package/collection/components/charts/pn-chart/pn-chart.css +26 -0
- package/collection/components/charts/pn-chart/pn-chart.js +94 -0
- package/collection/components/charts/pn-chart/pn-chart.stories.js +0 -0
- package/collection/components/charts/pn-chart/types.js +1 -0
- package/collection/components/charts/pn-charts-card/pn-charts-card.css +106 -0
- package/collection/components/charts/pn-charts-card/pn-charts-card.js +156 -0
- package/collection/components/charts/pn-charts-card/pn-charts-card.stories.js +75 -0
- package/collection/components/cta/pn-quick-cta/pn-quick-cta.css +2 -0
- package/collection/components/cta/pn-spotlight/pn-spotlight.css +1 -0
- package/collection/components/data-visualization/pn-stats-info/pn-stats-info-data/pn-stats-info-data.css +1 -1
- package/custom-elements/index.d.ts +12 -0
- package/custom-elements/index.js +21972 -24
- package/esm/_commonjsHelpers-27f122dd.js +32 -0
- package/esm/{convert-ae809f9c.js → convert-f6377d13.js} +2 -16
- package/esm/loader.js +1 -1
- package/esm/pn-chart.entry.js +21915 -0
- package/esm/pn-charts-card.entry.js +17 -0
- package/esm/pn-find-price.entry.js +2 -1
- package/esm/pn-find-service-and-price.entry.js +2 -1
- package/esm/pn-market-web-components.js +1 -1
- package/esm/pn-product-pricelist.entry.js +2 -1
- package/esm/pn-quick-cta.entry.js +1 -1
- package/esm/pn-quote-card.entry.js +1 -1
- package/esm/pn-spotlight.entry.js +1 -1
- package/esm/pn-stats-info-data.entry.js +1 -1
- package/esm/pn-teaser-card.entry.js +4 -2
- package/esm-es5/_commonjsHelpers-27f122dd.js +1 -0
- package/esm-es5/{convert-ae809f9c.js → convert-f6377d13.js} +2 -2
- package/esm-es5/loader.js +1 -1
- package/esm-es5/pn-chart.entry.js +16 -0
- package/esm-es5/pn-charts-card.entry.js +1 -0
- package/esm-es5/pn-find-price.entry.js +1 -1
- package/esm-es5/pn-find-service-and-price.entry.js +1 -1
- package/esm-es5/pn-market-web-components.js +1 -1
- package/esm-es5/pn-product-pricelist.entry.js +1 -1
- package/esm-es5/pn-quick-cta.entry.js +1 -1
- package/esm-es5/pn-quote-card.entry.js +1 -1
- package/esm-es5/pn-spotlight.entry.js +1 -1
- package/esm-es5/pn-stats-info-data.entry.js +1 -1
- package/esm-es5/pn-teaser-card.entry.js +1 -1
- package/package.json +3 -1
- package/pn-market-web-components/p-0b6ceed4.entry.js +1 -0
- package/pn-market-web-components/p-1751415f.entry.js +16 -0
- package/pn-market-web-components/p-1c38553b.system.entry.js +1 -0
- package/pn-market-web-components/p-35fcd76c.system.entry.js +1 -0
- package/pn-market-web-components/p-3c0d63fb.system.entry.js +1 -0
- package/pn-market-web-components/p-48c3225c.entry.js +1 -0
- package/pn-market-web-components/{p-15ae4d8a.system.entry.js → p-620d647d.system.entry.js} +1 -1
- package/pn-market-web-components/{p-4e0757d5.entry.js → p-63176326.entry.js} +1 -1
- package/pn-market-web-components/p-67887512.system.js +1 -1
- package/pn-market-web-components/p-736e5b84.system.entry.js +1 -0
- package/pn-market-web-components/p-77557da8.entry.js +1 -0
- package/pn-market-web-components/{p-489412d3.entry.js → p-7fd8b012.entry.js} +1 -1
- package/pn-market-web-components/p-810c3a61.system.entry.js +1 -0
- package/pn-market-web-components/p-814af281.js +1 -0
- package/pn-market-web-components/{p-0ea97ca0.system.js → p-8766fa86.system.js} +2 -2
- package/pn-market-web-components/p-8e38c337.entry.js +1 -0
- package/pn-market-web-components/p-8e4d292f.entry.js +1 -0
- package/pn-market-web-components/p-aab2e28f.entry.js +1 -0
- package/pn-market-web-components/p-af415c1a.system.entry.js +1 -0
- package/pn-market-web-components/p-b07ec226.system.entry.js +1 -0
- package/pn-market-web-components/p-b97cb315.system.entry.js +16 -0
- package/pn-market-web-components/p-bfe239ca.js +13 -0
- package/pn-market-web-components/p-d3a0ed9b.system.entry.js +1 -0
- package/pn-market-web-components/p-effbbf45.entry.js +1 -0
- package/pn-market-web-components/p-fe1f76a3.system.js +1 -0
- package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/types/components/cards/pn-teaser-card/pn-teaser-card.d.ts +1 -0
- package/types/components/charts/pn-chart/pn-chart-helper.d.ts +46 -0
- package/types/components/charts/pn-chart/pn-chart.d.ts +17 -0
- package/types/components/charts/pn-chart/types.d.ts +7 -0
- package/types/components/charts/pn-charts-card/pn-charts-card.d.ts +12 -0
- package/types/components.d.ts +46 -0
- package/umd/pn-marketweb-init.js +41 -37
- package/umd/pn-marketweb-salesforce.js +2 -2
- package/cjs/convert-362ef5e6.js +0 -1840
- package/pn-market-web-components/p-496c4b55.entry.js +0 -1
- package/pn-market-web-components/p-513e3c62.entry.js +0 -1
- package/pn-market-web-components/p-774b7a9f.entry.js +0 -1
- package/pn-market-web-components/p-8144bcbc.system.entry.js +0 -1
- package/pn-market-web-components/p-906c9278.system.entry.js +0 -1
- package/pn-market-web-components/p-93352282.entry.js +0 -1
- package/pn-market-web-components/p-95d13488.system.entry.js +0 -1
- package/pn-market-web-components/p-9854fc3d.system.entry.js +0 -1
- package/pn-market-web-components/p-9adc3940.js +0 -13
- package/pn-market-web-components/p-a2469aa9.entry.js +0 -1
- package/pn-market-web-components/p-b32a8507.entry.js +0 -1
- package/pn-market-web-components/p-bc22baf1.system.entry.js +0 -1
- package/pn-market-web-components/p-cd12c6b1.system.entry.js +0 -1
- package/pn-market-web-components/p-fecc53bb.system.entry.js +0 -1
|
@@ -0,0 +1,1826 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const _commonjsHelpers = require('./_commonjsHelpers-206db00d.js');
|
|
4
|
+
|
|
5
|
+
const xml = {
|
|
6
|
+
createDocument: function createDocument(content) {
|
|
7
|
+
// if (!content) {
|
|
8
|
+
// throw new Error('No *.xml content')
|
|
9
|
+
// }
|
|
10
|
+
// A weird bug: it won't parse XML unless it's trimmed.
|
|
11
|
+
// https://github.com/catamphetamine/read-excel-file/issues/21
|
|
12
|
+
return new DOMParser().parseFromString(content.trim(), 'text/xml');
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var jszip_min = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
|
17
|
+
/*!
|
|
18
|
+
|
|
19
|
+
JSZip v3.7.1 - A JavaScript class for generating and reading zip files
|
|
20
|
+
<http://stuartk.com/jszip>
|
|
21
|
+
|
|
22
|
+
(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
|
|
23
|
+
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
|
|
24
|
+
|
|
25
|
+
JSZip uses the library pako released under the MIT license :
|
|
26
|
+
https://github.com/nodeca/pako/blob/master/LICENSE
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
!function(t){module.exports=t();}(function(){return function s(a,o,h){function u(r,t){if(!o[r]){if(!a[r]){var e="function"==typeof _commonjsHelpers.commonjsRequire&&_commonjsHelpers.commonjsRequire;if(!t&&e)return e(r,!0);if(l)return l(r,!0);var i=new Error("Cannot find module '"+r+"'");throw i.code="MODULE_NOT_FOUND",i}var n=o[r]={exports:{}};a[r][0].call(n.exports,function(t){var e=a[r][1][t];return u(e||t)},n,n.exports,s,a,o,h);}return o[r].exports}for(var l="function"==typeof _commonjsHelpers.commonjsRequire&&_commonjsHelpers.commonjsRequire,t=0;t<h.length;t++)u(h[t]);return u}({1:[function(t,e,r){var c=t("./utils"),d=t("./support"),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.encode=function(t){for(var e,r,i,n,s,a,o,h=[],u=0,l=t.length,f=l,d="string"!==c.getTypeOf(t);u<t.length;)f=l-u,i=d?(e=t[u++],r=u<l?t[u++]:0,u<l?t[u++]:0):(e=t.charCodeAt(u++),r=u<l?t.charCodeAt(u++):0,u<l?t.charCodeAt(u++):0),n=e>>2,s=(3&e)<<4|r>>4,a=1<f?(15&r)<<2|i>>6:64,o=2<f?63&i:64,h.push(p.charAt(n)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join("")},r.decode=function(t){var e,r,i,n,s,a,o=0,h=0,u="data:";if(t.substr(0,u.length)===u)throw new Error("Invalid base64 input, it looks like a data url.");var l,f=3*(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(t.charAt(t.length-1)===p.charAt(64)&&f--,t.charAt(t.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error("Invalid base64 input, bad content length.");for(l=d.uint8array?new Uint8Array(0|f):new Array(0|f);o<t.length;)e=p.indexOf(t.charAt(o++))<<2|(n=p.indexOf(t.charAt(o++)))>>4,r=(15&n)<<4|(s=p.indexOf(t.charAt(o++)))>>2,i=(3&s)<<6|(a=p.indexOf(t.charAt(o++))),l[h++]=e,64!==s&&(l[h++]=r),64!==a&&(l[h++]=i);return l};},{"./support":30,"./utils":32}],2:[function(t,e,r){var i=t("./external"),n=t("./stream/DataWorker"),s=t("./stream/Crc32Probe"),a=t("./stream/DataLengthProbe");function o(t,e,r,i,n){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=i,this.compressedContent=n;}o.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),e=this;return t.on("end",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new s).pipe(new a("uncompressedSize")).pipe(e.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",e)},e.exports=o;},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,e,r){var i=t("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(t){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},r.DEFLATE=t("./flate");},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,e,r){var i=t("./utils");var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t;}return e}();e.exports=function(t,e){return void 0!==t&&t.length?"string"!==i.getTypeOf(t)?function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return -1^t}(0|e,t,t.length,0):function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e.charCodeAt(a))];return -1^t}(0|e,t,t.length,0):0};},{"./utils":32}],5:[function(t,e,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null;},{}],6:[function(t,e,r){var i=null;i="undefined"!=typeof Promise?Promise:t("lie"),e.exports={Promise:i};},{lie:37}],7:[function(t,e,r){var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=t("pako"),s=t("./utils"),a=t("./stream/GenericWorker"),o=i?"uint8array":"array";function h(t,e){a.call(this,"FlateWorker/"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={};}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1);},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0);},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null;},h.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta});};},r.compressWorker=function(t){return new h("Deflate",t)},r.uncompressWorker=function(){return new h("Inflate",{})};},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,e,r){function A(t,e){var r,i="";for(r=0;r<e;r++)i+=String.fromCharCode(255&t),t>>>=8;return i}function i(t,e,r,i,n,s){var a,o,h=t.file,u=t.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),d=I.transformTo("string",O.utf8encode(h.name)),c=h.comment,p=I.transformTo("string",s(c)),m=I.transformTo("string",O.utf8encode(c)),_=d.length!==h.name.length,g=m.length!==c.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(x.crc32=t.crc32,x.compressedSize=t.compressedSize,x.uncompressedSize=t.uncompressedSize);var S=0;e&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===n?(C=798,z|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(t){return 63&(t||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+d,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(i,4)+f+b+p}}var I=t("../utils"),n=t("../stream/GenericWorker"),O=t("../utf8"),B=t("../crc32"),R=t("../signature");function s(t,e,r,i){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[];}I.inherits(s,n),s.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-i-1))/r:100}}));},s.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}});}else this.accumulate=!0;},s.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return R.DATA_DESCRIPTOR+A(t.crc32,4)+A(t.compressedSize,4)+A(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null;},s.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e<this.dirRecords.length;e++)this.push({data:this.dirRecords[e],meta:{percent:100}});var r=this.bytesWritten-t,i=function(t,e,r,i,n){var s=I.transformTo("string",n(i));return R.CENTRAL_DIRECTORY_END+"\0\0\0\0"+A(t,2)+A(t,2)+A(e,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,t,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}});},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume();},s.prototype.registerPrevious=function(t){this._sources.push(t);var e=this;return t.on("data",function(t){e.processChunk(t);}),t.on("end",function(){e.closedSource(e.previous.streamInfo),e._sources.length?e.prepareNextSource():e.end();}),t.on("error",function(t){e.error(t);}),this},s.prototype.resume=function(){return !!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(t){var e=this._sources;if(!n.prototype.error.call(this,t))return !1;for(var r=0;r<e.length;r++)try{e[r].error(t);}catch(t){}return !0},s.prototype.lock=function(){n.prototype.lock.call(this);for(var t=this._sources,e=0;e<t.length;e++)t[e].lock();},e.exports=s;},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(t,e,r){var u=t("../compressions"),i=t("./ZipFileWorker");r.generateWorker=function(t,a,e){var o=new i(a.streamFiles,e,a.platform,a.encodeFileName),h=0;try{t.forEach(function(t,e){h++;var r=function(t,e){var r=t||e,i=u[r];if(!i)throw new Error(r+" is not a valid compression method !");return i}(e.options.compression,a.compression),i=e.options.compressionOptions||a.compressionOptions||{},n=e.dir,s=e.date;e._compressWorker(r,i).withStreamInfo("file",{name:t,dir:n,date:s,comment:e.comment||"",unixPermissions:e.unixPermissions,dosPermissions:e.dosPermissions}).pipe(o);}),o.entriesCount=h;}catch(t){o.error(t);}return o};},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,e,r){function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var t=new i;for(var e in this)"function"!=typeof this[e]&&(t[e]=this[e]);return t};}(i.prototype=t("./object")).loadAsync=t("./load"),i.support=t("./support"),i.defaults=t("./defaults"),i.version="3.7.1",i.loadAsync=function(t,e){return (new i).loadAsync(t,e)},i.external=t("./external"),e.exports=i;},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(t,e,r){var i=t("./utils"),n=t("./external"),o=t("./utf8"),h=t("./zipEntries"),s=t("./stream/Crc32Probe"),u=t("./nodejsUtils");function l(i){return new n.Promise(function(t,e){var r=i.decompressed.getContentWorker().pipe(new s);r.on("error",function(t){e(t);}).on("end",function(){r.streamInfo.crc32!==i.decompressed.crc32?e(new Error("Corrupted zip : CRC32 mismatch")):t();}).resume();})}e.exports=function(t,s){var a=this;return s=i.extend(s||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),u.isNode&&u.isStream(t)?n.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",t,!0,s.optimizedBinaryString,s.base64).then(function(t){var e=new h(s);return e.load(t),e}).then(function(t){var e=[n.Promise.resolve(t)],r=t.files;if(s.checkCRC32)for(var i=0;i<r.length;i++)e.push(l(r[i]));return n.Promise.all(e)}).then(function(t){for(var e=t.shift(),r=e.files,i=0;i<r.length;i++){var n=r[i];a.file(n.fileNameStr,n.decompressed,{binary:!0,optimizedBinaryString:!0,date:n.date,dir:n.dir,comment:n.fileCommentStr.length?n.fileCommentStr:null,unixPermissions:n.unixPermissions,dosPermissions:n.dosPermissions,createFolders:s.createFolders});}return e.zipComment.length&&(a.comment=e.zipComment),a})};},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(t,e,r){var i=t("../utils"),n=t("../stream/GenericWorker");function s(t,e){n.call(this,"Nodejs stream input adapter for "+t),this._upstreamEnded=!1,this._bindStream(e);}i.inherits(s,n),s.prototype._bindStream=function(t){var e=this;(this._stream=t).pause(),t.on("data",function(t){e.push({data:t,meta:{percent:0}});}).on("error",function(t){e.isPaused?this.generatedError=t:e.error(t);}).on("end",function(){e.isPaused?e._upstreamEnded=!0:e.end();});},s.prototype.pause=function(){return !!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return !!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=s;},{"../stream/GenericWorker":28,"../utils":32}],13:[function(t,e,r){var n=t("readable-stream").Readable;function i(t,e,r){n.call(this,e),this._helper=t;var i=this;t.on("data",function(t,e){i.push(t)||i._helper.pause(),r&&r(e);}).on("error",function(t){i.emit("error",t);}).on("end",function(){i.push(null);});}t("../utils").inherits(i,n),i.prototype._read=function(){this._helper.resume();},e.exports=i;},{"../utils":32,"readable-stream":16}],14:[function(t,e,r){e.exports={isNode:"undefined"!=typeof Buffer,newBufferFrom:function(t,e){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(t,e);if("number"==typeof t)throw new Error('The "data" argument must not be a number');return new Buffer(t,e)},allocBuffer:function(t){if(Buffer.alloc)return Buffer.alloc(t);var e=new Buffer(t);return e.fill(0),e},isBuffer:function(t){return Buffer.isBuffer(t)},isStream:function(t){return t&&"function"==typeof t.on&&"function"==typeof t.pause&&"function"==typeof t.resume}};},{}],15:[function(t,e,r){function s(t,e,r){var i,n=u.getTypeOf(e),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),"string"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(t=g(t)),s.createFolders&&(i=_(t))&&b.call(this,i,!0);var a="string"===n&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(e instanceof d&&0===e.uncompressedSize||s.dir||!e||0===e.length)&&(s.base64=!1,s.binary=!0,e="",s.compression="STORE",n="string");var o=null;o=e instanceof d||e instanceof l?e:p.isNode&&p.isStream(e)?new m(t,e):u.prepareContent(t,e,s.binary,s.optimizedBinaryString,s.base64);var h=new c(t,o,s);this.files[t]=h;}var n=t("./utf8"),u=t("./utils"),l=t("./stream/GenericWorker"),a=t("./stream/StreamHelper"),f=t("./defaults"),d=t("./compressedObject"),c=t("./zipObject"),o=t("./generate"),p=t("./nodejsUtils"),m=t("./nodejs/NodejsStreamInputAdapter"),_=function(t){"/"===t.slice(-1)&&(t=t.substring(0,t.length-1));var e=t.lastIndexOf("/");return 0<e?t.substring(0,e):""},g=function(t){return "/"!==t.slice(-1)&&(t+="/"),t},b=function(t,e){return e=void 0!==e?e:f.createFolders,t=g(t),this.files[t]||s.call(this,t,null,{dir:!0,createFolders:e}),this.files[t]};function h(t){return "[object RegExp]"===Object.prototype.toString.call(t)}var i={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(t){var e,r,i;for(e in this.files)i=this.files[e],(r=e.slice(this.root.length,e.length))&&e.slice(0,this.root.length)===this.root&&t(r,i);},filter:function(r){var i=[];return this.forEach(function(t,e){r(t,e)&&i.push(e);}),i},file:function(t,e,r){if(1!==arguments.length)return t=this.root+t,s.call(this,t,e,r),this;if(h(t)){var i=t;return this.filter(function(t,e){return !e.dir&&i.test(t)})}var n=this.files[this.root+t];return n&&!n.dir?n:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(t,e){return e.dir&&r.test(t)});var t=this.root+r,e=b.call(this,t),i=this.clone();return i.root=e.name,i},remove:function(r){r=this.root+r;var t=this.files[r];if(t||("/"!==r.slice(-1)&&(r+="/"),t=this.files[r]),t&&!t.dir)delete this.files[r];else for(var e=this.filter(function(t,e){return e.name.slice(0,r.length)===r}),i=0;i<e.length;i++)delete this.files[e[i].name];return this},generate:function(t){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(t){var e,r={};try{if((r=u.extend(t||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),"binarystring"===r.type&&(r.type="string"),!r.type)throw new Error("No output type specified.");u.checkSupport(r.type),"darwin"!==r.platform&&"freebsd"!==r.platform&&"linux"!==r.platform&&"sunos"!==r.platform||(r.platform="UNIX"),"win32"===r.platform&&(r.platform="DOS");var i=r.comment||this.comment||"";e=o.generateWorker(this,r,i);}catch(t){(e=new l("error")).error(t);}return new a(e,r.type||"string",r.mimeType)},generateAsync:function(t,e){return this.generateInternalStream(t).accumulate(e)},generateNodeStream:function(t,e){return (t=t||{}).type||(t.type="nodebuffer"),this.generateInternalStream(t).toNodejsStream(e)}};e.exports=i;},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(t,e,r){e.exports=t("stream");},{stream:void 0}],17:[function(t,e,r){var i=t("./DataReader");function n(t){i.call(this,t);for(var e=0;e<this.data.length;e++)t[e]=255&t[e];}t("../utils").inherits(n,i),n.prototype.byteAt=function(t){return this.data[this.zero+t]},n.prototype.lastIndexOfSignature=function(t){for(var e=t.charCodeAt(0),r=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===e&&this.data[s+1]===r&&this.data[s+2]===i&&this.data[s+3]===n)return s-this.zero;return -1},n.prototype.readAndCheckSignature=function(t){var e=t.charCodeAt(0),r=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),s=this.readData(4);return e===s[0]&&r===s[1]&&i===s[2]&&n===s[3]},n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return [];var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n;},{"../utils":32,"./DataReader":18}],18:[function(t,e,r){var i=t("../utils");function n(t){this.data=t,this.length=t.length,this.index=0,this.zero=0;}n.prototype={checkOffset:function(t){this.checkIndex(this.index+t);},checkIndex:function(t){if(this.length<this.zero+t||t<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+t+"). Corrupted zip ?")},setIndex:function(t){this.checkIndex(t),this.index=t;},skip:function(t){this.setIndex(this.index+t);},byteAt:function(t){},readInt:function(t){var e,r=0;for(this.checkOffset(t),e=this.index+t-1;e>=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return i.transformTo("string",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=n;},{"../utils":32}],19:[function(t,e,r){var i=t("./Uint8ArrayReader");function n(t){i.call(this,t);}t("../utils").inherits(n,i),n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n;},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,e,r){var i=t("./DataReader");function n(t){i.call(this,t);}t("../utils").inherits(n,i),n.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},n.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},n.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n;},{"../utils":32,"./DataReader":18}],21:[function(t,e,r){var i=t("./ArrayReader");function n(t){i.call(this,t);}t("../utils").inherits(n,i),n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n;},{"../utils":32,"./ArrayReader":17}],22:[function(t,e,r){var i=t("../utils"),n=t("../support"),s=t("./ArrayReader"),a=t("./StringReader"),o=t("./NodeBufferReader"),h=t("./Uint8ArrayReader");e.exports=function(t){var e=i.getTypeOf(t);return i.checkSupport(e),"string"!==e||n.uint8array?"nodebuffer"===e?new o(t):n.uint8array?new h(i.transformTo("uint8array",t)):new s(i.transformTo("array",t)):new a(t)};},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,e,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b";},{}],24:[function(t,e,r){var i=t("./GenericWorker"),n=t("../utils");function s(t){i.call(this,"ConvertWorker to "+t),this.destType=t;}n.inherits(s,i),s.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta});},e.exports=s;},{"../utils":32,"./GenericWorker":28}],25:[function(t,e,r){var i=t("./GenericWorker"),n=t("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0);}t("../utils").inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t);},e.exports=s;},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,e,r){var i=t("../utils"),n=t("./GenericWorker");function s(t){n.call(this,"DataLengthProbe for "+t),this.propName=t,this.withStreamInfo(t,0);}i.inherits(s,n),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length;}n.prototype.processChunk.call(this,t);},e.exports=s;},{"../utils":32,"./GenericWorker":28}],27:[function(t,e,r){var i=t("../utils"),n=t("./GenericWorker");function s(t){n.call(this,"DataWorker");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat();},function(t){e.error(t);});}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null;},s.prototype.resume=function(){return !!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0));},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return !1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":t=this.data.substring(this.index,e);break;case"uint8array":t=this.data.subarray(this.index,e);break;case"array":case"nodebuffer":t=this.data.slice(this.index,e);}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s;},{"../utils":32,"./GenericWorker":28}],28:[function(t,e,r){function i(t){this.name=t||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null;}i.prototype={push:function(t){this.emit("data",t);},end:function(){if(this.isFinished)return !1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0;}catch(t){this.emit("error",t);}return !0},error:function(t){return !this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit("error",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[];},emit:function(t,e){if(this._listeners[t])for(var r=0;r<this._listeners[t].length;r++)this._listeners[t][r].call(this,e);},pipe:function(t){return t.registerPrevious(this)},registerPrevious:function(t){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=t.streamInfo,this.mergeStreamInfo(),this.previous=t;var e=this;return t.on("data",function(t){e.processChunk(t);}),t.on("end",function(){e.end();}),t.on("error",function(t){e.error(t);}),this},pause:function(){return !this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return !1;var t=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),t=!0),this.previous&&this.previous.resume(),!t},flush:function(){},processChunk:function(t){this.push(t);},withStreamInfo:function(t,e){return this.extraStreamInfo[t]=e,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var t in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(t)&&(this.streamInfo[t]=this.extraStreamInfo[t]);},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock();},toString:function(){var t="Worker "+this.name;return this.previous?this.previous+" -> "+t:t}},e.exports=i;},{}],29:[function(t,e,r){var h=t("../utils"),n=t("./ConvertWorker"),s=t("./GenericWorker"),u=t("../base64"),i=t("../support"),a=t("../external"),o=null;if(i.nodestream)try{o=t("../nodejs/NodejsStreamOutputAdapter");}catch(t){}function l(t,o){return new a.Promise(function(e,r){var i=[],n=t._internalType,s=t._outputType,a=t._mimeType;t.on("data",function(t,e){i.push(t),o&&o(e);}).on("error",function(t){i=[],r(t);}).on("end",function(){try{var t=function(t,e,r){switch(t){case"blob":return h.newBlob(h.transformTo("arraybuffer",e),r);case"base64":return u.encode(e);default:return h.transformTo(t,e)}}(s,function(t,e){var r,i=0,n=null,s=0;for(r=0;r<e.length;r++)s+=e[r].length;switch(t){case"string":return e.join("");case"array":return Array.prototype.concat.apply([],e);case"uint8array":for(n=new Uint8Array(s),r=0;r<e.length;r++)n.set(e[r],i),i+=e[r].length;return n;case"nodebuffer":return Buffer.concat(e);default:throw new Error("concat : unsupported type '"+t+"'")}}(n,i),a);e(t);}catch(t){r(t);}i=[];}).resume();})}function f(t,e,r){var i=e;switch(e){case"blob":case"arraybuffer":i="uint8array";break;case"base64":i="string";}try{this._internalType=i,this._outputType=e,this._mimeType=r,h.checkSupport(i),this._worker=t.pipe(new n(i)),t.lock();}catch(t){this._worker=new s("error"),this._worker.error(t);}}f.prototype={accumulate:function(t){return l(this,t)},on:function(t,e){var r=this;return "data"===t?this._worker.on(t,function(t){e.call(r,t.data,t.meta);}):this._worker.on(t,function(){h.delay(e,arguments,r);}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(t){if(h.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new o(this,{objectMode:"nodebuffer"!==this._outputType},t)}},e.exports=f;},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(t,e,r){if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,r.nodebuffer="undefined"!=typeof Buffer,r.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)r.blob=!1;else {var i=new ArrayBuffer(0);try{r.blob=0===new Blob([i],{type:"application/zip"}).size;}catch(t){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),r.blob=0===n.getBlob("application/zip").size;}catch(t){r.blob=!1;}}}try{r.nodestream=!!t("readable-stream").Readable;}catch(t){r.nodestream=!1;}},{"readable-stream":16}],31:[function(t,e,s){for(var o=t("./utils"),h=t("./support"),r=t("./nodejsUtils"),i=t("./stream/GenericWorker"),u=new Array(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;u[254]=u[254]=1;function a(){i.call(this,"utf-8 decode"),this.leftOver=null;}function l(){i.call(this,"utf-8 encode");}s.utf8encode=function(t){return h.nodebuffer?r.newBufferFrom(t,"utf-8"):function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=h.uint8array?new Uint8Array(o):new Array(o),n=s=0;s<o;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),r<128?e[s++]=r:(r<2048?e[s++]=192|r>>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e}(t)},s.utf8decode=function(t){return h.nodebuffer?o.transformTo("nodebuffer",t).toString("utf-8"):function(t){var e,r,i,n,s=t.length,a=new Array(2*s);for(e=r=0;e<s;)if((i=t[e++])<128)a[r++]=i;else if(4<(n=u[i]))a[r++]=65533,e+=n-1;else {for(i&=2===n?31:3===n?15:7;1<n&&e<s;)i=i<<6|63&t[e++],n--;1<n?a[r++]=65533:i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|1023&i);}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(t=o.transformTo(h.uint8array?"uint8array":"array",t))},o.inherits(a,i),a.prototype.processChunk=function(t){var e=o.transformTo(h.uint8array?"uint8array":"array",t.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=e;(e=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),e.set(r,this.leftOver.length);}else e=this.leftOver.concat(e);this.leftOver=null;}var i=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}(e),n=e;i!==e.length&&(h.uint8array?(n=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(n=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:s.utf8decode(n),meta:t.meta});},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null);},s.Utf8DecodeWorker=a,o.inherits(l,i),l.prototype.processChunk=function(t){this.push({data:s.utf8encode(t.data),meta:t.meta});},s.Utf8EncodeWorker=l;},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,e,a){var o=t("./support"),h=t("./base64"),r=t("./nodejsUtils"),i=t("set-immediate-shim"),u=t("./external");function n(t){return t}function l(t,e){for(var r=0;r<t.length;++r)e[r]=255&t.charCodeAt(r);return e}a.newBlob=function(e,r){a.checkSupport("blob");try{return new Blob([e],{type:r})}catch(t){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return i.append(e),i.getBlob(r)}catch(t){throw new Error("Bug : can't construct the Blob.")}}};var s={stringifyByChunk:function(t,e,r){var i=[],n=0,s=t.length;if(s<=r)return String.fromCharCode.apply(null,t);for(;n<s;)"array"===e||"nodebuffer"===e?i.push(String.fromCharCode.apply(null,t.slice(n,Math.min(n+r,s)))):i.push(String.fromCharCode.apply(null,t.subarray(n,Math.min(n+r,s)))),n+=r;return i.join("")},stringifyByChar:function(t){for(var e="",r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(t){return !1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(t){return !1}}()}};function f(t){var e=65536,r=a.getTypeOf(t),i=!0;if("uint8array"===r?i=s.applyCanBeUsed.uint8array:"nodebuffer"===r&&(i=s.applyCanBeUsed.nodebuffer),i)for(;1<e;)try{return s.stringifyByChunk(t,r,e)}catch(t){e=Math.floor(e/2);}return s.stringifyByChar(t)}function d(t,e){for(var r=0;r<t.length;r++)e[r]=t[r];return e}a.applyFromCharCode=f;var c={};c.string={string:n,array:function(t){return l(t,new Array(t.length))},arraybuffer:function(t){return c.string.uint8array(t).buffer},uint8array:function(t){return l(t,new Uint8Array(t.length))},nodebuffer:function(t){return l(t,r.allocBuffer(t.length))}},c.array={string:f,array:n,arraybuffer:function(t){return new Uint8Array(t).buffer},uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return r.newBufferFrom(t)}},c.arraybuffer={string:function(t){return f(new Uint8Array(t))},array:function(t){return d(new Uint8Array(t),new Array(t.byteLength))},arraybuffer:n,uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return r.newBufferFrom(new Uint8Array(t))}},c.uint8array={string:f,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return t.buffer},uint8array:n,nodebuffer:function(t){return r.newBufferFrom(t)}},c.nodebuffer={string:f,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return c.nodebuffer.uint8array(t).buffer},uint8array:function(t){return d(t,new Uint8Array(t.length))},nodebuffer:n},a.transformTo=function(t,e){if(e=e||"",!t)return e;a.checkSupport(t);var r=a.getTypeOf(e);return c[r][t](e)},a.getTypeOf=function(t){return "string"==typeof t?"string":"[object Array]"===Object.prototype.toString.call(t)?"array":o.nodebuffer&&r.isBuffer(t)?"nodebuffer":o.uint8array&&t instanceof Uint8Array?"uint8array":o.arraybuffer&&t instanceof ArrayBuffer?"arraybuffer":void 0},a.checkSupport=function(t){if(!o[t.toLowerCase()])throw new Error(t+" is not supported by this platform")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(t){var e,r,i="";for(r=0;r<(t||"").length;r++)i+="\\x"+((e=t.charCodeAt(r))<16?"0":"")+e.toString(16).toUpperCase();return i},a.delay=function(t,e,r){i(function(){t.apply(r||null,e||[]);});},a.inherits=function(t,e){function r(){}r.prototype=e.prototype,t.prototype=new r;},a.extend=function(){var t,e,r={};for(t=0;t<arguments.length;t++)for(e in arguments[t])arguments[t].hasOwnProperty(e)&&void 0===r[e]&&(r[e]=arguments[t][e]);return r},a.prepareContent=function(r,t,i,n,s){return u.Promise.resolve(t).then(function(i){return o.blob&&(i instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(i)))&&"undefined"!=typeof FileReader?new u.Promise(function(e,r){var t=new FileReader;t.onload=function(t){e(t.target.result);},t.onerror=function(t){r(t.target.error);},t.readAsArrayBuffer(i);}):i}).then(function(t){var e=a.getTypeOf(t);return e?("arraybuffer"===e?t=a.transformTo("uint8array",t):"string"===e&&(s?t=h.decode(t):i&&!0!==n&&(t=function(t){return l(t,o.uint8array?new Uint8Array(t.length):new Array(t.length))}(t))),t):u.Promise.reject(new Error("Can't read the data of '"+r+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})};},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"set-immediate-shim":54}],33:[function(t,e,r){var i=t("./reader/readerFor"),n=t("./utils"),s=t("./signature"),a=t("./zipEntry"),o=(t("./utf8"),t("./support"));function h(t){this.files=[],this.loadOptions=t;}h.prototype={checkSignature:function(t){if(!this.reader.readAndCheckSignature(t)){this.reader.index-=4;var e=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+n.pretty(e)+", expected "+n.pretty(t)+")")}},isSignature:function(t,e){var r=this.reader.index;this.reader.setIndex(t);var i=this.reader.readString(4)===e;return this.reader.setIndex(r),i},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var t=this.reader.readData(this.zipCommentLength),e=o.uint8array?"uint8array":"array",r=n.transformTo(e,t);this.zipComment=this.loadOptions.decodeFileName(r);},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var t,e,r,i=this.zip64EndOfCentralSize-44;0<i;)t=this.reader.readInt(2),e=this.reader.readInt(4),r=this.reader.readData(e),this.zip64ExtensibleData[t]={id:t,length:e,value:r};},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var t,e;for(t=0;t<this.files.length;t++)e=this.files[t],this.reader.setIndex(e.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),e.readLocalPart(this.reader),e.handleUTF8(),e.processAttributes();},readCentralDir:function(){var t;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(t=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(t);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var t=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(t<0)throw !this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"):new Error("Corrupted zip: can't find end of central directory");this.reader.setIndex(t);var e=t;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(t=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(t),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral();}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var i=e-r;if(0<i)this.isSignature(e,s.CENTRAL_FILE_HEADER)||(this.reader.zero=i);else if(i<0)throw new Error("Corrupted zip: missing "+Math.abs(i)+" bytes.")},prepareReader:function(t){this.reader=i(t);},load:function(t){this.prepareReader(t),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles();}},e.exports=h;},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utf8":31,"./utils":32,"./zipEntry":34}],34:[function(t,e,r){var i=t("./reader/readerFor"),s=t("./utils"),n=t("./compressedObject"),a=t("./crc32"),o=t("./utf8"),h=t("./compressions"),u=t("./support");function l(t,e){this.options=t,this.loadOptions=e;}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(t){var e,r;if(t.skip(22),this.fileNameLength=t.readInt(2),r=t.readInt(2),this.fileName=t.readData(this.fileNameLength),t.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(null===(e=function(t){for(var e in h)if(h.hasOwnProperty(e)&&h[e].magic===t)return h[e];return null}(this.compressionMethod)))throw new Error("Corrupted zip : compression "+s.pretty(this.compressionMethod)+" unknown (inner file : "+s.transformTo("string",this.fileName)+")");this.decompressed=new n(this.compressedSize,this.uncompressedSize,this.crc32,e,t.readData(this.compressedSize));},readCentralPart:function(t){this.versionMadeBy=t.readInt(2),t.skip(2),this.bitFlag=t.readInt(2),this.compressionMethod=t.readString(2),this.date=t.readDate(),this.crc32=t.readInt(4),this.compressedSize=t.readInt(4),this.uncompressedSize=t.readInt(4);var e=t.readInt(2);if(this.extraFieldsLength=t.readInt(2),this.fileCommentLength=t.readInt(2),this.diskNumberStart=t.readInt(2),this.internalFileAttributes=t.readInt(2),this.externalFileAttributes=t.readInt(4),this.localHeaderOffset=t.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");t.skip(e),this.readExtraFields(t),this.parseZIP64ExtraField(t),this.fileComment=t.readData(this.fileCommentLength);},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var t=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0);},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4));}},readExtraFields:function(t){var e,r,i,n=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4<n;)e=t.readInt(2),r=t.readInt(2),i=t.readData(r),this.extraFields[e]={id:e,length:r,value:i};t.setIndex(n);},handleUTF8:function(){var t=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else {var e=this.findExtraFieldUnicodePath();if(null!==e)this.fileNameStr=e;else {var r=s.transformTo(t,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r);}var i=this.findExtraFieldUnicodeComment();if(null!==i)this.fileCommentStr=i;else {var n=s.transformTo(t,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(n);}}},findExtraFieldUnicodePath:function(){var t=this.extraFields[28789];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:a(this.fileName)!==e.readInt(4)?null:o.utf8decode(e.readData(t.length-5))}return null},findExtraFieldUnicodeComment:function(){var t=this.extraFields[25461];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:a(this.fileComment)!==e.readInt(4)?null:o.utf8decode(e.readData(t.length-5))}return null}},e.exports=l;},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(t,e,r){function i(t,e,r){this.name=t,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=e,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions};}var s=t("./stream/StreamHelper"),n=t("./stream/DataWorker"),a=t("./utf8"),o=t("./compressedObject"),h=t("./stream/GenericWorker");i.prototype={internalStream:function(t){var e=null,r="string";try{if(!t)throw new Error("No output type specified.");var i="string"===(r=t.toLowerCase())||"text"===r;"binarystring"!==r&&"text"!==r||(r="string"),e=this._decompressWorker();var n=!this._dataBinary;n&&!i&&(e=e.pipe(new a.Utf8EncodeWorker)),!n&&i&&(e=e.pipe(new a.Utf8DecodeWorker));}catch(t){(e=new h("error")).error(t);}return new s(e,r,"")},async:function(t,e){return this.internalStream(t).accumulate(e)},nodeStream:function(t,e){return this.internalStream(t||"nodebuffer").toNodejsStream(e)},_compressWorker:function(t,e){if(this._data instanceof o&&this._data.compression.magic===t.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,t,e)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new n(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],l=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},f=0;f<u.length;f++)i.prototype[u[f]]=l;e.exports=i;},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(t,l,e){(function(e){var r,i,t=e.MutationObserver||e.WebKitMutationObserver;if(t){var n=0,s=new t(u),a=e.document.createTextNode("");s.observe(a,{characterData:!0}),r=function(){a.data=n=++n%2;};}else if(e.setImmediate||void 0===e.MessageChannel)r="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null;},e.document.documentElement.appendChild(t);}:function(){setTimeout(u,0);};else {var o=new e.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0);};}var h=[];function u(){var t,e;i=!0;for(var r=h.length;r;){for(e=h,h=[],t=-1;++t<r;)e[t]();r=h.length;}i=!1;}l.exports=function(t){1!==h.push(t)||i||r();};}).call(this,"undefined"!=typeof _commonjsHelpers.commonjsGlobal?_commonjsHelpers.commonjsGlobal:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});},{}],37:[function(t,e,r){var n=t("immediate");function u(){}var l={},s=["REJECTED"],a=["FULFILLED"],i=["PENDING"];function o(t){if("function"!=typeof t)throw new TypeError("resolver must be a function");this.state=i,this.queue=[],this.outcome=void 0,t!==u&&c(this,t);}function h(t,e,r){this.promise=t,"function"==typeof e&&(this.onFulfilled=e,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected);}function f(e,r,i){n(function(){var t;try{t=r(i);}catch(t){return l.reject(e,t)}t===e?l.reject(e,new TypeError("Cannot resolve promise with itself")):l.resolve(e,t);});}function d(t){var e=t&&t.then;if(t&&("object"==typeof t||"function"==typeof t)&&"function"==typeof e)return function(){e.apply(t,arguments);}}function c(e,t){var r=!1;function i(t){r||(r=!0,l.reject(e,t));}function n(t){r||(r=!0,l.resolve(e,t));}var s=p(function(){t(n,i);});"error"===s.status&&i(s.value);}function p(t,e){var r={};try{r.value=t(e),r.status="success";}catch(t){r.status="error",r.value=t;}return r}(e.exports=o).prototype.finally=function(e){if("function"!=typeof e)return this;var r=this.constructor;return this.then(function(t){return r.resolve(e()).then(function(){return t})},function(t){return r.resolve(e()).then(function(){throw t})})},o.prototype.catch=function(t){return this.then(null,t)},o.prototype.then=function(t,e){if("function"!=typeof t&&this.state===a||"function"!=typeof e&&this.state===s)return this;var r=new this.constructor(u);this.state!==i?f(r,this.state===a?t:e,this.outcome):this.queue.push(new h(r,t,e));return r},h.prototype.callFulfilled=function(t){l.resolve(this.promise,t);},h.prototype.otherCallFulfilled=function(t){f(this.promise,this.onFulfilled,t);},h.prototype.callRejected=function(t){l.reject(this.promise,t);},h.prototype.otherCallRejected=function(t){f(this.promise,this.onRejected,t);},l.resolve=function(t,e){var r=p(d,e);if("error"===r.status)return l.reject(t,r.value);var i=r.value;if(i)c(t,i);else {t.state=a,t.outcome=e;for(var n=-1,s=t.queue.length;++n<s;)t.queue[n].callFulfilled(e);}return t},l.reject=function(t,e){t.state=s,t.outcome=e;for(var r=-1,i=t.queue.length;++r<i;)t.queue[r].callRejected(e);return t},o.resolve=function(t){if(t instanceof this)return t;return l.resolve(new this(u),t)},o.reject=function(t){var e=new this(u);return l.reject(e,t)},o.all=function(t){var r=this;if("[object Array]"!==Object.prototype.toString.call(t))return this.reject(new TypeError("must be an array"));var i=t.length,n=!1;if(!i)return this.resolve([]);var s=new Array(i),a=0,e=-1,o=new this(u);for(;++e<i;)h(t[e],e);return o;function h(t,e){r.resolve(t).then(function(t){s[e]=t,++a!==i||n||(n=!0,l.resolve(o,s));},function(t){n||(n=!0,l.reject(o,t));});}},o.race=function(t){var e=this;if("[object Array]"!==Object.prototype.toString.call(t))return this.reject(new TypeError("must be an array"));var r=t.length,i=!1;if(!r)return this.resolve([]);var n=-1,s=new this(u);for(;++n<r;)a=t[n],e.resolve(a).then(function(t){i||(i=!0,l.resolve(s,t));},function(t){i||(i=!0,l.reject(s,t));});var a;return s};},{immediate:36}],38:[function(t,e,r){var i={};(0, t("./lib/utils/common").assign)(i,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),e.exports=i;},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,e,r){var a=t("./zlib/deflate"),o=t("./utils/common"),h=t("./utils/strings"),n=t("./zlib/messages"),s=t("./zlib/zstream"),u=Object.prototype.toString,l=0,f=-1,d=0,c=8;function p(t){if(!(this instanceof p))return new p(t);this.options=o.assign({level:f,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:d,to:""},t||{});var e=this.options;e.raw&&0<e.windowBits?e.windowBits=-e.windowBits:e.gzip&&0<e.windowBits&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==l)throw new Error(n[r]);if(e.header&&a.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(i="string"==typeof e.dictionary?h.string2buf(e.dictionary):"[object ArrayBuffer]"===u.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(r=a.deflateSetDictionary(this.strm,i))!==l)throw new Error(n[r]);this._dict_set=!0;}}function i(t,e){var r=new p(e);if(r.push(t,!0),r.err)throw r.msg||n[r.err];return r.result}p.prototype.push=function(t,e){var r,i,n=this.strm,s=this.options.chunkSize;if(this.ended)return !1;i=e===~~e?e:!0===e?4:0,"string"==typeof t?n.input=h.string2buf(t):"[object ArrayBuffer]"===u.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new o.Buf8(s),n.next_out=0,n.avail_out=s),1!==(r=a.deflate(n,i))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||("string"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(n.output,n.next_out))):this.onData(o.shrinkBuf(n.output,n.next_out)));}while((0<n.avail_in||0===n.avail_out)&&1!==r);return 4===i?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==i||(this.onEnd(l),!(n.avail_out=0))},p.prototype.onData=function(t){this.chunks.push(t);},p.prototype.onEnd=function(t){t===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg;},r.Deflate=p,r.deflate=i,r.deflateRaw=function(t,e){return (e=e||{}).raw=!0,i(t,e)},r.gzip=function(t,e){return (e=e||{}).gzip=!0,i(t,e)};},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(t,e,r){var d=t("./zlib/inflate"),c=t("./utils/common"),p=t("./utils/strings"),m=t("./zlib/constants"),i=t("./zlib/messages"),n=t("./zlib/zstream"),s=t("./zlib/gzheader"),_=Object.prototype.toString;function a(t){if(!(this instanceof a))return new a(t);this.options=c.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&0<=e.windowBits&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(0<=e.windowBits&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),15<e.windowBits&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new n,this.strm.avail_out=0;var r=d.inflateInit2(this.strm,e.windowBits);if(r!==m.Z_OK)throw new Error(i[r]);this.header=new s,d.inflateGetHeader(this.strm,this.header);}function o(t,e){var r=new a(e);if(r.push(t,!0),r.err)throw r.msg||i[r.err];return r.result}a.prototype.push=function(t,e){var r,i,n,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return !1;i=e===~~e?e:!0===e?m.Z_FINISH:m.Z_NO_FLUSH,"string"==typeof t?h.input=p.binstring2buf(t):"[object ArrayBuffer]"===_.call(t)?h.input=new Uint8Array(t):h.input=t,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new c.Buf8(u),h.next_out=0,h.avail_out=u),(r=d.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o="string"==typeof l?p.string2buf(l):"[object ArrayBuffer]"===_.call(l)?new Uint8Array(l):l,r=d.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||i!==m.Z_FINISH&&i!==m.Z_SYNC_FLUSH)||("string"===this.options.to?(n=p.utf8border(h.output,h.next_out),s=h.next_out-n,a=p.buf2string(h.output,n),h.next_out=s,h.avail_out=u-s,s&&c.arraySet(h.output,h.output,n,s,0),this.onData(a)):this.onData(c.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0);}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(i=m.Z_FINISH),i===m.Z_FINISH?(r=d.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):i!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(t){this.chunks.push(t);},a.prototype.onEnd=function(t){t===m.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=c.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg;},r.Inflate=a,r.inflate=o,r.inflateRaw=function(t,e){return (e=e||{}).raw=!0,o(t,e)},r.ungzip=o;},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(t,e,r){var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);}}return t},r.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var s=0;s<i;s++)t[n+s]=e[r+s];},flattenChunks:function(t){var e,r,i,n,s,a;for(e=i=0,r=t.length;e<r;e++)i+=t[e].length;for(a=new Uint8Array(i),e=n=0,r=t.length;e<r;e++)s=t[e],a.set(s,n),n+=s.length;return a}},s={arraySet:function(t,e,r,i,n){for(var s=0;s<i;s++)t[n+s]=e[r+s];},flattenChunks:function(t){return [].concat.apply([],t)}};r.setTyped=function(t){t?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,n)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s));},r.setTyped(i);},{}],42:[function(t,e,r){var h=t("./common"),n=!0,s=!0;try{String.fromCharCode.apply(null,[0]);}catch(t){n=!1;}try{String.fromCharCode.apply(null,new Uint8Array(1));}catch(t){s=!1;}for(var u=new h.Buf8(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function l(t,e){if(e<65537&&(t.subarray&&s||!t.subarray&&n))return String.fromCharCode.apply(null,h.shrinkBuf(t,e));for(var r="",i=0;i<e;i++)r+=String.fromCharCode(t[i]);return r}u[254]=u[254]=1,r.string2buf=function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=new h.Buf8(o),n=s=0;s<o;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),r<128?e[s++]=r:(r<2048?e[s++]=192|r>>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e},r.buf2binstring=function(t){return l(t,t.length)},r.binstring2buf=function(t){for(var e=new h.Buf8(t.length),r=0,i=e.length;r<i;r++)e[r]=t.charCodeAt(r);return e},r.buf2string=function(t,e){var r,i,n,s,a=e||t.length,o=new Array(2*a);for(r=i=0;r<a;)if((n=t[r++])<128)o[i++]=n;else if(4<(s=u[n]))o[i++]=65533,r+=s-1;else {for(n&=2===s?31:3===s?15:7;1<s&&r<a;)n=n<<6|63&t[r++],s--;1<s?o[i++]=65533:n<65536?o[i++]=n:(n-=65536,o[i++]=55296|n>>10&1023,o[i++]=56320|1023&n);}return l(o,i)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e};},{"./common":41}],43:[function(t,e,r){e.exports=function(t,e,r,i){for(var n=65535&t|0,s=t>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(n=n+e[i++]|0)|0,--a;);n%=65521,s%=65521;}return n|s<<16|0};},{}],44:[function(t,e,r){e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};},{}],45:[function(t,e,r){var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t;}return e}();e.exports=function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return -1^t};},{}],46:[function(t,e,r){var h,d=t("../utils/common"),u=t("./trees"),c=t("./adler32"),p=t("./crc32"),i=t("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,n=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(t,e){return t.msg=i[e],e}function T(t){return (t<<1)-(4<t?9:0)}function D(t){for(var e=t.length;0<=--e;)t[e]=0;}function F(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(d.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0));}function N(t,e){u._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,F(t.strm);}function U(t,e){t.pending_buf[t.pending++]=e;}function P(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e;}function L(t,e){var r,i,n=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,u=t.window,l=t.w_mask,f=t.prev,d=t.strstart+S,c=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-1]===c&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<d);if(i=S-(d-s),s=d-S,a<i){if(t.match_start=e,o<=(a=i))break;c=u[s+a-1],p=u[s+a];}}}while((e=f[e&l])>h&&0!=--n);return a<=t.lookahead?a:t.lookahead}function j(t){var e,r,i,n,s,a,o,h,u,l,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-z)){for(d.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=r=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--r;);for(e=r=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--r;);n+=f;}if(0===t.strm.avail_in)break;if(a=t.strm,o=t.window,h=t.strstart+t.lookahead,u=n,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,d.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=c(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),t.lookahead+=r,t.lookahead+t.insert>=x)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+x-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<x)););}while(t.lookahead<z&&0!==t.strm.avail_in)}function Z(t,e){for(var r,i;;){if(t.lookahead<z){if(j(t),t.lookahead<z&&e===l)return A;if(0===t.lookahead)break}if(r=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-z&&(t.match_length=L(t,r)),t.match_length>=x)if(i=u._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++;}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}function W(t,e){for(var r,i,n;;){if(t.lookahead<z){if(j(t),t.lookahead<z&&e===l)return A;if(0===t.lookahead)break}if(r=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=x-1,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-z&&(t.match_length=L(t,r),t.match_length<=5&&(1===t.strategy||t.match_length===x&&4096<t.strstart-t.match_start)&&(t.match_length=x-1)),t.prev_length>=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=u._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=x-1,t.strstart++,i&&(N(t,!1),0===t.strm.avail_out))return A}else if(t.match_available){if((i=u._tr_tally(t,0,t.window[t.strstart-1]))&&N(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return A}else t.match_available=1,t.strstart++,t.lookahead--;}return t.match_available&&(i=u._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}function M(t,e,r,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=i,this.func=n;}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new d.Buf16(2*w),this.dyn_dtree=new d.Buf16(2*(2*a+1)),this.bl_tree=new d.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new d.Buf16(k+1),this.heap=new d.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new d.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0;}function G(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=n,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?C:E,t.adler=2===e.wrap?0:1,e.last_flush=l,u._tr_init(e),m):R(t,_)}function K(t){var e=G(t);return e===m&&function(t){t.window_size=2*t.w_size,D(t.head),t.max_lazy_match=h[t.level].max_lazy,t.good_match=h[t.level].good_length,t.nice_match=h[t.level].nice_length,t.max_chain_length=h[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=x-1,t.match_available=0,t.ins_h=0;}(t.state),e}function Y(t,e,r,i,n,s){if(!t)return _;var a=1;if(e===g&&(e=6),i<0?(a=0,i=-i):15<i&&(a=2,i-=16),n<1||y<n||r!==v||i<8||15<i||e<0||9<e||s<0||b<s)return R(t,_);8===i&&(i=9);var o=new H;return (t.state=o).strm=t,o.wrap=a,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new d.Buf8(2*o.w_size),o.head=new d.Buf16(o.hash_size),o.prev=new d.Buf16(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new d.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=s,o.method=r,K(t)}h=[new M(0,0,0,0,function(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(j(t),0===t.lookahead&&e===l)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-z&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(t,e){return Y(t,e,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?_:(t.state.gzhead=e,m):_},r.deflate=function(t,e){var r,i,n,s;if(!t||!t.state||5<e||e<0)return t?R(t,_):_;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||666===i.status&&e!==f)return R(t,0===t.avail_out?-5:_);if(i.strm=t,r=i.last_flush,i.last_flush=e,i.status===C)if(2===i.wrap)t.adler=0,U(i,31),U(i,139),U(i,8),i.gzhead?(U(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),U(i,255&i.gzhead.time),U(i,i.gzhead.time>>8&255),U(i,i.gzhead.time>>16&255),U(i,i.gzhead.time>>24&255),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(U(i,255&i.gzhead.extra.length),U(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=p(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(U(i,0),U(i,0),U(i,0),U(i,0),U(i,0),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,3),i.status=E);else {var a=v+(i.w_bits-8<<4)<<8;a|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(a|=32),a+=31-a%31,i.status=E,P(i,a),0!==i.strstart&&(P(i,t.adler>>>16),P(i,65535&t.adler)),t.adler=1;}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending!==i.pending_buf_size));)U(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73);}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,U(i,s);}while(0!==s);i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.gzindex=0,i.status=91);}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,U(i,s);}while(0!==s);i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.status=103);}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&F(t),i.pending+2<=i.pending_buf_size&&(U(i,255&t.adler),U(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(F(t),0===t.avail_out)return i.last_flush=-1,m}else if(0===t.avail_in&&T(e)<=T(r)&&e!==f)return R(t,-5);if(666===i.status&&0!==t.avail_in)return R(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==l&&666!==i.status){var o=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(j(t),0===t.lookahead)){if(e===l)return A;break}if(t.match_length=0,r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):3===i.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=S){if(j(t),t.lookahead<=S&&e===l)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0<t.strstart&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+S;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&n<s);t.match_length=S-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead);}if(t.match_length>=x?(r=u._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):h[i.level].func(i,e);if(o!==O&&o!==B||(i.status=666),o===A||o===O)return 0===t.avail_out&&(i.last_flush=-1),m;if(o===I&&(1===e?u._tr_align(i):5!==e&&(u._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),F(t),0===t.avail_out))return i.last_flush=-1,m}return e!==f?m:i.wrap<=0?1:(2===i.wrap?(U(i,255&t.adler),U(i,t.adler>>8&255),U(i,t.adler>>16&255),U(i,t.adler>>24&255),U(i,255&t.total_in),U(i,t.total_in>>8&255),U(i,t.total_in>>16&255),U(i,t.total_in>>24&255)):(P(i,t.adler>>>16),P(i,65535&t.adler)),F(t),0<i.wrap&&(i.wrap=-i.wrap),0!==i.pending?m:1)},r.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==C&&69!==e&&73!==e&&91!==e&&103!==e&&e!==E&&666!==e?R(t,_):(t.state=null,e===E?R(t,-3):m):_},r.deflateSetDictionary=function(t,e){var r,i,n,s,a,o,h,u,l=e.length;if(!t||!t.state)return _;if(2===(s=(r=t.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(t.adler=c(t.adler,e,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new d.Buf8(r.w_size),d.arraySet(u,e,l-r.w_size,r.w_size,0),e=u,l=r.w_size),a=t.avail_in,o=t.next_in,h=t.input,t.avail_in=l,t.next_in=0,t.input=e,j(r);r.lookahead>=x;){for(i=r.strstart,n=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+x-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++,--n;);r.strstart=i,r.lookahead=x-1,j(r);}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,t.next_in=o,t.input=h,t.avail_in=a,r.wrap=s,m},r.deflateInfo="pako deflate (from Nodeca project)";},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(t,e,r){e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1;};},{}],48:[function(t,e,r){e.exports=function(t,e){var r,i,n,s,a,o,h,u,l,f,d,c,p,m,_,g,b,v,y,w,k,x,S,z,C;r=t.state,i=t.next_in,z=t.input,n=i+(t.avail_in-5),s=t.next_out,C=t.output,a=s-(e-t.avail_out),o=s+(t.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,d=r.window,c=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;t:do{p<15&&(c+=z[i++]<<p,p+=8,c+=z[i++]<<p,p+=8),v=m[c&g];e:for(;;){if(c>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else {if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(c&(1<<y)-1)];continue e}if(32&y){r.mode=12;break t}t.msg="invalid literal/length code",r.mode=30;break t}w=65535&v,(y&=15)&&(p<y&&(c+=z[i++]<<p,p+=8),w+=c&(1<<y)-1,c>>>=y,p-=y),p<15&&(c+=z[i++]<<p,p+=8,c+=z[i++]<<p,p+=8),v=_[c&b];r:for(;;){if(c>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(c&(1<<y)-1)];continue r}t.msg="invalid distance code",r.mode=30;break t}if(k=65535&v,p<(y&=15)&&(c+=z[i++]<<p,(p+=8)<y&&(c+=z[i++]<<p,p+=8)),h<(k+=c&(1<<y)-1)){t.msg="invalid distance too far back",r.mode=30;break t}if(c>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){t.msg="invalid distance too far back",r.mode=30;break t}if(S=d,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=d[x++],--y;);x=s-k,S=C;}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=d[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=d[x++],--y;);x=s-k,S=C;}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=d[x++],--y;);x=s-k,S=C;}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]));}else {for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]));}break}}break}}while(i<n&&s<o);i-=w=p>>3,c&=(1<<(p-=w<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=s<o?o-s+257:257-(s-o),r.hold=c,r.bits=p;};},{}],49:[function(t,e,r){var I=t("../utils/common"),O=t("./adler32"),B=t("./crc32"),R=t("./inffast"),T=t("./inftrees"),D=1,F=2,N=0,U=-2,P=1,i=852,n=592;function L(t){return (t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0;}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=P,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new I.Buf32(i),e.distcode=e.distdyn=new I.Buf32(n),e.sane=1,e.back=-1,N):U}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):U}function h(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15<e)?U:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,o(t))):U}function u(t,e){var r,i;return t?(i=new s,(t.state=i).window=null,(r=h(t,e))!==N&&(t.state=null),r):U}var l,f,d=!0;function j(t){if(d){var e;for(l=new I.Buf32(512),f=new I.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(T(D,t.lens,0,288,l,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;T(F,t.lens,0,32,f,0,t.work,{bits:5}),d=!1;}t.lencode=l,t.lenbits=9,t.distcode=f,t.distbits=5;}function Z(t,e,r,i){var n,s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),i>=s.wsize?(I.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i<(n=s.wsize-s.wnext)&&(n=i),I.arraySet(s.window,e,r-i,n,s.wnext),(i-=n)?(I.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(t){return u(t,15)},r.inflateInit2=u,r.inflate=function(t,e){var r,i,n,s,a,o,h,u,l,f,d,c,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return U;12===(r=t.state).mode&&(r.mode=13),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,f=o,d=h,x=N;t:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){t.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg="invalid window size",r.mode=30;break}r.dmax=1<<k,t.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(r.flags=u,8!=(255&r.flags)){t.msg="unknown compression method",r.mode=30;break}if(57344&r.flags){t.msg="unknown header flags set",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0;}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,i,s,c,k)),512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,r.length-=c),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,k)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,k)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(u!==(65535&r.check)){t.msg="header crc mismatch",r.mode=30;break}l=u=0;}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}t.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,2;t.adler=r.check=1,r.mode=12;case 12:if(5===e||6===e)break t;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==e)break;u>>>=2,l-=2;break t;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=30;}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if((65535&u)!=(u>>>16^65535)){t.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(c=r.length){if(o<c&&(c=o),h<c&&(c=h),0===c)break t;I.arraySet(n,i,s,c,a),o-=c,s+=c,h-=c,a+=c,r.length-=c;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){t.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3;}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else {if(16===b){for(z=_+2;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(u>>>=_,l-=_,0===r.have){t.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,l-=2;}else if(17===b){for(z=_+3;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}l-=_,k=0,c=3+(7&(u>>>=_)),u>>>=3,l-=3;}else {for(z=_+7;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}l-=_,k=0,c=11+(127&(u>>>=_)),u>>>=7,l-=7;}if(r.have+c>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=30;break}for(;c--;)r.lens[r.have++]=k;}}if(30===r.mode)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){t.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=o&&258<=h){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,R(t,d),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}u>>>=v,l-=v,r.back+=v;}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){t.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra;}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}u>>>=v,l-=v,r.back+=v;}if(u>>>=_,l-=_,r.back+=_,64&g){t.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra;}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break t;if(c=d-h,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window;}else m=n,p=a-r.offset,c=r.length;for(h<c&&(c=h),h-=c,r.length-=c;n[a++]=m[p++],--c;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break t;n[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break t;o--,u|=i[s++]<<l,l+=8;}if(d-=h,t.total_out+=d,r.total+=d,d&&(t.adler=r.check=r.flags?B(r.check,n,d,a-d):O(r.check,n,d,a-d)),d=h,(r.flags?u:L(u))!==r.check){t.msg="incorrect data check",r.mode=30;break}l=u=0;}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8;}if(u!==(4294967295&r.total)){t.msg="incorrect length check",r.mode=30;break}l=u=0;}r.mode=29;case 29:x=1;break t;case 30:x=-3;break t;case 31:return -4;case 32:default:return U}return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,(r.wsize||d!==t.avail_out&&r.mode<30&&(r.mode<27||4!==e))&&Z(t,t.output,t.next_out,d-t.avail_out)?(r.mode=31,-4):(f-=t.avail_in,d-=t.avail_out,t.total_in+=f,t.total_out+=d,r.total+=d,r.wrap&&d&&(t.adler=r.check=r.flags?B(r.check,n,d,t.next_out-d):O(r.check,n,d,t.next_out-d)),t.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===d||4===e)&&x===N&&(x=-5),x)},r.inflateEnd=function(t){if(!t||!t.state)return U;var e=t.state;return e.window&&(e.window=null),t.state=null,N},r.inflateGetHeader=function(t,e){var r;return t&&t.state?0==(2&(r=t.state).wrap)?U:((r.head=e).done=!1,N):U},r.inflateSetDictionary=function(t,e){var r,i=e.length;return t&&t.state?0!==(r=t.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,e,i,0)!==r.check?-3:Z(t,e,i,i)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo="pako inflate (from Nodeca project)";},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(t,e,r){var D=t("../utils/common"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,r,i,n,s,a,o){var h,u,l,f,d,c,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<i;v++)O[e[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return -1;if(0<z&&(0===t||1!==w))return -1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<i;v++)0!==e[r+v]&&(a[B[e[r+v]]++]=v);if(c=0===t?(A=R=a,19):1===t?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,d=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===t&&852<C||2===t&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<c?(m=0,a[v]):a[v]>c?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;n[d+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=e[r+a[v]];}if(k<b&&(E&f)!==l){for(0===S&&(S=k),d+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===t&&852<C||2===t&&592<C)return 1;n[l=E&f]=k<<24|x<<16|d-s|0;}}return 0!==E&&(n[d+E]=b-S<<24|64<<16|0),o.bits=k,0};},{"../utils/common":41}],51:[function(t,e,r){e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};},{}],52:[function(t,e,r){var n=t("../utils/common"),o=0,h=1;function i(t){for(var e=t.length;0<=--e;)t[e]=0;}var s=0,a=29,u=256,l=u+1+a,f=30,d=19,_=2*l+1,g=15,c=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));i(z);var C=new Array(2*f);i(C);var E=new Array(512);i(E);var A=new Array(256);i(A);var I=new Array(a);i(I);var O,B,R,T=new Array(f);function D(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length;}function F(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e;}function N(t){return t<256?E[t]:E[256+(t>>>7)]}function U(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255;}function P(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<<t.bi_valid&65535,U(t,t.bi_buf),t.bi_buf=e>>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r);}function L(t,e,r){P(t,r[2*e],r[2*e+1]);}function j(t,e){for(var r=0;r|=1&t,t>>>=1,r<<=1,0<--e;);return r>>>1}function Z(t,e,r){var i,n,s=new Array(g+1),a=0;for(i=1;i<=g;i++)s[i]=a=a+r[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=j(s[o]++,o));}}function W(t){var e;for(e=0;e<l;e++)t.dyn_ltree[2*e]=0;for(e=0;e<f;e++)t.dyn_dtree[2*e]=0;for(e=0;e<d;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*m]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0;}function M(t){8<t.bi_valid?U(t,t.bi_buf):0<t.bi_valid&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0;}function H(t,e,r,i){var n=2*e,s=2*r;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[r]}function G(t,e,r){for(var i=t.heap[r],n=r<<1;n<=t.heap_len&&(n<t.heap_len&&H(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!H(e,i,t.heap[n],t.depth));)t.heap[r]=t.heap[n],r=n,n<<=1;t.heap[r]=i;}function K(t,e,r){var i,n,s,a,o=0;if(0!==t.last_lit)for(;i=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],n=t.pending_buf[t.l_buf+o],o++,0===i?L(t,n,e):(L(t,(s=A[n])+u+1,e),0!==(a=w[s])&&P(t,n-=I[s],a),L(t,s=N(--i),r),0!==(a=k[s])&&P(t,i-=T[s],a)),o<t.last_lit;);L(t,m,e);}function Y(t,e){var r,i,n,s=e.dyn_tree,a=e.stat_desc.static_tree,o=e.stat_desc.has_stree,h=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(t.heap[++t.heap_len]=u=r,t.depth[r]=0):s[2*r+1]=0;for(;t.heap_len<2;)s[2*(n=t.heap[++t.heap_len]=u<2?++u:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=a[2*n+1]);for(e.max_code=u,r=t.heap_len>>1;1<=r;r--)G(t,s,r);for(n=h;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,s,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,s[2*n]=s[2*r]+s[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,s[2*r+1]=s[2*i+1]=n,t.heap[1]=n++,G(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,s,a,o,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(s=0;s<=g;s++)t.bl_count[s]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<_;r++)p<(s=h[2*h[2*(i=t.heap[r])+1]+1]+1)&&(s=p,m++),h[2*i+1]=s,u<i||(t.bl_count[s]++,a=0,c<=i&&(a=d[i-c]),o=h[2*i],t.opt_len+=o*(s+a),f&&(t.static_len+=o*(l[2*i+1]+a)));if(0!==m){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,m-=2;}while(0<m);for(s=p;0!==s;s--)for(i=t.bl_count[s];0!==i;)u<(n=t.heap[--r])||(h[2*n+1]!==s&&(t.opt_len+=(s-h[2*n+1])*h[2*n],h[2*n+1]=s),i--);}}(t,e),Z(s,u,t.bl_count);}function X(t,e,r){var i,n,s=-1,a=e[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=a,a=e[2*(i+1)+1],++o<h&&n===a||(o<u?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[2*b]++):o<=10?t.bl_tree[2*v]++:t.bl_tree[2*y]++,s=n,u=(o=0)===a?(h=138,3):n===a?(h=6,3):(h=7,4));}function V(t,e,r){var i,n,s=-1,a=e[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),i=0;i<=r;i++)if(n=a,a=e[2*(i+1)+1],!(++o<h&&n===a)){if(o<u)for(;L(t,n,t.bl_tree),0!=--o;);else 0!==n?(n!==s&&(L(t,n,t.bl_tree),o--),L(t,b,t.bl_tree),P(t,o-3,2)):o<=10?(L(t,v,t.bl_tree),P(t,o-3,3)):(L(t,y,t.bl_tree),P(t,o-11,7));s=n,u=(o=0)===a?(h=138,3):n===a?(h=6,3):(h=7,4);}}i(T);var q=!1;function J(t,e,r,i){P(t,(s<<1)+(i?1:0),3),function(t,e,r,i){M(t),i&&(U(t,r),U(t,~r)),n.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r;}(t,e,r,!0);}r._tr_init=function(t){q||(function(){var t,e,r,i,n,s=new Array(g+1);for(i=r=0;i<a-1;i++)for(I[i]=r,t=0;t<1<<w[i];t++)A[r++]=i;for(A[r-1]=i,i=n=0;i<16;i++)for(T[i]=n,t=0;t<1<<k[i];t++)E[n++]=i;for(n>>=7;i<f;i++)for(T[i]=n<<7,t=0;t<1<<k[i]-7;t++)E[256+n++]=i;for(e=0;e<=g;e++)s[e]=0;for(t=0;t<=143;)z[2*t+1]=8,t++,s[8]++;for(;t<=255;)z[2*t+1]=9,t++,s[9]++;for(;t<=279;)z[2*t+1]=7,t++,s[7]++;for(;t<=287;)z[2*t+1]=8,t++,s[8]++;for(Z(z,l+1,s),t=0;t<f;t++)C[2*t+1]=5,C[2*t]=j(t,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,d,p);}(),q=!0),t.l_desc=new F(t.dyn_ltree,O),t.d_desc=new F(t.dyn_dtree,B),t.bl_desc=new F(t.bl_tree,R),t.bi_buf=0,t.bi_valid=0,W(t);},r._tr_stored_block=J,r._tr_flush_block=function(t,e,r,i){var n,s,a=0;0<t.level?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e<u;e++)if(0!==t.dyn_ltree[2*e])return h;return o}(t)),Y(t,t.l_desc),Y(t,t.d_desc),a=function(t){var e;for(X(t,t.dyn_ltree,t.l_desc.max_code),X(t,t.dyn_dtree,t.d_desc.max_code),Y(t,t.bl_desc),e=d-1;3<=e&&0===t.bl_tree[2*S[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=n&&(n=s)):n=s=r+5,r+4<=n&&-1!==e?J(t,e,r,i):4===t.strategy||s===n?(P(t,2+(i?1:0),3),K(t,z,C)):(P(t,4+(i?1:0),3),function(t,e,r,i){var n;for(P(t,e-257,5),P(t,r-1,5),P(t,i-4,4),n=0;n<i;n++)P(t,t.bl_tree[2*S[n]+1],3);V(t,t.dyn_ltree,e-1),V(t,t.dyn_dtree,r-1);}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),K(t,t.dyn_ltree,t.dyn_dtree)),W(t),i&&M(t);},r._tr_tally=function(t,e,r){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(A[r]+u+1)]++,t.dyn_dtree[2*N(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){P(t,2,3),L(t,m,z),function(t){16===t.bi_valid?(U(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8);}(t);};},{"../utils/common":41}],53:[function(t,e,r){e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0;};},{}],54:[function(t,e,r){e.exports="function"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t);};},{}]},{},[10])(10)});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Reads XLSX file in a browser.
|
|
34
|
+
* @param {file} file - A file being uploaded in the browser.
|
|
35
|
+
* @return {Promise} Resolves to an object holding XLSX file entries.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
function unpackXlsxFile(file) {
|
|
39
|
+
return jszip_min.loadAsync(file).then(function (zip) {
|
|
40
|
+
var files = [];
|
|
41
|
+
zip.forEach(function (relativePath, zipEntry) {
|
|
42
|
+
if (!zipEntry.dir) {
|
|
43
|
+
files.push(zipEntry.name);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
var entries = {};
|
|
47
|
+
return Promise.all(files.map(function (file) {
|
|
48
|
+
return zip.file(file).async('string').then(function (content) {
|
|
49
|
+
return entries[file] = content;
|
|
50
|
+
});
|
|
51
|
+
})).then(function () {
|
|
52
|
+
return entries;
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function findChild(node, tagName) {
|
|
58
|
+
var i = 0;
|
|
59
|
+
|
|
60
|
+
while (i < node.childNodes.length) {
|
|
61
|
+
var childNode = node.childNodes[i]; // `nodeType: 1` means "Element".
|
|
62
|
+
// https://www.w3schools.com/xml/prop_element_nodetype.asp
|
|
63
|
+
|
|
64
|
+
if (childNode.nodeType === 1 && getTagName(childNode) === tagName) {
|
|
65
|
+
return childNode;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
i++;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function findChildren(node, tagName) {
|
|
72
|
+
var results = [];
|
|
73
|
+
var i = 0;
|
|
74
|
+
|
|
75
|
+
while (i < node.childNodes.length) {
|
|
76
|
+
var childNode = node.childNodes[i]; // `nodeType: 1` means "Element".
|
|
77
|
+
// https://www.w3schools.com/xml/prop_element_nodetype.asp
|
|
78
|
+
|
|
79
|
+
if (childNode.nodeType === 1 && getTagName(childNode) === tagName) {
|
|
80
|
+
results.push(childNode);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
i++;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return results;
|
|
87
|
+
}
|
|
88
|
+
function forEach(node, tagName, func) {
|
|
89
|
+
// if (typeof tagName === 'function') {
|
|
90
|
+
// func = tagName
|
|
91
|
+
// tagName = undefined
|
|
92
|
+
// }
|
|
93
|
+
var i = 0;
|
|
94
|
+
|
|
95
|
+
while (i < node.childNodes.length) {
|
|
96
|
+
var childNode = node.childNodes[i];
|
|
97
|
+
|
|
98
|
+
if (tagName) {
|
|
99
|
+
// `nodeType: 1` means "Element".
|
|
100
|
+
// https://www.w3schools.com/xml/prop_element_nodetype.asp
|
|
101
|
+
if (childNode.nodeType === 1 && getTagName(childNode) === tagName) {
|
|
102
|
+
func(childNode, i);
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
func(childNode, i);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
i++;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function map(node, tagName, func) {
|
|
112
|
+
var results = [];
|
|
113
|
+
forEach(node, tagName, function (node, i) {
|
|
114
|
+
results.push(func(node, i));
|
|
115
|
+
});
|
|
116
|
+
return results;
|
|
117
|
+
}
|
|
118
|
+
var NAMESPACE_REG_EXP = /.+\:/;
|
|
119
|
+
function getTagName(element) {
|
|
120
|
+
// For some weird reason, if an element is declared as,
|
|
121
|
+
// for example, `<x:sheets/>`, then its `.tagName` will be
|
|
122
|
+
// "x:sheets" instead of just "sheets".
|
|
123
|
+
// https://gitlab.com/catamphetamine/read-excel-file/-/issues/25
|
|
124
|
+
// Its not clear how to tell it to ignore any namespaces
|
|
125
|
+
// when getting `.tagName`, so just replacing anything
|
|
126
|
+
// before a colon, if any.
|
|
127
|
+
return element.tagName.replace(NAMESPACE_REG_EXP, '');
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function getCells(document) {
|
|
131
|
+
var worksheet = document.documentElement;
|
|
132
|
+
var sheetData = findChild(worksheet, 'sheetData');
|
|
133
|
+
var cells = [];
|
|
134
|
+
forEach(sheetData, 'row', function (row) {
|
|
135
|
+
forEach(row, 'c', function (cell) {
|
|
136
|
+
cells.push(cell);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
return cells;
|
|
140
|
+
}
|
|
141
|
+
function getCellValue$1(document, node) {
|
|
142
|
+
return findChild(node, 'v');
|
|
143
|
+
}
|
|
144
|
+
function getCellInlineStringValue(document, node) {
|
|
145
|
+
if (node.firstChild && getTagName(node.firstChild) === 'is' && node.firstChild.firstChild && getTagName(node.firstChild.firstChild) === 't') {
|
|
146
|
+
return node.firstChild.firstChild.textContent;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function getDimensions(document) {
|
|
150
|
+
var worksheet = document.documentElement;
|
|
151
|
+
var dimensions = findChild(worksheet, 'dimension');
|
|
152
|
+
|
|
153
|
+
if (dimensions) {
|
|
154
|
+
return dimensions.getAttribute('ref');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function getBaseStyles(document) {
|
|
158
|
+
var styleSheet = document.documentElement;
|
|
159
|
+
var cellStyleXfs = findChild(styleSheet, 'cellStyleXfs');
|
|
160
|
+
|
|
161
|
+
if (cellStyleXfs) {
|
|
162
|
+
return findChildren(cellStyleXfs, 'xf');
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
function getCellStyles(document) {
|
|
168
|
+
var styleSheet = document.documentElement;
|
|
169
|
+
var cellXfs = findChild(styleSheet, 'cellXfs');
|
|
170
|
+
|
|
171
|
+
if (!cellXfs) {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return findChildren(cellXfs, 'xf');
|
|
176
|
+
}
|
|
177
|
+
function getNumberFormats(document) {
|
|
178
|
+
var styleSheet = document.documentElement;
|
|
179
|
+
var numFmts = findChild(styleSheet, 'numFmts');
|
|
180
|
+
|
|
181
|
+
if (numFmts) {
|
|
182
|
+
return findChildren(numFmts, 'numFmt');
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
function getSharedStrings(document) {
|
|
188
|
+
// An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` ("rich formatting") elements having `<t/>`.
|
|
189
|
+
// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1
|
|
190
|
+
// http://www.datypic.com/sc/ooxml/e-ssml_si-1.html
|
|
191
|
+
var sst = document.documentElement;
|
|
192
|
+
return map(sst, 'si', function (string) {
|
|
193
|
+
var t = findChild(string, 't');
|
|
194
|
+
|
|
195
|
+
if (t) {
|
|
196
|
+
return t.textContent;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
var value = '';
|
|
200
|
+
forEach(string, 'r', function (r) {
|
|
201
|
+
value += findChild(r, 't').textContent;
|
|
202
|
+
});
|
|
203
|
+
return value;
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function getWorkbookProperties(document) {
|
|
207
|
+
var workbook = document.documentElement;
|
|
208
|
+
return findChild(workbook, 'workbookPr');
|
|
209
|
+
}
|
|
210
|
+
function getRelationships(document) {
|
|
211
|
+
var relationships = document.documentElement;
|
|
212
|
+
return findChildren(relationships, 'Relationship');
|
|
213
|
+
}
|
|
214
|
+
function getSheets(document) {
|
|
215
|
+
var workbook = document.documentElement;
|
|
216
|
+
var sheets = findChild(workbook, 'sheets');
|
|
217
|
+
return findChildren(sheets, 'sheet');
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function parseProperties(content, xml) {
|
|
221
|
+
var book = xml.createDocument(content);
|
|
222
|
+
var properties = {}; // Read `<workbookPr/>` element to detect whether dates are 1900-based or 1904-based.
|
|
223
|
+
// https://support.microsoft.com/en-gb/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel
|
|
224
|
+
// http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/workbookPr.html
|
|
225
|
+
|
|
226
|
+
var workbookProperties = getWorkbookProperties(book);
|
|
227
|
+
|
|
228
|
+
if (workbookProperties && workbookProperties.getAttribute('date1904') === '1') {
|
|
229
|
+
properties.epoch1904 = true;
|
|
230
|
+
} // Get sheets info (indexes, names, if they're available).
|
|
231
|
+
// Example:
|
|
232
|
+
// <sheets>
|
|
233
|
+
// <sheet
|
|
234
|
+
// xmlns:ns="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
235
|
+
// name="Sheet1"
|
|
236
|
+
// sheetId="1"
|
|
237
|
+
// ns:id="rId3"/>
|
|
238
|
+
// </sheets>
|
|
239
|
+
// http://www.datypic.com/sc/ooxml/e-ssml_sheet-1.html
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
properties.sheets = [];
|
|
243
|
+
|
|
244
|
+
var addSheetInfo = function addSheetInfo(sheet) {
|
|
245
|
+
if (sheet.getAttribute('name')) {
|
|
246
|
+
properties.sheets.push({
|
|
247
|
+
id: sheet.getAttribute('sheetId'),
|
|
248
|
+
name: sheet.getAttribute('name'),
|
|
249
|
+
relationId: sheet.getAttribute('r:id')
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
getSheets(book).forEach(addSheetInfo);
|
|
255
|
+
return properties;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Returns sheet file paths.
|
|
260
|
+
* Seems that the correct place to look for the `sheetId` -> `filename` mapping
|
|
261
|
+
* is `xl/_rels/workbook.xml.rels` file.
|
|
262
|
+
* https://github.com/tidyverse/readxl/issues/104
|
|
263
|
+
* @param {string} content — `xl/_rels/workbook.xml.rels` file contents.
|
|
264
|
+
* @param {object} xml
|
|
265
|
+
* @return {object}
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
function parseFilePaths(content, xml) {
|
|
269
|
+
// Example:
|
|
270
|
+
// <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
271
|
+
// ...
|
|
272
|
+
// <Relationship
|
|
273
|
+
// Id="rId3"
|
|
274
|
+
// Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"
|
|
275
|
+
// Target="worksheets/sheet1.xml"/>
|
|
276
|
+
// </Relationships>
|
|
277
|
+
var document = xml.createDocument(content);
|
|
278
|
+
var filePaths = {
|
|
279
|
+
sheets: {},
|
|
280
|
+
sharedStrings: undefined,
|
|
281
|
+
styles: undefined
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
var addFilePathInfo = function addFilePathInfo(relationship) {
|
|
285
|
+
var filePath = relationship.getAttribute('Target');
|
|
286
|
+
var fileType = relationship.getAttribute('Type');
|
|
287
|
+
|
|
288
|
+
switch (fileType) {
|
|
289
|
+
case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles':
|
|
290
|
+
filePaths.styles = getFilePath(filePath);
|
|
291
|
+
break;
|
|
292
|
+
|
|
293
|
+
case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings':
|
|
294
|
+
filePaths.sharedStrings = getFilePath(filePath);
|
|
295
|
+
break;
|
|
296
|
+
|
|
297
|
+
case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet':
|
|
298
|
+
filePaths.sheets[relationship.getAttribute('Id')] = getFilePath(filePath);
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
getRelationships(document).forEach(addFilePathInfo); // Seems like "sharedStrings.xml" is not required to exist.
|
|
304
|
+
// For example, when the spreadsheet doesn't contain any strings.
|
|
305
|
+
// https://github.com/catamphetamine/read-excel-file/issues/85
|
|
306
|
+
// if (!filePaths.sharedStrings) {
|
|
307
|
+
// throw new Error('"sharedStrings.xml" file not found in the *.xlsx file')
|
|
308
|
+
// }
|
|
309
|
+
|
|
310
|
+
return filePaths;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
function getFilePath(path) {
|
|
314
|
+
// Normally, `path` is a relative path inside the ZIP archive,
|
|
315
|
+
// like "worksheets/sheet1.xml", or "sharedStrings.xml", or "styles.xml".
|
|
316
|
+
// There has been one weird case when file path was an absolute path,
|
|
317
|
+
// like "/xl/worksheets/sheet1.xml" (specifically for sheets):
|
|
318
|
+
// https://github.com/catamphetamine/read-excel-file/pull/95
|
|
319
|
+
// Other libraries (like `xlsx`) and software (like Google Docs)
|
|
320
|
+
// seem to support such absolute file paths, so this library does too.
|
|
321
|
+
if (path[0] === '/') {
|
|
322
|
+
return path.slice('/'.length);
|
|
323
|
+
} // // Seems like a path could also be a URL.
|
|
324
|
+
// // http://officeopenxml.com/anatomyofOOXML-xlsx.php
|
|
325
|
+
// if (/^[a-z]+\:\/\//.test(path)) {
|
|
326
|
+
// return path
|
|
327
|
+
// }
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
return 'xl/' + path;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
334
|
+
|
|
335
|
+
function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty$3(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
336
|
+
|
|
337
|
+
function _defineProperty$3(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
338
|
+
// Returns an array of cell styles.
|
|
339
|
+
// A cell style index is its ID.
|
|
340
|
+
|
|
341
|
+
function parseStyles(content, xml) {
|
|
342
|
+
if (!content) {
|
|
343
|
+
return {};
|
|
344
|
+
} // https://social.msdn.microsoft.com/Forums/sqlserver/en-US/708978af-b598-45c4-a598-d3518a5a09f0/howwhen-is-cellstylexfs-vs-cellxfs-applied-to-a-cell?forum=os_binaryfile
|
|
345
|
+
// https://www.office-forums.com/threads/cellxfs-cellstylexfs.2163519/
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
var doc = xml.createDocument(content);
|
|
349
|
+
var baseStyles = getBaseStyles(doc).map(parseCellStyle);
|
|
350
|
+
var numberFormats = getNumberFormats(doc).map(parseNumberFormatStyle).reduce(function (formats, format) {
|
|
351
|
+
// Format ID is a numeric index.
|
|
352
|
+
// There're some standard "built-in" formats (in Excel) up to about `100`.
|
|
353
|
+
formats[format.id] = format;
|
|
354
|
+
return formats;
|
|
355
|
+
}, []);
|
|
356
|
+
|
|
357
|
+
var getCellStyle = function getCellStyle(xf) {
|
|
358
|
+
if (xf.hasAttribute('xfId')) {
|
|
359
|
+
return _objectSpread$3(_objectSpread$3({}, baseStyles[xf.xfId]), parseCellStyle(xf, numberFormats));
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
return parseCellStyle(xf, numberFormats);
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
return getCellStyles(doc).map(getCellStyle);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
function parseNumberFormatStyle(numFmt) {
|
|
369
|
+
return {
|
|
370
|
+
id: numFmt.getAttribute('numFmtId'),
|
|
371
|
+
template: numFmt.getAttribute('formatCode')
|
|
372
|
+
};
|
|
373
|
+
} // http://www.datypic.com/sc/ooxml/e-ssml_xf-2.html
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
function parseCellStyle(xf, numFmts) {
|
|
377
|
+
var style = {};
|
|
378
|
+
|
|
379
|
+
if (xf.hasAttribute('numFmtId')) {
|
|
380
|
+
var numberFormatId = xf.getAttribute('numFmtId'); // Built-in number formats don't have a `<numFmt/>` element in `styles.xml`.
|
|
381
|
+
// https://hexdocs.pm/xlsxir/number_styles.html
|
|
382
|
+
|
|
383
|
+
if (numFmts[numberFormatId]) {
|
|
384
|
+
style.numberFormat = numFmts[numberFormatId];
|
|
385
|
+
} else {
|
|
386
|
+
style.numberFormat = {
|
|
387
|
+
id: numberFormatId
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
return style;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
function parseSharedStrings(content, xml) {
|
|
396
|
+
if (!content) {
|
|
397
|
+
return [];
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
return getSharedStrings(xml.createDocument(content));
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// Parses an Excel Date ("serial") into a
|
|
404
|
+
// corresponding javascript Date in UTC+0 timezone.
|
|
405
|
+
// (with time equal to 00:00)
|
|
406
|
+
//
|
|
407
|
+
// Doesn't account for leap seconds.
|
|
408
|
+
// Therefore is not 100% correct.
|
|
409
|
+
// But will do, I guess, since we're
|
|
410
|
+
// not doing rocket science here.
|
|
411
|
+
//
|
|
412
|
+
// https://www.pcworld.com/article/3063622/software/mastering-excel-date-time-serial-numbers-networkdays-datevalue-and-more.html
|
|
413
|
+
// "If you need to calculate dates in your spreadsheets,
|
|
414
|
+
// Excel uses its own unique system, which it calls Serial Numbers".
|
|
415
|
+
//
|
|
416
|
+
function parseExcelDate(excelSerialDate, options) {
|
|
417
|
+
// https://support.microsoft.com/en-gb/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel
|
|
418
|
+
if (options && options.epoch1904) {
|
|
419
|
+
excelSerialDate += 1462;
|
|
420
|
+
} // "Excel serial date" is just
|
|
421
|
+
// the count of days since `01/01/1900`
|
|
422
|
+
// (seems that it may be even fractional).
|
|
423
|
+
//
|
|
424
|
+
// The count of days elapsed
|
|
425
|
+
// since `01/01/1900` (Excel epoch)
|
|
426
|
+
// till `01/01/1970` (Unix epoch).
|
|
427
|
+
// Accounts for leap years
|
|
428
|
+
// (19 of them, yielding 19 extra days).
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
var daysBeforeUnixEpoch = 70 * 365 + 19; // An hour, approximately, because a minute
|
|
432
|
+
// may be longer than 60 seconds, see "leap seconds".
|
|
433
|
+
|
|
434
|
+
var hour = 60 * 60 * 1000;
|
|
435
|
+
return new Date(Math.round((excelSerialDate - daysBeforeUnixEpoch) * 24 * hour));
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
function _createForOfIteratorHelperLoose$5(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$6(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
439
|
+
|
|
440
|
+
function _unsupportedIterableToArray$6(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$6(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$6(o, minLen); }
|
|
441
|
+
|
|
442
|
+
function _arrayLikeToArray$6(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
443
|
+
|
|
444
|
+
var BUILT_IN_DATE_NUMBER_FORMAT_IDS = [14, 15, 16, 17, 18, 19, 20, 21, 22, 27, 30, 36, 45, 46, 47, 50, 57];
|
|
445
|
+
function getCellValue(value, type, _ref) {
|
|
446
|
+
var getInlineStringValue = _ref.getInlineStringValue,
|
|
447
|
+
getStyleId = _ref.getStyleId,
|
|
448
|
+
styles = _ref.styles,
|
|
449
|
+
values = _ref.values,
|
|
450
|
+
properties = _ref.properties,
|
|
451
|
+
options = _ref.options;
|
|
452
|
+
|
|
453
|
+
if (!type) {
|
|
454
|
+
// Default cell type is "n" (numeric).
|
|
455
|
+
// http://www.datypic.com/sc/ooxml/t-ssml_CT_Cell.html
|
|
456
|
+
type = 'n';
|
|
457
|
+
} // Available Excel cell types:
|
|
458
|
+
// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md
|
|
459
|
+
//
|
|
460
|
+
// Some other document (seems to be old):
|
|
461
|
+
// http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/ST_CellType.html
|
|
462
|
+
//
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
switch (type) {
|
|
466
|
+
// If the cell contains formula string.
|
|
467
|
+
case 'str':
|
|
468
|
+
value = value.trim();
|
|
469
|
+
|
|
470
|
+
if (value === '') {
|
|
471
|
+
value = undefined;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
break;
|
|
475
|
+
// If the cell contains an "inline" (not "shared") string.
|
|
476
|
+
|
|
477
|
+
case 'inlineStr':
|
|
478
|
+
value = getInlineStringValue();
|
|
479
|
+
|
|
480
|
+
if (value === undefined) {
|
|
481
|
+
throw new Error("Unsupported \"inline string\" cell value structure"); // : ${cellNode.textContent}`)
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
value = value.trim();
|
|
485
|
+
|
|
486
|
+
if (value === '') {
|
|
487
|
+
value = undefined;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
break;
|
|
491
|
+
// If the cell contains a "shared" string.
|
|
492
|
+
// "Shared" strings is a way for an Excel editor to reduce
|
|
493
|
+
// the file size by storing "commonly used" strings in a dictionary
|
|
494
|
+
// and then referring to such strings by their index in that dictionary.
|
|
495
|
+
|
|
496
|
+
case 's':
|
|
497
|
+
// If a cell has no value then there's no `<c/>` element for it.
|
|
498
|
+
// If a `<c/>` element exists then it's not empty.
|
|
499
|
+
// The `<v/>`alue is a key in the "shared strings" dictionary of the
|
|
500
|
+
// XLSX file, so look it up in the `values` dictionary by the numeric key.
|
|
501
|
+
value = values[parseInt(value)];
|
|
502
|
+
value = value.trim();
|
|
503
|
+
|
|
504
|
+
if (value === '') {
|
|
505
|
+
value = undefined;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
break;
|
|
509
|
+
|
|
510
|
+
case 'b':
|
|
511
|
+
value = value === '1' ? true : false;
|
|
512
|
+
break;
|
|
513
|
+
// Stub: blank stub cell that is ignored by data processing utilities.
|
|
514
|
+
|
|
515
|
+
case 'z':
|
|
516
|
+
value = undefined;
|
|
517
|
+
break;
|
|
518
|
+
// Error: `value` is a numeric code.
|
|
519
|
+
// They also wrote: "and `w` property stores its common name".
|
|
520
|
+
// It's unclear what they meant by that.
|
|
521
|
+
|
|
522
|
+
case 'e':
|
|
523
|
+
value = decodeError(value);
|
|
524
|
+
break;
|
|
525
|
+
// Date: a string to be parsed as a date.
|
|
526
|
+
// (usually a string in "ISO 8601" format)
|
|
527
|
+
|
|
528
|
+
case 'd':
|
|
529
|
+
if (value === undefined) {
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
value = new Date(value);
|
|
534
|
+
break;
|
|
535
|
+
|
|
536
|
+
case 'n':
|
|
537
|
+
if (value === undefined) {
|
|
538
|
+
break;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
value = parseFloat(value); // XLSX does have "d" type for dates, but it's not commonly used.
|
|
542
|
+
// Instead, spreadsheets prefer using "n" type for dates for some reason.
|
|
543
|
+
//
|
|
544
|
+
// In such cases, sometimes a "date" type could be heuristically detected
|
|
545
|
+
// by looking at such numeric value "format" and seeing if it's a date-specific one.
|
|
546
|
+
// https://github.com/catamphetamine/read-excel-file/issues/3#issuecomment-395770777
|
|
547
|
+
//
|
|
548
|
+
// The list of generic numeric value "formats":
|
|
549
|
+
// https://xlsxwriter.readthedocs.io/format.html#format-set-num-format
|
|
550
|
+
//
|
|
551
|
+
|
|
552
|
+
var styleId = getStyleId();
|
|
553
|
+
|
|
554
|
+
if (styleId) {
|
|
555
|
+
// styleId = parseInt(styleId)
|
|
556
|
+
var style = styles[styleId];
|
|
557
|
+
|
|
558
|
+
if (!style) {
|
|
559
|
+
throw new Error("Cell style not found: ".concat(styleId));
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
if (BUILT_IN_DATE_NUMBER_FORMAT_IDS.indexOf(parseInt(style.numberFormat.id)) >= 0 || options.dateFormat && style.numberFormat.template === options.dateFormat || options.smartDateParser !== false && style.numberFormat.template && isDateTemplate(style.numberFormat.template)) {
|
|
563
|
+
value = parseExcelDate(value, properties);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
break;
|
|
568
|
+
|
|
569
|
+
default:
|
|
570
|
+
throw new TypeError("Cell type not supported: ".concat(type));
|
|
571
|
+
} // Convert empty values to `null`.
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
if (value === undefined) {
|
|
575
|
+
value = null;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
return value;
|
|
579
|
+
} // Decodes numeric error code to a string code.
|
|
580
|
+
// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md
|
|
581
|
+
|
|
582
|
+
function decodeError(errorCode) {
|
|
583
|
+
// While the error values are determined by the application,
|
|
584
|
+
// the following are some example error values that could be used:
|
|
585
|
+
switch (errorCode) {
|
|
586
|
+
case 0x00:
|
|
587
|
+
return '#NULL!';
|
|
588
|
+
|
|
589
|
+
case 0x07:
|
|
590
|
+
return '#DIV/0!';
|
|
591
|
+
|
|
592
|
+
case 0x0F:
|
|
593
|
+
return '#VALUE!';
|
|
594
|
+
|
|
595
|
+
case 0x17:
|
|
596
|
+
return '#REF!';
|
|
597
|
+
|
|
598
|
+
case 0x1D:
|
|
599
|
+
return '#NAME?';
|
|
600
|
+
|
|
601
|
+
case 0x24:
|
|
602
|
+
return '#NUM!';
|
|
603
|
+
|
|
604
|
+
case 0x2A:
|
|
605
|
+
return '#N/A';
|
|
606
|
+
|
|
607
|
+
case 0x2B:
|
|
608
|
+
return '#GETTING_DATA';
|
|
609
|
+
|
|
610
|
+
default:
|
|
611
|
+
// Such error code doesn't exist. I made it up.
|
|
612
|
+
return "#ERROR_".concat(errorCode);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
function isDateTemplate(template) {
|
|
617
|
+
// Date format tokens could be in upper case or in lower case.
|
|
618
|
+
// There seems to be no single standard.
|
|
619
|
+
// So lowercase the template first.
|
|
620
|
+
template = template.toLowerCase();
|
|
621
|
+
var tokens = template.split(/\W+/);
|
|
622
|
+
|
|
623
|
+
for (var _iterator = _createForOfIteratorHelperLoose$5(tokens), _step; !(_step = _iterator()).done;) {
|
|
624
|
+
var token = _step.value;
|
|
625
|
+
|
|
626
|
+
if (DATE_TEMPLATE_TOKENS.indexOf(token) < 0) {
|
|
627
|
+
return false;
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
return true;
|
|
632
|
+
} // These tokens could be in upper case or in lower case.
|
|
633
|
+
// There seems to be no single standard, so using lower case.
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
var DATE_TEMPLATE_TOKENS = [// Seconds (min two digits). Example: "05".
|
|
637
|
+
'ss', // Minutes (min two digits). Example: "05". Could also be "Months". Weird.
|
|
638
|
+
'mm', // Hours. Example: "1".
|
|
639
|
+
'h', // Hours (min two digits). Example: "01".
|
|
640
|
+
'hh', // "AM" part of "AM/PM". Lowercased just in case.
|
|
641
|
+
'am', // "PM" part of "AM/PM". Lowercased just in case.
|
|
642
|
+
'pm', // Day. Example: "1"
|
|
643
|
+
'd', // Day (min two digits). Example: "01"
|
|
644
|
+
'dd', // Month (numeric). Example: "1".
|
|
645
|
+
'm', // Month (numeric, min two digits). Example: "01". Could also be "Minutes". Weird.
|
|
646
|
+
'mm', // Month (shortened month name). Example: "Jan".
|
|
647
|
+
'mmm', // Month (full month name). Example: "January".
|
|
648
|
+
'mmmm', // Two-digit year. Example: "20".
|
|
649
|
+
'yy', // Full year. Example: "2020".
|
|
650
|
+
'yyyy'];
|
|
651
|
+
|
|
652
|
+
// Maps "A1"-like coordinates to `{ row, column }` numeric coordinates.
|
|
653
|
+
var LETTERS = ["", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
|
|
654
|
+
function calculateDimensions(cells) {
|
|
655
|
+
var comparator = function comparator(a, b) {
|
|
656
|
+
return a - b;
|
|
657
|
+
};
|
|
658
|
+
|
|
659
|
+
var allRows = cells.map(function (cell) {
|
|
660
|
+
return cell.row;
|
|
661
|
+
}).sort(comparator);
|
|
662
|
+
var allCols = cells.map(function (cell) {
|
|
663
|
+
return cell.column;
|
|
664
|
+
}).sort(comparator);
|
|
665
|
+
var minRow = allRows[0];
|
|
666
|
+
var maxRow = allRows[allRows.length - 1];
|
|
667
|
+
var minCol = allCols[0];
|
|
668
|
+
var maxCol = allCols[allCols.length - 1];
|
|
669
|
+
return [{
|
|
670
|
+
row: minRow,
|
|
671
|
+
column: minCol
|
|
672
|
+
}, {
|
|
673
|
+
row: maxRow,
|
|
674
|
+
column: maxCol
|
|
675
|
+
}];
|
|
676
|
+
} // Converts a letter coordinate to a digit coordinate.
|
|
677
|
+
// Examples: "A" -> 1, "B" -> 2, "Z" -> 26, "AA" -> 27, etc.
|
|
678
|
+
|
|
679
|
+
function columnLettersToNumber(columnLetters) {
|
|
680
|
+
// `for ... of ...` would require Babel polyfill for iterating a string.
|
|
681
|
+
var n = 0;
|
|
682
|
+
var i = 0;
|
|
683
|
+
|
|
684
|
+
while (i < columnLetters.length) {
|
|
685
|
+
n *= 26;
|
|
686
|
+
n += LETTERS.indexOf(columnLetters[i]);
|
|
687
|
+
i++;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
return n;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
function parseCellCoordinates(coords) {
|
|
694
|
+
// Coordinate examples: "AA2091", "R988", "B1".
|
|
695
|
+
coords = coords.split(/(\d+)/);
|
|
696
|
+
return [// Row.
|
|
697
|
+
parseInt(coords[1]), // Column.
|
|
698
|
+
columnLettersToNumber(coords[0].trim())];
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
//
|
|
702
|
+
// <c>
|
|
703
|
+
// <f>string</f> — formula.
|
|
704
|
+
// <v>string</v> — formula pre-computed value.
|
|
705
|
+
// <is>
|
|
706
|
+
// <t>string</t> — an `inlineStr` string (rather than a "common string" from a dictionary).
|
|
707
|
+
// <r>
|
|
708
|
+
// <rPr>
|
|
709
|
+
// ...
|
|
710
|
+
// </rPr>
|
|
711
|
+
// <t>string</t>
|
|
712
|
+
// </r>
|
|
713
|
+
// <rPh sb="1" eb="1">
|
|
714
|
+
// <t>string</t>
|
|
715
|
+
// </rPh>
|
|
716
|
+
// <phoneticPr fontId="1"/>
|
|
717
|
+
// </is>
|
|
718
|
+
// <extLst>
|
|
719
|
+
// <ext>
|
|
720
|
+
// <!--any element-->
|
|
721
|
+
// </ext>
|
|
722
|
+
// </extLst>
|
|
723
|
+
// </c>
|
|
724
|
+
//
|
|
725
|
+
|
|
726
|
+
function parseCell(node, sheet, xml, values, styles, properties, options) {
|
|
727
|
+
var coords = parseCellCoordinates(node.getAttribute('r'));
|
|
728
|
+
var valueElement = getCellValue$1(sheet, node); // For `xpath`, `value` can be `undefined` while for native `DOMParser` it's `null`.
|
|
729
|
+
// So using `value && ...` instead of `if (value !== undefined) { ... }` here
|
|
730
|
+
// for uniform compatibility with both `xpath` and native `DOMParser`.
|
|
731
|
+
|
|
732
|
+
var value = valueElement && valueElement.textContent;
|
|
733
|
+
var type;
|
|
734
|
+
|
|
735
|
+
if (node.hasAttribute('t')) {
|
|
736
|
+
type = node.getAttribute('t');
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
return {
|
|
740
|
+
row: coords[0],
|
|
741
|
+
column: coords[1],
|
|
742
|
+
value: getCellValue(value, type, {
|
|
743
|
+
getInlineStringValue: function getInlineStringValue() {
|
|
744
|
+
return getCellInlineStringValue(sheet, node);
|
|
745
|
+
},
|
|
746
|
+
getStyleId: function getStyleId() {
|
|
747
|
+
return node.getAttribute('s');
|
|
748
|
+
},
|
|
749
|
+
styles: styles,
|
|
750
|
+
values: values,
|
|
751
|
+
properties: properties,
|
|
752
|
+
options: options
|
|
753
|
+
})
|
|
754
|
+
};
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
function parseCells(sheet, xml, values, styles, properties, options) {
|
|
758
|
+
var cells = getCells(sheet);
|
|
759
|
+
|
|
760
|
+
if (cells.length === 0) {
|
|
761
|
+
return [];
|
|
762
|
+
} // const mergedCells = getMergedCells(sheet)
|
|
763
|
+
// for (const mergedCell of mergedCells) {
|
|
764
|
+
// const [from, to] = mergedCell.split(':').map(parseCellCoordinates)
|
|
765
|
+
// console.log('Merged Cell.', 'From:', from, 'To:', to)
|
|
766
|
+
// }
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
return cells.map(function (node) {
|
|
770
|
+
return parseCell(node, sheet, xml, values, styles, properties, options);
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
function _slicedToArray$2(arr, i) { return _arrayWithHoles$2(arr) || _iterableToArrayLimit$2(arr, i) || _unsupportedIterableToArray$5(arr, i) || _nonIterableRest$2(); }
|
|
775
|
+
|
|
776
|
+
function _nonIterableRest$2() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
777
|
+
|
|
778
|
+
function _unsupportedIterableToArray$5(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$5(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen); }
|
|
779
|
+
|
|
780
|
+
function _arrayLikeToArray$5(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
781
|
+
|
|
782
|
+
function _iterableToArrayLimit$2(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
783
|
+
|
|
784
|
+
function _arrayWithHoles$2(arr) { if (Array.isArray(arr)) return arr; }
|
|
785
|
+
// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sheetdimension?view=openxml-2.8.1
|
|
786
|
+
|
|
787
|
+
function parseDimensions(sheet) {
|
|
788
|
+
var dimensions = getDimensions(sheet);
|
|
789
|
+
|
|
790
|
+
if (dimensions) {
|
|
791
|
+
dimensions = dimensions.split(':').map(parseCellCoordinates).map(function (_ref) {
|
|
792
|
+
var _ref2 = _slicedToArray$2(_ref, 2),
|
|
793
|
+
row = _ref2[0],
|
|
794
|
+
column = _ref2[1];
|
|
795
|
+
|
|
796
|
+
return {
|
|
797
|
+
row: row,
|
|
798
|
+
column: column
|
|
799
|
+
};
|
|
800
|
+
}); // Sometimes there can be just a single cell as a spreadsheet's "dimensions".
|
|
801
|
+
// For example, the default "dimensions" in Apache POI library is "A1",
|
|
802
|
+
// meaning that only the first cell in the spreadsheet is used.
|
|
803
|
+
//
|
|
804
|
+
// A quote from Apache POI library:
|
|
805
|
+
// "Single cell ranges are formatted like single cell references (e.g. 'A1' instead of 'A1:A1')."
|
|
806
|
+
//
|
|
807
|
+
|
|
808
|
+
if (dimensions.length === 1) {
|
|
809
|
+
dimensions = [dimensions[0], dimensions[0]];
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
return dimensions;
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
function parseSheet(content, xml, values, styles, properties, options) {
|
|
817
|
+
var sheet = xml.createDocument(content);
|
|
818
|
+
var cells = parseCells(sheet, xml, values, styles, properties, options); // `dimensions` defines the spreadsheet area containing all non-empty cells.
|
|
819
|
+
// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sheetdimension?view=openxml-2.8.1
|
|
820
|
+
|
|
821
|
+
var dimensions = parseDimensions(sheet) || calculateDimensions(cells);
|
|
822
|
+
return {
|
|
823
|
+
cells: cells,
|
|
824
|
+
dimensions: dimensions
|
|
825
|
+
};
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
function _createForOfIteratorHelperLoose$4(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
829
|
+
|
|
830
|
+
function _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); }
|
|
831
|
+
|
|
832
|
+
function _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
833
|
+
|
|
834
|
+
function dropEmptyRows(data) {
|
|
835
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
836
|
+
rowMap = _ref.rowMap,
|
|
837
|
+
_ref$accessor = _ref.accessor,
|
|
838
|
+
accessor = _ref$accessor === void 0 ? function (_) {
|
|
839
|
+
return _;
|
|
840
|
+
} : _ref$accessor,
|
|
841
|
+
onlyTrimAtTheEnd = _ref.onlyTrimAtTheEnd;
|
|
842
|
+
|
|
843
|
+
// Drop empty rows.
|
|
844
|
+
var i = data.length - 1;
|
|
845
|
+
|
|
846
|
+
while (i >= 0) {
|
|
847
|
+
// Check if the row is empty.
|
|
848
|
+
var empty = true;
|
|
849
|
+
|
|
850
|
+
for (var _iterator = _createForOfIteratorHelperLoose$4(data[i]), _step; !(_step = _iterator()).done;) {
|
|
851
|
+
var cell = _step.value;
|
|
852
|
+
|
|
853
|
+
if (accessor(cell) !== null) {
|
|
854
|
+
empty = false;
|
|
855
|
+
break;
|
|
856
|
+
}
|
|
857
|
+
} // Remove the empty row.
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
if (empty) {
|
|
861
|
+
data.splice(i, 1);
|
|
862
|
+
|
|
863
|
+
if (rowMap) {
|
|
864
|
+
rowMap.splice(i, 1);
|
|
865
|
+
}
|
|
866
|
+
} else if (onlyTrimAtTheEnd) {
|
|
867
|
+
break;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
i--;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
return data;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
function _createForOfIteratorHelperLoose$3(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
877
|
+
|
|
878
|
+
function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); }
|
|
879
|
+
|
|
880
|
+
function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
881
|
+
|
|
882
|
+
function dropEmptyColumns(data) {
|
|
883
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
884
|
+
_ref$accessor = _ref.accessor,
|
|
885
|
+
accessor = _ref$accessor === void 0 ? function (_) {
|
|
886
|
+
return _;
|
|
887
|
+
} : _ref$accessor,
|
|
888
|
+
onlyTrimAtTheEnd = _ref.onlyTrimAtTheEnd;
|
|
889
|
+
|
|
890
|
+
var i = data[0].length - 1;
|
|
891
|
+
|
|
892
|
+
while (i >= 0) {
|
|
893
|
+
var empty = true;
|
|
894
|
+
|
|
895
|
+
for (var _iterator = _createForOfIteratorHelperLoose$3(data), _step; !(_step = _iterator()).done;) {
|
|
896
|
+
var row = _step.value;
|
|
897
|
+
|
|
898
|
+
if (accessor(row[i]) !== null) {
|
|
899
|
+
empty = false;
|
|
900
|
+
break;
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
if (empty) {
|
|
905
|
+
var j = 0;
|
|
906
|
+
|
|
907
|
+
while (j < data.length) {
|
|
908
|
+
data[j].splice(i, 1);
|
|
909
|
+
j++;
|
|
910
|
+
}
|
|
911
|
+
} else if (onlyTrimAtTheEnd) {
|
|
912
|
+
break;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
i--;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
return data;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
function _createForOfIteratorHelperLoose$2(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
922
|
+
|
|
923
|
+
function _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$2(arr, i) || _nonIterableRest$1(); }
|
|
924
|
+
|
|
925
|
+
function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
926
|
+
|
|
927
|
+
function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }
|
|
928
|
+
|
|
929
|
+
function _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
930
|
+
|
|
931
|
+
function _iterableToArrayLimit$1(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
932
|
+
|
|
933
|
+
function _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; }
|
|
934
|
+
function getData(sheet, options) {
|
|
935
|
+
var dimensions = sheet.dimensions,
|
|
936
|
+
cells = sheet.cells; // If the sheet is empty.
|
|
937
|
+
|
|
938
|
+
if (cells.length === 0) {
|
|
939
|
+
return [];
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
var _dimensions = _slicedToArray$1(dimensions, 2),
|
|
943
|
+
rightBottom = _dimensions[1]; // Don't discard empty rows or columns at the start.
|
|
944
|
+
// https://github.com/catamphetamine/read-excel-file/issues/102
|
|
945
|
+
// const colsCount = (rightBottom.column - leftTop.column) + 1
|
|
946
|
+
// const rowsCount = (rightBottom.row - leftTop.row) + 1
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
var colsCount = rightBottom.column;
|
|
950
|
+
var rowsCount = rightBottom.row; // Initialize spreadsheet data structure.
|
|
951
|
+
|
|
952
|
+
var data = new Array(rowsCount);
|
|
953
|
+
var i = 0;
|
|
954
|
+
|
|
955
|
+
while (i < rowsCount) {
|
|
956
|
+
data[i] = new Array(colsCount);
|
|
957
|
+
var j = 0;
|
|
958
|
+
|
|
959
|
+
while (j < colsCount) {
|
|
960
|
+
data[i][j] = null;
|
|
961
|
+
j++;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
i++;
|
|
965
|
+
} // Fill in spreadsheet `data`.
|
|
966
|
+
// (this code implies that `cells` aren't necessarily sorted by row and column:
|
|
967
|
+
// maybe that's not correct, this piece code was initially copy-pasted
|
|
968
|
+
// from some other library that used `XPath`)
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
for (var _iterator = _createForOfIteratorHelperLoose$2(cells), _step; !(_step = _iterator()).done;) {
|
|
972
|
+
var cell = _step.value;
|
|
973
|
+
// Don't discard empty rows or columns at the start.
|
|
974
|
+
// https://github.com/catamphetamine/read-excel-file/issues/102
|
|
975
|
+
// const rowIndex = cell.row - leftTop.row
|
|
976
|
+
// const columnIndex = cell.column - leftTop.column
|
|
977
|
+
var rowIndex = cell.row - 1;
|
|
978
|
+
var columnIndex = cell.column - 1; // Ignore the data in the cell if it's outside of the spreadsheet's "dimensions".
|
|
979
|
+
|
|
980
|
+
if (columnIndex < colsCount && rowIndex < rowsCount) {
|
|
981
|
+
data[rowIndex][columnIndex] = cell.value;
|
|
982
|
+
}
|
|
983
|
+
} // Fill in the row map.
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
var rowMap = options.rowMap;
|
|
987
|
+
|
|
988
|
+
if (rowMap) {
|
|
989
|
+
var _i2 = 0;
|
|
990
|
+
|
|
991
|
+
while (_i2 < data.length) {
|
|
992
|
+
rowMap[_i2] = _i2;
|
|
993
|
+
_i2++;
|
|
994
|
+
}
|
|
995
|
+
} // Drop empty columns or rows.
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
data = dropEmptyRows(dropEmptyColumns(data, {
|
|
999
|
+
onlyTrimAtTheEnd: true
|
|
1000
|
+
}), {
|
|
1001
|
+
onlyTrimAtTheEnd: true,
|
|
1002
|
+
rowMap: rowMap
|
|
1003
|
+
}); // Optionally transform data before applying `schema`.
|
|
1004
|
+
|
|
1005
|
+
if (options.transformData) {
|
|
1006
|
+
data = options.transformData(data); // data = options.transformData(data, {
|
|
1007
|
+
// dropEmptyRowsAndColumns(data) {
|
|
1008
|
+
// return dropEmptyRows(dropEmptyColumns(data), { rowMap })
|
|
1009
|
+
// }
|
|
1010
|
+
// })
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
return data;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
function _createForOfIteratorHelperLoose$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1017
|
+
|
|
1018
|
+
function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
|
|
1019
|
+
|
|
1020
|
+
function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
1021
|
+
|
|
1022
|
+
function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1023
|
+
|
|
1024
|
+
function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
1025
|
+
|
|
1026
|
+
function _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1027
|
+
// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* Reads an (unzipped) XLSX file structure into a 2D array of cells.
|
|
1031
|
+
* @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).
|
|
1032
|
+
* @param {number?} options.sheet - Workbook sheet id (`1` by default).
|
|
1033
|
+
* @param {string?} options.dateFormat - Date format, e.g. "mm/dd/yyyy". Values having this format template set will be parsed as dates.
|
|
1034
|
+
* @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).
|
|
1035
|
+
* @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).
|
|
1036
|
+
*/
|
|
1037
|
+
|
|
1038
|
+
function readXlsx(contents, xml) {
|
|
1039
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
1040
|
+
|
|
1041
|
+
if (!options.sheet) {
|
|
1042
|
+
options = _objectSpread$2({
|
|
1043
|
+
sheet: 1
|
|
1044
|
+
}, options);
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
var getXmlFileContent = function getXmlFileContent(filePath) {
|
|
1048
|
+
if (!contents[filePath]) {
|
|
1049
|
+
throw new Error("\"".concat(filePath, "\" file not found inside the *.xlsx file zip archive"));
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
return contents[filePath];
|
|
1053
|
+
}; // Some Excel editors don't want to use standard naming scheme for sheet files.
|
|
1054
|
+
// https://github.com/tidyverse/readxl/issues/104
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
var filePaths = parseFilePaths(getXmlFileContent('xl/_rels/workbook.xml.rels'), xml); // Default file path for "shared strings": "xl/sharedStrings.xml".
|
|
1058
|
+
|
|
1059
|
+
var values = filePaths.sharedStrings ? parseSharedStrings(getXmlFileContent(filePaths.sharedStrings), xml) : []; // Default file path for "styles": "xl/styles.xml".
|
|
1060
|
+
|
|
1061
|
+
var styles = filePaths.styles ? parseStyles(getXmlFileContent(filePaths.styles), xml) : {};
|
|
1062
|
+
var properties = parseProperties(getXmlFileContent('xl/workbook.xml'), xml); // A feature for getting the list of sheets in an Excel file.
|
|
1063
|
+
// https://github.com/catamphetamine/read-excel-file/issues/14
|
|
1064
|
+
|
|
1065
|
+
if (options.getSheets) {
|
|
1066
|
+
return properties.sheets.map(function (_ref) {
|
|
1067
|
+
var name = _ref.name;
|
|
1068
|
+
return {
|
|
1069
|
+
name: name
|
|
1070
|
+
};
|
|
1071
|
+
});
|
|
1072
|
+
} // Find the sheet by name, or take the first one.
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
var sheetId = getSheetId(options.sheet, properties.sheets); // If the sheet wasn't found then throw an error.
|
|
1076
|
+
// Example: "xl/worksheets/sheet1.xml".
|
|
1077
|
+
|
|
1078
|
+
if (!sheetId || !filePaths.sheets[sheetId]) {
|
|
1079
|
+
throw createSheetNotFoundError(options.sheet, properties.sheets);
|
|
1080
|
+
} // Parse sheet data.
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
var sheet = parseSheet(getXmlFileContent(filePaths.sheets[sheetId]), xml, values, styles, properties, options); // Get spreadsheet data.
|
|
1084
|
+
|
|
1085
|
+
var data = getData(sheet, options); // Can return properties, if required.
|
|
1086
|
+
|
|
1087
|
+
if (options.properties) {
|
|
1088
|
+
return {
|
|
1089
|
+
data: data,
|
|
1090
|
+
properties: properties
|
|
1091
|
+
};
|
|
1092
|
+
} // Return spreadsheet data.
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
return data;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
function getSheetId(sheet, sheets) {
|
|
1099
|
+
if (typeof sheet === 'number') {
|
|
1100
|
+
var _sheet = sheets[sheet - 1];
|
|
1101
|
+
return _sheet && _sheet.relationId;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
for (var _iterator = _createForOfIteratorHelperLoose$1(sheets), _step; !(_step = _iterator()).done;) {
|
|
1105
|
+
var _sheet2 = _step.value;
|
|
1106
|
+
|
|
1107
|
+
if (_sheet2.name === sheet) {
|
|
1108
|
+
return _sheet2.relationId;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
function createSheetNotFoundError(sheet, sheets) {
|
|
1114
|
+
var sheetsList = sheets && sheets.map(function (sheet, i) {
|
|
1115
|
+
return "\"".concat(sheet.name, "\" (#").concat(i + 1, ")");
|
|
1116
|
+
}).join(', ');
|
|
1117
|
+
return new Error("Sheet ".concat(typeof sheet === 'number' ? '#' + sheet : '"' + sheet + '"', " not found in the *.xlsx file.").concat(sheets ? ' Available sheets: ' + sheetsList + '.' : ''));
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
function Integer() {}
|
|
1121
|
+
function isInteger(x) {
|
|
1122
|
+
// https://stackoverflow.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript
|
|
1123
|
+
return (x | 0) === x;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
function URL() {} // URL regexp explanation:
|
|
1127
|
+
//
|
|
1128
|
+
// /^
|
|
1129
|
+
//
|
|
1130
|
+
// (?:
|
|
1131
|
+
// // Matches optional "http(s):" or "ftp:":
|
|
1132
|
+
// (?:
|
|
1133
|
+
// (?:https?|ftp):
|
|
1134
|
+
// )?
|
|
1135
|
+
//
|
|
1136
|
+
// // Matches "//" (required):
|
|
1137
|
+
// \/\/
|
|
1138
|
+
// )
|
|
1139
|
+
//
|
|
1140
|
+
// // Matches a valid non-local IP address:
|
|
1141
|
+
// (?:
|
|
1142
|
+
// (?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])
|
|
1143
|
+
// (?:
|
|
1144
|
+
// \.
|
|
1145
|
+
// (?:1?\d{1,2}|2[0-4]\d|25[0-5])
|
|
1146
|
+
// ){2}
|
|
1147
|
+
// (?:
|
|
1148
|
+
// \.
|
|
1149
|
+
// (?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4])
|
|
1150
|
+
// )
|
|
1151
|
+
//
|
|
1152
|
+
// // Or,
|
|
1153
|
+
// |
|
|
1154
|
+
//
|
|
1155
|
+
// // Matches an alpha-numeric domain name.
|
|
1156
|
+
// (?:
|
|
1157
|
+
// (?:
|
|
1158
|
+
// [a-z0-9\u00a1-\uffff]
|
|
1159
|
+
// [a-z0-9\u00a1-\uffff_-]{0,62}
|
|
1160
|
+
// )?
|
|
1161
|
+
// [a-z0-9\u00a1-\uffff]
|
|
1162
|
+
// \.
|
|
1163
|
+
// )*
|
|
1164
|
+
// (?:
|
|
1165
|
+
// // Domain zone: "com", "net", etc (required):
|
|
1166
|
+
// [a-z\u00a1-\uffff]{2,}
|
|
1167
|
+
// )
|
|
1168
|
+
// )
|
|
1169
|
+
//
|
|
1170
|
+
// // Matches a colon and a port number:
|
|
1171
|
+
// (?::\d{2,5})?
|
|
1172
|
+
//
|
|
1173
|
+
// // Matches everything after the "origin":
|
|
1174
|
+
// // * pathname
|
|
1175
|
+
// // * query
|
|
1176
|
+
// // * hash
|
|
1177
|
+
// (?:[/?#]\S*)?
|
|
1178
|
+
//
|
|
1179
|
+
// $/i
|
|
1180
|
+
|
|
1181
|
+
var regexp$1 = /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)*(?:[a-z\u00a1-\uffff]{2,}))(?::\d{2,5})?(?:[/?#]\S*)?$/i; // https://stackoverflow.com/questions/8667070/javascript-regular-expression-to-validate-url
|
|
1182
|
+
|
|
1183
|
+
function isURL(value) {
|
|
1184
|
+
return regexp$1.test(value);
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
function Email() {}
|
|
1188
|
+
var regexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
|
|
1189
|
+
function isEmail(value) {
|
|
1190
|
+
return regexp.test(value);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
1194
|
+
|
|
1195
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1196
|
+
|
|
1197
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
1198
|
+
|
|
1199
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1200
|
+
|
|
1201
|
+
function _typeof$1(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof$1(obj); }
|
|
1202
|
+
|
|
1203
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1204
|
+
|
|
1205
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
1206
|
+
|
|
1207
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
1208
|
+
|
|
1209
|
+
function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1210
|
+
|
|
1211
|
+
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
1212
|
+
|
|
1213
|
+
function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1214
|
+
var DEFAULT_OPTIONS = {
|
|
1215
|
+
isColumnOriented: false
|
|
1216
|
+
};
|
|
1217
|
+
/**
|
|
1218
|
+
* Convert 2D array to nested objects.
|
|
1219
|
+
* If row oriented data, row 0 is dotted key names.
|
|
1220
|
+
* Column oriented data is transposed.
|
|
1221
|
+
* @param {any[][]} data - An array of rows, each row being an array of cells.
|
|
1222
|
+
* @param {object} schema
|
|
1223
|
+
* @return {object[]}
|
|
1224
|
+
*/
|
|
1225
|
+
|
|
1226
|
+
function convertToJson (data, schema, options) {
|
|
1227
|
+
if (options) {
|
|
1228
|
+
options = _objectSpread$1(_objectSpread$1({}, DEFAULT_OPTIONS), options);
|
|
1229
|
+
} else {
|
|
1230
|
+
options = DEFAULT_OPTIONS;
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
var _options = options,
|
|
1234
|
+
isColumnOriented = _options.isColumnOriented,
|
|
1235
|
+
rowMap = _options.rowMap;
|
|
1236
|
+
validateSchema(schema);
|
|
1237
|
+
|
|
1238
|
+
if (isColumnOriented) {
|
|
1239
|
+
data = transpose(data);
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
var columns = data[0];
|
|
1243
|
+
var results = [];
|
|
1244
|
+
var errors = [];
|
|
1245
|
+
|
|
1246
|
+
for (var i = 1; i < data.length; i++) {
|
|
1247
|
+
var result = read(schema, data[i], i - 1, columns, errors, options);
|
|
1248
|
+
|
|
1249
|
+
if (result) {
|
|
1250
|
+
results.push(result);
|
|
1251
|
+
}
|
|
1252
|
+
} // Correct error rows.
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
if (rowMap) {
|
|
1256
|
+
for (var _iterator = _createForOfIteratorHelperLoose(errors), _step; !(_step = _iterator()).done;) {
|
|
1257
|
+
var error = _step.value;
|
|
1258
|
+
// Convert the `row` index in `data` to the
|
|
1259
|
+
// actual `row` index in the spreadsheet.
|
|
1260
|
+
// The `1` compensates for the header row.
|
|
1261
|
+
error.row = rowMap[error.row] + 1;
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
return {
|
|
1266
|
+
rows: results,
|
|
1267
|
+
errors: errors
|
|
1268
|
+
};
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
function read(schema, row, rowIndex, columns, errors, options) {
|
|
1272
|
+
var object = {};
|
|
1273
|
+
|
|
1274
|
+
var _loop = function _loop() {
|
|
1275
|
+
var key = _Object$keys[_i];
|
|
1276
|
+
var schemaEntry = schema[key];
|
|
1277
|
+
var isNestedSchema = _typeof$1(schemaEntry.type) === 'object' && !Array.isArray(schemaEntry.type);
|
|
1278
|
+
var rawValue = row[columns.indexOf(key)];
|
|
1279
|
+
|
|
1280
|
+
if (rawValue === undefined) {
|
|
1281
|
+
rawValue = null;
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
var value = void 0;
|
|
1285
|
+
var error = void 0;
|
|
1286
|
+
|
|
1287
|
+
if (isNestedSchema) {
|
|
1288
|
+
value = read(schemaEntry.type, row, rowIndex, columns, errors, options);
|
|
1289
|
+
} else {
|
|
1290
|
+
if (rawValue === null) {
|
|
1291
|
+
value = null;
|
|
1292
|
+
} else if (Array.isArray(schemaEntry.type)) {
|
|
1293
|
+
var notEmpty = false;
|
|
1294
|
+
var array = parseArray(rawValue).map(function (_value) {
|
|
1295
|
+
var result = parseValue(_value, schemaEntry, options);
|
|
1296
|
+
|
|
1297
|
+
if (result.error) {
|
|
1298
|
+
value = _value;
|
|
1299
|
+
error = result.error;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
if (result.value !== null) {
|
|
1303
|
+
notEmpty = true;
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
return result.value;
|
|
1307
|
+
});
|
|
1308
|
+
|
|
1309
|
+
if (!error) {
|
|
1310
|
+
value = notEmpty ? array : null;
|
|
1311
|
+
}
|
|
1312
|
+
} else {
|
|
1313
|
+
var result = parseValue(rawValue, schemaEntry, options);
|
|
1314
|
+
error = result.error;
|
|
1315
|
+
value = error ? rawValue : result.value;
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
if (!error && value === null && schemaEntry.required) {
|
|
1320
|
+
error = 'required';
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
if (error) {
|
|
1324
|
+
error = {
|
|
1325
|
+
error: error,
|
|
1326
|
+
row: rowIndex + 1,
|
|
1327
|
+
column: key,
|
|
1328
|
+
value: value
|
|
1329
|
+
};
|
|
1330
|
+
|
|
1331
|
+
if (schemaEntry.type) {
|
|
1332
|
+
error.type = schemaEntry.type;
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
errors.push(error);
|
|
1336
|
+
} else if (value !== null) {
|
|
1337
|
+
object[schemaEntry.prop] = value;
|
|
1338
|
+
}
|
|
1339
|
+
};
|
|
1340
|
+
|
|
1341
|
+
for (var _i = 0, _Object$keys = Object.keys(schema); _i < _Object$keys.length; _i++) {
|
|
1342
|
+
_loop();
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
if (Object.keys(object).length > 0) {
|
|
1346
|
+
return object;
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
return null;
|
|
1350
|
+
}
|
|
1351
|
+
/**
|
|
1352
|
+
* Converts textual value to a javascript typed value.
|
|
1353
|
+
* @param {any} value
|
|
1354
|
+
* @param {object} schemaEntry
|
|
1355
|
+
* @return {{ value: any, error: string }}
|
|
1356
|
+
*/
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
function parseValue(value, schemaEntry, options) {
|
|
1360
|
+
if (value === null) {
|
|
1361
|
+
return {
|
|
1362
|
+
value: null
|
|
1363
|
+
};
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1366
|
+
var result;
|
|
1367
|
+
|
|
1368
|
+
if (schemaEntry.parse) {
|
|
1369
|
+
result = parseCustomValue(value, schemaEntry.parse);
|
|
1370
|
+
} else if (schemaEntry.type) {
|
|
1371
|
+
result = parseValueOfType(value, // Supports parsing array types.
|
|
1372
|
+
// See `parseArray()` function for more details.
|
|
1373
|
+
// Example `type`: String[]
|
|
1374
|
+
// Input: 'Barack Obama, "String, with, colons", Donald Trump'
|
|
1375
|
+
// Output: ['Barack Obama', 'String, with, colons', 'Donald Trump']
|
|
1376
|
+
Array.isArray(schemaEntry.type) ? schemaEntry.type[0] : schemaEntry.type, options);
|
|
1377
|
+
} else {
|
|
1378
|
+
result = {
|
|
1379
|
+
value: value
|
|
1380
|
+
}; // throw new Error('Invalid schema entry: no .type and no .parse():\n\n' + JSON.stringify(schemaEntry, null, 2))
|
|
1381
|
+
} // If errored then return the error.
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
if (result.error) {
|
|
1385
|
+
return result;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
if (result.value !== null) {
|
|
1389
|
+
if (schemaEntry.oneOf && schemaEntry.oneOf.indexOf(result.value) < 0) {
|
|
1390
|
+
return {
|
|
1391
|
+
error: 'invalid'
|
|
1392
|
+
};
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
if (schemaEntry.validate) {
|
|
1396
|
+
try {
|
|
1397
|
+
schemaEntry.validate(result.value);
|
|
1398
|
+
} catch (error) {
|
|
1399
|
+
return {
|
|
1400
|
+
error: error.message
|
|
1401
|
+
};
|
|
1402
|
+
}
|
|
1403
|
+
}
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
return result;
|
|
1407
|
+
}
|
|
1408
|
+
/**
|
|
1409
|
+
* Converts textual value to a custom value using supplied `.parse()`.
|
|
1410
|
+
* @param {any} value
|
|
1411
|
+
* @param {function} parse
|
|
1412
|
+
* @return {{ value: any, error: string }}
|
|
1413
|
+
*/
|
|
1414
|
+
|
|
1415
|
+
function parseCustomValue(value, parse) {
|
|
1416
|
+
try {
|
|
1417
|
+
value = parse(value);
|
|
1418
|
+
|
|
1419
|
+
if (value === undefined) {
|
|
1420
|
+
return {
|
|
1421
|
+
value: null
|
|
1422
|
+
};
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
return {
|
|
1426
|
+
value: value
|
|
1427
|
+
};
|
|
1428
|
+
} catch (error) {
|
|
1429
|
+
return {
|
|
1430
|
+
error: error.message
|
|
1431
|
+
};
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
/**
|
|
1435
|
+
* Converts textual value to a javascript typed value.
|
|
1436
|
+
* @param {any} value
|
|
1437
|
+
* @param {} type
|
|
1438
|
+
* @return {{ value: (string|number|Date|boolean), error: string }}
|
|
1439
|
+
*/
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
function parseValueOfType(value, type, options) {
|
|
1443
|
+
switch (type) {
|
|
1444
|
+
case String:
|
|
1445
|
+
if (typeof value === 'string') {
|
|
1446
|
+
return {
|
|
1447
|
+
value: value
|
|
1448
|
+
};
|
|
1449
|
+
} // The global `isFinite()` function filters out:
|
|
1450
|
+
// * NaN
|
|
1451
|
+
// * -Infinity
|
|
1452
|
+
// * Infinity
|
|
1453
|
+
// All other values pass (including non-numbers).
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
if (typeof value === 'number') {
|
|
1457
|
+
if (isFinite(value)) {
|
|
1458
|
+
return {
|
|
1459
|
+
value: String(value)
|
|
1460
|
+
};
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
return {
|
|
1465
|
+
error: 'invalid'
|
|
1466
|
+
};
|
|
1467
|
+
|
|
1468
|
+
case Number:
|
|
1469
|
+
case Integer:
|
|
1470
|
+
// Convert strings to numbers.
|
|
1471
|
+
// Just an additional feature.
|
|
1472
|
+
// Won't happen when called from `readXlsx()`.
|
|
1473
|
+
if (typeof value === 'string') {
|
|
1474
|
+
var stringifiedValue = value;
|
|
1475
|
+
value = parseFloat(value);
|
|
1476
|
+
|
|
1477
|
+
if (String(value) !== stringifiedValue) {
|
|
1478
|
+
return {
|
|
1479
|
+
error: 'invalid'
|
|
1480
|
+
};
|
|
1481
|
+
}
|
|
1482
|
+
} else if (typeof value !== 'number') {
|
|
1483
|
+
return {
|
|
1484
|
+
error: 'invalid'
|
|
1485
|
+
};
|
|
1486
|
+
} // The global `isFinite()` function filters out:
|
|
1487
|
+
// * NaN
|
|
1488
|
+
// * -Infinity
|
|
1489
|
+
// * Infinity
|
|
1490
|
+
// All other values pass (including non-numbers).
|
|
1491
|
+
// At this point, `value` can only be a number.
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
if (!isFinite(value)) {
|
|
1495
|
+
return {
|
|
1496
|
+
error: 'invalid'
|
|
1497
|
+
};
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
if (type === Integer && !isInteger(value)) {
|
|
1501
|
+
return {
|
|
1502
|
+
error: 'invalid'
|
|
1503
|
+
};
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1506
|
+
return {
|
|
1507
|
+
value: value
|
|
1508
|
+
};
|
|
1509
|
+
|
|
1510
|
+
case URL:
|
|
1511
|
+
if (typeof value === 'string') {
|
|
1512
|
+
if (isURL(value)) {
|
|
1513
|
+
return {
|
|
1514
|
+
value: value
|
|
1515
|
+
};
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
return {
|
|
1520
|
+
error: 'invalid'
|
|
1521
|
+
};
|
|
1522
|
+
|
|
1523
|
+
case Email:
|
|
1524
|
+
if (typeof value === 'string') {
|
|
1525
|
+
if (isEmail(value)) {
|
|
1526
|
+
return {
|
|
1527
|
+
value: value
|
|
1528
|
+
};
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
return {
|
|
1533
|
+
error: 'invalid'
|
|
1534
|
+
};
|
|
1535
|
+
|
|
1536
|
+
case Date:
|
|
1537
|
+
// XLSX has no specific format for dates.
|
|
1538
|
+
// Sometimes a date can be heuristically detected.
|
|
1539
|
+
// https://github.com/catamphetamine/read-excel-file/issues/3#issuecomment-395770777
|
|
1540
|
+
if (value instanceof Date) {
|
|
1541
|
+
return {
|
|
1542
|
+
value: value
|
|
1543
|
+
};
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
if (typeof value === 'number') {
|
|
1547
|
+
if (!isFinite(value)) {
|
|
1548
|
+
return {
|
|
1549
|
+
error: 'invalid'
|
|
1550
|
+
};
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
value = parseInt(value);
|
|
1554
|
+
var date = parseExcelDate(value, options.properties);
|
|
1555
|
+
|
|
1556
|
+
if (!date) {
|
|
1557
|
+
return {
|
|
1558
|
+
error: 'invalid'
|
|
1559
|
+
};
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
return {
|
|
1563
|
+
value: date
|
|
1564
|
+
};
|
|
1565
|
+
}
|
|
1566
|
+
|
|
1567
|
+
return {
|
|
1568
|
+
error: 'invalid'
|
|
1569
|
+
};
|
|
1570
|
+
|
|
1571
|
+
case Boolean:
|
|
1572
|
+
if (typeof value === 'boolean') {
|
|
1573
|
+
return {
|
|
1574
|
+
value: value
|
|
1575
|
+
};
|
|
1576
|
+
}
|
|
1577
|
+
|
|
1578
|
+
return {
|
|
1579
|
+
error: 'invalid'
|
|
1580
|
+
};
|
|
1581
|
+
|
|
1582
|
+
default:
|
|
1583
|
+
if (typeof type === 'function') {
|
|
1584
|
+
return parseCustomValue(value, type);
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
throw new Error("Unknown schema type: ".concat(type && type.name || type));
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
function getBlock(string, endCharacter, startIndex) {
|
|
1592
|
+
var i = 0;
|
|
1593
|
+
var substring = '';
|
|
1594
|
+
|
|
1595
|
+
while (startIndex + i < string.length) {
|
|
1596
|
+
var _character = string[startIndex + i];
|
|
1597
|
+
|
|
1598
|
+
if (_character === endCharacter) {
|
|
1599
|
+
return [substring, i];
|
|
1600
|
+
} else if (_character === '"') {
|
|
1601
|
+
var block = getBlock(string, '"', startIndex + i + 1);
|
|
1602
|
+
substring += block[0];
|
|
1603
|
+
i += '"'.length + block[1] + '"'.length;
|
|
1604
|
+
} else {
|
|
1605
|
+
substring += _character;
|
|
1606
|
+
i++;
|
|
1607
|
+
}
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
return [substring, i];
|
|
1611
|
+
}
|
|
1612
|
+
/**
|
|
1613
|
+
* Parses a string of comma-separated substrings into an array of substrings.
|
|
1614
|
+
* (the `export` is just for tests)
|
|
1615
|
+
* @param {string} string — A string of comma-separated substrings.
|
|
1616
|
+
* @return {string[]} An array of substrings.
|
|
1617
|
+
*/
|
|
1618
|
+
|
|
1619
|
+
function parseArray(string) {
|
|
1620
|
+
var blocks = [];
|
|
1621
|
+
var index = 0;
|
|
1622
|
+
|
|
1623
|
+
while (index < string.length) {
|
|
1624
|
+
var _getBlock = getBlock(string, ',', index),
|
|
1625
|
+
_getBlock2 = _slicedToArray(_getBlock, 2),
|
|
1626
|
+
substring = _getBlock2[0],
|
|
1627
|
+
length = _getBlock2[1];
|
|
1628
|
+
|
|
1629
|
+
index += length + ','.length;
|
|
1630
|
+
blocks.push(substring.trim());
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
return blocks;
|
|
1634
|
+
} // Transpose a 2D array.
|
|
1635
|
+
// https://stackoverflow.com/questions/17428587/transposing-a-2d-array-in-javascript
|
|
1636
|
+
|
|
1637
|
+
var transpose = function transpose(array) {
|
|
1638
|
+
return array[0].map(function (_, i) {
|
|
1639
|
+
return array.map(function (row) {
|
|
1640
|
+
return row[i];
|
|
1641
|
+
});
|
|
1642
|
+
});
|
|
1643
|
+
};
|
|
1644
|
+
|
|
1645
|
+
function validateSchema(schema) {
|
|
1646
|
+
for (var _i2 = 0, _Object$keys2 = Object.keys(schema); _i2 < _Object$keys2.length; _i2++) {
|
|
1647
|
+
var key = _Object$keys2[_i2];
|
|
1648
|
+
var entry = schema[key];
|
|
1649
|
+
|
|
1650
|
+
if (!entry.prop) {
|
|
1651
|
+
throw new Error("\"prop\" not defined for schema entry \"".concat(key, "\"."));
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
1657
|
+
|
|
1658
|
+
function convertMapToSchema(map) {
|
|
1659
|
+
var schema = {};
|
|
1660
|
+
|
|
1661
|
+
for (var _i = 0, _Object$keys = Object.keys(map); _i < _Object$keys.length; _i++) {
|
|
1662
|
+
var key = _Object$keys[_i];
|
|
1663
|
+
var prop = map[key];
|
|
1664
|
+
var type = void 0;
|
|
1665
|
+
|
|
1666
|
+
if (_typeof(prop) === 'object') {
|
|
1667
|
+
prop = Object.keys(map[key])[0];
|
|
1668
|
+
type = convertMapToSchema(map[key][prop]);
|
|
1669
|
+
}
|
|
1670
|
+
|
|
1671
|
+
schema[key] = {
|
|
1672
|
+
prop: prop
|
|
1673
|
+
};
|
|
1674
|
+
|
|
1675
|
+
if (type) {
|
|
1676
|
+
schema[key].type = type;
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1680
|
+
return schema;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
var _excluded = ["schema", "map"];
|
|
1684
|
+
|
|
1685
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1686
|
+
|
|
1687
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
1688
|
+
|
|
1689
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1690
|
+
|
|
1691
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
1692
|
+
|
|
1693
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
1694
|
+
function readXlsxFileContents(entries, xml, _ref) {
|
|
1695
|
+
var schema = _ref.schema,
|
|
1696
|
+
map = _ref.map,
|
|
1697
|
+
options = _objectWithoutProperties(_ref, _excluded);
|
|
1698
|
+
|
|
1699
|
+
if (!schema && map) {
|
|
1700
|
+
schema = convertMapToSchema(map);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
var result = readXlsx(entries, xml, _objectSpread(_objectSpread({}, options), {}, {
|
|
1704
|
+
properties: schema || options.properties
|
|
1705
|
+
}));
|
|
1706
|
+
|
|
1707
|
+
if (schema) {
|
|
1708
|
+
return convertToJson(result.data, schema, _objectSpread(_objectSpread({}, options), {}, {
|
|
1709
|
+
properties: result.properties
|
|
1710
|
+
}));
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
return result;
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
/**
|
|
1717
|
+
* Reads XLSX file into a 2D array of cells in a browser.
|
|
1718
|
+
* @param {file} file - A file being uploaded in the browser.
|
|
1719
|
+
* @param {object?} options
|
|
1720
|
+
* @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.
|
|
1721
|
+
* @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.
|
|
1722
|
+
*/
|
|
1723
|
+
|
|
1724
|
+
function readXlsxFile(file) {
|
|
1725
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1726
|
+
return unpackXlsxFile(file).then(function (entries) {
|
|
1727
|
+
return readXlsxFileContents(entries, xml, options);
|
|
1728
|
+
});
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
async function convertFileFromStream(stream, filterColumnNames = ["what", "deliveryscope"]) {
|
|
1732
|
+
const toFilterValue = (x) => x.toLowerCase().replace(/\s+/g, '');
|
|
1733
|
+
const sheets = await readXlsxFile(stream, { getSheets: true });
|
|
1734
|
+
let dataRows = [];
|
|
1735
|
+
let sheetsData = await Promise.all(sheets.map(async (sheet) => { return await readXlsxFile(stream, { sheet: sheet.name }) }));
|
|
1736
|
+
|
|
1737
|
+
let types = {};
|
|
1738
|
+
sheetsData.forEach(sheetData => {
|
|
1739
|
+
const firstRow = sheetData.shift().map(x => toFilterValue(x));
|
|
1740
|
+
// Set up column for adding options
|
|
1741
|
+
firstRow.forEach((col, i) => {
|
|
1742
|
+
if (typeof types[col] === "undefined" && filterColumnNames.includes(col)) {
|
|
1743
|
+
types[col] = [];
|
|
1744
|
+
}
|
|
1745
|
+
});
|
|
1746
|
+
sheetData.forEach((row, rowindex) => {
|
|
1747
|
+
const dataRow = {};
|
|
1748
|
+
firstRow.forEach(async (col, i) => {
|
|
1749
|
+
const rowVal = row[i];
|
|
1750
|
+
dataRow[col] = rowVal;
|
|
1751
|
+
// Add to types options
|
|
1752
|
+
if (filterColumnNames.includes(col)) {
|
|
1753
|
+
const filterVal = toFilterValue(rowVal);
|
|
1754
|
+
dataRow[col] = filterVal;
|
|
1755
|
+
if (!types[col].includes(filterVal)) {
|
|
1756
|
+
types[col].push(filterVal);
|
|
1757
|
+
}
|
|
1758
|
+
}
|
|
1759
|
+
});
|
|
1760
|
+
dataRows.push(dataRow);
|
|
1761
|
+
});
|
|
1762
|
+
});
|
|
1763
|
+
|
|
1764
|
+
const fileData = {
|
|
1765
|
+
"types": types,
|
|
1766
|
+
"data": dataRows
|
|
1767
|
+
};
|
|
1768
|
+
return fileData;
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
async function convertFileForSizeCategogy(stream, filterColumnNames = ["sizecategory"]) {
|
|
1772
|
+
const toFilterValue = (x) => x.toLowerCase().replace(/\s+/g, '');
|
|
1773
|
+
const sheets = await readXlsxFile(stream, { getSheets: true });
|
|
1774
|
+
let dataRows = [];
|
|
1775
|
+
let sizecategoryColumn;
|
|
1776
|
+
let sheetsData = await Promise.all(sheets.map(async (sheet) => { return await readXlsxFile(stream, { sheet: sheet.name }) }));
|
|
1777
|
+
|
|
1778
|
+
let types = {};
|
|
1779
|
+
sheetsData.forEach(sheetData => {
|
|
1780
|
+
const firstRow = sheetData.shift().map(x => toFilterValue(x));
|
|
1781
|
+
// Set up column for adding options
|
|
1782
|
+
firstRow.forEach((col, i) => {
|
|
1783
|
+
if (typeof types[col] === "undefined" && filterColumnNames.includes(col)) {
|
|
1784
|
+
types[col] = [];
|
|
1785
|
+
}
|
|
1786
|
+
if(col === "sizecategory")
|
|
1787
|
+
sizecategoryColumn = i;
|
|
1788
|
+
});
|
|
1789
|
+
|
|
1790
|
+
sheetData.forEach((row, rowindex) => {
|
|
1791
|
+
// read sizeCategory column of each row and split it to save data for each item
|
|
1792
|
+
const firstColRow = row[sizecategoryColumn];
|
|
1793
|
+
const sizeCatColumnValue = firstColRow.split('/');
|
|
1794
|
+
|
|
1795
|
+
sizeCatColumnValue.forEach((value, j) => {
|
|
1796
|
+
const dataRow = {};
|
|
1797
|
+
|
|
1798
|
+
firstRow.forEach(async (col, i) => {
|
|
1799
|
+
const rowVal = (i === sizecategoryColumn) ? value : row[i];
|
|
1800
|
+
dataRow[col] = rowVal;
|
|
1801
|
+
|
|
1802
|
+
// Add to types options
|
|
1803
|
+
if (filterColumnNames.includes(col)) {
|
|
1804
|
+
const filterVal = toFilterValue(rowVal);
|
|
1805
|
+
dataRow[col] = filterVal;
|
|
1806
|
+
|
|
1807
|
+
if (!types[col].includes(filterVal)) {
|
|
1808
|
+
types[col].push(filterVal);
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
});
|
|
1812
|
+
dataRows.push(dataRow);
|
|
1813
|
+
});
|
|
1814
|
+
});
|
|
1815
|
+
});
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
const fileData = {
|
|
1819
|
+
"types": types,
|
|
1820
|
+
"data": dataRows
|
|
1821
|
+
};
|
|
1822
|
+
return fileData;
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
exports.convertFileForSizeCategogy = convertFileForSizeCategogy;
|
|
1826
|
+
exports.convertFileFromStream = convertFileFromStream;
|