@sheetxl/sdk 0.8.0-beta.1 → 0.8.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/THIRD-PARTY-NOTICES.md +1 -1
  2. package/browser/cjs/4f5eoQQfV-V7LO2_.cjs +1 -0
  3. package/browser/cjs/BEnEDC1m546-gzWS.cjs +1 -0
  4. package/browser/cjs/CwCUa4IzGNGissLL.cjs +1 -0
  5. package/browser/cjs/{a0Z-SXs_N71CtqYb.cjs → Dg3GaW0QWwnlqetX.cjs} +1 -1
  6. package/browser/cjs/KWQPie2u7AP69web.cjs +93 -0
  7. package/browser/cjs/index.cjs +2 -2
  8. package/browser/esm/{B0HS42a7lga1k1U_.mjs → BJ9hcZAGY8Tj5_9L.mjs} +1 -1
  9. package/browser/esm/C8vpA2ZBtZf6w4nq.mjs +394 -0
  10. package/browser/esm/DDojiE2-oycJ7qGi.mjs +20 -0
  11. package/browser/esm/DEPT7zmpiMdZ-_qC.mjs +70253 -0
  12. package/browser/esm/DOvCi3lf49To36WP.mjs +8 -0
  13. package/browser/esm/{uyWBMSIxMlt8n5Z3.mjs → Dq3sc4B_HQHBrT5N.mjs} +2 -2
  14. package/browser/esm/index.mjs +871 -696
  15. package/browser/esm/{DlPMeIyxT9tG_WDk.mjs → trwZArJQQq7K9kL7.mjs} +2 -2
  16. package/licenses/dependencies.txt +204 -204
  17. package/node/esm/CGWsQOMWdnDeF4dX.mjs +8 -0
  18. package/node/esm/{Cku7XiUvw1xrRasi.mjs → CL9MI-b6D9BmtVXW.mjs} +1 -1
  19. package/node/esm/CressiwiIhxCVp1v.mjs +28 -0
  20. package/node/esm/O2cOO3xIynWUgOWe.mjs +403 -0
  21. package/node/esm/index.mjs +52356 -37345
  22. package/package.json +6 -7
  23. package/resources/locales/de/model.msg.json +45 -9
  24. package/resources/locales/en/model.msg.json +42 -9
  25. package/types/scripting-api.json +7093 -0
  26. package/types/scripting-enums.json +54 -8
  27. package/types/scripting.d.ts +7006 -1202
  28. package/types/src/anchored/AbstractAnchored.d.ts +18 -8
  29. package/types/src/anchored/AnchoredMap.d.ts +2 -0
  30. package/types/src/anchored/IAnchoredMap.d.ts +52 -4
  31. package/types/src/autoFill/AutoFill.d.ts +316 -32
  32. package/types/src/autoFill/IAutoFill.d.ts +232 -15
  33. package/types/src/border/{IBorder.d.ts → IBorders.d.ts} +41 -40
  34. package/types/src/border/index.d.ts +1 -1
  35. package/types/src/calculation/Calculation.d.ts +740 -35
  36. package/types/src/calculation/ExternalBookBindings.d.ts +118 -0
  37. package/types/src/calculation/FormulaText.d.ts +74 -0
  38. package/types/src/calculation/ICalculation.d.ts +318 -81
  39. package/types/src/calculation/INamedFormulasCollection.d.ts +5 -8
  40. package/types/src/calculation/NamedFormulaCollection.d.ts +139 -107
  41. package/types/src/calculation/NamedLambdaFunction.d.ts +28 -0
  42. package/types/src/calculation/TokenType.d.ts +9 -0
  43. package/types/src/calculation/Types.d.ts +83 -2
  44. package/types/src/calculation/_CloneBoundary.d.ts +80 -0
  45. package/types/src/calculation/compiler/ASTTypes.d.ts +58 -0
  46. package/types/src/calculation/compiler/CompilerUtils.d.ts +134 -12
  47. package/types/src/calculation/compiler/FormulaCompiler.d.ts +29 -4
  48. package/types/src/calculation/compiler/FormulaParser.d.ts +1 -2
  49. package/types/src/calculation/compiler/LiteTransform.d.ts +17 -0
  50. package/types/src/calculation/compiler/ParserUtils.d.ts +26 -1
  51. package/types/src/calculation/compiler/SRParser.d.ts +2 -1
  52. package/types/src/calculation/compiler/Types.d.ts +79 -9
  53. package/types/src/calculation/executor/CalcExecutor.d.ts +312 -33
  54. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +43 -2
  55. package/types/src/calculation/executor/CircularReference.d.ts +2 -0
  56. package/types/src/calculation/formula/Formula.d.ts +58 -21
  57. package/types/src/calculation/formula/FormulaBlock.d.ts +124 -21
  58. package/types/src/calculation/formula/FormulaRecordView.d.ts +79 -0
  59. package/types/src/calculation/formula/IFormulaBlock.d.ts +261 -67
  60. package/types/src/calculation/formula/LambdaValue.d.ts +15 -16
  61. package/types/src/calculation/formula/LazyValue.d.ts +96 -0
  62. package/types/src/calculation/formula/TokenUtils.d.ts +25 -1
  63. package/types/src/calculation/formula/index.d.ts +1 -0
  64. package/types/src/calculation/functions/FunctionDeclarations.d.ts +31 -0
  65. package/types/src/calculation/functions/initializeFunctions.d.ts +15 -2
  66. package/types/src/calculation/grid/CalcGrid.d.ts +384 -158
  67. package/types/src/calculation/grid/CalcGridBackend.d.ts +450 -0
  68. package/types/src/calculation/grid/CalcGridProxy.d.ts +133 -0
  69. package/types/src/calculation/grid/CalcGridUtils.d.ts +62 -12
  70. package/types/src/calculation/grid/FormulaEntry.d.ts +129 -0
  71. package/types/src/calculation/grid/FormulaHost.d.ts +236 -0
  72. package/types/src/calculation/grid/ICalcGrid.d.ts +456 -143
  73. package/types/src/calculation/grid/_CalcRequest.d.ts +272 -0
  74. package/types/src/calculation/grid/index.d.ts +4 -0
  75. package/types/src/calculation/index.d.ts +2 -0
  76. package/types/src/calculation/spatial/ContentfulSpatialValue.d.ts +6 -2
  77. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +339 -11
  78. package/types/src/calculation/spatial/SpillEntry.d.ts +20 -5
  79. package/types/src/calculation/spatial/TouchedWindows.d.ts +86 -0
  80. package/types/src/calculation/spatial/index.d.ts +1 -0
  81. package/types/src/calculation/state/CalcInputs.d.ts +41 -0
  82. package/types/src/calculation/state/CalcNode.d.ts +141 -30
  83. package/types/src/calculation/state/CalcScope.d.ts +37 -0
  84. package/types/src/calculation/state/CalcState.d.ts +22 -1
  85. package/types/src/calculation/state/CalculationContext.d.ts +36 -2
  86. package/types/src/calculation/state/IContextContainer.d.ts +129 -27
  87. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +163 -0
  88. package/types/src/calculation/state/_ReadObservedGrid.d.ts +74 -8
  89. package/types/src/calculation/state/index.d.ts +1 -0
  90. package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +80 -0
  91. package/types/src/calculation/symbol/ISymbolRegistry.d.ts +23 -0
  92. package/types/src/calculation/symbol/IndirectSymbolProvider.d.ts +16 -2
  93. package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +63 -3
  94. package/types/src/calculation/symbol/SymbolRegistry.d.ts +20 -0
  95. package/types/src/calculation/symbol/index.d.ts +3 -2
  96. package/types/src/cell/ICell.d.ts +78 -23
  97. package/types/src/cell/ICellProtection.d.ts +50 -10
  98. package/types/src/cellRange/ICellRange.d.ts +329 -72
  99. package/types/src/cellRange/ICellRanges.d.ts +9 -7
  100. package/types/src/chart/Chart.d.ts +72 -2
  101. package/types/src/chart/ChartCollection.d.ts +26 -0
  102. package/types/src/chart/IChart.d.ts +162 -9
  103. package/types/src/chart/IChartCollection.d.ts +25 -0
  104. package/types/src/chart/_ChartXml.d.ts +70 -0
  105. package/types/src/chart/index.d.ts +1 -3
  106. package/types/src/collections/ArraysGrid.d.ts +1 -1
  107. package/types/src/collections/IGrid.d.ts +1 -1
  108. package/types/src/collections/ISparseGrid.d.ts +9 -0
  109. package/types/src/collections/ISpatialMap.d.ts +59 -21
  110. package/types/src/collections/ImmutableList.d.ts +28 -0
  111. package/types/src/collections/MixedTypedArrayList.d.ts +168 -108
  112. package/types/src/collections/OverlappingRangeIterator.d.ts +13 -17
  113. package/types/src/collections/RepeatingList.d.ts +7 -0
  114. package/types/src/collections/ScalarGrid.d.ts +50 -0
  115. package/types/src/collections/SparseGrid.d.ts +1 -1
  116. package/types/src/collections/SpatialMap.d.ts +13 -21
  117. package/types/src/collections/Tuple.d.ts +128 -16
  118. package/types/src/collections/_GridUtils.d.ts +19 -6
  119. package/types/src/collections/_RangeSweep.d.ts +97 -0
  120. package/types/src/collections/_SpatialUtils.d.ts +20 -2
  121. package/types/src/collections/index.d.ts +1 -0
  122. package/types/src/comment/Comment.d.ts +159 -0
  123. package/types/src/comment/CommentCollection.d.ts +40 -0
  124. package/types/src/comment/IComment.d.ts +319 -48
  125. package/types/src/comment/ICommentCollection.d.ts +90 -0
  126. package/types/src/comment/_CommentUtils.d.ts +28 -0
  127. package/types/src/comment/index.d.ts +1 -0
  128. package/types/src/condition/AnchoredConditional.d.ts +76 -17
  129. package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +8 -7
  130. package/types/src/condition/BuiltInOperators/EqualToOperator.d.ts +2 -1
  131. package/types/src/condition/BuiltInOperators/ExpressionOperator.d.ts +3 -6
  132. package/types/src/condition/BuiltInOperators/InSetOperator.d.ts +1 -1
  133. package/types/src/condition/BuiltinSelectors/BaseSelector.d.ts +7 -0
  134. package/types/src/condition/BuiltinSelectors/ListSelector.d.ts +9 -0
  135. package/types/src/condition/Condition.d.ts +16 -0
  136. package/types/src/condition/ICondition.d.ts +86 -33
  137. package/types/src/condition/_ConditionFormula.d.ts +152 -0
  138. package/types/src/condition/_ConditionUtils.d.ts +73 -10
  139. package/types/src/conditionalFormat/ConditionalFormat.d.ts +21 -10
  140. package/types/src/conditionalFormat/ConditionalFormatCollection.d.ts +19 -8
  141. package/types/src/conditionalFormat/IConditionalFormat.d.ts +5 -3
  142. package/types/src/conditionalFormat/IConditionalFormatCollection.d.ts +2 -0
  143. package/types/src/dataValidation/DataValidation.d.ts +50 -3
  144. package/types/src/dataValidation/DataValidationCollection.d.ts +20 -9
  145. package/types/src/dataValidation/IDataValidation.d.ts +119 -30
  146. package/types/src/dataValidation/IDataValidationCollection.d.ts +10 -2
  147. package/types/src/date/DateUtils.d.ts +20 -0
  148. package/types/src/date/_DateUtils.d.ts +91 -7
  149. package/types/src/externalBook/ExternalBookCollection.d.ts +145 -12
  150. package/types/src/externalBook/ExternalBookName.d.ts +96 -0
  151. package/types/src/externalBook/IExternalBook.d.ts +170 -18
  152. package/types/src/externalBook/IExternalBookCollection.d.ts +79 -7
  153. package/types/src/externalBook/index.d.ts +1 -0
  154. package/types/src/fill/IStroke.d.ts +1 -1
  155. package/types/src/filter/IFilter.d.ts +29 -4
  156. package/types/src/font/IFont.d.ts +17 -0
  157. package/types/src/history/IHistory.d.ts +3 -2
  158. package/types/src/i18n/LanguagePack.d.ts +12 -4
  159. package/types/src/index.d.ts +3 -0
  160. package/types/src/io/AbstractBackingStore.d.ts +24 -1
  161. package/types/src/io/ArrayBackingStore.d.ts +1 -1
  162. package/types/src/io/EmbeddedPart.d.ts +20 -0
  163. package/types/src/io/IEmbeddedPart.d.ts +63 -0
  164. package/types/src/io/IWorkbookIO.d.ts +185 -18
  165. package/types/src/io/WorkbookIO.d.ts +9 -0
  166. package/types/src/io/WorkbookOrigin.d.ts +20 -11
  167. package/types/src/io/WorkbookOriginProvider.d.ts +46 -0
  168. package/types/src/io/_XmlFragment.d.ts +49 -0
  169. package/types/src/io/index.d.ts +1 -0
  170. package/types/src/lib/file/file.browser.d.ts +19 -5
  171. package/types/src/lib/file/file.node.d.ts +5 -0
  172. package/types/src/lib/utils/_Utils.d.ts +11 -0
  173. package/types/src/lib/utils/utils.browser.d.ts +9 -3
  174. package/types/src/license/license-key.d.ts +27 -0
  175. package/types/src/listener/IListener.d.ts +12 -7
  176. package/types/src/listener/ListenerEmitter.d.ts +46 -5
  177. package/types/src/model/AbstractModel.d.ts +14 -5
  178. package/types/src/movable/Control.d.ts +57 -0
  179. package/types/src/movable/IControl.d.ts +84 -0
  180. package/types/src/movable/IMovable.d.ts +23 -1
  181. package/types/src/movable/IMovableCollection.d.ts +2 -0
  182. package/types/src/movable/Movable.d.ts +4 -6
  183. package/types/src/movable/MovableCollection.d.ts +7 -7
  184. package/types/src/movable/index.d.ts +4 -0
  185. package/types/src/named/AbstractNamed.d.ts +1 -1
  186. package/types/src/named/INamed.d.ts +4 -1
  187. package/types/src/named/INamedCollection.d.ts +26 -0
  188. package/types/src/named/NamedCollection.d.ts +16 -15
  189. package/types/src/numFmt/BuiltInFormats.d.ts +15 -7
  190. package/types/src/numFmt/IFormatEngine.d.ts +2 -0
  191. package/types/src/numFmt/NumfmtFormatEngine.d.ts +2 -0
  192. package/types/src/person/IPerson.d.ts +99 -0
  193. package/types/src/person/IPersonCollection.d.ts +51 -0
  194. package/types/src/person/Person.d.ts +32 -0
  195. package/types/src/person/PersonCollection.d.ts +49 -0
  196. package/types/src/person/index.d.ts +3 -0
  197. package/types/src/picture/IPicture.d.ts +2 -0
  198. package/types/src/picture/Picture.d.ts +2 -0
  199. package/types/src/pivot/IPivotTable.d.ts +107 -0
  200. package/types/src/pivot/IPivotTableCollection.d.ts +25 -0
  201. package/types/src/pivot/PivotTable.d.ts +57 -0
  202. package/types/src/pivot/PivotTableCollection.d.ts +25 -0
  203. package/types/src/pivot/index.d.ts +6 -0
  204. package/types/src/primitives/CompositeRangeStats.d.ts +2 -0
  205. package/types/src/primitives/Criteria.d.ts +1 -1
  206. package/types/src/primitives/LambdaBrand.d.ts +21 -0
  207. package/types/src/primitives/PrimitiveUtils.d.ts +56 -19
  208. package/types/src/primitives/Range.d.ts +102 -24
  209. package/types/src/primitives/RangeStats.d.ts +24 -1
  210. package/types/src/primitives/ReferenceRange.d.ts +42 -0
  211. package/types/src/primitives/Runtime.d.ts +15 -2
  212. package/types/src/primitives/stats/FrequencyStats.d.ts +9 -0
  213. package/types/src/primitives/stats/LookupIndex.d.ts +46 -0
  214. package/types/src/primitives/stats/SortedNumbers.d.ts +2 -0
  215. package/types/src/primitives/stats/index.d.ts +1 -0
  216. package/types/src/print/IPrint.d.ts +0 -22
  217. package/types/src/protectedRange/IProtectedRange.d.ts +4 -0
  218. package/types/src/protectedRange/IProtectedRangeCollection.d.ts +2 -0
  219. package/types/src/protectedRange/ProtectedRange.d.ts +1 -4
  220. package/types/src/protectedRange/ProtectedRangeCollection.d.ts +19 -8
  221. package/types/src/protection/DefaultProtection.d.ts +12 -1
  222. package/types/src/protection/IProtection.d.ts +36 -2
  223. package/types/src/reference/ReferenceUtils.d.ts +80 -0
  224. package/types/src/reference/index.d.ts +2 -0
  225. package/types/src/resource/IResource.d.ts +21 -1
  226. package/types/src/resource/IResourceCollection.d.ts +9 -1
  227. package/types/src/resource/ResourceCollection.d.ts +6 -6
  228. package/types/src/scripting/FunctionCollection.d.ts +41 -11
  229. package/types/src/scripting/IFunctionCollection.d.ts +41 -0
  230. package/types/src/scripting/IModule.d.ts +25 -0
  231. package/types/src/scripting/IModuleCollection.d.ts +17 -0
  232. package/types/src/scripting/IScript.d.ts +18 -0
  233. package/types/src/scripting/Module.d.ts +34 -6
  234. package/types/src/scripting/ModuleCollection.d.ts +17 -12
  235. package/types/src/scripting/Runtime.d.ts +15 -0
  236. package/types/src/scripting/Scripts.d.ts +2 -0
  237. package/types/src/scripting/TypedFunction.d.ts +151 -18
  238. package/types/src/scripting/_FunctionIndex.d.ts +5 -0
  239. package/types/src/scripting/_ModuleUtils.d.ts +11 -1
  240. package/types/src/scripting/_ScriptUtils.d.ts +3 -0
  241. package/types/src/scripting/declarations.browser.d.ts +10 -0
  242. package/types/src/scripting/declarations.d.ts +49 -0
  243. package/types/src/scripting/declarations.node.d.ts +9 -0
  244. package/types/src/scripting/index.d.ts +3 -0
  245. package/types/src/selection/IRangeSelection.d.ts +9 -4
  246. package/types/src/selection/RangeSelection.d.ts +2 -0
  247. package/types/src/shape/IShape.d.ts +41 -3
  248. package/types/src/shape/Shape.d.ts +10 -0
  249. package/types/src/shape/_ShapeXml.d.ts +28 -0
  250. package/types/src/sheet/CellRegion.d.ts +6 -0
  251. package/types/src/sheet/ICellContainerOptions.d.ts +50 -0
  252. package/types/src/sheet/ISheet.d.ts +224 -41
  253. package/types/src/sheet/ISheetCollection.d.ts +2 -5
  254. package/types/src/sheet/NamedCellRange.d.ts +16 -7
  255. package/types/src/sheet/Sheet.d.ts +749 -114
  256. package/types/src/sheet/SheetCell.d.ts +81 -21
  257. package/types/src/sheet/SheetCollection.d.ts +19 -8
  258. package/types/src/sheet/SheetRange.d.ts +62 -14
  259. package/types/src/sheet/SheetRanges.d.ts +4 -6
  260. package/types/src/sheet/_CellBuffer.d.ts +214 -0
  261. package/types/src/sheet/_InvalidSheetRange.d.ts +5 -5
  262. package/types/src/sheet/_ListenerAnchor.d.ts +104 -0
  263. package/types/src/sheet/_RangeStateSweep.d.ts +16 -0
  264. package/types/src/sheet/_ScalarListFactory.d.ts +61 -0
  265. package/types/src/sheet/_SheetAutoFillUtils.d.ts +74 -0
  266. package/types/src/sheet/_SheetAutoFitUtils.d.ts +2 -2
  267. package/types/src/sheet/_SheetEvents.d.ts +43 -0
  268. package/types/src/sheet/_SheetFilterUtils.d.ts +32 -1
  269. package/types/src/sheet/_SheetIntents.d.ts +250 -0
  270. package/types/src/sheet/_SheetMutations.d.ts +179 -59
  271. package/types/src/sheet/_SheetStateReader.d.ts +16 -10
  272. package/types/src/sheet/_SheetStateTypes.d.ts +57 -73
  273. package/types/src/sheet/_SheetUtils.d.ts +2 -18
  274. package/types/src/sheet/_WatchAnchor.d.ts +93 -0
  275. package/types/src/sheet/spatial/HeldFormulaEntry.d.ts +36 -0
  276. package/types/src/sheet/spatial/index.d.ts +1 -0
  277. package/types/src/sheet/style/SheetCellStyle.d.ts +91 -64
  278. package/types/src/sheet/style/SheetDirectStyle.d.ts +16 -5
  279. package/types/src/sheet/style/_Resolvers.d.ts +5 -3
  280. package/types/src/sheet/style/_StyleUtils.d.ts +37 -7
  281. package/types/src/sheetHeader/ISheetHeader.d.ts +2 -0
  282. package/types/src/sheetHeader/SheetHeader.d.ts +14 -0
  283. package/types/src/sheetProtection/ISheetProtection.d.ts +41 -7
  284. package/types/src/sheetProtection/SheetProtection.d.ts +12 -0
  285. package/types/src/sheetView/ISheetView.d.ts +45 -1
  286. package/types/src/sheetView/SheetView.d.ts +11 -0
  287. package/types/src/slicer/ISlicer.d.ts +2 -0
  288. package/types/src/slicer/Slicer.d.ts +2 -0
  289. package/types/src/sort/ISort.d.ts +2 -0
  290. package/types/src/string/IStringCollection.d.ts +5 -0
  291. package/types/src/string/StringCollection.d.ts +6 -6
  292. package/types/src/style/INamedStyleCollection.d.ts +72 -0
  293. package/types/src/style/IStyle.d.ts +30 -10
  294. package/types/src/style/IStyleCollection.d.ts +63 -42
  295. package/types/src/style/ITableStyleCollection.d.ts +89 -0
  296. package/types/src/style/NamedStyleCollection.d.ts +39 -0
  297. package/types/src/style/StyleCollection.d.ts +41 -5
  298. package/types/src/style/TableStyleCollection.d.ts +49 -0
  299. package/types/src/style/_BuiltInStyleDefs.d.ts +3 -3
  300. package/types/src/style/index.d.ts +4 -0
  301. package/types/src/table/AnchoredTable.d.ts +644 -68
  302. package/types/src/table/AutoTable.d.ts +5 -5
  303. package/types/src/table/ITable.d.ts +228 -30
  304. package/types/src/table/ITableCollection.d.ts +2 -0
  305. package/types/src/table/TableCollection.d.ts +19 -8
  306. package/types/src/table/_FilterField.d.ts +7 -5
  307. package/types/src/table/_NamedTable.d.ts +17 -1
  308. package/types/src/table/_NamedTableSource.d.ts +1 -0
  309. package/types/src/table/_SortField.d.ts +2 -0
  310. package/types/src/table/_TableColumn.d.ts +13 -2
  311. package/types/src/table/_TableMessages.d.ts +1 -0
  312. package/types/src/table/_TableUtils.d.ts +40 -0
  313. package/types/src/text/Bullet.d.ts +4 -0
  314. package/types/src/text/ITextFrame.d.ts +25 -1
  315. package/types/src/text/TextBoxAlignment.d.ts +15 -6
  316. package/types/src/text/TextFrame.d.ts +4 -0
  317. package/types/src/text/TextLine.d.ts +4 -0
  318. package/types/src/text/TextParagraph.d.ts +4 -0
  319. package/types/src/text/TextRun.d.ts +9 -0
  320. package/types/src/text/TextStacked.d.ts +83 -0
  321. package/types/src/text/index.d.ts +1 -0
  322. package/types/src/theme/ITheme.d.ts +2 -0
  323. package/types/src/theme/IThemeCollection.d.ts +2 -0
  324. package/types/src/theme/ThemeCollection.d.ts +8 -7
  325. package/types/src/transaction/ITransaction.d.ts +238 -36
  326. package/types/src/transaction/Transaction.d.ts +99 -11
  327. package/types/src/type/AbstractCollection.d.ts +101 -0
  328. package/types/src/type/ICollection.d.ts +117 -0
  329. package/types/src/type/ITypes.d.ts +9 -7
  330. package/types/src/type/index.d.ts +1 -0
  331. package/types/src/utils/_CSSUtils.d.ts +3 -3
  332. package/types/src/workbook/IWorkbook.d.ts +171 -40
  333. package/types/src/workbook/Workbook.d.ts +103 -7
  334. package/types/src/workbook/_WorkbookIntents.d.ts +36 -0
  335. package/types/src/workbookProtection/IWorkbookProtection.d.ts +7 -0
  336. package/types/src/workbookProtection/WorkbookProtection.d.ts +3 -0
  337. package/types/src/workbookView/IWorkbookView.d.ts +12 -0
  338. package/types/src/workbookView/WorkbookView.d.ts +5 -0
  339. package/browser/cjs/BatsV2UUraVDCRXm.cjs +0 -57
  340. package/browser/cjs/CUz53T65cRGQRgvv.cjs +0 -33
  341. package/browser/cjs/DU0kYUtdFa3jK-im.cjs +0 -1
  342. package/browser/cjs/Dv4yIPLV98M5zLHa.cjs +0 -1
  343. package/browser/esm/6JKSOvc5czaQB2Bj.mjs +0 -109
  344. package/browser/esm/BtuJ9AGzeURtAsGo.mjs +0 -51241
  345. package/browser/esm/DGU6sM25u0EWCKl1.mjs +0 -824
  346. package/browser/esm/f2G3QRgEbvFJcoa2.mjs +0 -4436
  347. package/node/esm/-pxdn3M3tc6PLHs7.mjs +0 -114
  348. package/node/esm/0n5bslM9jhO1JnI2.mjs +0 -843
  349. package/types/src/cellRange/_GraphNode.d.ts +0 -38
  350. package/types/src/dataValidation/_Utils.d.ts +0 -10
  351. package/types/src/sheet/listener/RangesListener.d.ts +0 -32
  352. package/types/src/sheet/listener/RangesListenerEntry.d.ts +0 -19
  353. package/types/src/sheet/listener/index.d.ts +0 -3
@@ -1,43 +1,56 @@
1
1
  import { Scalar, FormulaError, IRange } from '@sheetxl/primitives';
2
2
  import { ISpatialMap } from '../../collections';
3
3
  import { PrecedentSpatialValue, FormulaSpatialValue } from '../spatial';
4
- export interface CalcNode {
5
- block: FormulaSpatialValue;
6
- gridId: string | null;
7
- colIndex: number;
8
- rowIndex: number;
9
- cycleId: number;
10
- markId: number;
11
- inDegree: number;
12
- /**
13
- * Cached result of a spatial search: all ISpatialMap.Entry<PrecedentSpatialValue> blocks whose formula ranges
14
- * overlap this cell.
15
- * Populated once during the mark phase (the BFS upward-walk), then reused by the topological sort to decrement.
16
- */
17
- dependents: ISpatialMap.Entry<PrecedentSpatialValue>[];
4
+ /**
5
+ * The fields of a node that only a MINORITY of nodes ever need: the ones a spill anchor, a cycle
6
+ * node, an async formula or an array-entered block carries. Allocated on first write
7
+ * ({@link calcNodeExt}) and `null` on every node that is none of those — which, in a real
8
+ * workbook, is nearly all of them.
9
+ *
10
+ * @remarks
11
+ * One object rather than one per feature. Three nullable pointers (spill, cycle, async) would
12
+ * cost three slots on every node to save nine, and would put three shapes behind the reads;
13
+ * one costs a single slot and leaves each `ext.*` site monomorphic, because a site is only
14
+ * reached once `ext !== null`.
15
+ *
16
+ * Every field here keeps the meaning it had on the node, so a reader that has an ext in hand
17
+ * reads it exactly as before. A reader that does NOT is reading a node with none of these
18
+ * features, and the defaults in {@link calcNodeExt} are what it would have found.
19
+ */
20
+ export interface CalcNodeExt {
18
21
  /**
19
- * Parallel to `precedents`. One slot per static precedent, in formula order.
20
- * Populated by the push model: after CalcNode N evaluates, N writes cachedValue into
21
- * each dependent D's inputs[entry.value.index]. Range-typed slots are filled by a
22
- * mid-cycle ReferenceRange (see doEvaluate range branch). Read by CalculationContext
23
- * during evaluateAt() to resolve formula argument values.
24
- * Undefined slots mean the precedent is a constant cell — CalculationContext falls back to the grid.
22
+ * The precedent entries that read this node's spill BODY — its extent minus the anchor cell.
23
+ * Recomputed by the mark phase, and never cached across passes: it is keyed by an extent the
24
+ * pass can change.
25
+ *
26
+ * @remarks
27
+ * Body cells hold the anchor's output but no formula of their own, so neither `dependents`
28
+ * (searched at the anchor cell) nor `formulaSpatial` (which has no body entry) knows their
29
+ * readers. These entries make the anchor stand in for its whole extent — both for discovery and
30
+ * for the in-degree/decrement pair, so a reader whose reference never touches the anchor is
31
+ * still ordered after it. Walked with `visitSpillBodyBlock`, which excludes the anchor cell's
32
+ * own readers so each edge is counted exactly once. See {@link spillRowEnd}.
25
33
  */
26
- inputs: (Scalar | IRange | IRange.Coords | undefined)[];
34
+ spillDependents: ISpatialMap.Entry<PrecedentSpatialValue>[];
27
35
  /**
28
- * Coordinate ranges for every static precedent in formula order, parallel to `inputs`.
29
- * Pre-filled at CalcNode construction from resolvedPrecedentsAt(cellRow, cellCol).
30
- * Errors (FormulaError.Known) appear where the reference resolves to an invalid range (#REF! etc.).
31
- * Read by CalculationContext for runtime value lookups and by the mark phase for inDegree computation.
36
+ * The bottom-right of the spill extent {@link spillDependents} was searched over; the top-left
37
+ * is the node's own position. `-1` whenever that list is empty — a node that does not spill, and
38
+ * equally one whose body nothing reads.
32
39
  */
33
- precedents: (IRange.Coords | FormulaError.Known)[];
40
+ spillRowEnd: number;
41
+ spillColEnd: number;
34
42
  /**
35
- * The cached value of the cell after evaluation.
43
+ * The extent of the array-entered (Ctrl+Shift+Enter) block this node anchors, or `null` for an
44
+ * ordinary formula. Absolute, unscoped.
36
45
  *
37
46
  * @remarks
38
- * This is `undefined` if not calculated.
47
+ * Carried on the node, not inferred from the cached value or the spill map: a fixed block's
48
+ * result is fitted to this extent — 1x1 for the overwhelming majority — so the cached value is a
49
+ * scalar and never says "spill". The executor's fixed branch selects on this alone; the
50
+ * `SpillEntry` it writes is the persisted image. Set at load from a `fixed` `formulaArray` entry
51
+ * and by `setInputs` with a `arrayFixed`; translated with the node when its block moves.
39
52
  */
40
- cachedValue: Scalar | IRange | undefined;
53
+ fixedRef: IRange.Coords | null;
41
54
  pendingPromise: Promise<any> | null;
42
55
  /**
43
56
  * The demand evaluation's result — finalized for the cell, or a pending promise — which
@@ -60,9 +73,102 @@ export interface CalcNode {
60
73
  /**
61
74
  * The cycle the sheet's circular index currently shows this cell in (`0` none) — what the last
62
75
  * commit wrote, so the next can write the delta. Persists across passes, unlike
63
- * {@link cycleGroup}; the role it shows is the `CalcState.ShownRoleMask` field of {@link state}.
76
+ * {@link cycleGroup}; the role it shows is the `CalcState.ShownRoleMask` field of
77
+ * `CalcNode.state`.
64
78
  */
65
79
  shownGroup: number;
80
+ }
81
+ /**
82
+ * The node's {@link CalcNodeExt}, created on first ask.
83
+ *
84
+ * @remarks
85
+ * Only ever called from a write path — a node acquiring one of the features the ext carries.
86
+ * A READ must go through `node.ext` and treat `null` as the defaults set here, so that reading a
87
+ * node never gives it an ext it does not need.
88
+ */
89
+ export declare const calcNodeExt: (node: CalcNode) => CalcNodeExt;
90
+ /**
91
+ * The node's static precedent edges, absolute — its own stored list, or the block's template
92
+ * materialized for its cell.
93
+ *
94
+ * @remarks
95
+ * A templated answer is the BLOCK's buffer and is valid only until the next ask (see
96
+ * `FormulaSpatialValue.getPrecedentsAt`): read it inside the loop that asked for it, and copy
97
+ * anything you intend to keep. Every consumer in the engine already does.
98
+ */
99
+ export declare const nodePrecedents: (node: CalcNode) => (IRange.Coords | FormulaError.Known)[];
100
+ /**
101
+ * How many input slots the node needs — one per static precedent.
102
+ *
103
+ * @remarks
104
+ * Read off the stored list where there is one, and off the block's template where there is not,
105
+ * so the count never has to materialize a cell's edges. The two agree: a template contributes one
106
+ * edge per root reference at every cell.
107
+ */
108
+ export declare const nodeParamLength: (node: CalcNode) => number;
109
+ export interface CalcNode {
110
+ block: FormulaSpatialValue;
111
+ gridId: string | null;
112
+ colIndex: number;
113
+ rowIndex: number;
114
+ cycleId: number;
115
+ markId: number;
116
+ inDegree: number;
117
+ /**
118
+ * Cached result of a spatial search: all ISpatialMap.Entry<PrecedentSpatialValue> blocks whose formula ranges
119
+ * overlap this cell.
120
+ * Populated once during the mark phase (the BFS upward-walk), then reused by the topological sort to decrement.
121
+ */
122
+ dependents: ISpatialMap.Entry<PrecedentSpatialValue>[];
123
+ /**
124
+ * Where this node's input slots start in the pass's shared arena (`CalcInputs`), or `-1` for a
125
+ * node with no precedents — and for one no mark phase has reached, whose slots would be read as
126
+ * empty and fall through to the grid.
127
+ *
128
+ * @remarks
129
+ * One slot per static precedent, in formula order — `precedents.length` of them, the same
130
+ * parallel the per-node array had. Populated by the push model: after CalcNode N evaluates, N
131
+ * writes its cached value into each dependent D's slot `entry.value.index`. Range-typed slots
132
+ * are filled by a mid-cycle ReferenceRange (see doEvaluate range branch). Read by
133
+ * CalculationContext during evaluateAt() to resolve formula argument values. An empty slot means
134
+ * the precedent is a constant cell — CalculationContext falls back to the grid.
135
+ *
136
+ * The slots live in the arena rather than in an array per node because they are pass scratch:
137
+ * cleared by the mark phase, written and read within the one pass, and never read between
138
+ * passes. A million nodes holding a two-element array each is a million allocations, and none
139
+ * of them survives the pass that fills it.
140
+ */
141
+ inputsAt: number;
142
+ /**
143
+ * Coordinate ranges for every static precedent in formula order, parallel to the node's arena
144
+ * slots — or `null` when the block carries a precedent TEMPLATE and the edges are materialized
145
+ * on demand instead. Read through {@link nodePrecedents}, never directly.
146
+ *
147
+ * @remarks
148
+ * Where it is set, it is pre-filled at CalcNode construction from
149
+ * `resolvedPrecedentsAt(cellRow, cellCol)`, and errors (FormulaError.Known) appear where the
150
+ * reference resolves to an invalid range (#REF! etc.). Read by CalculationContext for runtime
151
+ * value lookups and by the mark phase for inDegree computation.
152
+ *
153
+ * `null` is the common case: a formula whose references are plain A1 refs has the same edges at
154
+ * every cell of its block, at that cell's own offset, so the block keeps ONE relative template
155
+ * and one buffer rather than an array of fresh coord objects per cell. See
156
+ * `IFormulaBlock.getPrecedentTemplate`.
157
+ */
158
+ precedents: (IRange.Coords | FormulaError.Known)[] | null;
159
+ /**
160
+ * The cached value of the cell after evaluation.
161
+ *
162
+ * @remarks
163
+ * This is `undefined` if not calculated.
164
+ */
165
+ cachedValue: Scalar | IRange | undefined;
166
+ /**
167
+ * The number format a function supplied for this cell's result during its evaluation
168
+ * (`IFormulaContext.formatResults`), held until the results are written and reported
169
+ * (`ICalcGrid.Results.formatInserts`); `null` when none did. Cleared by the write.
170
+ */
171
+ numFmt: string | null;
66
172
  /**
67
173
  * Position of this node in the last FULLY-ORDERED plan that stamped it (CALC-PERFORMANCE-PLAN.md
68
174
  * §1.2). Meaningful only when {@link planId} and {@link planEpoch} match the executor's current
@@ -94,5 +200,10 @@ export interface CalcNode {
94
200
  * pass on purpose.
95
201
  */
96
202
  state: number;
203
+ /**
204
+ * The spill / cycle / async / array-entered fields, or `null` on a node that is none of those.
205
+ * See {@link CalcNodeExt}; write through {@link calcNodeExt}, read defensively.
206
+ */
207
+ ext: CalcNodeExt | null;
97
208
  }
98
209
  //# sourceMappingURL=CalcNode.d.ts.map
@@ -24,6 +24,43 @@ export interface CalcScope {
24
24
  * 0 for an ordinary cell. Enforces the LAMBDA recursion limit (Step 14).
25
25
  */
26
26
  depth: number;
27
+ /**
28
+ * The implicit-intersection mode of the call being dispatched — `true` is Excel's VALUE mode,
29
+ * `false` ARRAY mode. Copied from the call node's compile-time annotation
30
+ * (`ASTNode.implicitIntersect`) around each dispatch by `FormulaBlock._callFunction`, read
31
+ * through `IFormulaContext.isImplicitIntersect`.
32
+ */
33
+ implicitIntersect: boolean;
34
+ /**
35
+ * Whether the call being dispatched is under a first-cell demand: only element `[0,0]` of its
36
+ * result is read, so a lift builds that one element. `true` only inside a block whose cells are
37
+ * each their own 1x1 array-entered extent (`FormulaSpatialValue.arrayFirstCell`), for a call the
38
+ * compiler annotated (`ASTNode.firstCell`). Set around each dispatch by
39
+ * `FormulaBlock._callFunction` and taken by the typed dispatch on entry
40
+ * (`CalculationContext._takeFirstCell`), so a body that calls another function directly never
41
+ * inherits it.
42
+ */
43
+ firstCell: boolean;
44
+ /**
45
+ * Set when the evaluation read something that is PER CELL rather than a property of its inputs
46
+ * — a random draw (`IFormulaContext.getRandom`), a position (`getRow`, `getColumn`, `getFormulaAt`,
47
+ * `getSheetIndex`, a reference's `getCoords`), or a reference it computed (a dynamic precedent)
48
+ * — so its answer cannot stand in for another cell's even when the two cells' inputs are
49
+ * identical. Cleared by whoever evaluates a cell as the representative of a block's blank
50
+ * region and read at its finalize (PLAN-WATCHES-BLANK-AWARE §4); a cell evaluated on its own
51
+ * behalf never reads it.
52
+ */
53
+ perCellRead: boolean;
54
+ /**
55
+ * How many draws (`IFormulaContext.getRandom`) this evaluation has taken, from `0`.
56
+ *
57
+ * @remarks
58
+ * A seeded draw is keyed by the cell and the pass, so a cell taking two of them — `RAND()+RAND()`,
59
+ * or one per element of a `RANDARRAY` — needs something to tell them apart. Reset wherever an
60
+ * evaluation begins, alongside `rowIndex`/`colIndex`, so a retried cell draws what it drew
61
+ * before. Ignored when no seed is set.
62
+ */
63
+ drawIndex: number;
27
64
  /**
28
65
  * Stable nameIds currently on the resolution stack — the cycle guard for named
29
66
  * formulas. A plain name re-entering itself (`X = X + 1`) is a circular reference.
@@ -34,7 +34,8 @@ export declare const CalcState: {
34
34
  */
35
35
  readonly Circular: number;
36
36
  /**
37
- * A `Waiting` node the evaluation in progress has read under iterative calculation — it is in
37
+ * A `Waiting` node — or a finished member of a cycle that is still open — the evaluation in
38
+ * progress has read under iterative calculation: it is in
38
39
  * the executor's hit list already, so a second read of it in the same evaluation adds nothing.
39
40
  * Cleared when the list is consumed.
40
41
  */
@@ -51,6 +52,26 @@ export declare const CalcState: {
51
52
  * clears this when it empties the roster.
52
53
  */
53
54
  readonly Rostered: number;
55
+ /**
56
+ * A `CycleRole.Downstream` node that iterative calculation sweeps with the members, because a
57
+ * swept node reads it: it lies between two cycles, so it is in neither and still has to move
58
+ * with them. In the executor's sweep list already.
59
+ */
60
+ readonly Swept: number;
61
+ /**
62
+ * Pushed onto the demand stack by the PREFETCH of a `NeedsFirst` rather than by a read: the
63
+ * reader may never read it (an untaken `IF` arm names a cell without reading it), so its own
64
+ * reads may not decide anything about the reader. A node the prefetch pushes and a read then
65
+ * asks for loses the flag. Cleared when the node finishes, or when it is put back unevaluated.
66
+ */
67
+ readonly Prefetched: number;
68
+ /**
69
+ * `Unevaluated` and on the demand stack already, below the node being evaluated: it will be
70
+ * reached, so a prefetch does not push it again. Cleared when its evaluation starts. May outlive
71
+ * its entry (a cycle unwinds the stack past queued nodes); that only skips a prefetch, which is
72
+ * never needed for a right answer.
73
+ */
74
+ readonly Queued: number;
54
75
  /** What the mark phase resets: everything a single pass decides. `Skip` and the shown role survive. */
55
76
  readonly PassMask: number;
56
77
  };
@@ -12,6 +12,11 @@ export declare class CalculationContext implements IFormulaContext {
12
12
  protected _calcScope: CalcScope;
13
13
  protected _functions: IFunctionCollection;
14
14
  protected _container: IContextContainer;
15
+ /** The key parts of a draw that are not the cell itself — see {@link getRandom}. */
16
+ protected _passSeed: number;
17
+ protected _passCycleId: number;
18
+ protected _gridKey: number;
19
+ protected _gridKeyId: string | null;
15
20
  protected _axis: IRange.Axis;
16
21
  protected _coerceToNumber: (value: Scalar, fromType: ScalarType, options?: IFormulaContext.ParseNumberOptions) => Scalar;
17
22
  protected _functionProviders?: readonly FunctionProvider[];
@@ -31,6 +36,13 @@ export declare class CalculationContext implements IFormulaContext {
31
36
  * is seen (DESIGN-CIRCULAR-CALC.md §5); `null` outside a pass.
32
37
  */
33
38
  protected _dynamicRead: ReadHook | null;
39
+ /**
40
+ * Marks the evaluation in progress as having read something PER CELL — a position — so its
41
+ * answer cannot stand in for another cell's (`CalcScope.perCellRead`). One closure for the
42
+ * context's lifetime: every reference it builds is handed this for its `getCoords`, and the
43
+ * context's own position accessors call it directly.
44
+ */
45
+ protected readonly _positionRead: () => void;
34
46
  constructor(container: IContextContainer, axis?: IRange.Axis, functionProviders?: readonly FunctionProvider[]);
35
47
  /** @hidden */
36
48
  _setInstanceScope(instanceScope: any): void;
@@ -99,22 +111,44 @@ export declare class CalculationContext implements IFormulaContext {
99
111
  getSerialDate(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millis?: number): number;
100
112
  /** @inheritdoc IFormulaContext.getNow */
101
113
  getNow(): number;
114
+ /** @inheritdoc IFormulaContext.getRandom */
115
+ getRandom(): number;
102
116
  /** @inheritdoc IFormulaContext.compare */
103
117
  compare(a: Scalar, b: Scalar, options?: Intl.CollatorOptions): number;
104
- protected _fromTuples(boundedTuples: Tuple.BoundedTuples<Scalar>, type?: ScalarType | null, isLiteral?: boolean, isDirectScalar?: boolean): IRange | null;
118
+ protected _fromTuples(boundedTuples: Tuple.Region<Scalar>, type?: ScalarType | null, isLiteral?: boolean, isDirectScalar?: boolean): IRange | null;
105
119
  /** @inheritdoc IFormulaContext.getValueAt */
106
120
  getValueAt(rowIndex: number, colIndex: number, sheetName?: string | null, options?: IRange.ValueOptions): Scalar | null;
107
121
  /** @inheritdoc IFormulaContext.getSpillAt */
108
122
  getSpillAt(rowIndex: number, colIndex: number, sheetName?: string): IReferenceRange | null;
109
123
  /** @inheritdoc IFormulaContext.createRange */
110
124
  createRange<TS extends Scalar = Scalar>(rows?: number, columns?: number, values?: Scalar | Scalar[][] | ((value: TS, coords: IRange.CellCoords, range: IRange<TS>) => TS)): IRange;
125
+ /** @inheritdoc IFormulaContext.flattenAreas */
126
+ flattenAreas(value: IRange | IRange[]): IRange;
111
127
  getRange(value: Scalar | Scalar[][], type?: ScalarType | null, isLiteral?: boolean): IRange;
112
128
  /** @inheritdoc IFormulaContext.getRow */
113
129
  getRow(): number;
114
130
  /** @inheritdoc IFormulaContext.getColumn */
115
131
  getColumn(): number;
132
+ /** @inheritdoc IFormulaContext.isImplicitIntersect */
133
+ isImplicitIntersect(): boolean;
134
+ /**
135
+ * Whether the call being dispatched is under a first-cell demand (`CalcScope.firstCell`), and
136
+ * clears it: the demand is the dispatched call's own, and a body that calls another function
137
+ * directly must not inherit it. Engine-internal; no body reads it.
138
+ */
139
+ _takeFirstCell(): boolean;
116
140
  /** @inheritdoc IFormulaContext.getReference */
117
141
  getReference(coords: IRange.Coords | string, r1c1?: boolean): IReferenceRange;
142
+ /**
143
+ * @internal
144
+ * A reference whose scope is a 3-D span, as its member areas — one coords per sheet it covers, in
145
+ * tab order, marked `isSheetSpan` — or `null` for any other value.
146
+ *
147
+ * @remarks
148
+ * The marshaller asks this before its union rules, so a span is flattened, handed whole or refused
149
+ * exactly where a union would be, and a body that reads the mark (`SHEETS`) still can.
150
+ */
151
+ _expandSheetSpan(value: any): IRange.Coords[] | null;
118
152
  /** @inheritdoc IFormulaContext.getResizedReference */
119
153
  getResizedReference(anchor: Readonly<IRange.Coords>, rowCount: number, colCount: number): IReferenceRange;
120
154
  /**
@@ -151,7 +185,7 @@ export declare class CalculationContext implements IFormulaContext {
151
185
  parseAsNumber(textOrNumber: Scalar, options?: IFormulaContext.ParseNumberOptions): number;
152
186
  parseAsNumber(textOrNumber: Scalar | undefined, options?: IFormulaContext.ParseNumberOptions): number | undefined;
153
187
  /** @inheritdoc IFormulaContext.createCriteria */
154
- createCriteria(criteria: Scalar): IFormulaContext.CriteriaEvaluator;
188
+ createCriteria(criteria: Scalar, options?: IFormulaContext.CriteriaOptions): IFormulaContext.CriteriaEvaluator;
155
189
  /** @inheritdoc IFormulaContext.parseAsLiteral */
156
190
  parseAsLiteral(text: string): boolean | FormulaError.Known | undefined;
157
191
  /** @inheritdoc IFormulaContext.toText */
@@ -1,10 +1,12 @@
1
1
  import { Scalar, IRange, IRuntime, IFormulaContext } from '@sheetxl/primitives';
2
2
  import { ISparseGrid, ISpatialMap, ISpatialMap3D, ISpatialQuery } from '../../collections';
3
3
  import { ISymbolRegistry } from '../symbol';
4
- import { IFormulaBlock } from '../formula';
4
+ import { IFormulaBlock, FormulaImager } from '../formula';
5
5
  import { PrecedentSpatialValue, PrecedentKind, FormulaSpatialValue } from '../spatial';
6
- import { ICalcGrid } from '../grid';
6
+ import { ICalcGrid, CalcGridBackend } from '../grid';
7
+ import { CalcRequest } from '../grid/_CalcRequest';
7
8
  import { ICalculation } from '../ICalculation';
9
+ import { NamedNodeInfo } from '../Types';
8
10
  import { CalcNode } from './CalcNode';
9
11
  import { CalcScope } from './CalcScope';
10
12
  /**
@@ -17,14 +19,19 @@ export interface IContextContainer {
17
19
  * @remarks
18
20
  * This is passed in so that the Calculation engine can lazy load
19
21
  *
20
- * @param editing If `true` the block is compiled with the `'editing'` compiler profile — the
22
+ * @param editing When set, the block is compiled with the `'editing'` compiler profile — the
21
23
  * expression is preserved exactly as typed and a parse failure gets maximum recovery (see
22
- * `FormulaCompilerProfile`). Used by `createFormula` (the formula editor); the default
23
- * (`'calc'`) profile normalizes and spends nothing on recovery.
24
- * @param formulaTransform A structural transform applied to the parsed tree (pre-link) — the
25
- * READ half of the dialect hook, supplied only by format loads (see `ICalcGrid.fromJSON`).
24
+ * `FormulaCompilerProfile`) — reading `'storage'` or `'display'` text. Used by `createFormula`;
25
+ * absent, the (`'calc'`) profile reads storage text, normalizes and spends nothing on recovery.
26
26
  */
27
- createFormulaBlock(gridId: string, context: IFormulaContext, expression: string, rowIndex: number, colIndex: number, editing?: boolean, formulaTransform?: ICalculation.FormulaTransform): IFormulaBlock;
27
+ /**
28
+ * Compiles a formula for a grid.
29
+ *
30
+ * @param legacyIntersect Compile in the legacy entry era: every call intersects
31
+ * ({@link ICalculation.JSON.legacyIntersect}). What a loaded block that is not an array anchor
32
+ * gets when the calculation is in that era.
33
+ */
34
+ createFormulaBlock(gridId: string, context: IFormulaContext, expression: string, rowIndex: number, colIndex: number, editing?: ICalculation.FormulaTarget, legacyIntersect?: boolean): IFormulaBlock;
28
35
  /**
29
36
  * Returns the symbol registry for name → stableId resolution.
30
37
  */
@@ -38,6 +45,17 @@ export interface IContextContainer {
38
45
  resolveScope(scope: string): string | undefined;
39
46
  getSheetIndex?: (sheetName?: string) => number;
40
47
  getSheetCount?: () => number;
48
+ /**
49
+ * The grid ids a 3-D span covers — every sheet from its first endpoint to its last in current tab
50
+ * order, hidden sheets included — or `null` when `scopeId` is not a span or an endpoint is gone.
51
+ *
52
+ * @remarks
53
+ * Asked at read time rather than stored: inserting, moving or deleting a sheet changes the members
54
+ * without changing the span.
55
+ */
56
+ getSheetSpanIds?: (scopeId: string) => string[] | null;
57
+ /** Every sheet's grid id in tab order, hidden sheets included. */
58
+ getSheetIds?: () => readonly string[];
41
59
  getScope(): CalcScope;
42
60
  getRuntime(): IRuntime;
43
61
  /**
@@ -51,6 +69,11 @@ export interface IContextContainer {
51
69
  * Returns `null` if the container does not track volatiles.
52
70
  */
53
71
  getVolatiles(): Set<CalcNode> | null;
72
+ /**
73
+ * Whether the calculation's unmarked formulas are in the legacy entry era
74
+ * ({@link ICalculation.JSON.legacyIntersect}).
75
+ */
76
+ isLegacyIntersect(): boolean;
54
77
  /**
55
78
  * Returns a 3D formulas.
56
79
  */
@@ -77,10 +100,11 @@ export interface IContextContainer {
77
100
  * Returns the current block-level dynamic precedent map, keyed by FormulaSpatialValue.
78
101
  *
79
102
  * @remarks
80
- * At most one entry per (block, {@link PrecedentKind}) — so at most two, because one block can be
81
- * BOTH kinds at once: `=INDIRECT("A1:A3")` reads a range it discovers at runtime AND spills over
82
- * one it writes. Those two rectangles have nothing to do with each other, and the single slot this
83
- * map used to hold forced them into a bounding box that described neither.
103
+ * At most one entry per (block, {@link PrecedentKind}, grid). One block can be BOTH kinds at once:
104
+ * `=INDIRECT("A1:A3")` reads a range it discovers at runtime AND spills over one it writes. Those
105
+ * two rectangles have nothing to do with each other, and the single slot this map used to hold
106
+ * forced them into a bounding box that described neither. And one block can read on several
107
+ * grids — a 3-D reference reads every sheet it covers — which a bounding box cannot express at all.
84
108
  *
85
109
  * Every path that replaces a block evicts through this map, so it must list ALL of the block's
86
110
  * entries: one left behind points at a dead block, whose CalcNodes the dirty walk then collects
@@ -95,20 +119,71 @@ export interface IContextContainer {
95
119
  /**
96
120
  * Returns the grid for a given gridId. This is used to get other grids when calculating.
97
121
  */
98
- getGrid(gridId: string): ICalcGrid | null;
122
+ getGrid(gridId: string): CalcGridBackend | null;
123
+ /**
124
+ * Runs a request against the engine's state, landing what it writes under the snapshot it
125
+ * names (DESIGN-CALC-SERVICE §13.13: the engine keeps its own history keyed by the model's
126
+ * ids).
127
+ *
128
+ * @param landingId The engine commit the request lands in: the model's commit for a root
129
+ * transaction, its savepoint for a nested one, or `undefined` for a request naming no snapshot
130
+ * (a caller with no model), which is applied as it is.
131
+ * @param action The request; its writes land together.
132
+ */
133
+ landRequest<R>(landingId: string | undefined, action: () => R): R;
134
+ /**
135
+ * Sends a grid request through the service's channel (DESIGN-CALC-SERVICE §4, §7.2).
136
+ *
137
+ * @param gridId The grid the request is for.
138
+ * @param landingId The engine commit a request applied now lands in - see {@link landRequest}.
139
+ * @param request The request, as data.
140
+ *
141
+ * @remarks
142
+ * On a `Running` engine the request is applied at once and lands under `landingId`. While the
143
+ * engine is `Starting` it is held, in send order, and applied once the engine is up, behind the
144
+ * seeds; one whose snapshot the model has undone by then is dropped. On an `Off` engine nothing
145
+ * is recorded and the request resolves with nothing: a later start is seeded from the model.
146
+ */
147
+ sendRequest(gridId: string, landingId: string | undefined, request: CalcRequest): Promise<ICalcGrid.Results>;
148
+ /**
149
+ * What images a grid's records for the model (DESIGN-CALC-SERVICE §8): the model's symbol
150
+ * map, the grid as home scope, its bounds, the reader's locale. The facade's, read where a
151
+ * response crosses to the model.
152
+ */
153
+ getImager(gridId: string): FormulaImager;
154
+ /**
155
+ * Records the regions a request touched on the commit it is landing in, so a revert knows what
156
+ * to re-vend. A no-op outside a landing request.
157
+ */
158
+ recordTouched(gridId: string, regions: readonly IRange.Coords[]): void;
159
+ /**
160
+ * Records a grid's per-grid maps (values, spills, ...) in the engine's history, under the
161
+ * commit landing now: a restore hands them back to the grid. The maps are the grid's own
162
+ * objects, copy-on-write per request.
163
+ */
164
+ setGridMaps(gridId: string, maps: object): void;
165
+ /**
166
+ * The model has restored itself to `commitId` (an undo, a redo): restore the engine's history
167
+ * to it, once, and answer the regions of `gridId` that changed between the two snapshots. A
168
+ * grid asking after the engine is already there gets the regions of that same restore.
169
+ *
170
+ * @returns The changed regions of the grid, or `null` when the engine holds no history for the
171
+ * id (it restarts from a seed) or nothing changed on that grid.
172
+ */
173
+ revertTo(commitId: string, gridId: string): IRange.Coords[] | null;
99
174
  /**
100
175
  * Upserts a grid into the container's registry (create or replace), keyed by its `gridId`.
101
176
  *
102
177
  * @remarks
103
178
  * Called in two situations:
104
- * 1. **Construction** — a newly created `CalcGrid` self-registers so it is reachable via
179
+ * 1. **Construction** — a newly created `CalcGridBackend` self-registers so it is reachable via
105
180
  * {@link getGrid} / {@link getGridValues}.
106
181
  * 2. **Clone** — the cloned grid re-registers under the same `gridId`, atomically replacing
107
182
  * the previous iteration in the registry and enabling swap-in-place semantics.
108
183
  *
109
184
  * @param calcGrid The grid instance to register.
110
185
  */
111
- registerGrid(calcGrid: ICalcGrid): void;
186
+ registerGrid(calcGrid: CalcGridBackend): void;
112
187
  /**
113
188
  * Removes the grid with the given `gridId` from the container's registry.
114
189
  *
@@ -140,6 +215,18 @@ export interface IContextContainer {
140
215
  * @param options Optional calculation options.
141
216
  */
142
217
  calculateGrid(gridId: string, options?: ICalculation.CalculateOptions): Promise<ICalculation.Status>;
218
+ /**
219
+ * Ask for the reactive pass that evaluates what `gridId` has dirty, once the current flush is
220
+ * over.
221
+ *
222
+ * @remarks
223
+ * Unlike {@link calculateGrid}, which runs the pass now, this posts it: every grid that asks
224
+ * during one synchronous flush is answered by ONE pass, at the flush's end. A watch registering
225
+ * asks this way, so a paint's worth of rules registering together costs one pass, not one each.
226
+ *
227
+ * @param gridId The grid whose dirty body the pass is owed for.
228
+ */
229
+ requestCalculateGrid(gridId: string): void;
143
230
  /**
144
231
  * Returns the monotonically incrementing generation counter for the calculation engine.
145
232
  *
@@ -156,6 +243,11 @@ export interface IContextContainer {
156
243
  * still carry, and the "already visited this cycle" guards would skip their re-evaluation.
157
244
  */
158
245
  getCycleId(): number;
246
+ /**
247
+ * The id of the last transaction commit a calculation pass was run for, or `null` before the
248
+ * first pass. What a record the engine pushes answers for (`ICalcGrid.Results.commitId`).
249
+ */
250
+ getCalculatedCommitId(): string | null;
159
251
  /**
160
252
  * The graph-version counters the executor's plan caches key on (CALC-PERFORMANCE-PLAN.md §1.1).
161
253
  *
@@ -169,7 +261,7 @@ export interface IContextContainer {
169
261
  * READING is what synchronizes: the implementation compares the identities of the spatial maps
170
262
  * it last saw and advances the counters when a clone-then-swap happened (edits, shifts, undo/
171
263
  * redo, pass-end dynamic commits all publish fresh maps). Sites that mutate the CURRENT maps in
172
- * place — `CalcGrid.fromJSON` loads, an un-cloned `shift` — must call {@link bumpCalcEpochs}
264
+ * place — a seed (`CalcGridBackend._seedNow`), an un-cloned `shift` — must call {@link bumpCalcEpochs}
173
265
  * explicitly, because no identity changes there.
174
266
  *
175
267
  * Both counters are monotonic and deliberately NOT transactional, for the same reason as
@@ -252,30 +344,27 @@ export interface IContextContainer {
252
344
  * What a caller does owe: the action must be safe to run at an arbitrary microtask boundary, not
253
345
  * only from inside a calculation.
254
346
  *
255
- * Used by surfaces (e.g. `CalcGrid`) to defer writes that arrive while the engine is still
256
- * populating. That drain happens inline at the tail of `Calculation.start()`, so `await start()`
257
- * still resolves only after queued work completes.
347
+ * For the engine's own deferrals (wiring a name, recompiling its dependents), which stay
348
+ * backend-side. A grid request is never queued here: it goes through {@link sendRequest}, as
349
+ * data, so the channel can hold it (DESIGN-CALC-SERVICE §6.2).
258
350
  */
259
351
  whenSafe(action: () => Promise<unknown>): void;
260
352
  /**
261
353
  * `true` while the engine is either `Starting` or inside a pending-action drain — at any drain
262
- * site, not only the load drain in `Calculation.start()`.
354
+ * site, the start batch included.
263
355
  *
264
356
  * @remarks
265
357
  * A grid must NOT trigger a calc while this is `true`: a formula could evaluate against a sibling
266
- * sheet whose values have not been drained yet (e.g. a volatile/cross-sheet formula reading an
267
- * empty cell). Defer such calcs via {@link whenSafe} so they run after the full drain.
268
- *
269
- * This used to be set by the load drain alone, so during a drain ahead of a calculation it read
270
- * `false` and a grid populating there took the inline branch — a calc re-entered from inside a
271
- * drain, the exact shape the deferral exists to avoid.
358
+ * sheet whose seed has not been applied yet (e.g. a volatile/cross-sheet formula reading an
359
+ * empty cell). Owe the pass instead ({@link requestCalculateGrid}); the batch runs one once
360
+ * every seed is in.
272
361
  */
273
362
  isLoading(): boolean;
274
363
  /**
275
364
  * Recompiles every formula that references `nameId`, directly or through another name.
276
365
  *
277
366
  * @remarks
278
- * Brute-force all3D scan over `formulaSpatial`, matched via `IFormulaBlock.getNamedIds` against
367
+ * Brute-force all3D scan over `formulaSpatial`, matched via `IFormulaBlock.getReferencedSymbolIds` against
279
368
  * `nameId` and {@link getNamedDependentNames}. Called after a named formula is wired or deleted
280
369
  * so dependents pick up the change. A recompile, not a dirty-mark, on purpose: a definition
281
370
  * change requires dependents to re-derive their precedents (`setInputs`), which `markDirty` does
@@ -326,6 +415,19 @@ export interface IContextContainer {
326
415
  * resolve the scope and drop what is not a sheet.
327
416
  */
328
417
  getNamedDependents(nameId: string): readonly IRange.Coords[];
418
+ /**
419
+ * A name's identity and anchor as plain data, or `null` when `nameId` names nothing.
420
+ *
421
+ * @param nameId The name's stable id.
422
+ * @param live When `true`, answers `null` for a name nothing currently references - the
423
+ * dependents rule, where a name no formula reads is a definition rather than a dependent.
424
+ *
425
+ * @remarks
426
+ * Sits beside {@link getNamedDependents}: both are facts about a name, by id, asked from inside
427
+ * the calculation. This is what lets a grid answer a graph question with a name in it without
428
+ * handing out an engine-bound object.
429
+ */
430
+ getNamedNodeInfo(nameId: string, live?: boolean): NamedNodeInfo | null;
329
431
  /**
330
432
  * The ids of every NAME that references `nameId`, transitively. Excludes `nameId` itself unless
331
433
  * a cycle genuinely leads back to it.