@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.
Files changed (355) hide show
  1. package/THIRD-PARTY-NOTICES.md +1 -1
  2. package/browser/cjs/4f5eoQQfV-V7LO2_.cjs +1 -0
  3. package/browser/cjs/BEnEDC1m546-gzWS.cjs +1 -0
  4. package/browser/cjs/CwCUa4IzGNGissLL.cjs +1 -0
  5. package/browser/cjs/Dg3GaW0QWwnlqetX.cjs +1 -0
  6. package/browser/cjs/KWQPie2u7AP69web.cjs +93 -0
  7. package/browser/cjs/index.cjs +2 -2
  8. package/browser/esm/{DBIu6NUHIcxOOBQp.mjs → BJ9hcZAGY8Tj5_9L.mjs} +1 -1
  9. package/browser/esm/C8vpA2ZBtZf6w4nq.mjs +394 -0
  10. package/browser/esm/DDojiE2-oycJ7qGi.mjs +20 -0
  11. package/browser/esm/DEPT7zmpiMdZ-_qC.mjs +70253 -0
  12. package/browser/esm/DOvCi3lf49To36WP.mjs +8 -0
  13. package/browser/esm/{CHSahmMFYNB0Ajkf.mjs → Dq3sc4B_HQHBrT5N.mjs} +2 -2
  14. package/browser/esm/index.mjs +871 -696
  15. package/browser/esm/{CKk58ZLcrllMzfou.mjs → trwZArJQQq7K9kL7.mjs} +2 -2
  16. package/licenses/dependencies.txt +204 -204
  17. package/node/esm/CGWsQOMWdnDeF4dX.mjs +8 -0
  18. package/node/esm/{DUYP6faJJHCaW1Xf.mjs → CL9MI-b6D9BmtVXW.mjs} +1 -1
  19. package/node/esm/CressiwiIhxCVp1v.mjs +28 -0
  20. package/node/esm/O2cOO3xIynWUgOWe.mjs +403 -0
  21. package/node/esm/index.mjs +53973 -38584
  22. package/package.json +6 -7
  23. package/resources/locales/de/model.msg.json +45 -9
  24. package/resources/locales/en/model.msg.json +42 -9
  25. package/types/scripting-api.json +7093 -0
  26. package/types/scripting-enums.json +54 -4
  27. package/types/scripting.d.ts +7185 -1079
  28. package/types/src/anchored/AbstractAnchored.d.ts +18 -8
  29. package/types/src/anchored/AnchoredMap.d.ts +2 -0
  30. package/types/src/anchored/IAnchoredMap.d.ts +52 -4
  31. package/types/src/autoFill/AutoFill.d.ts +316 -32
  32. package/types/src/autoFill/IAutoFill.d.ts +232 -15
  33. package/types/src/border/{IBorder.d.ts → IBorders.d.ts} +41 -40
  34. package/types/src/border/index.d.ts +1 -1
  35. package/types/src/calculation/Calculation.d.ts +745 -35
  36. package/types/src/calculation/ExternalBookBindings.d.ts +118 -0
  37. package/types/src/calculation/FormulaText.d.ts +74 -0
  38. package/types/src/calculation/ICalculation.d.ts +318 -81
  39. package/types/src/calculation/INamedFormulasCollection.d.ts +5 -8
  40. package/types/src/calculation/NamedFormulaCollection.d.ts +139 -107
  41. package/types/src/calculation/NamedLambdaFunction.d.ts +28 -0
  42. package/types/src/calculation/TokenType.d.ts +9 -0
  43. package/types/src/calculation/Types.d.ts +83 -2
  44. package/types/src/calculation/_CloneBoundary.d.ts +80 -0
  45. package/types/src/calculation/compiler/ASTTypes.d.ts +58 -0
  46. package/types/src/calculation/compiler/CompilerUtils.d.ts +134 -12
  47. package/types/src/calculation/compiler/FormulaCompiler.d.ts +29 -4
  48. package/types/src/calculation/compiler/FormulaParser.d.ts +1 -2
  49. package/types/src/calculation/compiler/LiteTransform.d.ts +17 -0
  50. package/types/src/calculation/compiler/ParserUtils.d.ts +26 -1
  51. package/types/src/calculation/compiler/SRParser.d.ts +2 -1
  52. package/types/src/calculation/compiler/Types.d.ts +79 -9
  53. package/types/src/calculation/executor/CalcExecutor.d.ts +422 -34
  54. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +43 -2
  55. package/types/src/calculation/executor/CircularReference.d.ts +2 -0
  56. package/types/src/calculation/formula/Formula.d.ts +58 -21
  57. package/types/src/calculation/formula/FormulaBlock.d.ts +124 -21
  58. package/types/src/calculation/formula/FormulaRecordView.d.ts +79 -0
  59. package/types/src/calculation/formula/IFormulaBlock.d.ts +261 -67
  60. package/types/src/calculation/formula/LambdaValue.d.ts +15 -16
  61. package/types/src/calculation/formula/LazyValue.d.ts +96 -0
  62. package/types/src/calculation/formula/TokenUtils.d.ts +25 -1
  63. package/types/src/calculation/formula/index.d.ts +1 -0
  64. package/types/src/calculation/functions/FunctionDeclarations.d.ts +31 -0
  65. package/types/src/calculation/functions/initializeFunctions.d.ts +15 -2
  66. package/types/src/calculation/grid/CalcGrid.d.ts +384 -158
  67. package/types/src/calculation/grid/CalcGridBackend.d.ts +450 -0
  68. package/types/src/calculation/grid/CalcGridProxy.d.ts +133 -0
  69. package/types/src/calculation/grid/CalcGridUtils.d.ts +62 -12
  70. package/types/src/calculation/grid/FormulaEntry.d.ts +129 -0
  71. package/types/src/calculation/grid/FormulaHost.d.ts +236 -0
  72. package/types/src/calculation/grid/ICalcGrid.d.ts +456 -143
  73. package/types/src/calculation/grid/_CalcRequest.d.ts +272 -0
  74. package/types/src/calculation/grid/index.d.ts +4 -0
  75. package/types/src/calculation/index.d.ts +2 -0
  76. package/types/src/calculation/spatial/ContentfulSpatialValue.d.ts +6 -2
  77. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +339 -11
  78. package/types/src/calculation/spatial/SpillEntry.d.ts +20 -5
  79. package/types/src/calculation/spatial/TouchedWindows.d.ts +86 -0
  80. package/types/src/calculation/spatial/index.d.ts +1 -0
  81. package/types/src/calculation/state/CalcInputs.d.ts +41 -0
  82. package/types/src/calculation/state/CalcNode.d.ts +160 -29
  83. package/types/src/calculation/state/CalcScope.d.ts +37 -0
  84. package/types/src/calculation/state/CalcState.d.ts +22 -1
  85. package/types/src/calculation/state/CalculationContext.d.ts +39 -3
  86. package/types/src/calculation/state/IContextContainer.d.ts +159 -26
  87. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +163 -0
  88. package/types/src/calculation/state/_ReadObservedGrid.d.ts +74 -8
  89. package/types/src/calculation/state/index.d.ts +1 -0
  90. package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +80 -0
  91. package/types/src/calculation/symbol/ISymbolRegistry.d.ts +23 -0
  92. package/types/src/calculation/symbol/IndirectSymbolProvider.d.ts +16 -2
  93. package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +63 -3
  94. package/types/src/calculation/symbol/SymbolRegistry.d.ts +20 -0
  95. package/types/src/calculation/symbol/index.d.ts +3 -2
  96. package/types/src/cell/ICell.d.ts +78 -23
  97. package/types/src/cell/ICellProtection.d.ts +50 -10
  98. package/types/src/cellRange/ICellRange.d.ts +368 -90
  99. package/types/src/cellRange/ICellRanges.d.ts +9 -7
  100. package/types/src/chart/Chart.d.ts +72 -2
  101. package/types/src/chart/ChartCollection.d.ts +26 -0
  102. package/types/src/chart/IChart.d.ts +162 -9
  103. package/types/src/chart/IChartCollection.d.ts +25 -0
  104. package/types/src/chart/_ChartXml.d.ts +70 -0
  105. package/types/src/chart/index.d.ts +1 -3
  106. package/types/src/collections/ArraysGrid.d.ts +1 -1
  107. package/types/src/collections/IGrid.d.ts +1 -1
  108. package/types/src/collections/ISparseGrid.d.ts +9 -0
  109. package/types/src/collections/ISpatialMap.d.ts +59 -21
  110. package/types/src/collections/ImmutableList.d.ts +28 -0
  111. package/types/src/collections/MixedTypedArrayList.d.ts +168 -108
  112. package/types/src/collections/OverlappingRangeIterator.d.ts +13 -17
  113. package/types/src/collections/RepeatingList.d.ts +7 -0
  114. package/types/src/collections/ScalarGrid.d.ts +50 -0
  115. package/types/src/collections/SparseGrid.d.ts +1 -1
  116. package/types/src/collections/SpatialMap.d.ts +13 -21
  117. package/types/src/collections/Tuple.d.ts +128 -16
  118. package/types/src/collections/_GridUtils.d.ts +19 -6
  119. package/types/src/collections/_RangeSweep.d.ts +97 -0
  120. package/types/src/collections/_SpatialUtils.d.ts +20 -2
  121. package/types/src/collections/index.d.ts +1 -0
  122. package/types/src/comment/Comment.d.ts +159 -0
  123. package/types/src/comment/CommentCollection.d.ts +40 -0
  124. package/types/src/comment/IComment.d.ts +319 -48
  125. package/types/src/comment/ICommentCollection.d.ts +90 -0
  126. package/types/src/comment/_CommentUtils.d.ts +28 -0
  127. package/types/src/comment/index.d.ts +1 -0
  128. package/types/src/condition/AnchoredConditional.d.ts +76 -17
  129. package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +8 -7
  130. package/types/src/condition/BuiltInOperators/EqualToOperator.d.ts +2 -1
  131. package/types/src/condition/BuiltInOperators/ExpressionOperator.d.ts +3 -6
  132. package/types/src/condition/BuiltInOperators/InSetOperator.d.ts +1 -1
  133. package/types/src/condition/BuiltinSelectors/BaseSelector.d.ts +7 -0
  134. package/types/src/condition/BuiltinSelectors/ListSelector.d.ts +9 -0
  135. package/types/src/condition/Condition.d.ts +16 -0
  136. package/types/src/condition/ICondition.d.ts +86 -33
  137. package/types/src/condition/_ConditionFormula.d.ts +152 -0
  138. package/types/src/condition/_ConditionUtils.d.ts +73 -10
  139. package/types/src/conditionalFormat/ConditionalFormat.d.ts +21 -10
  140. package/types/src/conditionalFormat/ConditionalFormatCollection.d.ts +19 -8
  141. package/types/src/conditionalFormat/IConditionalFormat.d.ts +5 -3
  142. package/types/src/conditionalFormat/IConditionalFormatCollection.d.ts +2 -0
  143. package/types/src/dataValidation/DataValidation.d.ts +50 -3
  144. package/types/src/dataValidation/DataValidationCollection.d.ts +20 -9
  145. package/types/src/dataValidation/IDataValidation.d.ts +119 -30
  146. package/types/src/dataValidation/IDataValidationCollection.d.ts +10 -2
  147. package/types/src/date/DateUtils.d.ts +20 -0
  148. package/types/src/date/_DateUtils.d.ts +91 -7
  149. package/types/src/externalBook/ExternalBookCollection.d.ts +145 -12
  150. package/types/src/externalBook/ExternalBookName.d.ts +96 -0
  151. package/types/src/externalBook/IExternalBook.d.ts +170 -18
  152. package/types/src/externalBook/IExternalBookCollection.d.ts +79 -7
  153. package/types/src/externalBook/index.d.ts +1 -0
  154. package/types/src/fill/IStroke.d.ts +1 -1
  155. package/types/src/filter/IFilter.d.ts +29 -4
  156. package/types/src/font/IFont.d.ts +17 -0
  157. package/types/src/history/IHistory.d.ts +3 -2
  158. package/types/src/i18n/LanguagePack.d.ts +12 -4
  159. package/types/src/index.d.ts +3 -0
  160. package/types/src/io/AbstractBackingStore.d.ts +24 -1
  161. package/types/src/io/ArrayBackingStore.d.ts +1 -1
  162. package/types/src/io/EmbeddedPart.d.ts +20 -0
  163. package/types/src/io/IEmbeddedPart.d.ts +63 -0
  164. package/types/src/io/IWorkbookIO.d.ts +185 -18
  165. package/types/src/io/WorkbookIO.d.ts +9 -0
  166. package/types/src/io/WorkbookOrigin.d.ts +20 -11
  167. package/types/src/io/WorkbookOriginProvider.d.ts +46 -0
  168. package/types/src/io/_XmlFragment.d.ts +49 -0
  169. package/types/src/io/index.d.ts +1 -0
  170. package/types/src/lib/file/file.browser.d.ts +19 -5
  171. package/types/src/lib/file/file.node.d.ts +5 -0
  172. package/types/src/lib/utils/_Utils.d.ts +18 -0
  173. package/types/src/lib/utils/utils.browser.d.ts +9 -3
  174. package/types/src/license/license-key.d.ts +27 -0
  175. package/types/src/listener/IListener.d.ts +12 -7
  176. package/types/src/listener/ListenerEmitter.d.ts +46 -5
  177. package/types/src/model/AbstractModel.d.ts +14 -5
  178. package/types/src/movable/Control.d.ts +57 -0
  179. package/types/src/movable/IControl.d.ts +84 -0
  180. package/types/src/movable/IMovable.d.ts +23 -1
  181. package/types/src/movable/IMovableCollection.d.ts +2 -0
  182. package/types/src/movable/Movable.d.ts +4 -6
  183. package/types/src/movable/MovableCollection.d.ts +7 -7
  184. package/types/src/movable/index.d.ts +4 -0
  185. package/types/src/named/AbstractNamed.d.ts +1 -1
  186. package/types/src/named/INamed.d.ts +4 -1
  187. package/types/src/named/INamedCollection.d.ts +26 -0
  188. package/types/src/named/NamedCollection.d.ts +16 -15
  189. package/types/src/numFmt/BuiltInFormats.d.ts +15 -7
  190. package/types/src/numFmt/IFormatEngine.d.ts +2 -0
  191. package/types/src/numFmt/NumfmtFormatEngine.d.ts +2 -0
  192. package/types/src/person/IPerson.d.ts +99 -0
  193. package/types/src/person/IPersonCollection.d.ts +51 -0
  194. package/types/src/person/Person.d.ts +32 -0
  195. package/types/src/person/PersonCollection.d.ts +49 -0
  196. package/types/src/person/index.d.ts +3 -0
  197. package/types/src/picture/IPicture.d.ts +2 -0
  198. package/types/src/picture/Picture.d.ts +2 -0
  199. package/types/src/pivot/IPivotTable.d.ts +107 -0
  200. package/types/src/pivot/IPivotTableCollection.d.ts +25 -0
  201. package/types/src/pivot/PivotTable.d.ts +57 -0
  202. package/types/src/pivot/PivotTableCollection.d.ts +25 -0
  203. package/types/src/pivot/index.d.ts +6 -0
  204. package/types/src/primitives/CompositeRangeStats.d.ts +2 -0
  205. package/types/src/primitives/Criteria.d.ts +1 -1
  206. package/types/src/primitives/LambdaBrand.d.ts +21 -0
  207. package/types/src/primitives/PrimitiveUtils.d.ts +60 -21
  208. package/types/src/primitives/Range.d.ts +105 -25
  209. package/types/src/primitives/RangeStats.d.ts +24 -1
  210. package/types/src/primitives/ReferenceRange.d.ts +42 -0
  211. package/types/src/primitives/Runtime.d.ts +15 -2
  212. package/types/src/primitives/stats/FrequencyStats.d.ts +9 -0
  213. package/types/src/primitives/stats/LookupIndex.d.ts +46 -0
  214. package/types/src/primitives/stats/SortedNumbers.d.ts +2 -0
  215. package/types/src/primitives/stats/index.d.ts +1 -0
  216. package/types/src/print/IPrint.d.ts +0 -22
  217. package/types/src/protectedRange/IProtectedRange.d.ts +4 -0
  218. package/types/src/protectedRange/IProtectedRangeCollection.d.ts +2 -0
  219. package/types/src/protectedRange/ProtectedRange.d.ts +1 -4
  220. package/types/src/protectedRange/ProtectedRangeCollection.d.ts +19 -8
  221. package/types/src/protection/DefaultProtection.d.ts +12 -1
  222. package/types/src/protection/IProtection.d.ts +36 -2
  223. package/types/src/reference/ReferenceUtils.d.ts +80 -0
  224. package/types/src/reference/index.d.ts +2 -0
  225. package/types/src/resource/IResource.d.ts +21 -1
  226. package/types/src/resource/IResourceCollection.d.ts +9 -1
  227. package/types/src/resource/ResourceCollection.d.ts +6 -6
  228. package/types/src/scripting/FunctionArguments.d.ts +22 -0
  229. package/types/src/scripting/FunctionCollection.d.ts +41 -11
  230. package/types/src/scripting/IFunctionCollection.d.ts +41 -0
  231. package/types/src/scripting/IModule.d.ts +25 -0
  232. package/types/src/scripting/IModuleCollection.d.ts +17 -0
  233. package/types/src/scripting/IScript.d.ts +18 -0
  234. package/types/src/scripting/Module.d.ts +34 -6
  235. package/types/src/scripting/ModuleCollection.d.ts +17 -12
  236. package/types/src/scripting/Runtime.d.ts +15 -0
  237. package/types/src/scripting/Scripts.d.ts +2 -0
  238. package/types/src/scripting/TypedFunction.d.ts +197 -4
  239. package/types/src/scripting/_FunctionIndex.d.ts +5 -0
  240. package/types/src/scripting/_ModuleUtils.d.ts +11 -1
  241. package/types/src/scripting/_ScriptUtils.d.ts +3 -0
  242. package/types/src/scripting/declarations.browser.d.ts +10 -0
  243. package/types/src/scripting/declarations.d.ts +49 -0
  244. package/types/src/scripting/declarations.node.d.ts +9 -0
  245. package/types/src/scripting/index.d.ts +3 -0
  246. package/types/src/selection/IRangeSelection.d.ts +9 -4
  247. package/types/src/selection/RangeSelection.d.ts +2 -0
  248. package/types/src/shape/IShape.d.ts +41 -3
  249. package/types/src/shape/Shape.d.ts +10 -0
  250. package/types/src/shape/_ShapeXml.d.ts +28 -0
  251. package/types/src/sheet/CellRegion.d.ts +6 -0
  252. package/types/src/sheet/ICellContainerOptions.d.ts +50 -0
  253. package/types/src/sheet/ISheet.d.ts +224 -41
  254. package/types/src/sheet/ISheetCollection.d.ts +2 -5
  255. package/types/src/sheet/NamedCellRange.d.ts +16 -7
  256. package/types/src/sheet/Sheet.d.ts +757 -114
  257. package/types/src/sheet/SheetCell.d.ts +81 -21
  258. package/types/src/sheet/SheetCollection.d.ts +19 -8
  259. package/types/src/sheet/SheetRange.d.ts +65 -14
  260. package/types/src/sheet/SheetRanges.d.ts +4 -6
  261. package/types/src/sheet/_CellBuffer.d.ts +214 -0
  262. package/types/src/sheet/_InvalidSheetRange.d.ts +5 -5
  263. package/types/src/sheet/_ListenerAnchor.d.ts +104 -0
  264. package/types/src/sheet/_RangeStateSweep.d.ts +16 -0
  265. package/types/src/sheet/_ScalarListFactory.d.ts +61 -0
  266. package/types/src/sheet/_SheetAutoFillUtils.d.ts +74 -0
  267. package/types/src/sheet/_SheetAutoFitUtils.d.ts +28 -0
  268. package/types/src/sheet/_SheetEvents.d.ts +43 -0
  269. package/types/src/sheet/_SheetFilterUtils.d.ts +32 -1
  270. package/types/src/sheet/_SheetIntents.d.ts +250 -0
  271. package/types/src/sheet/_SheetMutations.d.ts +179 -59
  272. package/types/src/sheet/_SheetStateReader.d.ts +16 -10
  273. package/types/src/sheet/_SheetStateTypes.d.ts +57 -73
  274. package/types/src/sheet/_SheetUtils.d.ts +2 -18
  275. package/types/src/sheet/_WatchAnchor.d.ts +93 -0
  276. package/types/src/sheet/spatial/HeldFormulaEntry.d.ts +36 -0
  277. package/types/src/sheet/spatial/index.d.ts +1 -0
  278. package/types/src/sheet/style/SheetCellStyle.d.ts +91 -64
  279. package/types/src/sheet/style/SheetDirectStyle.d.ts +16 -5
  280. package/types/src/sheet/style/_Resolvers.d.ts +5 -3
  281. package/types/src/sheet/style/_StyleUtils.d.ts +37 -7
  282. package/types/src/sheetHeader/ISheetHeader.d.ts +2 -0
  283. package/types/src/sheetHeader/SheetHeader.d.ts +14 -0
  284. package/types/src/sheetProtection/ISheetProtection.d.ts +41 -7
  285. package/types/src/sheetProtection/SheetProtection.d.ts +12 -0
  286. package/types/src/sheetView/ISheetView.d.ts +45 -1
  287. package/types/src/sheetView/SheetView.d.ts +11 -0
  288. package/types/src/slicer/ISlicer.d.ts +2 -0
  289. package/types/src/slicer/Slicer.d.ts +2 -0
  290. package/types/src/sort/ISort.d.ts +2 -0
  291. package/types/src/string/IStringCollection.d.ts +5 -0
  292. package/types/src/string/StringCollection.d.ts +6 -6
  293. package/types/src/style/INamedStyleCollection.d.ts +72 -0
  294. package/types/src/style/IStyle.d.ts +30 -10
  295. package/types/src/style/IStyleCollection.d.ts +63 -42
  296. package/types/src/style/ITableStyleCollection.d.ts +89 -0
  297. package/types/src/style/NamedStyleCollection.d.ts +39 -0
  298. package/types/src/style/StyleCollection.d.ts +41 -5
  299. package/types/src/style/TableStyleCollection.d.ts +49 -0
  300. package/types/src/style/_BuiltInStyleDefs.d.ts +3 -3
  301. package/types/src/style/index.d.ts +4 -0
  302. package/types/src/table/AnchoredTable.d.ts +644 -68
  303. package/types/src/table/AutoTable.d.ts +5 -5
  304. package/types/src/table/ITable.d.ts +228 -30
  305. package/types/src/table/ITableCollection.d.ts +2 -0
  306. package/types/src/table/TableCollection.d.ts +19 -8
  307. package/types/src/table/_FilterField.d.ts +7 -5
  308. package/types/src/table/_NamedTable.d.ts +17 -1
  309. package/types/src/table/_NamedTableSource.d.ts +1 -0
  310. package/types/src/table/_SortField.d.ts +2 -0
  311. package/types/src/table/_TableColumn.d.ts +13 -2
  312. package/types/src/table/_TableMessages.d.ts +1 -0
  313. package/types/src/table/_TableUtils.d.ts +40 -0
  314. package/types/src/text/Bullet.d.ts +4 -0
  315. package/types/src/text/ITextFrame.d.ts +25 -1
  316. package/types/src/text/TextBoxAlignment.d.ts +15 -6
  317. package/types/src/text/TextFrame.d.ts +4 -0
  318. package/types/src/text/TextLine.d.ts +4 -0
  319. package/types/src/text/TextParagraph.d.ts +4 -0
  320. package/types/src/text/TextRun.d.ts +9 -0
  321. package/types/src/text/TextStacked.d.ts +83 -0
  322. package/types/src/text/index.d.ts +1 -0
  323. package/types/src/theme/ITheme.d.ts +2 -0
  324. package/types/src/theme/IThemeCollection.d.ts +2 -0
  325. package/types/src/theme/ThemeCollection.d.ts +8 -7
  326. package/types/src/transaction/ITransaction.d.ts +238 -36
  327. package/types/src/transaction/Transaction.d.ts +99 -11
  328. package/types/src/type/AbstractCollection.d.ts +101 -0
  329. package/types/src/type/ICollection.d.ts +117 -0
  330. package/types/src/type/ITypes.d.ts +9 -7
  331. package/types/src/type/index.d.ts +1 -0
  332. package/types/src/utils/_CSSUtils.d.ts +3 -3
  333. package/types/src/workbook/IWorkbook.d.ts +171 -40
  334. package/types/src/workbook/Workbook.d.ts +103 -7
  335. package/types/src/workbook/_WorkbookIntents.d.ts +36 -0
  336. package/types/src/workbookProtection/IWorkbookProtection.d.ts +7 -0
  337. package/types/src/workbookProtection/WorkbookProtection.d.ts +3 -0
  338. package/types/src/workbookView/IWorkbookView.d.ts +12 -0
  339. package/types/src/workbookView/WorkbookView.d.ts +5 -0
  340. package/browser/cjs/BF14ZEAnaqxXroSj.cjs +0 -1
  341. package/browser/cjs/BXtvdT1Z-MsB_o5F.cjs +0 -1
  342. package/browser/cjs/Bc4JjVVZfFo3R4He.cjs +0 -33
  343. package/browser/cjs/CD2RXdnfqSYNc6gX.cjs +0 -57
  344. package/browser/cjs/DcLpXGexEtOxi-dD.cjs +0 -1
  345. package/browser/esm/0Mj5WKM362q6CECb.mjs +0 -824
  346. package/browser/esm/CPTtL2f6_4iblmFM.mjs +0 -4436
  347. package/browser/esm/CoA-sUxjiIUIpTUF.mjs +0 -109
  348. package/browser/esm/Dy4Sdpju1T2icURu.mjs +0 -50854
  349. package/node/esm/BtGxbEbBm79YvF_k.mjs +0 -843
  350. package/node/esm/DqgWsVXROpSgKq6c.mjs +0 -114
  351. package/types/src/cellRange/_GraphNode.d.ts +0 -38
  352. package/types/src/dataValidation/_Utils.d.ts +0 -10
  353. package/types/src/sheet/listener/RangesListener.d.ts +0 -32
  354. package/types/src/sheet/listener/RangesListenerEntry.d.ts +0 -19
  355. package/types/src/sheet/listener/index.d.ts +0 -3
@@ -1,21 +1,32 @@
1
1
  import { ICellRanges } from '../cellRange';
2
+ import { ICollection, AbstractCollection } from '../type';
3
+ import { IListener } from '../listener';
2
4
  import { IProtectedRangeCollection } from './IProtectedRangeCollection';
3
5
  import { IProtectedRange } from './IProtectedRange';
4
- export declare class ProtectedRangeCollection implements IProtectedRangeCollection {
6
+ /**
7
+ * Implementation for {@link IProtectedRangeCollection}.
8
+ *
9
+ * @remarks
10
+ * A front over the sheet's own protected-range state — the sheet keeps the store and the
11
+ * events, this class keeps the API. `onCollectionChange` is the sheet's
12
+ * `onProtectedRangesChange`, forwarded with this collection as the source.
13
+ */
14
+ export declare class ProtectedRangeCollection extends AbstractCollection<IProtectedRange, IProtectedRangeCollection.GetItemsOptions> implements IProtectedRangeCollection {
5
15
  private _add;
6
16
  private _get;
7
17
  private _getByName;
8
18
  private _createItem;
9
- constructor(add: (address: ICellRanges.Address | IProtectedRange, options?: IProtectedRangeCollection.AddOptions) => IProtectedRange, get: (address: ICellRanges.Address | null | undefined, ignoreHidden?: boolean, fullyContained?: boolean) => IProtectedRange[], getByName: (name: string) => IProtectedRange | null, createItem: (template?: IProtectedRange | null) => IProtectedRange);
19
+ private _addListeners;
20
+ constructor(add: (address: ICellRanges.Address | IProtectedRange, options?: IProtectedRangeCollection.AddOptions) => IProtectedRange, get: (address: ICellRanges.Address | null | undefined, ignoreHidden?: boolean, fullyContained?: boolean) => IProtectedRange[], getByName: (name: string) => IProtectedRange | null, createItem: (template?: IProtectedRange | null) => IProtectedRange, addListeners: (listeners: ICollection.IListeners, options?: IListener.Options) => IListener.Remove);
10
21
  /** {@inheritDoc IProtectedRangeCollection.add} */
11
22
  add(address: ICellRanges.Address | IProtectedRange, options?: IProtectedRangeCollection.AddOptions): IProtectedRange;
12
- /** {@inheritDoc ICollection.[Symbol.iterator]} */
13
- [Symbol.iterator](): IterableIterator<IProtectedRange>;
14
- /** {@inheritDoc IProtectedRangeCollection.getItems} */
15
- getItems(options?: IProtectedRangeCollection.GetItemsOptions): IProtectedRange[];
23
+ /** {@inheritDoc AbstractCollection._getItems} */
24
+ protected _getItems(options?: IProtectedRangeCollection.GetItemsOptions): IProtectedRange[];
16
25
  /** {@inheritDoc IProtectedRangeCollection.createItem} */
17
26
  createItem(template?: IProtectedRange | null): IProtectedRange;
18
- /** {@inheritDoc IProtectedRangeCollection.getCount} */
19
- getCount(): number;
27
+ /** {@inheritDoc ICollection.addListeners} */
28
+ addListeners(listeners: ICollection.IListeners, options?: IListener.Options): IListener.Remove;
29
+ /** {@inheritDoc IProtectedRangeCollection.isIProtectedRangeCollection} */
30
+ get isIProtectedRangeCollection(): true;
20
31
  }
21
32
  //# sourceMappingURL=ProtectedRangeCollection.d.ts.map
@@ -1,9 +1,11 @@
1
1
  import { IListener } from '../listener';
2
2
  import { IProtection } from './IProtection';
3
3
  import { ListenerEmitter } from '../listener/ListenerEmitter';
4
- export declare class DefaultProtection<T, P extends IProtection.Properties, J extends IProtection.JSON> implements IProtection<T, P, J> {
4
+ export declare abstract class DefaultProtection<T, P extends IProtection.Properties, J extends IProtection.JSON> implements IProtection<T, P, J> {
5
5
  protected _emitter: ListenerEmitter<this, IProtection.IListeners>;
6
6
  protected _isPaused: boolean;
7
+ /** Not protected, but keeping `_properties` for the next lock. Saved as {@link _getAllowedKey}. */
8
+ protected _isDisabled: boolean;
7
9
  protected _password: Partial<IProtection.EncryptedPassword> | null;
8
10
  protected _identities: IProtection.IdentityProvider[] | null;
9
11
  protected _properties: Partial<P> | null;
@@ -21,6 +23,8 @@ export declare class DefaultProtection<T, P extends IProtection.Properties, J ex
21
23
  pause(password?: string): Promise<IProtection<T, P, J>>;
22
24
  /** {@inheritDoc IProtection.resume} */
23
25
  resume(): IProtection<T, P, J>;
26
+ /** {@inheritDoc IProtection.setProperties} */
27
+ setProperties(properties: Partial<P>): Promise<IProtection<T, P, J>>;
24
28
  /** {@inheritDoc IProtection.isPaused} */
25
29
  isPaused(): boolean;
26
30
  /** {@inheritDoc IProtection.isLocked} */
@@ -35,9 +39,16 @@ export declare class DefaultProtection<T, P extends IProtection.Properties, J ex
35
39
  /** {@inheritDoc IListener.ISource.addListeners} */
36
40
  addListeners(listeners: IProtection.IListeners, options?: IListener.Options): IListener.Remove;
37
41
  fromJSON(json?: J): void;
42
+ /**
43
+ * The JSON key that says the whole object stays allowed: unprotected, keeping its options. Named
44
+ * for the object (`sheet`, `workbook`), like the allowances beside it.
45
+ */
46
+ protected abstract _getAllowedKey(): string;
38
47
  protected _fromJSON(_json: J | null): void;
39
48
  protected _toJSON(json: Partial<J>): Partial<J>;
40
49
  /** {@inheritDoc IWorkbookProtection.toJSON} */
41
50
  toJSON(): J | null;
51
+ /** {@inheritDoc IProtection.isIProtection} */
52
+ get isIProtection(): true;
42
53
  }
43
54
  //# sourceMappingURL=DefaultProtection.d.ts.map
@@ -8,13 +8,15 @@ export interface IProtection<T, P extends IProtection.Properties, J extends IPro
8
8
  * Locks the object (workbook or sheet or range) with the specified options and password.
9
9
  *
10
10
  * @param password The password required to unlock the object.
11
- * @param properties The properties to allow to remain unlocked.
11
+ * @param properties The properties to allow to remain unlocked. Omitted, the options the object
12
+ * already carries are used (see {@link unlock} and {@link setProperties}).
12
13
  * @param algorithm The algorithm for encrypting the password.
13
14
  * @param spinCount The spin count for encrypting the password.
14
15
  * @returns The `IProtection` instance for method chaining.
15
16
  *
16
17
  * @remarks
17
18
  * By default all properties are locked but you can specify which properties to remain unlocked.
19
+ * Throws when the object is already protected, paused included.
18
20
  */
19
21
  lock(properties?: Partial<P>, password?: string, algorithm?: string, spinCount?: number): Promise<IProtection<T, P, J>>;
20
22
  /**
@@ -24,9 +26,31 @@ export interface IProtection<T, P extends IProtection.Properties, J extends IPro
24
26
  * @returns The `IProtection` instance for method chaining.
25
27
  *
26
28
  * @remarks
27
- * If the correct password is provided, protection is removed from the object.
29
+ * If the correct password is provided, protection is removed from the object and the password is
30
+ * cleared. The options are kept, and saved, so a later {@link lock} with no properties protects
31
+ * the same way again.
28
32
  */
29
33
  unlock(password?: string): Promise<IProtection<T, P, J>>;
34
+ /**
35
+ * Replaces the options of an unprotected or paused object. On a paused object they apply when it
36
+ * resumes; on an unprotected one, when it is next locked.
37
+ *
38
+ * @param properties The properties to allow to remain unlocked.
39
+ * @returns The `IProtection` instance for method chaining.
40
+ *
41
+ * @remarks
42
+ * Throws while the object is locked: unprotect or {@link pause} first. Neither asks for the
43
+ * password here, since an unprotected object has none and a pause already asked for it.
44
+ */
45
+ setProperties(properties: Partial<P>): Promise<IProtection<T, P, J>>;
46
+ /**
47
+ * The object's options, kept while it is unlocked; `null` when it has none.
48
+ *
49
+ * @remarks
50
+ * A property names what stays **allowed** while locked - it is not a list of what is forbidden.
51
+ * Whether the options are in force is {@link isLocked}.
52
+ */
53
+ getProperties(): Partial<P> | null;
30
54
  /**
31
55
  * Temporarily disables protection with the provided password.
32
56
  *
@@ -36,6 +60,14 @@ export interface IProtection<T, P extends IProtection.Properties, J extends IPro
36
60
  * @remarks
37
61
  * This method allows temporarily pausing protection without permanently unlocking the object.
38
62
  * Use {@link resume} to restore protection.
63
+ *
64
+ * Not a shortcut for {@link unlock}, even on a lock without a password: unlocking is a document
65
+ * change (the file saves unprotected, and the password is gone), whereas a pause
66
+ * keeps the whole configuration - password, options, and any session access already granted to
67
+ * an {@link IProtectedRange} - and {@link resume} restores it exactly. The password is required
68
+ * only when one is set. Throws when the object is not locked.
69
+ *
70
+ * The paused state is session-only and is never serialized.
39
71
  */
40
72
  pause(password?: string): Promise<IProtection<T, P, J>>;
41
73
  /**
@@ -91,6 +123,8 @@ export interface IProtection<T, P extends IProtection.Properties, J extends IPro
91
123
  */
92
124
  addListeners(listeners: IProtection.IListeners, options?: IListener.Options): IListener.Remove;
93
125
  toJSON(): IProtection.JSON | null;
126
+ /** For runtime type checking. */
127
+ readonly isIProtection: true;
94
128
  }
95
129
  /**
96
130
  * {@inheritDoc IProtection}
@@ -0,0 +1,80 @@
1
+ import { IRange } from '@sheetxl/primitives';
2
+ /**
3
+ * The rules a reference follows when the cells around it change.
4
+ *
5
+ * @remarks
6
+ * A reference is a rectangle that names cells - a formula's precedent, a range listener's
7
+ * subscription, a watch's location. Everything that holds one has to answer the same questions
8
+ * when the sheet is restructured: where is it after an insert or a delete, when does it become
9
+ * `#REF!`, and when does a cut carry it along. These are those answers, and they live here rather
10
+ * than in the calc graph so that the graph's precedents and the sheet's listeners map cannot
11
+ * disagree - they call the same functions.
12
+ *
13
+ * Nothing here knows about formulas, blocks or grids. A reference is two numbers per axis plus,
14
+ * for a formula, which of its endpoints a structural change is allowed to move.
15
+ *
16
+ * @internal
17
+ */
18
+ /**
19
+ * Shift one axis of a reference the way a structural change shifts a formula precedent.
20
+ *
21
+ * @remarks
22
+ * This is the rule `shiftPrecedents` applies, per axis, to every reference it rewrites, and the
23
+ * rule a range listener's reference follows so that the two can never disagree. A reference is
24
+ * judged on the shifted axis alone - whether it overlaps the inserted or deleted band on the OTHER
25
+ * axis plays no part - which is why `=SUM(A1:C3)` reads `A2:C4` after one cell is inserted at A1
26
+ * shifting down: the whole reference moves, it does not come apart.
27
+ *
28
+ * * An insert (`shiftBy` > 0) moves every endpoint at or past `shiftStart` by `shiftBy`; an
29
+ * endpoint before it stays, so a reference straddling the insert line grows.
30
+ * * A delete (`shiftBy` < 0) whose zone covers the whole reference makes it `#REF!` (`null`); one
31
+ * that covers an end trims that end to the zone's edge; one entirely before the reference moves
32
+ * it whole.
33
+ *
34
+ * An immune endpoint is left exactly as it is, and a reference with an immune endpoint is never
35
+ * `#REF!`: that is a relative endpoint of an unanchored block (a named formula's body), which
36
+ * names no cell for a structural change to move. See the note in `shiftPrecedents`.
37
+ *
38
+ * @param start The reference's absolute start on this axis.
39
+ * @param end The reference's absolute end on this axis.
40
+ * @param shiftStart The first index of the inserted or deleted band.
41
+ * @param shiftBy How far the band moves cells: positive for an insert, negative for a delete.
42
+ * @param deleteEnd The last index of the deleted band; ignored for an insert.
43
+ * @param immuneStart `true` if the start endpoint must not move.
44
+ * @param immuneEnd `true` if the end endpoint must not move.
45
+ * @returns The shifted `[start, end]`, or `null` when the delete removed the whole reference.
46
+ */
47
+ export declare function shiftReferenceAxis(start: number, end: number, shiftStart: number, shiftBy: number, deleteEnd: number, immuneStart?: boolean, immuneEnd?: boolean): [start: number, end: number] | null;
48
+ /**
49
+ * Move one axis of a reference the way a cut moves a formula precedent.
50
+ *
51
+ * @remarks
52
+ * A move is a rigid translation, so unlike a shift there is no zone to compare against and no
53
+ * `#REF!`: both endpoints travel the same distance or neither does. Whether this reference travels
54
+ * at all is {@link isReferenceEnclosed}'s question, asked before this one.
55
+ *
56
+ * An immune endpoint is left exactly as it is. That is a relative endpoint whose own cells are
57
+ * moving by the same amount - the formula and its target translate together, so the offset between
58
+ * them is already right - or one of an unanchored block, which names no cell to re-point.
59
+ *
60
+ * @param start The reference's start on this axis.
61
+ * @param end The reference's end on this axis.
62
+ * @param moveBy How far the cut carries the cells on this axis.
63
+ * @param immuneStart `true` if the start endpoint must not move.
64
+ * @param immuneEnd `true` if the end endpoint must not move.
65
+ */
66
+ export declare function moveReferenceAxis(start: number, end: number, moveBy: number, immuneStart?: boolean, immuneEnd?: boolean): [start: number, end: number];
67
+ /**
68
+ * Whether a cut of `from` carries `reference` with it.
69
+ *
70
+ * @remarks
71
+ * Excel's test, and the graph's: a reference moves only when the cut rectangle FULLY ENCLOSES it.
72
+ * Cut A1:C3 and `=SUM(A1:B2)` follows to the destination; `=SUM(A1:C5)` reaches outside the cut
73
+ * and so is left exactly where it is, pointing at cells that are now empty. There is no partial
74
+ * answer and no split - a reference that is only half carried would name two different rectangles.
75
+ *
76
+ * A formula BLOCK asks a longer version of this question, because each of its cells has a
77
+ * reference of its own and all of them have to be enclosed; see `movePrecedents`.
78
+ */
79
+ export declare function isReferenceEnclosed(reference: Readonly<IRange.Coords>, from: Readonly<IRange.Coords>): boolean;
80
+ //# sourceMappingURL=ReferenceUtils.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './ReferenceUtils';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { JSONSerializableAsync } from '@sheetxl/utils';
1
+ import { JSONSerializableAsync, MaybePromise } from '@sheetxl/utils';
2
2
  /**
3
3
  * A resource is an item referenced elsewhere with the application.
4
4
  * This will track when a resource is no longer being used and can be removed.
@@ -63,6 +63,26 @@ export interface IResource extends JSONSerializableAsync<IResource.JSON> {
63
63
  * {@link IResource}
64
64
  */
65
65
  export declare namespace IResource {
66
+ /**
67
+ * Writes a single resource wherever the caller wants it, and returns the {@link IResource.JSON}
68
+ * that should stand for it in the serialized model.
69
+ *
70
+ * @param resource The resource being written.
71
+ * @param id The id the serialized model references this resource by.
72
+ *
73
+ * @returns The JSON to record for the resource, or `null` to record nothing.
74
+ *
75
+ * @remarks
76
+ * Called once per resource that the write actually touched, never for unused ones.
77
+ *
78
+ * Returning `{ uri }` is the useful case: the bytes go wherever the writer put them and the
79
+ * model keeps a pointer, which reads back as an external resource with no reader changes.
80
+ *
81
+ * Ids are positions, so a `null` leaves a `{}` placeholder rather than shifting the resources
82
+ * after it. If every resource returns `null` no resources are recorded at all — for a writer
83
+ * that emits the bytes itself and only needs the ids, such as the xlsx writer.
84
+ */
85
+ type Writer = (resource: IResource, id: number) => MaybePromise<IResource.JSON | null>;
66
86
  interface IUnloadListener {
67
87
  onUnload: (ref: IResource) => void;
68
88
  }
@@ -3,6 +3,9 @@ import { ICollection } from '../type';
3
3
  import { IResource } from './IResource';
4
4
  /**
5
5
  * Collections of {@link IResource}.
6
+ *
7
+ * @remarks
8
+ * Keyed by the resource, not ordered: iteration order is unspecified.
6
9
  */
7
10
  export interface IResourceCollection extends ICollection<IResource> {
8
11
  /**
@@ -24,6 +27,8 @@ export interface IResourceCollection extends ICollection<IResource> {
24
27
  * will only save the resource that were accessed within the persist scope.
25
28
  */
26
29
  beginPersist(): IResourceCollection.IPersistScope<IResource.JSON>;
30
+ /** For runtime type checking. */
31
+ readonly isIResourceCollection: true;
27
32
  }
28
33
  /**
29
34
  * {@inheritDoc IResourceCollection}
@@ -89,8 +94,11 @@ export declare namespace IResourceCollection {
89
94
  fromJSON(json: J[]): void;
90
95
  /**
91
96
  * This can be called multiple times.
97
+ *
98
+ * @param writer Called once per resource in place of serializing it, to write it elsewhere.
99
+ * Returns `[]` when the writer records nothing for any of them.
92
100
  */
93
- toJSONAsync(): Promise<J[]>;
101
+ toJSONAsync(writer?: IResource.Writer): Promise<J[]>;
94
102
  }
95
103
  }
96
104
  //# sourceMappingURL=IResourceCollection.d.ts.map
@@ -1,19 +1,19 @@
1
- import { ICollection } from '../type';
1
+ import { ICollection, AbstractCollection } from '../type';
2
2
  import { IResource } from './IResource';
3
3
  import { IResourceCollection } from './IResourceCollection';
4
- export declare class ResourceCollection implements IResourceCollection {
4
+ export declare class ResourceCollection extends AbstractCollection<IResource> implements IResourceCollection {
5
5
  private _resources;
6
6
  private _persistOpen;
7
7
  constructor();
8
8
  /** {@inheritDoc IResourceCollection.add} */
9
9
  add(res: string | IResource | IResourceCollection.AddOptions): IResource;
10
- /** {@inheritDoc ICollection.[Symbol.iterator]} */
11
- [Symbol.iterator](): IterableIterator<IResource>;
12
- /** {@inheritDoc IResourceCollection.getItems} */
13
- getItems(options?: ICollection.GetItemsOptions): IResource[];
10
+ /** {@inheritDoc AbstractCollection._getItems} */
11
+ protected _getItems(options?: ICollection.GetItemsOptions): IResource[];
14
12
  /** {@inheritDoc IResourceCollection.getCount} */
15
13
  getCount(): number;
16
14
  /** {@inheritDoc IResourceCollection.beginPersist} */
17
15
  beginPersist(): IResourceCollection.IPersistScope<IResource.JSON>;
16
+ /** {@inheritDoc IResourceCollection.isIResourceCollection} */
17
+ get isIResourceCollection(): true;
18
18
  }
19
19
  //# sourceMappingURL=ResourceCollection.d.ts.map
@@ -0,0 +1,22 @@
1
+ import { IFunction, IFunctionArguments } from '@sheetxl/primitives';
2
+ /**
3
+ * A bound view, as the marshaller holds it.
4
+ *
5
+ * @internal The public half is {@link IFunctionArguments}; this adds the two things only `_exec`
6
+ * may do — point the view at the argument array its broadcast loop rewrites per output cell, and
7
+ * take it off the engine's shared dispatch buffer when the body is about to re-enter dispatch.
8
+ */
9
+ export interface IArgumentsFrame extends IFunctionArguments {
10
+ /** @see FunctionArguments._setLiftValues */
11
+ _setLiftValues(values: any[] | null): void;
12
+ /** @see FunctionArguments._setPrivateArgs */
13
+ _setPrivateArgs(args: any[]): void;
14
+ }
15
+ /**
16
+ * Binds the view for a call about to dispatch, and returns it so the lift can point it at its
17
+ * per-cell arguments. Pairs with {@link popArguments} in a `finally`.
18
+ */
19
+ export declare const pushArguments: (params: IFunction.ParameterTypeJSON[] | null | undefined, variadic: number, suffix: number, args: any[], argsLength: number) => IArgumentsFrame;
20
+ /** Ends the call {@link pushArguments} began. */
21
+ export declare const popArguments: () => void;
22
+ //# sourceMappingURL=FunctionArguments.d.ts.map
@@ -1,33 +1,48 @@
1
1
  import { IFunction, IFormulaContext } from '@sheetxl/primitives';
2
2
  import { ITransaction } from '../transaction';
3
3
  import { IListener } from '../listener';
4
- import { ICollection } from '../type';
5
- import { ListenerEmitter } from '../listener/ListenerEmitter';
4
+ import { AbstractCollection } from '../type';
6
5
  import { IFunctionCollection } from './IFunctionCollection';
7
6
  import { FunctionMatch } from './_FunctionIndex';
8
7
  /**
9
8
  * Implementation for `IFunctionCollection`.
10
9
  */
11
- export declare class FunctionCollection implements IFunctionCollection {
12
- protected _emitter: ListenerEmitter<this, IFunctionCollection.IListeners>;
10
+ export declare class FunctionCollection extends AbstractCollection<IFunction, IFunctionCollection.GetItemsOptions> implements IFunctionCollection {
13
11
  private _options;
14
12
  private _readonly;
15
- private _transactions;
13
+ /** The functions lambda-valued defined names export. See {@link _setNamedSource}. */
14
+ private _named;
15
+ protected _transactions: ITransaction.IStore;
16
16
  private _stateId;
17
17
  private _transactionsRemoveListener;
18
- private _closed;
19
18
  /**
20
19
  * The descriptor index behind the metadata searches. Built on first use and dropped whenever the
21
20
  * collection's contents change — see {@link FunctionIndex}.
22
21
  */
23
22
  private _index;
24
23
  constructor(options: ConstructorOptions);
25
- /** {@inheritDoc ICollection.[Symbol.iterator]} */
26
- [Symbol.iterator](): IterableIterator<IFunction>;
27
- /** {@inheritDoc IFunctionCollection.getItems} */
28
- getItems(options?: ICollection.GetItemsOptions): IFunction[];
24
+ /** {@inheritDoc AbstractCollection._getItems} */
25
+ protected _getItems(options?: IFunctionCollection.GetItemsOptions): IFunction[];
29
26
  /** {@inheritDoc IFunctionCollection.getByName} */
30
27
  getByName(name: string, options?: IFunctionCollection.GetByNameOptions): IFunction | null;
28
+ /**
29
+ * Installs the functions lambda-valued defined names export: {@link getByName} falls back to them
30
+ * for a name no registered function has, and {@link getItems}, {@link search} and
31
+ * {@link getCategories} list them.
32
+ *
33
+ * @remarks
34
+ * Supplied by the calculation, which owns defined names — this layer does not know them. What it
35
+ * answers reports `isLambda()`, which is how the engine's own lookups tell it apart and skip it: a
36
+ * call to a named lambda evaluates the name, not a function.
37
+ */
38
+ _setNamedSource(source: NamedFunctionSource | null): void;
39
+ /**
40
+ * The exported named lambdas that no registered function shadows, read LIVE: a name's body and
41
+ * comment change without this collection hearing of it, so they never enter the cached index.
42
+ */
43
+ private _namedFunctions;
44
+ /** The cached index, followed by entries for {@link _namedFunctions} built fresh. */
45
+ private _entries;
31
46
  /** {@inheritDoc IFunctionCollection.search} */
32
47
  search(options?: IFunctionCollection.SearchOptions): Promise<IFunction[]>;
33
48
  /**
@@ -66,9 +81,24 @@ export declare class FunctionCollection implements IFunctionCollection {
66
81
  protected _initState(): void;
67
82
  /** {@inheritDoc IListener.ISource.addListeners} */
68
83
  addListeners(listeners: IFunctionCollection.IListeners, options?: IListener.Options): IListener.Remove;
69
- isClosed(): boolean;
84
+ /**
85
+ * Closes the collection. Called by the owner when it closes; announces
86
+ * {@link ICollection.Events.onClose} once.
87
+ */
70
88
  close(): void;
71
89
  get isFunctionCollection(): true;
90
+ /** {@inheritDoc IFunctionCollection.isIFunctionCollection} */
91
+ get isIFunctionCollection(): true;
92
+ }
93
+ /**
94
+ * Functions a collection lists and answers without holding them — the calculation's named lambdas.
95
+ * See {@link FunctionCollection._setNamedSource}.
96
+ */
97
+ export interface NamedFunctionSource {
98
+ /** The function `name` exports as seen from `sheet` (a sheet's own name shadows a global), or `null`. */
99
+ getByName(name: string, sheet?: string): IFunction | null;
100
+ /** Every exported function, one per name. */
101
+ getItems(): IFunction[];
72
102
  }
73
103
  export interface ConstructorOptions {
74
104
  /**
@@ -3,6 +3,9 @@ import { ICollection } from '../type';
3
3
  import { IListener } from '../listener';
4
4
  /**
5
5
  * Collections of {@link IFunction}.
6
+ *
7
+ * @remarks
8
+ * Keyed by name, not ordered: iteration order is unspecified.
6
9
  */
7
10
  export interface IFunctionCollection extends ICollection<IFunction> {
8
11
  /**
@@ -15,6 +18,19 @@ export interface IFunctionCollection extends ICollection<IFunction> {
15
18
  * are registered and the first (primary) one is returned.
16
19
  */
17
20
  add(option: string | IFunction | IFunctionCollection.AddOptions): Promise<IFunction>;
21
+ /**
22
+ * The functions in the collection, narrowed by {@link IFunctionCollection.GetItemsOptions}.
23
+ *
24
+ * @remarks
25
+ * Synchronous, and therefore deliberately narrower than {@link IFunctionCollection.search}: it
26
+ * offers only the filters that read no {@link IFunction.IDescriptor} (`name`, `type`). Anything
27
+ * that needs a descriptor — `text`, `category`, `includeDeprecated` — has to load them, which
28
+ * is why it lives on `search` and returns a promise.
29
+ *
30
+ * Unlike `search`, this does NOT resolve shadowing: a custom function sharing a built-in's name
31
+ * is returned alongside it rather than in place of it.
32
+ */
33
+ getItems(options?: IFunctionCollection.GetItemsOptions): IFunction[];
18
34
  /**
19
35
  * Returns functions that match the filter criteria.
20
36
  *
@@ -68,8 +84,16 @@ export interface IFunctionCollection extends ICollection<IFunction> {
68
84
  * resolve against the bound sheet with no evaluation current, and the instance is safe to
69
85
  * hold across awaits. Without options, the shared registry instance is returned (the one the
70
86
  * engine evaluates with); its reference resolution requires an active evaluation.
87
+ *
88
+ * A defined name whose body is `LAMBDA(…)` answers too, when no function has the name: a function
89
+ * whose `isLambda()` is `true`, with the lambda's parameters and, as its summary, the name's comment
90
+ * (or its formula, without one).
91
+ * {@link getItems} and {@link search} list these under the category `Lambda`. `options.sheet` only
92
+ * chooses which sheet's names are visible — a named lambda cannot be bound or called outside its name.
71
93
  */
72
94
  getByName(name: string, options?: IFunctionCollection.GetByNameOptions): IFunction | null;
95
+ /** For runtime type checking. */
96
+ readonly isIFunctionCollection: true;
73
97
  }
74
98
  /**
75
99
  * {@inheritDoc IFunctionCollection}
@@ -82,6 +106,23 @@ export declare namespace IFunctionCollection {
82
106
  /**
83
107
  * Options for {@link IFunctionCollection.getByName}.
84
108
  */
109
+ /**
110
+ * Options for {@link IFunctionCollection.getItems}.
111
+ */
112
+ interface GetItemsOptions extends ICollection.GetItemsOptions {
113
+ /**
114
+ * Only the function with this name. Case insensitive.
115
+ */
116
+ name?: string;
117
+ /**
118
+ * Only functions of this type: `'formula'`, `'macro'` or `'autoRun'`.
119
+ *
120
+ * @remarks
121
+ * Compared against {@link IFunction.getContext}, which is what `search` filters on too, so the
122
+ * two agree on what a type means.
123
+ */
124
+ type?: string;
125
+ }
85
126
  interface GetByNameOptions {
86
127
  /**
87
128
  * A sheet name to bind the returned function to. Vends a NEW instance whose evaluation
@@ -1,5 +1,7 @@
1
1
  import { CompileOptions as _CompileOptions, CompileResult as _CompileResult, CompiledModule, Diagnostic as _Diagnostic } from '@sheetxl/scripting';
2
2
  import { IListener } from '../listener';
3
+ import { ISheet } from '../sheet';
4
+ import { IWorkbook } from '../workbook';
3
5
  import { IFunctionCollection } from './IFunctionCollection';
4
6
  /**
5
7
  * Represents a collection of functions. This is analogous to a file.
@@ -23,6 +25,21 @@ export interface IModule {
23
25
  * The language the function is written in.
24
26
  */
25
27
  getLanguage(): string;
28
+ /**
29
+ * What the module is bound to — the sheet or workbook that owns it, or `null` when it is
30
+ * global.
31
+ *
32
+ * @remarks
33
+ * Scope is a **visibility rule**, not a label: only a globally scoped module contributes
34
+ * functions to the workbook's formula namespace. A UDF declared in a sheet- or
35
+ * workbook-scoped module is unreachable from a cell formula.
36
+ *
37
+ * It is also **derived, not stored** — a module's scope is where it lives. A sheet's modules
38
+ * are reached through {@link ISheet.getModules}, and go away with the sheet; there is
39
+ * deliberately no setter, because changing a module's scope would silently promote or demote
40
+ * every function in it.
41
+ */
42
+ getScope(): IModule.Scope;
26
43
  /**
27
44
  * Returns the error-severity diagnostics for the module (a subset of {@link IModule.getDiagnostics}).
28
45
  */
@@ -45,6 +62,10 @@ export interface IModule {
45
62
  */
46
63
  toJSON(): IModule.JSON;
47
64
  addListeners(listeners: IModule.IListeners, options?: IListener.Options): IListener.Remove;
65
+ /**
66
+ * For runtime type checking.
67
+ */
68
+ readonly isIModule: true;
48
69
  }
49
70
  /**
50
71
  * {@inheritDoc IModule}
@@ -66,6 +87,10 @@ export declare namespace IModule {
66
87
  * Used to serialize a module.
67
88
  */
68
89
  type JSON = CompiledModule;
90
+ /**
91
+ * What a module is bound to: a sheet, the workbook, or `null` for global.
92
+ */
93
+ type Scope = ISheet | IWorkbook | null;
69
94
  /**
70
95
  * A positioned compile diagnostic (error or warning).
71
96
  */
@@ -3,6 +3,11 @@ import { IListener } from '../listener';
3
3
  import { IModule } from './IModule';
4
4
  /**
5
5
  * Represents a collection of functions. This is analogous to a file.
6
+ *
7
+ * @remarks
8
+ * Keyed by the module's id, not ordered: iteration order is unspecified. The unfiltered walk
9
+ * (`for…of`, `getCount()`, `toArray()`) is what `getItems()` returns with no options — the
10
+ * default language's modules; pass `{ language: null }` to `getItems` for every language.
6
11
  */
7
12
  export interface IModuleCollection extends ICollection<IModule> {
8
13
  /**
@@ -39,6 +44,10 @@ export interface IModuleCollection extends ICollection<IModule> {
39
44
  * Returns a JSON representation of the module collection.
40
45
  */
41
46
  toJSON(): Record<string, IModule.JSON>;
47
+ /**
48
+ * For runtime type checking.
49
+ */
50
+ readonly isIModuleCollection: true;
42
51
  }
43
52
  export declare namespace IModuleCollection {
44
53
  interface AddOptions {
@@ -59,6 +68,14 @@ export declare namespace IModuleCollection {
59
68
  * Search with the given name. This is case insensitive.
60
69
  */
61
70
  name?: string;
71
+ /**
72
+ * Only return modules written in this language. This is case insensitive.
73
+ *
74
+ * Pass `null` for every module, whatever its language.
75
+ *
76
+ * @defaultValue `'typescript'`
77
+ */
78
+ language?: string | null;
62
79
  }
63
80
  interface Events {
64
81
  /**
@@ -131,6 +131,8 @@ export interface IScript {
131
131
  * Returns a JSON representation of the script.
132
132
  */
133
133
  toJSON(): Record<string, IModule.JSON>;
134
+ /** For runtime type checking. */
135
+ readonly isIScript: true;
134
136
  }
135
137
  /**
136
138
  * {@inheritDoc IFunctionCollection}
@@ -140,6 +142,10 @@ export interface IScript {
140
142
  * {@link IFunctionCollection}
141
143
  */
142
144
  export declare namespace IScript {
145
+ /**
146
+ * The name a module gets when nothing named it — the one an editor opens by default.
147
+ */
148
+ const DEFAULT_MODULE: string;
143
149
  /**
144
150
  * Events for {@link ISheet}.
145
151
  */
@@ -250,6 +256,18 @@ export declare namespace IScript {
250
256
  * objects fall back to JSON.
251
257
  */
252
258
  render?: LogRenderer;
259
+ /**
260
+ * How long a finished run waits for what it logged to settle, in milliseconds. `0` waits
261
+ * indefinitely.
262
+ *
263
+ * @remarks
264
+ * `log(promise)` prints what the promise settles to, so a run is not done until its log is. A
265
+ * value still unsettled when this elapses prints as `[pending]`; nothing is thrown and the rest
266
+ * of the log is kept.
267
+ *
268
+ * @defaultValue 10 seconds
269
+ */
270
+ logTimeoutMs?: number;
253
271
  }
254
272
  /**
255
273
  * The result of {@link IScript.run}.