@senlinz/import-export-wasm 0.1.0 → 0.1.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/README.md CHANGED
@@ -83,5 +83,7 @@ The browser example is covered by Playwright tests in [`./tests/wasm.test.js`](.
83
83
  ```bash
84
84
  cargo test --lib
85
85
  wasm-pack build --release --target web
86
- pnpm e2e-test
86
+ corepack pnpm install
87
+ corepack pnpm exec playwright install chromium
88
+ npm run e2e-test
87
89
  ```
package/README.zh.md CHANGED
@@ -83,5 +83,7 @@ const imported = importData(info, workbook);
83
83
  ```bash
84
84
  cargo test --lib
85
85
  wasm-pack build --release --target web
86
- pnpm e2e-test
86
+ corepack pnpm install
87
+ corepack pnpm exec playwright install chromium
88
+ npm run e2e-test
87
89
  ```
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@senlinz/import-export-wasm",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Rust WebAssembly for import/export excel files",
5
5
  "main": "pkg/imexport_wasm.js",
6
6
  "types": "pkg/imexport_wasm.d.ts",
7
+ "devDependencies": {
8
+ "@playwright/test": "1.48.2",
9
+ "serve": "14.2.4"
10
+ },
7
11
  "files": [
8
12
  "pkg/imexport_wasm_bg.wasm",
9
13
  "pkg/imexport_wasm.bg.wasm.d.ts",
@@ -36,6 +40,6 @@
36
40
  "publish-dry-run": "pnpm publish --dry-run --no-git-checks",
37
41
  "cargo-test": "cargo test --lib",
38
42
  "e2e-serve": "wasm-pack build --release --target web -d tests/dist && serve -l 8080 .",
39
- "e2e-test": "playwright test"
43
+ "e2e-test": "playwright test -c playwright.config.js"
40
44
  }
41
45
  }
@@ -1,6 +1,15 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
 
4
+ export class DynamicExcelData {
5
+ free(): void;
6
+ [Symbol.dispose](): void;
7
+ constructor(sheet_name: string, headers: string[], rows: ExcelRowData[]);
8
+ headers: string[];
9
+ rows: ExcelRowData[];
10
+ sheet_name: string;
11
+ }
12
+
4
13
  export class ExcelCellFormat {
5
14
  free(): void;
6
15
  [Symbol.dispose](): void;
@@ -128,6 +137,8 @@ export function exportData(info: ExcelInfo, data: ExcelData): Promise<any>;
128
137
 
129
138
  export function importData(info: ExcelInfo, excel_bytes: Uint8Array): ExcelData;
130
139
 
140
+ export function importDynamicData(sheet_name: string | null | undefined, header_row: number | null | undefined, excel_bytes: Uint8Array): DynamicExcelData;
141
+
131
142
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
132
143
 
133
144
  export interface InitOutput {
@@ -135,6 +146,7 @@ export interface InitOutput {
135
146
  readonly createTemplate: (a: number) => [number, number, number, number];
136
147
  readonly exportData: (a: number, b: number) => any;
137
148
  readonly importData: (a: number, b: number, c: number) => [number, number, number];
149
+ readonly importDynamicData: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
138
150
  readonly __wbg_excelcellformat_free: (a: number, b: number) => void;
139
151
  readonly __wbg_excelcolumninfo_free: (a: number, b: number) => void;
140
152
  readonly __wbg_excelinfo_free: (a: number, b: number) => void;
@@ -246,6 +258,14 @@ export interface InitOutput {
246
258
  readonly excelinfo_withTitle: (a: number, b: number, c: number) => number;
247
259
  readonly excelinfo_withTitleFormat: (a: number, b: number) => number;
248
260
  readonly excelinfo_withTitleHeight: (a: number, b: number) => number;
261
+ readonly __wbg_dynamicexceldata_free: (a: number, b: number) => void;
262
+ readonly __wbg_get_dynamicexceldata_headers: (a: number) => [number, number];
263
+ readonly __wbg_get_dynamicexceldata_rows: (a: number) => [number, number];
264
+ readonly __wbg_get_dynamicexceldata_sheet_name: (a: number) => [number, number];
265
+ readonly __wbg_set_dynamicexceldata_headers: (a: number, b: number, c: number) => void;
266
+ readonly __wbg_set_dynamicexceldata_rows: (a: number, b: number, c: number) => void;
267
+ readonly __wbg_set_dynamicexceldata_sheet_name: (a: number, b: number, c: number) => void;
268
+ readonly dynamicexceldata_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
249
269
  readonly __wbg_excelrowdata_free: (a: number, b: number) => void;
250
270
  readonly __wbg_get_excelrowdata_columns: (a: number) => [number, number];
251
271
  readonly __wbg_set_excelrowdata_columns: (a: number, b: number, c: number) => void;
@@ -265,8 +285,8 @@ export interface InitOutput {
265
285
  readonly __wbg_get_exceldata_rows: (a: number) => [number, number];
266
286
  readonly __wbg_set_exceldata_rows: (a: number, b: number, c: number) => void;
267
287
  readonly exceldata_new: (a: number, b: number) => number;
268
- readonly wasm_bindgen__convert__closures_____invoke__hd2460eea81eed436: (a: number, b: number, c: any) => [number, number];
269
- readonly wasm_bindgen__convert__closures_____invoke__h350125d9fff5f488: (a: number, b: number, c: any, d: any) => void;
288
+ readonly wasm_bindgen__convert__closures_____invoke__ha7d74a6bd6ac009d: (a: number, b: number, c: any) => [number, number];
289
+ readonly wasm_bindgen__convert__closures_____invoke__h1f6390709e7a2f81: (a: number, b: number, c: any, d: any) => void;
270
290
  readonly __wbindgen_malloc: (a: number, b: number) => number;
271
291
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
272
292
  readonly __wbindgen_exn_store: (a: number) => void;
@@ -1,5 +1,100 @@
1
1
  /* @ts-self-types="./imexport_wasm.d.ts" */
2
2
 
3
+ export class DynamicExcelData {
4
+ static __wrap(ptr) {
5
+ ptr = ptr >>> 0;
6
+ const obj = Object.create(DynamicExcelData.prototype);
7
+ obj.__wbg_ptr = ptr;
8
+ DynamicExcelDataFinalization.register(obj, obj.__wbg_ptr, obj);
9
+ return obj;
10
+ }
11
+ __destroy_into_raw() {
12
+ const ptr = this.__wbg_ptr;
13
+ this.__wbg_ptr = 0;
14
+ DynamicExcelDataFinalization.unregister(this);
15
+ return ptr;
16
+ }
17
+ free() {
18
+ const ptr = this.__destroy_into_raw();
19
+ wasm.__wbg_dynamicexceldata_free(ptr, 0);
20
+ }
21
+ /**
22
+ * @param {string} sheet_name
23
+ * @param {string[]} headers
24
+ * @param {ExcelRowData[]} rows
25
+ */
26
+ constructor(sheet_name, headers, rows) {
27
+ const ptr0 = passStringToWasm0(sheet_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
28
+ const len0 = WASM_VECTOR_LEN;
29
+ const ptr1 = passArrayJsValueToWasm0(headers, wasm.__wbindgen_malloc);
30
+ const len1 = WASM_VECTOR_LEN;
31
+ const ptr2 = passArrayJsValueToWasm0(rows, wasm.__wbindgen_malloc);
32
+ const len2 = WASM_VECTOR_LEN;
33
+ const ret = wasm.dynamicexceldata_new(ptr0, len0, ptr1, len1, ptr2, len2);
34
+ this.__wbg_ptr = ret >>> 0;
35
+ DynamicExcelDataFinalization.register(this, this.__wbg_ptr, this);
36
+ return this;
37
+ }
38
+ /**
39
+ * @returns {string[]}
40
+ */
41
+ get headers() {
42
+ const ret = wasm.__wbg_get_dynamicexceldata_headers(this.__wbg_ptr);
43
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
44
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
45
+ return v1;
46
+ }
47
+ /**
48
+ * @returns {ExcelRowData[]}
49
+ */
50
+ get rows() {
51
+ const ret = wasm.__wbg_get_dynamicexceldata_rows(this.__wbg_ptr);
52
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
53
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
54
+ return v1;
55
+ }
56
+ /**
57
+ * @returns {string}
58
+ */
59
+ get sheet_name() {
60
+ let deferred1_0;
61
+ let deferred1_1;
62
+ try {
63
+ const ret = wasm.__wbg_get_dynamicexceldata_sheet_name(this.__wbg_ptr);
64
+ deferred1_0 = ret[0];
65
+ deferred1_1 = ret[1];
66
+ return getStringFromWasm0(ret[0], ret[1]);
67
+ } finally {
68
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
69
+ }
70
+ }
71
+ /**
72
+ * @param {string[]} arg0
73
+ */
74
+ set headers(arg0) {
75
+ const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc);
76
+ const len0 = WASM_VECTOR_LEN;
77
+ wasm.__wbg_set_dynamicexceldata_headers(this.__wbg_ptr, ptr0, len0);
78
+ }
79
+ /**
80
+ * @param {ExcelRowData[]} arg0
81
+ */
82
+ set rows(arg0) {
83
+ const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc);
84
+ const len0 = WASM_VECTOR_LEN;
85
+ wasm.__wbg_set_dynamicexceldata_rows(this.__wbg_ptr, ptr0, len0);
86
+ }
87
+ /**
88
+ * @param {string} arg0
89
+ */
90
+ set sheet_name(arg0) {
91
+ const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
92
+ const len0 = WASM_VECTOR_LEN;
93
+ wasm.__wbg_set_dynamicexceldata_sheet_name(this.__wbg_ptr, ptr0, len0);
94
+ }
95
+ }
96
+ if (Symbol.dispose) DynamicExcelData.prototype[Symbol.dispose] = DynamicExcelData.prototype.free;
97
+
3
98
  export class ExcelCellFormat {
4
99
  static __wrap(ptr) {
5
100
  ptr = ptr >>> 0;
@@ -1420,34 +1515,52 @@ export function importData(info, excel_bytes) {
1420
1515
  return ExcelData.__wrap(ret[0]);
1421
1516
  }
1422
1517
 
1518
+ /**
1519
+ * @param {string | null | undefined} sheet_name
1520
+ * @param {number | null | undefined} header_row
1521
+ * @param {Uint8Array} excel_bytes
1522
+ * @returns {DynamicExcelData}
1523
+ */
1524
+ export function importDynamicData(sheet_name, header_row, excel_bytes) {
1525
+ var ptr0 = isLikeNone(sheet_name) ? 0 : passStringToWasm0(sheet_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1526
+ var len0 = WASM_VECTOR_LEN;
1527
+ const ptr1 = passArray8ToWasm0(excel_bytes, wasm.__wbindgen_malloc);
1528
+ const len1 = WASM_VECTOR_LEN;
1529
+ const ret = wasm.importDynamicData(ptr0, len0, isLikeNone(header_row) ? 0x100000001 : (header_row) >>> 0, ptr1, len1);
1530
+ if (ret[2]) {
1531
+ throw takeFromExternrefTable0(ret[1]);
1532
+ }
1533
+ return DynamicExcelData.__wrap(ret[0]);
1534
+ }
1535
+
1423
1536
  function __wbg_get_imports() {
1424
1537
  const import0 = {
1425
1538
  __proto__: null,
1426
- __wbg_Error_55538483de6e3abe: function(arg0, arg1) {
1539
+ __wbg_Error_7c536b7a8123d334: function(arg0, arg1) {
1427
1540
  const ret = Error(getStringFromWasm0(arg0, arg1));
1428
1541
  return ret;
1429
1542
  },
1430
- __wbg___wbindgen_debug_string_d89627202d0155b7: function(arg0, arg1) {
1543
+ __wbg___wbindgen_debug_string_8baecc377ad92880: function(arg0, arg1) {
1431
1544
  const ret = debugString(arg1);
1432
1545
  const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1433
1546
  const len1 = WASM_VECTOR_LEN;
1434
1547
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1435
1548
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1436
1549
  },
1437
- __wbg___wbindgen_is_function_2a95406423ea8626: function(arg0) {
1550
+ __wbg___wbindgen_is_function_d4c2480b46f29e33: function(arg0) {
1438
1551
  const ret = typeof(arg0) === 'function';
1439
1552
  return ret;
1440
1553
  },
1441
- __wbg___wbindgen_is_object_59a002e76b059312: function(arg0) {
1554
+ __wbg___wbindgen_is_object_e04e3a51a90cde43: function(arg0) {
1442
1555
  const val = arg0;
1443
1556
  const ret = typeof(val) === 'object' && val !== null;
1444
1557
  return ret;
1445
1558
  },
1446
- __wbg___wbindgen_is_undefined_87a3a837f331fef5: function(arg0) {
1559
+ __wbg___wbindgen_is_undefined_5957b329897cc39c: function(arg0) {
1447
1560
  const ret = arg0 === undefined;
1448
1561
  return ret;
1449
1562
  },
1450
- __wbg___wbindgen_string_get_f1161390414f9b59: function(arg0, arg1) {
1563
+ __wbg___wbindgen_string_get_ae6081df8158aa73: function(arg0, arg1) {
1451
1564
  const obj = arg1;
1452
1565
  const ret = typeof(obj) === 'string' ? obj : undefined;
1453
1566
  var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
@@ -1455,13 +1568,13 @@ function __wbg_get_imports() {
1455
1568
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1456
1569
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1457
1570
  },
1458
- __wbg___wbindgen_throw_5549492daedad139: function(arg0, arg1) {
1571
+ __wbg___wbindgen_throw_bd5a70920abf0236: function(arg0, arg1) {
1459
1572
  throw new Error(getStringFromWasm0(arg0, arg1));
1460
1573
  },
1461
- __wbg__wbg_cb_unref_fbe69bb076c16bad: function(arg0) {
1574
+ __wbg__wbg_cb_unref_207c541c2d58dfb3: function(arg0) {
1462
1575
  arg0._wbg_cb_unref();
1463
1576
  },
1464
- __wbg_call_8f5d7bb070283508: function() { return handleError(function (arg0, arg1, arg2) {
1577
+ __wbg_call_1aea13500fe8ff6c: function() { return handleError(function (arg0, arg1, arg2) {
1465
1578
  const ret = arg0.call(arg1, arg2);
1466
1579
  return ret;
1467
1580
  }, arguments); },
@@ -1497,26 +1610,26 @@ function __wbg_get_imports() {
1497
1610
  const ret = ExcelRowData.__unwrap(arg0);
1498
1611
  return ret;
1499
1612
  },
1500
- __wbg_length_e6e1633fbea6cfa9: function(arg0) {
1613
+ __wbg_length_090b6aa6235450ba: function(arg0) {
1501
1614
  const ret = arg0.length;
1502
1615
  return ret;
1503
1616
  },
1504
- __wbg_new_1d96678aaacca32e: function(arg0) {
1617
+ __wbg_new_4774b8d4db1224e4: function(arg0) {
1505
1618
  const ret = new Uint8Array(arg0);
1506
1619
  return ret;
1507
1620
  },
1508
- __wbg_new_from_slice_0bc58e36f82a1b50: function(arg0, arg1) {
1621
+ __wbg_new_from_slice_2733a138cec5cdcf: function(arg0, arg1) {
1509
1622
  const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));
1510
1623
  return ret;
1511
1624
  },
1512
- __wbg_new_typed_25dda2388d7e5e9f: function(arg0, arg1) {
1625
+ __wbg_new_typed_5101eada2c6754de: function(arg0, arg1) {
1513
1626
  try {
1514
1627
  var state0 = {a: arg0, b: arg1};
1515
1628
  var cb0 = (arg0, arg1) => {
1516
1629
  const a = state0.a;
1517
1630
  state0.a = 0;
1518
1631
  try {
1519
- return wasm_bindgen__convert__closures_____invoke__h350125d9fff5f488(a, state0.b, arg0, arg1);
1632
+ return wasm_bindgen__convert__closures_____invoke__h1f6390709e7a2f81(a, state0.b, arg0, arg1);
1520
1633
  } finally {
1521
1634
  state0.a = a;
1522
1635
  }
@@ -1527,51 +1640,51 @@ function __wbg_get_imports() {
1527
1640
  state0.a = 0;
1528
1641
  }
1529
1642
  },
1530
- __wbg_now_46736a527d2e74e7: function() {
1643
+ __wbg_now_cd850b0a28a6e656: function() {
1531
1644
  const ret = Date.now();
1532
1645
  return ret;
1533
1646
  },
1534
- __wbg_prototypesetcall_3875d54d12ef2eec: function(arg0, arg1, arg2) {
1647
+ __wbg_prototypesetcall_7dca54d31cb9d2dc: function(arg0, arg1, arg2) {
1535
1648
  Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);
1536
1649
  },
1537
- __wbg_queueMicrotask_8868365114fe23b5: function(arg0) {
1650
+ __wbg_queueMicrotask_1f50b4bdf2c98605: function(arg0) {
1538
1651
  queueMicrotask(arg0);
1539
1652
  },
1540
- __wbg_queueMicrotask_cfc5a0e62f9ebdbe: function(arg0) {
1653
+ __wbg_queueMicrotask_805204511f79bee8: function(arg0) {
1541
1654
  const ret = arg0.queueMicrotask;
1542
1655
  return ret;
1543
1656
  },
1544
- __wbg_resolve_d8059bc113e215bf: function(arg0) {
1657
+ __wbg_resolve_bb4df27803d377b2: function(arg0) {
1545
1658
  const ret = Promise.resolve(arg0);
1546
1659
  return ret;
1547
1660
  },
1548
- __wbg_static_accessor_GLOBAL_8dfb7f5e26ebe523: function() {
1661
+ __wbg_static_accessor_GLOBAL_44bef9fa6011e260: function() {
1549
1662
  const ret = typeof global === 'undefined' ? null : global;
1550
1663
  return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
1551
1664
  },
1552
- __wbg_static_accessor_GLOBAL_THIS_941154efc8395cdd: function() {
1665
+ __wbg_static_accessor_GLOBAL_THIS_13002645baf43d84: function() {
1553
1666
  const ret = typeof globalThis === 'undefined' ? null : globalThis;
1554
1667
  return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
1555
1668
  },
1556
- __wbg_static_accessor_SELF_58dac9af822f561f: function() {
1669
+ __wbg_static_accessor_SELF_91d0abd4d035416c: function() {
1557
1670
  const ret = typeof self === 'undefined' ? null : self;
1558
1671
  return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
1559
1672
  },
1560
- __wbg_static_accessor_WINDOW_ee64f0b3d8354c0b: function() {
1673
+ __wbg_static_accessor_WINDOW_513f857c65724fc7: function() {
1561
1674
  const ret = typeof window === 'undefined' ? null : window;
1562
1675
  return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
1563
1676
  },
1564
- __wbg_then_0150352e4ad20344: function(arg0, arg1, arg2) {
1565
- const ret = arg0.then(arg1, arg2);
1677
+ __wbg_then_d9ebfadd74ddfbb2: function(arg0, arg1) {
1678
+ const ret = arg0.then(arg1);
1566
1679
  return ret;
1567
1680
  },
1568
- __wbg_then_5160486c67ddb98a: function(arg0, arg1) {
1569
- const ret = arg0.then(arg1);
1681
+ __wbg_then_f6dedb0d880db23a: function(arg0, arg1, arg2) {
1682
+ const ret = arg0.then(arg1, arg2);
1570
1683
  return ret;
1571
1684
  },
1572
1685
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
1573
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 375, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
1574
- const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__hd2460eea81eed436);
1686
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 366, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
1687
+ const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__ha7d74a6bd6ac009d);
1575
1688
  return ret;
1576
1689
  },
1577
1690
  __wbindgen_cast_0000000000000002: function(arg0) {
@@ -1600,17 +1713,20 @@ function __wbg_get_imports() {
1600
1713
  };
1601
1714
  }
1602
1715
 
1603
- function wasm_bindgen__convert__closures_____invoke__hd2460eea81eed436(arg0, arg1, arg2) {
1604
- const ret = wasm.wasm_bindgen__convert__closures_____invoke__hd2460eea81eed436(arg0, arg1, arg2);
1716
+ function wasm_bindgen__convert__closures_____invoke__ha7d74a6bd6ac009d(arg0, arg1, arg2) {
1717
+ const ret = wasm.wasm_bindgen__convert__closures_____invoke__ha7d74a6bd6ac009d(arg0, arg1, arg2);
1605
1718
  if (ret[1]) {
1606
1719
  throw takeFromExternrefTable0(ret[0]);
1607
1720
  }
1608
1721
  }
1609
1722
 
1610
- function wasm_bindgen__convert__closures_____invoke__h350125d9fff5f488(arg0, arg1, arg2, arg3) {
1611
- wasm.wasm_bindgen__convert__closures_____invoke__h350125d9fff5f488(arg0, arg1, arg2, arg3);
1723
+ function wasm_bindgen__convert__closures_____invoke__h1f6390709e7a2f81(arg0, arg1, arg2, arg3) {
1724
+ wasm.wasm_bindgen__convert__closures_____invoke__h1f6390709e7a2f81(arg0, arg1, arg2, arg3);
1612
1725
  }
1613
1726
 
1727
+ const DynamicExcelDataFinalization = (typeof FinalizationRegistry === 'undefined')
1728
+ ? { register: () => {}, unregister: () => {} }
1729
+ : new FinalizationRegistry(ptr => wasm.__wbg_dynamicexceldata_free(ptr >>> 0, 1));
1614
1730
  const ExcelCellFormatFinalization = (typeof FinalizationRegistry === 'undefined')
1615
1731
  ? { register: () => {}, unregister: () => {} }
1616
1732
  : new FinalizationRegistry(ptr => wasm.__wbg_excelcellformat_free(ptr >>> 0, 1));
Binary file