@alienkarma/exceljs 4.4.0-fork.12 → 4.4.0-fork.13
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/LICENSE +22 -22
- package/README.md +3024 -3024
- package/README_zh.md +2878 -2878
- package/excel.js +13 -13
- package/index.d.ts +2040 -2040
- package/lib/csv/csv.js +191 -191
- package/lib/csv/line-buffer.js +74 -74
- package/lib/csv/stream-converter.js +135 -135
- package/lib/doc/anchor.js +91 -91
- package/lib/doc/cell.js +1124 -1124
- package/lib/doc/column.js +320 -320
- package/lib/doc/data/theme1.json +234 -234
- package/lib/doc/data-validations.js +19 -19
- package/lib/doc/defined-names.js +196 -196
- package/lib/doc/enums.js +48 -48
- package/lib/doc/image.js +59 -59
- package/lib/doc/modelcontainer.js +18 -18
- package/lib/doc/note.js +65 -65
- package/lib/doc/pivot-table.js +132 -132
- package/lib/doc/range.js +257 -257
- package/lib/doc/row.js +415 -415
- package/lib/doc/table.js +465 -465
- package/lib/doc/workbook.js +224 -224
- package/lib/doc/worksheet.js +949 -949
- package/lib/exceljs.bare.js +13 -13
- package/lib/exceljs.browser.js +36 -36
- package/lib/exceljs.nodejs.js +14 -14
- package/lib/stream/xlsx/hyperlink-reader.js +83 -83
- package/lib/stream/xlsx/sheet-comments-writer.js +121 -121
- package/lib/stream/xlsx/sheet-rels-writer.js +119 -119
- package/lib/stream/xlsx/workbook-reader.js +337 -337
- package/lib/stream/xlsx/workbook-writer.js +372 -366
- package/lib/stream/xlsx/worksheet-reader.js +374 -374
- package/lib/stream/xlsx/worksheet-writer.js +717 -717
- package/lib/utils/auto-drain.js +15 -15
- package/lib/utils/browser-buffer-decode.js +14 -14
- package/lib/utils/browser-buffer-encode.js +15 -15
- package/lib/utils/cell-matrix.js +165 -165
- package/lib/utils/col-cache.js +287 -287
- package/lib/utils/copy-style.js +43 -43
- package/lib/utils/encryptor.js +55 -55
- package/lib/utils/iterate-stream.js +48 -48
- package/lib/utils/parse-sax.js +30 -30
- package/lib/utils/shared-formula.js +44 -44
- package/lib/utils/shared-strings.js +35 -35
- package/lib/utils/stream-base64.js +72 -72
- package/lib/utils/stream-buf.js +364 -364
- package/lib/utils/string-buf.js +82 -82
- package/lib/utils/string-builder.js +35 -35
- package/lib/utils/stuttered-pipe.js +67 -67
- package/lib/utils/typed-stack.js +24 -24
- package/lib/utils/under-dash.js +184 -184
- package/lib/utils/utils.js +205 -205
- package/lib/utils/xml-stream.js +169 -169
- package/lib/utils/zip-stream.js +87 -87
- package/lib/xlsx/.rels +10 -10
- package/lib/xlsx/calcChain.xml +5 -5
- package/lib/xlsx/core.xml +6 -6
- package/lib/xlsx/defaultnumformats.js +153 -153
- package/lib/xlsx/rel-type.js +20 -20
- package/lib/xlsx/styles.xml +40 -40
- package/lib/xlsx/workbook.xml +16 -16
- package/lib/xlsx/xform/base-xform.js +145 -145
- package/lib/xlsx/xform/book/defined-name-xform.js +91 -91
- package/lib/xlsx/xform/book/sheet-xform.js +34 -34
- package/lib/xlsx/xform/book/workbook-calc-properties-xform.js +26 -26
- package/lib/xlsx/xform/book/workbook-pivot-cache-xform.js +29 -29
- package/lib/xlsx/xform/book/workbook-properties-xform.js +29 -29
- package/lib/xlsx/xform/book/workbook-view-xform.js +53 -53
- package/lib/xlsx/xform/book/workbook-xform.js +259 -259
- package/lib/xlsx/xform/comment/comment-xform.js +105 -105
- package/lib/xlsx/xform/comment/comments-xform.js +82 -82
- package/lib/xlsx/xform/comment/style/vml-position-xform.js +39 -39
- package/lib/xlsx/xform/comment/style/vml-protection-xform.js +36 -36
- package/lib/xlsx/xform/comment/vml-anchor-xform.js +60 -60
- package/lib/xlsx/xform/comment/vml-client-data-xform.js +95 -95
- package/lib/xlsx/xform/comment/vml-notes-xform.js +107 -107
- package/lib/xlsx/xform/comment/vml-shape-xform.js +95 -95
- package/lib/xlsx/xform/comment/vml-textbox-xform.js +64 -64
- package/lib/xlsx/xform/composite-xform.js +56 -56
- package/lib/xlsx/xform/core/app-heading-pairs-xform.js +32 -32
- package/lib/xlsx/xform/core/app-titles-of-parts-xform.js +28 -28
- package/lib/xlsx/xform/core/app-xform.js +100 -100
- package/lib/xlsx/xform/core/content-types-xform.js +135 -135
- package/lib/xlsx/xform/core/core-xform.js +136 -136
- package/lib/xlsx/xform/core/relationship-xform.js +25 -25
- package/lib/xlsx/xform/core/relationships-xform.js +73 -73
- package/lib/xlsx/xform/drawing/base-cell-anchor-xform.js +48 -48
- package/lib/xlsx/xform/drawing/blip-fill-xform.js +71 -71
- package/lib/xlsx/xform/drawing/blip-xform.js +42 -42
- package/lib/xlsx/xform/drawing/c-nv-pic-pr-xform.js +38 -38
- package/lib/xlsx/xform/drawing/c-nv-pr-xform.js +68 -68
- package/lib/xlsx/xform/drawing/cell-position-xform.js +77 -77
- package/lib/xlsx/xform/drawing/drawing-xform.js +109 -109
- package/lib/xlsx/xform/drawing/ext-lst-xform.js +43 -43
- package/lib/xlsx/xform/drawing/ext-xform.js +44 -44
- package/lib/xlsx/xform/drawing/hlink-click-xform.js +41 -41
- package/lib/xlsx/xform/drawing/nv-pic-pr-xform.js +65 -65
- package/lib/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -63
- package/lib/xlsx/xform/drawing/pic-xform.js +77 -77
- package/lib/xlsx/xform/drawing/sp-pr.js +17 -17
- package/lib/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -62
- package/lib/xlsx/xform/list-xform.js +95 -95
- package/lib/xlsx/xform/pivot-table/cache-field.js +43 -43
- package/lib/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +77 -77
- package/lib/xlsx/xform/pivot-table/pivot-cache-records-xform.js +103 -103
- package/lib/xlsx/xform/pivot-table/pivot-table-xform.js +189 -189
- package/lib/xlsx/xform/sheet/auto-filter-xform.js +38 -38
- package/lib/xlsx/xform/sheet/cell-xform.js +498 -498
- package/lib/xlsx/xform/sheet/cf/cf-rule-xform.js +301 -301
- package/lib/xlsx/xform/sheet/cf/cfvo-xform.js +27 -27
- package/lib/xlsx/xform/sheet/cf/color-scale-xform.js +45 -45
- package/lib/xlsx/xform/sheet/cf/conditional-formatting-xform.js +48 -48
- package/lib/xlsx/xform/sheet/cf/conditional-formattings-xform.js +92 -92
- package/lib/xlsx/xform/sheet/cf/databar-xform.js +49 -49
- package/lib/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +87 -87
- package/lib/xlsx/xform/sheet/cf/formula-xform.js +25 -25
- package/lib/xlsx/xform/sheet/cf/icon-set-xform.js +47 -47
- package/lib/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +27 -27
- package/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +98 -98
- package/lib/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +43 -43
- package/lib/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +62 -62
- package/lib/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +50 -50
- package/lib/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +98 -98
- package/lib/xlsx/xform/sheet/cf-ext/f-ext-xform.js +25 -25
- package/lib/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +73 -73
- package/lib/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +25 -25
- package/lib/xlsx/xform/sheet/col-xform.js +86 -86
- package/lib/xlsx/xform/sheet/data-validations-xform.js +257 -257
- package/lib/xlsx/xform/sheet/dimension-xform.js +29 -29
- package/lib/xlsx/xform/sheet/drawing-xform.js +33 -33
- package/lib/xlsx/xform/sheet/ext-lst-xform.js +86 -86
- package/lib/xlsx/xform/sheet/header-footer-xform.js +146 -146
- package/lib/xlsx/xform/sheet/hyperlink-xform.js +54 -54
- package/lib/xlsx/xform/sheet/merge-cell-xform.js +27 -27
- package/lib/xlsx/xform/sheet/merges.js +56 -56
- package/lib/xlsx/xform/sheet/outline-properties-xform.js +43 -43
- package/lib/xlsx/xform/sheet/page-breaks-xform.js +27 -27
- package/lib/xlsx/xform/sheet/page-margins-xform.js +49 -49
- package/lib/xlsx/xform/sheet/page-setup-properties-xform.js +35 -35
- package/lib/xlsx/xform/sheet/page-setup-xform.js +103 -103
- package/lib/xlsx/xform/sheet/picture-xform.js +33 -33
- package/lib/xlsx/xform/sheet/print-options-xform.js +49 -49
- package/lib/xlsx/xform/sheet/row-breaks-xform.js +39 -39
- package/lib/xlsx/xform/sheet/row-xform.js +142 -142
- package/lib/xlsx/xform/sheet/sheet-format-properties-xform.js +55 -55
- package/lib/xlsx/xform/sheet/sheet-properties-xform.js +90 -90
- package/lib/xlsx/xform/sheet/sheet-protection-xform.js +89 -89
- package/lib/xlsx/xform/sheet/sheet-view-xform.js +202 -202
- package/lib/xlsx/xform/sheet/table-part-xform.js +33 -33
- package/lib/xlsx/xform/sheet/worksheet-xform.js +548 -548
- package/lib/xlsx/xform/simple/boolean-xform.js +31 -31
- package/lib/xlsx/xform/simple/date-xform.js +66 -66
- package/lib/xlsx/xform/simple/float-xform.js +51 -51
- package/lib/xlsx/xform/simple/integer-xform.js +57 -57
- package/lib/xlsx/xform/simple/string-xform.js +51 -51
- package/lib/xlsx/xform/static-xform.js +64 -64
- package/lib/xlsx/xform/strings/phonetic-text-xform.js +98 -98
- package/lib/xlsx/xform/strings/rich-text-xform.js +101 -101
- package/lib/xlsx/xform/strings/shared-string-xform.js +102 -102
- package/lib/xlsx/xform/strings/shared-strings-xform.js +127 -127
- package/lib/xlsx/xform/strings/text-xform.js +44 -44
- package/lib/xlsx/xform/style/alignment-xform.js +172 -172
- package/lib/xlsx/xform/style/border-xform.js +207 -207
- package/lib/xlsx/xform/style/color-xform.js +63 -63
- package/lib/xlsx/xform/style/dxf-xform.js +111 -111
- package/lib/xlsx/xform/style/fill-xform.js +364 -364
- package/lib/xlsx/xform/style/font-xform.js +102 -102
- package/lib/xlsx/xform/style/numfmt-xform.js +63 -63
- package/lib/xlsx/xform/style/protection-xform.js +60 -60
- package/lib/xlsx/xform/style/style-xform.js +125 -125
- package/lib/xlsx/xform/style/styles-xform.js +527 -527
- package/lib/xlsx/xform/style/underline-xform.js +47 -47
- package/lib/xlsx/xform/table/auto-filter-xform.js +81 -81
- package/lib/xlsx/xform/table/custom-filter-xform.js +33 -33
- package/lib/xlsx/xform/table/filter-column-xform.js +96 -96
- package/lib/xlsx/xform/table/filter-xform.js +31 -31
- package/lib/xlsx/xform/table/table-column-xform.js +44 -44
- package/lib/xlsx/xform/table/table-style-info-xform.js +41 -41
- package/lib/xlsx/xform/table/table-xform.js +131 -131
- package/lib/xlsx/xlsx.js +774 -774
- package/lib/xlsx/xml/theme1.js +3 -3
- package/lib/xlsx/xml/theme1.xml +317 -317
- package/package.json +1 -1
- package/dist/LICENSE +0 -22
- package/dist/es5/csv/csv.js +0 -182
- package/dist/es5/csv/csv.js.map +0 -1
- package/dist/es5/csv/line-buffer.js +0 -68
- package/dist/es5/csv/line-buffer.js.map +0 -1
- package/dist/es5/csv/stream-converter.js +0 -110
- package/dist/es5/csv/stream-converter.js.map +0 -1
- package/dist/es5/doc/anchor.js +0 -73
- package/dist/es5/doc/anchor.js.map +0 -1
- package/dist/es5/doc/cell.js +0 -960
- package/dist/es5/doc/cell.js.map +0 -1
- package/dist/es5/doc/column.js +0 -274
- package/dist/es5/doc/column.js.map +0 -1
- package/dist/es5/doc/data-validations.js +0 -18
- package/dist/es5/doc/data-validations.js.map +0 -1
- package/dist/es5/doc/defined-names.js +0 -173
- package/dist/es5/doc/defined-names.js.map +0 -1
- package/dist/es5/doc/enums.js +0 -49
- package/dist/es5/doc/enums.js.map +0 -1
- package/dist/es5/doc/image.js +0 -69
- package/dist/es5/doc/image.js.map +0 -1
- package/dist/es5/doc/modelcontainer.js +0 -16
- package/dist/es5/doc/modelcontainer.js.map +0 -1
- package/dist/es5/doc/note.js +0 -64
- package/dist/es5/doc/note.js.map +0 -1
- package/dist/es5/doc/pivot-table.js +0 -137
- package/dist/es5/doc/pivot-table.js.map +0 -1
- package/dist/es5/doc/range.js +0 -229
- package/dist/es5/doc/range.js.map +0 -1
- package/dist/es5/doc/row.js +0 -382
- package/dist/es5/doc/row.js.map +0 -1
- package/dist/es5/doc/table.js +0 -441
- package/dist/es5/doc/table.js.map +0 -1
- package/dist/es5/doc/workbook.js +0 -205
- package/dist/es5/doc/workbook.js.map +0 -1
- package/dist/es5/doc/worksheet.js +0 -918
- package/dist/es5/doc/worksheet.js.map +0 -1
- package/dist/es5/exceljs.bare.js +0 -14
- package/dist/es5/exceljs.bare.js.map +0 -1
- package/dist/es5/exceljs.browser.js +0 -36
- package/dist/es5/exceljs.browser.js.map +0 -1
- package/dist/es5/exceljs.nodejs.js +0 -15
- package/dist/es5/exceljs.nodejs.js.map +0 -1
- package/dist/es5/index.js +0 -15
- package/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
- package/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
- package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
- package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/dist/es5/stream/xlsx/workbook-reader.js +0 -362
- package/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/dist/es5/stream/xlsx/workbook-writer.js +0 -347
- package/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
- package/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
- package/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/dist/es5/utils/auto-drain.js +0 -18
- package/dist/es5/utils/auto-drain.js.map +0 -1
- package/dist/es5/utils/browser-buffer-decode.js +0 -15
- package/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/dist/es5/utils/browser-buffer-encode.js +0 -18
- package/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/dist/es5/utils/cell-matrix.js +0 -149
- package/dist/es5/utils/cell-matrix.js.map +0 -1
- package/dist/es5/utils/col-cache.js +0 -258
- package/dist/es5/utils/col-cache.js.map +0 -1
- package/dist/es5/utils/copy-style.js +0 -43
- package/dist/es5/utils/copy-style.js.map +0 -1
- package/dist/es5/utils/encryptor.js +0 -58
- package/dist/es5/utils/encryptor.js.map +0 -1
- package/dist/es5/utils/iterate-stream.js +0 -46
- package/dist/es5/utils/iterate-stream.js.map +0 -1
- package/dist/es5/utils/parse-sax.js +0 -47
- package/dist/es5/utils/parse-sax.js.map +0 -1
- package/dist/es5/utils/shared-formula.js +0 -42
- package/dist/es5/utils/shared-formula.js.map +0 -1
- package/dist/es5/utils/shared-strings.js +0 -32
- package/dist/es5/utils/shared-strings.js.map +0 -1
- package/dist/es5/utils/stream-base64.js +0 -66
- package/dist/es5/utils/stream-base64.js.map +0 -1
- package/dist/es5/utils/stream-buf.js +0 -343
- package/dist/es5/utils/stream-buf.js.map +0 -1
- package/dist/es5/utils/string-buf.js +0 -73
- package/dist/es5/utils/string-buf.js.map +0 -1
- package/dist/es5/utils/string-builder.js +0 -32
- package/dist/es5/utils/string-builder.js.map +0 -1
- package/dist/es5/utils/stuttered-pipe.js +0 -61
- package/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/dist/es5/utils/typed-stack.js +0 -23
- package/dist/es5/utils/typed-stack.js.map +0 -1
- package/dist/es5/utils/under-dash.js +0 -168
- package/dist/es5/utils/under-dash.js.map +0 -1
- package/dist/es5/utils/utils.js +0 -204
- package/dist/es5/utils/utils.js.map +0 -1
- package/dist/es5/utils/xml-stream.js +0 -151
- package/dist/es5/utils/xml-stream.js.map +0 -1
- package/dist/es5/utils/zip-stream.js +0 -79
- package/dist/es5/utils/zip-stream.js.map +0 -1
- package/dist/es5/xlsx/defaultnumformats.js +0 -230
- package/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/dist/es5/xlsx/rel-type.js +0 -21
- package/dist/es5/xlsx/rel-type.js.map +0 -1
- package/dist/es5/xlsx/xform/base-xform.js +0 -139
- package/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
- package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
- package/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
- package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +0 -27
- package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
- package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
- package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/book/workbook-xform.js +0 -241
- package/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
- package/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
- package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
- package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
- package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
- package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
- package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
- package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
- package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/composite-xform.js +0 -51
- package/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
- package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
- package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/app-xform.js +0 -93
- package/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/content-types-xform.js +0 -127
- package/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/core-xform.js +0 -158
- package/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
- package/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
- package/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
- package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
- package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -39
- package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
- package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
- package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
- package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
- package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
- package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
- package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
- package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
- package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
- package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
- package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
- package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/list-xform.js +0 -91
- package/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/pivot-table/cache-field.js +0 -48
- package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +0 -1
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +0 -73
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +0 -93
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +0 -176
- package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
- package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -450
- package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
- package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
- package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
- package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
- package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
- package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
- package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
- package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
- package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
- package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
- package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
- package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
- package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
- package/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
- package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
- package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
- package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
- package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
- package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
- package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
- package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/merges.js +0 -52
- package/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
- package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
- package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
- package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
- package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
- package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
- package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
- package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
- package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
- package/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
- package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
- package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
- package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
- package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
- package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -522
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
- package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
- package/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
- package/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
- package/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
- package/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/static-xform.js +0 -61
- package/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
- package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
- package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
- package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
- package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
- package/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
- package/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/border-xform.js +0 -185
- package/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/color-xform.js +0 -66
- package/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
- package/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/fill-xform.js +0 -307
- package/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -58
- package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
- package/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/style-xform.js +0 -118
- package/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/styles-xform.js +0 -611
- package/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
- package/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
- package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
- package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
- package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
- package/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
- package/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
- package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/dist/es5/xlsx/xform/table/table-xform.js +0 -122
- package/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/dist/es5/xlsx/xlsx.js +0 -775
- package/dist/es5/xlsx/xlsx.js.map +0 -1
- package/dist/es5/xlsx/xml/theme1.js +0 -5
- package/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/dist/exceljs.bare.js +0 -57759
- package/dist/exceljs.bare.js.map +0 -777
- package/dist/exceljs.bare.min.js +0 -45
- package/dist/exceljs.bare.min.js.map +0 -1
- package/dist/exceljs.js +0 -62398
- package/dist/exceljs.js.map +0 -1095
- package/dist/exceljs.min.js +0 -45
- package/dist/exceljs.min.js.map +0 -1
package/lib/utils/encryptor.js
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const crypto = require('crypto');
|
|
4
|
-
|
|
5
|
-
const Encryptor = {
|
|
6
|
-
/**
|
|
7
|
-
* Calculate a hash of the concatenated buffers with the given algorithm.
|
|
8
|
-
* @param {string} algorithm - The hash algorithm.
|
|
9
|
-
* @returns {Buffer} The hash
|
|
10
|
-
*/
|
|
11
|
-
hash(algorithm, ...buffers) {
|
|
12
|
-
const hash = crypto.createHash(algorithm);
|
|
13
|
-
hash.update(Buffer.concat(buffers));
|
|
14
|
-
return hash.digest();
|
|
15
|
-
},
|
|
16
|
-
/**
|
|
17
|
-
* Convert a password into an encryption key
|
|
18
|
-
* @param {string} password - The password
|
|
19
|
-
* @param {string} hashAlgorithm - The hash algoritm
|
|
20
|
-
* @param {string} saltValue - The salt value
|
|
21
|
-
* @param {number} spinCount - The spin count
|
|
22
|
-
* @param {number} keyBits - The length of the key in bits
|
|
23
|
-
* @param {Buffer} blockKey - The block key
|
|
24
|
-
* @returns {Buffer} The encryption key
|
|
25
|
-
*/
|
|
26
|
-
convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) {
|
|
27
|
-
hashAlgorithm = hashAlgorithm.toLowerCase();
|
|
28
|
-
const hashes = crypto.getHashes();
|
|
29
|
-
if (hashes.indexOf(hashAlgorithm) < 0) {
|
|
30
|
-
throw new Error(`Hash algorithm '${hashAlgorithm}' not supported!`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Password must be in unicode buffer
|
|
34
|
-
const passwordBuffer = Buffer.from(password, 'utf16le');
|
|
35
|
-
// Generate the initial hash
|
|
36
|
-
let key = this.hash(hashAlgorithm, Buffer.from(saltValue, 'base64'), passwordBuffer);
|
|
37
|
-
// Now regenerate until spin count
|
|
38
|
-
for (let i = 0; i < spinCount; i++) {
|
|
39
|
-
const iterator = Buffer.alloc(4);
|
|
40
|
-
// this is the 'special' element of Excel password hashing
|
|
41
|
-
// that stops us from using crypto.pbkdf2()
|
|
42
|
-
iterator.writeUInt32LE(i, 0);
|
|
43
|
-
key = this.hash(hashAlgorithm, key, iterator);
|
|
44
|
-
}
|
|
45
|
-
return key.toString('base64');
|
|
46
|
-
},
|
|
47
|
-
/**
|
|
48
|
-
* Generates cryptographically strong pseudo-random data.
|
|
49
|
-
* @param size The size argument is a number indicating the number of bytes to generate.
|
|
50
|
-
*/
|
|
51
|
-
randomBytes(size) {
|
|
52
|
-
return crypto.randomBytes(size);
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
module.exports = Encryptor;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const crypto = require('crypto');
|
|
4
|
+
|
|
5
|
+
const Encryptor = {
|
|
6
|
+
/**
|
|
7
|
+
* Calculate a hash of the concatenated buffers with the given algorithm.
|
|
8
|
+
* @param {string} algorithm - The hash algorithm.
|
|
9
|
+
* @returns {Buffer} The hash
|
|
10
|
+
*/
|
|
11
|
+
hash(algorithm, ...buffers) {
|
|
12
|
+
const hash = crypto.createHash(algorithm);
|
|
13
|
+
hash.update(Buffer.concat(buffers));
|
|
14
|
+
return hash.digest();
|
|
15
|
+
},
|
|
16
|
+
/**
|
|
17
|
+
* Convert a password into an encryption key
|
|
18
|
+
* @param {string} password - The password
|
|
19
|
+
* @param {string} hashAlgorithm - The hash algoritm
|
|
20
|
+
* @param {string} saltValue - The salt value
|
|
21
|
+
* @param {number} spinCount - The spin count
|
|
22
|
+
* @param {number} keyBits - The length of the key in bits
|
|
23
|
+
* @param {Buffer} blockKey - The block key
|
|
24
|
+
* @returns {Buffer} The encryption key
|
|
25
|
+
*/
|
|
26
|
+
convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) {
|
|
27
|
+
hashAlgorithm = hashAlgorithm.toLowerCase();
|
|
28
|
+
const hashes = crypto.getHashes();
|
|
29
|
+
if (hashes.indexOf(hashAlgorithm) < 0) {
|
|
30
|
+
throw new Error(`Hash algorithm '${hashAlgorithm}' not supported!`);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Password must be in unicode buffer
|
|
34
|
+
const passwordBuffer = Buffer.from(password, 'utf16le');
|
|
35
|
+
// Generate the initial hash
|
|
36
|
+
let key = this.hash(hashAlgorithm, Buffer.from(saltValue, 'base64'), passwordBuffer);
|
|
37
|
+
// Now regenerate until spin count
|
|
38
|
+
for (let i = 0; i < spinCount; i++) {
|
|
39
|
+
const iterator = Buffer.alloc(4);
|
|
40
|
+
// this is the 'special' element of Excel password hashing
|
|
41
|
+
// that stops us from using crypto.pbkdf2()
|
|
42
|
+
iterator.writeUInt32LE(i, 0);
|
|
43
|
+
key = this.hash(hashAlgorithm, key, iterator);
|
|
44
|
+
}
|
|
45
|
+
return key.toString('base64');
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Generates cryptographically strong pseudo-random data.
|
|
49
|
+
* @param size The size argument is a number indicating the number of bytes to generate.
|
|
50
|
+
*/
|
|
51
|
+
randomBytes(size) {
|
|
52
|
+
return crypto.randomBytes(size);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
module.exports = Encryptor;
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
module.exports = async function* iterateStream(stream) {
|
|
2
|
-
const contents = [];
|
|
3
|
-
stream.on('data', data => contents.push(data));
|
|
4
|
-
|
|
5
|
-
let resolveStreamEndedPromise;
|
|
6
|
-
const streamEndedPromise = new Promise(resolve => (resolveStreamEndedPromise = resolve));
|
|
7
|
-
|
|
8
|
-
let ended = false;
|
|
9
|
-
stream.on('end', () => {
|
|
10
|
-
ended = true;
|
|
11
|
-
resolveStreamEndedPromise();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
let error = false;
|
|
15
|
-
stream.on('error', err => {
|
|
16
|
-
error = err;
|
|
17
|
-
resolveStreamEndedPromise();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
while (!ended || contents.length > 0) {
|
|
21
|
-
if (contents.length === 0) {
|
|
22
|
-
stream.resume();
|
|
23
|
-
// eslint-disable-next-line no-await-in-loop
|
|
24
|
-
await Promise.race([once(stream, 'data'), streamEndedPromise]);
|
|
25
|
-
} else {
|
|
26
|
-
stream.pause();
|
|
27
|
-
const data = contents.shift();
|
|
28
|
-
yield data;
|
|
29
|
-
}
|
|
30
|
-
if (error) throw error;
|
|
31
|
-
}
|
|
32
|
-
resolveStreamEndedPromise();
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
function once(eventEmitter, type) {
|
|
36
|
-
// TODO: Use require('events').once when node v10 is dropped
|
|
37
|
-
return new Promise(resolve => {
|
|
38
|
-
let fired = false;
|
|
39
|
-
const handler = () => {
|
|
40
|
-
if (!fired) {
|
|
41
|
-
fired = true;
|
|
42
|
-
eventEmitter.removeListener(type, handler);
|
|
43
|
-
resolve();
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
eventEmitter.addListener(type, handler);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
1
|
+
module.exports = async function* iterateStream(stream) {
|
|
2
|
+
const contents = [];
|
|
3
|
+
stream.on('data', data => contents.push(data));
|
|
4
|
+
|
|
5
|
+
let resolveStreamEndedPromise;
|
|
6
|
+
const streamEndedPromise = new Promise(resolve => (resolveStreamEndedPromise = resolve));
|
|
7
|
+
|
|
8
|
+
let ended = false;
|
|
9
|
+
stream.on('end', () => {
|
|
10
|
+
ended = true;
|
|
11
|
+
resolveStreamEndedPromise();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
let error = false;
|
|
15
|
+
stream.on('error', err => {
|
|
16
|
+
error = err;
|
|
17
|
+
resolveStreamEndedPromise();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
while (!ended || contents.length > 0) {
|
|
21
|
+
if (contents.length === 0) {
|
|
22
|
+
stream.resume();
|
|
23
|
+
// eslint-disable-next-line no-await-in-loop
|
|
24
|
+
await Promise.race([once(stream, 'data'), streamEndedPromise]);
|
|
25
|
+
} else {
|
|
26
|
+
stream.pause();
|
|
27
|
+
const data = contents.shift();
|
|
28
|
+
yield data;
|
|
29
|
+
}
|
|
30
|
+
if (error) throw error;
|
|
31
|
+
}
|
|
32
|
+
resolveStreamEndedPromise();
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function once(eventEmitter, type) {
|
|
36
|
+
// TODO: Use require('events').once when node v10 is dropped
|
|
37
|
+
return new Promise(resolve => {
|
|
38
|
+
let fired = false;
|
|
39
|
+
const handler = () => {
|
|
40
|
+
if (!fired) {
|
|
41
|
+
fired = true;
|
|
42
|
+
eventEmitter.removeListener(type, handler);
|
|
43
|
+
resolve();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
eventEmitter.addListener(type, handler);
|
|
47
|
+
});
|
|
48
|
+
}
|
package/lib/utils/parse-sax.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
const {SaxesParser} = require('saxes');
|
|
2
|
-
const {PassThrough} = require('readable-stream');
|
|
3
|
-
const {bufferToString} = require('./browser-buffer-decode');
|
|
4
|
-
|
|
5
|
-
module.exports = async function* (iterable) {
|
|
6
|
-
// TODO: Remove once node v8 is deprecated
|
|
7
|
-
// Detect and upgrade old streams
|
|
8
|
-
if (iterable.pipe && !iterable[Symbol.asyncIterator]) {
|
|
9
|
-
iterable = iterable.pipe(new PassThrough());
|
|
10
|
-
}
|
|
11
|
-
const saxesParser = new SaxesParser();
|
|
12
|
-
let error;
|
|
13
|
-
saxesParser.on('error', err => {
|
|
14
|
-
error = err;
|
|
15
|
-
});
|
|
16
|
-
let events = [];
|
|
17
|
-
saxesParser.on('opentag', value => events.push({eventType: 'opentag', value}));
|
|
18
|
-
saxesParser.on('text', value => events.push({eventType: 'text', value}));
|
|
19
|
-
saxesParser.on('closetag', value => events.push({eventType: 'closetag', value}));
|
|
20
|
-
for await (const chunk of iterable) {
|
|
21
|
-
saxesParser.write(bufferToString(chunk));
|
|
22
|
-
// saxesParser.write and saxesParser.on() are synchronous,
|
|
23
|
-
// so we can only reach the below line once all events have been emitted
|
|
24
|
-
if (error) throw error;
|
|
25
|
-
// As a performance optimization, we gather all events instead of passing
|
|
26
|
-
// them one by one, which would cause each event to go through the event queue
|
|
27
|
-
yield events;
|
|
28
|
-
events = [];
|
|
29
|
-
}
|
|
30
|
-
};
|
|
1
|
+
const {SaxesParser} = require('saxes');
|
|
2
|
+
const {PassThrough} = require('readable-stream');
|
|
3
|
+
const {bufferToString} = require('./browser-buffer-decode');
|
|
4
|
+
|
|
5
|
+
module.exports = async function* (iterable) {
|
|
6
|
+
// TODO: Remove once node v8 is deprecated
|
|
7
|
+
// Detect and upgrade old streams
|
|
8
|
+
if (iterable.pipe && !iterable[Symbol.asyncIterator]) {
|
|
9
|
+
iterable = iterable.pipe(new PassThrough());
|
|
10
|
+
}
|
|
11
|
+
const saxesParser = new SaxesParser();
|
|
12
|
+
let error;
|
|
13
|
+
saxesParser.on('error', err => {
|
|
14
|
+
error = err;
|
|
15
|
+
});
|
|
16
|
+
let events = [];
|
|
17
|
+
saxesParser.on('opentag', value => events.push({eventType: 'opentag', value}));
|
|
18
|
+
saxesParser.on('text', value => events.push({eventType: 'text', value}));
|
|
19
|
+
saxesParser.on('closetag', value => events.push({eventType: 'closetag', value}));
|
|
20
|
+
for await (const chunk of iterable) {
|
|
21
|
+
saxesParser.write(bufferToString(chunk));
|
|
22
|
+
// saxesParser.write and saxesParser.on() are synchronous,
|
|
23
|
+
// so we can only reach the below line once all events have been emitted
|
|
24
|
+
if (error) throw error;
|
|
25
|
+
// As a performance optimization, we gather all events instead of passing
|
|
26
|
+
// them one by one, which would cause each event to go through the event queue
|
|
27
|
+
yield events;
|
|
28
|
+
events = [];
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
const colCache = require('./col-cache');
|
|
2
|
-
|
|
3
|
-
// const cellRefRegex = /(([a-z_\-0-9]*)!)?[$]?([a-z]+)[$]?([1-9][0-9]*)/i;
|
|
4
|
-
const replacementCandidateRx = /(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi;
|
|
5
|
-
const CRrx = /^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;
|
|
6
|
-
|
|
7
|
-
function slideFormula(formula, fromCell, toCell) {
|
|
8
|
-
const offset = colCache.decode(fromCell);
|
|
9
|
-
const to = colCache.decode(toCell);
|
|
10
|
-
return formula.replace(
|
|
11
|
-
replacementCandidateRx,
|
|
12
|
-
(refMatch, sheet, sheetMaybe, addrPart, trailingParen) => {
|
|
13
|
-
if (trailingParen) {
|
|
14
|
-
return refMatch;
|
|
15
|
-
}
|
|
16
|
-
const match = CRrx.exec(addrPart);
|
|
17
|
-
if (match) {
|
|
18
|
-
const colDollar = match[1];
|
|
19
|
-
const colStr = match[2].toUpperCase();
|
|
20
|
-
const rowDollar = match[3];
|
|
21
|
-
const rowStr = match[4];
|
|
22
|
-
if (colStr.length > 3 || (colStr.length === 3 && colStr > 'XFD')) {
|
|
23
|
-
// > XFD is the highest col number in excel 2007 and beyond, so this is a named range
|
|
24
|
-
return refMatch;
|
|
25
|
-
}
|
|
26
|
-
let col = colCache.l2n(colStr);
|
|
27
|
-
let row = parseInt(rowStr, 10);
|
|
28
|
-
if (!colDollar) {
|
|
29
|
-
col += to.col - offset.col;
|
|
30
|
-
}
|
|
31
|
-
if (!rowDollar) {
|
|
32
|
-
row += to.row - offset.row;
|
|
33
|
-
}
|
|
34
|
-
const res = (sheet || '') + (colDollar || '') + colCache.n2l(col) + (rowDollar || '') + row;
|
|
35
|
-
return res;
|
|
36
|
-
}
|
|
37
|
-
return refMatch;
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
module.exports = {
|
|
43
|
-
slideFormula,
|
|
44
|
-
};
|
|
1
|
+
const colCache = require('./col-cache');
|
|
2
|
+
|
|
3
|
+
// const cellRefRegex = /(([a-z_\-0-9]*)!)?[$]?([a-z]+)[$]?([1-9][0-9]*)/i;
|
|
4
|
+
const replacementCandidateRx = /(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi;
|
|
5
|
+
const CRrx = /^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;
|
|
6
|
+
|
|
7
|
+
function slideFormula(formula, fromCell, toCell) {
|
|
8
|
+
const offset = colCache.decode(fromCell);
|
|
9
|
+
const to = colCache.decode(toCell);
|
|
10
|
+
return formula.replace(
|
|
11
|
+
replacementCandidateRx,
|
|
12
|
+
(refMatch, sheet, sheetMaybe, addrPart, trailingParen) => {
|
|
13
|
+
if (trailingParen) {
|
|
14
|
+
return refMatch;
|
|
15
|
+
}
|
|
16
|
+
const match = CRrx.exec(addrPart);
|
|
17
|
+
if (match) {
|
|
18
|
+
const colDollar = match[1];
|
|
19
|
+
const colStr = match[2].toUpperCase();
|
|
20
|
+
const rowDollar = match[3];
|
|
21
|
+
const rowStr = match[4];
|
|
22
|
+
if (colStr.length > 3 || (colStr.length === 3 && colStr > 'XFD')) {
|
|
23
|
+
// > XFD is the highest col number in excel 2007 and beyond, so this is a named range
|
|
24
|
+
return refMatch;
|
|
25
|
+
}
|
|
26
|
+
let col = colCache.l2n(colStr);
|
|
27
|
+
let row = parseInt(rowStr, 10);
|
|
28
|
+
if (!colDollar) {
|
|
29
|
+
col += to.col - offset.col;
|
|
30
|
+
}
|
|
31
|
+
if (!rowDollar) {
|
|
32
|
+
row += to.row - offset.row;
|
|
33
|
+
}
|
|
34
|
+
const res = (sheet || '') + (colDollar || '') + colCache.n2l(col) + (rowDollar || '') + row;
|
|
35
|
+
return res;
|
|
36
|
+
}
|
|
37
|
+
return refMatch;
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
module.exports = {
|
|
43
|
+
slideFormula,
|
|
44
|
+
};
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
class SharedStrings {
|
|
2
|
-
constructor() {
|
|
3
|
-
this._values = [];
|
|
4
|
-
this._totalRefs = 0;
|
|
5
|
-
this._hash = Object.create(null);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
get count() {
|
|
9
|
-
return this._values.length;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
get values() {
|
|
13
|
-
return this._values;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
get totalRefs() {
|
|
17
|
-
return this._totalRefs;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
getString(index) {
|
|
21
|
-
return this._values[index];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
add(value) {
|
|
25
|
-
let index = this._hash[value];
|
|
26
|
-
if (index === undefined) {
|
|
27
|
-
index = this._hash[value] = this._values.length;
|
|
28
|
-
this._values.push(value);
|
|
29
|
-
}
|
|
30
|
-
this._totalRefs++;
|
|
31
|
-
return index;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
module.exports = SharedStrings;
|
|
1
|
+
class SharedStrings {
|
|
2
|
+
constructor() {
|
|
3
|
+
this._values = [];
|
|
4
|
+
this._totalRefs = 0;
|
|
5
|
+
this._hash = Object.create(null);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
get count() {
|
|
9
|
+
return this._values.length;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
get values() {
|
|
13
|
+
return this._values;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get totalRefs() {
|
|
17
|
+
return this._totalRefs;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getString(index) {
|
|
21
|
+
return this._values[index];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
add(value) {
|
|
25
|
+
let index = this._hash[value];
|
|
26
|
+
if (index === undefined) {
|
|
27
|
+
index = this._hash[value] = this._values.length;
|
|
28
|
+
this._values.push(value);
|
|
29
|
+
}
|
|
30
|
+
this._totalRefs++;
|
|
31
|
+
return index;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
module.exports = SharedStrings;
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
const Stream = require('readable-stream');
|
|
2
|
-
|
|
3
|
-
// =============================================================================
|
|
4
|
-
// StreamBase64 - A utility to convert to/from base64 stream
|
|
5
|
-
// Note: does not buffer data, must be piped
|
|
6
|
-
class StreamBase64 extends Stream.Duplex {
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
|
|
10
|
-
// consuming pipe streams go here
|
|
11
|
-
this.pipes = [];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// writable
|
|
15
|
-
// event drain - if write returns false (which it won't), indicates when safe to write again.
|
|
16
|
-
// finish - end() has been called
|
|
17
|
-
// pipe(src) - pipe() has been called on readable
|
|
18
|
-
// unpipe(src) - unpipe() has been called on readable
|
|
19
|
-
// error - duh
|
|
20
|
-
|
|
21
|
-
write(/* data, encoding */) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
cork() {}
|
|
26
|
-
|
|
27
|
-
uncork() {}
|
|
28
|
-
|
|
29
|
-
end(/* chunk, encoding, callback */) {}
|
|
30
|
-
|
|
31
|
-
// readable
|
|
32
|
-
// event readable - some data is now available
|
|
33
|
-
// event data - switch to flowing mode - feeds chunks to handler
|
|
34
|
-
// event end - no more data
|
|
35
|
-
// event close - optional, indicates upstream close
|
|
36
|
-
// event error - duh
|
|
37
|
-
read(/* size */) {}
|
|
38
|
-
|
|
39
|
-
setEncoding(encoding) {
|
|
40
|
-
// causes stream.read or stream.on('data) to return strings of encoding instead of Buffer objects
|
|
41
|
-
this.encoding = encoding;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
pause() {}
|
|
45
|
-
|
|
46
|
-
resume() {}
|
|
47
|
-
|
|
48
|
-
isPaused() {}
|
|
49
|
-
|
|
50
|
-
pipe(destination) {
|
|
51
|
-
// add destination to pipe list & write current buffer
|
|
52
|
-
this.pipes.push(destination);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
unpipe(destination) {
|
|
56
|
-
// remove destination from pipe list
|
|
57
|
-
this.pipes = this.pipes.filter(pipe => pipe !== destination);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
unshift(/* chunk */) {
|
|
61
|
-
// some numpty has read some data that's not for them and they want to put it back!
|
|
62
|
-
// Might implement this some day
|
|
63
|
-
throw new Error('Not Implemented');
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
wrap(/* stream */) {
|
|
67
|
-
// not implemented
|
|
68
|
-
throw new Error('Not Implemented');
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
module.exports = StreamBase64;
|
|
1
|
+
const Stream = require('readable-stream');
|
|
2
|
+
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// StreamBase64 - A utility to convert to/from base64 stream
|
|
5
|
+
// Note: does not buffer data, must be piped
|
|
6
|
+
class StreamBase64 extends Stream.Duplex {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
|
|
10
|
+
// consuming pipe streams go here
|
|
11
|
+
this.pipes = [];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// writable
|
|
15
|
+
// event drain - if write returns false (which it won't), indicates when safe to write again.
|
|
16
|
+
// finish - end() has been called
|
|
17
|
+
// pipe(src) - pipe() has been called on readable
|
|
18
|
+
// unpipe(src) - unpipe() has been called on readable
|
|
19
|
+
// error - duh
|
|
20
|
+
|
|
21
|
+
write(/* data, encoding */) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
cork() {}
|
|
26
|
+
|
|
27
|
+
uncork() {}
|
|
28
|
+
|
|
29
|
+
end(/* chunk, encoding, callback */) {}
|
|
30
|
+
|
|
31
|
+
// readable
|
|
32
|
+
// event readable - some data is now available
|
|
33
|
+
// event data - switch to flowing mode - feeds chunks to handler
|
|
34
|
+
// event end - no more data
|
|
35
|
+
// event close - optional, indicates upstream close
|
|
36
|
+
// event error - duh
|
|
37
|
+
read(/* size */) {}
|
|
38
|
+
|
|
39
|
+
setEncoding(encoding) {
|
|
40
|
+
// causes stream.read or stream.on('data) to return strings of encoding instead of Buffer objects
|
|
41
|
+
this.encoding = encoding;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
pause() {}
|
|
45
|
+
|
|
46
|
+
resume() {}
|
|
47
|
+
|
|
48
|
+
isPaused() {}
|
|
49
|
+
|
|
50
|
+
pipe(destination) {
|
|
51
|
+
// add destination to pipe list & write current buffer
|
|
52
|
+
this.pipes.push(destination);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
unpipe(destination) {
|
|
56
|
+
// remove destination from pipe list
|
|
57
|
+
this.pipes = this.pipes.filter(pipe => pipe !== destination);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
unshift(/* chunk */) {
|
|
61
|
+
// some numpty has read some data that's not for them and they want to put it back!
|
|
62
|
+
// Might implement this some day
|
|
63
|
+
throw new Error('Not Implemented');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
wrap(/* stream */) {
|
|
67
|
+
// not implemented
|
|
68
|
+
throw new Error('Not Implemented');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
module.exports = StreamBase64;
|