@sheetxl/sdk 0.8.0-beta.11 → 0.8.0-beta.13
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 +172 -0
- package/browser/esm/{BMyDRQ716j79h_bH.mjs → -GEhXGMfNcWmHPby.mjs} +6 -6
- package/browser/esm/{B7aUIvgUjncMMD_i.mjs → 9WXf_BTKjW1cQisZ.mjs} +95 -94
- package/browser/esm/{PcHFjNzQsE54POri.mjs → B2SgIPPBX0wjzuq8.mjs} +1 -1
- package/browser/esm/{DEiPS3Dr-s4fPbVZ.mjs → BC2RwlNwCdRywkoD.mjs} +1 -1
- package/browser/esm/{BpgskG1Er_lGQ_yS.mjs → BEqhm9xAUPiHUCFv.mjs} +1 -1
- package/browser/esm/BHgqi7KNrl7Vjr0W.mjs +348 -0
- package/browser/esm/{BkBhLS0l6z8sxI6D.mjs → BJKH0tDRx2FeSWvt.mjs} +2 -2
- package/browser/esm/{CU3DmJ-YnVVrC1_k.mjs → BTgWtqdQoh2cB6DL.mjs} +1 -1
- package/browser/esm/{Dyq_ivuHvlXLwPCl.mjs → BVshV1iY3bcUH9_E.mjs} +1135 -1129
- package/browser/esm/{BFagR2JeWs74iAG3.mjs → BYQ63XU7JzB4_itX.mjs} +1 -1
- package/browser/esm/{DvAaxH6z_tGvrRzl.mjs → Bax5aOzQkbHKXW_X.mjs} +239 -230
- package/browser/esm/{DLLE0FZNsKxbBzRn.mjs → BiDGKhtzV6yIy66o.mjs} +45 -45
- package/browser/esm/BmYrWK5OmHRtgyqM.mjs +367 -0
- package/browser/esm/{ClPfI4lODvCece29.mjs → BoAlHgjPQ6mxb_oO.mjs} +74 -74
- package/browser/esm/{BoV6zPBnfqCBCqZ7.mjs → C0mjTq8lhrX3HiPa.mjs} +4328 -3166
- package/browser/esm/{nvU0ClAbf0g94YBK.mjs → C5j0IdwtYkWlOftv.mjs} +604 -596
- package/browser/esm/{DWNzqw7DUKwoxjri.mjs → CL84-iL2QeKlLzo5.mjs} +2 -2
- package/browser/esm/{Ctjb0SsxV4K4MMqG.mjs → CLkBe-6n-pStQhnz.mjs} +2 -2
- package/{node/esm/CZICGK_ss0HoGHCP.mjs → browser/esm/CPzfhTPX2Y4dHX2p.mjs} +2 -2
- package/browser/esm/{Dlmig06rIo7cInRk.mjs → CSJuIjYUOE387FIP.mjs} +1 -1
- package/browser/esm/{BjkCiv5Jz6WYKZeu.mjs → Cdw0mGuoV3IU2LhR.mjs} +2 -2
- package/browser/esm/Ced5uyofOWHuL_Jy.mjs +114 -0
- package/browser/esm/{CkxWugaJFjDGZNZ-.mjs → Ci_LJ4S_GvYX0STI.mjs} +1 -1
- package/browser/esm/{zlLuW405RSguy4Kn.mjs → CwygVKP_RXmne5Ot.mjs} +47 -47
- package/browser/esm/{C4MqfLn9Dm-l3OIk.mjs → D-mfK0noQrM2jZLT.mjs} +1 -1
- package/browser/esm/{BnG31I6Oj_HEtSPS.mjs → D9SH_8v3FYCnxOFK.mjs} +1 -1
- package/browser/esm/{BVDiOXGMc5_FMGfy.mjs → DPD8fop6az9HZNiK.mjs} +2 -2
- package/browser/esm/DW-MmlgMH87l-_cw.mjs +302 -0
- package/browser/esm/{CaB7J-xgfKO2uAkG.mjs → DctIlUsO78-OU2ht.mjs} +2 -2
- package/browser/esm/DdcKkVb4jM6Y_epY.mjs +184 -0
- package/browser/esm/{CHU6iu_WGlm7fLET.mjs → DfKzE0IY0TjaEIxG.mjs} +1 -1
- package/browser/esm/{C2VbEI_XVAoseAwa.mjs → DkloMquaR1pbZCER.mjs} +44 -43
- package/browser/esm/{C16ycKja6zG0crV_.mjs → Dz86-De57bv2VYIi.mjs} +19447 -16481
- package/browser/esm/{BtvLTTfSBdAKplVG.mjs → HApSgmV2FXRRwQac.mjs} +1 -1
- package/browser/esm/{CQYjO777cmAznUzK.mjs → IbVAQU4YqtFqLwYk.mjs} +1 -1
- package/browser/esm/index.mjs +823 -644
- package/browser/esm/mHQ95RAfxHzcUN2r.mjs +18 -0
- package/browser/esm/pm00uZZu_H3gxHFx.mjs +117 -0
- package/browser/esm/{CV5EGEjG5_-CPpP0.mjs → quEvwgrEuOb0h3q-.mjs} +1926 -1298
- package/browser/esm/{ClbvFbFzFzXLBKNN.mjs → zZngLMg6mg6nnNGX.mjs} +66 -66
- package/licenses/dependencies.txt +71 -1
- package/node/esm/{BqiexuA89caYnAPz.mjs → -K4Cek-bTUItkB_8.mjs} +1 -1
- package/node/esm/-b8yNV4v9qiq8EMY.mjs +117 -0
- package/node/esm/{D8zEN-6ZdDqDvTxM.mjs → 1V-m67YHbxmg3xk2.mjs} +74 -74
- package/node/esm/{D_t5AUxSm7_icjzq.mjs → 4ROAfJC1mokmqubv.mjs} +1 -1
- package/node/esm/B89et7t3uRmtxk4v.mjs +115 -0
- package/node/esm/BKBkCBNGhMU0nQdY.mjs +372 -0
- package/node/esm/{OVfaSb506tNSIvbv.mjs → BQ2XqExomMceAjfe.mjs} +20822 -18373
- package/node/esm/{2Kihw_-5lVTEnwMa.mjs → Bfg7qjCXCwXbzW3K.mjs} +1 -1
- package/node/esm/{D1TKBVmoKGAXf37B.mjs → BtMeAB_dqJnOfzJM.mjs} +2 -2
- package/node/esm/{D6e2z7eZpxOJXHc7.mjs → Byc_bxU_MdjYtt0x.mjs} +1 -1
- package/node/esm/{CNCNJNg890KdgkWh.mjs → Bzrl292TNCK3Cpid.mjs} +1 -1
- package/node/esm/{De2IONBxQhz-Qbyh.mjs → C0P9zspoypRAj7yv.mjs} +1 -1
- package/node/esm/{CzXT00vrQa1_gvW9.mjs → C9gpMN3galHGZyoK.mjs} +1 -1
- package/node/esm/CKCG2peOkTq0gIIW.mjs +310 -0
- package/node/esm/{DUTskXCXref-IJnI.mjs → CWBS90g3Hz-kQDkY.mjs} +46 -46
- package/node/esm/{BIwObuhTJYf0jpUa.mjs → CoGSVnn-hNMtTEus.mjs} +2 -2
- package/node/esm/{CwePQwTILHHjGDkZ.mjs → CzrLqStvrcPE2-hb.mjs} +194 -185
- package/node/esm/{CCN5vD410obwdz38.mjs → D16EdlZG1hX5WUUK.mjs} +96 -95
- package/node/esm/{CDHdgJXH2vS71WMc.mjs → D1mDga2K5sjs8y07.mjs} +1 -1
- package/node/esm/{cGwrLA1RCE-WhJ7w.mjs → D2jtztjE6c23RKvZ.mjs} +1 -1
- package/node/esm/{Bbf1Pm9Gk7YpLTvg.mjs → D9nRcWsYk3M82iD8.mjs} +1 -1
- package/node/esm/{yavzZOiZW_EjG9lE.mjs → DALYzTxZ9Ur9C69Q.mjs} +1 -1
- package/node/esm/{DkwIPzKc3UwdUIfM.mjs → DF0nL7s01dp7n0Bx.mjs} +10 -10
- package/node/esm/{DNRhGK-8Tr9xcRyc.mjs → DO5ldLqhTvIfPXLW.mjs} +3348 -2610
- package/node/esm/DQz8J8ci7EJdqbuB.mjs +351 -0
- package/node/esm/{BIRq1kT7lLRzns9t.mjs → DR2OQTKqqyIkZnse.mjs} +2 -2
- package/node/esm/{857CIBgQgGpnqrXk.mjs → DSTLPBgpsGW6qP9e.mjs} +73 -73
- package/node/esm/{CGp6VZL-gZa9Uezx.mjs → DiXp7KSOZUSWXaZ5.mjs} +1 -1
- package/node/esm/{CZiqiay42tFTrLI4.mjs → DwvXHsycOQR219c7.mjs} +1 -1
- package/node/esm/{B21JjOLghRoDOrkx.mjs → Hc6B04OyVzHx2F5I.mjs} +38 -37
- package/node/esm/{Ct3h15sCus4Tgt6M.mjs → NkPNHsq2T3DXg76x.mjs} +561 -553
- package/node/esm/{B084DssTcdBheTp_.mjs → Nl_IIkO1jbk0s9i-.mjs} +4552 -3373
- package/node/esm/{D2KBymQJd1XhpeQD.mjs → OQT5lGqq8a4r5xNa.mjs} +1 -1
- package/node/esm/OTaaFGhF-k_iwobp.mjs +18 -0
- package/node/esm/{CdJHUJSBRHZoryPe.mjs → Z1elC_roIu7LhceZ.mjs} +53 -53
- package/{browser/esm/D5np__Jb1euAyaLw.mjs → node/esm/e3F3OVXCxLJrSukW.mjs} +2 -2
- package/node/esm/index.mjs +806 -625
- package/node/esm/{mFiBSM7XgBHV9AY7.mjs → suOBVUz-pca6ilJH.mjs} +1607 -1601
- package/package.json +8 -6
- package/resources/contents.json +108 -0
- package/resources/fonts/aptos-bold-italic.hinted.json +125 -0
- package/resources/fonts/aptos-bold-italic.metrics.json +221 -0
- package/resources/fonts/aptos-bold-italic.rows.json +8 -0
- package/resources/fonts/aptos-bold.hinted.json +125 -0
- package/resources/fonts/aptos-bold.metrics.json +221 -0
- package/resources/fonts/aptos-bold.rows.json +8 -0
- package/resources/fonts/aptos-display-bold-italic.hinted.json +125 -0
- package/resources/fonts/aptos-display-bold-italic.metrics.json +221 -0
- package/resources/fonts/aptos-display-bold-italic.rows.json +8 -0
- package/resources/fonts/aptos-display-bold.hinted.json +125 -0
- package/resources/fonts/aptos-display-bold.metrics.json +221 -0
- package/resources/fonts/aptos-display-bold.rows.json +8 -0
- package/resources/fonts/aptos-display-italic.hinted.json +124 -0
- package/resources/fonts/aptos-display-italic.metrics.json +221 -0
- package/resources/fonts/aptos-display-italic.rows.json +8 -0
- package/resources/fonts/aptos-display-regular.hinted.json +125 -0
- package/resources/fonts/aptos-display-regular.metrics.json +221 -0
- package/resources/fonts/aptos-display-regular.rows.json +8 -0
- package/resources/fonts/aptos-italic.hinted.json +125 -0
- package/resources/fonts/aptos-italic.metrics.json +221 -0
- package/resources/fonts/aptos-italic.rows.json +8 -0
- package/resources/fonts/aptos-narrow-bold-italic.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-bold-italic.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-bold-italic.rows.json +8 -0
- package/resources/fonts/aptos-narrow-bold.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-bold.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-bold.rows.json +8 -0
- package/resources/fonts/aptos-narrow-italic.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-italic.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-italic.rows.json +8 -0
- package/resources/fonts/aptos-narrow-regular.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-regular.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-regular.rows.json +8 -0
- package/resources/fonts/aptos-regular.hinted.json +125 -0
- package/resources/fonts/aptos-regular.metrics.json +221 -0
- package/resources/fonts/aptos-regular.rows.json +8 -0
- package/resources/fonts/arial-bold-italic.rows.json +0 -1
- package/resources/fonts/arial-bold.rows.json +0 -1
- package/resources/fonts/arial-italic.rows.json +0 -1
- package/resources/fonts/arial-regular.rows.json +0 -1
- package/resources/fonts/calibri-bold-italic.rows.json +0 -1
- package/resources/fonts/calibri-bold.rows.json +0 -1
- package/resources/fonts/calibri-italic.rows.json +0 -1
- package/resources/fonts/calibri-regular.rows.json +0 -1
- package/resources/fonts/cambria-bold-italic.rows.json +0 -1
- package/resources/fonts/cambria-bold.rows.json +0 -1
- package/resources/fonts/cambria-italic.rows.json +0 -1
- package/resources/fonts/cambria-regular.rows.json +0 -1
- package/resources/fonts/contents.json +240 -0
- package/resources/fonts/courier-new-bold-italic.rows.json +0 -1
- package/resources/fonts/courier-new-bold.rows.json +0 -1
- package/resources/fonts/courier-new-italic.rows.json +0 -1
- package/resources/fonts/courier-new-regular.rows.json +0 -1
- package/resources/fonts/times-new-roman-bold-italic.rows.json +0 -1
- package/resources/fonts/times-new-roman-bold.rows.json +0 -1
- package/resources/fonts/times-new-roman-italic.rows.json +0 -1
- package/resources/fonts/times-new-roman-regular.rows.json +0 -1
- package/resources/locales/de/model.msg.json +12 -2
- package/resources/locales/en/model.msg.json +13 -2
- package/types/scripting-api.json +10638 -10446
- package/types/scripting-enums.json +20 -1
- package/types/scripting.d.ts +1536 -477
- package/types/src/.generated/wasm/sdk.d.ts +5 -27
- package/types/src/address/AddressUtils.d.ts +8 -0
- package/types/src/address/_SheetNameQuoteChars.d.ts +3 -0
- package/types/src/{sheet → anomalies}/_Anomalies.d.ts +3 -3
- package/types/src/anomalies/_FocusTable.d.ts +5 -0
- package/types/src/{sheet/_AnomalyFormulaChecks.d.ts → anomalies/_FormulaChecks.d.ts} +10 -2
- package/types/src/{sheet/_AnomalyLabelChecks.d.ts → anomalies/_LabelChecks.d.ts} +1 -1
- package/types/src/anomalies/_LiteralChecks.d.ts +35 -0
- package/types/src/anomalies/_SeriesChecks.d.ts +13 -0
- package/types/src/calculation/Calculation.d.ts +61 -98
- package/types/src/calculation/ExternalBookBindings.d.ts +2 -29
- package/types/src/calculation/ICalculation.d.ts +96 -9
- package/types/src/calculation/NamedFormulaCollection.d.ts +110 -10
- package/types/src/calculation/TokenType.d.ts +0 -10
- package/types/src/calculation/_CloneBoundary.d.ts +0 -24
- package/types/src/calculation/_FormulaToolkit.d.ts +0 -5
- package/types/src/calculation/compiler/ASTTypes.d.ts +6 -15
- package/types/src/calculation/compiler/CompilerUtils.d.ts +0 -227
- package/types/src/calculation/compiler/FormulaLexer.d.ts +0 -8
- package/types/src/calculation/compiler/FormulaParser.d.ts +0 -61
- package/types/src/calculation/compiler/ParserUtils.d.ts +0 -24
- package/types/src/calculation/compiler/Types.d.ts +1 -45
- package/types/src/calculation/engine/CalcBackend.d.ts +83 -127
- package/types/src/calculation/engine/index.d.ts +0 -8
- package/types/src/calculation/executor/CalcExecutor.d.ts +50 -116
- package/types/src/calculation/executor/CalcExecutorUtils.d.ts +47 -12
- package/types/src/calculation/executor/CircularReference.d.ts +0 -17
- package/types/src/calculation/executor/_BlockOrder.d.ts +29 -0
- package/types/src/calculation/executor/_WhatIf.d.ts +31 -0
- package/types/src/calculation/formula/FormulaBlock.d.ts +4 -31
- package/types/src/calculation/formula/FormulaRecordView.d.ts +0 -15
- package/types/src/calculation/formula/IFormulaBlock.d.ts +5 -12
- package/types/src/calculation/formula/LambdaValue.d.ts +0 -15
- package/types/src/calculation/formula/TokenUtils.d.ts +1 -8
- package/types/src/calculation/functions/_DataTableFunction.d.ts +14 -0
- package/types/src/calculation/grid/CalcGrid.d.ts +8 -64
- package/types/src/calculation/grid/CalcGridBackend.d.ts +12 -35
- package/types/src/calculation/grid/CalcGridProxy.d.ts +0 -15
- package/types/src/calculation/grid/CalcGridUtils.d.ts +21 -23
- package/types/src/calculation/grid/ICalcGrid.d.ts +28 -109
- package/types/src/calculation/grid/_CalcRequest.d.ts +17 -33
- package/types/src/calculation/spatial/CircularEntry.d.ts +0 -10
- package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +54 -82
- package/types/src/calculation/spatial/SpillEntry.d.ts +20 -3
- package/types/src/calculation/state/CalcNode.d.ts +0 -1
- package/types/src/calculation/state/CalcScope.d.ts +29 -9
- package/types/src/calculation/state/CalcState.d.ts +19 -9
- package/types/src/calculation/state/CalculationContext.d.ts +32 -38
- package/types/src/calculation/state/DeferredCalls.d.ts +207 -0
- package/types/src/calculation/state/IContextContainer.d.ts +19 -55
- package/types/src/calculation/state/_KeepBlanks.d.ts +5 -0
- package/types/src/calculation/state/_PendingOverlayGrid.d.ts +52 -33
- package/types/src/calculation/state/_WhatIfLayer.d.ts +77 -0
- package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +0 -42
- package/types/src/calculation/symbol/ISymbolRegistry.d.ts +0 -6
- package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +0 -12
- package/types/src/calculation/symbol/SymbolRegistry.d.ts +0 -9
- package/types/src/calculation/toolkit/index.d.ts +0 -8
- package/types/src/cell/ICell.d.ts +59 -54
- package/types/src/cellControl/CellControl.d.ts +67 -0
- package/types/src/cellControl/CellControlCollection.d.ts +29 -0
- package/types/src/cellControl/CellControlRegistry.d.ts +47 -0
- package/types/src/cellControl/ICellControl.d.ts +99 -0
- package/types/src/cellControl/ICellControlCollection.d.ts +67 -0
- package/types/src/cellControl/index.d.ts +4 -0
- package/types/src/cellRange/ICellRange.d.ts +226 -67
- package/types/src/cellRange/ICellRanges.d.ts +4 -3
- package/types/src/chart/Chart.d.ts +0 -16
- package/types/src/chart/_ChartParts.d.ts +0 -39
- package/types/src/chart/_ChartSource.d.ts +0 -14
- package/types/src/chart/createChart.d.ts +1 -1
- package/types/src/chart/kinds/ChartKind.d.ts +4 -4
- package/types/src/chart/kinds/_Placeholder.d.ts +0 -1
- package/types/src/chart/layout/ChartLayout.d.ts +5 -1
- package/types/src/chart/layout/TextMeasurer.d.ts +0 -20
- package/types/src/chart/layout/_LayoutUtils.d.ts +0 -16
- package/types/src/chart/math/BoxStats.d.ts +0 -8
- package/types/src/chart/math/DateUnitCalcs.d.ts +0 -10
- package/types/src/chart/math/Histogram.d.ts +0 -17
- package/types/src/chart/math/OrdUnitCalcs.d.ts +0 -53
- package/types/src/chart/math/Treemap.d.ts +0 -15
- package/types/src/chart/math/Trendlines.d.ts +0 -8
- package/types/src/chart/math/UnitCalcs.d.ts +0 -22
- package/types/src/chart/model/_Edits.d.ts +0 -33
- package/types/src/chart/model/_Grouping.d.ts +0 -25
- package/types/src/chart/model/_Inference.d.ts +0 -18
- package/types/src/chart/model/_NewChart.d.ts +0 -41
- package/types/src/chart/model/_OfPie.d.ts +0 -7
- package/types/src/chart/resolve/_LegacyStyles.d.ts +0 -20
- package/types/src/chart/resolve/_Resolve.d.ts +3 -12
- package/types/src/chart/resolve/_ResolvedChart.d.ts +5 -8
- package/types/src/collections/ISparseGrid.d.ts +11 -2
- package/types/src/collections/MixedTypedArrayList.d.ts +8 -2
- package/types/src/collections/SparseGrid.d.ts +3 -8
- package/types/src/collections/_GridUtils.d.ts +0 -10
- package/types/src/comment/_NoteBox.d.ts +0 -15
- package/types/src/condition/AnchoredConditional.d.ts +3 -25
- package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +0 -49
- package/types/src/condition/BuiltinSelectors/DisplaySelector.d.ts +0 -10
- package/types/src/condition/ICondition.d.ts +2 -2
- package/types/src/condition/_ConditionUtils.d.ts +0 -38
- package/types/src/externalBook/ExternalBookCollection.d.ts +0 -15
- package/types/src/externalBook/ExternalBookName.d.ts +2 -3
- package/types/src/externalBook/IExternalBook.d.ts +16 -18
- package/types/src/fetch/Fetcher.d.ts +15 -0
- package/types/src/fetch/IFetcher.d.ts +48 -0
- package/types/src/fetch/_WorkbookFetch.d.ts +43 -0
- package/types/src/fetch/index.d.ts +3 -0
- package/types/src/fill/PaintUtils.d.ts +3 -1
- package/types/src/font/AdvanceTable.d.ts +16 -42
- package/types/src/font/IFont.d.ts +32 -9
- package/types/src/font/TableFileAdvanceBuilder.d.ts +6 -3
- package/types/src/font/_FontUtils.d.ts +0 -8
- package/types/src/font/_StandIns.d.ts +33 -0
- package/types/src/hyperlink/IHyperlink.d.ts +10 -0
- package/types/src/hyperlink/_Hyperlink.d.ts +4 -1
- package/types/src/index.d.ts +2 -1
- package/types/src/io/IWorkbookIO.d.ts +3 -3
- package/types/src/io/WorkbookOrigin.d.ts +2 -2
- package/types/src/license/LicenseManager.d.ts +2 -1
- package/types/src/license/_Utils.d.ts +4 -3
- package/types/src/license/details.d.ts +3 -1
- package/types/src/license/keys.d.ts +6 -0
- package/types/src/license/license-key.d.ts +15 -33
- package/types/src/license/token.d.ts +55 -0
- package/types/src/named/INamedCollection.d.ts +36 -0
- package/types/src/named/NamedCollection.d.ts +18 -0
- package/types/src/picture/IPicture.d.ts +45 -0
- package/types/src/picture/Picture.d.ts +12 -0
- package/types/src/pivot/PivotTable.d.ts +0 -7
- package/types/src/primitives/AsyncValue.d.ts +46 -0
- package/types/src/primitives/PrimitiveUtils.d.ts +1 -110
- package/types/src/primitives/Range.d.ts +0 -60
- package/types/src/primitives/ScalarCollation.d.ts +0 -106
- package/types/src/primitives/stats/AggregateStats.d.ts +0 -19
- package/types/src/print/PageLayout.d.ts +0 -6
- package/types/src/reference/ReferenceUtils.d.ts +4 -2
- package/types/src/resource/IResource.d.ts +9 -0
- package/types/src/resource/IResourceCollection.d.ts +4 -0
- package/types/src/resource/Resource.d.ts +2 -0
- package/types/src/resource/_AddResource.d.ts +13 -0
- package/types/src/richData/CellImage.d.ts +95 -0
- package/types/src/richData/Hyperlink.d.ts +49 -0
- package/types/src/richData/IRichDataCollection.d.ts +76 -0
- package/types/src/richData/IRichDataKind.d.ts +55 -11
- package/types/src/richData/RichArray.d.ts +42 -0
- package/types/src/richData/RichDataCollection.d.ts +23 -0
- package/types/src/richData/RichDataRegistry.d.ts +52 -14
- package/types/src/richData/RichDataValues.d.ts +20 -0
- package/types/src/richData/RichRecord.d.ts +68 -0
- package/types/src/richData/RichText.d.ts +5 -5
- package/types/src/richData/index.d.ts +6 -0
- package/types/src/scripting/FunctionArguments.d.ts +17 -1
- package/types/src/scripting/FunctionCollection.d.ts +8 -0
- package/types/src/scripting/Scripts.d.ts +10 -0
- package/types/src/scripting/TypedFunction.d.ts +2 -109
- package/types/src/sheet/ICellContainerOptions.d.ts +6 -0
- package/types/src/sheet/IWorksheet.d.ts +26 -22
- package/types/src/sheet/NamedCellRange.d.ts +0 -21
- package/types/src/sheet/SheetCell.d.ts +25 -3
- package/types/src/sheet/SheetRange.d.ts +8 -2
- package/types/src/sheet/SheetRanges.d.ts +2 -2
- package/types/src/sheet/Worksheet.d.ts +117 -104
- package/types/src/sheet/_DelimitedText.d.ts +13 -0
- package/types/src/sheet/_IgnoredErrors.d.ts +0 -12
- package/types/src/sheet/_ListenerAnchor.d.ts +7 -1
- package/types/src/sheet/_ScalarListFactory.d.ts +46 -17
- package/types/src/sheet/_SheetCoords.d.ts +0 -7
- package/types/src/sheet/_SheetFilterUtils.d.ts +0 -8
- package/types/src/sheet/_SheetMutations.d.ts +4 -1
- package/types/src/sheet/_SheetStateReader.d.ts +0 -10
- package/types/src/sheet/_SheetStateTypes.d.ts +23 -14
- package/types/src/sheet/_SheetUtils.d.ts +1 -1
- package/types/src/sheet/style/_RowLine.d.ts +32 -0
- package/types/src/sheet/style/_StyleUtils.d.ts +6 -14
- package/types/src/sheetView/_SheetViewUtils.d.ts +0 -1
- package/types/src/slicer/_BuiltInSlicerStyles.d.ts +0 -5
- package/types/src/style/ICellStyle.d.ts +4 -0
- package/types/src/table/AnchoredTable.d.ts +0 -147
- package/types/src/text/TextFrame.d.ts +4 -1
- package/types/src/text/TextStacked.d.ts +0 -24
- package/types/src/text/TextWrapper.d.ts +3 -5
- package/types/src/text/_LineBox.d.ts +24 -0
- package/types/src/text/_TextUtils.d.ts +5 -2
- package/types/src/text/_TextWrapperFallback.d.ts +2 -1
- package/types/src/wasm/sdkWasm.d.ts +1 -1
- package/types/src/workbook/IWorkbook.d.ts +40 -1
- package/types/src/workbook/Workbook.d.ts +25 -13
- package/types/src/workbook/WorkbookRanges.d.ts +1 -1
- package/browser/esm/BGOFfpxr2jPIdqmV.mjs +0 -40
- package/browser/esm/BLoUBId2xZpXAK_H.mjs +0 -698
- package/browser/esm/C5E6zSGAALWf61n4.mjs +0 -199
- package/browser/esm/S2dNNx1a5ydRnARM.mjs +0 -367
- package/browser/esm/f1IoRb7tEb0QmCSt.mjs +0 -110
- package/browser/esm/gssVX_FH1XFN-twD.mjs +0 -210
- package/node/esm/BrCKGFRsX_ezFJ4B.mjs +0 -811
- package/node/esm/DOU54VsOjG-m-NyQ.mjs +0 -210
- package/node/esm/Db0v7zXNnyjBIjjI.mjs +0 -372
- package/node/esm/Df1bL6VFvrqIdSLB.mjs +0 -40
- package/node/esm/DrTZbfemSLq2mseG.mjs +0 -111
- package/types/src/dataTable/DataTable.d.ts +0 -67
- package/types/src/dataTable/DataTableCollection.d.ts +0 -19
- package/types/src/dataTable/IDataTable.d.ts +0 -99
- package/types/src/dataTable/IDataTableCollection.d.ts +0 -18
- package/types/src/dataTable/index.d.ts +0 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRange, IFormulaContext } from '@sheetxl/primitives';
|
|
1
|
+
import { IRange, Scalar, IFormulaContext } from '@sheetxl/primitives';
|
|
2
2
|
import { FixedPackedArray } from '../../primitives/PrimitiveUtils';
|
|
3
3
|
import { PendingOverlayGrid } from '../state/_PendingOverlayGrid';
|
|
4
4
|
import { ISpatialMap, ISpatialMap3D } from '../../collections';
|
|
@@ -6,21 +6,20 @@ import { FormulaSpatialValue, PrecedentSpatialValue, PrecedentKind } from '../sp
|
|
|
6
6
|
import { ICalcGrid, CalcGridBackend } from '../grid';
|
|
7
7
|
import { IContextContainer, CalcNode } from '../state';
|
|
8
8
|
import { ReadHook } from '../state/_ReadObservedGrid';
|
|
9
|
+
import { DeferredCall } from '../state/DeferredCalls';
|
|
10
|
+
import { AsyncValue } from '../../primitives/AsyncValue';
|
|
11
|
+
import { WhatIfTable } from './_WhatIf';
|
|
12
|
+
import { WhatIfLayer } from '../state/_WhatIfLayer';
|
|
9
13
|
import { CircularReference, CycleHost } from './CircularReference';
|
|
10
14
|
/**
|
|
11
15
|
* Executes a calculation cycle: collect → mark-and-plan → evaluate.
|
|
12
16
|
*
|
|
13
|
-
* Owns cycle counters
|
|
14
|
-
*
|
|
15
|
-
* state; CalcExecutor receives snapshots and returns results.
|
|
17
|
+
* Owns cycle counters and all transient per-pass state. `Calculation` is the controller that
|
|
18
|
+
* owns persistent spatial state; CalcExecutor receives snapshots and returns results.
|
|
16
19
|
*/
|
|
17
20
|
export declare class CalcExecutor {
|
|
18
21
|
protected _container: IContextContainer;
|
|
19
22
|
protected _context: IFormulaContext;
|
|
20
|
-
private readonly _requestCalculate;
|
|
21
|
-
protected _pendingCalcs: Map<CalcNode, number>;
|
|
22
|
-
/** Debounced drain of {@link _pendingCalcs} into the volatile set; one instance for the executor's lifetime. */
|
|
23
|
-
private readonly _flushPendingCalcs;
|
|
24
23
|
/**
|
|
25
24
|
* The last pass's circular roster: every node it evaluated by demand (a `doMarkAndPlan` that
|
|
26
25
|
* could not order, or the iteration guard's hand-over) plus every node whose dynamic read
|
|
@@ -91,6 +90,15 @@ export declare class CalcExecutor {
|
|
|
91
90
|
protected _deferredLength: number;
|
|
92
91
|
/** The pass the hook answers for; inert otherwise. Set by `doMarkAndPlan`, released with `_gridUpdates`. */
|
|
93
92
|
protected _passActive: boolean;
|
|
93
|
+
/** The pass in progress is a settle pass (`ExecuteOptions.settle`): its seeds are the settles' alone. */
|
|
94
|
+
protected _settlePass: boolean;
|
|
95
|
+
/** The pass a load owes: see {@link _savedAnswer}. */
|
|
96
|
+
protected _loadPass: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* The holder {@link _takeDeferred} made for an evaluation whose value is a range: the value keeps
|
|
99
|
+
* its shape for the spill layout, which puts the holder on the spill's entry. Taken at once.
|
|
100
|
+
*/
|
|
101
|
+
protected _spillHolder: AsyncValue<DeferredCall> | null;
|
|
94
102
|
protected _passCycleId: number;
|
|
95
103
|
protected _passMarkId: number;
|
|
96
104
|
/**
|
|
@@ -105,13 +113,14 @@ export declare class CalcExecutor {
|
|
|
105
113
|
* while a pass evaluates. Released with {@link _flush}.
|
|
106
114
|
*/
|
|
107
115
|
_overlays: Map<string, PendingOverlayGrid> | null;
|
|
116
|
+
_whatIf: Map<string, WhatIfLayer> | null;
|
|
108
117
|
/**
|
|
109
|
-
*
|
|
110
|
-
* (
|
|
111
|
-
* share moved under a reader ({@link _dirtyBlankReaders}) — handed to `doEvaluate`'s incremental
|
|
112
|
-
* dirty set at the end of the plan, so the next iteration of the pass collects the first cell
|
|
113
|
-
* by cell and the readers of the second.
|
|
118
|
+
* A reactive pass under `AutomaticExceptTables`: a `TABLE` node is not evaluated, and is left
|
|
119
|
+
* dirty ({@link _skippedTables}). Set for the length of `execute`.
|
|
114
120
|
*/
|
|
121
|
+
protected _exceptTables: boolean;
|
|
122
|
+
/** The `TABLE` nodes the pass in progress skipped, for `ExecuteResult.skippedTables`. */
|
|
123
|
+
protected _skippedTables: Set<CalcNode>;
|
|
115
124
|
protected _fallbackDirty: ISpatialMap | null;
|
|
116
125
|
/**
|
|
117
126
|
* The cycle table (design §7.3): per cycle id, one live {@link CircularReference} holding the
|
|
@@ -193,20 +202,9 @@ export declare class CalcExecutor {
|
|
|
193
202
|
protected _planMemos: [CalcExecutor.PlanMemo, CalcExecutor.PlanMemo];
|
|
194
203
|
/** The memos' LRU clock. Its own counter, NOT `PlanStats.passes`: a stats reset must not reorder the slots. */
|
|
195
204
|
protected _planMemoClock: number;
|
|
196
|
-
/**
|
|
197
|
-
* Nodes with an async promise in flight. Per executor, NOT module scope — module scope would
|
|
198
|
-
* cross-pollute workbook instances (undo to 0 formulas needs to clear these; TODO - revisit
|
|
199
|
-
* how we manage promises).
|
|
200
|
-
*/
|
|
201
|
-
protected _pendingPromises: Set<CalcNode>;
|
|
202
205
|
_gridUpdates: Map<string, ICalcGrid.IncrementalUpdates> | null;
|
|
203
206
|
_addDynamicPrecedent: ((node: CalcNode, range: IRange.Coords | undefined, kind: PrecedentKind) => void) | null;
|
|
204
|
-
constructor(container: IContextContainer, context: IFormulaContext
|
|
205
|
-
/**
|
|
206
|
-
* Called when an async formula promise resolves. Adds the node to the pending
|
|
207
|
-
* queue and debounces a new calculation cycle via `requestCalculate`.
|
|
208
|
-
*/
|
|
209
|
-
scheduleRecalculation: (cycleId: number, calcNode?: CalcNode) => void;
|
|
207
|
+
constructor(container: IContextContainer, context: IFormulaContext);
|
|
210
208
|
/**
|
|
211
209
|
* Runs a full calculation pass.
|
|
212
210
|
*
|
|
@@ -217,23 +215,15 @@ export declare class CalcExecutor {
|
|
|
217
215
|
*/
|
|
218
216
|
execute(cycleId: number, options: CalcExecutor.ExecuteOptions, state: CalcExecutor.ExecuteState): CalcExecutor.ExecuteResult | null;
|
|
219
217
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
* is a cycle; `Unevaluated` suspends the reader until it is done; `Evaluated` (in the pending
|
|
225
|
-
* batch) is committed on the spot and read; `Done` with a cycle role makes the reader
|
|
226
|
-
* downstream. Any other cell is a value. Inert outside a pass, so a reference built during one
|
|
227
|
-
* and read later (a spill committed afterwards) is plain values.
|
|
228
|
-
*
|
|
229
|
-
* `prefetch` is the rectangle an ITERATION was asked for, announced before its first read. Only
|
|
230
|
-
* the `Unevaluated` decision belongs to it — bringing what the sweep may need forward is free,
|
|
231
|
-
* and over-eager is harmless (design §4.3) — while `Waiting` and a finished cycle role are left
|
|
232
|
-
* to the per-position reports the sweep makes, which is what stops an early-exit lookup from
|
|
233
|
-
* reporting the tail it never opened (plan item 1). It answers whether those reports can say
|
|
234
|
-
* anything at all: a rectangle holding no node of this pass and nothing the sheet shows in a
|
|
235
|
-
* cycle is swept unobserved.
|
|
218
|
+
* What a cell answers with instead of the calls its evaluation just made, on the pass a load owes:
|
|
219
|
+
* the value it was saved with, which is the cached answer until something asks the source. `undefined`
|
|
220
|
+
* when it should ask: the file marks it to calculate on load, nothing was saved, what was saved is
|
|
221
|
+
* not an answer (`#BUSY!`, a blocked spill), or the function is volatile.
|
|
236
222
|
*/
|
|
223
|
+
protected _savedAnswer(node: CalcNode): Scalar | IRange | undefined;
|
|
224
|
+
protected _takeDeferred(node: CalcNode, value: any): any;
|
|
225
|
+
/** The cells of the `TABLE` nodes the pass skipped, scoped; `undefined` for none. */
|
|
226
|
+
private _takeSkippedTables;
|
|
237
227
|
private _onPassRead;
|
|
238
228
|
/**
|
|
239
229
|
* A read of a `Done` cycle node by the node being evaluated: the reader is downstream of that
|
|
@@ -298,27 +288,6 @@ export declare class CalcExecutor {
|
|
|
298
288
|
* slot `length` on; returns the new length.
|
|
299
289
|
*/
|
|
300
290
|
private _collectUnevaluated;
|
|
301
|
-
/**
|
|
302
|
-
* Evaluates `worklist` by demand (DESIGN-CIRCULAR-CALC.md §4.3): each node is evaluated with the
|
|
303
|
-
* read hook armed; a read that lands on one not yet evaluated suspends the reader and evaluates
|
|
304
|
-
* that one first (`NeedsFirst`); a read that lands on one already suspended — waiting,
|
|
305
|
-
* transitively, on the reader — is a cycle (`Circular`), and the in-progress stack from it up
|
|
306
|
-
* to the reader are the members, written `0`. A node that reads a member is downstream and
|
|
307
|
-
* writes `0` too. Everything else simply computes: an unorderable static edge that is never
|
|
308
|
-
* read (`OFFSET`'s anchor, `ROW`'s argument, an untaken `IF` branch) makes no cycle.
|
|
309
|
-
*
|
|
310
|
-
* @remarks
|
|
311
|
-
* Two callers: `doEvaluate` when the plan reaches the nodes `doMarkAndPlan` could not order
|
|
312
|
-
* (the batch, after everything ordered is committed), and `doEvaluate` again for a single
|
|
313
|
-
* ordered node whose dynamic read landed on a node not yet evaluated — the same suspension,
|
|
314
|
-
* on the ordinary path (§5). Every node evaluated here is flagged `circular`, so the plan
|
|
315
|
-
* takes its `demandValue` when it reaches it, and its finalized scalar is already in the
|
|
316
|
-
* overlay's demand layer for later lazy reads (`_pushDemand`); `flush` commits the ordered
|
|
317
|
-
* path's pending batch when a read needs a value still sitting in it. Flat: the stack is an
|
|
318
|
-
* array, so a 1,560-row chain is 1,560 evaluations, not 1,560 JS frames. A node is retried at
|
|
319
|
-
* most once per `NeedsFirst` it raises, and with the prefetch of its static precedents that is
|
|
320
|
-
* normally once.
|
|
321
|
-
*/
|
|
322
291
|
protected doDemandEvaluate(cycleId: number, getUpdates: (scope: string) => ICalcGrid.IncrementalUpdates, worklist: readonly CalcNode[], flush: () => void): void;
|
|
323
292
|
/**
|
|
324
293
|
* The finalized scalar goes into the overlay's demand layer now, so a later lazy read sees it;
|
|
@@ -332,6 +301,8 @@ export declare class CalcExecutor {
|
|
|
332
301
|
* `flush` of the `doEvaluate` that made it, and only that one.
|
|
333
302
|
*/
|
|
334
303
|
private _overlayFor;
|
|
304
|
+
evaluateWhatIf(table: WhatIfTable): Scalar[][];
|
|
305
|
+
private _evaluateWhatIf;
|
|
335
306
|
/**
|
|
336
307
|
* A finalized result fitted to its cell when the block makes every cell its own 1x1
|
|
337
308
|
* array-entered extent (`FormulaSpatialValue.arrayFirstCell`): element `[0,0]` of a range, so the
|
|
@@ -349,30 +320,6 @@ export declare class CalcExecutor {
|
|
|
349
320
|
* arm it skipped), all of it final by now, so it is evaluated without the pass's read hook.
|
|
350
321
|
*/
|
|
351
322
|
private _isPositionFree;
|
|
352
|
-
/**
|
|
353
|
-
* The representative of a gated block has finalized (PLAN-WATCHES-BLANK-AWARE §4): its scalar is
|
|
354
|
-
* shared with the block's blank region, or the gate is closed and the region is re-collected
|
|
355
|
-
* cell by cell.
|
|
356
|
-
*
|
|
357
|
-
* @remarks
|
|
358
|
-
* Shared only when nothing the evaluation read was per cell (`CalcScope.perCellRead`: a draw, a
|
|
359
|
-
* computed reference; a position unless {@link _isPositionFree} rules it out), the result is a
|
|
360
|
-
* scalar, and the node ran on its own - not a promise, not pending on one, not in a cycle. A
|
|
361
|
-
* per-cell read is a fact of the formula and
|
|
362
|
-
* closes the gate for good ({@link FormulaSpatialValue.blankRefused}); the rest may not recur
|
|
363
|
-
* and close it for this pass ({@link _fallbackBlank}).
|
|
364
|
-
*
|
|
365
|
-
* How the region is shared depends on who can read it (§4c). A block in a SHEET grid is read
|
|
366
|
-
* by other formulas, the sheet and the error index, all through the grid's values, so the
|
|
367
|
-
* scalar is written as runs - one per column of each blank rectangle, which for a column block
|
|
368
|
-
* is one run. A block in a grid that SHADOWS a sheet (a watch body, a one-shot evaluation) has
|
|
369
|
-
* exactly one reader, the range its owner holds, and that range answers the region as its empty
|
|
370
|
-
* value from the block (`FormulaSpatialValue.getBlankValueWithin`): nothing is written, whatever
|
|
371
|
-
* the region's size, and what an earlier pass stored there is removed so the block's answer is
|
|
372
|
-
* the one read.
|
|
373
|
-
*
|
|
374
|
-
* @param refuse The caller's own reasons the result cannot stand for the region.
|
|
375
|
-
*/
|
|
376
323
|
private _finalizeRepresentative;
|
|
377
324
|
/**
|
|
378
325
|
* Marks dirty the cells of a shared blank region whose value the share just moved, wherever a
|
|
@@ -460,29 +407,6 @@ export declare class CalcExecutor {
|
|
|
460
407
|
* them run on (iteration on). Returns the stack index of `read`.
|
|
461
408
|
*/
|
|
462
409
|
private _markCycleSlice;
|
|
463
|
-
/**
|
|
464
|
-
* Iterative calculation (design §6.3) over the members {@link _demandRun} marked. Each sweep
|
|
465
|
-
* evaluates them in ADDRESS order, each read seeing the latest value (Gauss–Seidel in row-major
|
|
466
|
-
* order, as Excel: `probe-iterative.ps1`), until no member moved by `maxChange` or
|
|
467
|
-
* `maxIteration` sweeps ran.
|
|
468
|
-
* The limits are global, as in Excel — one unsettled member keeps every cycle of the pass
|
|
469
|
-
* sweeping. Downstream nodes read the members once more afterwards; one that feeds a swept node
|
|
470
|
-
* is swept with them instead (`_onMemberRead`), so the rest feed no cycle and need no sweeping.
|
|
471
|
-
* Converged means a sweep over a list that did not grow moved nothing by `maxChange`: every
|
|
472
|
-
* node a swept node reads is then swept itself or does not move in this pass, so the state is a
|
|
473
|
-
* fixed point and not a fragment's. The members are then registered as volatile so the next
|
|
474
|
-
* recalculation re-runs them, which is how `=A1+1` advances per recalc (Excel re-iterates every
|
|
475
|
-
* cycle on every `Calculate()`).
|
|
476
|
-
*
|
|
477
|
-
* @remarks
|
|
478
|
-
* The evaluation that FOUND the members ran in dependency order — `B1 = B2+1` needs `B2` first,
|
|
479
|
-
* whichever of the two the plan reached first — so its results are not a sweep of this order,
|
|
480
|
-
* and counting them as one costs a step. The members go back to the values the pass found them
|
|
481
|
-
* at; a member that had none is then evaluated once, in address order, for the entry evaluation
|
|
482
|
-
* Excel gave it when it was written (§2.4), and every one of the `maxIteration` sweeps runs on
|
|
483
|
-
* top of that. Discovery's results are never read: a node that read a member is downstream, and
|
|
484
|
-
* evaluates again below.
|
|
485
|
-
*/
|
|
486
410
|
private _demandSweep;
|
|
487
411
|
/** Clears the `IterHit` flags of the hits not consumed by {@link _demandRun}'s loop and empties the list. */
|
|
488
412
|
private _drainIterHits;
|
|
@@ -520,7 +444,7 @@ export declare class CalcExecutor {
|
|
|
520
444
|
* A `CalcNode` is a plain graph object reachable by identity long after the grid has replaced or
|
|
521
445
|
* dropped its block — the same hazard `doCollectVolatileCalcs` guards against with `isLiveBlock`.
|
|
522
446
|
*/
|
|
523
|
-
|
|
447
|
+
isLiveNode(node: CalcNode): boolean;
|
|
524
448
|
/**
|
|
525
449
|
* @internal
|
|
526
450
|
* A copy of the last pass's circular roster — see {@link _circularNodesLength} — each node
|
|
@@ -565,6 +489,8 @@ export declare class CalcExecutor {
|
|
|
565
489
|
* Uses Kahn's algorithm.
|
|
566
490
|
*/
|
|
567
491
|
doMarkAndPlan(cycleId: number, markId: number, initial: FixedPackedArray<CalcNode>, plan: FixedPackedArray<CalcNode>, forceDemand?: boolean): boolean;
|
|
492
|
+
/** Stamps a plan as the order later passes may take a subset of (§1.2); `orderedLength` is where its demand appendix starts. */
|
|
493
|
+
private _stampPlan;
|
|
568
494
|
/**
|
|
569
495
|
* The remembered plan whose seed set is exactly this pass's, at this epoch — or `null`. The
|
|
570
496
|
* length check first: it is what rejects the common miss (a single-cell pass against a bulk
|
|
@@ -587,7 +513,7 @@ export declare class CalcExecutor {
|
|
|
587
513
|
* one if there is one, else the least recently used.
|
|
588
514
|
*/
|
|
589
515
|
private _rememberPlan;
|
|
590
|
-
doEvaluate(cycleId: number, getUpdates: (scope: string) => ICalcGrid.IncrementalUpdates,
|
|
516
|
+
doEvaluate(cycleId: number, getUpdates: (scope: string) => ICalcGrid.IncrementalUpdates, commit: (calcNodes: CalcNode[], calcNodesLength: number) => void, forceFull: boolean, plan: FixedPackedArray<CalcNode>): ISpatialMap | undefined;
|
|
591
517
|
}
|
|
592
518
|
export declare namespace CalcExecutor {
|
|
593
519
|
/** Per-pass options derived from ICalculation.CalculateOptions */
|
|
@@ -603,10 +529,19 @@ export declare namespace CalcExecutor {
|
|
|
603
529
|
* The grid to seed the pass FROM — `ICalculation.CalculateOptions.scope`, i.e. "Calculate Sheet".
|
|
604
530
|
*/
|
|
605
531
|
scopeGridId?: string;
|
|
532
|
+
settle?: boolean;
|
|
533
|
+
/**
|
|
534
|
+
* `ICalculation.CalculateOptions.external`: the calls the pass makes fetch past the workbook's
|
|
535
|
+
* cache, to the source.
|
|
536
|
+
*/
|
|
537
|
+
external?: boolean;
|
|
538
|
+
/** The pass a load owes: a cell with a saved value answers with it rather than asking the source. */
|
|
539
|
+
load?: boolean;
|
|
606
540
|
/**
|
|
607
541
|
* Iterative calculation (design §6.3) for the pass; `null`/absent with it off.
|
|
608
542
|
*/
|
|
609
543
|
iterate?: IterateOptions | null;
|
|
544
|
+
exceptTables?: boolean;
|
|
610
545
|
}
|
|
611
546
|
/** The two limits of `ICalculation.IterativeCalculation`. */
|
|
612
547
|
interface IterateOptions {
|
|
@@ -692,12 +627,9 @@ export declare namespace CalcExecutor {
|
|
|
692
627
|
/** Discovery searches skipped (or verified) because `dependentsEpoch` was current. */
|
|
693
628
|
dependentsCacheHits: number;
|
|
694
629
|
dependentsCacheMisses: number;
|
|
695
|
-
/**
|
|
696
|
-
* Nodes evaluated on the ORDERED path (`evaluateAt` from `doEvaluate`); `evaluations` counts
|
|
697
|
-
* the demand path. Their sum is every formula run — what blank-aware evaluation
|
|
698
|
-
* (PLAN-WATCHES-BLANK-AWARE §4) reduces to the touched cells plus one.
|
|
699
|
-
*/
|
|
700
630
|
evaluated: number;
|
|
631
|
+
/** Plans ordered by formula block, with no cell-level walk (`orderByBlocks`). */
|
|
632
|
+
blockOrdered: number;
|
|
701
633
|
discoveryMs: number;
|
|
702
634
|
inDegreeMs: number;
|
|
703
635
|
kahnMs: number;
|
|
@@ -708,6 +640,8 @@ export declare namespace CalcExecutor {
|
|
|
708
640
|
precedentSpatial: ISpatialMap3D<PrecedentSpatialValue>;
|
|
709
641
|
dynamicByBlock: Map<FormulaSpatialValue, ISpatialMap.Entry<PrecedentSpatialValue>[]>;
|
|
710
642
|
lastUpdates: Map<string, ICalcGrid.IncrementalUpdates>;
|
|
643
|
+
/** The cells of the `TABLE` nodes an `exceptTables` pass skipped, scoped: still out of date. */
|
|
644
|
+
skippedTables?: IRange.Coords[];
|
|
711
645
|
}
|
|
712
646
|
}
|
|
713
647
|
//# sourceMappingURL=CalcExecutor.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IRange, Scalar } from '@sheetxl/primitives';
|
|
2
|
-
import { Tuple, ISpatialMap } from '../../collections';
|
|
2
|
+
import { Tuple, ISpatialMap, ISpatialQuery } from '../../collections';
|
|
3
3
|
import { CalcSignal } from '../../primitives/CalcSignal';
|
|
4
4
|
import { CalcNode } from '../state';
|
|
5
5
|
import { PrecedentSpatialValue, FormulaSpatialValue } from '../spatial';
|
|
@@ -45,27 +45,62 @@ export declare function rangeToTuples(range: IRange, offsetMajor?: number, offse
|
|
|
45
45
|
* is the packing, and the result reads its grid alone. Anything else is returned as it is.
|
|
46
46
|
*/
|
|
47
47
|
export declare function packForReturn<T>(finalized: T): T;
|
|
48
|
-
/**
|
|
49
|
-
* Fits a result to a fixed (array-entered) extent, per dimension: a dimension of 1 broadcasts, a
|
|
50
|
-
* longer one is clipped, a shorter one is padded with `#N/A`. Measured against Excel
|
|
51
|
-
* (`probe-cse.ps1`): `=SEQUENCE(5)` into 3 rows is `1,2,3`; `=SEQUENCE(2)` into 5 rows is
|
|
52
|
-
* `1,2,#N/A,#N/A,#N/A`; `=SUM(H1:H5)` into 3x3 is the sum nine times; a 1x3 into 3x3 repeats the
|
|
53
|
-
* row; a 3x1 into 3x3 repeats the column.
|
|
54
|
-
*
|
|
55
|
-
* @returns The fitted values, row-major, exactly `rowCount` x `colCount`. A blank source cell stays
|
|
56
|
-
* blank (`null`), as it does when a dynamic array spills. The fit is a fixed point - fitting the
|
|
57
|
-
* result again yields the same shape - so nothing downstream needs a "do not resize" guard.
|
|
58
|
-
*/
|
|
59
48
|
export declare function fitToExtent(value: Scalar | IRange, rowCount: number, colCount: number): Scalar[][];
|
|
60
49
|
/**
|
|
61
50
|
* {@link fitToExtent} as grid tuples over `coords`, in the orientation of the grid they are written
|
|
62
51
|
* to. `null` when every fitted cell is blank.
|
|
63
52
|
*/
|
|
64
53
|
export declare function fitToTuples(value: Scalar | IRange, coords: IRange.Coords, isColumn: boolean): Tuple.Region<Scalar> | null;
|
|
54
|
+
/**
|
|
55
|
+
* Visits, for every precedent entry that reads into `region`, the window of its block whose cells
|
|
56
|
+
* can see the region - the discovery step of a dirty walk (`CalcExecutor.doCollectDirtyCalcs`)
|
|
57
|
+
* and of a data table's affected set (`_WhatIf`).
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* An entry spans the REFERENCED region, which may be larger than the block (a relative reference
|
|
61
|
+
* is widened per block cell), so the region is mapped back through that overflow to the block's
|
|
62
|
+
* own coordinates. An anchored endpoint sits at the same coordinate for every cell of the block,
|
|
63
|
+
* so it stops bounding which cells saw the change - that side opens to the whole block. The END
|
|
64
|
+
* endpoint bounds the near side, the START endpoint the far side (see `PrecedentSpatialValue`).
|
|
65
|
+
* A dynamic entry (`index < 0`) has no extent to map: it is reported whole.
|
|
66
|
+
*
|
|
67
|
+
* @param scratch An array the search fills; the caller's, reused across calls.
|
|
68
|
+
*/
|
|
69
|
+
export declare function visitReaderWindows(precedentSpatial: ISpatialQuery<PrecedentSpatialValue>, region: IRange.Coords, scratch: ISpatialMap.Entry<PrecedentSpatialValue>[], visitWindow: (block: FormulaSpatialValue, rowFrom: number, rowTo: number, colFrom: number, colTo: number) => void, visitDynamic: (entry: ISpatialMap.Entry<PrecedentSpatialValue>, block: FormulaSpatialValue) => void): void;
|
|
70
|
+
/**
|
|
71
|
+
* Whether every cell of a static entry's block reads exactly one cell through it.
|
|
72
|
+
*
|
|
73
|
+
* @remarks
|
|
74
|
+
* Only such a reader looks at what a precedent pushes. A range reader builds its range when it
|
|
75
|
+
* evaluates, over that same slot. A reader this answers `false` for and that does read one cell (the
|
|
76
|
+
* first of `$A$1:A1`, whose range grows from there) has an empty slot, and reads the cell itself.
|
|
77
|
+
*/
|
|
78
|
+
export declare function readsOneCell(depEntry: ISpatialMap.Entry<PrecedentSpatialValue>): boolean;
|
|
65
79
|
/**
|
|
66
80
|
* TODO - document and/or rationalize with visitPrecedentBlock
|
|
67
81
|
*/
|
|
68
82
|
export declare function visitDependencyBlock(depEntry: ISpatialMap.Entry<PrecedentSpatialValue>, rowIndex: number, colIndex: number, callbackFn: (calc: CalcNode) => void, mint?: MintWindow | null): void;
|
|
83
|
+
/** The part of a reader block an entry has reached so far in one discovery, absolute and closed. */
|
|
84
|
+
export interface ReachedWindow {
|
|
85
|
+
rowFrom: number;
|
|
86
|
+
rowTo: number;
|
|
87
|
+
colFrom: number;
|
|
88
|
+
colTo: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* {@link visitDependencyBlock} for discovery, which only has to reach each reader once.
|
|
92
|
+
*
|
|
93
|
+
* @remarks
|
|
94
|
+
* Every cell of a range reports to the same readers, so a running total reached from each of its n
|
|
95
|
+
* inputs would walk n²/2 readers to find one input's worth. What an entry has reached is kept in
|
|
96
|
+
* `reached` for the discovery, and each visit walks only what it adds: nothing for a running total
|
|
97
|
+
* after its first input, one reader per input for a sliding window. A window that does not meet what
|
|
98
|
+
* is held is walked whole, and the larger of the two is kept; that only costs a repeat, since
|
|
99
|
+
* reaching a reader twice changes nothing.
|
|
100
|
+
*
|
|
101
|
+
* An entry whose readers read one cell has one reader per input, and nothing to save.
|
|
102
|
+
*/
|
|
103
|
+
export declare function discoverDependencyBlock(depEntry: ISpatialMap.Entry<PrecedentSpatialValue>, rowIndex: number, colIndex: number, callbackFn: (calc: CalcNode) => void, mint: MintWindow, reached: Map<PrecedentSpatialValue, ReachedWindow>): void;
|
|
69
104
|
/**
|
|
70
105
|
* Visit the cells of a dependent block that read a spill's BODY — the extent an anchor at
|
|
71
106
|
* (`anchorRow`, `anchorCol`) occupies, MINUS the anchor cell itself.
|
|
@@ -13,23 +13,6 @@ export interface CycleHost {
|
|
|
13
13
|
/** The sheet name for a grid id, or `undefined` for a virtual grid (a named formula's body). */
|
|
14
14
|
resolveScope(gridId: string): string | undefined;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
17
|
-
* One reference cycle (DESIGN-CIRCULAR-CALC.md §7.3): the executor's record of it and its public
|
|
18
|
-
* face in one — the object a `Feature.Circular` region carries as its payload and
|
|
19
|
-
* `ICell.getCircularReference()` answers. It holds the nodes the sheet index currently shows as
|
|
20
|
-
* its members and as downstream of it, the interned index payloads, and how the sweep that
|
|
21
|
-
* settled it ended. It persists across passes — a node moves between cycles when a commit writes
|
|
22
|
-
* its delta (`_trackCircular`) — and is dropped when its last node leaves.
|
|
23
|
-
*
|
|
24
|
-
* @remarks
|
|
25
|
-
* Every read filters through {@link CycleHost.isLiveNode}: a pass that deletes the offending
|
|
26
|
-
* formula never plans, so the sets cannot clear themselves, and a member is counted only while
|
|
27
|
-
* its cell still holds the block the cycle was found in (design §7.3, trap 5).
|
|
28
|
-
*
|
|
29
|
-
* The iteration answers come from the sweep that settled the cycle (design §6.3). A cycle id is
|
|
30
|
-
* minted by the pass that finds it, so a cycle evaluated with iteration off is a different object
|
|
31
|
-
* with no record — `isIterative()` is exactly "a sweep settled this one".
|
|
32
|
-
*/
|
|
33
16
|
export declare class CircularReference implements ICalculation.ICircularReference {
|
|
34
17
|
protected readonly _host: CycleHost;
|
|
35
18
|
protected readonly _cycleId: number;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ISpatialMap3D } from '../../collections';
|
|
2
|
+
import { FormulaSpatialValue } from '../spatial';
|
|
3
|
+
import { CalcNode } from '../state';
|
|
4
|
+
/**
|
|
5
|
+
* Orders a pass by formula block rather than by cell.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* A range reader adds an edge per cell it reads, so ordering a running total cell by cell visits
|
|
9
|
+
* n²/2 edges to learn that one column goes before another. A block's references are the same at
|
|
10
|
+
* every cell at that cell's offset, so its reads are known from its corners, and the block graph is
|
|
11
|
+
* as many vertices as the sheet has distinct fills.
|
|
12
|
+
*
|
|
13
|
+
* Every edge between cells lies inside an edge between their blocks, so a block order that exists
|
|
14
|
+
* is a valid cell order. Within a block the cells go in row order or column order, whichever puts
|
|
15
|
+
* everything the block reads of itself first. The block graph can refuse an order the cells have
|
|
16
|
+
* (`A1=B1`, `B1=A2`, filled down: each column reads the other); that answer is `false`, and is not
|
|
17
|
+
* a statement about cycles. Cell-level ordering decides those.
|
|
18
|
+
*
|
|
19
|
+
* Inputs and spills are the caller's: a spill's body edges are not in a block's references, and a
|
|
20
|
+
* reader of a cycle shown elsewhere is found by the cell-level walk.
|
|
21
|
+
*
|
|
22
|
+
* @param nodes The affected nodes.
|
|
23
|
+
* @param length The number of affected nodes.
|
|
24
|
+
* @param formulas The formula map the references resolve against.
|
|
25
|
+
* @param out Receives the nodes in order. Written over on `false` as well.
|
|
26
|
+
* @returns Whether `out` is a valid order.
|
|
27
|
+
*/
|
|
28
|
+
export declare function orderByBlocks(nodes: CalcNode[], length: number, formulas: ISpatialMap3D<FormulaSpatialValue>, out: CalcNode[]): boolean;
|
|
29
|
+
//# sourceMappingURL=_BlockOrder.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IRange, Scalar } from '@sheetxl/primitives';
|
|
2
|
+
import { CalcNode, IContextContainer } from '../state';
|
|
3
|
+
import { WhatIfLayer } from '../state/_WhatIfLayer';
|
|
4
|
+
export interface WhatIfTable {
|
|
5
|
+
gridId: string;
|
|
6
|
+
/** The top-left result cell: where the `TABLE` formula sits. */
|
|
7
|
+
row: number;
|
|
8
|
+
col: number;
|
|
9
|
+
rows: number;
|
|
10
|
+
cols: number;
|
|
11
|
+
/** The cell the row axis values go into; `null` for a one-input table down a column. */
|
|
12
|
+
rowInput: IRange.CellCoords | null;
|
|
13
|
+
/** The cell the column axis values go into; `null` for a one-input table along a row. */
|
|
14
|
+
colInput: IRange.CellCoords | null;
|
|
15
|
+
}
|
|
16
|
+
/** What the what-if evaluation asks of the executor it runs inside. */
|
|
17
|
+
export interface WhatIfHost {
|
|
18
|
+
readonly container: IContextContainer;
|
|
19
|
+
/**
|
|
20
|
+
* Evaluates `node` where it sits, every read answered through the installed what-if layers: the
|
|
21
|
+
* cell's finalized value, a range for a spill.
|
|
22
|
+
*/
|
|
23
|
+
evaluate(node: CalcNode): Scalar | IRange;
|
|
24
|
+
/** The layer of a grid, made on first use over what the grid reads as now. */
|
|
25
|
+
layerFor(gridId: string): WhatIfLayer;
|
|
26
|
+
}
|
|
27
|
+
/** The rectangles of a table's edge: the formula cells, then the axes. All on the table's grid. */
|
|
28
|
+
export declare function whatIfEdge(table: WhatIfTable): IRange.Coords[];
|
|
29
|
+
export declare function whatIfAffectedSet(container: IContextContainer, table: WhatIfTable): CalcNode[];
|
|
30
|
+
export declare function runWhatIf(host: WhatIfHost, table: WhatIfTable, affected: readonly CalcNode[]): Scalar[][];
|
|
31
|
+
//# sourceMappingURL=_WhatIf.d.ts.map
|
|
@@ -80,6 +80,8 @@ export declare class FormulaBlock implements IFormulaBlock {
|
|
|
80
80
|
getReferencedSymbolIds(): string[];
|
|
81
81
|
/** @inheritdoc IFormulaBlock.hasTotals */
|
|
82
82
|
hasTotals(): boolean;
|
|
83
|
+
/** @inheritdoc IFormulaBlock.hasDataTable */
|
|
84
|
+
hasDataTable(): boolean;
|
|
83
85
|
/** @inheritdoc IFormulaBlock.hasVolatile */
|
|
84
86
|
hasVolatile(): boolean;
|
|
85
87
|
/** @inheritdoc IFormulaBlock.isBlankCacheable */
|
|
@@ -174,36 +176,8 @@ export declare class FormulaBlock implements IFormulaBlock {
|
|
|
174
176
|
* shared named-body block at every level, and only a copy keeps an outer activation's captured
|
|
175
177
|
* environment intact underneath it. See `LambdaValue`.
|
|
176
178
|
*/
|
|
177
|
-
/**
|
|
178
|
-
* Fills the shared argument buffer for a call that has at least one LAZY argument, deciding per
|
|
179
|
-
* call whether to defer at all.
|
|
180
|
-
*
|
|
181
|
-
* @remarks
|
|
182
|
-
* The engine declines whenever an eager argument is a CONTAINER, because the call is then about
|
|
183
|
-
* to LIFT: the body runs once per element and different elements may select different arms, so
|
|
184
|
-
* every arm is needed. Excel abandons laziness there too — `=IF(B1:B3>0,1,A1+1)` in A1 IS a
|
|
185
|
-
* circular reference where the scalar-condition form is not (measured, `probe-lazy-args.ps1`).
|
|
186
|
-
*
|
|
187
|
-
* A declined argument is evaluated ONCE, here, and handed over as the VALUE rather than as a
|
|
188
|
-
* filled handle: the lift SAMPLES an arm per element (`IF(A1:A5>2,A1:A5,0)` answers element by
|
|
189
|
-
* element), and only the marshaller can sample it. The handle it hands the body is rebuilt there,
|
|
190
|
-
* around the sampled member. So the arm is evaluated once and indexed, never re-evaluated.
|
|
191
|
-
*
|
|
192
|
-
* Deferring evaluates nothing, so nothing can re-enter `_reuseArgs` while it is being filled.
|
|
193
|
-
* The decline path does evaluate, and takes a private array for exactly that reason.
|
|
194
|
-
*/
|
|
195
179
|
protected _fillLazyArgs(argsIndexed: ASTNode[], argsLength: number, regs: any[], frame: ReadonlyMap<number, any> | null, row: number, column: number, depth: number): void;
|
|
196
180
|
protected _createLambdaValue(node: FunctionNode, regs: any[], frame: ReadonlyMap<number, any> | null, row: number, column: number): LambdaValue;
|
|
197
|
-
/**
|
|
198
|
-
* The callee verdicts + apply for a `Call` node (design §3.4, §1.1):
|
|
199
|
-
*
|
|
200
|
-
* - a lambda value → arity check, bind, evaluate the body;
|
|
201
|
-
* - a function value (eta `SUM`) → dispatch to the function itself;
|
|
202
|
-
* - a reference that is not a lambda → `#REF!` (Excel resolved it and failed to CALL it);
|
|
203
|
-
* - any other value → `#VALUE!` (a failed coercion, same class as `="a"+1`).
|
|
204
|
-
*
|
|
205
|
-
* All three error rows are MEASURED (probe-lambda-call.ps1).
|
|
206
|
-
*/
|
|
207
181
|
protected _applyCallee(callee: any, node: ASTNode, regs: any[]): any;
|
|
208
182
|
/**
|
|
209
183
|
* Apply over VALUES — the marshalled-callable twin of {@link _applyCallee}'s lambda branch
|
|
@@ -274,10 +248,9 @@ export declare class FormulaBlock implements IFormulaBlock {
|
|
|
274
248
|
protected _evaluateSubtree(node: ASTNode, regs: any[], frame: ReadonlyMap<number, any> | null, row: number, column: number): any;
|
|
275
249
|
/**
|
|
276
250
|
* Runs an execution list — the eager `executions` or a deferred root's list — writing each
|
|
277
|
-
* node's result into its register.
|
|
278
|
-
* case the rest of the list is queued behind it.
|
|
251
|
+
* node's result into its register.
|
|
279
252
|
*/
|
|
280
|
-
protected _runList(list: ASTNode[], regs: any[], row: number, column: number, frame: ReadonlyMap<number, any> | null):
|
|
253
|
+
protected _runList(list: ASTNode[], regs: any[], row: number, column: number, frame: ReadonlyMap<number, any> | null): void;
|
|
281
254
|
/**
|
|
282
255
|
* The execution list of a subtree that is NOT a deferred root — a partial evaluation (the
|
|
283
256
|
* editor's tooltip) pointing inside a lazy argument. The enclosing root's list restricted to
|
|
@@ -4,11 +4,6 @@ import { ICalculation } from '../ICalculation';
|
|
|
4
4
|
import { ReferenceCoords, StructuredReference } from '../Types';
|
|
5
5
|
import { CompilerLocale } from '../compiler/CompilerLocale';
|
|
6
6
|
import { FormulaRecord, IFormulaBlockView } from './IFormulaBlock';
|
|
7
|
-
/**
|
|
8
|
-
* What imaging a {@link FormulaRecord} needs beside the record (DESIGN-CALC-SERVICE §8): the
|
|
9
|
-
* symbol map to resolve its stable ids against, the grid the formula sits on, and the reader's
|
|
10
|
-
* locale. The facade supplies the model's own map; the engine never images for it.
|
|
11
|
-
*/
|
|
12
7
|
export interface FormulaImager {
|
|
13
8
|
/** Stable ids to display names. */
|
|
14
9
|
readonly symbols: ISymbolRegistry;
|
|
@@ -24,16 +19,6 @@ export interface FormulaImager {
|
|
|
24
19
|
*/
|
|
25
20
|
resolveTableReference?(reference: StructuredReference, row: number): IRange.FixableCoords | FormulaError.Known;
|
|
26
21
|
}
|
|
27
|
-
/**
|
|
28
|
-
* A block as the model reads it: the engine's record imaged against the reader's own symbols
|
|
29
|
-
* (DESIGN-CALC-SERVICE §8).
|
|
30
|
-
*
|
|
31
|
-
* @remarks
|
|
32
|
-
* What the facade hands the model for every block the engine vends. The record is plain data and
|
|
33
|
-
* crosses the channel; the imager is the facade's and never does. Text is the same function of
|
|
34
|
-
* (tokens, symbols, anchor, locale) the compiled block images by - only where it runs differs -
|
|
35
|
-
* so what a sheet reads is what the engine would image, by the model's names.
|
|
36
|
-
*/
|
|
37
22
|
export declare class FormulaRecordView implements IFormulaBlockView {
|
|
38
23
|
/** The block as data: what this view images. */
|
|
39
24
|
readonly record: FormulaRecord;
|
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
import { IRange, FormulaError } from '@sheetxl/primitives';
|
|
2
2
|
import { ICalculation } from '../ICalculation';
|
|
3
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
4
|
export interface FormulaRecord {
|
|
17
5
|
/** The block's tokens, stable ids in their values, references relative to the block's top-left. */
|
|
18
6
|
readonly tokens: readonly ICalculation.FormulaToken[];
|
|
@@ -346,6 +334,11 @@ export interface IFormulaBlock extends IFormulaBlockView {
|
|
|
346
334
|
* either all of them call a total function or none do.
|
|
347
335
|
*/
|
|
348
336
|
hasTotals(): boolean;
|
|
337
|
+
/**
|
|
338
|
+
* Whether the formula calls `TABLE`, the what-if data table, anywhere in its tree. Read off the
|
|
339
|
+
* compiled cache (`CompiledFormula.hasDataTable`).
|
|
340
|
+
*/
|
|
341
|
+
hasDataTable(): boolean;
|
|
349
342
|
/**
|
|
350
343
|
* Whether the formula names a volatile function anywhere in its tree.
|
|
351
344
|
*
|
|
@@ -172,20 +172,5 @@ export declare const OMITTED: unique symbol;
|
|
|
172
172
|
* to convert, so it cannot leak (plan risk 2).
|
|
173
173
|
*/
|
|
174
174
|
export declare const readFrameValue: (value: any) => any;
|
|
175
|
-
/**
|
|
176
|
-
* The recursion budget apply enforces via `CalcScope.depth`.
|
|
177
|
-
*
|
|
178
|
-
* @remarks
|
|
179
|
-
* DESKTOP measured (probe-lambda-eval block A, 2026-08-21): its cap sits between 5,000 and 100,000, and the error at it IS `#NUM!` — the
|
|
180
|
-
* error Microsoft's own LAMBDA documentation names for runaway recursion.
|
|
181
|
-
*
|
|
182
|
-
* 512 rather than Online's 1000: each apply level costs a dozen JS frames, and past ~1000 levels a
|
|
183
|
-
* BROWSER stack dies first — not as a catchable `RangeError` at the recursion site, but as
|
|
184
|
-
* arbitrary near-exhaustion failures deep inside the engine (a regex compile inside the number
|
|
185
|
-
* parser was the observed one), which inner catch sites convert to `#VALUE!` values. The budget
|
|
186
|
-
* has to keep the engine comfortably inside every platform's stack; raising it toward the measured
|
|
187
|
-
* desktop number needs the lazy-`IF` (Conditional) carve-out first, since eager `IF` makes every
|
|
188
|
-
* terminating recursion burn to this cap before unwinding.
|
|
189
|
-
*/
|
|
190
175
|
export declare const MAX_LAMBDA_DEPTH = 512;
|
|
191
176
|
//# sourceMappingURL=LambdaValue.d.ts.map
|
|
@@ -21,14 +21,7 @@ export declare function absoluteReferences(references: readonly ReferenceCoords[
|
|
|
21
21
|
* When `symbols` is absent (no registry was used at compile time) the tokens
|
|
22
22
|
* already hold display names and are returned as-is.
|
|
23
23
|
*/
|
|
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,
|
|
24
|
+
export declare function resolveTokenSymbols(tokens: ICalculation.FormulaToken[], symbols: ISymbolRegistry | null | undefined, canonical?: boolean, display?: boolean,
|
|
32
25
|
/**
|
|
33
26
|
* The formula's cell (`scope` is its sheet's name or id), for display only. A single-column
|
|
34
27
|
* reference to the table holding it (`Table1[Qty]`, `Table1[@Qty]`) drops the table name, as Excel
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IFormulaContext } from '@sheetxl/primitives';
|
|
2
|
+
import { FunctionDeclarationModule, Implementations, DescriptorModule } from '@sheetxl/scripting';
|
|
3
|
+
/**
|
|
4
|
+
* The category `TABLE` is listed under: ours, not Excel's. Excel has no `TABLE` a user may type, so
|
|
5
|
+
* the writer treats it as a function Excel does not have wherever it cannot write Excel's tag.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DataTableCategory = "SheetXL";
|
|
8
|
+
/** `TABLE`'s declarations, as the declaration table and the function registry read them. */
|
|
9
|
+
export declare const DataTableDeclarations: FunctionDeclarationModule;
|
|
10
|
+
/** `TABLE`'s descriptors, loaded on demand like the built-ins'. */
|
|
11
|
+
export declare const DataTableDescriptors: () => Promise<DescriptorModule>;
|
|
12
|
+
/** The implementation the registry binds `TABLE`'s declaration to. */
|
|
13
|
+
export declare const createDataTableImplementations: (getContext: () => IFormulaContext) => Implementations;
|
|
14
|
+
//# sourceMappingURL=_DataTableFunction.d.ts.map
|