@rowsncolumns/toolkit 24.4.1
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.md +100 -0
- package/Readme.md +27 -0
- package/dist/cjs/autofilter-condition.d.ts +43 -0
- package/dist/cjs/autofilter-condition.d.ts.map +1 -0
- package/dist/cjs/autofilter-condition.js +155 -0
- package/dist/cjs/csv-export.d.ts +49 -0
- package/dist/cjs/csv-export.d.ts.map +1 -0
- package/dist/cjs/csv-export.js +142 -0
- package/dist/cjs/csv-import-worker.d.ts +16 -0
- package/dist/cjs/csv-import-worker.d.ts.map +1 -0
- package/dist/cjs/csv-import-worker.js +60 -0
- package/dist/cjs/csv-import.d.ts +38 -0
- package/dist/cjs/csv-import.d.ts.map +1 -0
- package/dist/cjs/csv-import.js +166 -0
- package/dist/cjs/csv-parser/helpers.d.ts +14 -0
- package/dist/cjs/csv-parser/helpers.d.ts.map +1 -0
- package/dist/cjs/csv-parser/helpers.js +145 -0
- package/dist/cjs/csv-parser/types.d.ts +66 -0
- package/dist/cjs/csv-parser/types.d.ts.map +1 -0
- package/dist/cjs/csv-parser/types.js +14 -0
- package/dist/cjs/csv-parser/worker.d.ts +2 -0
- package/dist/cjs/csv-parser/worker.d.ts.map +1 -0
- package/dist/cjs/csv-parser/worker.js +200 -0
- package/dist/cjs/excel-export.d.ts +11 -0
- package/dist/cjs/excel-export.d.ts.map +1 -0
- package/dist/cjs/excel-export.js +22 -0
- package/dist/cjs/excel-import-session.d.ts +51 -0
- package/dist/cjs/excel-import-session.d.ts.map +1 -0
- package/dist/cjs/excel-import-session.js +307 -0
- package/dist/cjs/excel-import-worker.d.ts +7 -0
- package/dist/cjs/excel-import-worker.d.ts.map +1 -0
- package/dist/cjs/excel-import-worker.js +119 -0
- package/dist/cjs/excel-parser/builtin-numfmts.d.ts +24 -0
- package/dist/cjs/excel-parser/builtin-numfmts.d.ts.map +1 -0
- package/dist/cjs/excel-parser/builtin-numfmts.js +63 -0
- package/dist/cjs/excel-parser/cfb-decryptor.d.ts +53 -0
- package/dist/cjs/excel-parser/cfb-decryptor.d.ts.map +1 -0
- package/dist/cjs/excel-parser/cfb-decryptor.js +553 -0
- package/dist/cjs/excel-parser/cfb-encryptor.d.ts +23 -0
- package/dist/cjs/excel-parser/cfb-encryptor.d.ts.map +1 -0
- package/dist/cjs/excel-parser/cfb-encryptor.js +200 -0
- package/dist/cjs/excel-parser/dv-cell-stamp.d.ts +29 -0
- package/dist/cjs/excel-parser/dv-cell-stamp.d.ts.map +1 -0
- package/dist/cjs/excel-parser/dv-cell-stamp.js +239 -0
- package/dist/cjs/excel-parser/helpers.d.ts +28 -0
- package/dist/cjs/excel-parser/helpers.d.ts.map +1 -0
- package/dist/cjs/excel-parser/helpers.js +188 -0
- package/dist/cjs/excel-parser/interface.d.ts +179 -0
- package/dist/cjs/excel-parser/interface.d.ts.map +1 -0
- package/dist/cjs/excel-parser/interface.js +1 -0
- package/dist/cjs/excel-parser/plugins/base/index.d.ts +31 -0
- package/dist/cjs/excel-parser/plugins/base/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/base/index.js +101 -0
- package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
- package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.js +488 -0
- package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts +15 -0
- package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/data-validations.js +353 -0
- package/dist/cjs/excel-parser/plugins/ods/formula.d.ts +8 -0
- package/dist/cjs/excel-parser/plugins/ods/formula.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/formula.js +82 -0
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts +122 -0
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/index.js +3642 -0
- package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts +25 -0
- package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/sparklines.js +221 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +60 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.js +808 -0
- package/dist/cjs/excel-parser/plugins/ods/types.d.ts +7 -0
- package/dist/cjs/excel-parser/plugins/ods/types.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/types.js +1 -0
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts +5 -0
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xls/index.js +19 -0
- package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
- package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.js +49 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts +117 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.js +2972 -0
- package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
- package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.js +527 -0
- package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts +5 -0
- package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsm/index.js +10 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +60 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.js +2178 -0
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.js +620 -0
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.js +515 -0
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +941 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +320 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +6056 -0
- package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
- package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/numfmt.js +3 -0
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +342 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.js +26 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.js +59 -0
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +44 -0
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/styles.js +1377 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts +50 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.js +150 -0
- package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
- package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.js +141 -0
- package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
- package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.js +407 -0
- package/dist/cjs/excel-parser/registry.d.ts +5 -0
- package/dist/cjs/excel-parser/registry.d.ts.map +1 -0
- package/dist/cjs/excel-parser/registry.js +21 -0
- package/dist/cjs/excel-parser/style-registry.d.ts +51 -0
- package/dist/cjs/excel-parser/style-registry.d.ts.map +1 -0
- package/dist/cjs/excel-parser/style-registry.js +175 -0
- package/dist/cjs/excel-parser/theme-default.d.ts +3 -0
- package/dist/cjs/excel-parser/theme-default.d.ts.map +1 -0
- package/dist/cjs/excel-parser/theme-default.js +19 -0
- package/dist/cjs/excel-parser/types.d.ts +365 -0
- package/dist/cjs/excel-parser/types.d.ts.map +1 -0
- package/dist/cjs/excel-parser/types.js +59 -0
- package/dist/cjs/excel-parser/utils.d.ts +6 -0
- package/dist/cjs/excel-parser/utils.d.ts.map +1 -0
- package/dist/cjs/excel-parser/utils.js +30 -0
- package/dist/cjs/excel-parser/workbook.d.ts +51 -0
- package/dist/cjs/excel-parser/workbook.d.ts.map +1 -0
- package/dist/cjs/excel-parser/workbook.js +317 -0
- package/dist/cjs/excel-parser/worker.d.ts +2 -0
- package/dist/cjs/excel-parser/worker.d.ts.map +1 -0
- package/dist/cjs/excel-parser/worker.js +1149 -0
- package/dist/cjs/excel-parser/zip-parser-streaming.d.ts +13 -0
- package/dist/cjs/excel-parser/zip-parser-streaming.d.ts.map +1 -0
- package/dist/cjs/excel-parser/zip-parser-streaming.js +200 -0
- package/dist/cjs/excel-parser/zip-parser.d.ts +11 -0
- package/dist/cjs/excel-parser/zip-parser.d.ts.map +1 -0
- package/dist/cjs/excel-parser/zip-parser.js +49 -0
- package/dist/cjs/exporter/invalid-data-validation.d.ts +19 -0
- package/dist/cjs/exporter/invalid-data-validation.d.ts.map +1 -0
- package/dist/cjs/exporter/invalid-data-validation.js +39 -0
- package/dist/cjs/exporter/ods/ods-export.d.ts +26 -0
- package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -0
- package/dist/cjs/exporter/ods/ods-export.js +3714 -0
- package/dist/cjs/exporter/ods/sparkline-builder.d.ts +33 -0
- package/dist/cjs/exporter/ods/sparkline-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/ods/sparkline-builder.js +221 -0
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts +3 -0
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/chart-builder.js +1901 -0
- package/dist/cjs/exporter/xlsx/chart-templates.d.ts +1781 -0
- package/dist/cjs/exporter/xlsx/chart-templates.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/chart-templates.js +1798 -0
- package/dist/cjs/exporter/xlsx/future-functions.d.ts +10 -0
- package/dist/cjs/exporter/xlsx/future-functions.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/future-functions.js +264 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts +58 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.js +277 -0
- package/dist/cjs/exporter/xlsx/power-query-builder.d.ts +26 -0
- package/dist/cjs/exporter/xlsx/power-query-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/power-query-builder.js +306 -0
- package/dist/cjs/exporter/xlsx/slicer-builder.d.ts +11 -0
- package/dist/cjs/exporter/xlsx/slicer-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/slicer-builder.js +87 -0
- package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts +61 -0
- package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/sparkline-builder.js +489 -0
- package/dist/cjs/exporter/xlsx/style-builder.d.ts +93 -0
- package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/style-builder.js +813 -0
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.js +189 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +121 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.js +4596 -0
- package/dist/cjs/helpers/theme-xml-generator.d.ts +8 -0
- package/dist/cjs/helpers/theme-xml-generator.d.ts.map +1 -0
- package/dist/cjs/helpers/theme-xml-generator.js +33 -0
- package/dist/cjs/helpers.d.ts +34 -0
- package/dist/cjs/helpers.d.ts.map +1 -0
- package/dist/cjs/helpers.js +189 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +15 -0
- package/dist/cjs/indexed-colors.d.ts +2 -0
- package/dist/cjs/indexed-colors.d.ts.map +1 -0
- package/dist/cjs/indexed-colors.js +75 -0
- package/dist/cjs/ods-export.d.ts +24 -0
- package/dist/cjs/ods-export.d.ts.map +1 -0
- package/dist/cjs/ods-export.js +23 -0
- package/dist/cjs/parse.d.ts +24 -0
- package/dist/cjs/parse.d.ts.map +1 -0
- package/dist/cjs/parse.js +68 -0
- package/dist/cjs/power-query.d.ts +41 -0
- package/dist/cjs/power-query.d.ts.map +1 -0
- package/dist/cjs/power-query.js +22 -0
- package/dist/cjs/server.d.ts +9 -0
- package/dist/cjs/server.d.ts.map +1 -0
- package/dist/cjs/server.js +8 -0
- package/dist/cjs/theme1.d.ts +3 -0
- package/dist/cjs/theme1.d.ts.map +1 -0
- package/dist/cjs/theme1.js +2 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/cjs/types.d.ts +14 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +14 -0
- package/dist/cjs/vitest.config.d.ts +3 -0
- package/dist/cjs/vitest.config.d.ts.map +1 -0
- package/dist/cjs/vitest.config.js +16 -0
- package/dist/esm/autofilter-condition.d.ts +43 -0
- package/dist/esm/autofilter-condition.d.ts.map +1 -0
- package/dist/esm/autofilter-condition.js +145 -0
- package/dist/esm/csv-export.d.ts +49 -0
- package/dist/esm/csv-export.d.ts.map +1 -0
- package/dist/esm/csv-export.js +126 -0
- package/dist/esm/csv-import-worker.d.ts +16 -0
- package/dist/esm/csv-import-worker.d.ts.map +1 -0
- package/dist/esm/csv-import-worker.js +60 -0
- package/dist/esm/csv-import.d.ts +38 -0
- package/dist/esm/csv-import.d.ts.map +1 -0
- package/dist/esm/csv-import.js +132 -0
- package/dist/esm/csv-parser/helpers.d.ts +14 -0
- package/dist/esm/csv-parser/helpers.d.ts.map +1 -0
- package/dist/esm/csv-parser/helpers.js +0 -0
- package/dist/esm/csv-parser/types.d.ts +66 -0
- package/dist/esm/csv-parser/types.d.ts.map +1 -0
- package/dist/esm/csv-parser/types.js +14 -0
- package/dist/esm/csv-parser/worker.d.ts +2 -0
- package/dist/esm/csv-parser/worker.d.ts.map +1 -0
- package/dist/esm/csv-parser/worker.js +154 -0
- package/dist/esm/excel-export.d.ts +11 -0
- package/dist/esm/excel-export.d.ts.map +1 -0
- package/dist/esm/excel-export.js +13 -0
- package/dist/esm/excel-import-session.d.ts +51 -0
- package/dist/esm/excel-import-session.d.ts.map +1 -0
- package/dist/esm/excel-import-session.js +255 -0
- package/dist/esm/excel-import-worker.d.ts +7 -0
- package/dist/esm/excel-import-worker.d.ts.map +1 -0
- package/dist/esm/excel-import-worker.js +116 -0
- package/dist/esm/excel-parser/builtin-numfmts.d.ts +24 -0
- package/dist/esm/excel-parser/builtin-numfmts.d.ts.map +1 -0
- package/dist/esm/excel-parser/builtin-numfmts.js +59 -0
- package/dist/esm/excel-parser/cfb-decryptor.d.ts +53 -0
- package/dist/esm/excel-parser/cfb-decryptor.d.ts.map +1 -0
- package/dist/esm/excel-parser/cfb-decryptor.js +493 -0
- package/dist/esm/excel-parser/cfb-encryptor.d.ts +23 -0
- package/dist/esm/excel-parser/cfb-encryptor.d.ts.map +1 -0
- package/dist/esm/excel-parser/cfb-encryptor.js +181 -0
- package/dist/esm/excel-parser/dv-cell-stamp.d.ts +29 -0
- package/dist/esm/excel-parser/dv-cell-stamp.d.ts.map +1 -0
- package/dist/esm/excel-parser/dv-cell-stamp.js +155 -0
- package/dist/esm/excel-parser/helpers.d.ts +28 -0
- package/dist/esm/excel-parser/helpers.d.ts.map +1 -0
- package/dist/esm/excel-parser/helpers.js +160 -0
- package/dist/esm/excel-parser/interface.d.ts +179 -0
- package/dist/esm/excel-parser/interface.d.ts.map +1 -0
- package/dist/esm/excel-parser/interface.js +1 -0
- package/dist/esm/excel-parser/plugins/base/index.d.ts +31 -0
- package/dist/esm/excel-parser/plugins/base/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/base/index.js +64 -0
- package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
- package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/conditional-formatting.js +405 -0
- package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts +15 -0
- package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/data-validations.js +331 -0
- package/dist/esm/excel-parser/plugins/ods/formula.d.ts +8 -0
- package/dist/esm/excel-parser/plugins/ods/formula.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/formula.js +82 -0
- package/dist/esm/excel-parser/plugins/ods/index.d.ts +122 -0
- package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/index.js +2896 -0
- package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts +25 -0
- package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/sparklines.js +188 -0
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts +60 -0
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/styles.js +732 -0
- package/dist/esm/excel-parser/plugins/ods/types.d.ts +7 -0
- package/dist/esm/excel-parser/plugins/ods/types.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/types.js +1 -0
- package/dist/esm/excel-parser/plugins/xls/index.d.ts +5 -0
- package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xls/index.js +7 -0
- package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
- package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.js +48 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts +117 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.js +2339 -0
- package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
- package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.js +522 -0
- package/dist/esm/excel-parser/plugins/xlsm/index.d.ts +5 -0
- package/dist/esm/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsm/index.js +6 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +60 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.js +2036 -0
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.js +621 -0
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.js +493 -0
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/drawing.js +905 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +320 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.js +4654 -0
- package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
- package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/numfmt.js +3 -0
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/pivots.js +254 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.js +13 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.js +64 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +44 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.js +1365 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts +50 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.js +127 -0
- package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
- package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.js +103 -0
- package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
- package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.js +399 -0
- package/dist/esm/excel-parser/registry.d.ts +5 -0
- package/dist/esm/excel-parser/registry.d.ts.map +1 -0
- package/dist/esm/excel-parser/registry.js +20 -0
- package/dist/esm/excel-parser/style-registry.d.ts +51 -0
- package/dist/esm/excel-parser/style-registry.d.ts.map +1 -0
- package/dist/esm/excel-parser/style-registry.js +163 -0
- package/dist/esm/excel-parser/theme-default.d.ts +3 -0
- package/dist/esm/excel-parser/theme-default.d.ts.map +1 -0
- package/dist/esm/excel-parser/theme-default.js +19 -0
- package/dist/esm/excel-parser/types.d.ts +365 -0
- package/dist/esm/excel-parser/types.d.ts.map +1 -0
- package/dist/esm/excel-parser/types.js +59 -0
- package/dist/esm/excel-parser/utils.d.ts +6 -0
- package/dist/esm/excel-parser/utils.d.ts.map +1 -0
- package/dist/esm/excel-parser/utils.js +25 -0
- package/dist/esm/excel-parser/workbook.d.ts +51 -0
- package/dist/esm/excel-parser/workbook.d.ts.map +1 -0
- package/dist/esm/excel-parser/workbook.js +192 -0
- package/dist/esm/excel-parser/worker.d.ts +2 -0
- package/dist/esm/excel-parser/worker.d.ts.map +1 -0
- package/dist/esm/excel-parser/worker.js +862 -0
- package/dist/esm/excel-parser/zip-parser-streaming.d.ts +13 -0
- package/dist/esm/excel-parser/zip-parser-streaming.d.ts.map +1 -0
- package/dist/esm/excel-parser/zip-parser-streaming.js +119 -0
- package/dist/esm/excel-parser/zip-parser.d.ts +11 -0
- package/dist/esm/excel-parser/zip-parser.d.ts.map +1 -0
- package/dist/esm/excel-parser/zip-parser.js +43 -0
- package/dist/esm/exporter/invalid-data-validation.d.ts +19 -0
- package/dist/esm/exporter/invalid-data-validation.d.ts.map +1 -0
- package/dist/esm/exporter/invalid-data-validation.js +37 -0
- package/dist/esm/exporter/ods/ods-export.d.ts +26 -0
- package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -0
- package/dist/esm/exporter/ods/ods-export.js +3238 -0
- package/dist/esm/exporter/ods/sparkline-builder.d.ts +33 -0
- package/dist/esm/exporter/ods/sparkline-builder.d.ts.map +1 -0
- package/dist/esm/exporter/ods/sparkline-builder.js +165 -0
- package/dist/esm/exporter/xlsx/chart-builder.d.ts +3 -0
- package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/chart-builder.js +1805 -0
- package/dist/esm/exporter/xlsx/chart-templates.d.ts +1781 -0
- package/dist/esm/exporter/xlsx/chart-templates.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/chart-templates.js +1798 -0
- package/dist/esm/exporter/xlsx/future-functions.d.ts +10 -0
- package/dist/esm/exporter/xlsx/future-functions.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/future-functions.js +264 -0
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts +58 -0
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/pivot-builder.js +230 -0
- package/dist/esm/exporter/xlsx/power-query-builder.d.ts +26 -0
- package/dist/esm/exporter/xlsx/power-query-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/power-query-builder.js +257 -0
- package/dist/esm/exporter/xlsx/slicer-builder.d.ts +11 -0
- package/dist/esm/exporter/xlsx/slicer-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/slicer-builder.js +84 -0
- package/dist/esm/exporter/xlsx/sparkline-builder.d.ts +61 -0
- package/dist/esm/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/sparkline-builder.js +437 -0
- package/dist/esm/exporter/xlsx/style-builder.d.ts +93 -0
- package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/style-builder.js +795 -0
- package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
- package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/threaded-comments-builder.js +175 -0
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts +121 -0
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/xlsx-export.js +4062 -0
- package/dist/esm/helpers/theme-xml-generator.d.ts +8 -0
- package/dist/esm/helpers/theme-xml-generator.d.ts.map +1 -0
- package/dist/esm/helpers/theme-xml-generator.js +33 -0
- package/dist/esm/helpers.d.ts +34 -0
- package/dist/esm/helpers.d.ts.map +1 -0
- package/dist/esm/helpers.js +182 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/indexed-colors.d.ts +2 -0
- package/dist/esm/indexed-colors.d.ts.map +1 -0
- package/dist/esm/indexed-colors.js +75 -0
- package/dist/esm/ods-export.d.ts +24 -0
- package/dist/esm/ods-export.d.ts.map +1 -0
- package/dist/esm/ods-export.js +12 -0
- package/dist/esm/parse.d.ts +24 -0
- package/dist/esm/parse.d.ts.map +1 -0
- package/dist/esm/parse.js +55 -0
- package/dist/esm/power-query.d.ts +41 -0
- package/dist/esm/power-query.d.ts.map +1 -0
- package/dist/esm/power-query.js +19 -0
- package/dist/esm/server.d.ts +9 -0
- package/dist/esm/server.d.ts.map +1 -0
- package/dist/esm/server.js +8 -0
- package/dist/esm/theme1.d.ts +3 -0
- package/dist/esm/theme1.d.ts.map +1 -0
- package/dist/esm/theme1.js +2 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/esm/types.d.ts +14 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +14 -0
- package/dist/esm/vitest.config.d.ts +3 -0
- package/dist/esm/vitest.config.d.ts.map +1 -0
- package/dist/esm/vitest.config.js +16 -0
- package/package.json +62 -0
- package/xlsx.d.ts +52 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { __awaiter, __generator, __read, __spreadArray } from "tslib";
|
|
2
|
+
import { SheetCell } from "@rowsncolumns/spreadsheet-state";
|
|
3
|
+
import { isNil, uuid } from "@rowsncolumns/utils";
|
|
4
|
+
import * as XLSX from "xlsx";
|
|
5
|
+
/**
|
|
6
|
+
* Sniff a byte-order mark at the start of a CSV byte stream.
|
|
7
|
+
* Returns the encoding the BOM declares, or `undefined` when no BOM
|
|
8
|
+
* is present (in which case bytes are treated as UTF-8).
|
|
9
|
+
*/
|
|
10
|
+
export var detectCSVBomEncoding = function (bytes) {
|
|
11
|
+
if (bytes.length >= 2) {
|
|
12
|
+
if (bytes[0] === 0xff && bytes[1] === 0xfe)
|
|
13
|
+
return "utf-16le";
|
|
14
|
+
if (bytes[0] === 0xfe && bytes[1] === 0xff)
|
|
15
|
+
return "utf-16be";
|
|
16
|
+
}
|
|
17
|
+
if (bytes.length >= 3 &&
|
|
18
|
+
bytes[0] === 0xef &&
|
|
19
|
+
bytes[1] === 0xbb &&
|
|
20
|
+
bytes[2] === 0xbf) {
|
|
21
|
+
return "utf-8";
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Parse csv string into a 2d array
|
|
27
|
+
* https://stackoverflow.com/a/14991797
|
|
28
|
+
* @param str
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
export var parseCSV = function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
32
|
+
var workbook, text, arrayBuffer, bomEncoding, text, worksheet, rows;
|
|
33
|
+
return __generator(this, function (_a) {
|
|
34
|
+
switch (_a.label) {
|
|
35
|
+
case 0:
|
|
36
|
+
if (!(typeof input === "string")) return [3 /*break*/, 1];
|
|
37
|
+
text = input.charCodeAt(0) === 0xfeff ? input.slice(1) : input;
|
|
38
|
+
workbook = XLSX.read(text, { type: "string", raw: true, dense: true });
|
|
39
|
+
return [3 /*break*/, 3];
|
|
40
|
+
case 1: return [4 /*yield*/, input.arrayBuffer()];
|
|
41
|
+
case 2:
|
|
42
|
+
arrayBuffer = _a.sent();
|
|
43
|
+
bomEncoding = detectCSVBomEncoding(new Uint8Array(arrayBuffer));
|
|
44
|
+
if (bomEncoding) {
|
|
45
|
+
text = new TextDecoder(bomEncoding).decode(arrayBuffer);
|
|
46
|
+
workbook = XLSX.read(text, { type: "string", raw: true, dense: true });
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
workbook = XLSX.read(arrayBuffer, {
|
|
50
|
+
type: "array",
|
|
51
|
+
raw: true,
|
|
52
|
+
// UTF-8 encoding
|
|
53
|
+
codepage: 65001,
|
|
54
|
+
dense: true,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
_a.label = 3;
|
|
58
|
+
case 3:
|
|
59
|
+
worksheet = workbook.Sheets[workbook.SheetNames[0]];
|
|
60
|
+
rows = XLSX.utils.sheet_to_json(worksheet, {
|
|
61
|
+
header: 1,
|
|
62
|
+
});
|
|
63
|
+
return [2 /*return*/, rows];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}); };
|
|
67
|
+
/**
|
|
68
|
+
* Create sheet data from csv string
|
|
69
|
+
* @param csv
|
|
70
|
+
* @param delimiter
|
|
71
|
+
* @returns
|
|
72
|
+
*/
|
|
73
|
+
export var createRowDataFromCSVString = function (csv_1) {
|
|
74
|
+
var args_1 = [];
|
|
75
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
76
|
+
args_1[_i - 1] = arguments[_i];
|
|
77
|
+
}
|
|
78
|
+
return __awaiter(void 0, __spreadArray([csv_1], __read(args_1), false), void 0, function (csv, preserveFormatting, locale) {
|
|
79
|
+
var rows, rowData, sheetCell, i, rowIndex, rowValue, j, columnIndex, text;
|
|
80
|
+
var _a;
|
|
81
|
+
if (preserveFormatting === void 0) { preserveFormatting = true; }
|
|
82
|
+
return __generator(this, function (_b) {
|
|
83
|
+
switch (_b.label) {
|
|
84
|
+
case 0: return [4 /*yield*/, parseCSV(csv)];
|
|
85
|
+
case 1:
|
|
86
|
+
rows = (_a = (_b.sent())) !== null && _a !== void 0 ? _a : [];
|
|
87
|
+
rowData = [];
|
|
88
|
+
sheetCell = new SheetCell();
|
|
89
|
+
sheetCell.setLocale(locale);
|
|
90
|
+
for (i = 0; i < rows.length; i++) {
|
|
91
|
+
rowIndex = i;
|
|
92
|
+
if (!(rowIndex in rowData)) {
|
|
93
|
+
rowData[rowIndex] = { values: [] };
|
|
94
|
+
}
|
|
95
|
+
rowValue = rows[i];
|
|
96
|
+
if (isNil(rowValue)) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
for (j = 0; j < rows[i].length; j++) {
|
|
100
|
+
columnIndex = j;
|
|
101
|
+
text = rows[i][j];
|
|
102
|
+
sheetCell.assign(uuid(), { rowIndex: rowIndex, columnIndex: columnIndex });
|
|
103
|
+
sheetCell.setUserEnteredValue(text);
|
|
104
|
+
// Delete
|
|
105
|
+
if (!preserveFormatting) {
|
|
106
|
+
sheetCell.clearFormatting();
|
|
107
|
+
}
|
|
108
|
+
rowData[rowIndex].values[columnIndex] = sheetCell.getCellData();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return [2 /*return*/, rowData];
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Parse CSV file object
|
|
118
|
+
* @param file
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
export var createRowDataFromCSVFile = function (file_1) {
|
|
122
|
+
var args_1 = [];
|
|
123
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
124
|
+
args_1[_i - 1] = arguments[_i];
|
|
125
|
+
}
|
|
126
|
+
return __awaiter(void 0, __spreadArray([file_1], __read(args_1), false), void 0, function (file, preserveFormatting, locale) {
|
|
127
|
+
if (preserveFormatting === void 0) { preserveFormatting = true; }
|
|
128
|
+
return __generator(this, function (_a) {
|
|
129
|
+
return [2 /*return*/, createRowDataFromCSVString(file, preserveFormatting, locale)];
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Create sheet data from csv string
|
|
135
|
+
* @param csv
|
|
136
|
+
* @param delimiter
|
|
137
|
+
* @returns
|
|
138
|
+
*/
|
|
139
|
+
export var createCellDataArrayFromCSVString = function (csv, locale) { return __awaiter(void 0, void 0, void 0, function () {
|
|
140
|
+
var rows, rowValues, sheetCell, i, cells, rowValue, j, text;
|
|
141
|
+
var _a;
|
|
142
|
+
return __generator(this, function (_b) {
|
|
143
|
+
switch (_b.label) {
|
|
144
|
+
case 0: return [4 /*yield*/, parseCSV(csv)];
|
|
145
|
+
case 1:
|
|
146
|
+
rows = (_a = (_b.sent())) !== null && _a !== void 0 ? _a : [];
|
|
147
|
+
rowValues = [];
|
|
148
|
+
sheetCell = new SheetCell();
|
|
149
|
+
sheetCell.setLocale(locale);
|
|
150
|
+
for (i = 0; i < rows.length; i++) {
|
|
151
|
+
cells = [];
|
|
152
|
+
rowValue = rows[i];
|
|
153
|
+
if (isNil(rowValue)) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
for (j = 0; j < rows[i].length; j++) {
|
|
157
|
+
text = rows[i][j];
|
|
158
|
+
sheetCell.setUserEnteredValue(text);
|
|
159
|
+
cells.push(sheetCell.getCellData());
|
|
160
|
+
}
|
|
161
|
+
rowValues.push(cells);
|
|
162
|
+
}
|
|
163
|
+
return [2 /*return*/, rowValues];
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}); };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CellData, CellFormat } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
export type SharedStringState = {
|
|
3
|
+
/** Content-hash id → value. Insertion order tracks emission order. */
|
|
4
|
+
byId: Map<string, string>;
|
|
5
|
+
/** Entries added since the last chunk drain. */
|
|
6
|
+
pending: Array<[string, string]>;
|
|
7
|
+
};
|
|
8
|
+
export declare const createSharedStringState: () => SharedStringState;
|
|
9
|
+
export declare const drainSharedStringPending: (sharedStrings: SharedStringState) => Array<[string, string]> | undefined;
|
|
10
|
+
export declare const buildCellData: (rawValue: string | number | boolean, locale: string | undefined, preserveFormatting: boolean, enableSharedStrings: boolean, sharedStrings: SharedStringState) => CellData | {
|
|
11
|
+
ss: string;
|
|
12
|
+
} | null;
|
|
13
|
+
export declare const applyCellXfsRegistry: (cellData: CellData, cellXfs: Map<string, CellFormat>) => CellData;
|
|
14
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../csv-parser/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEX,MAAM,2BAA2B,CAAC;AAKnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sEAAsE;IACtE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,gDAAgD;IAChD,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,iBAGzC,CAAC;AAEH,eAAO,MAAM,wBAAwB,GACnC,eAAe,iBAAiB,KAC/B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAK5B,CAAC;AAgFF,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,GAAG,MAAM,GAAG,OAAO,EACnC,QAAQ,MAAM,GAAG,SAAS,EAC1B,oBAAoB,OAAO,EAC3B,qBAAqB,OAAO,EAC5B,eAAe,iBAAiB,KAC/B,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IA2E9B,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,QAAQ,EAClB,SAAS,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,aAiBjC,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { __assign, __read } from "tslib";
|
|
2
|
+
import { contentHash, getCellXfsKey, ssfFormat } from "@rowsncolumns/utils";
|
|
3
|
+
import { detectValueTypeAndPattern } from "../excel-parser/plugins/xlsx/value-type-detection";
|
|
4
|
+
export var createSharedStringState = function () { return ({
|
|
5
|
+
byId: new Map(),
|
|
6
|
+
pending: [],
|
|
7
|
+
}); };
|
|
8
|
+
export var drainSharedStringPending = function (sharedStrings) {
|
|
9
|
+
if (sharedStrings.pending.length === 0)
|
|
10
|
+
return undefined;
|
|
11
|
+
var drained = sharedStrings.pending;
|
|
12
|
+
sharedStrings.pending = [];
|
|
13
|
+
return drained;
|
|
14
|
+
};
|
|
15
|
+
var URL_PATTERN = /^(https?:\/\/)?(localhost|([\da-z\.-]+)\.([a-z\.]{2,6}))(:\d+)?(\/[\/\w \.-]*)*(\?[^\s]*)?$/i;
|
|
16
|
+
var EMAIL_PATTERN = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
17
|
+
var isValidURLorEmail = function (str) {
|
|
18
|
+
if (!str || typeof str !== "string")
|
|
19
|
+
return false;
|
|
20
|
+
if (str.includes("@"))
|
|
21
|
+
return EMAIL_PATTERN.test(str);
|
|
22
|
+
if (str.includes("://")) {
|
|
23
|
+
try {
|
|
24
|
+
new URL(str);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch (_a) {
|
|
28
|
+
return URL_PATTERN.test(str);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return URL_PATTERN.test(str) || EMAIL_PATTERN.test(str);
|
|
32
|
+
};
|
|
33
|
+
var hasExcelTextPrefix = function (value) {
|
|
34
|
+
return typeof value === "string" && value.startsWith("'") && value.length > 1;
|
|
35
|
+
};
|
|
36
|
+
var getSharedStringIndex = function (value, sharedStrings) {
|
|
37
|
+
var id = contentHash(value);
|
|
38
|
+
// Hash collisions with a *different* value are astronomically rare with
|
|
39
|
+
// 62^8 ids, but disambiguate deterministically if it ever happens so two
|
|
40
|
+
// distinct strings never share an id within one parse.
|
|
41
|
+
var suffix = 0;
|
|
42
|
+
while (true) {
|
|
43
|
+
var existing = sharedStrings.byId.get(id);
|
|
44
|
+
if (existing === value)
|
|
45
|
+
return id;
|
|
46
|
+
if (existing === undefined)
|
|
47
|
+
break;
|
|
48
|
+
suffix += 1;
|
|
49
|
+
id = contentHash("".concat(value, "\0").concat(suffix));
|
|
50
|
+
}
|
|
51
|
+
sharedStrings.byId.set(id, value);
|
|
52
|
+
sharedStrings.pending.push([id, value]);
|
|
53
|
+
return id;
|
|
54
|
+
};
|
|
55
|
+
var buildExtendedValue = function (valueType, value, numberValue) {
|
|
56
|
+
switch (valueType) {
|
|
57
|
+
case "boolValue":
|
|
58
|
+
return { bv: String(value).toUpperCase() === "TRUE" };
|
|
59
|
+
case "numberValue":
|
|
60
|
+
return { nv: numberValue !== null && numberValue !== void 0 ? numberValue : Number(value) };
|
|
61
|
+
case "formulaValue":
|
|
62
|
+
return { fv: String(value) };
|
|
63
|
+
case "stringValue":
|
|
64
|
+
return { sv: String(value) };
|
|
65
|
+
default:
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var buildFormattedValue = function (valueType, value, pattern, numberValue) {
|
|
70
|
+
if (valueType === "numberValue") {
|
|
71
|
+
return ssfFormat(pattern !== null && pattern !== void 0 ? pattern : "GENERAL", numberValue !== null && numberValue !== void 0 ? numberValue : Number(value));
|
|
72
|
+
}
|
|
73
|
+
if (valueType === "boolValue") {
|
|
74
|
+
return String(value).toUpperCase();
|
|
75
|
+
}
|
|
76
|
+
return String(value);
|
|
77
|
+
};
|
|
78
|
+
export var buildCellData = function (rawValue, locale, preserveFormatting, enableSharedStrings, sharedStrings) {
|
|
79
|
+
var _a;
|
|
80
|
+
var normalizedValue = rawValue;
|
|
81
|
+
var forcedString = false;
|
|
82
|
+
if (hasExcelTextPrefix(normalizedValue)) {
|
|
83
|
+
normalizedValue = normalizedValue.slice(1);
|
|
84
|
+
forcedString = true;
|
|
85
|
+
}
|
|
86
|
+
var _b = __read(detectValueTypeAndPattern(normalizedValue, locale), 4), detectedType = _b[0], numberFormatType = _b[1], numberValue = _b[2], pattern = _b[3];
|
|
87
|
+
var finalType = forcedString ? "stringValue" : detectedType;
|
|
88
|
+
var extendedValue = buildExtendedValue(finalType, normalizedValue, numberValue);
|
|
89
|
+
if (!extendedValue) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
var isStringValue = finalType === "stringValue";
|
|
93
|
+
var isFormulaValue = finalType === "formulaValue";
|
|
94
|
+
var stringValue = String(normalizedValue);
|
|
95
|
+
var urlLike = isStringValue && !forcedString && isValidURLorEmail(stringValue);
|
|
96
|
+
if (enableSharedStrings && isStringValue && !forcedString && !urlLike) {
|
|
97
|
+
var id = getSharedStringIndex(stringValue, sharedStrings);
|
|
98
|
+
return { ss: id };
|
|
99
|
+
}
|
|
100
|
+
var formattedValue = preserveFormatting
|
|
101
|
+
? buildFormattedValue(finalType, normalizedValue, pattern, numberValue)
|
|
102
|
+
: String(normalizedValue);
|
|
103
|
+
if (isFormulaValue) {
|
|
104
|
+
return {
|
|
105
|
+
ue: extendedValue,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
var cellData = {
|
|
109
|
+
ue: extendedValue,
|
|
110
|
+
ev: extendedValue,
|
|
111
|
+
fv: formattedValue,
|
|
112
|
+
};
|
|
113
|
+
if (forcedString) {
|
|
114
|
+
cellData.ue = { sv: String(rawValue) };
|
|
115
|
+
cellData.ev = { sv: String(normalizedValue) };
|
|
116
|
+
}
|
|
117
|
+
// Imported formats are persisted on `uf` (the renderer derives auto
|
|
118
|
+
// alignment / underline at read time from the value + uf, so we only
|
|
119
|
+
// need to record explicit number formats here).
|
|
120
|
+
if (urlLike) {
|
|
121
|
+
cellData.hyperlink = stringValue;
|
|
122
|
+
}
|
|
123
|
+
if (numberFormatType) {
|
|
124
|
+
cellData.uf = __assign(__assign({}, ((_a = cellData.uf) !== null && _a !== void 0 ? _a : {})), { numberFormat: __assign({ type: numberFormatType }, (pattern ? { pattern: pattern } : {})) });
|
|
125
|
+
}
|
|
126
|
+
return cellData;
|
|
127
|
+
};
|
|
128
|
+
var isStyleReference = function (value) {
|
|
129
|
+
return !!value && typeof value === "object" && "sid" in value;
|
|
130
|
+
};
|
|
131
|
+
export var applyCellXfsRegistry = function (cellData, cellXfs) {
|
|
132
|
+
var nextCellData = cellData;
|
|
133
|
+
var uf = cellData.uf;
|
|
134
|
+
// Only `uf` is registered now — `ef` is no longer persisted. Legacy
|
|
135
|
+
// saved data may still carry an `ef` reference; the renderer falls back
|
|
136
|
+
// to it via getCellEffectiveFormat for backwards compatibility.
|
|
137
|
+
if (uf && !isStyleReference(uf)) {
|
|
138
|
+
var ufKey = getCellXfsKey(uf);
|
|
139
|
+
if (!cellXfs.has(ufKey)) {
|
|
140
|
+
cellXfs.set(ufKey, uf);
|
|
141
|
+
}
|
|
142
|
+
nextCellData = __assign(__assign({}, nextCellData), { uf: { sid: ufKey } });
|
|
143
|
+
}
|
|
144
|
+
return nextCellData;
|
|
145
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { RowData, CellXfs } from "@rowsncolumns/common-types";
|
|
3
|
+
export declare enum CsvRequestType {
|
|
4
|
+
PARSE_CSV = "PARSE_CSV",
|
|
5
|
+
ACK_ROW_DATA = "ACK_ROW_DATA"
|
|
6
|
+
}
|
|
7
|
+
export declare enum CsvResponseType {
|
|
8
|
+
PARSE_CSV_SUCCESS = "PARSE_CSV_SUCCESS",
|
|
9
|
+
ROW_DATA_CHUNK = "ROW_DATA_CHUNK",
|
|
10
|
+
CELL_XFS = "CELL_XFS",
|
|
11
|
+
GET_SHARED_STRINGS_SUCCESS = "GET_SHARED_STRINGS_SUCCESS",
|
|
12
|
+
PARSE_CSV_COMPLETE = "PARSE_CSV_COMPLETE",
|
|
13
|
+
ERROR = "ERROR"
|
|
14
|
+
}
|
|
15
|
+
export type CsvWorkerRequest = {
|
|
16
|
+
requestType: CsvRequestType.PARSE_CSV;
|
|
17
|
+
file: File | ArrayBuffer;
|
|
18
|
+
pageSize: number;
|
|
19
|
+
startRowIndex: number;
|
|
20
|
+
startColumnIndex: number;
|
|
21
|
+
preserveFormatting?: boolean;
|
|
22
|
+
locale?: string;
|
|
23
|
+
enableSharedStrings?: boolean;
|
|
24
|
+
enableCellXfsRegistry?: boolean;
|
|
25
|
+
enableBackpressure?: boolean;
|
|
26
|
+
} | {
|
|
27
|
+
requestType: CsvRequestType.ACK_ROW_DATA;
|
|
28
|
+
chunkIndex: number;
|
|
29
|
+
};
|
|
30
|
+
export type CsvWorkerResponse = {
|
|
31
|
+
responseType: CsvResponseType.PARSE_CSV_SUCCESS;
|
|
32
|
+
totalRows: number;
|
|
33
|
+
totalColumns: number;
|
|
34
|
+
} | {
|
|
35
|
+
responseType: CsvResponseType.ROW_DATA_CHUNK;
|
|
36
|
+
chunkIndex: number;
|
|
37
|
+
rows: RowData<CellData | null>[];
|
|
38
|
+
rowIndices: number[];
|
|
39
|
+
totalRows: number;
|
|
40
|
+
totalColumns: number;
|
|
41
|
+
/**
|
|
42
|
+
* New shape: [id, value][] where id is a content-hash string and cell.ss
|
|
43
|
+
* already references it. Legacy shape (string[] + sharedStringsStartIndex)
|
|
44
|
+
* is still accepted by the host for older worker builds.
|
|
45
|
+
*/
|
|
46
|
+
sharedStringsChunk?: Array<[string, string]> | string[];
|
|
47
|
+
/** @deprecated Present only with legacy `string[]` chunk shape. */
|
|
48
|
+
sharedStringsStartIndex?: number;
|
|
49
|
+
cellXfsChunk?: Array<[string, any]>;
|
|
50
|
+
} | {
|
|
51
|
+
responseType: CsvResponseType.CELL_XFS;
|
|
52
|
+
cellXfs: CellXfs;
|
|
53
|
+
} | {
|
|
54
|
+
responseType: CsvResponseType.GET_SHARED_STRINGS_SUCCESS;
|
|
55
|
+
/**
|
|
56
|
+
* New shape: [id, value][]. Legacy `string[]` is still accepted by the
|
|
57
|
+
* host so older worker builds keep working.
|
|
58
|
+
*/
|
|
59
|
+
sharedStrings: Array<[string, string]> | string[];
|
|
60
|
+
} | {
|
|
61
|
+
responseType: CsvResponseType.PARSE_CSV_COMPLETE;
|
|
62
|
+
} | {
|
|
63
|
+
responseType: CsvResponseType.ERROR;
|
|
64
|
+
error?: string;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../csv-parser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAEnE,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,YAAY,iBAAiB;CAC9B;AAED,oBAAY,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,QAAQ,aAAa;IACrB,0BAA0B,+BAA+B;IACzD,kBAAkB,uBAAuB;IACzC,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC;IACtC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GACD;IACE,WAAW,EAAE,cAAc,CAAC,YAAY,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,iBAAiB,GACzB;IACE,YAAY,EAAE,eAAe,CAAC,iBAAiB,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IACE,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;IACxD,mEAAmE;IACnE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CACrC,GACD;IACE,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB,GACD;IACE,YAAY,EAAE,eAAe,CAAC,0BAA0B,CAAC;IACzD;;;OAGG;IACH,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;CACnD,GACD;IACE,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAAC;CAClD,GACD;IACE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export var CsvRequestType;
|
|
2
|
+
(function (CsvRequestType) {
|
|
3
|
+
CsvRequestType["PARSE_CSV"] = "PARSE_CSV";
|
|
4
|
+
CsvRequestType["ACK_ROW_DATA"] = "ACK_ROW_DATA";
|
|
5
|
+
})(CsvRequestType || (CsvRequestType = {}));
|
|
6
|
+
export var CsvResponseType;
|
|
7
|
+
(function (CsvResponseType) {
|
|
8
|
+
CsvResponseType["PARSE_CSV_SUCCESS"] = "PARSE_CSV_SUCCESS";
|
|
9
|
+
CsvResponseType["ROW_DATA_CHUNK"] = "ROW_DATA_CHUNK";
|
|
10
|
+
CsvResponseType["CELL_XFS"] = "CELL_XFS";
|
|
11
|
+
CsvResponseType["GET_SHARED_STRINGS_SUCCESS"] = "GET_SHARED_STRINGS_SUCCESS";
|
|
12
|
+
CsvResponseType["PARSE_CSV_COMPLETE"] = "PARSE_CSV_COMPLETE";
|
|
13
|
+
CsvResponseType["ERROR"] = "ERROR";
|
|
14
|
+
})(CsvResponseType || (CsvResponseType = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../csv-parser/worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { __awaiter, __generator, __values } from "tslib";
|
|
2
|
+
import * as XLSX from "xlsx";
|
|
3
|
+
import { readExcelFile } from "../excel-parser/helpers";
|
|
4
|
+
import { delay } from "../excel-parser/utils";
|
|
5
|
+
import { applyCellXfsRegistry, buildCellData, createSharedStringState, drainSharedStringPending, } from "./helpers";
|
|
6
|
+
import { CsvRequestType, CsvResponseType } from "./types";
|
|
7
|
+
var queuedAcks = [];
|
|
8
|
+
var pendingAck = null;
|
|
9
|
+
var resolveRowAck = function (chunkIndex) {
|
|
10
|
+
if (pendingAck && pendingAck.chunkIndex === chunkIndex) {
|
|
11
|
+
var resolve = pendingAck.resolve;
|
|
12
|
+
pendingAck = null;
|
|
13
|
+
resolve();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
queuedAcks.push(chunkIndex);
|
|
17
|
+
};
|
|
18
|
+
var waitForRowAck = function (chunkIndex) { return __awaiter(void 0, void 0, void 0, function () {
|
|
19
|
+
var queuedIndex;
|
|
20
|
+
return __generator(this, function (_a) {
|
|
21
|
+
switch (_a.label) {
|
|
22
|
+
case 0:
|
|
23
|
+
queuedIndex = queuedAcks.findIndex(function (ack) { return ack === chunkIndex; });
|
|
24
|
+
if (queuedIndex >= 0) {
|
|
25
|
+
queuedAcks.splice(queuedIndex, 1);
|
|
26
|
+
return [2 /*return*/];
|
|
27
|
+
}
|
|
28
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
29
|
+
pendingAck = { chunkIndex: chunkIndex, resolve: resolve };
|
|
30
|
+
})];
|
|
31
|
+
case 1:
|
|
32
|
+
_a.sent();
|
|
33
|
+
return [2 /*return*/];
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}); };
|
|
37
|
+
self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
38
|
+
var requestType, buffer, workbook, worksheet, rows, totalRows, totalColumns, rows_1, rows_1_1, row, pageSize, startRowIndex, startColumnIndex, preserveFormatting, enableSharedStrings, enableCellXfsRegistry, enableBackpressure, locale, sharedStrings, cellXfs, lastCellXfsSize, chunkIndex, offset, rowData, rowIndices, chunk, i, rowIndex, rowValue, rowEntry, j, columnIndex, cellValue, cellData, nextCellData, sharedStringsChunk, cellXfsChunk, error_1;
|
|
39
|
+
var e_1, _a;
|
|
40
|
+
var _b, _c, _d, _e, _f;
|
|
41
|
+
return __generator(this, function (_g) {
|
|
42
|
+
switch (_g.label) {
|
|
43
|
+
case 0:
|
|
44
|
+
requestType = e.data.requestType;
|
|
45
|
+
_g.label = 1;
|
|
46
|
+
case 1:
|
|
47
|
+
_g.trys.push([1, 9, , 10]);
|
|
48
|
+
if (requestType === CsvRequestType.ACK_ROW_DATA) {
|
|
49
|
+
resolveRowAck(e.data.chunkIndex);
|
|
50
|
+
return [2 /*return*/];
|
|
51
|
+
}
|
|
52
|
+
if (requestType !== CsvRequestType.PARSE_CSV) {
|
|
53
|
+
throw new Error("Unknown action: ".concat(requestType));
|
|
54
|
+
}
|
|
55
|
+
return [4 /*yield*/, readExcelFile(e.data.file)];
|
|
56
|
+
case 2:
|
|
57
|
+
buffer = _g.sent();
|
|
58
|
+
workbook = XLSX.read(buffer, {
|
|
59
|
+
type: "array",
|
|
60
|
+
raw: true,
|
|
61
|
+
codepage: 65001,
|
|
62
|
+
// Dense mode stores cells in a 2-D array instead of one object keyed by
|
|
63
|
+
// A1 address. Non-dense mode crashes on large CSVs once the cell count
|
|
64
|
+
// exceeds V8's per-object enumerable-property cap (2^23 = 8,388,608):
|
|
65
|
+
// `RangeError: Too many properties to enumerate`.
|
|
66
|
+
dense: true,
|
|
67
|
+
});
|
|
68
|
+
worksheet = workbook.Sheets[workbook.SheetNames[0]];
|
|
69
|
+
rows = XLSX.utils.sheet_to_json(worksheet, {
|
|
70
|
+
header: 1,
|
|
71
|
+
});
|
|
72
|
+
totalRows = rows.length;
|
|
73
|
+
totalColumns = 0;
|
|
74
|
+
try {
|
|
75
|
+
for (rows_1 = __values(rows), rows_1_1 = rows_1.next(); !rows_1_1.done; rows_1_1 = rows_1.next()) {
|
|
76
|
+
row = rows_1_1.value;
|
|
77
|
+
totalColumns = Math.max(totalColumns, (_b = row === null || row === void 0 ? void 0 : row.length) !== null && _b !== void 0 ? _b : 0);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
81
|
+
finally {
|
|
82
|
+
try {
|
|
83
|
+
if (rows_1_1 && !rows_1_1.done && (_a = rows_1.return)) _a.call(rows_1);
|
|
84
|
+
}
|
|
85
|
+
finally { if (e_1) throw e_1.error; }
|
|
86
|
+
}
|
|
87
|
+
self.postMessage({
|
|
88
|
+
responseType: CsvResponseType.PARSE_CSV_SUCCESS,
|
|
89
|
+
totalRows: totalRows,
|
|
90
|
+
totalColumns: totalColumns,
|
|
91
|
+
});
|
|
92
|
+
pageSize = Math.max(1, e.data.pageSize);
|
|
93
|
+
startRowIndex = e.data.startRowIndex;
|
|
94
|
+
startColumnIndex = e.data.startColumnIndex;
|
|
95
|
+
preserveFormatting = (_c = e.data.preserveFormatting) !== null && _c !== void 0 ? _c : true;
|
|
96
|
+
enableSharedStrings = (_d = e.data.enableSharedStrings) !== null && _d !== void 0 ? _d : false;
|
|
97
|
+
enableCellXfsRegistry = (_e = e.data.enableCellXfsRegistry) !== null && _e !== void 0 ? _e : false;
|
|
98
|
+
enableBackpressure = (_f = e.data.enableBackpressure) !== null && _f !== void 0 ? _f : false;
|
|
99
|
+
locale = e.data.locale;
|
|
100
|
+
sharedStrings = createSharedStringState();
|
|
101
|
+
cellXfs = new Map();
|
|
102
|
+
lastCellXfsSize = 0;
|
|
103
|
+
chunkIndex = 0;
|
|
104
|
+
offset = 0;
|
|
105
|
+
_g.label = 3;
|
|
106
|
+
case 3:
|
|
107
|
+
if (!(offset < rows.length)) return [3 /*break*/, 8];
|
|
108
|
+
rowData = [];
|
|
109
|
+
rowIndices = [];
|
|
110
|
+
chunk = rows.slice(offset, offset + pageSize);
|
|
111
|
+
for (i = 0; i < chunk.length; i++) {
|
|
112
|
+
rowIndex = startRowIndex + offset + i;
|
|
113
|
+
rowValue = chunk[i];
|
|
114
|
+
rowEntry = { values: [] };
|
|
115
|
+
if (rowValue) {
|
|
116
|
+
for (j = 0; j < rowValue.length; j++) {
|
|
117
|
+
columnIndex = startColumnIndex + j;
|
|
118
|
+
cellValue = rowValue[j];
|
|
119
|
+
if (cellValue === undefined ||
|
|
120
|
+
cellValue === null ||
|
|
121
|
+
cellValue === "") {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
cellData = buildCellData(cellValue, locale, preserveFormatting, enableSharedStrings, sharedStrings);
|
|
125
|
+
if (!cellData) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
nextCellData = cellData;
|
|
129
|
+
if (enableCellXfsRegistry &&
|
|
130
|
+
nextCellData &&
|
|
131
|
+
(nextCellData.ef || nextCellData.uf)) {
|
|
132
|
+
nextCellData = applyCellXfsRegistry(nextCellData, cellXfs);
|
|
133
|
+
}
|
|
134
|
+
rowEntry.values[columnIndex] = nextCellData;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
rowData.push(rowEntry);
|
|
138
|
+
rowIndices.push(rowIndex);
|
|
139
|
+
}
|
|
140
|
+
sharedStringsChunk = enableSharedStrings
|
|
141
|
+
? drainSharedStringPending(sharedStrings)
|
|
142
|
+
: undefined;
|
|
143
|
+
cellXfsChunk = void 0;
|
|
144
|
+
if (enableCellXfsRegistry && cellXfs.size > lastCellXfsSize) {
|
|
145
|
+
cellXfsChunk = Array.from(cellXfs.entries()).slice(lastCellXfsSize);
|
|
146
|
+
lastCellXfsSize = cellXfs.size;
|
|
147
|
+
}
|
|
148
|
+
self.postMessage({
|
|
149
|
+
responseType: CsvResponseType.ROW_DATA_CHUNK,
|
|
150
|
+
chunkIndex: chunkIndex,
|
|
151
|
+
rows: rowData,
|
|
152
|
+
rowIndices: rowIndices,
|
|
153
|
+
totalRows: totalRows,
|
|
154
|
+
totalColumns: totalColumns,
|
|
155
|
+
sharedStringsChunk: sharedStringsChunk,
|
|
156
|
+
cellXfsChunk: cellXfsChunk,
|
|
157
|
+
});
|
|
158
|
+
if (!enableBackpressure) return [3 /*break*/, 5];
|
|
159
|
+
return [4 /*yield*/, waitForRowAck(chunkIndex)];
|
|
160
|
+
case 4:
|
|
161
|
+
_g.sent();
|
|
162
|
+
_g.label = 5;
|
|
163
|
+
case 5:
|
|
164
|
+
chunkIndex += 1;
|
|
165
|
+
return [4 /*yield*/, delay()];
|
|
166
|
+
case 6:
|
|
167
|
+
_g.sent();
|
|
168
|
+
_g.label = 7;
|
|
169
|
+
case 7:
|
|
170
|
+
offset += pageSize;
|
|
171
|
+
return [3 /*break*/, 3];
|
|
172
|
+
case 8:
|
|
173
|
+
if (enableSharedStrings) {
|
|
174
|
+
self.postMessage({
|
|
175
|
+
responseType: CsvResponseType.GET_SHARED_STRINGS_SUCCESS,
|
|
176
|
+
sharedStrings: Array.from(sharedStrings.byId),
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
if (enableCellXfsRegistry && cellXfs.size) {
|
|
180
|
+
self.postMessage({
|
|
181
|
+
responseType: CsvResponseType.CELL_XFS,
|
|
182
|
+
cellXfs: cellXfs,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
self.postMessage({
|
|
186
|
+
responseType: CsvResponseType.PARSE_CSV_COMPLETE,
|
|
187
|
+
});
|
|
188
|
+
return [3 /*break*/, 10];
|
|
189
|
+
case 9:
|
|
190
|
+
error_1 = _g.sent();
|
|
191
|
+
console.trace(error_1);
|
|
192
|
+
self.postMessage({
|
|
193
|
+
responseType: CsvResponseType.ERROR,
|
|
194
|
+
error: error_1 instanceof Error ? error_1.message : String(error_1),
|
|
195
|
+
});
|
|
196
|
+
return [3 /*break*/, 10];
|
|
197
|
+
case 10: return [2 /*return*/];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}); };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CellData, type Sheet } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { ExportExcelProps } from "./exporter/xlsx/xlsx-export";
|
|
3
|
+
import { Citation } from "@rowsncolumns/common-types";
|
|
4
|
+
/**
|
|
5
|
+
* Download excel file
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const exportToExcel: <S extends Sheet, T extends CellData, C extends Citation>({ filename, ...rest }: ExportExcelProps<S, T, C> & {
|
|
9
|
+
filename: string;
|
|
10
|
+
}) => Promise<string | Blob | undefined>;
|
|
11
|
+
//# sourceMappingURL=excel-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-export.d.ts","sourceRoot":"","sources":["../../excel-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,CAAC,SAAS,KAAK,EACf,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,QAAQ,EAClB,uBAGC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,uCAMlD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { __awaiter, __generator, __rest } from "tslib";
|
|
2
|
+
import { createExcelFile as createXlsxExport } from "./exporter/xlsx/xlsx-export";
|
|
3
|
+
import { createDownloadableFile, toArrayBuffer } from "./helpers";
|
|
4
|
+
/**
|
|
5
|
+
* Download excel file
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export var exportToExcel = function (_a) { return __awaiter(void 0, void 0, void 0, function () {
|
|
9
|
+
var buffer, blob;
|
|
10
|
+
var filename = _a.filename, rest = __rest(_a, ["filename"]);
|
|
11
|
+
return __generator(this, function (_b) {
|
|
12
|
+
switch (_b.label) {
|
|
13
|
+
case 0: return [4 /*yield*/, createXlsxExport(rest)];
|
|
14
|
+
case 1:
|
|
15
|
+
buffer = _b.sent();
|
|
16
|
+
blob = new Blob([toArrayBuffer(buffer)], {
|
|
17
|
+
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
18
|
+
});
|
|
19
|
+
return [2 /*return*/, createDownloadableFile("".concat(filename, ".xlsx"), blob)];
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}); };
|