@node-projects/excelforge 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 (48) hide show
  1. package/README.md +566 -0
  2. package/dist/core/SharedStrings.d.ts +11 -0
  3. package/dist/core/SharedStrings.js +67 -0
  4. package/dist/core/SharedStrings.js.map +1 -0
  5. package/dist/core/Workbook.d.ts +42 -0
  6. package/dist/core/Workbook.js +459 -0
  7. package/dist/core/Workbook.js.map +1 -0
  8. package/dist/core/WorkbookReader.d.ts +43 -0
  9. package/dist/core/WorkbookReader.js +563 -0
  10. package/dist/core/WorkbookReader.js.map +1 -0
  11. package/dist/core/Worksheet.d.ts +78 -0
  12. package/dist/core/Worksheet.js +568 -0
  13. package/dist/core/Worksheet.js.map +1 -0
  14. package/dist/core/properties.d.ts +91 -0
  15. package/dist/core/properties.js +265 -0
  16. package/dist/core/properties.js.map +1 -0
  17. package/dist/core/types.d.ts +388 -0
  18. package/dist/core/types.js +2 -0
  19. package/dist/core/types.js.map +1 -0
  20. package/dist/features/ChartBuilder.d.ts +2 -0
  21. package/dist/features/ChartBuilder.js +165 -0
  22. package/dist/features/ChartBuilder.js.map +1 -0
  23. package/dist/features/TableBuilder.d.ts +2 -0
  24. package/dist/features/TableBuilder.js +36 -0
  25. package/dist/features/TableBuilder.js.map +1 -0
  26. package/dist/index-min.js +259 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.js +7 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/styles/StyleRegistry.d.ts +19 -0
  31. package/dist/styles/StyleRegistry.js +215 -0
  32. package/dist/styles/StyleRegistry.js.map +1 -0
  33. package/dist/styles/builders.d.ts +91 -0
  34. package/dist/styles/builders.js +136 -0
  35. package/dist/styles/builders.js.map +1 -0
  36. package/dist/utils/helpers.d.ts +26 -0
  37. package/dist/utils/helpers.js +85 -0
  38. package/dist/utils/helpers.js.map +1 -0
  39. package/dist/utils/xmlParser.d.ts +17 -0
  40. package/dist/utils/xmlParser.js +179 -0
  41. package/dist/utils/xmlParser.js.map +1 -0
  42. package/dist/utils/zip.d.ts +11 -0
  43. package/dist/utils/zip.js +571 -0
  44. package/dist/utils/zip.js.map +1 -0
  45. package/dist/utils/zipReader.d.ts +6 -0
  46. package/dist/utils/zipReader.js +84 -0
  47. package/dist/utils/zipReader.js.map +1 -0
  48. package/package.json +28 -0
@@ -0,0 +1,84 @@
1
+ function readUint16LE(buf, o) {
2
+ return buf[o] | (buf[o + 1] << 8);
3
+ }
4
+ function readUint32LE(buf, o) {
5
+ return (buf[o] | (buf[o + 1] << 8) | (buf[o + 2] << 16) | (buf[o + 3] << 24)) >>> 0;
6
+ }
7
+ async function inflateAsync(data) {
8
+ const ds = new DecompressionStream('deflate-raw');
9
+ const writer = ds.writable.getWriter();
10
+ const reader = ds.readable.getReader();
11
+ writer.write(data);
12
+ writer.close();
13
+ const chunks = [];
14
+ let done = false;
15
+ while (!done) {
16
+ const { value, done: d } = await reader.read();
17
+ if (value)
18
+ chunks.push(value);
19
+ done = d;
20
+ }
21
+ const total = chunks.reduce((s, c) => s + c.length, 0);
22
+ const out = new Uint8Array(total);
23
+ let pos = 0;
24
+ for (const c of chunks) {
25
+ out.set(c, pos);
26
+ pos += c.length;
27
+ }
28
+ return out;
29
+ }
30
+ export async function readZip(data) {
31
+ const dec = new TextDecoder('utf-8');
32
+ const entries = new Map();
33
+ let eocdPos = -1;
34
+ for (let i = data.length - 22; i >= 0; i--) {
35
+ if (data[i] === 0x50 && data[i + 1] === 0x4B && data[i + 2] === 0x05 && data[i + 3] === 0x06) {
36
+ eocdPos = i;
37
+ break;
38
+ }
39
+ }
40
+ if (eocdPos < 0)
41
+ throw new Error('Not a valid ZIP file (EOCD not found)');
42
+ const cdOffset = readUint32LE(data, eocdPos + 16);
43
+ const cdCount = readUint16LE(data, eocdPos + 8);
44
+ let pos = cdOffset;
45
+ for (let i = 0; i < cdCount; i++) {
46
+ if (readUint32LE(data, pos) !== 0x02014B50)
47
+ throw new Error('Invalid central directory entry');
48
+ const method = readUint16LE(data, pos + 10);
49
+ const compSize = readUint32LE(data, pos + 20);
50
+ const uncompSize = readUint32LE(data, pos + 24);
51
+ const nameLen = readUint16LE(data, pos + 28);
52
+ const extraLen = readUint16LE(data, pos + 30);
53
+ const commentLen = readUint16LE(data, pos + 32);
54
+ const localOffset = readUint32LE(data, pos + 42);
55
+ const nameBytes = data.subarray(pos + 46, pos + 46 + nameLen);
56
+ const name = dec.decode(nameBytes);
57
+ pos += 46 + nameLen + extraLen + commentLen;
58
+ const lhBase = localOffset;
59
+ if (readUint32LE(data, lhBase) !== 0x04034B50)
60
+ throw new Error('Invalid local file header');
61
+ const lhNameLen = readUint16LE(data, lhBase + 26);
62
+ const lhExtraLen = readUint16LE(data, lhBase + 28);
63
+ const dataStart = lhBase + 30 + lhNameLen + lhExtraLen;
64
+ const compData = data.subarray(dataStart, dataStart + compSize);
65
+ let fileData;
66
+ if (method === 0) {
67
+ fileData = compData.slice();
68
+ }
69
+ else if (method === 8) {
70
+ fileData = await inflateAsync(compData);
71
+ }
72
+ else {
73
+ fileData = compData.slice();
74
+ }
75
+ if (!name.endsWith('/')) {
76
+ entries.set(name, { name, data: fileData });
77
+ }
78
+ }
79
+ return entries;
80
+ }
81
+ export function entryText(entry) {
82
+ return new TextDecoder('utf-8').decode(entry.data);
83
+ }
84
+ //# sourceMappingURL=zipReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zipReader.js","sourceRoot":"","sources":["../../src/utils/zipReader.ts"],"names":[],"mappings":"AAUA,SAAS,YAAY,CAAC,GAAe,EAAE,CAAS;IAC9C,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,YAAY,CAAC,GAAe,EAAE,CAAS;IAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAgB;IAC1C,MAAM,EAAE,GAAG,IAAK,mBAA2B,CAAC,aAAa,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;IAAC,CAAC;IAC7D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAgB;IAC5C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAGhD,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7F,OAAO,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAEhD,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/F,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,GAAG,IAAI,EAAE,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;QAG5C,MAAM,MAAM,GAAG,WAAW,CAAC;QAC3B,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS,GAAG,UAAU,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;QAEhE,IAAI,QAAoB,CAAC;QACzB,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAEjB,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAExB,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YAEN,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAGD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAGD,MAAM,UAAU,SAAS,CAAC,KAAmB;IAC3C,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@node-projects/excelforge",
3
+ "version": "2.0.0",
4
+ "description": "A **complete TypeScript library** for reading and writing Excel `.xlsx` files with **zero external dependencies**. Works in browsers, Node.js, Deno, Bun, and edge runtimes.",
5
+ "homepage": "https://github.com/node-projects/excelForge#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/node-projects/excelForge/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/node-projects/excelForge.git"
12
+ },
13
+ "license": "MIT",
14
+ "author": "",
15
+ "type": "module",
16
+ "main": "index.js",
17
+ "scripts": {
18
+ "test": "node ./dist/test/examples.js",
19
+ "build": "tsc",
20
+ "prepublishOnly": "npm run build && npm run bundle",
21
+ "bundle": "esbuild ./dist/index.js --format=esm --minify --external:fs/promises --external:zlib --platform=neutral --bundle --outfile=./dist/index-min.js"
22
+ },
23
+ "devDependencies": {
24
+ "esbuild": "^0.25.10",
25
+ "typescript": "^5.9.3",
26
+ "zlib": "^1.0.5"
27
+ }
28
+ }