@eredzik/calaminejs 0.1.1 → 0.1.2
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/dist/node/calamine_js.d.ts +17 -0
- package/dist/node/calamine_js.js +71 -0
- package/dist/node/calamine_js_bg.wasm +0 -0
- package/dist/node/calamine_js_bg.wasm.d.ts +6 -1
- package/dist/web/calamine_js.d.ts +23 -1
- package/dist/web/calamine_js.js +69 -0
- package/dist/web/calamine_js_bg.wasm +0 -0
- package/dist/web/calamine_js_bg.wasm.d.ts +6 -1
- package/package.json +8 -6
|
@@ -17,6 +17,13 @@ export class CellValue {
|
|
|
17
17
|
readonly is_float: boolean;
|
|
18
18
|
readonly is_string: boolean;
|
|
19
19
|
}
|
|
20
|
+
export class HeaderInfo {
|
|
21
|
+
private constructor();
|
|
22
|
+
free(): void;
|
|
23
|
+
[Symbol.dispose](): void;
|
|
24
|
+
readonly column_names: string[];
|
|
25
|
+
readonly row_index: number;
|
|
26
|
+
}
|
|
20
27
|
export class Sheet {
|
|
21
28
|
private constructor();
|
|
22
29
|
free(): void;
|
|
@@ -26,6 +33,16 @@ export class Sheet {
|
|
|
26
33
|
* Returns the Parquet file as bytes
|
|
27
34
|
*/
|
|
28
35
|
to_parquet(): Uint8Array;
|
|
36
|
+
/**
|
|
37
|
+
* Infer which row is the table header
|
|
38
|
+
* Returns HeaderInfo with the row index and column names, or None if no header is found
|
|
39
|
+
*
|
|
40
|
+
* This function uses heuristics to detect the header row:
|
|
41
|
+
* - Headers typically contain string values in most columns
|
|
42
|
+
* - Headers are followed by rows with data
|
|
43
|
+
* - Headers have multiple non-empty cells
|
|
44
|
+
*/
|
|
45
|
+
infer_header_row(): HeaderInfo | undefined;
|
|
29
46
|
/**
|
|
30
47
|
* Convert sheet to Parquet format with custom column names
|
|
31
48
|
* column_names: array of column names (must match col_count)
|
package/dist/node/calamine_js.js
CHANGED
|
@@ -111,6 +111,17 @@ function getArrayU8FromWasm0(ptr, len) {
|
|
|
111
111
|
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
function getArrayJsValueFromWasm0(ptr, len) {
|
|
115
|
+
ptr = ptr >>> 0;
|
|
116
|
+
const mem = getDataViewMemory0();
|
|
117
|
+
const result = [];
|
|
118
|
+
for (let i = ptr; i < ptr + 4 * len; i += 4) {
|
|
119
|
+
result.push(wasm.__wbindgen_externrefs.get(mem.getUint32(i, true)));
|
|
120
|
+
}
|
|
121
|
+
wasm.__externref_drop_slice(ptr, len);
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
|
|
114
125
|
function takeFromExternrefTable0(idx) {
|
|
115
126
|
const value = wasm.__wbindgen_externrefs.get(idx);
|
|
116
127
|
wasm.__externref_table_dealloc(idx);
|
|
@@ -253,6 +264,52 @@ if (Symbol.dispose) CellValue.prototype[Symbol.dispose] = CellValue.prototype.fr
|
|
|
253
264
|
|
|
254
265
|
exports.CellValue = CellValue;
|
|
255
266
|
|
|
267
|
+
const HeaderInfoFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
268
|
+
? { register: () => {}, unregister: () => {} }
|
|
269
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_headerinfo_free(ptr >>> 0, 1));
|
|
270
|
+
|
|
271
|
+
class HeaderInfo {
|
|
272
|
+
|
|
273
|
+
static __wrap(ptr) {
|
|
274
|
+
ptr = ptr >>> 0;
|
|
275
|
+
const obj = Object.create(HeaderInfo.prototype);
|
|
276
|
+
obj.__wbg_ptr = ptr;
|
|
277
|
+
HeaderInfoFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
278
|
+
return obj;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
__destroy_into_raw() {
|
|
282
|
+
const ptr = this.__wbg_ptr;
|
|
283
|
+
this.__wbg_ptr = 0;
|
|
284
|
+
HeaderInfoFinalization.unregister(this);
|
|
285
|
+
return ptr;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
free() {
|
|
289
|
+
const ptr = this.__destroy_into_raw();
|
|
290
|
+
wasm.__wbg_headerinfo_free(ptr, 0);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* @returns {string[]}
|
|
294
|
+
*/
|
|
295
|
+
get column_names() {
|
|
296
|
+
const ret = wasm.headerinfo_column_names(this.__wbg_ptr);
|
|
297
|
+
var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
|
298
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
299
|
+
return v1;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* @returns {number}
|
|
303
|
+
*/
|
|
304
|
+
get row_index() {
|
|
305
|
+
const ret = wasm.headerinfo_row_index(this.__wbg_ptr);
|
|
306
|
+
return ret >>> 0;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (Symbol.dispose) HeaderInfo.prototype[Symbol.dispose] = HeaderInfo.prototype.free;
|
|
310
|
+
|
|
311
|
+
exports.HeaderInfo = HeaderInfo;
|
|
312
|
+
|
|
256
313
|
const SheetFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
257
314
|
? { register: () => {}, unregister: () => {} }
|
|
258
315
|
: new FinalizationRegistry(ptr => wasm.__wbg_sheet_free(ptr >>> 0, 1));
|
|
@@ -292,6 +349,20 @@ class Sheet {
|
|
|
292
349
|
wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
|
|
293
350
|
return v1;
|
|
294
351
|
}
|
|
352
|
+
/**
|
|
353
|
+
* Infer which row is the table header
|
|
354
|
+
* Returns HeaderInfo with the row index and column names, or None if no header is found
|
|
355
|
+
*
|
|
356
|
+
* This function uses heuristics to detect the header row:
|
|
357
|
+
* - Headers typically contain string values in most columns
|
|
358
|
+
* - Headers are followed by rows with data
|
|
359
|
+
* - Headers have multiple non-empty cells
|
|
360
|
+
* @returns {HeaderInfo | undefined}
|
|
361
|
+
*/
|
|
362
|
+
infer_header_row() {
|
|
363
|
+
const ret = wasm.sheet_infer_header_row(this.__wbg_ptr);
|
|
364
|
+
return ret === 0 ? undefined : HeaderInfo.__wrap(ret);
|
|
365
|
+
}
|
|
295
366
|
/**
|
|
296
367
|
* Convert sheet to Parquet format with custom column names
|
|
297
368
|
* column_names: array of column names (must match col_count)
|
|
Binary file
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
export const memory: WebAssembly.Memory;
|
|
4
4
|
export const __wbg_cellvalue_free: (a: number, b: number) => void;
|
|
5
|
+
export const __wbg_headerinfo_free: (a: number, b: number) => void;
|
|
5
6
|
export const __wbg_sheet_free: (a: number, b: number) => void;
|
|
6
7
|
export const __wbg_workbook_free: (a: number, b: number) => void;
|
|
7
8
|
export const cellvalue_is_bool: (a: number) => number;
|
|
@@ -16,8 +17,11 @@ export const cellvalue_to_bool_value: (a: number) => number;
|
|
|
16
17
|
export const cellvalue_to_float_value: (a: number) => [number, number];
|
|
17
18
|
export const cellvalue_to_int_value: (a: number) => [number, bigint];
|
|
18
19
|
export const cellvalue_to_string_value: (a: number) => [number, number];
|
|
20
|
+
export const headerinfo_column_names: (a: number) => [number, number];
|
|
21
|
+
export const headerinfo_row_index: (a: number) => number;
|
|
19
22
|
export const sheet_col_count: (a: number) => number;
|
|
20
23
|
export const sheet_get_cell: (a: number, b: number, c: number) => number;
|
|
24
|
+
export const sheet_infer_header_row: (a: number) => number;
|
|
21
25
|
export const sheet_name: (a: number) => [number, number];
|
|
22
26
|
export const sheet_row_count: (a: number) => number;
|
|
23
27
|
export const sheet_rows: (a: number) => any;
|
|
@@ -49,6 +53,7 @@ export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) =>
|
|
|
49
53
|
export const __wbindgen_exn_store: (a: number) => void;
|
|
50
54
|
export const __externref_table_alloc: () => number;
|
|
51
55
|
export const __wbindgen_externrefs: WebAssembly.Table;
|
|
52
|
-
export const
|
|
56
|
+
export const __externref_drop_slice: (a: number, b: number) => void;
|
|
53
57
|
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
58
|
+
export const __externref_table_dealloc: (a: number) => void;
|
|
54
59
|
export const __wbindgen_start: () => void;
|
|
@@ -17,6 +17,13 @@ export class CellValue {
|
|
|
17
17
|
readonly is_float: boolean;
|
|
18
18
|
readonly is_string: boolean;
|
|
19
19
|
}
|
|
20
|
+
export class HeaderInfo {
|
|
21
|
+
private constructor();
|
|
22
|
+
free(): void;
|
|
23
|
+
[Symbol.dispose](): void;
|
|
24
|
+
readonly column_names: string[];
|
|
25
|
+
readonly row_index: number;
|
|
26
|
+
}
|
|
20
27
|
export class Sheet {
|
|
21
28
|
private constructor();
|
|
22
29
|
free(): void;
|
|
@@ -26,6 +33,16 @@ export class Sheet {
|
|
|
26
33
|
* Returns the Parquet file as bytes
|
|
27
34
|
*/
|
|
28
35
|
to_parquet(): Uint8Array;
|
|
36
|
+
/**
|
|
37
|
+
* Infer which row is the table header
|
|
38
|
+
* Returns HeaderInfo with the row index and column names, or None if no header is found
|
|
39
|
+
*
|
|
40
|
+
* This function uses heuristics to detect the header row:
|
|
41
|
+
* - Headers typically contain string values in most columns
|
|
42
|
+
* - Headers are followed by rows with data
|
|
43
|
+
* - Headers have multiple non-empty cells
|
|
44
|
+
*/
|
|
45
|
+
infer_header_row(): HeaderInfo | undefined;
|
|
29
46
|
/**
|
|
30
47
|
* Convert sheet to Parquet format with custom column names
|
|
31
48
|
* column_names: array of column names (must match col_count)
|
|
@@ -54,6 +71,7 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
|
|
|
54
71
|
export interface InitOutput {
|
|
55
72
|
readonly memory: WebAssembly.Memory;
|
|
56
73
|
readonly __wbg_cellvalue_free: (a: number, b: number) => void;
|
|
74
|
+
readonly __wbg_headerinfo_free: (a: number, b: number) => void;
|
|
57
75
|
readonly __wbg_sheet_free: (a: number, b: number) => void;
|
|
58
76
|
readonly __wbg_workbook_free: (a: number, b: number) => void;
|
|
59
77
|
readonly cellvalue_is_bool: (a: number) => number;
|
|
@@ -68,8 +86,11 @@ export interface InitOutput {
|
|
|
68
86
|
readonly cellvalue_to_float_value: (a: number) => [number, number];
|
|
69
87
|
readonly cellvalue_to_int_value: (a: number) => [number, bigint];
|
|
70
88
|
readonly cellvalue_to_string_value: (a: number) => [number, number];
|
|
89
|
+
readonly headerinfo_column_names: (a: number) => [number, number];
|
|
90
|
+
readonly headerinfo_row_index: (a: number) => number;
|
|
71
91
|
readonly sheet_col_count: (a: number) => number;
|
|
72
92
|
readonly sheet_get_cell: (a: number, b: number, c: number) => number;
|
|
93
|
+
readonly sheet_infer_header_row: (a: number) => number;
|
|
73
94
|
readonly sheet_name: (a: number) => [number, number];
|
|
74
95
|
readonly sheet_row_count: (a: number) => number;
|
|
75
96
|
readonly sheet_rows: (a: number) => any;
|
|
@@ -101,8 +122,9 @@ export interface InitOutput {
|
|
|
101
122
|
readonly __wbindgen_exn_store: (a: number) => void;
|
|
102
123
|
readonly __externref_table_alloc: () => number;
|
|
103
124
|
readonly __wbindgen_externrefs: WebAssembly.Table;
|
|
104
|
-
readonly
|
|
125
|
+
readonly __externref_drop_slice: (a: number, b: number) => void;
|
|
105
126
|
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
127
|
+
readonly __externref_table_dealloc: (a: number) => void;
|
|
106
128
|
readonly __wbindgen_start: () => void;
|
|
107
129
|
}
|
|
108
130
|
|
package/dist/web/calamine_js.js
CHANGED
|
@@ -117,6 +117,17 @@ function getArrayU8FromWasm0(ptr, len) {
|
|
|
117
117
|
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
function getArrayJsValueFromWasm0(ptr, len) {
|
|
121
|
+
ptr = ptr >>> 0;
|
|
122
|
+
const mem = getDataViewMemory0();
|
|
123
|
+
const result = [];
|
|
124
|
+
for (let i = ptr; i < ptr + 4 * len; i += 4) {
|
|
125
|
+
result.push(wasm.__wbindgen_externrefs.get(mem.getUint32(i, true)));
|
|
126
|
+
}
|
|
127
|
+
wasm.__externref_drop_slice(ptr, len);
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
|
|
120
131
|
function takeFromExternrefTable0(idx) {
|
|
121
132
|
const value = wasm.__wbindgen_externrefs.get(idx);
|
|
122
133
|
wasm.__externref_table_dealloc(idx);
|
|
@@ -257,6 +268,50 @@ export class CellValue {
|
|
|
257
268
|
}
|
|
258
269
|
if (Symbol.dispose) CellValue.prototype[Symbol.dispose] = CellValue.prototype.free;
|
|
259
270
|
|
|
271
|
+
const HeaderInfoFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
272
|
+
? { register: () => {}, unregister: () => {} }
|
|
273
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_headerinfo_free(ptr >>> 0, 1));
|
|
274
|
+
|
|
275
|
+
export class HeaderInfo {
|
|
276
|
+
|
|
277
|
+
static __wrap(ptr) {
|
|
278
|
+
ptr = ptr >>> 0;
|
|
279
|
+
const obj = Object.create(HeaderInfo.prototype);
|
|
280
|
+
obj.__wbg_ptr = ptr;
|
|
281
|
+
HeaderInfoFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
282
|
+
return obj;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
__destroy_into_raw() {
|
|
286
|
+
const ptr = this.__wbg_ptr;
|
|
287
|
+
this.__wbg_ptr = 0;
|
|
288
|
+
HeaderInfoFinalization.unregister(this);
|
|
289
|
+
return ptr;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
free() {
|
|
293
|
+
const ptr = this.__destroy_into_raw();
|
|
294
|
+
wasm.__wbg_headerinfo_free(ptr, 0);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* @returns {string[]}
|
|
298
|
+
*/
|
|
299
|
+
get column_names() {
|
|
300
|
+
const ret = wasm.headerinfo_column_names(this.__wbg_ptr);
|
|
301
|
+
var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
|
302
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
303
|
+
return v1;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* @returns {number}
|
|
307
|
+
*/
|
|
308
|
+
get row_index() {
|
|
309
|
+
const ret = wasm.headerinfo_row_index(this.__wbg_ptr);
|
|
310
|
+
return ret >>> 0;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (Symbol.dispose) HeaderInfo.prototype[Symbol.dispose] = HeaderInfo.prototype.free;
|
|
314
|
+
|
|
260
315
|
const SheetFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
261
316
|
? { register: () => {}, unregister: () => {} }
|
|
262
317
|
: new FinalizationRegistry(ptr => wasm.__wbg_sheet_free(ptr >>> 0, 1));
|
|
@@ -296,6 +351,20 @@ export class Sheet {
|
|
|
296
351
|
wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
|
|
297
352
|
return v1;
|
|
298
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Infer which row is the table header
|
|
356
|
+
* Returns HeaderInfo with the row index and column names, or None if no header is found
|
|
357
|
+
*
|
|
358
|
+
* This function uses heuristics to detect the header row:
|
|
359
|
+
* - Headers typically contain string values in most columns
|
|
360
|
+
* - Headers are followed by rows with data
|
|
361
|
+
* - Headers have multiple non-empty cells
|
|
362
|
+
* @returns {HeaderInfo | undefined}
|
|
363
|
+
*/
|
|
364
|
+
infer_header_row() {
|
|
365
|
+
const ret = wasm.sheet_infer_header_row(this.__wbg_ptr);
|
|
366
|
+
return ret === 0 ? undefined : HeaderInfo.__wrap(ret);
|
|
367
|
+
}
|
|
299
368
|
/**
|
|
300
369
|
* Convert sheet to Parquet format with custom column names
|
|
301
370
|
* column_names: array of column names (must match col_count)
|
|
Binary file
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
export const memory: WebAssembly.Memory;
|
|
4
4
|
export const __wbg_cellvalue_free: (a: number, b: number) => void;
|
|
5
|
+
export const __wbg_headerinfo_free: (a: number, b: number) => void;
|
|
5
6
|
export const __wbg_sheet_free: (a: number, b: number) => void;
|
|
6
7
|
export const __wbg_workbook_free: (a: number, b: number) => void;
|
|
7
8
|
export const cellvalue_is_bool: (a: number) => number;
|
|
@@ -16,8 +17,11 @@ export const cellvalue_to_bool_value: (a: number) => number;
|
|
|
16
17
|
export const cellvalue_to_float_value: (a: number) => [number, number];
|
|
17
18
|
export const cellvalue_to_int_value: (a: number) => [number, bigint];
|
|
18
19
|
export const cellvalue_to_string_value: (a: number) => [number, number];
|
|
20
|
+
export const headerinfo_column_names: (a: number) => [number, number];
|
|
21
|
+
export const headerinfo_row_index: (a: number) => number;
|
|
19
22
|
export const sheet_col_count: (a: number) => number;
|
|
20
23
|
export const sheet_get_cell: (a: number, b: number, c: number) => number;
|
|
24
|
+
export const sheet_infer_header_row: (a: number) => number;
|
|
21
25
|
export const sheet_name: (a: number) => [number, number];
|
|
22
26
|
export const sheet_row_count: (a: number) => number;
|
|
23
27
|
export const sheet_rows: (a: number) => any;
|
|
@@ -49,6 +53,7 @@ export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) =>
|
|
|
49
53
|
export const __wbindgen_exn_store: (a: number) => void;
|
|
50
54
|
export const __externref_table_alloc: () => number;
|
|
51
55
|
export const __wbindgen_externrefs: WebAssembly.Table;
|
|
52
|
-
export const
|
|
56
|
+
export const __externref_drop_slice: (a: number, b: number) => void;
|
|
53
57
|
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
58
|
+
export const __externref_table_dealloc: (a: number) => void;
|
|
54
59
|
export const __wbindgen_start: () => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eredzik/calaminejs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
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",
|
|
@@ -35,18 +35,20 @@
|
|
|
35
35
|
"LICENSE"
|
|
36
36
|
],
|
|
37
37
|
"scripts": {
|
|
38
|
-
"build": "npm
|
|
38
|
+
"build": "npm-run-all --parallel build:node build:web && npm run postbuild",
|
|
39
39
|
"build:node": "wasm-pack build --target nodejs --out-dir dist/node --release",
|
|
40
40
|
"build:web": "wasm-pack build --target web --out-dir dist/web --release",
|
|
41
|
-
"build:dev": "npm
|
|
41
|
+
"build:dev": "npm-run-all --parallel build:node:dev build:web:dev && npm run postbuild",
|
|
42
42
|
"build:node:dev": "wasm-pack build --target nodejs --out-dir dist/node --dev",
|
|
43
43
|
"build:web:dev": "wasm-pack build --target web --out-dir dist/web --dev",
|
|
44
|
-
"build:size": "npm
|
|
44
|
+
"build:size": "npm-run-all --parallel build:node:size build:web:size && npm run postbuild",
|
|
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"
|
|
49
|
-
|
|
48
|
+
"clean": "rm -rf dist target"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"npm-run-all": "^4.1.5"
|
|
50
52
|
},
|
|
51
53
|
"keywords": [
|
|
52
54
|
"excel",
|