@sheetxl/sdk 0.8.0-beta.11 → 0.8.0-beta.12

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 (191) hide show
  1. package/browser/esm/{BpgskG1Er_lGQ_yS.mjs → -Jx-jNHmtIQQfLvK.mjs} +1 -1
  2. package/browser/esm/{BLoUBId2xZpXAK_H.mjs → 2WuhYrIpYmOR5H73.mjs} +15 -15
  3. package/browser/esm/{Ctjb0SsxV4K4MMqG.mjs → 2mIwPy2D2JUX-9wx.mjs} +2 -2
  4. package/browser/esm/{CkxWugaJFjDGZNZ-.mjs → B3wf5vZCsWfWsDbj.mjs} +1 -1
  5. package/browser/esm/{BjkCiv5Jz6WYKZeu.mjs → BIHrHjRGWVlJglcp.mjs} +2 -2
  6. package/browser/esm/{BtvLTTfSBdAKplVG.mjs → BTFBedJMRWGvZyCE.mjs} +1 -1
  7. package/browser/esm/{C4MqfLn9Dm-l3OIk.mjs → BdCJNawfifyPupCP.mjs} +1 -1
  8. package/browser/esm/{CV5EGEjG5_-CPpP0.mjs → Bg5Di9GLNAkbqQ1P.mjs} +3 -3
  9. package/browser/esm/{C2VbEI_XVAoseAwa.mjs → BnC4-27Igwb8oDf2.mjs} +2 -2
  10. package/browser/esm/{CQYjO777cmAznUzK.mjs → Bt8_m94tBdks209L.mjs} +1 -1
  11. package/browser/esm/{C16ycKja6zG0crV_.mjs → BudSIfXBAsTxvu-K.mjs} +17836 -15712
  12. package/browser/esm/{DvAaxH6z_tGvrRzl.mjs → C9u8FUewte5ugUjH.mjs} +686 -686
  13. package/browser/esm/{DEiPS3Dr-s4fPbVZ.mjs → CBYMTDzMf1Vh7pkw.mjs} +1 -1
  14. package/browser/esm/{Dyq_ivuHvlXLwPCl.mjs → CNdjyofiRu6CYOrr.mjs} +1106 -1102
  15. package/browser/esm/{PcHFjNzQsE54POri.mjs → CRkYR-siY2C994KV.mjs} +1 -1
  16. package/browser/esm/{C5E6zSGAALWf61n4.mjs → CTe2qfmIUEad6FJv.mjs} +2 -2
  17. package/browser/esm/{BoV6zPBnfqCBCqZ7.mjs → CUzYuYTTGsChC_kZ.mjs} +3841 -3148
  18. package/browser/esm/CdEO8CEee6lEhabA.mjs +117 -0
  19. package/browser/esm/{S2dNNx1a5ydRnARM.mjs → CfRqiPDg6RBTg1EN.mjs} +2 -2
  20. package/browser/esm/{ClbvFbFzFzXLBKNN.mjs → CndRBvVfQUJIYRRj.mjs} +50 -50
  21. package/browser/esm/{BnG31I6Oj_HEtSPS.mjs → CwOPLXU3-9ZHGyOT.mjs} +1 -1
  22. package/browser/esm/{CHU6iu_WGlm7fLET.mjs → Cxjxk0ncRKx80I-w.mjs} +1 -1
  23. package/browser/esm/D2RZh0O9neOsyLAE.mjs +281 -0
  24. package/browser/esm/{BkBhLS0l6z8sxI6D.mjs → D64dM68B1pKYFzdP.mjs} +2 -2
  25. package/browser/esm/{BVDiOXGMc5_FMGfy.mjs → D9xNz46kAfXMZzp4.mjs} +2 -2
  26. package/browser/esm/{zlLuW405RSguy4Kn.mjs → DK899HhWX1HINMC1.mjs} +53 -53
  27. package/browser/esm/{B7aUIvgUjncMMD_i.mjs → DPhGQLNGmDZwODwJ.mjs} +5 -4
  28. package/browser/esm/{gssVX_FH1XFN-twD.mjs → DVroRnhi-5IDXNgM.mjs} +1 -1
  29. package/{node/esm/CZICGK_ss0HoGHCP.mjs → browser/esm/DZiivy0NmO1Vnyzk.mjs} +2 -2
  30. package/browser/esm/{ClPfI4lODvCece29.mjs → DgrAuRD2qr2DvFeJ.mjs} +61 -61
  31. package/browser/esm/{CU3DmJ-YnVVrC1_k.mjs → DobHLF6VjHr7Xi40.mjs} +1 -1
  32. package/browser/esm/{CaB7J-xgfKO2uAkG.mjs → DwZCT7DZiiXoTweg.mjs} +2 -2
  33. package/browser/esm/{BMyDRQ716j79h_bH.mjs → DwwR3O2sEZApPSTF.mjs} +6 -6
  34. package/browser/esm/{DLLE0FZNsKxbBzRn.mjs → Tah7cnFb_HNZdLtj.mjs} +45 -45
  35. package/browser/esm/{Dlmig06rIo7cInRk.mjs → fXWUMDhZ5yMSO629.mjs} +1 -1
  36. package/browser/esm/{DWNzqw7DUKwoxjri.mjs → hCQJcmIzPDxDEv2q.mjs} +2 -2
  37. package/browser/esm/index.mjs +679 -542
  38. package/browser/esm/{BFagR2JeWs74iAG3.mjs → qO-ujUrgq6H3TQix.mjs} +1 -1
  39. package/browser/esm/w6Jea0TiclPrYZ2M.mjs +1703 -0
  40. package/browser/esm/yuhcOYw6SHQ-RCm3.mjs +114 -0
  41. package/node/esm/-TA0MneBDKdGhsib.mjs +8668 -0
  42. package/node/esm/{B21JjOLghRoDOrkx.mjs → B-HUPAcqvK0eeeCz.mjs} +1 -1
  43. package/node/esm/{DNRhGK-8Tr9xcRyc.mjs → BL2iiEoqxDEV2Xrg.mjs} +3 -3
  44. package/node/esm/{D1TKBVmoKGAXf37B.mjs → BNXLOEddJ6O9gYws.mjs} +2 -2
  45. package/node/esm/{BrCKGFRsX_ezFJ4B.mjs → BSvOluusoDM4z_dx.mjs} +15 -15
  46. package/node/esm/{BIwObuhTJYf0jpUa.mjs → BskP3b8vUoIOGLY6.mjs} +2 -2
  47. package/node/esm/{2Kihw_-5lVTEnwMa.mjs → Btw4148Ot8ifhNc1.mjs} +1 -1
  48. package/node/esm/{BqiexuA89caYnAPz.mjs → C14-R6tifRh7pc0p.mjs} +1 -1
  49. package/node/esm/{DUTskXCXref-IJnI.mjs → C99zzq8DImQXi4BQ.mjs} +47 -47
  50. package/node/esm/{D8zEN-6ZdDqDvTxM.mjs → CBuEu5Jk-LfaDy-H.mjs} +61 -61
  51. package/node/esm/{yavzZOiZW_EjG9lE.mjs → CG-qBU5BAaVz7e-P.mjs} +1 -1
  52. package/node/esm/CPI58duc0j0a-HpJ.mjs +115 -0
  53. package/node/esm/{CCN5vD410obwdz38.mjs → CRt3vXe6YmXzqk3H.mjs} +15 -14
  54. package/node/esm/{CzXT00vrQa1_gvW9.mjs → C_aL7CGS1lrNn1Ng.mjs} +1 -1
  55. package/node/esm/{CZiqiay42tFTrLI4.mjs → C_xf5Bz30VqiJjXn.mjs} +1 -1
  56. package/node/esm/{BIRq1kT7lLRzns9t.mjs → CiIymQN6aJCul62g.mjs} +9 -9
  57. package/node/esm/{CNCNJNg890KdgkWh.mjs → Ci_zLYmCD7e-C79O.mjs} +1 -1
  58. package/{browser/esm/D5np__Jb1euAyaLw.mjs → node/esm/CkRYLed8Mmn3giNg.mjs} +2 -2
  59. package/node/esm/D3ptRKzASqBut1DE.mjs +117 -0
  60. package/node/esm/{cGwrLA1RCE-WhJ7w.mjs → D4ROK9UwDpS6jO3Z.mjs} +1 -1
  61. package/node/esm/{mFiBSM7XgBHV9AY7.mjs → D8hO07ToAibIuniw.mjs} +1535 -1531
  62. package/node/esm/{CDHdgJXH2vS71WMc.mjs → DUTmDHbFbhLDT4F3.mjs} +1 -1
  63. package/node/esm/{CGp6VZL-gZa9Uezx.mjs → DV5CU37aEbFbWFL0.mjs} +1 -1
  64. package/node/esm/{De2IONBxQhz-Qbyh.mjs → DdoiuKg9BKubtF1V.mjs} +1 -1
  65. package/node/esm/{Db0v7zXNnyjBIjjI.mjs → DggQ23jKMpwhENfa.mjs} +2 -2
  66. package/node/esm/{CwePQwTILHHjGDkZ.mjs → DhS6yWjrrSNIJMsn.mjs} +204 -204
  67. package/node/esm/{D_t5AUxSm7_icjzq.mjs → DhTya_mhmN53vskv.mjs} +1 -1
  68. package/node/esm/{DOU54VsOjG-m-NyQ.mjs → Dn1M7YWi25DeeYUb.mjs} +1 -1
  69. package/node/esm/{DkwIPzKc3UwdUIfM.mjs → DrCf6ITcBhVOFpRj.mjs} +6 -6
  70. package/node/esm/{D2KBymQJd1XhpeQD.mjs → DxazKtROyaI51dWl.mjs} +1 -1
  71. package/node/esm/{D6e2z7eZpxOJXHc7.mjs → Q_S1g46ZOTrdhTae.mjs} +1 -1
  72. package/node/esm/{OVfaSb506tNSIvbv.mjs → Vocy-I9dKzZMr0Ct.mjs} +19038 -16822
  73. package/node/esm/ZXPFcsT2zrALCZux.mjs +289 -0
  74. package/node/esm/{857CIBgQgGpnqrXk.mjs → eimUGjiIP-b8HiM6.mjs} +55 -55
  75. package/node/esm/{Bbf1Pm9Gk7YpLTvg.mjs → icn2nX5Z8e_3mNAv.mjs} +1 -1
  76. package/node/esm/index.mjs +740 -603
  77. package/node/esm/{Ct3h15sCus4Tgt6M.mjs → lGJ42sHqg5if2bba.mjs} +624 -616
  78. package/node/esm/{CdJHUJSBRHZoryPe.mjs → pYtP7wPyS96NQyXS.mjs} +59 -59
  79. package/package.json +6 -6
  80. package/resources/locales/de/model.msg.json +8 -2
  81. package/resources/locales/en/model.msg.json +9 -2
  82. package/types/scripting-api.json +10619 -10446
  83. package/types/scripting-enums.json +20 -1
  84. package/types/scripting.d.ts +1233 -296
  85. package/types/src/{sheet → anomalies}/_Anomalies.d.ts +3 -3
  86. package/types/src/anomalies/_FocusTable.d.ts +11 -0
  87. package/types/src/{sheet/_AnomalyFormulaChecks.d.ts → anomalies/_FormulaChecks.d.ts} +10 -2
  88. package/types/src/{sheet/_AnomalyLabelChecks.d.ts → anomalies/_LabelChecks.d.ts} +1 -1
  89. package/types/src/anomalies/_LiteralChecks.d.ts +35 -0
  90. package/types/src/anomalies/_SeriesChecks.d.ts +13 -0
  91. package/types/src/calculation/Calculation.d.ts +47 -9
  92. package/types/src/calculation/ExternalBookBindings.d.ts +2 -3
  93. package/types/src/calculation/ICalculation.d.ts +96 -9
  94. package/types/src/calculation/NamedFormulaCollection.d.ts +104 -8
  95. package/types/src/calculation/_CloneBoundary.d.ts +1 -1
  96. package/types/src/calculation/compiler/ASTTypes.d.ts +6 -2
  97. package/types/src/calculation/compiler/Types.d.ts +8 -0
  98. package/types/src/calculation/engine/CalcBackend.d.ts +104 -6
  99. package/types/src/calculation/executor/CalcExecutor.d.ts +73 -22
  100. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +17 -1
  101. package/types/src/calculation/executor/_WhatIf.d.ts +50 -0
  102. package/types/src/calculation/formula/FormulaBlock.d.ts +4 -3
  103. package/types/src/calculation/formula/IFormulaBlock.d.ts +5 -0
  104. package/types/src/calculation/functions/_DataTableFunction.d.ts +14 -0
  105. package/types/src/calculation/grid/CalcGrid.d.ts +4 -6
  106. package/types/src/calculation/grid/CalcGridBackend.d.ts +5 -27
  107. package/types/src/calculation/grid/CalcGridProxy.d.ts +0 -2
  108. package/types/src/calculation/grid/CalcGridUtils.d.ts +4 -2
  109. package/types/src/calculation/grid/ICalcGrid.d.ts +16 -12
  110. package/types/src/calculation/grid/_CalcRequest.d.ts +17 -5
  111. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +2 -0
  112. package/types/src/calculation/spatial/SpillEntry.d.ts +16 -2
  113. package/types/src/calculation/state/CalcNode.d.ts +0 -1
  114. package/types/src/calculation/state/CalcScope.d.ts +29 -0
  115. package/types/src/calculation/state/CalcState.d.ts +26 -4
  116. package/types/src/calculation/state/CalculationContext.d.ts +28 -1
  117. package/types/src/calculation/state/DeferredCalls.d.ts +260 -0
  118. package/types/src/calculation/state/IContextContainer.d.ts +20 -0
  119. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +6 -0
  120. package/types/src/calculation/state/_WhatIfLayer.d.ts +91 -0
  121. package/types/src/cell/ICell.d.ts +53 -34
  122. package/types/src/cellControl/CellControl.d.ts +67 -0
  123. package/types/src/cellControl/CellControlCollection.d.ts +29 -0
  124. package/types/src/cellControl/CellControlRegistry.d.ts +47 -0
  125. package/types/src/cellControl/ICellControl.d.ts +99 -0
  126. package/types/src/cellControl/ICellControlCollection.d.ts +67 -0
  127. package/types/src/cellControl/index.d.ts +4 -0
  128. package/types/src/cellRange/ICellRange.d.ts +207 -59
  129. package/types/src/cellRange/ICellRanges.d.ts +4 -3
  130. package/types/src/chart/layout/ChartLayout.d.ts +5 -1
  131. package/types/src/chart/resolve/_Resolve.d.ts +10 -0
  132. package/types/src/chart/resolve/_ResolvedChart.d.ts +5 -2
  133. package/types/src/collections/ISparseGrid.d.ts +11 -2
  134. package/types/src/collections/MixedTypedArrayList.d.ts +8 -2
  135. package/types/src/collections/SparseGrid.d.ts +3 -8
  136. package/types/src/condition/AnchoredConditional.d.ts +2 -2
  137. package/types/src/externalBook/IExternalBook.d.ts +3 -4
  138. package/types/src/fetch/Fetcher.d.ts +15 -0
  139. package/types/src/fetch/IFetcher.d.ts +47 -0
  140. package/types/src/fetch/_WorkbookFetch.d.ts +43 -0
  141. package/types/src/fetch/index.d.ts +3 -0
  142. package/types/src/fill/PaintUtils.d.ts +3 -1
  143. package/types/src/hyperlink/IHyperlink.d.ts +10 -0
  144. package/types/src/hyperlink/_Hyperlink.d.ts +4 -1
  145. package/types/src/index.d.ts +2 -1
  146. package/types/src/named/INamedCollection.d.ts +36 -0
  147. package/types/src/named/NamedCollection.d.ts +18 -0
  148. package/types/src/primitives/AsyncValue.d.ts +58 -0
  149. package/types/src/resource/IResource.d.ts +9 -0
  150. package/types/src/resource/IResourceCollection.d.ts +4 -0
  151. package/types/src/resource/Resource.d.ts +2 -0
  152. package/types/src/resource/_AddResource.d.ts +13 -0
  153. package/types/src/richData/CellImage.d.ts +95 -0
  154. package/types/src/richData/Hyperlink.d.ts +49 -0
  155. package/types/src/richData/IRichDataCollection.d.ts +76 -0
  156. package/types/src/richData/IRichDataKind.d.ts +55 -11
  157. package/types/src/richData/RichArray.d.ts +42 -0
  158. package/types/src/richData/RichDataCollection.d.ts +23 -0
  159. package/types/src/richData/RichDataRegistry.d.ts +46 -14
  160. package/types/src/richData/RichDataValues.d.ts +20 -0
  161. package/types/src/richData/RichRecord.d.ts +68 -0
  162. package/types/src/richData/RichText.d.ts +5 -5
  163. package/types/src/richData/index.d.ts +6 -0
  164. package/types/src/scripting/FunctionArguments.d.ts +17 -1
  165. package/types/src/scripting/FunctionCollection.d.ts +8 -0
  166. package/types/src/scripting/Scripts.d.ts +10 -0
  167. package/types/src/scripting/TypedFunction.d.ts +2 -0
  168. package/types/src/sheet/ICellContainerOptions.d.ts +6 -0
  169. package/types/src/sheet/IWorksheet.d.ts +24 -17
  170. package/types/src/sheet/SheetCell.d.ts +17 -1
  171. package/types/src/sheet/SheetRange.d.ts +8 -2
  172. package/types/src/sheet/SheetRanges.d.ts +2 -2
  173. package/types/src/sheet/Worksheet.d.ts +110 -56
  174. package/types/src/sheet/_ListenerAnchor.d.ts +7 -1
  175. package/types/src/sheet/_ScalarListFactory.d.ts +54 -6
  176. package/types/src/sheet/_SheetMutations.d.ts +4 -1
  177. package/types/src/sheet/_SheetStateTypes.d.ts +23 -11
  178. package/types/src/workbook/IWorkbook.d.ts +40 -1
  179. package/types/src/workbook/Workbook.d.ts +25 -3
  180. package/types/src/workbook/WorkbookRanges.d.ts +1 -1
  181. package/browser/esm/BGOFfpxr2jPIdqmV.mjs +0 -40
  182. package/browser/esm/f1IoRb7tEb0QmCSt.mjs +0 -110
  183. package/browser/esm/nvU0ClAbf0g94YBK.mjs +0 -1695
  184. package/node/esm/B084DssTcdBheTp_.mjs +0 -7966
  185. package/node/esm/Df1bL6VFvrqIdSLB.mjs +0 -40
  186. package/node/esm/DrTZbfemSLq2mseG.mjs +0 -111
  187. package/types/src/dataTable/DataTable.d.ts +0 -67
  188. package/types/src/dataTable/DataTableCollection.d.ts +0 -19
  189. package/types/src/dataTable/IDataTable.d.ts +0 -99
  190. package/types/src/dataTable/IDataTableCollection.d.ts +0 -18
  191. package/types/src/dataTable/index.d.ts +0 -6
@@ -20,7 +20,7 @@ export declare class CalcGridBackend extends CalcGridProxy implements ICalcGrid.
20
20
  _values: ISparseGrid<Scalar>;
21
21
  _spillSpatial: ISpatialMap<SpillEntry>;
22
22
  _errorSpatial: ISpatialMap<string>;
23
- _pendingSpatial: ISpatialMap<boolean>;
23
+ _calcStatusSpatial: ISpatialMap<ICalcGrid.CalcStatus>;
24
24
  _circularSpatial: ISpatialMap<CircularEntry>;
25
25
  _contentfulSpatial: ISpatialMap<ContentfulSpatialValue>;
26
26
  _notifyValues: ISpatialMap;
@@ -29,7 +29,7 @@ export declare class CalcGridBackend extends CalcGridProxy implements ICalcGrid.
29
29
  _notifySpillsInsert: ISpatialMap.Entry<SpillEntry>[];
30
30
  _notifySpillsRemove: IRange.Coords[];
31
31
  _notifyFormats: ISpatialMap;
32
- _notifyPending: ISpatialMap<boolean>;
32
+ _notifyCalcStatus: ISpatialMap<ICalcGrid.CalcStatus | false>;
33
33
  _notifyCircular: ISpatialMap<CircularEntry | false>;
34
34
  /**
35
35
  * Regions of this grid whose formula blocks were minted, re-imaged or removed since the last
@@ -77,7 +77,7 @@ export declare class CalcGridBackend extends CalcGridProxy implements ICalcGrid.
77
77
  protected _snapshots: Map<string, CalcGridSnapshot> | null;
78
78
  /**
79
79
  * The owner's callback for a record the engine pushed - a pass's results, a seed's. The one
80
- * place the response half of the boundary is crossed on the way out (plan step 6); every site
80
+ * place the response half of the boundary is crossed on the way out (DESIGN-CALC-SERVICE §11); every site
81
81
  * that pushes calls this rather than `_options.onCalculated`.
82
82
  */
83
83
  protected _onCalculated: (response: CalcResponse) => void;
@@ -307,29 +307,6 @@ export declare class CalcGridBackend extends CalcGridProxy implements ICalcGrid.
307
307
  * inspected; a name mentioned upstream is that cell's precedent. Engine primitive.
308
308
  */
309
309
  getNamedReferencesAt(coords: IRange.Coords): string[];
310
- /**
311
- * What a `graph` request asking about this grid's defined name answers: the name's precedents
312
- * or dependents, cells scoped by grid and names as nodes - ONE answer, as a cell's is.
313
- *
314
- * @remarks
315
- * The PRECEDENTS: the cell half is the ordinary precedent graph - a body is a real formula here,
316
- * and its references registered precedent ranges like any cell's. The name half is the body's
317
- * `getNamedIds`: apply-at-eval means a name the body reads has no precedent edge, so the symbol
318
- * list is the only carrier - one hop for `direct`, the downward closure (cycle-guarded) for the
319
- * deep form, each member contributing its own grid's cell walk. The deep form does not take the
320
- * symbol hop from UPSTREAM CELLS (`X = A1*2`, `A1 = SomeName`: `A1` is listed and `SomeName`'s
321
- * inputs are not) - that hop is `A1`'s, one step of a tree walk.
322
- *
323
- * The DEPENDENTS: two graphs meet, and the walk changes vehicles between them. The symbol edge -
324
- * which formulas mention this name - is not in the precedent spatial at all; it is the nameId
325
- * list each compiled block carries (`container.getNamedDependents`). The cell edge is the
326
- * precedent graph, which carries everything downstream of those blocks: `direct` is one hop of
327
- * the first; the deep form takes it, then hands each landing block to its grid. A block on a
328
- * grid that is no sheet is another NAME reading this one: a node, and the deep walk passes
329
- * THROUGH it on the symbol closure (`getNamedDependentNames`), or `Base`'s dependents would stop
330
- * at `Plus1`. This name is listed only when a true cycle leads back to it.
331
- */
332
- protected _nameGraphNow(kind: 'precedents' | 'dependents', direct: boolean): ICalcGrid.GraphNeighbors;
333
310
  /** The blank region of the body this grid holds, as data: see {@link ICalcGrid.Results.blankRegion}. */
334
311
  protected _blankRegion(): ICalcGrid.BlankRegion | null;
335
312
  /** The compiled block at a cell, or `null`. Engine-side: the model reads the vended view. */
@@ -338,6 +315,7 @@ export declare class CalcGridBackend extends CalcGridProxy implements ICalcGrid.
338
315
  getReferencesAt(row: number, column: number): ReferenceCoords[];
339
316
  /** What an `evaluate` request answers: the formula at the cell, evaluated now; `null` where there is none. */
340
317
  protected _evaluateNow(row: number, column: number, evalIndex?: number, coerce?: 'scalar'): Scalar | IRange | Promise<Scalar | IRange> | null;
318
+ protected _evaluateBlockNow(block: IFormulaBlock, row: number, column: number, evalIndex?: number, coerce?: 'scalar'): Scalar | IRange | Promise<Scalar | IRange> | null;
341
319
  /** What a `setReference` request does: the rewrite, and the write of the formula it makes. */
342
320
  protected _setReferenceNow(row: number, column: number, index: number, precedent: IRange.FixableCoords | IRange.FixableCellCoords | NamedReference | FormulaError.Ref): CalcResponse;
343
321
  /** What a `setReferenceMode` request does: refused for a reference that is not to cells. */
@@ -497,7 +475,7 @@ export interface CalcGridMaps {
497
475
  contentful: ISpatialMap<ContentfulSpatialValue>;
498
476
  spills: ISpatialMap<SpillEntry>;
499
477
  errors: ISpatialMap<string>;
500
- pending: ISpatialMap<boolean>;
478
+ calcStatus: ISpatialMap<ICalcGrid.CalcStatus>;
501
479
  circular: ISpatialMap<CircularEntry>;
502
480
  /** The size a `resize` gave, or `null` for the one the grid was made with. */
503
481
  entireCoords?: IRange.Coords | null;
@@ -96,8 +96,6 @@ export declare class CalcGridProxy implements ICalcGrid.Backend {
96
96
  * A question: an engine that holds no grid (`Off`) answers with nothing.
97
97
  */
98
98
  getGraphNeighborsAt(coords: IRange.Coords, kind: 'precedents' | 'dependents', direct: boolean): Promise<ICalcGrid.GraphNeighbors>;
99
- /** {@inheritDoc ICalcGrid.Backend.getNameGraph} */
100
- getNameGraph(kind: 'precedents' | 'dependents', direct: boolean): Promise<ICalcGrid.GraphNeighbors>;
101
99
  /**
102
100
  * {@inheritDoc ICalcGrid.isVolatileAt}
103
101
  *
@@ -1,6 +1,7 @@
1
1
  import { IRange, Scalar } from '@sheetxl/primitives';
2
2
  import { Tuple, ISparseGrid, ISpatialMap, ISpatialMap3D } from '../../collections';
3
3
  import { CalcNode } from '../state';
4
+ import { ICalcGrid } from './ICalcGrid';
4
5
  import { ContentfulSpatialValue, FormulaSpatialValue, SpillEntry, PrecedentSpatialValue, CircularEntry, PrecedentKind } from '../spatial';
5
6
  import { ReferenceCoords } from '../Types';
6
7
  export declare function anchorCompareValues(a: ISpatialMap.Entry<FormulaSpatialValue>, removing: ISpatialMap.Entry<FormulaSpatialValue>): boolean;
@@ -58,9 +59,10 @@ export declare function clearErrorIndex(errorSpatial: ISpatialMap<string>, coord
58
59
  * @remarks
59
60
  * This code will inline spill errors but spill results are handled in calculations.
60
61
  */
61
- export declare function applyContentful(cycleId: number, removes: readonly IRange.Coords[] | null | undefined, inserts: ISpatialMap.Entry[] | null | undefined, contentfulSpatial: ISpatialMap<ContentfulSpatialValue>, spillSpatial: ISpatialMap<SpillEntry>, values: ISparseGrid<Scalar>, addDirty?: (colStart: number, rowStart: number, colEnd: number, rowEnd: number) => void, notifyValuesSpatial?: ISpatialMap, notifySpills?: (insert: ISpatialMap.Entry<SpillEntry>, remove: ISpatialMap.Entry<SpillEntry>) => void, notifyPending?: ISpatialMap<boolean>, errorSpatial?: ISpatialMap<string>, // notifyErrorSpatial,
62
+ export declare function applyContentful(cycleId: number, removes: readonly IRange.Coords[] | null | undefined, inserts: ISpatialMap.Entry[] | null | undefined, contentfulSpatial: ISpatialMap<ContentfulSpatialValue>, spillSpatial: ISpatialMap<SpillEntry>, values: ISparseGrid<Scalar>, addDirty?: (colStart: number, rowStart: number, colEnd: number, rowEnd: number) => void, notifyValuesSpatial?: ISpatialMap, notifySpills?: (insert: ISpatialMap.Entry<SpillEntry>, remove: ISpatialMap.Entry<SpillEntry>) => void, notifyCalcStatus?: ISpatialMap<ICalcGrid.CalcStatus | false>, errorSpatial?: ISpatialMap<string>, // notifyErrorSpatial,
62
63
  isColumn?: boolean, notifyCalc?: boolean, // should notify. this is to differentiate between user set values and calc set values
63
- circularSpatial?: ISpatialMap<CircularEntry>): IRange.Coords | null;
64
+ circularSpatial?: ISpatialMap<CircularEntry>, // the circular index: a written cell leaves it, like errorSpatial
65
+ calcStatusSpatial?: ISpatialMap<ICalcGrid.CalcStatus>): IRange.Coords | null;
64
66
  /**
65
67
  * Creates a map from tuples
66
68
  *
@@ -116,7 +116,7 @@ export interface ICalcGrid {
116
116
  * @param transaction Read the record as this transaction sees it, its held writes not yet
117
117
  * made; the current record when omitted.
118
118
  */
119
- getPending(transaction?: ITransaction | null): ISpatialMap<boolean>;
119
+ getCalcStatus(transaction?: ITransaction | null): ISpatialMap<ICalcGrid.CalcStatus>;
120
120
  /**
121
121
  * Engine FAILURES by cell (a formula that could not be evaluated), as a message. Not error
122
122
  * VALUES - those are {@link getErrorValues}.
@@ -410,7 +410,7 @@ export declare namespace ICalcGrid {
410
410
  * the engine answers, and nothing the model holds for itself. The in-process engine grid is
411
411
  * one; a message-passing proxy under a worker is another.
412
412
  */
413
- type Backend = Omit<ICalcGrid, 'getStateId' | 'getEntireCoords' | 'getFormulaAt' | 'getFormulas' | 'getValues' | 'getContentful' | 'getSpills' | 'getPending' | 'getCalcErrors' | 'getCirculars' | 'getErrorValues' | 'getValuesEpoch' | 'getVolatileRegions' | 'getRangeStats'> & {
413
+ type Backend = Omit<ICalcGrid, 'getStateId' | 'getEntireCoords' | 'getFormulaAt' | 'getFormulas' | 'getValues' | 'getContentful' | 'getSpills' | 'getCalcStatus' | 'getCalcErrors' | 'getCirculars' | 'getErrorValues' | 'getValuesEpoch' | 'getVolatileRegions' | 'getRangeStats'> & {
414
414
  /** Write a body as authored; the engine anchors it (see {@link ICalcGrid.BodyOptions}). */
415
415
  setBody(options: ICalcGrid.BodyOptions): Promise<ICalcGrid.Results>;
416
416
  /** {@link ICalcGrid.evaluateAt} coerced to one scalar, as a defined name's `evaluate()` is. */
@@ -422,12 +422,6 @@ export declare namespace ICalcGrid {
422
422
  * last set; see `CalcGridBackend.getDemanded`. Evaluated by the next pass.
423
423
  */
424
424
  demand(rects: readonly IRange.Coords[]): void;
425
- /**
426
- * The graph around the defined name whose body this grid holds - its precedents or
427
- * dependents, cells in calc currency and names - as {@link ICalcGrid.getGraphNeighborsAt}
428
- * answers for cells.
429
- */
430
- getNameGraph(kind: 'precedents' | 'dependents', direct: boolean): Promise<ICalcGrid.GraphNeighbors>;
431
425
  };
432
426
  /**
433
427
  * A body written as it was authored, for a grid that holds one (a name's, a watch's): the engine
@@ -556,7 +550,7 @@ export declare namespace ICalcGrid {
556
550
  * @remarks
557
551
  * These are guaranteed to not overlap.
558
552
  */
559
- pendingUpdates?: ISpatialMap.Entry<boolean>[];
553
+ calcStatusUpdates?: ISpatialMap.Entry<ICalcGrid.CalcStatus | false>[];
560
554
  /**
561
555
  * Cells that entered or left a reference cycle (or the set downstream of one). A `null`
562
556
  * value is a removal.
@@ -609,6 +603,16 @@ export declare namespace ICalcGrid {
609
603
  /** For a paged region, the tiles this pass evaluated. */
610
604
  readonly evaluated?: readonly IRange.Coords[];
611
605
  }
606
+ /**
607
+ * Why a cell is in the calc-status index: its own function asked for a result that has not
608
+ * arrived (`Working`), or it was calculated from such a value and is calculated again when it
609
+ * arrives (`Waiting`). A removal travels as `false` in a delta.
610
+ */
611
+ const CalcStatus: {
612
+ readonly Working: 1;
613
+ readonly Waiting: 2;
614
+ };
615
+ type CalcStatus = typeof CalcStatus[keyof typeof CalcStatus];
612
616
  /**
613
617
  * Returns from `ICalcGrid.beginUpdates()`.
614
618
  *
@@ -620,7 +624,7 @@ export declare namespace ICalcGrid {
620
624
  values: ISparseGrid<Scalar>;
621
625
  spillSpatial: ISpatialMap<SpillEntry>;
622
626
  errorSpatial: ISpatialMap<string>;
623
- pendingSpatial: ISpatialMap<boolean>;
627
+ calcStatusSpatial: ISpatialMap<ICalcGrid.CalcStatus>;
624
628
  circularSpatial: ISpatialMap<CircularEntry>;
625
629
  contentfulSpatial: ISpatialMap<ContentfulSpatialValue>;
626
630
  notifyValues: ISpatialMap;
@@ -639,9 +643,9 @@ export declare namespace ICalcGrid {
639
643
  notifySpillsInsert: ISpatialMap.Entry<SpillEntry>[];
640
644
  notifySpillsRemove: IRange.Coords[];
641
645
  notifyFormats: ISpatialMap;
642
- notifyPending: ISpatialMap<boolean>;
646
+ notifyCalcStatus: ISpatialMap<ICalcGrid.CalcStatus | false>;
643
647
  notifyCircular: ISpatialMap<CircularEntry | false>;
644
- pendingConflating: ISpatialMap.IConflatingEntries<boolean> | null;
648
+ calcStatusConflating: ISpatialMap.IConflatingEntries<ICalcGrid.CalcStatus | false> | null;
645
649
  circularConflating: ISpatialMap.IConflatingEntries<CircularEntry | false> | null;
646
650
  errorRemovesConflating: ISpatialMap.IConflatingEntries<null> | null;
647
651
  errorInsertsConflating: ISpatialMap.IConflatingEntries<string> | null;
@@ -13,7 +13,7 @@ import { ICalcGrid } from './ICalcGrid';
13
13
  * @remarks
14
14
  * Not part of {@link ICalcGrid}: a caller sees the verbs and their promises. This is what the
15
15
  * in-process channel holds in place of a worker port's queue, and what the clone boundary audits
16
- * (plan step 6): a held call carries what the verb's arguments carry, which is what a proxy
16
+ * (DESIGN-CALC-SERVICE §11): a held call carries what the verb's arguments carry, which is what a proxy
17
17
  * would post.
18
18
  *
19
19
  * @internal Deliberately not exported from the barrel.
@@ -166,15 +166,13 @@ export type CalcRequest =
166
166
  }
167
167
  /**
168
168
  * The graph around cells of this grid, answered in the response (`ICalcGrid.GraphNeighbors`,
169
- * cells in calc currency). A question. `asName` walks the defined name this grid holds the body
170
- * of instead: its own precedents or dependents, cells and names.
169
+ * cells in calc currency). A question.
171
170
  */
172
171
  | {
173
172
  type: 'graph';
174
173
  kind: 'precedents' | 'dependents';
175
174
  direct: boolean;
176
- coords?: IRange.Coords;
177
- asName?: boolean;
175
+ coords: IRange.Coords;
178
176
  }
179
177
  /** Whether the formula at a cell is volatile, answered in the response. A question. */
180
178
  | {
@@ -215,6 +213,18 @@ export type CalcRequest =
215
213
  changes: readonly (readonly [id: string, name: NameSymbols | null])[];
216
214
  options?: ICalcGrid.RequestOptions;
217
215
  }
216
+ /**
217
+ * The graph around a defined name - its precedents or dependents, cells in calc currency and
218
+ * names - answered in the response (`ICalcGrid.GraphNeighbors`). A question of the service, not
219
+ * of the name's grid: its readers are found by its id, so a name that has not compiled is asked
220
+ * without making it a grid.
221
+ */
222
+ | {
223
+ type: 'nameGraph';
224
+ nameId: string;
225
+ kind: 'precedents' | 'dependents';
226
+ direct: boolean;
227
+ }
218
228
  /**
219
229
  * A nested savepoint of the model rolled back inside an operation that goes on: what the requests
220
230
  * made under it did goes with it. After them in the channel, so it undoes exactly those.
@@ -287,6 +297,8 @@ export type GridRequest = Exclude<CalcRequest, {
287
297
  type: 'tables';
288
298
  } | {
289
299
  type: 'names';
300
+ } | {
301
+ type: 'nameGraph';
290
302
  } | {
291
303
  type: 'rollback';
292
304
  } | {
@@ -428,6 +428,8 @@ export declare class FormulaSpatialValue implements IFormulaBlock, ISpatialMap.I
428
428
  getReferencedSymbolIds(): string[];
429
429
  /** {@inheritDoc IFormulaBlock.hasTotals} */
430
430
  hasTotals(): boolean;
431
+ /** {@inheritDoc IFormulaBlock.hasDataTable} */
432
+ hasDataTable(): boolean;
431
433
  /** {@inheritDoc IFormulaBlock.hasVolatile} */
432
434
  hasVolatile(): boolean;
433
435
  /** {@inheritDoc IFormulaBlock.isBlankCacheable} */
@@ -1,6 +1,7 @@
1
1
  import { IRange } from '@sheetxl/primitives';
2
2
  import { ITypes } from '../../type';
3
- import { ISpatialMap } from '../../collections';
3
+ import { ISpatialMap, ISpatialQuery } from '../../collections';
4
+ import { AsyncValue } from '../../primitives/AsyncValue';
4
5
  /**
5
6
  * Spill Entries are used to track the extent an array formula occupies.
6
7
  *
@@ -15,7 +16,15 @@ export declare class SpillEntry {
15
16
  private _c;
16
17
  private _k;
17
18
  private _cycleId;
18
- constructor(coords: IRange.Coords, cycleId: number, kind?: ITypes.FormulaArrayKind);
19
+ private _h;
20
+ /**
21
+ * @param holder The anchor's holder when the evaluation that laid the spill out deferred
22
+ * (DESIGN-ASYNC §4.4): the anchor cell holds the first element, so the entry carries what a
23
+ * scalar cell holds in its value, and moves and versions with the spill the same way.
24
+ */
25
+ constructor(coords: IRange.Coords, cycleId: number, kind?: ITypes.FormulaArrayKind, holder?: AsyncValue | null);
26
+ /** The anchor's holder, for a spill laid out by an evaluation that deferred; `null` otherwise. */
27
+ getHolder(): AsyncValue | null;
19
28
  getCycleId(): number;
20
29
  /** {@inheritDoc ITypes.FormulaArrayKind} */
21
30
  getKind(): ITypes.FormulaArrayKind;
@@ -52,4 +61,9 @@ export declare class SpillEntry {
52
61
  /** {@inheritDoc ISpatialMap.IUpdatableValue.getSplit} */
53
62
  getSplit(coords: [IRange.Coords, IRange.Coords], _axis: IRange.Axis): [this, this] | undefined;
54
63
  }
64
+ /**
65
+ * The holder of the spill anchored at (`row`, `col`), or `null` when no spill is anchored there
66
+ * or its evaluation did not defer. A blocked spill's entry is anchored too.
67
+ */
68
+ export declare const spillHolderAt: (spills: ISpatialQuery<SpillEntry> | null | undefined, row: number, col: number) => AsyncValue | null;
55
69
  //# sourceMappingURL=SpillEntry.d.ts.map
@@ -51,7 +51,6 @@ export interface CalcNodeExt {
51
51
  * and by `setInputs` with a `arrayFixed`; translated with the node when its block moves.
52
52
  */
53
53
  fixedRef: IRange.Coords | null;
54
- pendingPromise: Promise<any> | null;
55
54
  /**
56
55
  * The demand evaluation's result — finalized for the cell, or a pending promise — which
57
56
  * `doEvaluate` consumes in place of an `evaluateAt` of its own. Cleared once consumed.
@@ -1,4 +1,5 @@
1
1
  import { CalcNode } from './CalcNode';
2
+ import { DeferredCall } from './DeferredCalls';
2
3
  /**
3
4
  * A reused data structure passed to CalculationContext.
4
5
  *
@@ -70,6 +71,34 @@ export interface CalcScope {
70
71
  * before. Ignored when no seed is set.
71
72
  */
72
73
  drawIndex: number;
74
+ /**
75
+ * How many `IFormulaContext.defer` calls the backend has taken, ever.
76
+ *
77
+ * @remarks
78
+ * Never reset. A dispatch, or the executor around an evaluation, reads it before and compares
79
+ * after: a change means a body deferred inside, however deeply nested. Nothing else on the
80
+ * synchronous path reads it.
81
+ */
82
+ deferCount: number;
83
+ /**
84
+ * How many calls the evaluation in progress has deferred: the next call's ordinal, which is how
85
+ * a later evaluation of the same cell finds it. Back to `0` once the evaluation's calls are
86
+ * taken, which only an evaluation that deferred needs.
87
+ */
88
+ deferOrdinal: number;
89
+ /**
90
+ * Whether the formula's ROOT call deferred in the evaluation in progress. With one call in all,
91
+ * the cell's value is that call's answer and a settle needs no re-evaluation. Cleared with
92
+ * {@link deferOrdinal}.
93
+ */
94
+ deferRoot: boolean;
95
+ /**
96
+ * The call the last `defer` was served — the site's call standing for its payload — or `null`
97
+ * when that `defer` made a new one. The dispatch around the deferring body takes it and, when
98
+ * the call has a latest, answers that in place of the body's return. Cleared with
99
+ * {@link deferOrdinal}.
100
+ */
101
+ deferServed: DeferredCall | null;
73
102
  /**
74
103
  * Stable nameIds currently on the resolution stack — the cycle guard for named
75
104
  * formulas. A plain name re-entering itself (`X = X + 1`) is a circular reference.
@@ -23,10 +23,6 @@ export declare const CalcState: {
23
23
  readonly Removed: number;
24
24
  /** The node is in the pending spatial (the user has been given a pending status). */
25
25
  readonly Pending: number;
26
- /** A precedent evaluated to a pending value this pass, so the node keeps its cached value. */
27
- readonly PendingPrecedents: number;
28
- /** The node's promise resolved; the result waits in `cachedValue` for the next pass. */
29
- readonly PendingResolved: number;
30
26
  /**
31
27
  * The topological sort could not order the node this pass — it is in a reference cycle, or
32
28
  * downstream of one — so it was (or will be) evaluated by demand and `doEvaluate` takes its
@@ -82,6 +78,32 @@ export declare const CalcState: {
82
78
  * never needed for a right answer.
83
79
  */
84
80
  readonly Queued: number;
81
+ /**
82
+ * A precedent is pending with a value this pass: the node evaluates from that value, as any
83
+ * dependent does, and is pending with it.
84
+ */
85
+ readonly WaitingPrecedents: number;
86
+ /**
87
+ * The node is {@link Pending} with a value its dependents calculate from — it holds a call that
88
+ * has not answered, or was calculated from such a value — rather than holding them. Decided by
89
+ * each evaluation, so outside {@link PassMask}.
90
+ */
91
+ readonly PendingValue: number;
92
+ /**
93
+ * The node's one call answered with a shape its cell cannot take without the layout machinery
94
+ * — a range, or the cell is a spill anchor — and a settle seeded it (DESIGN-ASYNC §4.5): the
95
+ * settle pass takes the holder's latest in place of running the body and lays it out as any
96
+ * range result. Any other pass clears it and evaluates, since the node may be dirty for its own
97
+ * reasons. Outside {@link PassMask}: set between passes.
98
+ */
99
+ readonly ServeLatest: number;
100
+ /**
101
+ * The evaluation recorded a call of the cell's own that has not answered: the cell is working,
102
+ * not merely waiting on a precedent. Decided by each evaluation, so outside {@link PassMask}.
103
+ */
104
+ readonly OwnCall: number;
105
+ /** What the status index was last told, while {@link Pending}: working (set) or waiting (clear). */
106
+ readonly SentWorking: number;
85
107
  /** What the mark phase resets: everything a single pass decides. `Skip` and the shown role survive. */
86
108
  readonly PassMask: number;
87
109
  };
@@ -1,10 +1,11 @@
1
- import { IRange, ScalarType, FormulaError, Scalar, IReferenceRange, IFunction, IFormulaContext, IFunctionArguments, IRuntime } from '@sheetxl/primitives';
1
+ import { IRange, ScalarType, FormulaError, Scalar, IReferenceRange, IFunction, IFormulaContext, IFunctionArguments, IRuntime, IRichData } from '@sheetxl/primitives';
2
2
  import { FunctionProvider } from '@sheetxl/scripting';
3
3
  import { ITransaction } from '../../transaction';
4
4
  import { IFunctionCollection } from '../../scripting';
5
5
  import { Tuple } from '../../collections';
6
6
  import { IContextContainer } from './IContextContainer';
7
7
  import { CalcScope } from './CalcScope';
8
+ import { WhatIfTable } from '../executor/_WhatIf';
8
9
  import { ReadHook } from './_ReadObservedGrid';
9
10
  export declare class CalculationContext implements IFormulaContext {
10
11
  protected _instanceScope: any;
@@ -60,6 +61,22 @@ export declare class CalculationContext implements IFormulaContext {
60
61
  * hook is armed. See {@link _dynamicRead}.
61
62
  */
62
63
  _setDynamicReadHook(hook: ReadHook | null): void;
64
+ /**
65
+ * @hidden
66
+ * Disarms both read hooks and returns what they were, for {@link _restoreReadHooks}: a what-if
67
+ * evaluation reads plainly in the middle of a node that is itself observed.
68
+ */
69
+ _takeReadHooks(): [ReadHook | null, ReadHook | null];
70
+ /** @hidden Re-arms the hooks {@link _takeReadHooks} returned. */
71
+ _restoreReadHooks(hooks: [ReadHook | null, ReadHook | null]): void;
72
+ /**
73
+ * @hidden
74
+ * The grid id of the cell being evaluated and of an input reference, for `TABLE`: `null` for a
75
+ * reference whose sheet does not resolve.
76
+ */
77
+ _gridIdOfReference(coords: Readonly<IRange.Coords> | null): string | null;
78
+ /** @hidden The what-if results of a data table, for the `TABLE` node being evaluated. */
79
+ _evaluateWhatIf(table: WhatIfTable): Scalar[][] | null;
63
80
  /**
64
81
  * @hidden
65
82
  *
@@ -81,6 +98,12 @@ export declare class CalculationContext implements IFormulaContext {
81
98
  _createScoped(sheet: string): CalculationContext | null;
82
99
  /** @inheritdoc IFormulaContext.getFunction */
83
100
  getFunction(name: string): IFunction | null;
101
+ /**
102
+ * @hidden
103
+ * The function registry's stamp: a function {@link getFunction} returned stays the answer for its
104
+ * name while this is unchanged.
105
+ */
106
+ _getFunctionStamp(): number;
84
107
  /** @inheritdoc IFormulaContext.getNumberFormat */
85
108
  getNumberFormat(formatText: string, value: Scalar): string | null;
86
109
  /** @inheritdoc IFormulaContext.getEntireCoords */
@@ -89,6 +112,8 @@ export declare class CalculationContext implements IFormulaContext {
89
112
  getFormulaAt(row: number, column: number, sheetName?: string): string | null;
90
113
  /** @inheritdoc IFormulaContext.markVolatile */
91
114
  markVolatile(): void;
115
+ /** @inheritdoc IFormulaContext.defer */
116
+ defer(executor: IFormulaContext.DeferExecutor, payload?: unknown): unknown;
92
117
  /** @inheritdoc IFormulaContext.formatResults */
93
118
  formatResults(numFmt: string): void;
94
119
  /** @inheritdoc IFormulaContext.filterHidden */
@@ -205,6 +230,8 @@ export declare class CalculationContext implements IFormulaContext {
205
230
  toText(value: Scalar | undefined): string;
206
231
  /** @inheritdoc IFormulaContext.getRuntime */
207
232
  getRuntime(): IRuntime;
233
+ /** @inheritdoc IFormulaContext.createRichData */
234
+ createRichData(type: string, data?: any): IRichData;
208
235
  /** @inheritdoc IFormulaContext.getArgs */
209
236
  getArgs(): IFunctionArguments;
210
237
  get [Symbol.toStringTag](): string;