@sheetwrite/wasm 0.1.0 → 0.3.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.
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@sheetwrite/wasm",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Sheetwrite columnar store and data engine (Rust/WASM).",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/chh-ay/Sheetwrite.git",
9
+ "url": "git+https://github.com/chh-ay/sheetwrite.git",
10
10
  "directory": "packages/wasm"
11
11
  },
12
- "homepage": "https://chh-ay.github.io/Sheetwrite/",
12
+ "homepage": "https://sheetwrite.vercel.app/",
13
13
  "bugs": {
14
- "url": "https://github.com/chh-ay/Sheetwrite/issues"
14
+ "url": "https://github.com/chh-ay/sheetwrite/issues"
15
15
  },
16
16
  "keywords": [
17
17
  "spreadsheet",
@@ -20,10 +20,11 @@ export class CellOut {
20
20
  export class CellStore {
21
21
  free(): void;
22
22
  [Symbol.dispose](): void;
23
+ acknowledgeRevision(revision: bigint): void;
23
24
  /**
24
25
  * Allocate a logical sheet whose cell chunks materialize on page load or edit.
25
26
  */
26
- addPagedSheet(n_cols: number, row_count: number, chunk_rows: number, byte_budget: number): number;
27
+ addPagedSheet(n_cols: number, row_count: number, chunk_rows: number, byte_budget: number, max_dirty_cells: number): number;
27
28
  addRows(sheet: number, at: number, count: number): void;
28
29
  /**
29
30
  * Allocate a sheet grid and return its numeric handle.
@@ -33,11 +34,29 @@ export class CellStore {
33
34
  * Column aggregate over numeric cells. op: 0 sum, 1 avg, 2 min, 3 max, 4 count.
34
35
  */
35
36
  aggregate(sheet: number, col: number, op: number): number;
37
+ beginMutation(): bigint;
36
38
  beginPageLoad(): void;
39
+ canDirtyCell(sheet: number, row: number, col: number): boolean;
37
40
  /**
38
41
  * Capture a dense rectangle into an opaque store-local history resource.
39
42
  */
40
43
  captureRange(sheet: number, r0: number, c0: number, rows: number, cols: number): RangeSnapshot | undefined;
44
+ /**
45
+ * Capture only persisted references for one sheet. The explicit entry cap
46
+ * bounds allocation for host-side structural admission simulation.
47
+ */
48
+ captureReferences(sheet: number, max_entries: number): SourceSnapshot | undefined;
49
+ /**
50
+ * Capture only persisted formula/reference sources in a rectangle. The
51
+ * returned opaque object is compact in source cardinality, not cell count.
52
+ */
53
+ captureSources(sheet: number, r0: number, c0: number, rows: number, cols: number): SourceSnapshot | undefined;
54
+ /**
55
+ * Capture persisted formula/reference sources and derived-spill identity
56
+ * for arbitrary row/column coordinates in one boundary crossing. Offsets
57
+ * follow the caller's row-major coordinate order.
58
+ */
59
+ captureSourcesForRows(sheet: number, rows: Uint32Array, cols: Uint32Array): SourceSnapshot | undefined;
41
60
  /**
42
61
  * 0 unloaded, 1 loaded-empty, 2 loaded-value, 3 dirty local edit.
43
62
  */
@@ -48,6 +67,11 @@ export class CellStore {
48
67
  */
49
68
  clearRange(sheet: number, r0: number, c0: number, r1: number, c1: number, contents: boolean, style: boolean): boolean;
50
69
  colCount(sheet: number): number;
70
+ columnsFullyLoaded(sheet: number, start_row: number, end_row: number, cols: Uint32Array): boolean;
71
+ /**
72
+ * Release geometric growth slack after a bounded bulk ingest.
73
+ */
74
+ compactStringStorage(): void;
51
75
  /**
52
76
  * Ctrl+Arrow destination: from `(row, col)` stepping by `(d_row, d_col)`
53
77
  * (exactly one of them ±1), return the destination row (vertical moves) or
@@ -60,13 +84,19 @@ export class CellStore {
60
84
  */
61
85
  dataEdge(sheet: number, row: number, col: number, d_row: number, d_col: number): number;
62
86
  dataEdgeOrdered(sheet: number, order: Uint32Array, row: number, col: number, d_row: number, d_col: number): number;
87
+ dirtyRevision(sheet: number, row: number, col: number): bigint;
63
88
  distinctValues(sheet: number, col: number, limit: number): DistinctColumn;
89
+ endMutation(): void;
64
90
  endPageLoad(): void;
65
91
  /**
66
92
  * Data-row indices whose column text contains `needle` (case-insensitive).
67
93
  */
68
94
  filterRows(sheet: number, col: number, needle: string): Uint32Array;
69
95
  filterRowsMulti(sheet: number, cols: Uint32Array, kinds: Uint8Array, flags: Uint8Array, nums: Float64Array, num_counts: Uint32Array, text_counts: Uint32Array, value_nums: Float64Array, value_texts: string[]): Uint32Array;
96
+ /**
97
+ * Benchmark diagnostic: `[current matrix bytes, peak matrix bytes, allocations]`.
98
+ */
99
+ formulaMatrixResourceStats(): Float64Array;
70
100
  formulaSource(sheet: number, row: number, col: number): string | undefined;
71
101
  /**
72
102
  * Single-cell read for interactions/tests — never the render hot path.
@@ -84,16 +114,37 @@ export class CellStore {
84
114
  * shape as `get_window`, rows taken from `rows` rather than a range.
85
115
  */
86
116
  getWindowRows(sheet: number, rows: Uint32Array, cols: Uint32Array): WindowView;
117
+ /**
118
+ * Hydrate one datasource page column while retaining local dirty cells and
119
+ * request-revision exceptions. `protected_offsets` is sorted and relative
120
+ * to `start_row`.
121
+ */
122
+ hydratePageNumbers(sheet: number, col: number, start_row: number, values: Float64Array, style: number, protected_offsets: Uint32Array): void;
123
+ /**
124
+ * Packed-string counterpart to [`CellStore::hydrate_page_numbers`].
125
+ */
126
+ hydratePageStringsPacked(sheet: number, col: number, start_row: number, buf: string, utf16_lens: Uint32Array, style: number, protected_offsets: Uint32Array): void;
87
127
  insertCols(sheet: number, at: number, count: number): void;
88
128
  isFullyLoaded(sheet: number): boolean;
89
129
  isPaged(sheet: number): boolean;
90
130
  isSheetAlive(sheet: number): boolean;
131
+ markCellCleanRevision(sheet: number, row: number, col: number, revision: bigint): boolean;
91
132
  markRangeClean(sheet: number, start_row: number, end_row: number, start_col: number, end_col: number): void;
133
+ memoryStats(): Float64Array;
92
134
  constructor();
135
+ pagedDirtyCoordinates(sheet: number): Float64Array;
93
136
  /**
94
- * `[chunks, loaded cells, dirty cells, allocated bytes, fully loaded]`.
137
+ * `[chunks, loaded cells, dirty cells, clean chunk bytes, fully loaded, dirty bytes]`.
95
138
  */
96
139
  pagedStats(sheet: number): Float64Array;
140
+ /**
141
+ * Sparse persisted-cell records. Each record starts with
142
+ * `[row, col, kind, number, style, string_id, source_kind, source_length]`.
143
+ * Formula UTF-8 is packed into little-endian u32 words; references append
144
+ * one `[sheet, row, col]` triple. The allocation scales with serialized
145
+ * cells and source bytes, never the logical sheet rectangle.
146
+ */
147
+ persistedCellData(sheet: number): Float64Array;
97
148
  pinRange(sheet: number, start_row: number, end_row: number, cols: Uint32Array): void;
98
149
  poolStrings(ids: Uint32Array): string[];
99
150
  /**
@@ -114,11 +165,22 @@ export class CellStore {
114
165
  * when many downstream formulas reference it.
115
166
  */
116
167
  recompute(sheet: number): void;
168
+ /**
169
+ * Recompute the union of every dirty sheet once at the host transaction
170
+ * barrier, including cross-sheet formula and plain-reference dependents.
171
+ */
172
+ recomputeChanged(): void;
117
173
  /**
118
174
  * Explicit volatile barrier. `serial` is a UTC spreadsheet serial using
119
175
  * the 1899-12-30 epoch; only TODAY/NOW formulas and their dependents dirty.
120
176
  */
121
177
  recomputeVolatile(serial: number): boolean;
178
+ referenceTarget(sheet: number, row: number, col: number): Uint32Array | undefined;
179
+ /**
180
+ * Return packed `[source_sheet, source_row, source_col, ...]` references
181
+ * targeting one sheet, bounded before crossing into the host.
182
+ */
183
+ referencesTargeting(target_sheet: number, max_entries: number): Uint32Array | undefined;
122
184
  /**
123
185
  * Remap styles over a rectangle using parallel old/new id tables.
124
186
  */
@@ -130,10 +192,12 @@ export class CellStore {
130
192
  * Tombstone a stable sheet handle and invalidate every formula reference to it.
131
193
  */
132
194
  removeSheet(sheet: number): boolean;
195
+ removeTable(id: string): boolean;
133
196
  /**
134
197
  * Rename a live stable sheet handle and rewrite every resolved formula AST reference.
135
198
  */
136
199
  renameSheet(sheet: number, id: string, name: string): boolean;
200
+ resetFormulaMatrixResourceStats(): void;
137
201
  resetQueryResourceStats(): void;
138
202
  /**
139
203
  * Restore a captured block at a destination of the same dimensions.
@@ -147,11 +211,13 @@ export class CellStore {
147
211
  */
148
212
  search(sheet: number, cols: Uint32Array, query: string, case_insensitive: boolean, whole_cell: boolean): Uint32Array;
149
213
  /**
150
- * Write one row-major typed block in a single boundary call. `kinds` uses
151
- * 0 empty / 1 number / 2 string; formulas and references are sparse host
152
- * exceptions applied after this literal bulk write.
214
+ * Atomically write one row-major mixed literal/formula/reference block.
215
+ * Formula/reference offsets are sparse row-major exceptions. Reference
216
+ * targets are packed `[sheet_handle, row, col]` triples. The compact
217
+ * status is `0` success, `1` invalid shape/bounds, `2` invalid or duplicate
218
+ * source metadata, and `3` paged dirty-capacity rejection.
153
219
  */
154
- setBlock(sheet: number, start_row: number, start_col: number, rows: number, cols: number, kinds: Uint8Array, numbers: Float64Array, texts: string[], styles: Uint32Array): boolean;
220
+ setBlock(sheet: number, start_row: number, start_col: number, rows: number, cols: number, kinds: Uint8Array, numbers: Float64Array, texts: string[], styles: Uint32Array, formula_offsets: Uint32Array, formula_sources: string[], reference_offsets: Uint32Array, reference_targets: Uint32Array): number;
155
221
  setBool(sheet: number, row: number, col: number, value: boolean, style: number): void;
156
222
  /**
157
223
  * Bulk-load one column with numbers starting at `start_row`.
@@ -171,10 +237,10 @@ export class CellStore {
171
237
  /**
172
238
  * Replace a sheet's conditional-format rules. Packed columnar encoding,
173
239
  * one entry per rule: `kinds` 0 gt / 1 lt / 2 eqNum / 3 eqStr / 4 eqEmpty /
174
- * 5 contains; `bounds` = normalized `[r0, c0, r1, c1]` per rule; `nums`
175
- * carries the numeric operand; `strs` the text operand; `flags` bit 0 =
176
- * match-case for `contains`. Case-insensitive needles are lowercased here
177
- * once so the per-cell match never allocates.
240
+ * 5 contains / 6 boolean formula; `bounds` = normalized `[r0, c0, r1, c1]`
241
+ * per rule; `nums` carries the numeric operand; `strs` the text/formula
242
+ * operand; `flags` bit 0 = match-case for `contains`, bit 1 = stop-if-true.
243
+ * Formula strings are parsed once here, never once per visible cell.
178
244
  */
179
245
  setConditionalRules(sheet: number, kinds: Uint8Array, bounds: Uint32Array, nums: Float64Array, strs: string[], flags: Uint8Array): void;
180
246
  /**
@@ -190,7 +256,20 @@ export class CellStore {
190
256
  setNamedRange(name: string, scope: number, sheet: number, row_start: number, col_start: number, row_end: number, col_end: number): boolean;
191
257
  setNumber(sheet: number, row: number, col: number, value: number, style: number): void;
192
258
  setSheetName(sheet: number, id: string, name: string): void;
259
+ /**
260
+ * Write one sparse mixed transaction/page/snapshot block without
261
+ * allocating by logical rectangle size. Inside `beginPageLoad`, dirty
262
+ * paged cells are skipped; otherwise the whole sparse write is preflighted.
263
+ */
264
+ setSparseBlock(sheet: number, start_row: number, start_col: number, rows: number, cols: number, offsets: Uint32Array, kinds: Uint8Array, numbers: Float64Array, texts: string[], styles: Uint32Array, formula_offsets: Uint32Array, formula_sources: string[], reference_offsets: Uint32Array, reference_targets: Uint32Array): number;
265
+ /**
266
+ * Replace the host-owned merge/protection collision ranges. Packed as
267
+ * `[row_start, col_start, row_end, col_end, ...]`; invalid input fails
268
+ * without weakening the old gate.
269
+ */
270
+ setSpillBlockers(sheet: number, bounds: Uint32Array): boolean;
193
271
  setString(sheet: number, row: number, col: number, value: string, style: number): void;
272
+ setTable(id: string, name: string, sheet: number, row_start: number, col_start: number, row_end: number, col_end: number, header_row: boolean, totals_row: boolean, column_ids: string[], column_names: string[]): boolean;
194
273
  snapshotNumbers(snapshot: RangeSnapshot): Float64Array;
195
274
  snapshotTexts(snapshot: RangeSnapshot): string[];
196
275
  /**
@@ -198,12 +277,28 @@ export class CellStore {
198
277
  */
199
278
  sortRows(sheet: number, col: number, ascending: boolean): Uint32Array;
200
279
  sortRowsMulti(sheet: number, cols: Uint32Array, ascending: Uint8Array, candidates: Uint32Array): Uint32Array;
280
+ spillAnchorCol(sheet: number, row: number, col: number): number;
281
+ /**
282
+ * Stable spill owner coordinate, or `u32::MAX` when `cell` is not part of
283
+ * a materialized spill.
284
+ */
285
+ spillAnchorRow(sheet: number, row: number, col: number): number;
286
+ /**
287
+ * Row-major mask aligned with render-window layout; `1` marks a derived
288
+ * spill cell and deliberately excludes the anchor.
289
+ */
290
+ spillDerivedMask(sheet: number, row_start: number, row_end: number, cols: Uint32Array): Uint8Array;
291
+ /**
292
+ * Packed row-major `[anchor_row, anchor_col, ...]` owner coordinates.
293
+ */
294
+ spillOwnerCoordinates(sheet: number, row_start: number, row_end: number, cols: Uint32Array): Uint32Array;
201
295
  /**
202
296
  * Current style-dictionary id at a cell; `0` when out of bounds. Used by
203
297
  * the host to write derived (reference-shadow) values without disturbing
204
298
  * the cell's style.
205
299
  */
206
300
  styleIdAt(sheet: number, row: number, col: number): number;
301
+ wasmCommittedBytes(): number;
207
302
  }
208
303
 
209
304
  /**
@@ -244,9 +339,28 @@ export class RangeSnapshot {
244
339
  formulaOffsets(): Uint32Array;
245
340
  formulaSources(): string[];
246
341
  kinds(): Uint8Array;
342
+ referenceOffsets(): Uint32Array;
343
+ referenceTargets(): Uint32Array;
247
344
  styleIds(): Uint32Array;
248
345
  }
249
346
 
347
+ /**
348
+ * Compact serializable projection of persisted derived-cell sources and spill
349
+ * identity in one range. Offsets are row-major and sorted; reference targets
350
+ * are packed `[sheet_handle, row, col]` triples.
351
+ */
352
+ export class SourceSnapshot {
353
+ private constructor();
354
+ free(): void;
355
+ [Symbol.dispose](): void;
356
+ byteLength(): number;
357
+ formulaOffsets(): Uint32Array;
358
+ formulaSources(): string[];
359
+ referenceOffsets(): Uint32Array;
360
+ referenceTargets(): Uint32Array;
361
+ spillDerived(): Uint8Array;
362
+ }
363
+
250
364
  /**
251
365
  * A bulk window of resolved cells, row-major over `n_rows x n_cols`.
252
366
  */
@@ -300,56 +414,79 @@ export interface InitOutput {
300
414
  readonly __wbg_cellstore_free: (a: number, b: number) => void;
301
415
  readonly __wbg_distinctcolumn_free: (a: number, b: number) => void;
302
416
  readonly __wbg_rangesnapshot_free: (a: number, b: number) => void;
417
+ readonly __wbg_sourcesnapshot_free: (a: number, b: number) => void;
303
418
  readonly __wbg_windowview_free: (a: number, b: number) => void;
304
419
  readonly cellout_kind: (a: number) => number;
305
420
  readonly cellout_num: (a: number) => number;
306
421
  readonly cellout_string: (a: number) => [number, number];
307
422
  readonly cellout_style: (a: number) => number;
308
- readonly cellstore_addPagedSheet: (a: number, b: number, c: number, d: number, e: number) => number;
423
+ readonly cellstore_acknowledgeRevision: (a: number, b: bigint) => void;
424
+ readonly cellstore_addPagedSheet: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
309
425
  readonly cellstore_addRows: (a: number, b: number, c: number, d: number) => void;
310
426
  readonly cellstore_addSheet: (a: number, b: number, c: number) => number;
311
427
  readonly cellstore_aggregate: (a: number, b: number, c: number, d: number) => number;
428
+ readonly cellstore_beginMutation: (a: number) => bigint;
312
429
  readonly cellstore_beginPageLoad: (a: number) => void;
430
+ readonly cellstore_canDirtyCell: (a: number, b: number, c: number, d: number) => number;
313
431
  readonly cellstore_captureRange: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
432
+ readonly cellstore_captureReferences: (a: number, b: number, c: number) => number;
433
+ readonly cellstore_captureSources: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
434
+ readonly cellstore_captureSourcesForRows: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
314
435
  readonly cellstore_cellState: (a: number, b: number, c: number, d: number) => number;
315
436
  readonly cellstore_clearCell: (a: number, b: number, c: number, d: number, e: number) => void;
316
437
  readonly cellstore_clearRange: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
317
438
  readonly cellstore_colCount: (a: number, b: number) => number;
439
+ readonly cellstore_columnsFullyLoaded: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
440
+ readonly cellstore_compactStringStorage: (a: number) => void;
318
441
  readonly cellstore_dataEdge: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
319
442
  readonly cellstore_dataEdgeOrdered: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
443
+ readonly cellstore_dirtyRevision: (a: number, b: number, c: number, d: number) => bigint;
320
444
  readonly cellstore_distinctValues: (a: number, b: number, c: number, d: number) => number;
445
+ readonly cellstore_endMutation: (a: number) => void;
321
446
  readonly cellstore_endPageLoad: (a: number) => void;
322
447
  readonly cellstore_filterRows: (a: number, b: number, c: number, d: number, e: number) => [number, number];
323
448
  readonly cellstore_filterRowsMulti: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number) => [number, number];
449
+ readonly cellstore_formulaMatrixResourceStats: (a: number) => [number, number];
324
450
  readonly cellstore_formulaSource: (a: number, b: number, c: number, d: number) => [number, number];
325
451
  readonly cellstore_getCell: (a: number, b: number, c: number, d: number) => number;
326
452
  readonly cellstore_getWindow: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
327
453
  readonly cellstore_getWindowRows: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
454
+ readonly cellstore_hydratePageNumbers: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
455
+ readonly cellstore_hydratePageStringsPacked: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => void;
328
456
  readonly cellstore_insertCols: (a: number, b: number, c: number, d: number) => void;
329
457
  readonly cellstore_isFullyLoaded: (a: number, b: number) => number;
330
458
  readonly cellstore_isPaged: (a: number, b: number) => number;
331
459
  readonly cellstore_isSheetAlive: (a: number, b: number) => number;
460
+ readonly cellstore_markCellCleanRevision: (a: number, b: number, c: number, d: number, e: bigint) => number;
332
461
  readonly cellstore_markRangeClean: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
462
+ readonly cellstore_memoryStats: (a: number) => [number, number];
333
463
  readonly cellstore_new: () => number;
464
+ readonly cellstore_pagedDirtyCoordinates: (a: number, b: number) => [number, number];
334
465
  readonly cellstore_pagedStats: (a: number, b: number) => [number, number];
466
+ readonly cellstore_persistedCellData: (a: number, b: number) => [number, number];
335
467
  readonly cellstore_pinRange: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
336
468
  readonly cellstore_poolStrings: (a: number, b: number, c: number) => [number, number];
337
469
  readonly cellstore_queryResourceStats: (a: number) => [number, number];
338
470
  readonly cellstore_rangeFullyLoaded: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
339
471
  readonly cellstore_rangeStyleIds: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
340
472
  readonly cellstore_recompute: (a: number, b: number) => void;
473
+ readonly cellstore_recomputeChanged: (a: number) => void;
341
474
  readonly cellstore_recomputeVolatile: (a: number, b: number) => number;
475
+ readonly cellstore_referenceTarget: (a: number, b: number, c: number, d: number) => [number, number];
476
+ readonly cellstore_referencesTargeting: (a: number, b: number, c: number) => [number, number];
342
477
  readonly cellstore_remapRangeStyles: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
343
478
  readonly cellstore_removeCols: (a: number, b: number, c: number, d: number) => void;
344
479
  readonly cellstore_removeNamedRange: (a: number, b: number, c: number, d: number) => number;
345
480
  readonly cellstore_removeRows: (a: number, b: number, c: number, d: number) => void;
346
481
  readonly cellstore_removeSheet: (a: number, b: number) => number;
482
+ readonly cellstore_removeTable: (a: number, b: number, c: number) => number;
347
483
  readonly cellstore_renameSheet: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
484
+ readonly cellstore_resetFormulaMatrixResourceStats: (a: number) => void;
348
485
  readonly cellstore_resetQueryResourceStats: (a: number) => void;
349
486
  readonly cellstore_restoreRange: (a: number, b: number, c: number, d: number, e: number) => number;
350
487
  readonly cellstore_rowCount: (a: number, b: number) => number;
351
488
  readonly cellstore_search: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
352
- readonly cellstore_setBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number) => number;
489
+ readonly cellstore_setBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number) => number;
353
490
  readonly cellstore_setBool: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
354
491
  readonly cellstore_setColumnNumbers: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
355
492
  readonly cellstore_setColumnStrings: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
@@ -359,12 +496,20 @@ export interface InitOutput {
359
496
  readonly cellstore_setNamedRange: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
360
497
  readonly cellstore_setNumber: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
361
498
  readonly cellstore_setSheetName: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
499
+ readonly cellstore_setSparseBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number) => number;
500
+ readonly cellstore_setSpillBlockers: (a: number, b: number, c: number, d: number) => number;
362
501
  readonly cellstore_setString: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
502
+ readonly cellstore_setTable: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number) => number;
363
503
  readonly cellstore_snapshotNumbers: (a: number, b: number) => [number, number];
364
504
  readonly cellstore_snapshotTexts: (a: number, b: number) => [number, number];
365
505
  readonly cellstore_sortRows: (a: number, b: number, c: number, d: number) => [number, number];
366
506
  readonly cellstore_sortRowsMulti: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
507
+ readonly cellstore_spillAnchorCol: (a: number, b: number, c: number, d: number) => number;
508
+ readonly cellstore_spillAnchorRow: (a: number, b: number, c: number, d: number) => number;
509
+ readonly cellstore_spillDerivedMask: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
510
+ readonly cellstore_spillOwnerCoordinates: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
367
511
  readonly cellstore_styleIdAt: (a: number, b: number, c: number, d: number) => number;
512
+ readonly cellstore_wasmCommittedBytes: (a: number) => number;
368
513
  readonly distinctcolumn_takeKinds: (a: number) => [number, number];
369
514
  readonly distinctcolumn_takeNumbers: (a: number) => [number, number];
370
515
  readonly distinctcolumn_takeTexts: (a: number) => [number, number];
@@ -372,7 +517,15 @@ export interface InitOutput {
372
517
  readonly rangesnapshot_formulaOffsets: (a: number) => [number, number];
373
518
  readonly rangesnapshot_formulaSources: (a: number) => [number, number];
374
519
  readonly rangesnapshot_kinds: (a: number) => [number, number];
520
+ readonly rangesnapshot_referenceOffsets: (a: number) => [number, number];
521
+ readonly rangesnapshot_referenceTargets: (a: number) => [number, number];
375
522
  readonly rangesnapshot_styleIds: (a: number) => [number, number];
523
+ readonly sourcesnapshot_byteLength: (a: number) => number;
524
+ readonly sourcesnapshot_formulaOffsets: (a: number) => [number, number];
525
+ readonly sourcesnapshot_formulaSources: (a: number) => [number, number];
526
+ readonly sourcesnapshot_referenceOffsets: (a: number) => [number, number];
527
+ readonly sourcesnapshot_referenceTargets: (a: number) => [number, number];
528
+ readonly sourcesnapshot_spillDerived: (a: number) => [number, number];
376
529
  readonly windowview_nCols: (a: number) => number;
377
530
  readonly windowview_nRows: (a: number) => number;
378
531
  readonly windowview_takeCondMatches: (a: number) => [number, number];
@@ -70,16 +70,23 @@ export class CellStore {
70
70
  const ptr = this.__destroy_into_raw();
71
71
  wasm.__wbg_cellstore_free(ptr, 0);
72
72
  }
73
+ /**
74
+ * @param {bigint} revision
75
+ */
76
+ acknowledgeRevision(revision) {
77
+ wasm.cellstore_acknowledgeRevision(this.__wbg_ptr, revision);
78
+ }
73
79
  /**
74
80
  * Allocate a logical sheet whose cell chunks materialize on page load or edit.
75
81
  * @param {number} n_cols
76
82
  * @param {number} row_count
77
83
  * @param {number} chunk_rows
78
84
  * @param {number} byte_budget
85
+ * @param {number} max_dirty_cells
79
86
  * @returns {number}
80
87
  */
81
- addPagedSheet(n_cols, row_count, chunk_rows, byte_budget) {
82
- const ret = wasm.cellstore_addPagedSheet(this.__wbg_ptr, n_cols, row_count, chunk_rows, byte_budget);
88
+ addPagedSheet(n_cols, row_count, chunk_rows, byte_budget, max_dirty_cells) {
89
+ const ret = wasm.cellstore_addPagedSheet(this.__wbg_ptr, n_cols, row_count, chunk_rows, byte_budget, max_dirty_cells);
83
90
  return ret >>> 0;
84
91
  }
85
92
  /**
@@ -111,9 +118,26 @@ export class CellStore {
111
118
  const ret = wasm.cellstore_aggregate(this.__wbg_ptr, sheet, col, op);
112
119
  return ret;
113
120
  }
121
+ /**
122
+ * @returns {bigint}
123
+ */
124
+ beginMutation() {
125
+ const ret = wasm.cellstore_beginMutation(this.__wbg_ptr);
126
+ return BigInt.asUintN(64, ret);
127
+ }
114
128
  beginPageLoad() {
115
129
  wasm.cellstore_beginPageLoad(this.__wbg_ptr);
116
130
  }
131
+ /**
132
+ * @param {number} sheet
133
+ * @param {number} row
134
+ * @param {number} col
135
+ * @returns {boolean}
136
+ */
137
+ canDirtyCell(sheet, row, col) {
138
+ const ret = wasm.cellstore_canDirtyCell(this.__wbg_ptr, sheet, row, col);
139
+ return ret !== 0;
140
+ }
117
141
  /**
118
142
  * Capture a dense rectangle into an opaque store-local history resource.
119
143
  * @param {number} sheet
@@ -127,6 +151,48 @@ export class CellStore {
127
151
  const ret = wasm.cellstore_captureRange(this.__wbg_ptr, sheet, r0, c0, rows, cols);
128
152
  return ret === 0 ? undefined : RangeSnapshot.__wrap(ret);
129
153
  }
154
+ /**
155
+ * Capture only persisted references for one sheet. The explicit entry cap
156
+ * bounds allocation for host-side structural admission simulation.
157
+ * @param {number} sheet
158
+ * @param {number} max_entries
159
+ * @returns {SourceSnapshot | undefined}
160
+ */
161
+ captureReferences(sheet, max_entries) {
162
+ const ret = wasm.cellstore_captureReferences(this.__wbg_ptr, sheet, max_entries);
163
+ return ret === 0 ? undefined : SourceSnapshot.__wrap(ret);
164
+ }
165
+ /**
166
+ * Capture only persisted formula/reference sources in a rectangle. The
167
+ * returned opaque object is compact in source cardinality, not cell count.
168
+ * @param {number} sheet
169
+ * @param {number} r0
170
+ * @param {number} c0
171
+ * @param {number} rows
172
+ * @param {number} cols
173
+ * @returns {SourceSnapshot | undefined}
174
+ */
175
+ captureSources(sheet, r0, c0, rows, cols) {
176
+ const ret = wasm.cellstore_captureSources(this.__wbg_ptr, sheet, r0, c0, rows, cols);
177
+ return ret === 0 ? undefined : SourceSnapshot.__wrap(ret);
178
+ }
179
+ /**
180
+ * Capture persisted formula/reference sources and derived-spill identity
181
+ * for arbitrary row/column coordinates in one boundary crossing. Offsets
182
+ * follow the caller's row-major coordinate order.
183
+ * @param {number} sheet
184
+ * @param {Uint32Array} rows
185
+ * @param {Uint32Array} cols
186
+ * @returns {SourceSnapshot | undefined}
187
+ */
188
+ captureSourcesForRows(sheet, rows, cols) {
189
+ const ptr0 = passArray32ToWasm0(rows, wasm.__wbindgen_malloc);
190
+ const len0 = WASM_VECTOR_LEN;
191
+ const ptr1 = passArray32ToWasm0(cols, wasm.__wbindgen_malloc);
192
+ const len1 = WASM_VECTOR_LEN;
193
+ const ret = wasm.cellstore_captureSourcesForRows(this.__wbg_ptr, sheet, ptr0, len0, ptr1, len1);
194
+ return ret === 0 ? undefined : SourceSnapshot.__wrap(ret);
195
+ }
130
196
  /**
131
197
  * 0 unloaded, 1 loaded-empty, 2 loaded-value, 3 dirty local edit.
132
198
  * @param {number} sheet
@@ -170,6 +236,25 @@ export class CellStore {
170
236
  const ret = wasm.cellstore_colCount(this.__wbg_ptr, sheet);
171
237
  return ret >>> 0;
172
238
  }
239
+ /**
240
+ * @param {number} sheet
241
+ * @param {number} start_row
242
+ * @param {number} end_row
243
+ * @param {Uint32Array} cols
244
+ * @returns {boolean}
245
+ */
246
+ columnsFullyLoaded(sheet, start_row, end_row, cols) {
247
+ const ptr0 = passArray32ToWasm0(cols, wasm.__wbindgen_malloc);
248
+ const len0 = WASM_VECTOR_LEN;
249
+ const ret = wasm.cellstore_columnsFullyLoaded(this.__wbg_ptr, sheet, start_row, end_row, ptr0, len0);
250
+ return ret !== 0;
251
+ }
252
+ /**
253
+ * Release geometric growth slack after a bounded bulk ingest.
254
+ */
255
+ compactStringStorage() {
256
+ wasm.cellstore_compactStringStorage(this.__wbg_ptr);
257
+ }
173
258
  /**
174
259
  * Ctrl+Arrow destination: from `(row, col)` stepping by `(d_row, d_col)`
175
260
  * (exactly one of them ±1), return the destination row (vertical moves) or
@@ -205,6 +290,16 @@ export class CellStore {
205
290
  const ret = wasm.cellstore_dataEdgeOrdered(this.__wbg_ptr, sheet, ptr0, len0, row, col, d_row, d_col);
206
291
  return ret >>> 0;
207
292
  }
293
+ /**
294
+ * @param {number} sheet
295
+ * @param {number} row
296
+ * @param {number} col
297
+ * @returns {bigint}
298
+ */
299
+ dirtyRevision(sheet, row, col) {
300
+ const ret = wasm.cellstore_dirtyRevision(this.__wbg_ptr, sheet, row, col);
301
+ return BigInt.asUintN(64, ret);
302
+ }
208
303
  /**
209
304
  * @param {number} sheet
210
305
  * @param {number} col
@@ -215,6 +310,9 @@ export class CellStore {
215
310
  const ret = wasm.cellstore_distinctValues(this.__wbg_ptr, sheet, col, limit);
216
311
  return DistinctColumn.__wrap(ret);
217
312
  }
313
+ endMutation() {
314
+ wasm.cellstore_endMutation(this.__wbg_ptr);
315
+ }
218
316
  endPageLoad() {
219
317
  wasm.cellstore_endPageLoad(this.__wbg_ptr);
220
318
  }
@@ -267,6 +365,16 @@ export class CellStore {
267
365
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
268
366
  return v9;
269
367
  }
368
+ /**
369
+ * Benchmark diagnostic: `[current matrix bytes, peak matrix bytes, allocations]`.
370
+ * @returns {Float64Array}
371
+ */
372
+ formulaMatrixResourceStats() {
373
+ const ret = wasm.cellstore_formulaMatrixResourceStats(this.__wbg_ptr);
374
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
375
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
376
+ return v1;
377
+ }
270
378
  /**
271
379
  * @param {number} sheet
272
380
  * @param {number} row
@@ -326,6 +434,43 @@ export class CellStore {
326
434
  const ret = wasm.cellstore_getWindowRows(this.__wbg_ptr, sheet, ptr0, len0, ptr1, len1);
327
435
  return WindowView.__wrap(ret);
328
436
  }
437
+ /**
438
+ * Hydrate one datasource page column while retaining local dirty cells and
439
+ * request-revision exceptions. `protected_offsets` is sorted and relative
440
+ * to `start_row`.
441
+ * @param {number} sheet
442
+ * @param {number} col
443
+ * @param {number} start_row
444
+ * @param {Float64Array} values
445
+ * @param {number} style
446
+ * @param {Uint32Array} protected_offsets
447
+ */
448
+ hydratePageNumbers(sheet, col, start_row, values, style, protected_offsets) {
449
+ const ptr0 = passArrayF64ToWasm0(values, wasm.__wbindgen_malloc);
450
+ const len0 = WASM_VECTOR_LEN;
451
+ const ptr1 = passArray32ToWasm0(protected_offsets, wasm.__wbindgen_malloc);
452
+ const len1 = WASM_VECTOR_LEN;
453
+ wasm.cellstore_hydratePageNumbers(this.__wbg_ptr, sheet, col, start_row, ptr0, len0, style, ptr1, len1);
454
+ }
455
+ /**
456
+ * Packed-string counterpart to [`CellStore::hydrate_page_numbers`].
457
+ * @param {number} sheet
458
+ * @param {number} col
459
+ * @param {number} start_row
460
+ * @param {string} buf
461
+ * @param {Uint32Array} utf16_lens
462
+ * @param {number} style
463
+ * @param {Uint32Array} protected_offsets
464
+ */
465
+ hydratePageStringsPacked(sheet, col, start_row, buf, utf16_lens, style, protected_offsets) {
466
+ const ptr0 = passStringToWasm0(buf, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
467
+ const len0 = WASM_VECTOR_LEN;
468
+ const ptr1 = passArray32ToWasm0(utf16_lens, wasm.__wbindgen_malloc);
469
+ const len1 = WASM_VECTOR_LEN;
470
+ const ptr2 = passArray32ToWasm0(protected_offsets, wasm.__wbindgen_malloc);
471
+ const len2 = WASM_VECTOR_LEN;
472
+ wasm.cellstore_hydratePageStringsPacked(this.__wbg_ptr, sheet, col, start_row, ptr0, len0, ptr1, len1, style, ptr2, len2);
473
+ }
329
474
  /**
330
475
  * @param {number} sheet
331
476
  * @param {number} at
@@ -358,6 +503,17 @@ export class CellStore {
358
503
  const ret = wasm.cellstore_isSheetAlive(this.__wbg_ptr, sheet);
359
504
  return ret !== 0;
360
505
  }
506
+ /**
507
+ * @param {number} sheet
508
+ * @param {number} row
509
+ * @param {number} col
510
+ * @param {bigint} revision
511
+ * @returns {boolean}
512
+ */
513
+ markCellCleanRevision(sheet, row, col, revision) {
514
+ const ret = wasm.cellstore_markCellCleanRevision(this.__wbg_ptr, sheet, row, col, revision);
515
+ return ret !== 0;
516
+ }
361
517
  /**
362
518
  * @param {number} sheet
363
519
  * @param {number} start_row
@@ -368,6 +524,15 @@ export class CellStore {
368
524
  markRangeClean(sheet, start_row, end_row, start_col, end_col) {
369
525
  wasm.cellstore_markRangeClean(this.__wbg_ptr, sheet, start_row, end_row, start_col, end_col);
370
526
  }
527
+ /**
528
+ * @returns {Float64Array}
529
+ */
530
+ memoryStats() {
531
+ const ret = wasm.cellstore_memoryStats(this.__wbg_ptr);
532
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
533
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
534
+ return v1;
535
+ }
371
536
  constructor() {
372
537
  const ret = wasm.cellstore_new();
373
538
  this.__wbg_ptr = ret;
@@ -375,7 +540,17 @@ export class CellStore {
375
540
  return this;
376
541
  }
377
542
  /**
378
- * `[chunks, loaded cells, dirty cells, allocated bytes, fully loaded]`.
543
+ * @param {number} sheet
544
+ * @returns {Float64Array}
545
+ */
546
+ pagedDirtyCoordinates(sheet) {
547
+ const ret = wasm.cellstore_pagedDirtyCoordinates(this.__wbg_ptr, sheet);
548
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
549
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
550
+ return v1;
551
+ }
552
+ /**
553
+ * `[chunks, loaded cells, dirty cells, clean chunk bytes, fully loaded, dirty bytes]`.
379
554
  * @param {number} sheet
380
555
  * @returns {Float64Array}
381
556
  */
@@ -385,6 +560,21 @@ export class CellStore {
385
560
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
386
561
  return v1;
387
562
  }
563
+ /**
564
+ * Sparse persisted-cell records. Each record starts with
565
+ * `[row, col, kind, number, style, string_id, source_kind, source_length]`.
566
+ * Formula UTF-8 is packed into little-endian u32 words; references append
567
+ * one `[sheet, row, col]` triple. The allocation scales with serialized
568
+ * cells and source bytes, never the logical sheet rectangle.
569
+ * @param {number} sheet
570
+ * @returns {Float64Array}
571
+ */
572
+ persistedCellData(sheet) {
573
+ const ret = wasm.cellstore_persistedCellData(this.__wbg_ptr, sheet);
574
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
575
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
576
+ return v1;
577
+ }
388
578
  /**
389
579
  * @param {number} sheet
390
580
  * @param {number} start_row
@@ -457,6 +647,13 @@ export class CellStore {
457
647
  recompute(sheet) {
458
648
  wasm.cellstore_recompute(this.__wbg_ptr, sheet);
459
649
  }
650
+ /**
651
+ * Recompute the union of every dirty sheet once at the host transaction
652
+ * barrier, including cross-sheet formula and plain-reference dependents.
653
+ */
654
+ recomputeChanged() {
655
+ wasm.cellstore_recomputeChanged(this.__wbg_ptr);
656
+ }
460
657
  /**
461
658
  * Explicit volatile barrier. `serial` is a UTC spreadsheet serial using
462
659
  * the 1899-12-30 epoch; only TODAY/NOW formulas and their dependents dirty.
@@ -467,6 +664,37 @@ export class CellStore {
467
664
  const ret = wasm.cellstore_recomputeVolatile(this.__wbg_ptr, serial);
468
665
  return ret !== 0;
469
666
  }
667
+ /**
668
+ * @param {number} sheet
669
+ * @param {number} row
670
+ * @param {number} col
671
+ * @returns {Uint32Array | undefined}
672
+ */
673
+ referenceTarget(sheet, row, col) {
674
+ const ret = wasm.cellstore_referenceTarget(this.__wbg_ptr, sheet, row, col);
675
+ let v1;
676
+ if (ret[0] !== 0) {
677
+ v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
678
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
679
+ }
680
+ return v1;
681
+ }
682
+ /**
683
+ * Return packed `[source_sheet, source_row, source_col, ...]` references
684
+ * targeting one sheet, bounded before crossing into the host.
685
+ * @param {number} target_sheet
686
+ * @param {number} max_entries
687
+ * @returns {Uint32Array | undefined}
688
+ */
689
+ referencesTargeting(target_sheet, max_entries) {
690
+ const ret = wasm.cellstore_referencesTargeting(this.__wbg_ptr, target_sheet, max_entries);
691
+ let v1;
692
+ if (ret[0] !== 0) {
693
+ v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
694
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
695
+ }
696
+ return v1;
697
+ }
470
698
  /**
471
699
  * Remap styles over a rectangle using parallel old/new id tables.
472
700
  * @param {number} sheet
@@ -522,6 +750,16 @@ export class CellStore {
522
750
  const ret = wasm.cellstore_removeSheet(this.__wbg_ptr, sheet);
523
751
  return ret !== 0;
524
752
  }
753
+ /**
754
+ * @param {string} id
755
+ * @returns {boolean}
756
+ */
757
+ removeTable(id) {
758
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
759
+ const len0 = WASM_VECTOR_LEN;
760
+ const ret = wasm.cellstore_removeTable(this.__wbg_ptr, ptr0, len0);
761
+ return ret !== 0;
762
+ }
525
763
  /**
526
764
  * Rename a live stable sheet handle and rewrite every resolved formula AST reference.
527
765
  * @param {number} sheet
@@ -537,6 +775,9 @@ export class CellStore {
537
775
  const ret = wasm.cellstore_renameSheet(this.__wbg_ptr, sheet, ptr0, len0, ptr1, len1);
538
776
  return ret !== 0;
539
777
  }
778
+ resetFormulaMatrixResourceStats() {
779
+ wasm.cellstore_resetFormulaMatrixResourceStats(this.__wbg_ptr);
780
+ }
540
781
  resetQueryResourceStats() {
541
782
  wasm.cellstore_resetQueryResourceStats(this.__wbg_ptr);
542
783
  }
@@ -583,9 +824,11 @@ export class CellStore {
583
824
  return v3;
584
825
  }
585
826
  /**
586
- * Write one row-major typed block in a single boundary call. `kinds` uses
587
- * 0 empty / 1 number / 2 string; formulas and references are sparse host
588
- * exceptions applied after this literal bulk write.
827
+ * Atomically write one row-major mixed literal/formula/reference block.
828
+ * Formula/reference offsets are sparse row-major exceptions. Reference
829
+ * targets are packed `[sheet_handle, row, col]` triples. The compact
830
+ * status is `0` success, `1` invalid shape/bounds, `2` invalid or duplicate
831
+ * source metadata, and `3` paged dirty-capacity rejection.
589
832
  * @param {number} sheet
590
833
  * @param {number} start_row
591
834
  * @param {number} start_col
@@ -595,9 +838,13 @@ export class CellStore {
595
838
  * @param {Float64Array} numbers
596
839
  * @param {string[]} texts
597
840
  * @param {Uint32Array} styles
598
- * @returns {boolean}
841
+ * @param {Uint32Array} formula_offsets
842
+ * @param {string[]} formula_sources
843
+ * @param {Uint32Array} reference_offsets
844
+ * @param {Uint32Array} reference_targets
845
+ * @returns {number}
599
846
  */
600
- setBlock(sheet, start_row, start_col, rows, cols, kinds, numbers, texts, styles) {
847
+ setBlock(sheet, start_row, start_col, rows, cols, kinds, numbers, texts, styles, formula_offsets, formula_sources, reference_offsets, reference_targets) {
601
848
  const ptr0 = passArray8ToWasm0(kinds, wasm.__wbindgen_malloc);
602
849
  const len0 = WASM_VECTOR_LEN;
603
850
  const ptr1 = passArrayF64ToWasm0(numbers, wasm.__wbindgen_malloc);
@@ -606,8 +853,16 @@ export class CellStore {
606
853
  const len2 = WASM_VECTOR_LEN;
607
854
  const ptr3 = passArray32ToWasm0(styles, wasm.__wbindgen_malloc);
608
855
  const len3 = WASM_VECTOR_LEN;
609
- const ret = wasm.cellstore_setBlock(this.__wbg_ptr, sheet, start_row, start_col, rows, cols, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
610
- return ret !== 0;
856
+ const ptr4 = passArray32ToWasm0(formula_offsets, wasm.__wbindgen_malloc);
857
+ const len4 = WASM_VECTOR_LEN;
858
+ const ptr5 = passArrayJsValueToWasm0(formula_sources, wasm.__wbindgen_malloc);
859
+ const len5 = WASM_VECTOR_LEN;
860
+ const ptr6 = passArray32ToWasm0(reference_offsets, wasm.__wbindgen_malloc);
861
+ const len6 = WASM_VECTOR_LEN;
862
+ const ptr7 = passArray32ToWasm0(reference_targets, wasm.__wbindgen_malloc);
863
+ const len7 = WASM_VECTOR_LEN;
864
+ const ret = wasm.cellstore_setBlock(this.__wbg_ptr, sheet, start_row, start_col, rows, cols, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);
865
+ return ret >>> 0;
611
866
  }
612
867
  /**
613
868
  * @param {number} sheet
@@ -667,10 +922,10 @@ export class CellStore {
667
922
  /**
668
923
  * Replace a sheet's conditional-format rules. Packed columnar encoding,
669
924
  * one entry per rule: `kinds` 0 gt / 1 lt / 2 eqNum / 3 eqStr / 4 eqEmpty /
670
- * 5 contains; `bounds` = normalized `[r0, c0, r1, c1]` per rule; `nums`
671
- * carries the numeric operand; `strs` the text operand; `flags` bit 0 =
672
- * match-case for `contains`. Case-insensitive needles are lowercased here
673
- * once so the per-cell match never allocates.
925
+ * 5 contains / 6 boolean formula; `bounds` = normalized `[r0, c0, r1, c1]`
926
+ * per rule; `nums` carries the numeric operand; `strs` the text/formula
927
+ * operand; `flags` bit 0 = match-case for `contains`, bit 1 = stop-if-true.
928
+ * Formula strings are parsed once here, never once per visible cell.
674
929
  * @param {number} sheet
675
930
  * @param {Uint8Array} kinds
676
931
  * @param {Uint32Array} bounds
@@ -750,6 +1005,62 @@ export class CellStore {
750
1005
  const len1 = WASM_VECTOR_LEN;
751
1006
  wasm.cellstore_setSheetName(this.__wbg_ptr, sheet, ptr0, len0, ptr1, len1);
752
1007
  }
1008
+ /**
1009
+ * Write one sparse mixed transaction/page/snapshot block without
1010
+ * allocating by logical rectangle size. Inside `beginPageLoad`, dirty
1011
+ * paged cells are skipped; otherwise the whole sparse write is preflighted.
1012
+ * @param {number} sheet
1013
+ * @param {number} start_row
1014
+ * @param {number} start_col
1015
+ * @param {number} rows
1016
+ * @param {number} cols
1017
+ * @param {Uint32Array} offsets
1018
+ * @param {Uint8Array} kinds
1019
+ * @param {Float64Array} numbers
1020
+ * @param {string[]} texts
1021
+ * @param {Uint32Array} styles
1022
+ * @param {Uint32Array} formula_offsets
1023
+ * @param {string[]} formula_sources
1024
+ * @param {Uint32Array} reference_offsets
1025
+ * @param {Uint32Array} reference_targets
1026
+ * @returns {number}
1027
+ */
1028
+ setSparseBlock(sheet, start_row, start_col, rows, cols, offsets, kinds, numbers, texts, styles, formula_offsets, formula_sources, reference_offsets, reference_targets) {
1029
+ const ptr0 = passArray32ToWasm0(offsets, wasm.__wbindgen_malloc);
1030
+ const len0 = WASM_VECTOR_LEN;
1031
+ const ptr1 = passArray8ToWasm0(kinds, wasm.__wbindgen_malloc);
1032
+ const len1 = WASM_VECTOR_LEN;
1033
+ const ptr2 = passArrayF64ToWasm0(numbers, wasm.__wbindgen_malloc);
1034
+ const len2 = WASM_VECTOR_LEN;
1035
+ const ptr3 = passArrayJsValueToWasm0(texts, wasm.__wbindgen_malloc);
1036
+ const len3 = WASM_VECTOR_LEN;
1037
+ const ptr4 = passArray32ToWasm0(styles, wasm.__wbindgen_malloc);
1038
+ const len4 = WASM_VECTOR_LEN;
1039
+ const ptr5 = passArray32ToWasm0(formula_offsets, wasm.__wbindgen_malloc);
1040
+ const len5 = WASM_VECTOR_LEN;
1041
+ const ptr6 = passArrayJsValueToWasm0(formula_sources, wasm.__wbindgen_malloc);
1042
+ const len6 = WASM_VECTOR_LEN;
1043
+ const ptr7 = passArray32ToWasm0(reference_offsets, wasm.__wbindgen_malloc);
1044
+ const len7 = WASM_VECTOR_LEN;
1045
+ const ptr8 = passArray32ToWasm0(reference_targets, wasm.__wbindgen_malloc);
1046
+ const len8 = WASM_VECTOR_LEN;
1047
+ const ret = wasm.cellstore_setSparseBlock(this.__wbg_ptr, sheet, start_row, start_col, rows, cols, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7, ptr8, len8);
1048
+ return ret >>> 0;
1049
+ }
1050
+ /**
1051
+ * Replace the host-owned merge/protection collision ranges. Packed as
1052
+ * `[row_start, col_start, row_end, col_end, ...]`; invalid input fails
1053
+ * without weakening the old gate.
1054
+ * @param {number} sheet
1055
+ * @param {Uint32Array} bounds
1056
+ * @returns {boolean}
1057
+ */
1058
+ setSpillBlockers(sheet, bounds) {
1059
+ const ptr0 = passArray32ToWasm0(bounds, wasm.__wbindgen_malloc);
1060
+ const len0 = WASM_VECTOR_LEN;
1061
+ const ret = wasm.cellstore_setSpillBlockers(this.__wbg_ptr, sheet, ptr0, len0);
1062
+ return ret !== 0;
1063
+ }
753
1064
  /**
754
1065
  * @param {number} sheet
755
1066
  * @param {number} row
@@ -762,6 +1073,32 @@ export class CellStore {
762
1073
  const len0 = WASM_VECTOR_LEN;
763
1074
  wasm.cellstore_setString(this.__wbg_ptr, sheet, row, col, ptr0, len0, style);
764
1075
  }
1076
+ /**
1077
+ * @param {string} id
1078
+ * @param {string} name
1079
+ * @param {number} sheet
1080
+ * @param {number} row_start
1081
+ * @param {number} col_start
1082
+ * @param {number} row_end
1083
+ * @param {number} col_end
1084
+ * @param {boolean} header_row
1085
+ * @param {boolean} totals_row
1086
+ * @param {string[]} column_ids
1087
+ * @param {string[]} column_names
1088
+ * @returns {boolean}
1089
+ */
1090
+ setTable(id, name, sheet, row_start, col_start, row_end, col_end, header_row, totals_row, column_ids, column_names) {
1091
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1092
+ const len0 = WASM_VECTOR_LEN;
1093
+ const ptr1 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1094
+ const len1 = WASM_VECTOR_LEN;
1095
+ const ptr2 = passArrayJsValueToWasm0(column_ids, wasm.__wbindgen_malloc);
1096
+ const len2 = WASM_VECTOR_LEN;
1097
+ const ptr3 = passArrayJsValueToWasm0(column_names, wasm.__wbindgen_malloc);
1098
+ const len3 = WASM_VECTOR_LEN;
1099
+ const ret = wasm.cellstore_setTable(this.__wbg_ptr, ptr0, len0, ptr1, len1, sheet, row_start, col_start, row_end, col_end, header_row, totals_row, ptr2, len2, ptr3, len3);
1100
+ return ret !== 0;
1101
+ }
765
1102
  /**
766
1103
  * @param {RangeSnapshot} snapshot
767
1104
  * @returns {Float64Array}
@@ -816,6 +1153,61 @@ export class CellStore {
816
1153
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
817
1154
  return v4;
818
1155
  }
1156
+ /**
1157
+ * @param {number} sheet
1158
+ * @param {number} row
1159
+ * @param {number} col
1160
+ * @returns {number}
1161
+ */
1162
+ spillAnchorCol(sheet, row, col) {
1163
+ const ret = wasm.cellstore_spillAnchorCol(this.__wbg_ptr, sheet, row, col);
1164
+ return ret >>> 0;
1165
+ }
1166
+ /**
1167
+ * Stable spill owner coordinate, or `u32::MAX` when `cell` is not part of
1168
+ * a materialized spill.
1169
+ * @param {number} sheet
1170
+ * @param {number} row
1171
+ * @param {number} col
1172
+ * @returns {number}
1173
+ */
1174
+ spillAnchorRow(sheet, row, col) {
1175
+ const ret = wasm.cellstore_spillAnchorRow(this.__wbg_ptr, sheet, row, col);
1176
+ return ret >>> 0;
1177
+ }
1178
+ /**
1179
+ * Row-major mask aligned with render-window layout; `1` marks a derived
1180
+ * spill cell and deliberately excludes the anchor.
1181
+ * @param {number} sheet
1182
+ * @param {number} row_start
1183
+ * @param {number} row_end
1184
+ * @param {Uint32Array} cols
1185
+ * @returns {Uint8Array}
1186
+ */
1187
+ spillDerivedMask(sheet, row_start, row_end, cols) {
1188
+ const ptr0 = passArray32ToWasm0(cols, wasm.__wbindgen_malloc);
1189
+ const len0 = WASM_VECTOR_LEN;
1190
+ const ret = wasm.cellstore_spillDerivedMask(this.__wbg_ptr, sheet, row_start, row_end, ptr0, len0);
1191
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
1192
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
1193
+ return v2;
1194
+ }
1195
+ /**
1196
+ * Packed row-major `[anchor_row, anchor_col, ...]` owner coordinates.
1197
+ * @param {number} sheet
1198
+ * @param {number} row_start
1199
+ * @param {number} row_end
1200
+ * @param {Uint32Array} cols
1201
+ * @returns {Uint32Array}
1202
+ */
1203
+ spillOwnerCoordinates(sheet, row_start, row_end, cols) {
1204
+ const ptr0 = passArray32ToWasm0(cols, wasm.__wbindgen_malloc);
1205
+ const len0 = WASM_VECTOR_LEN;
1206
+ const ret = wasm.cellstore_spillOwnerCoordinates(this.__wbg_ptr, sheet, row_start, row_end, ptr0, len0);
1207
+ var v2 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
1208
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1209
+ return v2;
1210
+ }
819
1211
  /**
820
1212
  * Current style-dictionary id at a cell; `0` when out of bounds. Used by
821
1213
  * the host to write derived (reference-shadow) values without disturbing
@@ -829,6 +1221,13 @@ export class CellStore {
829
1221
  const ret = wasm.cellstore_styleIdAt(this.__wbg_ptr, sheet, row, col);
830
1222
  return ret >>> 0;
831
1223
  }
1224
+ /**
1225
+ * @returns {number}
1226
+ */
1227
+ wasmCommittedBytes() {
1228
+ const ret = wasm.cellstore_wasmCommittedBytes(this.__wbg_ptr);
1229
+ return ret >>> 0;
1230
+ }
832
1231
  }
833
1232
  if (Symbol.dispose) CellStore.prototype[Symbol.dispose] = CellStore.prototype.free;
834
1233
 
@@ -945,6 +1344,24 @@ export class RangeSnapshot {
945
1344
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
946
1345
  return v1;
947
1346
  }
1347
+ /**
1348
+ * @returns {Uint32Array}
1349
+ */
1350
+ referenceOffsets() {
1351
+ const ret = wasm.rangesnapshot_referenceOffsets(this.__wbg_ptr);
1352
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
1353
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1354
+ return v1;
1355
+ }
1356
+ /**
1357
+ * @returns {Uint32Array}
1358
+ */
1359
+ referenceTargets() {
1360
+ const ret = wasm.rangesnapshot_referenceTargets(this.__wbg_ptr);
1361
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
1362
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1363
+ return v1;
1364
+ }
948
1365
  /**
949
1366
  * @returns {Uint32Array}
950
1367
  */
@@ -957,6 +1374,83 @@ export class RangeSnapshot {
957
1374
  }
958
1375
  if (Symbol.dispose) RangeSnapshot.prototype[Symbol.dispose] = RangeSnapshot.prototype.free;
959
1376
 
1377
+ /**
1378
+ * Compact serializable projection of persisted derived-cell sources and spill
1379
+ * identity in one range. Offsets are row-major and sorted; reference targets
1380
+ * are packed `[sheet_handle, row, col]` triples.
1381
+ */
1382
+ export class SourceSnapshot {
1383
+ static __wrap(ptr) {
1384
+ const obj = Object.create(SourceSnapshot.prototype);
1385
+ obj.__wbg_ptr = ptr;
1386
+ SourceSnapshotFinalization.register(obj, obj.__wbg_ptr, obj);
1387
+ return obj;
1388
+ }
1389
+ __destroy_into_raw() {
1390
+ const ptr = this.__wbg_ptr;
1391
+ this.__wbg_ptr = 0;
1392
+ SourceSnapshotFinalization.unregister(this);
1393
+ return ptr;
1394
+ }
1395
+ free() {
1396
+ const ptr = this.__destroy_into_raw();
1397
+ wasm.__wbg_sourcesnapshot_free(ptr, 0);
1398
+ }
1399
+ /**
1400
+ * @returns {number}
1401
+ */
1402
+ byteLength() {
1403
+ const ret = wasm.sourcesnapshot_byteLength(this.__wbg_ptr);
1404
+ return ret >>> 0;
1405
+ }
1406
+ /**
1407
+ * @returns {Uint32Array}
1408
+ */
1409
+ formulaOffsets() {
1410
+ const ret = wasm.sourcesnapshot_formulaOffsets(this.__wbg_ptr);
1411
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
1412
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1413
+ return v1;
1414
+ }
1415
+ /**
1416
+ * @returns {string[]}
1417
+ */
1418
+ formulaSources() {
1419
+ const ret = wasm.sourcesnapshot_formulaSources(this.__wbg_ptr);
1420
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
1421
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1422
+ return v1;
1423
+ }
1424
+ /**
1425
+ * @returns {Uint32Array}
1426
+ */
1427
+ referenceOffsets() {
1428
+ const ret = wasm.sourcesnapshot_referenceOffsets(this.__wbg_ptr);
1429
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
1430
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1431
+ return v1;
1432
+ }
1433
+ /**
1434
+ * @returns {Uint32Array}
1435
+ */
1436
+ referenceTargets() {
1437
+ const ret = wasm.sourcesnapshot_referenceTargets(this.__wbg_ptr);
1438
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
1439
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
1440
+ return v1;
1441
+ }
1442
+ /**
1443
+ * @returns {Uint8Array}
1444
+ */
1445
+ spillDerived() {
1446
+ const ret = wasm.sourcesnapshot_spillDerived(this.__wbg_ptr);
1447
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
1448
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
1449
+ return v1;
1450
+ }
1451
+ }
1452
+ if (Symbol.dispose) SourceSnapshot.prototype[Symbol.dispose] = SourceSnapshot.prototype.free;
1453
+
960
1454
  /**
961
1455
  * A bulk window of resolved cells, row-major over `n_rows x n_cols`.
962
1456
  */
@@ -1122,6 +1616,9 @@ const DistinctColumnFinalization = (typeof FinalizationRegistry === 'undefined')
1122
1616
  const RangeSnapshotFinalization = (typeof FinalizationRegistry === 'undefined')
1123
1617
  ? { register: () => {}, unregister: () => {} }
1124
1618
  : new FinalizationRegistry(ptr => wasm.__wbg_rangesnapshot_free(ptr, 1));
1619
+ const SourceSnapshotFinalization = (typeof FinalizationRegistry === 'undefined')
1620
+ ? { register: () => {}, unregister: () => {} }
1621
+ : new FinalizationRegistry(ptr => wasm.__wbg_sourcesnapshot_free(ptr, 1));
1125
1622
  const WindowViewFinalization = (typeof FinalizationRegistry === 'undefined')
1126
1623
  ? { register: () => {}, unregister: () => {} }
1127
1624
  : new FinalizationRegistry(ptr => wasm.__wbg_windowview_free(ptr, 1));
Binary file
@@ -5,56 +5,79 @@ export const __wbg_cellout_free: (a: number, b: number) => void;
5
5
  export const __wbg_cellstore_free: (a: number, b: number) => void;
6
6
  export const __wbg_distinctcolumn_free: (a: number, b: number) => void;
7
7
  export const __wbg_rangesnapshot_free: (a: number, b: number) => void;
8
+ export const __wbg_sourcesnapshot_free: (a: number, b: number) => void;
8
9
  export const __wbg_windowview_free: (a: number, b: number) => void;
9
10
  export const cellout_kind: (a: number) => number;
10
11
  export const cellout_num: (a: number) => number;
11
12
  export const cellout_string: (a: number) => [number, number];
12
13
  export const cellout_style: (a: number) => number;
13
- export const cellstore_addPagedSheet: (a: number, b: number, c: number, d: number, e: number) => number;
14
+ export const cellstore_acknowledgeRevision: (a: number, b: bigint) => void;
15
+ export const cellstore_addPagedSheet: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
14
16
  export const cellstore_addRows: (a: number, b: number, c: number, d: number) => void;
15
17
  export const cellstore_addSheet: (a: number, b: number, c: number) => number;
16
18
  export const cellstore_aggregate: (a: number, b: number, c: number, d: number) => number;
19
+ export const cellstore_beginMutation: (a: number) => bigint;
17
20
  export const cellstore_beginPageLoad: (a: number) => void;
21
+ export const cellstore_canDirtyCell: (a: number, b: number, c: number, d: number) => number;
18
22
  export const cellstore_captureRange: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
23
+ export const cellstore_captureReferences: (a: number, b: number, c: number) => number;
24
+ export const cellstore_captureSources: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
25
+ export const cellstore_captureSourcesForRows: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
19
26
  export const cellstore_cellState: (a: number, b: number, c: number, d: number) => number;
20
27
  export const cellstore_clearCell: (a: number, b: number, c: number, d: number, e: number) => void;
21
28
  export const cellstore_clearRange: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
22
29
  export const cellstore_colCount: (a: number, b: number) => number;
30
+ export const cellstore_columnsFullyLoaded: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
31
+ export const cellstore_compactStringStorage: (a: number) => void;
23
32
  export const cellstore_dataEdge: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
24
33
  export const cellstore_dataEdgeOrdered: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
34
+ export const cellstore_dirtyRevision: (a: number, b: number, c: number, d: number) => bigint;
25
35
  export const cellstore_distinctValues: (a: number, b: number, c: number, d: number) => number;
36
+ export const cellstore_endMutation: (a: number) => void;
26
37
  export const cellstore_endPageLoad: (a: number) => void;
27
38
  export const cellstore_filterRows: (a: number, b: number, c: number, d: number, e: number) => [number, number];
28
39
  export const cellstore_filterRowsMulti: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number) => [number, number];
40
+ export const cellstore_formulaMatrixResourceStats: (a: number) => [number, number];
29
41
  export const cellstore_formulaSource: (a: number, b: number, c: number, d: number) => [number, number];
30
42
  export const cellstore_getCell: (a: number, b: number, c: number, d: number) => number;
31
43
  export const cellstore_getWindow: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
32
44
  export const cellstore_getWindowRows: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
45
+ export const cellstore_hydratePageNumbers: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
46
+ export const cellstore_hydratePageStringsPacked: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => void;
33
47
  export const cellstore_insertCols: (a: number, b: number, c: number, d: number) => void;
34
48
  export const cellstore_isFullyLoaded: (a: number, b: number) => number;
35
49
  export const cellstore_isPaged: (a: number, b: number) => number;
36
50
  export const cellstore_isSheetAlive: (a: number, b: number) => number;
51
+ export const cellstore_markCellCleanRevision: (a: number, b: number, c: number, d: number, e: bigint) => number;
37
52
  export const cellstore_markRangeClean: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
53
+ export const cellstore_memoryStats: (a: number) => [number, number];
38
54
  export const cellstore_new: () => number;
55
+ export const cellstore_pagedDirtyCoordinates: (a: number, b: number) => [number, number];
39
56
  export const cellstore_pagedStats: (a: number, b: number) => [number, number];
57
+ export const cellstore_persistedCellData: (a: number, b: number) => [number, number];
40
58
  export const cellstore_pinRange: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
41
59
  export const cellstore_poolStrings: (a: number, b: number, c: number) => [number, number];
42
60
  export const cellstore_queryResourceStats: (a: number) => [number, number];
43
61
  export const cellstore_rangeFullyLoaded: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
44
62
  export const cellstore_rangeStyleIds: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
45
63
  export const cellstore_recompute: (a: number, b: number) => void;
64
+ export const cellstore_recomputeChanged: (a: number) => void;
46
65
  export const cellstore_recomputeVolatile: (a: number, b: number) => number;
66
+ export const cellstore_referenceTarget: (a: number, b: number, c: number, d: number) => [number, number];
67
+ export const cellstore_referencesTargeting: (a: number, b: number, c: number) => [number, number];
47
68
  export const cellstore_remapRangeStyles: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
48
69
  export const cellstore_removeCols: (a: number, b: number, c: number, d: number) => void;
49
70
  export const cellstore_removeNamedRange: (a: number, b: number, c: number, d: number) => number;
50
71
  export const cellstore_removeRows: (a: number, b: number, c: number, d: number) => void;
51
72
  export const cellstore_removeSheet: (a: number, b: number) => number;
73
+ export const cellstore_removeTable: (a: number, b: number, c: number) => number;
52
74
  export const cellstore_renameSheet: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
75
+ export const cellstore_resetFormulaMatrixResourceStats: (a: number) => void;
53
76
  export const cellstore_resetQueryResourceStats: (a: number) => void;
54
77
  export const cellstore_restoreRange: (a: number, b: number, c: number, d: number, e: number) => number;
55
78
  export const cellstore_rowCount: (a: number, b: number) => number;
56
79
  export const cellstore_search: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
57
- export const cellstore_setBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number) => number;
80
+ export const cellstore_setBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number) => number;
58
81
  export const cellstore_setBool: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
59
82
  export const cellstore_setColumnNumbers: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
60
83
  export const cellstore_setColumnStrings: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
@@ -64,12 +87,20 @@ export const cellstore_setFormula: (a: number, b: number, c: number, d: number,
64
87
  export const cellstore_setNamedRange: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
65
88
  export const cellstore_setNumber: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
66
89
  export const cellstore_setSheetName: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
90
+ export const cellstore_setSparseBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number) => number;
91
+ export const cellstore_setSpillBlockers: (a: number, b: number, c: number, d: number) => number;
67
92
  export const cellstore_setString: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
93
+ export const cellstore_setTable: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number) => number;
68
94
  export const cellstore_snapshotNumbers: (a: number, b: number) => [number, number];
69
95
  export const cellstore_snapshotTexts: (a: number, b: number) => [number, number];
70
96
  export const cellstore_sortRows: (a: number, b: number, c: number, d: number) => [number, number];
71
97
  export const cellstore_sortRowsMulti: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
98
+ export const cellstore_spillAnchorCol: (a: number, b: number, c: number, d: number) => number;
99
+ export const cellstore_spillAnchorRow: (a: number, b: number, c: number, d: number) => number;
100
+ export const cellstore_spillDerivedMask: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
101
+ export const cellstore_spillOwnerCoordinates: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
72
102
  export const cellstore_styleIdAt: (a: number, b: number, c: number, d: number) => number;
103
+ export const cellstore_wasmCommittedBytes: (a: number) => number;
73
104
  export const distinctcolumn_takeKinds: (a: number) => [number, number];
74
105
  export const distinctcolumn_takeNumbers: (a: number) => [number, number];
75
106
  export const distinctcolumn_takeTexts: (a: number) => [number, number];
@@ -77,7 +108,15 @@ export const rangesnapshot_byteLength: (a: number) => number;
77
108
  export const rangesnapshot_formulaOffsets: (a: number) => [number, number];
78
109
  export const rangesnapshot_formulaSources: (a: number) => [number, number];
79
110
  export const rangesnapshot_kinds: (a: number) => [number, number];
111
+ export const rangesnapshot_referenceOffsets: (a: number) => [number, number];
112
+ export const rangesnapshot_referenceTargets: (a: number) => [number, number];
80
113
  export const rangesnapshot_styleIds: (a: number) => [number, number];
114
+ export const sourcesnapshot_byteLength: (a: number) => number;
115
+ export const sourcesnapshot_formulaOffsets: (a: number) => [number, number];
116
+ export const sourcesnapshot_formulaSources: (a: number) => [number, number];
117
+ export const sourcesnapshot_referenceOffsets: (a: number) => [number, number];
118
+ export const sourcesnapshot_referenceTargets: (a: number) => [number, number];
119
+ export const sourcesnapshot_spillDerived: (a: number) => [number, number];
81
120
  export const windowview_nCols: (a: number) => number;
82
121
  export const windowview_nRows: (a: number) => number;
83
122
  export const windowview_takeCondMatches: (a: number) => [number, number];