@sheetxl/sdk 0.8.0-beta.1 → 0.8.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/browser/cjs/B0AS8k-hrSCBUlUY.cjs +1 -0
- package/browser/cjs/B308aXzcAYr1GN1c.cjs +1 -0
- package/browser/cjs/B44p8LIyxG3GtaGC.cjs +93 -0
- package/browser/cjs/{a0Z-SXs_N71CtqYb.cjs → D6YaqporVrSewZpm.cjs} +1 -1
- package/browser/cjs/DjWcveVCs0NFiKep.cjs +1 -0
- package/browser/cjs/index.cjs +2 -2
- package/browser/esm/-OKDZ9cUBtkgD4Zr.mjs +20 -0
- package/browser/esm/8Nw0lKc4ISs7hEJT.mjs +70223 -0
- package/browser/esm/{DlPMeIyxT9tG_WDk.mjs → BmEEyMxNzlbXG98H.mjs} +2 -2
- package/browser/esm/BtdDRkWn-zCV3oic.mjs +394 -0
- package/browser/esm/DaCTT4vda0m8Fnxo.mjs +8 -0
- package/browser/esm/{B0HS42a7lga1k1U_.mjs → DvFKKE72ZA02l8iF.mjs} +1 -1
- package/browser/esm/{uyWBMSIxMlt8n5Z3.mjs → Z-dzbKvqaxll9l_t.mjs} +2 -2
- package/browser/esm/index.mjs +871 -696
- package/licenses/dependencies.txt +204 -204
- package/node/esm/{Cku7XiUvw1xrRasi.mjs → BpMTlTrJLWh_wJ5H.mjs} +1 -1
- package/node/esm/D5quDVovf1zjYBgJ.mjs +28 -0
- package/node/esm/DP0M3_S_dwLwRMiA.mjs +403 -0
- package/node/esm/DTHN_EkuOscW3f3B.mjs +8 -0
- package/node/esm/index.mjs +54375 -39377
- package/package.json +6 -7
- package/resources/locales/de/model.msg.json +45 -9
- package/resources/locales/en/model.msg.json +42 -9
- package/types/scripting-api.json +7094 -0
- package/types/scripting-enums.json +54 -8
- package/types/scripting.d.ts +6985 -1171
- package/types/src/anchored/AbstractAnchored.d.ts +18 -8
- package/types/src/anchored/AnchoredMap.d.ts +2 -0
- package/types/src/anchored/IAnchoredMap.d.ts +52 -4
- package/types/src/autoFill/AutoFill.d.ts +316 -32
- package/types/src/autoFill/IAutoFill.d.ts +232 -15
- package/types/src/border/{IBorder.d.ts → IBorders.d.ts} +41 -40
- package/types/src/border/index.d.ts +1 -1
- package/types/src/calculation/Calculation.d.ts +740 -35
- package/types/src/calculation/ExternalBookBindings.d.ts +118 -0
- package/types/src/calculation/FormulaText.d.ts +74 -0
- package/types/src/calculation/ICalculation.d.ts +318 -81
- package/types/src/calculation/INamedFormulasCollection.d.ts +5 -8
- package/types/src/calculation/NamedFormulaCollection.d.ts +139 -107
- package/types/src/calculation/NamedLambdaFunction.d.ts +28 -0
- package/types/src/calculation/TokenType.d.ts +9 -0
- package/types/src/calculation/Types.d.ts +83 -2
- package/types/src/calculation/_CloneBoundary.d.ts +80 -0
- package/types/src/calculation/compiler/ASTTypes.d.ts +58 -0
- package/types/src/calculation/compiler/CompilerUtils.d.ts +134 -12
- package/types/src/calculation/compiler/FormulaCompiler.d.ts +29 -4
- package/types/src/calculation/compiler/FormulaParser.d.ts +1 -2
- package/types/src/calculation/compiler/LiteTransform.d.ts +17 -0
- package/types/src/calculation/compiler/ParserUtils.d.ts +26 -1
- package/types/src/calculation/compiler/SRParser.d.ts +2 -1
- package/types/src/calculation/compiler/Types.d.ts +79 -9
- package/types/src/calculation/executor/CalcExecutor.d.ts +312 -33
- package/types/src/calculation/executor/CalcExecutorUtils.d.ts +43 -2
- package/types/src/calculation/executor/CircularReference.d.ts +2 -0
- package/types/src/calculation/formula/Formula.d.ts +58 -21
- package/types/src/calculation/formula/FormulaBlock.d.ts +124 -21
- package/types/src/calculation/formula/FormulaRecordView.d.ts +79 -0
- package/types/src/calculation/formula/IFormulaBlock.d.ts +261 -67
- package/types/src/calculation/formula/LambdaValue.d.ts +15 -16
- package/types/src/calculation/formula/LazyValue.d.ts +96 -0
- package/types/src/calculation/formula/TokenUtils.d.ts +25 -1
- package/types/src/calculation/formula/index.d.ts +1 -0
- package/types/src/calculation/functions/FunctionDeclarations.d.ts +31 -0
- package/types/src/calculation/functions/initializeFunctions.d.ts +15 -2
- package/types/src/calculation/grid/CalcGrid.d.ts +384 -158
- package/types/src/calculation/grid/CalcGridBackend.d.ts +450 -0
- package/types/src/calculation/grid/CalcGridProxy.d.ts +133 -0
- package/types/src/calculation/grid/CalcGridUtils.d.ts +62 -12
- package/types/src/calculation/grid/FormulaEntry.d.ts +129 -0
- package/types/src/calculation/grid/FormulaHost.d.ts +236 -0
- package/types/src/calculation/grid/ICalcGrid.d.ts +456 -143
- package/types/src/calculation/grid/_CalcRequest.d.ts +272 -0
- package/types/src/calculation/grid/index.d.ts +4 -0
- package/types/src/calculation/index.d.ts +2 -0
- package/types/src/calculation/spatial/ContentfulSpatialValue.d.ts +6 -2
- package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +339 -11
- package/types/src/calculation/spatial/SpillEntry.d.ts +20 -5
- package/types/src/calculation/spatial/TouchedWindows.d.ts +86 -0
- package/types/src/calculation/spatial/index.d.ts +1 -0
- package/types/src/calculation/state/CalcInputs.d.ts +41 -0
- package/types/src/calculation/state/CalcNode.d.ts +141 -30
- package/types/src/calculation/state/CalcScope.d.ts +37 -0
- package/types/src/calculation/state/CalcState.d.ts +22 -1
- package/types/src/calculation/state/CalculationContext.d.ts +36 -2
- package/types/src/calculation/state/IContextContainer.d.ts +129 -27
- package/types/src/calculation/state/_PendingOverlayGrid.d.ts +163 -0
- package/types/src/calculation/state/_ReadObservedGrid.d.ts +74 -8
- package/types/src/calculation/state/index.d.ts +1 -0
- package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +80 -0
- package/types/src/calculation/symbol/ISymbolRegistry.d.ts +23 -0
- package/types/src/calculation/symbol/IndirectSymbolProvider.d.ts +16 -2
- package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +63 -3
- package/types/src/calculation/symbol/SymbolRegistry.d.ts +20 -0
- package/types/src/calculation/symbol/index.d.ts +3 -2
- package/types/src/cell/ICell.d.ts +78 -23
- package/types/src/cell/ICellProtection.d.ts +50 -10
- package/types/src/cellRange/ICellRange.d.ts +329 -72
- package/types/src/cellRange/ICellRanges.d.ts +9 -7
- package/types/src/chart/Chart.d.ts +72 -2
- package/types/src/chart/ChartCollection.d.ts +26 -0
- package/types/src/chart/IChart.d.ts +162 -9
- package/types/src/chart/IChartCollection.d.ts +25 -0
- package/types/src/chart/_ChartXml.d.ts +70 -0
- package/types/src/chart/index.d.ts +1 -3
- package/types/src/collections/ArraysGrid.d.ts +1 -1
- package/types/src/collections/IGrid.d.ts +1 -1
- package/types/src/collections/ISparseGrid.d.ts +9 -0
- package/types/src/collections/ISpatialMap.d.ts +59 -21
- package/types/src/collections/ImmutableList.d.ts +28 -0
- package/types/src/collections/MixedTypedArrayList.d.ts +168 -108
- package/types/src/collections/OverlappingRangeIterator.d.ts +13 -17
- package/types/src/collections/RepeatingList.d.ts +7 -0
- package/types/src/collections/ScalarGrid.d.ts +50 -0
- package/types/src/collections/SparseGrid.d.ts +1 -1
- package/types/src/collections/SpatialMap.d.ts +13 -21
- package/types/src/collections/Tuple.d.ts +128 -16
- package/types/src/collections/_GridUtils.d.ts +19 -6
- package/types/src/collections/_RangeSweep.d.ts +97 -0
- package/types/src/collections/_SpatialUtils.d.ts +20 -2
- package/types/src/collections/index.d.ts +1 -0
- package/types/src/comment/Comment.d.ts +159 -0
- package/types/src/comment/CommentCollection.d.ts +40 -0
- package/types/src/comment/IComment.d.ts +319 -48
- package/types/src/comment/ICommentCollection.d.ts +90 -0
- package/types/src/comment/_CommentUtils.d.ts +28 -0
- package/types/src/comment/index.d.ts +1 -0
- package/types/src/condition/AnchoredConditional.d.ts +76 -17
- package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +8 -7
- package/types/src/condition/BuiltInOperators/EqualToOperator.d.ts +2 -1
- package/types/src/condition/BuiltInOperators/ExpressionOperator.d.ts +3 -6
- package/types/src/condition/BuiltInOperators/InSetOperator.d.ts +1 -1
- package/types/src/condition/BuiltinSelectors/BaseSelector.d.ts +7 -0
- package/types/src/condition/BuiltinSelectors/ListSelector.d.ts +9 -0
- package/types/src/condition/Condition.d.ts +16 -0
- package/types/src/condition/ICondition.d.ts +86 -33
- package/types/src/condition/_ConditionFormula.d.ts +152 -0
- package/types/src/condition/_ConditionUtils.d.ts +73 -10
- package/types/src/conditionalFormat/ConditionalFormat.d.ts +21 -10
- package/types/src/conditionalFormat/ConditionalFormatCollection.d.ts +19 -8
- package/types/src/conditionalFormat/IConditionalFormat.d.ts +5 -3
- package/types/src/conditionalFormat/IConditionalFormatCollection.d.ts +2 -0
- package/types/src/dataValidation/DataValidation.d.ts +50 -3
- package/types/src/dataValidation/DataValidationCollection.d.ts +20 -9
- package/types/src/dataValidation/IDataValidation.d.ts +119 -30
- package/types/src/dataValidation/IDataValidationCollection.d.ts +10 -2
- package/types/src/date/DateUtils.d.ts +20 -0
- package/types/src/date/_DateUtils.d.ts +91 -7
- package/types/src/externalBook/ExternalBookCollection.d.ts +145 -12
- package/types/src/externalBook/ExternalBookName.d.ts +96 -0
- package/types/src/externalBook/IExternalBook.d.ts +170 -18
- package/types/src/externalBook/IExternalBookCollection.d.ts +79 -7
- package/types/src/externalBook/index.d.ts +1 -0
- package/types/src/fill/IStroke.d.ts +1 -1
- package/types/src/filter/IFilter.d.ts +29 -4
- package/types/src/font/IFont.d.ts +17 -0
- package/types/src/history/IHistory.d.ts +3 -2
- package/types/src/i18n/LanguagePack.d.ts +12 -4
- package/types/src/index.d.ts +3 -0
- package/types/src/io/AbstractBackingStore.d.ts +24 -1
- package/types/src/io/ArrayBackingStore.d.ts +1 -1
- package/types/src/io/EmbeddedPart.d.ts +20 -0
- package/types/src/io/IEmbeddedPart.d.ts +63 -0
- package/types/src/io/IWorkbookIO.d.ts +185 -18
- package/types/src/io/WorkbookIO.d.ts +9 -0
- package/types/src/io/WorkbookOrigin.d.ts +20 -11
- package/types/src/io/WorkbookOriginProvider.d.ts +46 -0
- package/types/src/io/_XmlFragment.d.ts +49 -0
- package/types/src/io/index.d.ts +1 -0
- package/types/src/lib/file/file.browser.d.ts +19 -5
- package/types/src/lib/file/file.node.d.ts +5 -0
- package/types/src/lib/utils/_Utils.d.ts +11 -0
- package/types/src/lib/utils/utils.browser.d.ts +9 -3
- package/types/src/license/license-key.d.ts +27 -0
- package/types/src/listener/IListener.d.ts +12 -7
- package/types/src/listener/ListenerEmitter.d.ts +46 -5
- package/types/src/model/AbstractModel.d.ts +14 -5
- package/types/src/movable/Control.d.ts +57 -0
- package/types/src/movable/IControl.d.ts +84 -0
- package/types/src/movable/IMovable.d.ts +23 -1
- package/types/src/movable/IMovableCollection.d.ts +2 -0
- package/types/src/movable/Movable.d.ts +4 -6
- package/types/src/movable/MovableCollection.d.ts +7 -7
- package/types/src/movable/index.d.ts +4 -0
- package/types/src/named/AbstractNamed.d.ts +1 -1
- package/types/src/named/INamed.d.ts +4 -1
- package/types/src/named/INamedCollection.d.ts +26 -0
- package/types/src/named/NamedCollection.d.ts +16 -15
- package/types/src/numFmt/BuiltInFormats.d.ts +15 -7
- package/types/src/numFmt/IFormatEngine.d.ts +2 -0
- package/types/src/numFmt/NumfmtFormatEngine.d.ts +2 -0
- package/types/src/person/IPerson.d.ts +99 -0
- package/types/src/person/IPersonCollection.d.ts +51 -0
- package/types/src/person/Person.d.ts +32 -0
- package/types/src/person/PersonCollection.d.ts +49 -0
- package/types/src/person/index.d.ts +3 -0
- package/types/src/picture/IPicture.d.ts +2 -0
- package/types/src/picture/Picture.d.ts +2 -0
- package/types/src/pivot/IPivotTable.d.ts +107 -0
- package/types/src/pivot/IPivotTableCollection.d.ts +25 -0
- package/types/src/pivot/PivotTable.d.ts +57 -0
- package/types/src/pivot/PivotTableCollection.d.ts +25 -0
- package/types/src/pivot/index.d.ts +6 -0
- package/types/src/primitives/CompositeRangeStats.d.ts +2 -0
- package/types/src/primitives/Criteria.d.ts +1 -1
- package/types/src/primitives/LambdaBrand.d.ts +21 -0
- package/types/src/primitives/PrimitiveUtils.d.ts +56 -19
- package/types/src/primitives/Range.d.ts +102 -24
- package/types/src/primitives/RangeStats.d.ts +24 -1
- package/types/src/primitives/ReferenceRange.d.ts +42 -0
- package/types/src/primitives/Runtime.d.ts +15 -2
- package/types/src/primitives/stats/FrequencyStats.d.ts +9 -0
- package/types/src/primitives/stats/LookupIndex.d.ts +46 -0
- package/types/src/primitives/stats/SortedNumbers.d.ts +2 -0
- package/types/src/primitives/stats/index.d.ts +1 -0
- package/types/src/print/IPrint.d.ts +0 -22
- package/types/src/protectedRange/IProtectedRange.d.ts +4 -0
- package/types/src/protectedRange/IProtectedRangeCollection.d.ts +2 -0
- package/types/src/protectedRange/ProtectedRange.d.ts +1 -4
- package/types/src/protectedRange/ProtectedRangeCollection.d.ts +19 -8
- package/types/src/protection/DefaultProtection.d.ts +12 -1
- package/types/src/protection/IProtection.d.ts +36 -2
- package/types/src/reference/ReferenceUtils.d.ts +80 -0
- package/types/src/reference/index.d.ts +2 -0
- package/types/src/resource/IResource.d.ts +21 -1
- package/types/src/resource/IResourceCollection.d.ts +9 -1
- package/types/src/resource/ResourceCollection.d.ts +6 -6
- package/types/src/scripting/FunctionCollection.d.ts +41 -11
- package/types/src/scripting/IFunctionCollection.d.ts +41 -0
- package/types/src/scripting/IModule.d.ts +25 -0
- package/types/src/scripting/IModuleCollection.d.ts +17 -0
- package/types/src/scripting/IScript.d.ts +18 -0
- package/types/src/scripting/Module.d.ts +34 -6
- package/types/src/scripting/ModuleCollection.d.ts +17 -12
- package/types/src/scripting/Runtime.d.ts +15 -0
- package/types/src/scripting/Scripts.d.ts +2 -0
- package/types/src/scripting/TypedFunction.d.ts +151 -18
- package/types/src/scripting/_FunctionIndex.d.ts +5 -0
- package/types/src/scripting/_ModuleUtils.d.ts +11 -1
- package/types/src/scripting/_ScriptUtils.d.ts +3 -0
- package/types/src/scripting/declarations.browser.d.ts +10 -0
- package/types/src/scripting/declarations.d.ts +49 -0
- package/types/src/scripting/declarations.node.d.ts +9 -0
- package/types/src/scripting/index.d.ts +3 -0
- package/types/src/selection/IRangeSelection.d.ts +9 -4
- package/types/src/selection/RangeSelection.d.ts +2 -0
- package/types/src/shape/IShape.d.ts +41 -3
- package/types/src/shape/Shape.d.ts +10 -0
- package/types/src/shape/_ShapeXml.d.ts +28 -0
- package/types/src/sheet/CellRegion.d.ts +6 -0
- package/types/src/sheet/ICellContainerOptions.d.ts +50 -0
- package/types/src/sheet/ISheet.d.ts +224 -41
- package/types/src/sheet/ISheetCollection.d.ts +2 -5
- package/types/src/sheet/NamedCellRange.d.ts +16 -7
- package/types/src/sheet/Sheet.d.ts +749 -114
- package/types/src/sheet/SheetCell.d.ts +81 -21
- package/types/src/sheet/SheetCollection.d.ts +19 -8
- package/types/src/sheet/SheetRange.d.ts +62 -14
- package/types/src/sheet/SheetRanges.d.ts +4 -6
- package/types/src/sheet/_CellBuffer.d.ts +214 -0
- package/types/src/sheet/_InvalidSheetRange.d.ts +5 -5
- package/types/src/sheet/_ListenerAnchor.d.ts +104 -0
- package/types/src/sheet/_RangeStateSweep.d.ts +16 -0
- package/types/src/sheet/_ScalarListFactory.d.ts +61 -0
- package/types/src/sheet/_SheetAutoFillUtils.d.ts +74 -0
- package/types/src/sheet/_SheetAutoFitUtils.d.ts +2 -2
- package/types/src/sheet/_SheetEvents.d.ts +43 -0
- package/types/src/sheet/_SheetFilterUtils.d.ts +32 -1
- package/types/src/sheet/_SheetIntents.d.ts +250 -0
- package/types/src/sheet/_SheetMutations.d.ts +179 -59
- package/types/src/sheet/_SheetStateReader.d.ts +16 -10
- package/types/src/sheet/_SheetStateTypes.d.ts +57 -73
- package/types/src/sheet/_SheetUtils.d.ts +2 -18
- package/types/src/sheet/_WatchAnchor.d.ts +93 -0
- package/types/src/sheet/spatial/HeldFormulaEntry.d.ts +36 -0
- package/types/src/sheet/spatial/index.d.ts +1 -0
- package/types/src/sheet/style/SheetCellStyle.d.ts +91 -64
- package/types/src/sheet/style/SheetDirectStyle.d.ts +16 -5
- package/types/src/sheet/style/_Resolvers.d.ts +5 -3
- package/types/src/sheet/style/_StyleUtils.d.ts +37 -7
- package/types/src/sheetHeader/ISheetHeader.d.ts +2 -0
- package/types/src/sheetHeader/SheetHeader.d.ts +14 -0
- package/types/src/sheetProtection/ISheetProtection.d.ts +41 -7
- package/types/src/sheetProtection/SheetProtection.d.ts +12 -0
- package/types/src/sheetView/ISheetView.d.ts +45 -1
- package/types/src/sheetView/SheetView.d.ts +11 -0
- package/types/src/slicer/ISlicer.d.ts +2 -0
- package/types/src/slicer/Slicer.d.ts +2 -0
- package/types/src/sort/ISort.d.ts +2 -0
- package/types/src/string/IStringCollection.d.ts +5 -0
- package/types/src/string/StringCollection.d.ts +6 -6
- package/types/src/style/INamedStyleCollection.d.ts +72 -0
- package/types/src/style/IStyle.d.ts +30 -10
- package/types/src/style/IStyleCollection.d.ts +63 -42
- package/types/src/style/ITableStyleCollection.d.ts +89 -0
- package/types/src/style/NamedStyleCollection.d.ts +39 -0
- package/types/src/style/StyleCollection.d.ts +41 -5
- package/types/src/style/TableStyleCollection.d.ts +49 -0
- package/types/src/style/_BuiltInStyleDefs.d.ts +3 -3
- package/types/src/style/index.d.ts +4 -0
- package/types/src/table/AnchoredTable.d.ts +644 -68
- package/types/src/table/AutoTable.d.ts +5 -5
- package/types/src/table/ITable.d.ts +228 -30
- package/types/src/table/ITableCollection.d.ts +2 -0
- package/types/src/table/TableCollection.d.ts +19 -8
- package/types/src/table/_FilterField.d.ts +7 -5
- package/types/src/table/_NamedTable.d.ts +17 -1
- package/types/src/table/_NamedTableSource.d.ts +1 -0
- package/types/src/table/_SortField.d.ts +2 -0
- package/types/src/table/_TableColumn.d.ts +13 -2
- package/types/src/table/_TableMessages.d.ts +1 -0
- package/types/src/table/_TableUtils.d.ts +40 -0
- package/types/src/text/Bullet.d.ts +4 -0
- package/types/src/text/ITextFrame.d.ts +25 -1
- package/types/src/text/TextBoxAlignment.d.ts +15 -6
- package/types/src/text/TextFrame.d.ts +4 -0
- package/types/src/text/TextLine.d.ts +4 -0
- package/types/src/text/TextParagraph.d.ts +4 -0
- package/types/src/text/TextRun.d.ts +9 -0
- package/types/src/text/TextStacked.d.ts +83 -0
- package/types/src/text/index.d.ts +1 -0
- package/types/src/theme/ITheme.d.ts +2 -0
- package/types/src/theme/IThemeCollection.d.ts +2 -0
- package/types/src/theme/ThemeCollection.d.ts +8 -7
- package/types/src/transaction/ITransaction.d.ts +238 -36
- package/types/src/transaction/Transaction.d.ts +99 -11
- package/types/src/type/AbstractCollection.d.ts +101 -0
- package/types/src/type/ICollection.d.ts +117 -0
- package/types/src/type/ITypes.d.ts +9 -7
- package/types/src/type/index.d.ts +1 -0
- package/types/src/utils/_CSSUtils.d.ts +3 -3
- package/types/src/workbook/IWorkbook.d.ts +171 -40
- package/types/src/workbook/Workbook.d.ts +103 -7
- package/types/src/workbook/_WorkbookIntents.d.ts +36 -0
- package/types/src/workbookProtection/IWorkbookProtection.d.ts +7 -0
- package/types/src/workbookProtection/WorkbookProtection.d.ts +3 -0
- package/types/src/workbookView/IWorkbookView.d.ts +12 -0
- package/types/src/workbookView/WorkbookView.d.ts +5 -0
- package/browser/cjs/BatsV2UUraVDCRXm.cjs +0 -57
- package/browser/cjs/CUz53T65cRGQRgvv.cjs +0 -33
- package/browser/cjs/DU0kYUtdFa3jK-im.cjs +0 -1
- package/browser/cjs/Dv4yIPLV98M5zLHa.cjs +0 -1
- package/browser/esm/6JKSOvc5czaQB2Bj.mjs +0 -109
- package/browser/esm/BtuJ9AGzeURtAsGo.mjs +0 -51241
- package/browser/esm/DGU6sM25u0EWCKl1.mjs +0 -824
- package/browser/esm/f2G3QRgEbvFJcoa2.mjs +0 -4436
- package/node/esm/-pxdn3M3tc6PLHs7.mjs +0 -114
- package/node/esm/0n5bslM9jhO1JnI2.mjs +0 -843
- package/types/src/cellRange/_GraphNode.d.ts +0 -38
- package/types/src/dataValidation/_Utils.d.ts +0 -10
- package/types/src/sheet/listener/RangesListener.d.ts +0 -32
- package/types/src/sheet/listener/RangesListenerEntry.d.ts +0 -19
- 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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
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
|
-
|
|
34
|
+
spillDependents: ISpatialMap.Entry<PrecedentSpatialValue>[];
|
|
27
35
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
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
|
-
|
|
40
|
+
spillRowEnd: number;
|
|
41
|
+
spillColEnd: number;
|
|
34
42
|
/**
|
|
35
|
-
* The
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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`)
|
|
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
|
-
|
|
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})
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
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):
|
|
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 `
|
|
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:
|
|
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 — `
|
|
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
|
-
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
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,
|
|
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
|
|
267
|
-
* empty cell).
|
|
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.
|
|
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.
|