@justybase/spreadsheet-tasks 1.3.3 → 2.0.0

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +25 -16
  3. package/browser/browser-spreadsheet.js +3037 -0
  4. package/browser/justybase-spreadsheet.min.js +36 -0
  5. package/dist/cjs/index.d.ts +399 -0
  6. package/dist/cjs/index.js +3944 -0
  7. package/dist/cjs/index.js.map +1 -0
  8. package/dist/esm/index.js +3889 -0
  9. package/dist/esm/index.js.map +1 -0
  10. package/dist/esm/package.json +1 -0
  11. package/docs/API.md +8 -9
  12. package/docs/PACKAGING.md +32 -0
  13. package/docs/PUBLISHING.md +8 -1
  14. package/examples/basic-read.ts +1 -1
  15. package/examples/formats-verify.ts +1 -2
  16. package/examples/large-dataset.ts +1 -1
  17. package/package.json +28 -13
  18. package/dist/BiffReaderWriter.d.ts +0 -44
  19. package/dist/BiffReaderWriter.d.ts.map +0 -1
  20. package/dist/BiffReaderWriter.js +0 -282
  21. package/dist/BiffReaderWriter.js.map +0 -1
  22. package/dist/BigBuffer.d.ts +0 -24
  23. package/dist/BigBuffer.d.ts.map +0 -1
  24. package/dist/BigBuffer.js +0 -120
  25. package/dist/BigBuffer.js.map +0 -1
  26. package/dist/ExcelReaderAbstract.d.ts +0 -17
  27. package/dist/ExcelReaderAbstract.d.ts.map +0 -1
  28. package/dist/ExcelReaderAbstract.js +0 -25
  29. package/dist/ExcelReaderAbstract.js.map +0 -1
  30. package/dist/Formats.d.ts +0 -34
  31. package/dist/Formats.d.ts.map +0 -1
  32. package/dist/Formats.js +0 -48
  33. package/dist/Formats.js.map +0 -1
  34. package/dist/ReaderFactory.d.ts +0 -6
  35. package/dist/ReaderFactory.d.ts.map +0 -1
  36. package/dist/ReaderFactory.js +0 -56
  37. package/dist/ReaderFactory.js.map +0 -1
  38. package/dist/XlsbReader.d.ts +0 -24
  39. package/dist/XlsbReader.d.ts.map +0 -1
  40. package/dist/XlsbReader.js +0 -186
  41. package/dist/XlsbReader.js.map +0 -1
  42. package/dist/XlsbWriter.d.ts +0 -80
  43. package/dist/XlsbWriter.d.ts.map +0 -1
  44. package/dist/XlsbWriter.js +0 -964
  45. package/dist/XlsbWriter.js.map +0 -1
  46. package/dist/XlsxReader.d.ts +0 -30
  47. package/dist/XlsxReader.d.ts.map +0 -1
  48. package/dist/XlsxReader.js +0 -341
  49. package/dist/XlsxReader.js.map +0 -1
  50. package/dist/XlsxWriter.d.ts +0 -51
  51. package/dist/XlsxWriter.d.ts.map +0 -1
  52. package/dist/XlsxWriter.js +0 -632
  53. package/dist/XlsxWriter.js.map +0 -1
  54. package/dist/index.d.ts +0 -10
  55. package/dist/index.d.ts.map +0 -1
  56. package/dist/index.js +0 -29
  57. package/dist/index.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,38 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.0.0] - 2026-07-25
9
+
10
+ ### Breaking
11
+
12
+ - `XlsbReader.read()` is now `async` and returns `Promise<boolean>` (same as `XlsxReader`).
13
+ Update loops from `while (reader.read())` to `while (await reader.read())`.
14
+ - Package entry points moved under `dist/cjs` and `dist/esm` with an `exports` map.
15
+ Most consumers of `@justybase/spreadsheet-tasks` need no import path changes.
16
+
17
+ ### Added
18
+
19
+ - `CellValue` / `PrimitiveCellValue` types for writer and reader cell APIs
20
+ - Shared writer helpers: `sanitizeSheetName`, column-width helpers, `StreamingSheetState`
21
+ - Dual package build (CJS + ESM) via `tsup`
22
+ - Browser sources under `src/browser/` with `npm run build:browser`
23
+ - `docs/PACKAGING.md` (ZIP library rationale + dual package notes)
24
+ - Dist surface smoke test (`npm run test:dist`)
25
+
26
+ ### Changed
27
+
28
+ - `XlsbWriter` / `XlsxWriter` share sanitization, autofit, and streaming state helpers
29
+ - Tests import from `src/` (published surface still verified via `test:dist`)
30
+ - ZIP type definitions use `@types/*` only (hand-written ambient modules removed)
31
+
32
+ ### Browser
33
+
34
+ - Source of truth is TypeScript in `src/browser/`; `browser/*.js` writer sources are generated bundles
35
+
36
+ ## [1.3.2] - previous
37
+
38
+ See git history for 1.x changes.
package/README.md CHANGED
@@ -24,37 +24,44 @@ A high-performance TypeScript library for reading and writing Excel files in XLS
24
24
  | Read (50K rows) | 118 ms | 276 ms | **2.3x faster** |
25
25
  | File Size | 1.49 MB | 2.83 MB | **47% smaller** |
26
26
 
27
- ## 📦 Installation
27
+ ## Installation
28
28
 
29
29
  ```bash
30
30
  npm install @justybase/spreadsheet-tasks
31
31
  ```
32
32
 
33
- ## 🌐 Browser Support & CDN (Zero Dependencies)
33
+ CJS and ESM are both supported:
34
34
 
35
- This library includes browser-compatible modules to generate XLSB and XLSX files directly on the client side without relying on Node.js APIs or external dependencies.
35
+ ```js
36
+ const { XlsbWriter } = require('@justybase/spreadsheet-tasks');
37
+ import { XlsbWriter } from '@justybase/spreadsheet-tasks';
38
+ ```
36
39
 
37
- To bundle the browser version into a single minified file (e.g. for deployment to a CDN), run the following command in the project root:
40
+ ## Browser Support & CDN (Zero Dependencies)
41
+
42
+ Browser writers live in TypeScript under `src/browser/` and are bundled with:
38
43
 
39
44
  ```bash
40
- npx esbuild browser/browser-spreadsheet.js --bundle --minify --format=esm --outfile=browser/justybase-spreadsheet.min.js
45
+ npm run build:browser
41
46
  ```
42
47
 
43
- You can then import this single file via a script tag in any web application:
48
+ This produces:
49
+
50
+ - `browser/justybase-spreadsheet.min.js` — IIFE (`JustybaseSpreadsheet` global)
51
+ - `browser/browser-spreadsheet.js` — ESM for local demos (`demo.html`, `test.html`)
44
52
 
45
53
  ```html
46
54
  <script type="module">
47
- import { downloadXlsb, downloadXlsx } from 'https://your-cdn.com/justybase-spreadsheet.min.js';
48
-
49
- const headers = ["ID", "Name", "Score"];
55
+ import { downloadXlsb, downloadXlsx, F } from './browser-spreadsheet.js';
56
+
57
+ const headers = ['ID', 'Name', 'Score'];
50
58
  const rows = [
51
- [1, "Alice", 99.5],
52
- [2, "Bob", 88.0]
59
+ [1, 'Alice', 99.5],
60
+ [2, 'Bob', 88.0],
53
61
  ];
54
-
55
- // Generates the file and triggers the browser download automatically
62
+
56
63
  document.getElementById('downloadBtn').addEventListener('click', () => {
57
- downloadXlsb('report.xlsb', rows, headers, { headerStyle: 'bold+fill' });
64
+ downloadXlsb('report.xlsb', rows, headers);
58
65
  });
59
66
  </script>
60
67
  ```
@@ -66,7 +73,9 @@ You can then import this single file via a script tag in any web application:
66
73
  - Frozen and styled headers (styles: `bold`, `fill`, `bold+fill`)
67
74
  - Auto-filters enabled by default
68
75
 
69
- ## 🔧 Quick Start
76
+ See [CHANGELOG.md](./CHANGELOG.md) for v2 breaking changes (`await reader.read()`).
77
+
78
+ ## Quick Start
70
79
 
71
80
  ### Writing Excel Files
72
81
 
@@ -148,7 +157,7 @@ await reader.open('data.xlsb');
148
157
 
149
158
  console.log('Sheet names:', reader.getSheetNames());
150
159
 
151
- while (reader.read()) {
160
+ while (await reader.read()) {
152
161
  const row = [];
153
162
  for (let i = 0; i < reader.fieldCount; i++) {
154
163
  row.push(reader.getValue(i));