@sheetxl/sdk 0.7.28-beta.4 → 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.
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/browser/cjs/4f5eoQQfV-V7LO2_.cjs +1 -0
- package/browser/cjs/BEnEDC1m546-gzWS.cjs +1 -0
- package/browser/cjs/CwCUa4IzGNGissLL.cjs +1 -0
- package/browser/cjs/Dg3GaW0QWwnlqetX.cjs +1 -0
- package/browser/cjs/KWQPie2u7AP69web.cjs +93 -0
- package/browser/cjs/index.cjs +2 -2
- package/browser/esm/{DBIu6NUHIcxOOBQp.mjs → BJ9hcZAGY8Tj5_9L.mjs} +1 -1
- package/browser/esm/C8vpA2ZBtZf6w4nq.mjs +394 -0
- package/browser/esm/DDojiE2-oycJ7qGi.mjs +20 -0
- package/browser/esm/DEPT7zmpiMdZ-_qC.mjs +70253 -0
- package/browser/esm/DOvCi3lf49To36WP.mjs +8 -0
- package/browser/esm/{CHSahmMFYNB0Ajkf.mjs → Dq3sc4B_HQHBrT5N.mjs} +2 -2
- package/browser/esm/index.mjs +871 -696
- package/browser/esm/{CKk58ZLcrllMzfou.mjs → trwZArJQQq7K9kL7.mjs} +2 -2
- package/licenses/dependencies.txt +204 -204
- package/node/esm/CGWsQOMWdnDeF4dX.mjs +8 -0
- package/node/esm/{DUYP6faJJHCaW1Xf.mjs → CL9MI-b6D9BmtVXW.mjs} +1 -1
- package/node/esm/CressiwiIhxCVp1v.mjs +28 -0
- package/node/esm/O2cOO3xIynWUgOWe.mjs +403 -0
- package/node/esm/index.mjs +53973 -38584
- 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 +7093 -0
- package/types/scripting-enums.json +54 -4
- package/types/scripting.d.ts +7185 -1079
- 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 +745 -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 +422 -34
- 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 +160 -29
- 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 +39 -3
- package/types/src/calculation/state/IContextContainer.d.ts +159 -26
- 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 +368 -90
- 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 +18 -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 +60 -21
- package/types/src/primitives/Range.d.ts +105 -25
- 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/FunctionArguments.d.ts +22 -0
- 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 +197 -4
- 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 +757 -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 +65 -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 +28 -0
- 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/BF14ZEAnaqxXroSj.cjs +0 -1
- package/browser/cjs/BXtvdT1Z-MsB_o5F.cjs +0 -1
- package/browser/cjs/Bc4JjVVZfFo3R4He.cjs +0 -33
- package/browser/cjs/CD2RXdnfqSYNc6gX.cjs +0 -57
- package/browser/cjs/DcLpXGexEtOxi-dD.cjs +0 -1
- package/browser/esm/0Mj5WKM362q6CECb.mjs +0 -824
- package/browser/esm/CPTtL2f6_4iblmFM.mjs +0 -4436
- package/browser/esm/CoA-sUxjiIUIpTUF.mjs +0 -109
- package/browser/esm/Dy4Sdpju1T2icURu.mjs +0 -50854
- package/node/esm/BtGxbEbBm79YvF_k.mjs +0 -843
- package/node/esm/DqgWsVXROpSgKq6c.mjs +0 -114
- 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,68 +1,210 @@
|
|
|
1
1
|
import { IRange, FormulaError } from '@sheetxl/primitives';
|
|
2
2
|
import { ICalculation } from '../ICalculation';
|
|
3
|
-
import { ReferenceCoords, SetReferenceOptions } from '../Types';
|
|
4
|
-
|
|
3
|
+
import { ReferenceCoords, SetReferenceOptions, PrecedentTemplate, StructuredReference } from '../Types';
|
|
4
|
+
/**
|
|
5
|
+
* A compiled formula as data (DESIGN-CALC-SERVICE §8): what the engine vends for a block, and all
|
|
6
|
+
* the facade needs to image a read view of it for the model (`FormulaRecordView`). Plain data, so
|
|
7
|
+
* it survives `structuredClone`; the syntax tree never crosses.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* The tokens carry stable ids in their values - a sheet's, a name's, a table's - and cell
|
|
11
|
+
* coordinates relative to the block's top-left, so one record serves every cell of the block. Text
|
|
12
|
+
* is imaged from them against the reader's own symbol map ({@link FormulaImager}), which is what
|
|
13
|
+
* makes a held copy rename-proof: nothing in the record names a sheet by its name. The model
|
|
14
|
+
* never sees one: it holds the view.
|
|
15
|
+
*/
|
|
16
|
+
export interface FormulaRecord {
|
|
17
|
+
/** The block's tokens, stable ids in their values, references relative to the block's top-left. */
|
|
18
|
+
readonly tokens: readonly ICalculation.FormulaToken[];
|
|
19
|
+
/** Set when the text did not parse. */
|
|
20
|
+
readonly error?: FormulaRecord.ParseFailure;
|
|
21
|
+
/** {@inheritDoc IFormulaBlockView.isReferenceOnly} */
|
|
22
|
+
readonly isReferenceOnly: boolean;
|
|
5
23
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
24
|
+
* The block's written references in order, aligned with `FormulaToken.referenceIndex`: what
|
|
25
|
+
* {@link IFormulaBlockView.getReferencesAt} answers from. Absent when there are none.
|
|
26
|
+
*/
|
|
27
|
+
readonly references?: readonly FormulaRecord.Reference[];
|
|
28
|
+
}
|
|
29
|
+
export declare namespace FormulaRecord {
|
|
30
|
+
/**
|
|
31
|
+
* A written reference as the record carries it. A cell or range is relative to the block's
|
|
32
|
+
* top-left, a name is its stable id, and a table reference is as written: the model resolves it
|
|
33
|
+
* against its own table, per cell. `null` is a reference that cannot be one (`#REF!`).
|
|
34
|
+
*/
|
|
35
|
+
type Reference = IRange.FixableCoords | {
|
|
36
|
+
readonly nameId: string;
|
|
37
|
+
} | {
|
|
38
|
+
readonly table: StructuredReference;
|
|
39
|
+
} | null;
|
|
40
|
+
/** A parse failure as data: what {@link IFormulaBlockView.getError} is rebuilt from. */
|
|
41
|
+
interface ParseFailure {
|
|
42
|
+
/** The text as written. */
|
|
43
|
+
readonly input: string;
|
|
44
|
+
/** The primary error's message. */
|
|
45
|
+
readonly message: string;
|
|
46
|
+
/**
|
|
47
|
+
* `true` when nothing parsed: there are no faithful tokens, and a read answers `input`. A
|
|
48
|
+
* recovered formula (an error, but a tree) images from its tokens like any other.
|
|
49
|
+
*/
|
|
50
|
+
readonly unparsed: boolean;
|
|
51
|
+
/** Where the primary error sits in `input`. */
|
|
52
|
+
readonly details?: {
|
|
53
|
+
line: number;
|
|
54
|
+
column: number;
|
|
55
|
+
offset: number;
|
|
56
|
+
length: number;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The READ side of a formula block — what the model and the UI see. `Sheet`, `SheetCell`, autofit
|
|
62
|
+
* and `Formula` type against this; nothing outside `src/calculation/` sees the rest.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* The split exists so the calc engine can move behind a worker boundary. {@link ICalcGrid} is the
|
|
66
|
+
* WRITE surface (later comlink-proxied): every mutation and every question that needs the live
|
|
67
|
+
* graph goes there, its notifications come back on `ICalcGrid.Results`, and what lands here is a
|
|
68
|
+
* read view the facade builds from the engine's record of the block ({@link FormulaRecord}):
|
|
69
|
+
* tokens with stable ids, imaged on the model's side of the channel against the model's symbol
|
|
70
|
+
* map. The model holds the view and nothing else.
|
|
71
|
+
*
|
|
72
|
+
* The line: a fact that belongs to ONE BLOCK - derivable from its record - is declared here. A
|
|
73
|
+
* fact that needs the graph, the container, or a range of blocks belongs to {@link ICalcGrid}:
|
|
74
|
+
* evaluating (`evaluateAt`), every write, the recursive walks (`getPrecedentsAt`,
|
|
75
|
+
* `getDependentsAt`), the reverse edges (`getDirectDependentsAt`), what a range READ last calc
|
|
76
|
+
* (`getDirectPrecedentsAt`, which also consults the runtime `INDIRECT`/`OFFSET` registry), and
|
|
77
|
+
* the range form of what a block declares (`getNamedReferencesAt`).
|
|
78
|
+
*
|
|
79
|
+
* `FormulaBlock` satisfies both halves engine-side; `FormulaRecordView` satisfies this one over a
|
|
80
|
+
* record at the facade, and the sheet's `FormulaEntry` over that view, or over its own text while
|
|
81
|
+
* the entry is pending.
|
|
82
|
+
*/
|
|
83
|
+
export interface IFormulaBlockView {
|
|
84
|
+
/**
|
|
85
|
+
* Return the formula string.
|
|
86
|
+
*
|
|
87
|
+
* @param row The row of the cell to evaluate.
|
|
88
|
+
* @param column The column of the cell to evaluate.
|
|
89
|
+
* @param r1c1 If 'true' then returns string as r1c1
|
|
90
|
+
* @param target Who the text is for. Default `'storage'` — the form files, undo snapshots and
|
|
91
|
+
* re-parses read. See {@link ICalculation.FormulaTarget}.
|
|
92
|
+
*/
|
|
93
|
+
getTextAt(row: number, column: number, r1c1?: boolean, evalIndex?: number, target?: ICalculation.FormulaTarget): string;
|
|
94
|
+
/**
|
|
95
|
+
* Return the formula as an array of formula token values.
|
|
8
96
|
*
|
|
9
97
|
* @param row The row of the cell to evaluate.
|
|
10
98
|
* @param column The column of the cell to evaluate.
|
|
11
99
|
* @param evalIndex The index of the evaluation to use from the tokens.
|
|
100
|
+
* @remarks
|
|
101
|
+
* These can be used by advanced editors.
|
|
102
|
+
*/
|
|
103
|
+
getTokensAt(row: number, column: number, evalIndex?: number): ICalculation.FormulaToken[];
|
|
104
|
+
/**
|
|
105
|
+
* @see
|
|
106
|
+
* { @link ICalculation.IFormula.isReferenceOnly }
|
|
107
|
+
*/
|
|
108
|
+
isReferenceOnly(): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Return an error with the formula.
|
|
12
111
|
*
|
|
13
112
|
* @remarks
|
|
14
|
-
*
|
|
113
|
+
* This is not a value error but that the formula is unable to resolve.
|
|
15
114
|
*/
|
|
16
|
-
|
|
115
|
+
getError(): FormulaError.Parse | null;
|
|
17
116
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* result (`=(A1:A3,C1:C3)`, or a name whose body is a comma union) stays an **array**, one
|
|
21
|
-
* finalized area per element, so an API caller receives every area. Applied by the return
|
|
22
|
-
* sites (`IFormula.evaluate()`, `ICalculation.evaluate()`) — `evaluateAt` itself returns the
|
|
23
|
-
* raw value so a consumer (e.g. a named reference used by a function) sees the reference intact.
|
|
117
|
+
* The formula's written references at a cell, absolute, aligned with
|
|
118
|
+
* `FormulaToken.referenceIndex`.
|
|
24
119
|
*
|
|
25
|
-
* @
|
|
120
|
+
* @param row The row of the cell.
|
|
121
|
+
* @param column The column of the cell.
|
|
122
|
+
*
|
|
123
|
+
* @remarks
|
|
124
|
+
* A name is `{ nameId }` holding its display name, a table reference resolves to the cells it
|
|
125
|
+
* designates from this cell (marked with its `tableId`), and a reference that cannot be one is
|
|
126
|
+
* `null`. What the formula READ on the last calculation (`INDIRECT`, `OFFSET`) is the graph's,
|
|
127
|
+
* not this list.
|
|
26
128
|
*/
|
|
27
|
-
|
|
129
|
+
getReferencesAt(row: number, column: number): ReferenceCoords[];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A compiled formula body, over the range of cells that share it.
|
|
133
|
+
*
|
|
134
|
+
* @remarks
|
|
135
|
+
* Extends {@link IFormulaBlockView}. The members declared HERE need the compiled AST or the
|
|
136
|
+
* engine's container. No caller outside `src/calculation/` uses any of them: a committed formula
|
|
137
|
+
* reaches the equivalent through its view ({@link IFormulaBlockView.getReferencesAt}) or
|
|
138
|
+
* {@link ICalcGrid} (`setReferenceAt`), and the block forms below serve the UNCOMMITTED path (`TemporaryFormula`, the
|
|
139
|
+
* formula the editor is tokenizing while it is typed), which has no grid entry to resolve against.
|
|
140
|
+
*/
|
|
141
|
+
export interface IFormulaBlock extends IFormulaBlockView {
|
|
28
142
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
143
|
+
* The block as data: what the engine vends for it, and what the facade images the model's view
|
|
144
|
+
* from.
|
|
145
|
+
*
|
|
146
|
+
* @remarks
|
|
147
|
+
* Built once per block and shared by every vend of it: a record is never mutated.
|
|
33
148
|
*/
|
|
34
|
-
|
|
149
|
+
getRecord(): FormulaRecord;
|
|
35
150
|
/**
|
|
36
|
-
*
|
|
151
|
+
* Returns all references used by the formula.
|
|
152
|
+
* Named references are {@link NamedReference} objects (detect via `'nameId' in ref`);
|
|
153
|
+
* cell/range references are {@link IRange.FixableCoords}; unresolvable refs are `null`.
|
|
37
154
|
*
|
|
38
|
-
* @param row The row of the cell to evaluate.
|
|
39
|
-
* @param column The column of the cell to evaluate.
|
|
40
|
-
* @param evalIndex The index of the evaluation to use from the tokens.
|
|
41
155
|
* @remarks
|
|
42
|
-
*
|
|
156
|
+
* Relative to (`row`, `column`). {@link IFormulaBlockView.getReferencesAt} is the same list
|
|
157
|
+
* absolutized, and is how the model asks; it answers from the record's
|
|
158
|
+
* {@link FormulaRecord.references}.
|
|
159
|
+
*
|
|
160
|
+
* Not to be confused with `ICalcGrid.getDirectPrecedentsAt`, which is a different KIND of fact:
|
|
161
|
+
* what a range of blocks READ on the last calculation, including runtime reads (`INDIRECT`,
|
|
162
|
+
* `OFFSET`) that appear in no reference list. That one needs the container's dynamic registry
|
|
163
|
+
* and stays on the grid.
|
|
43
164
|
*/
|
|
44
|
-
|
|
165
|
+
getReferences(row: number, column: number): ReferenceCoords[];
|
|
45
166
|
/**
|
|
46
|
-
*
|
|
167
|
+
* The root of the compiled tree in the shape a {@link ICalculation.FormulaTransform} and a
|
|
168
|
+
* {@link ICalculation.FormulaDialect} read, or `null` when nothing parsed.
|
|
47
169
|
*
|
|
48
|
-
* @
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* @param formulaTransform An {@link ICalculation.FormulaTransform} applied structurally to
|
|
52
|
-
* the compiled AST before imaging (runs once per block; an all-void transform costs no
|
|
53
|
-
* recompile) — how a format exporter (io-xlsx `LegacyFormula`) applies its dialect spellings.
|
|
170
|
+
* @remarks
|
|
171
|
+
* Engine-side, and deliberately not on {@link IFormulaBlockView}: the tree is never handed to
|
|
172
|
+
* the model. A consumer that needs something from it asks for the answer instead.
|
|
54
173
|
*/
|
|
55
|
-
|
|
174
|
+
getNode(): ICalculation.FormulaNode | null;
|
|
56
175
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
176
|
+
* The references an entered formula inherits its number format from, in text order: the cell
|
|
177
|
+
* and range literals that are value operands.
|
|
178
|
+
*
|
|
179
|
+
* @remarks
|
|
180
|
+
* Excel's entry rule: `=A1+B1` takes the format of the first of `A1`, `B1` that is not
|
|
181
|
+
* General; `=OFFSET(A1,0,0)` takes nothing, since `A1` sits in a reference-typed parameter.
|
|
182
|
+
* Names, structured references and `#REF!` slots are not listed. Anchor-free - offsets on a
|
|
183
|
+
* relative axis, a position on a fixed one - so one list serves every cell of the block; the
|
|
184
|
+
* executor ships it on {@link ICalcGrid.Results.formatInserts} for the sheet to resolve.
|
|
185
|
+
*/
|
|
186
|
+
getFormatReferences(): IRange.FixableCoords[];
|
|
187
|
+
/**
|
|
188
|
+
* Returns the distinct stable nameIds of the named references in this formula
|
|
189
|
+
* (see `collectNamedIds`). Direct only, never descends into a name's body —
|
|
190
|
+
* transitivity is carried by the dependency graph. Used by `recompileNamed`'s all3D
|
|
191
|
+
* scan to find the formulas to invalidate when a named formula changes.
|
|
192
|
+
*
|
|
193
|
+
* @remarks
|
|
194
|
+
* NOT a projection of {@link IFormulaBlockView.getReferences} - that list is per-POSITION and
|
|
195
|
+
* index-aligned to `FormulaToken.referenceIndex` (null slots kept), while this is deduped,
|
|
196
|
+
* position-free, skips bound `LET`/`LAMBDA` parameters, and is cached on the compiled formula.
|
|
197
|
+
* Ids rather than {@link NamedReference}s because every caller compares ids (against
|
|
198
|
+
* `recompileNamed`'s targets, `IndirectSymbolProvider.reconcile()`).
|
|
199
|
+
*
|
|
200
|
+
* Engine-side: no view-side caller. `ICalcGrid.getNamedReferencesAt` is the range form - the
|
|
201
|
+
* union of this over the blocks a range covers - and is how `Sheet` asks.
|
|
60
202
|
*/
|
|
61
|
-
|
|
203
|
+
getNamedIds(): string[];
|
|
62
204
|
/**
|
|
63
205
|
* Returns a new formula block with the reference at `index` replaced.
|
|
64
206
|
*
|
|
65
|
-
* @param index The index of the reference to replace (aligned to {@link getReferences}).
|
|
207
|
+
* @param index The index of the reference to replace (aligned to {@link IFormulaBlock.getReferences}).
|
|
66
208
|
* @param reference The new reference — the {@link ReferenceCoords} TYPE carries the shape intent:
|
|
67
209
|
* - an {@link IRange.FixableCellCoords} (single cell) collapses an existing range to a lone cell
|
|
68
210
|
* (`A1:B2` → `A1`, dropping the `:`);
|
|
@@ -71,6 +213,10 @@ export interface IFormulaBlock {
|
|
|
71
213
|
* - a {@link NamedReference} replaces a named ref with another named ref;
|
|
72
214
|
* - a {@link FormulaError.Ref} injects a `#REF!`; `null` clears.
|
|
73
215
|
* @param options See {@link SetReferenceOptions}.
|
|
216
|
+
*
|
|
217
|
+
* @remarks
|
|
218
|
+
* PURE — returns a new block rather than rewriting this one. The committed form is
|
|
219
|
+
* `ICalcGrid.setReferenceAt`, which rewrites inside a transaction batch.
|
|
74
220
|
*/
|
|
75
221
|
setReferenceAt(index: number, reference: ReferenceCoords, options?: SetReferenceOptions): this;
|
|
76
222
|
/**
|
|
@@ -83,23 +229,54 @@ export interface IFormulaBlock {
|
|
|
83
229
|
* @remarks
|
|
84
230
|
* This is used for moving formulas between grids and requires the formula block to be able to update all of its precedents based on the new and old grid ids.
|
|
85
231
|
* This is required for cut/paste and drag fill between sheets.
|
|
232
|
+
*
|
|
233
|
+
* Its one caller outside the engine is `Sheet._imageWatchBody`, which composes it with
|
|
234
|
+
* `createFormulaBlock` and `getTextAt` — compiler work, so it stays with the compiled block
|
|
235
|
+
* rather than following the read view.
|
|
86
236
|
*/
|
|
87
237
|
reanchorReferences(scopeFrom: string, force?: boolean): this;
|
|
88
238
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
239
|
+
* This is the eval used internally by graph.
|
|
240
|
+
* precedents must be an array of either IRange or Scalar.
|
|
241
|
+
*
|
|
242
|
+
* @param row The row of the cell to evaluate.
|
|
243
|
+
* @param column The column of the cell to evaluate.
|
|
244
|
+
* @param evalIndex The index of the evaluation to use from the tokens.
|
|
245
|
+
*
|
|
246
|
+
* @remarks
|
|
247
|
+
* Engine-side: evaluating needs the calc scope. A caller reaches it through
|
|
248
|
+
* `ICalcGrid.evaluateAt`, which establishes that scope and is async.
|
|
249
|
+
*
|
|
250
|
+
* The precedents can be passed in as a performance optimization graph caches them as it calculates.
|
|
92
251
|
*/
|
|
93
|
-
|
|
252
|
+
evaluateAt(row: number, column: number, evalIndex?: number): any;
|
|
94
253
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
254
|
+
* Finalizes a raw value from {@link IFormulaBlock.evaluateAt} for RETURN to a caller:
|
|
255
|
+
* collapses a range to its anchor scalar (implicit intersection) and prepares a spillable range.
|
|
256
|
+
* A multi-area result (`=(A1:A3,C1:C3)`, or a name whose body is a comma union) stays an
|
|
257
|
+
* **array**, one finalized area per element, so an API caller receives every area. Applied by
|
|
258
|
+
* the return sites (`IFormula.evaluate()`, `ICalculation.evaluate()`) — `evaluateAt` itself
|
|
259
|
+
* returns the raw value so a consumer (e.g. a named reference used by a function) sees the
|
|
260
|
+
* reference intact.
|
|
261
|
+
*
|
|
262
|
+
* @see {@link IFormulaBlock.finalizeValueForCell} for the write-to-a-grid variant.
|
|
98
263
|
*/
|
|
99
|
-
|
|
264
|
+
finalizeValue(value: any): any;
|
|
265
|
+
/**
|
|
266
|
+
* {@link IFormulaBlock.finalizeValue} plus the one rule that is specific to STORING a result
|
|
267
|
+
* in a single grid cell: a cell has no representation for a multi-area union, so an array of
|
|
268
|
+
* areas becomes `#VALUE!`. Applied by the executor when committing to a grid; returning a
|
|
269
|
+
* multi-area through the API is legal and uses {@link IFormulaBlock.finalizeValue} instead.
|
|
270
|
+
*/
|
|
271
|
+
finalizeValueForCell(value: any): any;
|
|
272
|
+
/**
|
|
273
|
+
* Replaces the scope of every ref qualified with the stable id `fromScopeId` by `toScopeId` — a
|
|
274
|
+
* sheet id, a 3-D span id, or another. Unqualified refs are left untouched.
|
|
275
|
+
*/
|
|
276
|
+
replaceScopeIds(fromScopeId: string | null, toScopeId: string | null): this;
|
|
100
277
|
/**
|
|
101
278
|
* Returns the reference at `index`, or `null` if out of range.
|
|
102
|
-
* Convenience single-slot accessor aligned to {@link getReferences}.
|
|
279
|
+
* Convenience single-slot accessor aligned to {@link IFormulaBlock.getReferences}.
|
|
103
280
|
*/
|
|
104
281
|
getReferenceAt(row: number, column: number, index: number): ReferenceCoords;
|
|
105
282
|
/**
|
|
@@ -118,6 +295,23 @@ export interface IFormulaBlock {
|
|
|
118
295
|
* * Returns as absolute coordinates.
|
|
119
296
|
*/
|
|
120
297
|
resolvedPrecedentsAt(row: number, column: number, includeInvalidIntersect?: boolean, verticalAbs?: boolean[], horizontalAbs?: boolean[]): readonly (Readonly<IRange.FixableCoords> | FormulaError.Known)[];
|
|
298
|
+
/**
|
|
299
|
+
* The relative form of {@link IFormulaBlock.resolvedPrecedentsAt} when that answer is a pure
|
|
300
|
+
* TRANSLATION of the formula's own references — one edge per root reference, at the asking
|
|
301
|
+
* cell's offset — or `null` when it is not.
|
|
302
|
+
*
|
|
303
|
+
* @remarks
|
|
304
|
+
* This is what lets a block of many cells stop storing an edge list per cell: with a template
|
|
305
|
+
* in hand, a cell's edges are its own position plus the relative rects here, so they can be
|
|
306
|
+
* materialized on demand into one reusable buffer instead of allocated a million times over.
|
|
307
|
+
*
|
|
308
|
+
* `null` for everything the resolver actually has to RESOLVE rather than translate — a name to
|
|
309
|
+
* flatten into the caller's edges, a table reference, a range/intersection/union operator, a
|
|
310
|
+
* computed operand. Those blocks keep their per-cell lists. A broken reference (`#REF!`) is not
|
|
311
|
+
* among them: it is the same error at every cell and rides the template as an edge that
|
|
312
|
+
* translates to nothing.
|
|
313
|
+
*/
|
|
314
|
+
getPrecedentTemplate(): PrecedentTemplate | null;
|
|
121
315
|
/**
|
|
122
316
|
* Wraps the formula in an implicit reference operator if hasSpill returns true and the formula
|
|
123
317
|
* expects a spill.
|
|
@@ -130,28 +324,9 @@ export interface IFormulaBlock {
|
|
|
130
324
|
* This is used for importing Excel as it doesn't always add '@' for backward compatibility.
|
|
131
325
|
*/
|
|
132
326
|
wrapImplicit(rowIndex: number, colIndex: number, setSpillCells: Set<string>): this;
|
|
133
|
-
/**
|
|
134
|
-
* @see
|
|
135
|
-
* { @link ICalculation.IFormula.isReferenceOnly }
|
|
136
|
-
*/
|
|
137
|
-
isReferenceOnly(): boolean;
|
|
138
|
-
/**
|
|
139
|
-
* Return an error with the formula.
|
|
140
|
-
*
|
|
141
|
-
* @remarks
|
|
142
|
-
* This is not a value error but that the formula is unable to resolve.
|
|
143
|
-
*/
|
|
144
|
-
getError(): FormulaError.Parse | null;
|
|
145
|
-
/**
|
|
146
|
-
* Returns the distinct stable nameIds of the named references in this formula
|
|
147
|
-
* (see `collectNamedIds`). Direct only, never descends into a name's body —
|
|
148
|
-
* transitivity is carried by the dependency graph. Used by `recompileNamed`'s all3D
|
|
149
|
-
* scan to find the formulas to invalidate when a named formula changes.
|
|
150
|
-
*/
|
|
151
|
-
getNamedIds(): string[];
|
|
152
327
|
/**
|
|
153
328
|
* Returns the distinct stable fake ids of the direct indirect-symbol references in this formula —
|
|
154
|
-
* named formulas AND tables. Superset of {@link getNamedIds}.
|
|
329
|
+
* named formulas AND tables. Superset of {@link IFormulaBlock.getNamedIds}.
|
|
155
330
|
*
|
|
156
331
|
* @remarks
|
|
157
332
|
* Used to reverse-invalidate dependents when a name/table's resolution changes (add/heal, delete,
|
|
@@ -171,6 +346,25 @@ export interface IFormulaBlock {
|
|
|
171
346
|
* either all of them call a total function or none do.
|
|
172
347
|
*/
|
|
173
348
|
hasTotals(): boolean;
|
|
349
|
+
/**
|
|
350
|
+
* Whether the cells of a block running this formula whose relative inputs are all blank share
|
|
351
|
+
* one value within a pass, as far as the formula TEXT can say.
|
|
352
|
+
*
|
|
353
|
+
* @remarks
|
|
354
|
+
* Read straight off the compiled cache — see `CompiledFormula.isBlankCacheable`. The block's
|
|
355
|
+
* own gates (a precedent template, not array-entered) and the pass's run-time ones are checked
|
|
356
|
+
* by the consumer; `false` here settles it without them.
|
|
357
|
+
*
|
|
358
|
+
* @param arrayMode For a block whose every cell is its own 1x1 array-entered extent — see
|
|
359
|
+
* `CompiledFormula.isBlankCacheableArray`.
|
|
360
|
+
*/
|
|
361
|
+
isBlankCacheable(arrayMode?: boolean): boolean;
|
|
362
|
+
/**
|
|
363
|
+
* Prepares the formula to be evaluated under a first-cell demand — as the body of a block whose
|
|
364
|
+
* every cell is its own 1x1 array-entered extent — by marking which nodes only ever have element
|
|
365
|
+
* `[0,0]` read (`CompilerUtils.annotateFirstCell`). Idempotent.
|
|
366
|
+
*/
|
|
367
|
+
demandFirstCell(): void;
|
|
174
368
|
/**
|
|
175
369
|
* If the formula is logically equal to another formula.
|
|
176
370
|
*
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IFunction } from '@sheetxl/primitives';
|
|
2
|
+
import { ILambdaValue } from '../../primitives/LambdaBrand';
|
|
2
3
|
import { ASTNode } from '../compiler/ASTTypes';
|
|
3
4
|
import { CompiledFormula } from '../compiler/Types';
|
|
4
5
|
import { IFormulaBlock } from './IFormulaBlock';
|
|
@@ -29,10 +30,7 @@ export interface LambdaParam {
|
|
|
29
30
|
readonly slot: number;
|
|
30
31
|
/** The declared spelling — for arity messages and (later) the wizard signature. */
|
|
31
32
|
readonly name: string;
|
|
32
|
-
/**
|
|
33
|
-
* Declared optional (`[b]`). Always `false` until P2.5 lands the `[b]` parse; the apply arity
|
|
34
|
-
* rule is already written against it.
|
|
35
|
-
*/
|
|
33
|
+
/** Declared optional (`[b]`) — an absent trailing argument is legal at and after it. */
|
|
36
34
|
readonly optional: boolean;
|
|
37
35
|
}
|
|
38
36
|
/**
|
|
@@ -49,9 +47,11 @@ export interface LambdaParam {
|
|
|
49
47
|
* creating formula's register file at the moment the `LAMBDA` node evaluated. The copy is what
|
|
50
48
|
* makes recursion sound — a self-recursive named lambda re-evaluates the SHARED named body block
|
|
51
49
|
* at every level, clobbering the block's live registers, and only a captured copy keeps an outer
|
|
52
|
-
* activation's environment intact underneath it.
|
|
50
|
+
* activation's environment intact underneath it. The snapshot is also the ACTIVATION: every
|
|
51
|
+
* application of the value runs its body in these registers, and only a re-entrant application
|
|
52
|
+
* copies them (`FormulaBlock._evaluateBody`).
|
|
53
53
|
*/
|
|
54
|
-
export declare class LambdaValue {
|
|
54
|
+
export declare class LambdaValue implements ILambdaValue {
|
|
55
55
|
/** The declared parameters, in order. */
|
|
56
56
|
readonly params: readonly LambdaParam[];
|
|
57
57
|
/** The body subtree (excluded from the eager execution list — design §3.3). */
|
|
@@ -71,12 +71,10 @@ export declare class LambdaValue {
|
|
|
71
71
|
/** The anchor the owner was being evaluated at — deferred name resolution re-uses it. */
|
|
72
72
|
readonly anchorRow: number;
|
|
73
73
|
readonly anchorCol: number;
|
|
74
|
-
/**
|
|
75
|
-
* The function-value brand, shared with {@link FunctionValue} — checked structurally by the
|
|
76
|
-
* coercion sites (`coerceScalar`, `addCoercedValue`, the operators), which cannot import this
|
|
77
|
-
* calculation-private module.
|
|
78
|
-
*/
|
|
74
|
+
/** @inheritdoc ILambdaValue.isLambda */
|
|
79
75
|
readonly isLambda: true;
|
|
76
|
+
/** Applications of this value currently running in `regs` — see the class remarks. */
|
|
77
|
+
active: number;
|
|
80
78
|
constructor(
|
|
81
79
|
/** The declared parameters, in order. */
|
|
82
80
|
params: readonly LambdaParam[],
|
|
@@ -112,10 +110,10 @@ export declare class LambdaValue {
|
|
|
112
110
|
* Shares the `isLambda` brand: both are function values, and every non-callee consumer treats them
|
|
113
111
|
* identically (cell → `#CALC!`, coercion → `#VALUE!`). Apply dispatches to the function itself.
|
|
114
112
|
*/
|
|
115
|
-
export declare class FunctionValue {
|
|
113
|
+
export declare class FunctionValue implements ILambdaValue {
|
|
116
114
|
/** The referenced function. */
|
|
117
115
|
readonly fn: IFunction;
|
|
118
|
-
/** @
|
|
116
|
+
/** @inheritdoc ILambdaValue.isLambda */
|
|
119
117
|
readonly isLambda: true;
|
|
120
118
|
constructor(
|
|
121
119
|
/** The referenced function. */
|
|
@@ -131,13 +129,14 @@ export declare class FunctionValue {
|
|
|
131
129
|
get [Symbol.toStringTag](): string;
|
|
132
130
|
}
|
|
133
131
|
/**
|
|
134
|
-
* The sentinel
|
|
132
|
+
* The sentinel a binding holds when its argument was supplied EMPTY — an explicitly empty slot at
|
|
133
|
+
* a lambda or `LET` call (`f(,1)`, `LET(x,,…)`), or an absent trailing argument at an OPTIONAL
|
|
134
|
+
* parameter (design §3.4).
|
|
135
135
|
*
|
|
136
136
|
* @remarks
|
|
137
137
|
* `ISOMITTED(x)` answers TRUE for it and FALSE for everything else; EVERY other consumer reads it
|
|
138
138
|
* as BLANK. The sentinel never escapes a frame: reads coerce it to blank at the use site
|
|
139
|
-
* (`readFrameValue`), except in the argument slot of `ISOMITTED` itself.
|
|
140
|
-
* lands the `[b]` optional-parameter parse — no declaration can mark a parameter optional yet.
|
|
139
|
+
* (`readFrameValue`), except in the argument slot of `ISOMITTED` itself.
|
|
141
140
|
*/
|
|
142
141
|
export declare const OMITTED: unique symbol;
|
|
143
142
|
/**
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { ILazy } from '@sheetxl/primitives';
|
|
2
|
+
import { ASTNode } from '../compiler/ASTTypes';
|
|
3
|
+
import { IFormulaBlock } from './IFormulaBlock';
|
|
4
|
+
/**
|
|
5
|
+
* The handle a `Lazy` parameter receives — one argument's subtree, anchored at the calling cell,
|
|
6
|
+
* that the engine has either not evaluated yet or has evaluated already.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* CALCULATION-PRIVATE as a class; the INTERFACE (`ILazy`) is public, because a function author
|
|
10
|
+
* declares the slot and may read it. The sibling of `LambdaValue`, and the same idea: "evaluate
|
|
11
|
+
* this piece of the formula later, anchored at this cell". The difference is only what it closes
|
|
12
|
+
* over — an argument's subtree rather than a lambda's body — and that this one takes no
|
|
13
|
+
* parameters, so forcing it is a call with an empty argument list.
|
|
14
|
+
*
|
|
15
|
+
* A body does one of two things with it, and the engine answers for both:
|
|
16
|
+
*
|
|
17
|
+
* - **returns it unread** — the engine sees its own handle come back as the call's result and
|
|
18
|
+
* evaluates the subtree then, on its normal path, so an ASYNC subtree is fine there.
|
|
19
|
+
* - **forces it** with {@link getValue} — which happens mid-body, where the engine has no way to
|
|
20
|
+
* wait, so a subtree that answers a promise is `#VALUE!` rather than a wrong answer.
|
|
21
|
+
*
|
|
22
|
+
* A DEFERRED handle carries the block, the node and the registers to evaluate against; a
|
|
23
|
+
* PRE-FILLED one carries the value alone ({@link LazyValue.of}) and is what the engine hands over
|
|
24
|
+
* whenever it declines to defer — an empty or literal argument, or a call that is about to lift.
|
|
25
|
+
* The author cannot tell them apart, which is the point: laziness is the engine's to grant.
|
|
26
|
+
*
|
|
27
|
+
* ### Lifetime, and why the deferred handles are pooled
|
|
28
|
+
*
|
|
29
|
+
* A handle lives exactly as long as the call it was built for, and that life is SYNCHRONOUS: the
|
|
30
|
+
* body either forces it in place or returns it unread, and the executor forces a returned one
|
|
31
|
+
* before it moves on. Nothing retains a handle past that point — every value-layer boundary
|
|
32
|
+
* (coercion, the operators, a range's typed read, a cell's final value) recognizes and refuses
|
|
33
|
+
* one. So a deferred handle is not allocated per call; it is taken from a pool indexed by call
|
|
34
|
+
* DEPTH and argument position ({@link deferred}) and re-pointed at the next call's subtree. Depth,
|
|
35
|
+
* not node: the same `IF` node re-enters at a deeper level under recursion, and a nested call
|
|
36
|
+
* inside a body (a forced arm that itself calls `IF`) must not re-point the handles the enclosing
|
|
37
|
+
* body is still holding. The executor brackets each lazy call with {@link enter} / {@link leave},
|
|
38
|
+
* which is what makes the nested call land one level deeper.
|
|
39
|
+
*
|
|
40
|
+
* The async case is safe under this: {@link _force} stores the promise as the value, and the
|
|
41
|
+
* executor's chain holds the promise, not the handle.
|
|
42
|
+
*/
|
|
43
|
+
export declare class LazyValue implements ILazy {
|
|
44
|
+
/** @inheritdoc ILazy.isLazy */
|
|
45
|
+
readonly isLazy: true;
|
|
46
|
+
/** The forced value, once {@link _force} has run. */
|
|
47
|
+
private _value;
|
|
48
|
+
private _forced;
|
|
49
|
+
/** The block whose formula the subtree belongs to, or `null` when pre-filled. */
|
|
50
|
+
private _owner;
|
|
51
|
+
/** The argument's subtree root. */
|
|
52
|
+
private _node;
|
|
53
|
+
/** The register file to evaluate against — the block's own, or a lambda activation's. */
|
|
54
|
+
private _regs;
|
|
55
|
+
/** The lambda-parameter frame in scope, when the call sits inside a lambda body. */
|
|
56
|
+
private _frame;
|
|
57
|
+
/** The anchor the owner is being evaluated at. */
|
|
58
|
+
private _row;
|
|
59
|
+
private _col;
|
|
60
|
+
private constructor();
|
|
61
|
+
/**
|
|
62
|
+
* One row of handles per call depth, one handle per argument position — see the class remarks.
|
|
63
|
+
* Grows to the deepest nesting and widest lazy call seen, and is never trimmed.
|
|
64
|
+
*/
|
|
65
|
+
private static readonly _pool;
|
|
66
|
+
private static _depth;
|
|
67
|
+
/**
|
|
68
|
+
* Opens the handle row for a lazy call about to be filled. Answers the depth to pass to
|
|
69
|
+
* {@link deferred} and back to {@link leave}, in a `finally`.
|
|
70
|
+
*/
|
|
71
|
+
static enter(): number;
|
|
72
|
+
/** Closes the row {@link enter} opened. Restores rather than decrements, so a throw cannot skew it. */
|
|
73
|
+
static leave(depth: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* A handle over a subtree the engine has NOT evaluated — the pooled handle at `(depth, slot)`,
|
|
76
|
+
* re-pointed. Valid until {@link leave} closes the depth; the caller must not keep it past that.
|
|
77
|
+
*/
|
|
78
|
+
static deferred(depth: number, slot: number, owner: IFormulaBlock, node: ASTNode, regs: any[], frame: ReadonlyMap<number, any> | null, row: number, column: number): LazyValue;
|
|
79
|
+
/** A handle over a value the engine has ALREADY computed — the decline path. */
|
|
80
|
+
static of(value: any): LazyValue;
|
|
81
|
+
/**
|
|
82
|
+
* Re-points a filled handle at another value. The lift's per-element reset: one handle per lazy
|
|
83
|
+
* slot for the whole spill, pointed at each sampled member in turn, instead of {@link of} per
|
|
84
|
+
* element. Only for a handle that was never deferred.
|
|
85
|
+
*/
|
|
86
|
+
_fill(value: any): void;
|
|
87
|
+
/**
|
|
88
|
+
* Evaluates the subtree, at most once. The ENGINE's entry point: a promise here is an async
|
|
89
|
+
* subtree returned unread, which the caller chains like any other async node result.
|
|
90
|
+
*/
|
|
91
|
+
_force(): any;
|
|
92
|
+
/** @inheritdoc ILazy.getValue */
|
|
93
|
+
getValue(): any;
|
|
94
|
+
get [Symbol.toStringTag](): string;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=LazyValue.d.ts.map
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { FormulaError, IRange } from '@sheetxl/primitives';
|
|
2
2
|
import { ISymbolRegistry } from '../symbol';
|
|
3
3
|
import { ICalculation } from '../ICalculation';
|
|
4
|
+
import { ReferenceCoords } from '../Types';
|
|
4
5
|
import { CompilerLocale } from '../compiler/CompilerLocale';
|
|
6
|
+
/**
|
|
7
|
+
* A block's references made absolute at a cell: what `IFormulaBlockView.getReferencesAt` answers.
|
|
8
|
+
* Cells and ranges (a resolved table reference among them) are placed at the cell; a name and a
|
|
9
|
+
* hole pass through.
|
|
10
|
+
*/
|
|
11
|
+
export declare function absoluteReferences(references: readonly ReferenceCoords[], row: number, column: number): ReferenceCoords[];
|
|
5
12
|
/**
|
|
6
13
|
* Resolves all stable IDs in a token array to their display names.
|
|
7
14
|
*
|
|
@@ -14,7 +21,24 @@ import { CompilerLocale } from '../compiler/CompilerLocale';
|
|
|
14
21
|
* When `symbols` is absent (no registry was used at compile time) the tokens
|
|
15
22
|
* already hold display names and are returned as-is.
|
|
16
23
|
*/
|
|
17
|
-
export declare function resolveTokenSymbols(tokens: ICalculation.FormulaToken[], symbols: ISymbolRegistry | null | undefined, canonical?: boolean
|
|
24
|
+
export declare function resolveTokenSymbols(tokens: ICalculation.FormulaToken[], symbols: ISymbolRegistry | null | undefined, canonical?: boolean,
|
|
25
|
+
/**
|
|
26
|
+
* Re-image for a READER rather than for storage. Only an external book reads differently: stored
|
|
27
|
+
* it is `[n]Sheet1` (a position), displayed it is the book's own spelling, and the book half is
|
|
28
|
+
* split into its own {@link TokenType.ExternalReference} token so an editor can color or elide it
|
|
29
|
+
* (DESIGN-EXTERNAL-LINKS §4B).
|
|
30
|
+
*/
|
|
31
|
+
display?: boolean,
|
|
32
|
+
/**
|
|
33
|
+
* The formula's cell (`scope` is its sheet's name or id), for display only. A single-column
|
|
34
|
+
* reference to the table holding it (`Table1[Qty]`, `Table1[@Qty]`) drops the table name, as Excel
|
|
35
|
+
* shows it; every other structured reference keeps it.
|
|
36
|
+
*/
|
|
37
|
+
home?: {
|
|
38
|
+
scope: string | null;
|
|
39
|
+
rowIndex: number;
|
|
40
|
+
colIndex: number;
|
|
41
|
+
} | null): ICalculation.FormulaToken[];
|
|
18
42
|
/**
|
|
19
43
|
* Token Utils used by FormulaBlock
|
|
20
44
|
*/
|