@eredzik/calaminejs 0.1.3 → 0.2.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.
@@ -31,8 +31,14 @@ export class Sheet {
31
31
  /**
32
32
  * Convert sheet to Parquet format
33
33
  * Returns the Parquet file as bytes
34
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
34
35
  */
35
- to_parquet(): Uint8Array;
36
+ to_parquet(unmerge_cells: boolean): Uint8Array;
37
+ /**
38
+ * Get the merged regions in this sheet
39
+ * Returns an array of arrays, where each inner array is [start_row, start_col, end_row, end_col]
40
+ */
41
+ merged_regions(): Array<any>;
36
42
  /**
37
43
  * Infer which row is the table header
38
44
  * Returns HeaderInfo with the row index and column names, or None if no header is found
@@ -46,8 +52,9 @@ export class Sheet {
46
52
  /**
47
53
  * Convert sheet to Parquet format with custom column names
48
54
  * column_names: array of column names (must match col_count)
55
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
49
56
  */
50
- to_parquet_with_names(column_names: string[]): Uint8Array;
57
+ to_parquet_with_names(column_names: string[], unmerge_cells: boolean): Uint8Array;
51
58
  get_cell(row: number, col: number): CellValue | undefined;
52
59
  col_count(): number;
53
60
  row_count(): number;
@@ -338,10 +338,12 @@ class Sheet {
338
338
  /**
339
339
  * Convert sheet to Parquet format
340
340
  * Returns the Parquet file as bytes
341
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
342
+ * @param {boolean} unmerge_cells
341
343
  * @returns {Uint8Array}
342
344
  */
343
- to_parquet() {
344
- const ret = wasm.sheet_to_parquet(this.__wbg_ptr);
345
+ to_parquet(unmerge_cells) {
346
+ const ret = wasm.sheet_to_parquet(this.__wbg_ptr, unmerge_cells);
345
347
  if (ret[3]) {
346
348
  throw takeFromExternrefTable0(ret[2]);
347
349
  }
@@ -349,6 +351,15 @@ class Sheet {
349
351
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
350
352
  return v1;
351
353
  }
354
+ /**
355
+ * Get the merged regions in this sheet
356
+ * Returns an array of arrays, where each inner array is [start_row, start_col, end_row, end_col]
357
+ * @returns {Array<any>}
358
+ */
359
+ merged_regions() {
360
+ const ret = wasm.sheet_merged_regions(this.__wbg_ptr);
361
+ return ret;
362
+ }
352
363
  /**
353
364
  * Infer which row is the table header
354
365
  * Returns HeaderInfo with the row index and column names, or None if no header is found
@@ -366,13 +377,15 @@ class Sheet {
366
377
  /**
367
378
  * Convert sheet to Parquet format with custom column names
368
379
  * column_names: array of column names (must match col_count)
380
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
369
381
  * @param {string[]} column_names
382
+ * @param {boolean} unmerge_cells
370
383
  * @returns {Uint8Array}
371
384
  */
372
- to_parquet_with_names(column_names) {
385
+ to_parquet_with_names(column_names, unmerge_cells) {
373
386
  const ptr0 = passArrayJsValueToWasm0(column_names, wasm.__wbindgen_malloc);
374
387
  const len0 = WASM_VECTOR_LEN;
375
- const ret = wasm.sheet_to_parquet_with_names(this.__wbg_ptr, ptr0, len0);
388
+ const ret = wasm.sheet_to_parquet_with_names(this.__wbg_ptr, ptr0, len0, unmerge_cells);
376
389
  if (ret[3]) {
377
390
  throw takeFromExternrefTable0(ret[2]);
378
391
  }
Binary file
@@ -22,11 +22,12 @@ export const headerinfo_row_index: (a: number) => number;
22
22
  export const sheet_col_count: (a: number) => number;
23
23
  export const sheet_get_cell: (a: number, b: number, c: number) => number;
24
24
  export const sheet_infer_header_row: (a: number) => number;
25
+ export const sheet_merged_regions: (a: number) => any;
25
26
  export const sheet_name: (a: number) => [number, number];
26
27
  export const sheet_row_count: (a: number) => number;
27
28
  export const sheet_rows: (a: number) => any;
28
- export const sheet_to_parquet: (a: number) => [number, number, number, number];
29
- export const sheet_to_parquet_with_names: (a: number, b: number, c: number) => [number, number, number, number];
29
+ export const sheet_to_parquet: (a: number, b: number) => [number, number, number, number];
30
+ export const sheet_to_parquet_with_names: (a: number, b: number, c: number, d: number) => [number, number, number, number];
30
31
  export const workbook_from_bytes: (a: number, b: number) => [number, number, number];
31
32
  export const workbook_from_bytes_with_progress: (a: number, b: number, c: number, d: number) => [number, number, number];
32
33
  export const workbook_get_sheet: (a: number, b: number, c: number) => number;
@@ -31,8 +31,14 @@ export class Sheet {
31
31
  /**
32
32
  * Convert sheet to Parquet format
33
33
  * Returns the Parquet file as bytes
34
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
34
35
  */
35
- to_parquet(): Uint8Array;
36
+ to_parquet(unmerge_cells: boolean): Uint8Array;
37
+ /**
38
+ * Get the merged regions in this sheet
39
+ * Returns an array of arrays, where each inner array is [start_row, start_col, end_row, end_col]
40
+ */
41
+ merged_regions(): Array<any>;
36
42
  /**
37
43
  * Infer which row is the table header
38
44
  * Returns HeaderInfo with the row index and column names, or None if no header is found
@@ -46,8 +52,9 @@ export class Sheet {
46
52
  /**
47
53
  * Convert sheet to Parquet format with custom column names
48
54
  * column_names: array of column names (must match col_count)
55
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
49
56
  */
50
- to_parquet_with_names(column_names: string[]): Uint8Array;
57
+ to_parquet_with_names(column_names: string[], unmerge_cells: boolean): Uint8Array;
51
58
  get_cell(row: number, col: number): CellValue | undefined;
52
59
  col_count(): number;
53
60
  row_count(): number;
@@ -91,11 +98,12 @@ export interface InitOutput {
91
98
  readonly sheet_col_count: (a: number) => number;
92
99
  readonly sheet_get_cell: (a: number, b: number, c: number) => number;
93
100
  readonly sheet_infer_header_row: (a: number) => number;
101
+ readonly sheet_merged_regions: (a: number) => any;
94
102
  readonly sheet_name: (a: number) => [number, number];
95
103
  readonly sheet_row_count: (a: number) => number;
96
104
  readonly sheet_rows: (a: number) => any;
97
- readonly sheet_to_parquet: (a: number) => [number, number, number, number];
98
- readonly sheet_to_parquet_with_names: (a: number, b: number, c: number) => [number, number, number, number];
105
+ readonly sheet_to_parquet: (a: number, b: number) => [number, number, number, number];
106
+ readonly sheet_to_parquet_with_names: (a: number, b: number, c: number, d: number) => [number, number, number, number];
99
107
  readonly workbook_from_bytes: (a: number, b: number) => [number, number, number];
100
108
  readonly workbook_from_bytes_with_progress: (a: number, b: number, c: number, d: number) => [number, number, number];
101
109
  readonly workbook_get_sheet: (a: number, b: number, c: number) => number;
@@ -340,10 +340,12 @@ export class Sheet {
340
340
  /**
341
341
  * Convert sheet to Parquet format
342
342
  * Returns the Parquet file as bytes
343
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
344
+ * @param {boolean} unmerge_cells
343
345
  * @returns {Uint8Array}
344
346
  */
345
- to_parquet() {
346
- const ret = wasm.sheet_to_parquet(this.__wbg_ptr);
347
+ to_parquet(unmerge_cells) {
348
+ const ret = wasm.sheet_to_parquet(this.__wbg_ptr, unmerge_cells);
347
349
  if (ret[3]) {
348
350
  throw takeFromExternrefTable0(ret[2]);
349
351
  }
@@ -351,6 +353,15 @@ export class Sheet {
351
353
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
352
354
  return v1;
353
355
  }
356
+ /**
357
+ * Get the merged regions in this sheet
358
+ * Returns an array of arrays, where each inner array is [start_row, start_col, end_row, end_col]
359
+ * @returns {Array<any>}
360
+ */
361
+ merged_regions() {
362
+ const ret = wasm.sheet_merged_regions(this.__wbg_ptr);
363
+ return ret;
364
+ }
354
365
  /**
355
366
  * Infer which row is the table header
356
367
  * Returns HeaderInfo with the row index and column names, or None if no header is found
@@ -368,13 +379,15 @@ export class Sheet {
368
379
  /**
369
380
  * Convert sheet to Parquet format with custom column names
370
381
  * column_names: array of column names (must match col_count)
382
+ * unmerge_cells: if true, spread merged cell values to fill empty cells horizontally
371
383
  * @param {string[]} column_names
384
+ * @param {boolean} unmerge_cells
372
385
  * @returns {Uint8Array}
373
386
  */
374
- to_parquet_with_names(column_names) {
387
+ to_parquet_with_names(column_names, unmerge_cells) {
375
388
  const ptr0 = passArrayJsValueToWasm0(column_names, wasm.__wbindgen_malloc);
376
389
  const len0 = WASM_VECTOR_LEN;
377
- const ret = wasm.sheet_to_parquet_with_names(this.__wbg_ptr, ptr0, len0);
390
+ const ret = wasm.sheet_to_parquet_with_names(this.__wbg_ptr, ptr0, len0, unmerge_cells);
378
391
  if (ret[3]) {
379
392
  throw takeFromExternrefTable0(ret[2]);
380
393
  }
Binary file
@@ -22,11 +22,12 @@ export const headerinfo_row_index: (a: number) => number;
22
22
  export const sheet_col_count: (a: number) => number;
23
23
  export const sheet_get_cell: (a: number, b: number, c: number) => number;
24
24
  export const sheet_infer_header_row: (a: number) => number;
25
+ export const sheet_merged_regions: (a: number) => any;
25
26
  export const sheet_name: (a: number) => [number, number];
26
27
  export const sheet_row_count: (a: number) => number;
27
28
  export const sheet_rows: (a: number) => any;
28
- export const sheet_to_parquet: (a: number) => [number, number, number, number];
29
- export const sheet_to_parquet_with_names: (a: number, b: number, c: number) => [number, number, number, number];
29
+ export const sheet_to_parquet: (a: number, b: number) => [number, number, number, number];
30
+ export const sheet_to_parquet_with_names: (a: number, b: number, c: number, d: number) => [number, number, number, number];
30
31
  export const workbook_from_bytes: (a: number, b: number) => [number, number, number];
31
32
  export const workbook_from_bytes_with_progress: (a: number, b: number, c: number, d: number) => [number, number, number];
32
33
  export const workbook_get_sheet: (a: number, b: number, c: number) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eredzik/calaminejs",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "Rust calamine library bindings for JavaScript/TypeScript - Excel file reading and Parquet conversion",
5
5
  "main": "./dist/node/calamine_js.js",
6
6
  "module": "./dist/web/calamine_js.js",
@@ -45,10 +45,14 @@
45
45
  "build:node:size": "wasm-pack build --target nodejs --out-dir dist/node --profile release-size",
46
46
  "build:web:size": "wasm-pack build --target web --out-dir dist/web --profile release-size",
47
47
  "postbuild": "rm -f dist/node/.gitignore dist/web/.gitignore dist/node/package.json dist/web/package.json dist/node/README.md dist/web/README.md dist/node/LICENSE dist/web/LICENSE",
48
- "clean": "rm -rf dist target"
48
+ "clean": "rm -rf dist target",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest"
49
51
  },
50
52
  "devDependencies": {
51
- "npm-run-all": "^4.1.5"
53
+ "npm-run-all": "^4.1.5",
54
+ "vitest": "^2.1.8",
55
+ "@types/node": "^22.10.5"
52
56
  },
53
57
  "keywords": [
54
58
  "excel",