@bilig/core 0.11.8 → 0.11.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/csv.js +1 -1
  2. package/dist/csv.js.map +1 -1
  3. package/dist/engine/engine-runtime-base.js +1 -0
  4. package/dist/engine/engine-runtime-base.js.map +1 -1
  5. package/dist/engine/live.js +1 -0
  6. package/dist/engine/live.js.map +1 -1
  7. package/dist/engine/services/formula-graph-service.js +4 -0
  8. package/dist/engine/services/formula-graph-service.js.map +1 -1
  9. package/dist/engine/services/operation-batch-applier.js +17 -2
  10. package/dist/engine/services/operation-batch-applier.js.map +1 -1
  11. package/dist/engine/services/recalc-cycle-evaluation.d.ts +18 -0
  12. package/dist/engine/services/recalc-cycle-evaluation.js +87 -0
  13. package/dist/engine/services/recalc-cycle-evaluation.js.map +1 -0
  14. package/dist/engine/services/recalc-service.d.ts +1 -0
  15. package/dist/engine/services/recalc-service.js +170 -49
  16. package/dist/engine/services/recalc-service.js.map +1 -1
  17. package/dist/engine-metadata-utils.d.ts +3 -1
  18. package/dist/engine-metadata-utils.js +50 -1
  19. package/dist/engine-metadata-utils.js.map +1 -1
  20. package/dist/engine-snapshot-utils.js +6 -0
  21. package/dist/engine-snapshot-utils.js.map +1 -1
  22. package/dist/engine.js +3 -3
  23. package/dist/engine.js.map +1 -1
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.js +1 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/snapshot/runtime-image.js +9 -6
  28. package/dist/snapshot/runtime-image.js.map +1 -1
  29. package/dist/workbook-axis-entry-store.js +7 -53
  30. package/dist/workbook-axis-entry-store.js.map +1 -1
  31. package/dist/workbook-axis-records.d.ts +1 -0
  32. package/dist/workbook-axis-records.js +17 -32
  33. package/dist/workbook-axis-records.js.map +1 -1
  34. package/package.json +5 -5
@@ -0,0 +1,87 @@
1
+ export function buildCycleEvaluationNodes(args) {
2
+ const nodeIndexByKey = new Map();
3
+ const nodeIndexByCell = new Map();
4
+ const dirtyFormulaOrder = new Map();
5
+ const nodes = [];
6
+ let hasCycleMembers = false;
7
+ for (let orderedIndex = 0; orderedIndex < args.orderedCount; orderedIndex += 1) {
8
+ const cellIndex = args.ordered[orderedIndex];
9
+ if (!args.formulas.has(cellIndex)) {
10
+ continue;
11
+ }
12
+ dirtyFormulaOrder.set(cellIndex, orderedIndex);
13
+ const cycleGroupId = args.cycleGroupIds[cellIndex] ?? -1;
14
+ const kind = cycleGroupId >= 0 ? 'cycle' : 'formula';
15
+ const key = kind === 'cycle' ? `cycle:${cycleGroupId}` : `formula:${cellIndex}`;
16
+ let nodeIndex = nodeIndexByKey.get(key);
17
+ if (nodeIndex === undefined) {
18
+ nodeIndex = nodes.length;
19
+ nodeIndexByKey.set(key, nodeIndex);
20
+ nodes.push({
21
+ kind,
22
+ order: orderedIndex,
23
+ formulaCellIndices: [],
24
+ });
25
+ }
26
+ if (kind === 'cycle') {
27
+ hasCycleMembers = true;
28
+ }
29
+ nodes[nodeIndex].formulaCellIndices.push(cellIndex);
30
+ nodeIndexByCell.set(cellIndex, nodeIndex);
31
+ }
32
+ if (!hasCycleMembers) {
33
+ return undefined;
34
+ }
35
+ nodes.forEach((node) => {
36
+ node.formulaCellIndices.sort((left, right) => (dirtyFormulaOrder.get(left) ?? 0) - (dirtyFormulaOrder.get(right) ?? 0));
37
+ });
38
+ const outgoing = nodes.map(() => new Set());
39
+ const indegree = new Int32Array(nodes.length);
40
+ for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex += 1) {
41
+ const node = nodes[nodeIndex];
42
+ for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
43
+ const formula = args.formulas.get(node.formulaCellIndices[formulaIndex]);
44
+ if (!formula) {
45
+ continue;
46
+ }
47
+ args.forEachFormulaDependencyCell(formula.cellIndex, (dependencyCellIndex) => {
48
+ const dependencyNodeIndex = nodeIndexByCell.get(dependencyCellIndex);
49
+ if (dependencyNodeIndex === undefined || dependencyNodeIndex === nodeIndex || outgoing[dependencyNodeIndex].has(nodeIndex)) {
50
+ return;
51
+ }
52
+ outgoing[dependencyNodeIndex]?.add(nodeIndex);
53
+ indegree[nodeIndex] = (indegree[nodeIndex] ?? 0) + 1;
54
+ });
55
+ }
56
+ }
57
+ const ready = [];
58
+ const visited = new Uint8Array(nodes.length);
59
+ for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex += 1) {
60
+ if (indegree[nodeIndex] === 0) {
61
+ ready.push(nodeIndex);
62
+ }
63
+ }
64
+ ready.sort((left, right) => nodes[left].order - nodes[right].order);
65
+ const orderedNodes = [];
66
+ while (ready.length > 0) {
67
+ const nodeIndex = ready.shift();
68
+ if (visited[nodeIndex] === 1) {
69
+ continue;
70
+ }
71
+ visited[nodeIndex] = 1;
72
+ orderedNodes.push(nodes[nodeIndex]);
73
+ for (const dependentNodeIndex of outgoing[nodeIndex]) {
74
+ indegree[dependentNodeIndex] = (indegree[dependentNodeIndex] ?? 0) - 1;
75
+ if (indegree[dependentNodeIndex] === 0) {
76
+ ready.push(dependentNodeIndex);
77
+ }
78
+ }
79
+ ready.sort((left, right) => nodes[left].order - nodes[right].order);
80
+ }
81
+ if (orderedNodes.length === nodes.length) {
82
+ return orderedNodes;
83
+ }
84
+ const remaining = nodes.filter((_node, nodeIndex) => visited[nodeIndex] === 0).toSorted((left, right) => left.order - right.order);
85
+ return [...orderedNodes, ...remaining];
86
+ }
87
+ //# sourceMappingURL=recalc-cycle-evaluation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recalc-cycle-evaluation.js","sourceRoot":"","sources":["../../../src/engine/services/recalc-cycle-evaluation.ts"],"names":[],"mappings":"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"}
@@ -86,4 +86,5 @@ export declare function createEngineRecalcService(args: {
86
86
  readonly evaluateDirectLookupFormula: (cellIndex: number) => number[] | undefined;
87
87
  readonly evaluateUnsupportedFormula: (cellIndex: number) => number[];
88
88
  readonly materializePivot: (pivot: WorkbookPivotRecord) => number[];
89
+ readonly forEachFormulaDependencyCell: (cellIndex: number, fn: (dependencyCellIndex: number) => void) => void;
89
90
  }): EngineRecalcService;
@@ -1,10 +1,13 @@
1
1
  import { Effect } from 'effect';
2
2
  import { ErrorCode, FormulaMode, ValueTag, } from '@bilig/protocol';
3
3
  import { makeCellKey } from '../../workbook-store.js';
4
- import { errorValue } from '../../engine-value-utils.js';
4
+ import { areCellValuesEqual, emptyValue, errorValue } from '../../engine-value-utils.js';
5
5
  import { EngineRecalcError } from '../errors.js';
6
6
  import { parseCellAddress, utcDateToExcelSerial } from '@bilig/formula';
7
+ import { buildCycleEvaluationNodes } from './recalc-cycle-evaluation.js';
7
8
  const TRACKED_CELL_PATCH_LIMIT = 64;
9
+ const DEFAULT_ITERATION_COUNT = 100;
10
+ const DEFAULT_ITERATION_DELTA = 0.001;
8
11
  function createRecalcVolatileState(now) {
9
12
  return {
10
13
  nowSerial: utcDateToExcelSerial(now()),
@@ -130,6 +133,14 @@ export function createEngineRecalcService(args) {
130
133
  let jsCount = 0;
131
134
  let pendingKernelSyncCount = deferredKernelSyncCount;
132
135
  const volatileState = createRecalcVolatileState(args.now);
136
+ const calculationSettings = args.state.workbook.getCalculationSettings();
137
+ const iterationEnabled = calculationSettings.iterate === true;
138
+ const rawIterationCount = calculationSettings.iterateCount;
139
+ const iterationCount = typeof rawIterationCount === 'number' && Number.isSafeInteger(rawIterationCount) && rawIterationCount > 0
140
+ ? rawIterationCount
141
+ : DEFAULT_ITERATION_COUNT;
142
+ const parsedIterationDelta = typeof calculationSettings.iterateDelta === 'string' ? Number(calculationSettings.iterateDelta) : Number.NaN;
143
+ const iterationDelta = Number.isFinite(parsedIterationDelta) ? Math.abs(parsedIterationDelta) : DEFAULT_ITERATION_DELTA;
133
144
  let wasmProgramFlushed = false;
134
145
  const ensureWasmProgramFlushed = () => {
135
146
  if (wasmProgramFlushed) {
@@ -253,23 +264,71 @@ export function createEngineRecalcService(args) {
253
264
  pendingKernelSync[pendingKernelSyncCount] = cellIndex;
254
265
  pendingKernelSyncCount += 1;
255
266
  };
256
- const hasCycleDependency = (formula) => {
257
- for (let dependencyIndex = 0; dependencyIndex < formula.dependencyIndices.length; dependencyIndex += 1) {
258
- const dependencyCellIndex = formula.dependencyIndices[dependencyIndex];
259
- if (((args.state.workbook.cellStore.flags[dependencyCellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
260
- return true;
267
+ const noteQueuedSpillChanges = (changedCellIndices) => {
268
+ noteSpillChanges(changedCellIndices);
269
+ for (let spillIndex = 0; spillIndex < changedCellIndices.length; spillIndex += 1) {
270
+ queueKernelSync(changedCellIndices[spillIndex]);
271
+ }
272
+ };
273
+ const flushPendingWasmBatch = () => {
274
+ wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
275
+ wasmBatchCount = 0;
276
+ wasmBatchHasVolatile = false;
277
+ wasmBatchRandCount = 0;
278
+ };
279
+ const readStoredValue = (cellIndex) => args.state.workbook.cellStore.getValue(cellIndex, (id) => (id === 0 ? '' : args.state.strings.get(id)));
280
+ const clearDerivedFormulaFlags = (cellIndex) => {
281
+ const currentFlags = args.state.workbook.cellStore.flags[cellIndex] ?? 0;
282
+ const nextFlags = currentFlags & ~(64 /* CellFlags.SpillChild */ | 128 /* CellFlags.PivotOutput */);
283
+ if (nextFlags === currentFlags) {
284
+ return false;
285
+ }
286
+ args.state.workbook.cellStore.flags[cellIndex] = nextFlags;
287
+ return true;
288
+ };
289
+ const hasCycleDependency = (cellIndex) => {
290
+ let found = false;
291
+ args.forEachFormulaDependencyCell(cellIndex, (dependencyCellIndex) => {
292
+ if (!found && ((args.state.workbook.cellStore.flags[dependencyCellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
293
+ found = true;
261
294
  }
295
+ });
296
+ return found;
297
+ };
298
+ const materializeCycleFormulaError = (cellIndex) => {
299
+ const beforeValue = readStoredValue(cellIndex);
300
+ const spillChanges = args.clearOwnedSpill(cellIndex);
301
+ const flagsChanged = clearDerivedFormulaFlags(cellIndex);
302
+ const nextValue = errorValue(ErrorCode.Cycle);
303
+ if (!flagsChanged && spillChanges.length === 0 && areCellValuesEqual(beforeValue, nextValue)) {
304
+ return;
262
305
  }
263
- return false;
306
+ args.state.workbook.cellStore.setValue(cellIndex, nextValue);
307
+ args.state.workbook.notifyCellValueWritten(cellIndex);
308
+ queueKernelSync(cellIndex);
309
+ noteQueuedSpillChanges(spillChanges);
264
310
  };
265
- const materializeCycleDependentError = (cellIndex) => {
311
+ const seedCycleFormulaCell = (cellIndex) => {
312
+ const currentValue = readStoredValue(cellIndex);
313
+ if (currentValue.tag !== ValueTag.Error || currentValue.code !== ErrorCode.Cycle) {
314
+ return;
315
+ }
266
316
  const spillChanges = args.clearOwnedSpill(cellIndex);
267
- args.state.workbook.cellStore.setValue(cellIndex, errorValue(ErrorCode.Cycle));
317
+ clearDerivedFormulaFlags(cellIndex);
318
+ args.state.workbook.cellStore.setValue(cellIndex, emptyValue());
319
+ args.state.workbook.notifyCellValueWritten(cellIndex);
268
320
  queueKernelSync(cellIndex);
269
- noteSpillChanges(spillChanges);
270
- for (let spillIndex = 0; spillIndex < spillChanges.length; spillIndex += 1) {
271
- queueKernelSync(spillChanges[spillIndex]);
321
+ noteQueuedSpillChanges(spillChanges);
322
+ };
323
+ const cycleIterationDrift = (beforeValue, afterValue) => {
324
+ if (beforeValue.tag === ValueTag.Number && afterValue.tag === ValueTag.Number) {
325
+ if (Object.is(beforeValue.value, afterValue.value)) {
326
+ return 0;
327
+ }
328
+ const drift = Math.abs(afterValue.value - beforeValue.value);
329
+ return Number.isFinite(drift) ? drift : Number.POSITIVE_INFINITY;
272
330
  }
331
+ return areCellValuesEqual(beforeValue, afterValue) ? 0 : Number.POSITIVE_INFINITY;
273
332
  };
274
333
  const evaluateWasmSpillFormula = (cellIndex, formula) => {
275
334
  ensureWasmProgramFlushed();
@@ -305,37 +364,25 @@ export function createEngineRecalcService(args) {
305
364
  };
306
365
  args.state.workbook.cellStore.setValue(cellIndex, spillMaterialization.ownerValue, spillMaterialization.ownerValue.tag === ValueTag.String ? args.state.strings.intern(spillMaterialization.ownerValue.value) : 0);
307
366
  queueKernelSync(cellIndex);
308
- for (let spillIndex = 0; spillIndex < spillMaterialization.changedCellIndices.length; spillIndex += 1) {
309
- queueKernelSync(spillMaterialization.changedCellIndices[spillIndex]);
310
- }
311
- noteSpillChanges(spillMaterialization.changedCellIndices);
367
+ noteQueuedSpillChanges(spillMaterialization.changedCellIndices);
312
368
  return 1;
313
369
  };
314
- for (let index = 0; index < orderedCount; index += 1) {
315
- args.checkEvaluationBudget();
316
- const cellIndex = ordered[index];
317
- const formula = args.state.formulas.get(cellIndex);
318
- if (!formula) {
319
- continue;
320
- }
321
- if (((args.state.workbook.cellStore.flags[cellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
322
- continue;
370
+ const evaluateFormulaCell = (cellIndex, formula, options) => {
371
+ if (options.treatCycleFormulaAsError && ((args.state.workbook.cellStore.flags[cellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
372
+ jsCount += 1;
373
+ materializeCycleFormulaError(cellIndex);
374
+ return;
323
375
  }
324
- if (hasCycleDependency(formula)) {
376
+ if (options.allowCycleDependencyError && hasCycleDependency(cellIndex)) {
325
377
  jsCount += 1;
326
- materializeCycleDependentError(cellIndex);
327
- continue;
378
+ materializeCycleFormulaError(cellIndex);
379
+ return;
328
380
  }
329
381
  if (formula.directLookup !== undefined ||
330
382
  formula.directAggregate !== undefined ||
331
383
  formula.directScalar !== undefined ||
332
384
  formula.directCriteria !== undefined) {
333
- if (wasmBatchCount > 0) {
334
- wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
335
- wasmBatchCount = 0;
336
- wasmBatchHasVolatile = false;
337
- wasmBatchRandCount = 0;
338
- }
385
+ flushPendingWasmBatch();
339
386
  args.checkEvaluationBudget();
340
387
  const directLookupChanges = args.evaluateDirectLookupFormula(cellIndex);
341
388
  args.checkEvaluationBudget();
@@ -348,38 +395,112 @@ export function createEngineRecalcService(args) {
348
395
  (formula.directScalar !== undefined || formula.directAggregate !== undefined)) {
349
396
  jsCount += 1;
350
397
  }
351
- noteSpillChanges(directLookupChanges);
398
+ noteQueuedSpillChanges(directLookupChanges);
352
399
  queueKernelSync(cellIndex);
353
- continue;
400
+ return;
354
401
  }
355
402
  }
356
- if (formula.compiled.mode === FormulaMode.WasmFastPath && args.state.wasm.ready) {
403
+ if (!options.forceJs && formula.compiled.mode === FormulaMode.WasmFastPath && args.state.wasm.ready) {
357
404
  if (formula.compiled.producesSpill) {
358
- wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
359
- wasmBatchCount = 0;
360
- wasmBatchHasVolatile = false;
361
- wasmBatchRandCount = 0;
405
+ flushPendingWasmBatch();
362
406
  wasmCount += evaluateWasmSpillFormula(cellIndex, formula);
363
- continue;
407
+ return;
364
408
  }
365
409
  wasmBatch[wasmBatchCount] = cellIndex;
366
410
  wasmBatchCount += 1;
367
411
  wasmBatchHasVolatile = wasmBatchHasVolatile || formula.compiled.volatile;
368
412
  wasmBatchRandCount += formula.compiled.randCallCount;
369
- continue;
413
+ return;
370
414
  }
371
- wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
372
- wasmBatchCount = 0;
373
- wasmBatchHasVolatile = false;
374
- wasmBatchRandCount = 0;
415
+ flushPendingWasmBatch();
375
416
  jsCount += 1;
376
417
  args.checkEvaluationBudget();
377
418
  const spillChanges = args.evaluateUnsupportedFormula(cellIndex);
378
419
  args.checkEvaluationBudget();
379
- noteSpillChanges(spillChanges);
420
+ noteQueuedSpillChanges(spillChanges);
380
421
  queueKernelSync(cellIndex);
422
+ };
423
+ const evaluateCycleNode = (node) => {
424
+ for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
425
+ seedCycleFormulaCell(node.formulaCellIndices[formulaIndex]);
426
+ }
427
+ const previousValues = node.formulaCellIndices.map((cellIndex) => readStoredValue(cellIndex));
428
+ for (let iterationIndex = 0; iterationIndex < iterationCount; iterationIndex += 1) {
429
+ args.checkEvaluationBudget();
430
+ for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
431
+ const cellIndex = node.formulaCellIndices[formulaIndex];
432
+ const formula = args.state.formulas.get(cellIndex);
433
+ if (!formula) {
434
+ continue;
435
+ }
436
+ evaluateFormulaCell(cellIndex, formula, {
437
+ allowCycleDependencyError: false,
438
+ treatCycleFormulaAsError: false,
439
+ forceJs: true,
440
+ });
441
+ }
442
+ let converged = true;
443
+ for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
444
+ const cellIndex = node.formulaCellIndices[formulaIndex];
445
+ const currentValue = readStoredValue(cellIndex);
446
+ if (cycleIterationDrift(previousValues[formulaIndex], currentValue) > iterationDelta) {
447
+ converged = false;
448
+ }
449
+ previousValues[formulaIndex] = currentValue;
450
+ }
451
+ if (converged) {
452
+ break;
453
+ }
454
+ }
455
+ };
456
+ const cycleEvaluationNodes = iterationEnabled
457
+ ? buildCycleEvaluationNodes({
458
+ ordered,
459
+ orderedCount,
460
+ formulas: args.state.formulas,
461
+ cycleGroupIds: args.state.workbook.cellStore.cycleGroupIds,
462
+ forEachFormulaDependencyCell: args.forEachFormulaDependencyCell,
463
+ })
464
+ : undefined;
465
+ if (cycleEvaluationNodes) {
466
+ for (let nodeIndex = 0; nodeIndex < cycleEvaluationNodes.length; nodeIndex += 1) {
467
+ args.checkEvaluationBudget();
468
+ const node = cycleEvaluationNodes[nodeIndex];
469
+ if (node.kind === 'cycle') {
470
+ flushPendingWasmBatch();
471
+ evaluateCycleNode(node);
472
+ continue;
473
+ }
474
+ for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
475
+ const cellIndex = node.formulaCellIndices[formulaIndex];
476
+ const formula = args.state.formulas.get(cellIndex);
477
+ if (!formula) {
478
+ continue;
479
+ }
480
+ evaluateFormulaCell(cellIndex, formula, {
481
+ allowCycleDependencyError: false,
482
+ treatCycleFormulaAsError: false,
483
+ forceJs: false,
484
+ });
485
+ }
486
+ }
487
+ }
488
+ else {
489
+ for (let index = 0; index < orderedCount; index += 1) {
490
+ args.checkEvaluationBudget();
491
+ const cellIndex = ordered[index];
492
+ const formula = args.state.formulas.get(cellIndex);
493
+ if (!formula) {
494
+ continue;
495
+ }
496
+ evaluateFormulaCell(cellIndex, formula, {
497
+ allowCycleDependencyError: !iterationEnabled,
498
+ treatCycleFormulaAsError: !iterationEnabled,
499
+ forceJs: false,
500
+ });
501
+ }
381
502
  }
382
- wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
503
+ flushPendingWasmBatch();
383
504
  args.setDeferredKernelSyncCount(pendingKernelSyncCount);
384
505
  deferredKernelSyncCount = pendingKernelSyncCount;
385
506
  if (spillChangedRoots.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"recalc-service.js","sourceRoot":"","sources":["../../../src/engine/services/recalc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recalc-service.js","sourceRoot":"","sources":["../../../src/engine/services/recalc-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type CellValue, type WorkbookDefinedNameValueSnapshot } from '@bilig/protocol';
1
+ import { type CellValue, type WorkbookCalculationSettingsSnapshot, type WorkbookDefinedNameValueSnapshot } from '@bilig/protocol';
2
2
  import { type FormulaNode, type ReferenceOperand } from '@bilig/formula';
3
3
  import type { StringPool } from './string-pool.js';
4
4
  export interface MetadataResolutionContext {
@@ -7,6 +7,8 @@ export interface MetadataResolutionContext {
7
7
  resolveSpillReference: (sheetName: string | undefined, address: string) => FormulaNode | undefined;
8
8
  }
9
9
  export type MetadataFormulaValueContext = 'scalar' | 'array';
10
+ export declare function normalizeWorkbookCalculationSettings(settings: Partial<WorkbookCalculationSettingsSnapshot>, base?: WorkbookCalculationSettingsSnapshot): WorkbookCalculationSettingsSnapshot;
11
+ export declare function calculationSettingsEqual(left: WorkbookCalculationSettingsSnapshot, right: WorkbookCalculationSettingsSnapshot): boolean;
10
12
  export declare function definedNameValuesEqual(left: WorkbookDefinedNameValueSnapshot, right: WorkbookDefinedNameValueSnapshot): boolean;
11
13
  export declare function definedNameValueToCellValue(input: WorkbookDefinedNameValueSnapshot, stringPool: StringPool): CellValue;
12
14
  export declare function definedNameValueToReferenceOperand(input: WorkbookDefinedNameValueSnapshot): ReferenceOperand | undefined;
@@ -1,4 +1,4 @@
1
- import { ErrorCode } from '@bilig/protocol';
1
+ import { ErrorCode, } from '@bilig/protocol';
2
2
  import { parseCellAddress, parseFormula, renameFormulaSheetReferences } from '@bilig/formula';
3
3
  import { errorValue, literalToValue } from './engine-value-utils.js';
4
4
  import { normalizeDefinedName, normalizeWorkbookObjectName } from './workbook-store.js';
@@ -193,6 +193,55 @@ function maybeImplicitIntersectRangeName(node, valueContext) {
193
193
  args: [node],
194
194
  };
195
195
  }
196
+ function hasOwnCalculationSetting(settings, key) {
197
+ return Object.hasOwn(settings, key);
198
+ }
199
+ export function normalizeWorkbookCalculationSettings(settings, base) {
200
+ const normalized = {
201
+ mode: settings.mode ?? base?.mode ?? 'automatic',
202
+ compatibilityMode: settings.compatibilityMode ?? base?.compatibilityMode ?? 'excel-modern',
203
+ };
204
+ const dateSystem = hasOwnCalculationSetting(settings, 'dateSystem') ? settings.dateSystem : base?.dateSystem;
205
+ if (dateSystem !== undefined) {
206
+ normalized.dateSystem = dateSystem;
207
+ }
208
+ const iterate = hasOwnCalculationSetting(settings, 'iterate') ? settings.iterate : base?.iterate;
209
+ if (iterate !== undefined) {
210
+ normalized.iterate = iterate;
211
+ }
212
+ const iterateCount = hasOwnCalculationSetting(settings, 'iterateCount') ? settings.iterateCount : base?.iterateCount;
213
+ if (iterateCount !== undefined) {
214
+ normalized.iterateCount = iterateCount;
215
+ }
216
+ const iterateDelta = hasOwnCalculationSetting(settings, 'iterateDelta') ? settings.iterateDelta : base?.iterateDelta;
217
+ if (iterateDelta !== undefined) {
218
+ normalized.iterateDelta = iterateDelta;
219
+ }
220
+ const fullPrecision = hasOwnCalculationSetting(settings, 'fullPrecision') ? settings.fullPrecision : base?.fullPrecision;
221
+ if (fullPrecision !== undefined) {
222
+ normalized.fullPrecision = fullPrecision;
223
+ }
224
+ const fullCalcOnLoad = hasOwnCalculationSetting(settings, 'fullCalcOnLoad') ? settings.fullCalcOnLoad : base?.fullCalcOnLoad;
225
+ if (fullCalcOnLoad !== undefined) {
226
+ normalized.fullCalcOnLoad = fullCalcOnLoad;
227
+ }
228
+ const concurrentCalc = hasOwnCalculationSetting(settings, 'concurrentCalc') ? settings.concurrentCalc : base?.concurrentCalc;
229
+ if (concurrentCalc !== undefined) {
230
+ normalized.concurrentCalc = concurrentCalc;
231
+ }
232
+ return normalized;
233
+ }
234
+ export function calculationSettingsEqual(left, right) {
235
+ return (left.mode === right.mode &&
236
+ (left.compatibilityMode ?? 'excel-modern') === (right.compatibilityMode ?? 'excel-modern') &&
237
+ left.dateSystem === right.dateSystem &&
238
+ left.iterate === right.iterate &&
239
+ left.iterateCount === right.iterateCount &&
240
+ left.iterateDelta === right.iterateDelta &&
241
+ left.fullPrecision === right.fullPrecision &&
242
+ left.fullCalcOnLoad === right.fullCalcOnLoad &&
243
+ left.concurrentCalc === right.concurrentCalc);
244
+ }
196
245
  export function definedNameValuesEqual(left, right) {
197
246
  if (left === right) {
198
247
  return true;