@fluidframework/container-runtime 2.13.0 → 2.21.0

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 (489) hide show
  1. package/.eslintrc.cjs +71 -5
  2. package/CHANGELOG.md +84 -0
  3. package/api-report/container-runtime.legacy.alpha.api.md +38 -232
  4. package/dist/batchTracker.d.ts +1 -2
  5. package/dist/batchTracker.d.ts.map +1 -1
  6. package/dist/batchTracker.js +1 -1
  7. package/dist/batchTracker.js.map +1 -1
  8. package/dist/blobManager/blobManager.d.ts +5 -1
  9. package/dist/blobManager/blobManager.d.ts.map +1 -1
  10. package/dist/blobManager/blobManager.js +30 -13
  11. package/dist/blobManager/blobManager.js.map +1 -1
  12. package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
  13. package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  14. package/dist/blobManager/blobManagerSnapSum.js +7 -5
  15. package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
  16. package/dist/channelCollection.d.ts +23 -12
  17. package/dist/channelCollection.d.ts.map +1 -1
  18. package/dist/channelCollection.js +85 -53
  19. package/dist/channelCollection.js.map +1 -1
  20. package/dist/connectionTelemetry.d.ts +2 -2
  21. package/dist/connectionTelemetry.d.ts.map +1 -1
  22. package/dist/connectionTelemetry.js +10 -6
  23. package/dist/connectionTelemetry.js.map +1 -1
  24. package/dist/containerHandleContext.d.ts +1 -1
  25. package/dist/containerHandleContext.d.ts.map +1 -1
  26. package/dist/containerHandleContext.js.map +1 -1
  27. package/dist/containerRuntime.d.ts +87 -94
  28. package/dist/containerRuntime.d.ts.map +1 -1
  29. package/dist/containerRuntime.js +312 -226
  30. package/dist/containerRuntime.js.map +1 -1
  31. package/dist/dataStore.d.ts +7 -3
  32. package/dist/dataStore.d.ts.map +1 -1
  33. package/dist/dataStore.js +8 -4
  34. package/dist/dataStore.js.map +1 -1
  35. package/dist/dataStoreContext.d.ts +41 -25
  36. package/dist/dataStoreContext.d.ts.map +1 -1
  37. package/dist/dataStoreContext.js +47 -29
  38. package/dist/dataStoreContext.js.map +1 -1
  39. package/dist/dataStoreContexts.d.ts +6 -2
  40. package/dist/dataStoreContexts.d.ts.map +1 -1
  41. package/dist/dataStoreContexts.js +7 -2
  42. package/dist/dataStoreContexts.js.map +1 -1
  43. package/dist/dataStoreRegistry.d.ts +1 -1
  44. package/dist/dataStoreRegistry.d.ts.map +1 -1
  45. package/dist/dataStoreRegistry.js.map +1 -1
  46. package/dist/deltaManagerProxies.d.ts +1 -17
  47. package/dist/deltaManagerProxies.d.ts.map +1 -1
  48. package/dist/deltaManagerProxies.js.map +1 -1
  49. package/dist/deltaScheduler.d.ts +9 -6
  50. package/dist/deltaScheduler.d.ts.map +1 -1
  51. package/dist/deltaScheduler.js +95 -89
  52. package/dist/deltaScheduler.js.map +1 -1
  53. package/dist/gc/garbageCollection.d.ts +21 -7
  54. package/dist/gc/garbageCollection.d.ts.map +1 -1
  55. package/dist/gc/garbageCollection.js +48 -19
  56. package/dist/gc/garbageCollection.js.map +1 -1
  57. package/dist/gc/gcConfigs.d.ts +11 -0
  58. package/dist/gc/gcConfigs.d.ts.map +1 -1
  59. package/dist/gc/gcConfigs.js +5 -2
  60. package/dist/gc/gcConfigs.js.map +1 -1
  61. package/dist/gc/gcDefinitions.d.ts +218 -70
  62. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  63. package/dist/gc/gcDefinitions.js +40 -13
  64. package/dist/gc/gcDefinitions.js.map +1 -1
  65. package/dist/gc/gcHelpers.d.ts +6 -2
  66. package/dist/gc/gcHelpers.d.ts.map +1 -1
  67. package/dist/gc/gcHelpers.js +14 -7
  68. package/dist/gc/gcHelpers.js.map +1 -1
  69. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  70. package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
  71. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  72. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  73. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  74. package/dist/gc/gcSummaryStateTracker.js +2 -1
  75. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  76. package/dist/gc/gcTelemetry.d.ts +33 -11
  77. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  78. package/dist/gc/gcTelemetry.js +35 -17
  79. package/dist/gc/gcTelemetry.js.map +1 -1
  80. package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
  81. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  82. package/dist/gc/gcUnreferencedStateTracker.js +27 -9
  83. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  84. package/dist/gc/index.d.ts +1 -0
  85. package/dist/gc/index.d.ts.map +1 -1
  86. package/dist/gc/index.js +3 -1
  87. package/dist/gc/index.js.map +1 -1
  88. package/dist/inboundBatchAggregator.d.ts +34 -0
  89. package/dist/inboundBatchAggregator.d.ts.map +1 -0
  90. package/dist/inboundBatchAggregator.js +185 -0
  91. package/dist/inboundBatchAggregator.js.map +1 -0
  92. package/dist/index.d.ts +1 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/layerCompatState.d.ts +19 -0
  96. package/dist/layerCompatState.d.ts.map +1 -0
  97. package/dist/layerCompatState.js +64 -0
  98. package/dist/layerCompatState.js.map +1 -0
  99. package/dist/legacy.d.ts +0 -4
  100. package/dist/messageTypes.d.ts +14 -5
  101. package/dist/messageTypes.d.ts.map +1 -1
  102. package/dist/messageTypes.js.map +1 -1
  103. package/dist/metadata.d.ts +12 -4
  104. package/dist/metadata.d.ts.map +1 -1
  105. package/dist/metadata.js +6 -2
  106. package/dist/metadata.js.map +1 -1
  107. package/dist/opLifecycle/batchManager.d.ts +9 -3
  108. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  109. package/dist/opLifecycle/batchManager.js +3 -1
  110. package/dist/opLifecycle/batchManager.js.map +1 -1
  111. package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  112. package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  113. package/dist/opLifecycle/duplicateBatchDetector.js +11 -5
  114. package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
  115. package/dist/opLifecycle/opCompressor.d.ts +3 -2
  116. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  117. package/dist/opLifecycle/opCompressor.js +13 -19
  118. package/dist/opLifecycle/opCompressor.js.map +1 -1
  119. package/dist/opLifecycle/opDecompressor.d.ts +6 -1
  120. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  121. package/dist/opLifecycle/opDecompressor.js +16 -8
  122. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  123. package/dist/opLifecycle/opGroupingManager.d.ts +1 -2
  124. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  125. package/dist/opLifecycle/opGroupingManager.js +9 -6
  126. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  127. package/dist/opLifecycle/opSplitter.d.ts +13 -10
  128. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  129. package/dist/opLifecycle/opSplitter.js +16 -11
  130. package/dist/opLifecycle/opSplitter.js.map +1 -1
  131. package/dist/opLifecycle/outbox.d.ts +4 -4
  132. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  133. package/dist/opLifecycle/outbox.js +17 -16
  134. package/dist/opLifecycle/outbox.js.map +1 -1
  135. package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  136. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  137. package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
  138. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  139. package/dist/package.json +2 -1
  140. package/dist/packageVersion.d.ts +1 -1
  141. package/dist/packageVersion.js +1 -1
  142. package/dist/packageVersion.js.map +1 -1
  143. package/dist/pendingStateManager.d.ts +22 -11
  144. package/dist/pendingStateManager.d.ts.map +1 -1
  145. package/dist/pendingStateManager.js +24 -15
  146. package/dist/pendingStateManager.js.map +1 -1
  147. package/dist/summary/documentSchema.d.ts +7 -0
  148. package/dist/summary/documentSchema.d.ts.map +1 -1
  149. package/dist/summary/documentSchema.js +8 -4
  150. package/dist/summary/documentSchema.js.map +1 -1
  151. package/dist/summary/index.d.ts +1 -1
  152. package/dist/summary/index.d.ts.map +1 -1
  153. package/dist/summary/index.js.map +1 -1
  154. package/dist/summary/orderedClientElection.d.ts +94 -31
  155. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  156. package/dist/summary/orderedClientElection.js +28 -16
  157. package/dist/summary/orderedClientElection.js.map +1 -1
  158. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
  159. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  160. package/dist/summary/runWhileConnectedCoordinator.js +7 -2
  161. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  162. package/dist/summary/runningSummarizer.d.ts +17 -6
  163. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  164. package/dist/summary/runningSummarizer.js +48 -19
  165. package/dist/summary/runningSummarizer.js.map +1 -1
  166. package/dist/summary/summarizer.d.ts +10 -5
  167. package/dist/summary/summarizer.d.ts.map +1 -1
  168. package/dist/summary/summarizer.js +26 -11
  169. package/dist/summary/summarizer.js.map +1 -1
  170. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  171. package/dist/summary/summarizerClientElection.js +1 -0
  172. package/dist/summary/summarizerClientElection.js.map +1 -1
  173. package/dist/summary/summarizerHeuristics.d.ts +6 -2
  174. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  175. package/dist/summary/summarizerHeuristics.js +13 -5
  176. package/dist/summary/summarizerHeuristics.js.map +1 -1
  177. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  178. package/dist/summary/summarizerNode/index.js.map +1 -1
  179. package/dist/summary/summarizerNode/summarizerNode.d.ts +24 -8
  180. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  181. package/dist/summary/summarizerNode/summarizerNode.js +45 -36
  182. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  183. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  184. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  185. package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  186. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  187. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
  188. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  189. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
  190. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  191. package/dist/summary/summarizerTypes.d.ts +253 -135
  192. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  193. package/dist/summary/summarizerTypes.js.map +1 -1
  194. package/dist/summary/summaryCollection.d.ts +3 -4
  195. package/dist/summary/summaryCollection.d.ts.map +1 -1
  196. package/dist/summary/summaryCollection.js +10 -8
  197. package/dist/summary/summaryCollection.js.map +1 -1
  198. package/dist/summary/summaryFormat.d.ts +28 -9
  199. package/dist/summary/summaryFormat.d.ts.map +1 -1
  200. package/dist/summary/summaryFormat.js +3 -2
  201. package/dist/summary/summaryFormat.js.map +1 -1
  202. package/dist/summary/summaryGenerator.d.ts +9 -3
  203. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  204. package/dist/summary/summaryGenerator.js +22 -9
  205. package/dist/summary/summaryGenerator.js.map +1 -1
  206. package/dist/summary/summaryManager.d.ts +8 -4
  207. package/dist/summary/summaryManager.d.ts.map +1 -1
  208. package/dist/summary/summaryManager.js +20 -9
  209. package/dist/summary/summaryManager.js.map +1 -1
  210. package/dist/throttler.d.ts +26 -10
  211. package/dist/throttler.d.ts.map +1 -1
  212. package/dist/throttler.js +12 -4
  213. package/dist/throttler.js.map +1 -1
  214. package/lib/batchTracker.d.ts +1 -2
  215. package/lib/batchTracker.d.ts.map +1 -1
  216. package/lib/batchTracker.js +2 -2
  217. package/lib/batchTracker.js.map +1 -1
  218. package/lib/blobManager/blobManager.d.ts +5 -1
  219. package/lib/blobManager/blobManager.d.ts.map +1 -1
  220. package/lib/blobManager/blobManager.js +30 -13
  221. package/lib/blobManager/blobManager.js.map +1 -1
  222. package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
  223. package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  224. package/lib/blobManager/blobManagerSnapSum.js +7 -5
  225. package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
  226. package/lib/channelCollection.d.ts +23 -12
  227. package/lib/channelCollection.d.ts.map +1 -1
  228. package/lib/channelCollection.js +88 -54
  229. package/lib/channelCollection.js.map +1 -1
  230. package/lib/connectionTelemetry.d.ts +2 -2
  231. package/lib/connectionTelemetry.d.ts.map +1 -1
  232. package/lib/connectionTelemetry.js +11 -7
  233. package/lib/connectionTelemetry.js.map +1 -1
  234. package/lib/containerHandleContext.d.ts +1 -1
  235. package/lib/containerHandleContext.d.ts.map +1 -1
  236. package/lib/containerHandleContext.js.map +1 -1
  237. package/lib/containerRuntime.d.ts +87 -94
  238. package/lib/containerRuntime.d.ts.map +1 -1
  239. package/lib/containerRuntime.js +319 -228
  240. package/lib/containerRuntime.js.map +1 -1
  241. package/lib/dataStore.d.ts +7 -3
  242. package/lib/dataStore.d.ts.map +1 -1
  243. package/lib/dataStore.js +8 -4
  244. package/lib/dataStore.js.map +1 -1
  245. package/lib/dataStoreContext.d.ts +41 -25
  246. package/lib/dataStoreContext.d.ts.map +1 -1
  247. package/lib/dataStoreContext.js +47 -29
  248. package/lib/dataStoreContext.js.map +1 -1
  249. package/lib/dataStoreContexts.d.ts +6 -2
  250. package/lib/dataStoreContexts.d.ts.map +1 -1
  251. package/lib/dataStoreContexts.js +7 -2
  252. package/lib/dataStoreContexts.js.map +1 -1
  253. package/lib/dataStoreRegistry.d.ts +1 -1
  254. package/lib/dataStoreRegistry.d.ts.map +1 -1
  255. package/lib/dataStoreRegistry.js.map +1 -1
  256. package/lib/deltaManagerProxies.d.ts +1 -17
  257. package/lib/deltaManagerProxies.d.ts.map +1 -1
  258. package/lib/deltaManagerProxies.js.map +1 -1
  259. package/lib/deltaScheduler.d.ts +9 -6
  260. package/lib/deltaScheduler.d.ts.map +1 -1
  261. package/lib/deltaScheduler.js +96 -90
  262. package/lib/deltaScheduler.js.map +1 -1
  263. package/lib/gc/garbageCollection.d.ts +21 -7
  264. package/lib/gc/garbageCollection.d.ts.map +1 -1
  265. package/lib/gc/garbageCollection.js +51 -20
  266. package/lib/gc/garbageCollection.js.map +1 -1
  267. package/lib/gc/gcConfigs.d.ts +11 -0
  268. package/lib/gc/gcConfigs.d.ts.map +1 -1
  269. package/lib/gc/gcConfigs.js +4 -2
  270. package/lib/gc/gcConfigs.js.map +1 -1
  271. package/lib/gc/gcDefinitions.d.ts +218 -70
  272. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  273. package/lib/gc/gcDefinitions.js +40 -13
  274. package/lib/gc/gcDefinitions.js.map +1 -1
  275. package/lib/gc/gcHelpers.d.ts +6 -2
  276. package/lib/gc/gcHelpers.d.ts.map +1 -1
  277. package/lib/gc/gcHelpers.js +14 -7
  278. package/lib/gc/gcHelpers.js.map +1 -1
  279. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  280. package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
  281. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  282. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  283. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  284. package/lib/gc/gcSummaryStateTracker.js +2 -1
  285. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  286. package/lib/gc/gcTelemetry.d.ts +33 -11
  287. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  288. package/lib/gc/gcTelemetry.js +38 -18
  289. package/lib/gc/gcTelemetry.js.map +1 -1
  290. package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
  291. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  292. package/lib/gc/gcUnreferencedStateTracker.js +27 -9
  293. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  294. package/lib/gc/index.d.ts +1 -0
  295. package/lib/gc/index.d.ts.map +1 -1
  296. package/lib/gc/index.js +1 -0
  297. package/lib/gc/index.js.map +1 -1
  298. package/lib/inboundBatchAggregator.d.ts +34 -0
  299. package/lib/inboundBatchAggregator.d.ts.map +1 -0
  300. package/lib/inboundBatchAggregator.js +181 -0
  301. package/lib/inboundBatchAggregator.js.map +1 -0
  302. package/lib/index.d.ts +1 -1
  303. package/lib/index.d.ts.map +1 -1
  304. package/lib/index.js.map +1 -1
  305. package/lib/layerCompatState.d.ts +19 -0
  306. package/lib/layerCompatState.d.ts.map +1 -0
  307. package/lib/layerCompatState.js +60 -0
  308. package/lib/layerCompatState.js.map +1 -0
  309. package/lib/legacy.d.ts +0 -4
  310. package/lib/messageTypes.d.ts +14 -5
  311. package/lib/messageTypes.d.ts.map +1 -1
  312. package/lib/messageTypes.js.map +1 -1
  313. package/lib/metadata.d.ts +12 -4
  314. package/lib/metadata.d.ts.map +1 -1
  315. package/lib/metadata.js +6 -2
  316. package/lib/metadata.js.map +1 -1
  317. package/lib/opLifecycle/batchManager.d.ts +9 -3
  318. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  319. package/lib/opLifecycle/batchManager.js +3 -1
  320. package/lib/opLifecycle/batchManager.js.map +1 -1
  321. package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  322. package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  323. package/lib/opLifecycle/duplicateBatchDetector.js +11 -5
  324. package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
  325. package/lib/opLifecycle/opCompressor.d.ts +3 -2
  326. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  327. package/lib/opLifecycle/opCompressor.js +14 -20
  328. package/lib/opLifecycle/opCompressor.js.map +1 -1
  329. package/lib/opLifecycle/opDecompressor.d.ts +6 -1
  330. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  331. package/lib/opLifecycle/opDecompressor.js +17 -9
  332. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  333. package/lib/opLifecycle/opGroupingManager.d.ts +1 -2
  334. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  335. package/lib/opLifecycle/opGroupingManager.js +10 -7
  336. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  337. package/lib/opLifecycle/opSplitter.d.ts +13 -10
  338. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  339. package/lib/opLifecycle/opSplitter.js +16 -11
  340. package/lib/opLifecycle/opSplitter.js.map +1 -1
  341. package/lib/opLifecycle/outbox.d.ts +4 -4
  342. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  343. package/lib/opLifecycle/outbox.js +17 -16
  344. package/lib/opLifecycle/outbox.js.map +1 -1
  345. package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  346. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  347. package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
  348. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  349. package/lib/packageVersion.d.ts +1 -1
  350. package/lib/packageVersion.js +1 -1
  351. package/lib/packageVersion.js.map +1 -1
  352. package/lib/pendingStateManager.d.ts +22 -11
  353. package/lib/pendingStateManager.d.ts.map +1 -1
  354. package/lib/pendingStateManager.js +25 -16
  355. package/lib/pendingStateManager.js.map +1 -1
  356. package/lib/summary/documentSchema.d.ts +7 -0
  357. package/lib/summary/documentSchema.d.ts.map +1 -1
  358. package/lib/summary/documentSchema.js +8 -4
  359. package/lib/summary/documentSchema.js.map +1 -1
  360. package/lib/summary/index.d.ts +1 -1
  361. package/lib/summary/index.d.ts.map +1 -1
  362. package/lib/summary/index.js.map +1 -1
  363. package/lib/summary/orderedClientElection.d.ts +94 -31
  364. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  365. package/lib/summary/orderedClientElection.js +28 -16
  366. package/lib/summary/orderedClientElection.js.map +1 -1
  367. package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
  368. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  369. package/lib/summary/runWhileConnectedCoordinator.js +7 -2
  370. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  371. package/lib/summary/runningSummarizer.d.ts +17 -6
  372. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  373. package/lib/summary/runningSummarizer.js +48 -19
  374. package/lib/summary/runningSummarizer.js.map +1 -1
  375. package/lib/summary/summarizer.d.ts +10 -5
  376. package/lib/summary/summarizer.d.ts.map +1 -1
  377. package/lib/summary/summarizer.js +26 -11
  378. package/lib/summary/summarizer.js.map +1 -1
  379. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  380. package/lib/summary/summarizerClientElection.js +1 -0
  381. package/lib/summary/summarizerClientElection.js.map +1 -1
  382. package/lib/summary/summarizerHeuristics.d.ts +6 -2
  383. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  384. package/lib/summary/summarizerHeuristics.js +13 -5
  385. package/lib/summary/summarizerHeuristics.js.map +1 -1
  386. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  387. package/lib/summary/summarizerNode/index.js.map +1 -1
  388. package/lib/summary/summarizerNode/summarizerNode.d.ts +24 -8
  389. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  390. package/lib/summary/summarizerNode/summarizerNode.js +45 -36
  391. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  392. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  393. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  394. package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  395. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  396. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
  397. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  398. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
  399. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  400. package/lib/summary/summarizerTypes.d.ts +253 -135
  401. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  402. package/lib/summary/summarizerTypes.js.map +1 -1
  403. package/lib/summary/summaryCollection.d.ts +3 -4
  404. package/lib/summary/summaryCollection.d.ts.map +1 -1
  405. package/lib/summary/summaryCollection.js +10 -8
  406. package/lib/summary/summaryCollection.js.map +1 -1
  407. package/lib/summary/summaryFormat.d.ts +28 -9
  408. package/lib/summary/summaryFormat.d.ts.map +1 -1
  409. package/lib/summary/summaryFormat.js +2 -2
  410. package/lib/summary/summaryFormat.js.map +1 -1
  411. package/lib/summary/summaryGenerator.d.ts +9 -3
  412. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  413. package/lib/summary/summaryGenerator.js +22 -9
  414. package/lib/summary/summaryGenerator.js.map +1 -1
  415. package/lib/summary/summaryManager.d.ts +8 -4
  416. package/lib/summary/summaryManager.d.ts.map +1 -1
  417. package/lib/summary/summaryManager.js +20 -9
  418. package/lib/summary/summaryManager.js.map +1 -1
  419. package/lib/throttler.d.ts +26 -10
  420. package/lib/throttler.d.ts.map +1 -1
  421. package/lib/throttler.js +12 -4
  422. package/lib/throttler.js.map +1 -1
  423. package/package.json +22 -31
  424. package/src/batchTracker.ts +34 -36
  425. package/src/blobManager/blobManager.ts +54 -33
  426. package/src/blobManager/blobManagerSnapSum.ts +10 -10
  427. package/src/channelCollection.ts +108 -82
  428. package/src/connectionTelemetry.ts +43 -19
  429. package/src/containerHandleContext.ts +2 -2
  430. package/src/containerRuntime.ts +492 -364
  431. package/src/dataStore.ts +17 -9
  432. package/src/dataStoreContext.ts +94 -73
  433. package/src/dataStoreContexts.ts +17 -12
  434. package/src/dataStoreRegistry.ts +1 -1
  435. package/src/deltaManagerProxies.ts +5 -5
  436. package/src/deltaScheduler.ts +24 -18
  437. package/src/gc/garbageCollection.ts +89 -40
  438. package/src/gc/gcConfigs.ts +13 -5
  439. package/src/gc/gcDefinitions.ts +224 -70
  440. package/src/gc/gcHelpers.ts +22 -11
  441. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  442. package/src/gc/gcSummaryDefinitions.ts +18 -6
  443. package/src/gc/gcSummaryStateTracker.ts +7 -3
  444. package/src/gc/gcTelemetry.ts +73 -30
  445. package/src/gc/gcUnreferencedStateTracker.ts +40 -16
  446. package/src/gc/index.ts +1 -0
  447. package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +55 -122
  448. package/src/index.ts +0 -3
  449. package/src/layerCompatState.ts +75 -0
  450. package/src/messageTypes.ts +16 -5
  451. package/src/metadata.ts +12 -4
  452. package/src/opLifecycle/README.md +43 -34
  453. package/src/opLifecycle/batchManager.ts +12 -6
  454. package/src/opLifecycle/duplicateBatchDetector.ts +12 -6
  455. package/src/opLifecycle/opCompressor.ts +22 -25
  456. package/src/opLifecycle/opDecompressor.ts +23 -11
  457. package/src/opLifecycle/opGroupingManager.ts +16 -11
  458. package/src/opLifecycle/opSplitter.ts +24 -18
  459. package/src/opLifecycle/outbox.ts +35 -33
  460. package/src/opLifecycle/remoteMessageProcessor.ts +13 -5
  461. package/src/packageVersion.ts +1 -1
  462. package/src/pendingStateManager.ts +49 -26
  463. package/src/summary/documentSchema.ts +41 -22
  464. package/src/summary/index.ts +0 -3
  465. package/src/summary/orderedClientElection.ts +114 -49
  466. package/src/summary/runWhileConnectedCoordinator.ts +12 -3
  467. package/src/summary/runningSummarizer.ts +79 -36
  468. package/src/summary/summarizer.ts +51 -25
  469. package/src/summary/summarizerClientElection.ts +4 -2
  470. package/src/summary/summarizerHeuristics.ts +23 -12
  471. package/src/summary/summarizerNode/index.ts +1 -0
  472. package/src/summary/summarizerNode/summarizerNode.ts +54 -43
  473. package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
  474. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +25 -15
  475. package/src/summary/summarizerTypes.ts +253 -139
  476. package/src/summary/summaryCollection.ts +41 -31
  477. package/src/summary/summaryFormat.ts +34 -13
  478. package/src/summary/summaryGenerator.ts +39 -18
  479. package/src/summary/summaryManager.ts +36 -24
  480. package/src/throttler.ts +23 -11
  481. package/container-runtime.test-files.tar +0 -0
  482. package/dist/scheduleManager.d.ts +0 -28
  483. package/dist/scheduleManager.d.ts.map +0 -1
  484. package/dist/scheduleManager.js +0 -233
  485. package/dist/scheduleManager.js.map +0 -1
  486. package/lib/scheduleManager.d.ts +0 -28
  487. package/lib/scheduleManager.d.ts.map +0 -1
  488. package/lib/scheduleManager.js +0 -229
  489. package/lib/scheduleManager.js.map +0 -1
@@ -23,6 +23,7 @@ import {
23
23
  createChildLogger,
24
24
  createChildMonitoringContext,
25
25
  isFluidError,
26
+ type ITelemetryLoggerExt,
26
27
  } from "@fluidframework/telemetry-utils/internal";
27
28
 
28
29
  import { ISummaryConfiguration } from "../containerRuntime.js";
@@ -33,7 +34,9 @@ import {
33
34
  EnqueueSummarizeResult,
34
35
  IEnqueueSummarizeOptions,
35
36
  IOnDemandSummarizeOptions,
37
+ // eslint-disable-next-line import/no-deprecated
36
38
  IRefreshSummaryAckOptions,
39
+ // eslint-disable-next-line import/no-deprecated
37
40
  ISubmitSummaryOptions,
38
41
  ISummarizeHeuristicData,
39
42
  ISummarizeHeuristicRunner,
@@ -41,7 +44,9 @@ import {
41
44
  ISummarizeResults,
42
45
  ISummarizeRunnerTelemetry,
43
46
  ISummarizeTelemetryProperties,
47
+ // eslint-disable-next-line import/no-deprecated
44
48
  ISummarizerRuntime,
49
+ // eslint-disable-next-line import/no-deprecated
45
50
  ISummaryCancellationToken,
46
51
  SubmitSummaryResult,
47
52
  type IRetriableFailureError,
@@ -87,12 +92,16 @@ export class RunningSummarizer
87
92
  logger: ITelemetryBaseLogger,
88
93
  summaryWatcher: IClientSummaryWatcher,
89
94
  configuration: ISummaryConfiguration,
95
+ // eslint-disable-next-line import/no-deprecated
90
96
  submitSummaryCallback: (options: ISubmitSummaryOptions) => Promise<SubmitSummaryResult>,
97
+ // eslint-disable-next-line import/no-deprecated
91
98
  refreshLatestSummaryAckCallback: (options: IRefreshSummaryAckOptions) => Promise<void>,
92
99
  heuristicData: ISummarizeHeuristicData,
93
100
  summaryCollection: SummaryCollection,
101
+ // eslint-disable-next-line import/no-deprecated
94
102
  cancellationToken: ISummaryCancellationToken,
95
103
  stopSummarizerCallback: (reason: SummarizerStopReason) => void,
104
+ // eslint-disable-next-line import/no-deprecated
96
105
  runtime: ISummarizerRuntime,
97
106
  ): Promise<RunningSummarizer> {
98
107
  const summarizer = new RunningSummarizer(
@@ -163,7 +172,7 @@ export class RunningSummarizer
163
172
  return summarizer;
164
173
  }
165
174
 
166
- public get disposed() {
175
+ public get disposed(): boolean {
167
176
  return this._disposed;
168
177
  }
169
178
  private stopping = false;
@@ -187,9 +196,14 @@ export class RunningSummarizer
187
196
  private totalSuccessfulAttempts = 0;
188
197
  private initialized = false;
189
198
 
190
- private readonly runtimeListener;
199
+ private readonly runtimeListener: (
200
+ op: ISequencedDocumentMessage,
201
+ runtimeMessage?: boolean,
202
+ ) => void;
191
203
 
192
- /** The maximum number of summary attempts to do when submit summary fails. */
204
+ /**
205
+ * The maximum number of summary attempts to do when submit summary fails.
206
+ */
193
207
  private readonly maxAttemptsForSubmitFailures: number;
194
208
 
195
209
  /**
@@ -204,15 +218,19 @@ export class RunningSummarizer
204
218
  private readonly summaryWatcher: IClientSummaryWatcher,
205
219
  private readonly configuration: ISummaryConfiguration,
206
220
  private readonly submitSummaryCallback: (
221
+ // eslint-disable-next-line import/no-deprecated
207
222
  options: ISubmitSummaryOptions,
208
223
  ) => Promise<SubmitSummaryResult>,
209
224
  private readonly refreshLatestSummaryAckCallback: (
225
+ // eslint-disable-next-line import/no-deprecated
210
226
  options: IRefreshSummaryAckOptions,
211
227
  ) => Promise<void>,
212
228
  private readonly heuristicData: ISummarizeHeuristicData,
213
229
  private readonly summaryCollection: SummaryCollection,
230
+ // eslint-disable-next-line import/no-deprecated
214
231
  private readonly cancellationToken: ISummaryCancellationToken,
215
232
  private readonly stopSummarizerCallback: (reason: SummarizerStopReason) => void,
233
+ // eslint-disable-next-line import/no-deprecated
216
234
  private readonly runtime: ISummarizerRuntime,
217
235
  ) {
218
236
  super();
@@ -290,6 +308,7 @@ export class RunningSummarizer
290
308
  () => {
291
309
  this.totalSuccessfulAttempts++;
292
310
  },
311
+ // eslint-disable-next-line import/no-deprecated
293
312
  async (options: IRefreshSummaryAckOptions) => {
294
313
  if (immediatelyRefreshLatestSummaryAck) {
295
314
  await this.refreshLatestSummaryAckAndHandleError(options);
@@ -317,7 +336,7 @@ export class RunningSummarizer
317
336
  : defaultMaxAttemptsForSubmitFailures;
318
337
  }
319
338
 
320
- private async handleSummaryAck(ack: IAckedSummary) {
339
+ private async handleSummaryAck(ack: IAckedSummary): Promise<void> {
321
340
  const refSequenceNumber = ack.summaryOp.referenceSequenceNumber;
322
341
  const summaryLogger = this.tryGetCorrelatedLogger(refSequenceNumber) ?? this.mc.logger;
323
342
  const summaryOpHandle = ack.summaryOp.contents.handle;
@@ -338,6 +357,7 @@ export class RunningSummarizer
338
357
  await this.lockedSummaryAction(
339
358
  () => {},
340
359
  async () => {
360
+ // eslint-disable-next-line import/no-deprecated
341
361
  const options: IRefreshSummaryAckOptions = {
342
362
  proposalHandle: summaryOpHandle,
343
363
  ackHandle: summaryAckHandle,
@@ -351,8 +371,9 @@ export class RunningSummarizer
351
371
  }
352
372
 
353
373
  private readonly refreshLatestSummaryAckAndHandleError = async (
374
+ // eslint-disable-next-line import/no-deprecated
354
375
  options: IRefreshSummaryAckOptions,
355
- ) => {
376
+ ): Promise<void> => {
356
377
  return this.refreshLatestSummaryAckCallback(options).catch(async (error) => {
357
378
  // If the error is 404, so maybe the fetched version no longer exists on server. We just
358
379
  // ignore this error in that case, as that means we will have another summaryAck for the
@@ -387,7 +408,7 @@ export class RunningSummarizer
387
408
  * @param referenceSequenceNumber - The referenceSequenceNumber of the summary from which to start processing
388
409
  * acks.
389
410
  */
390
- private async processIncomingSummaryAcks(referenceSequenceNumber: number) {
411
+ private async processIncomingSummaryAcks(referenceSequenceNumber: number): Promise<void> {
391
412
  // Start waiting for acks that are for summaries newer that the one this client loaded from.
392
413
  let nextReferenceSequenceNumber = referenceSequenceNumber;
393
414
  while (!this.disposed) {
@@ -417,15 +438,19 @@ export class RunningSummarizer
417
438
  * but only if they're logging about that same summary.
418
439
  * @param summaryOpRefSeq - RefSeq number of the summary op, to ensure the log correlation will be correct
419
440
  */
420
- public tryGetCorrelatedLogger = (summaryOpRefSeq) =>
441
+ public tryGetCorrelatedLogger = (
442
+ summaryOpRefSeq: number,
443
+ ): ITelemetryLoggerExt | undefined =>
421
444
  this.heuristicData.lastAttempt.refSequenceNumber === summaryOpRefSeq
422
445
  ? this.mc.logger
423
446
  : undefined;
424
447
 
425
- /** We only want a single heuristic runner micro-task (will provide better optimized grouping of ops) */
448
+ /**
449
+ * We only want a single heuristic runner micro-task (will provide better optimized grouping of ops)
450
+ */
426
451
  private heuristicRunnerMicroTaskExists = false;
427
452
 
428
- public handleOp(op: ISequencedDocumentMessage, runtimeMessage: boolean) {
453
+ public handleOp(op: ISequencedDocumentMessage, runtimeMessage: boolean): void {
429
454
  this.heuristicData.lastOpSequenceNumber = op.sequenceNumber;
430
455
 
431
456
  if (runtimeMessage) {
@@ -468,10 +493,12 @@ export class RunningSummarizer
468
493
  switch (op.type) {
469
494
  case MessageType.Summarize:
470
495
  case MessageType.SummaryAck:
471
- case MessageType.SummaryNack:
496
+ case MessageType.SummaryNack: {
472
497
  return false;
473
- default:
498
+ }
499
+ default: {
474
500
  return runtimeMessage || this.nonRuntimeOpCanTriggerSummary();
501
+ }
475
502
  }
476
503
  }
477
504
 
@@ -496,16 +523,18 @@ export class RunningSummarizer
496
523
  this.disposeEnqueuedSummary();
497
524
 
498
525
  // This will try to run lastSummary if needed.
499
- if (allowLastSummary && this.heuristicRunner?.shouldRunLastSummary()) {
500
- if (this.summarizingLock === undefined) {
501
- this.trySummarizeOnce(
502
- // summarizeProps
503
- { summarizeReason: "lastSummary" },
504
- {},
505
- undefined,
506
- true /* isLastSummary */,
507
- );
508
- }
526
+ if (
527
+ allowLastSummary &&
528
+ this.heuristicRunner?.shouldRunLastSummary() &&
529
+ this.summarizingLock === undefined
530
+ ) {
531
+ this.trySummarizeOnce(
532
+ // summarizeProps
533
+ { summarizeReason: "lastSummary" },
534
+ {},
535
+ undefined,
536
+ true /* isLastSummary */,
537
+ );
509
538
  }
510
539
 
511
540
  // Note that trySummarizeOnce() call above returns right away, without waiting.
@@ -525,7 +554,7 @@ export class RunningSummarizer
525
554
  this.lastSummarizeFailureEventProps = undefined;
526
555
  }
527
556
 
528
- private async waitStart() {
557
+ private async waitStart(): Promise<void> {
529
558
  // Wait no longer than ack timeout for all pending
530
559
  const waitStartResult = await raceTimer(
531
560
  this.summaryWatcher.waitFlushed(),
@@ -548,11 +577,11 @@ export class RunningSummarizer
548
577
  this.initialized = true;
549
578
  }
550
579
 
551
- private beforeSummaryAction() {
580
+ private beforeSummaryAction(): void {
552
581
  this.summarizeCount++;
553
582
  }
554
583
 
555
- private afterSummaryAction() {
584
+ private afterSummaryAction(): void {
556
585
  const retry = this.tryWhileSummarizing;
557
586
  this.tryWhileSummarizing = false;
558
587
 
@@ -576,7 +605,7 @@ export class RunningSummarizer
576
605
  before: () => void,
577
606
  action: () => Promise<T>,
578
607
  after: () => void,
579
- ) {
608
+ ): Promise<T> {
580
609
  assert(
581
610
  this.summarizingLock === undefined,
582
611
  0x25b /* "Caller is responsible for checking lock" */,
@@ -618,6 +647,7 @@ export class RunningSummarizer
618
647
  logger: this.mc.logger,
619
648
  properties: { all: summarizeProps },
620
649
  });
650
+ // eslint-disable-next-line import/no-deprecated
621
651
  const summaryOptions: ISubmitSummaryOptions = {
622
652
  ...options,
623
653
  summaryLogger,
@@ -680,7 +710,9 @@ export class RunningSummarizer
680
710
  return resultsBuilder.build();
681
711
  }
682
712
 
683
- /** Heuristics summarize attempt. */
713
+ /**
714
+ * Heuristics summarize attempt.
715
+ */
684
716
  private trySummarize(reason: SummarizeReason): void {
685
717
  if (this.summarizingLock !== undefined) {
686
718
  // lockedSummaryAction() will retry heuristic-based summary at the end of current attempt
@@ -712,7 +744,13 @@ export class RunningSummarizer
712
744
  reason: SummarizeReason,
713
745
  ): Promise<ISummarizeResults | undefined> {
714
746
  // Helper to set summarize options, telemetry properties and call summarize.
715
- const attemptSummarize = (attemptNumber: number, finalAttempt: boolean) => {
747
+ const attemptSummarize = (
748
+ attemptNumber: number,
749
+ finalAttempt: boolean,
750
+ ): {
751
+ summarizeProps: ISummarizeTelemetryProperties;
752
+ summarizeResult: ISummarizeResults;
753
+ } => {
716
754
  const summarizeOptions: ISummarizeOptions = {
717
755
  fullTree: false,
718
756
  };
@@ -726,6 +764,7 @@ export class RunningSummarizer
726
764
  logger: this.mc.logger,
727
765
  properties: { all: summarizeProps },
728
766
  });
767
+ // eslint-disable-next-line import/no-deprecated
729
768
  const summaryOptions: ISubmitSummaryOptions = {
730
769
  ...summarizeOptions,
731
770
  summaryLogger,
@@ -777,9 +816,9 @@ export class RunningSummarizer
777
816
  // If submit summary failed, use maxAttemptsForSubmitFailures. Else use the defaultMaxAttempts.
778
817
  // Note: Check "summarySubmitted" result first because if it fails, ack nack would fail as well.
779
818
  const submitSummaryResult = await results.summarySubmitted;
780
- maxAttempts = !submitSummaryResult.success
781
- ? this.maxAttemptsForSubmitFailures
782
- : defaultMaxAttempts;
819
+ maxAttempts = submitSummaryResult.success
820
+ ? defaultMaxAttempts
821
+ : this.maxAttemptsForSubmitFailures;
783
822
 
784
823
  // Emit "summarize" event for this failed attempt.
785
824
  status = "failure";
@@ -878,7 +917,7 @@ export class RunningSummarizer
878
917
  private async summarizeOnDemandWithRetries(
879
918
  reason: SummarizeReason,
880
919
  resultsBuilder: SummarizeResultBuilder,
881
- ) {
920
+ ): Promise<ISummarizeResults> {
882
921
  const results = await this.trySummarizeWithRetries(reason);
883
922
  if (results === undefined) {
884
923
  resultsBuilder.fail(
@@ -896,7 +935,9 @@ export class RunningSummarizer
896
935
  return resultsBuilder.build();
897
936
  }
898
937
 
899
- /** {@inheritdoc (ISummarizer:interface).summarizeOnDemand} */
938
+ /**
939
+ *{@inheritdoc (ISummarizer:interface).summarizeOnDemand}
940
+ */
900
941
  public summarizeOnDemand(
901
942
  options: IOnDemandSummarizeOptions,
902
943
  resultsBuilder: SummarizeResultBuilder = new SummarizeResultBuilder(),
@@ -918,7 +959,7 @@ export class RunningSummarizer
918
959
  const { reason, ...summarizeOptions } = options;
919
960
  if (options.retryOnFailure === true) {
920
961
  this.summarizeOnDemandWithRetries(`onDemand;${reason}`, resultsBuilder).catch(
921
- (error) => {
962
+ (error: IRetriableFailureError) => {
922
963
  resultsBuilder.fail("summarize failed", error);
923
964
  },
924
965
  );
@@ -932,7 +973,9 @@ export class RunningSummarizer
932
973
  return resultsBuilder.build();
933
974
  }
934
975
 
935
- /** {@inheritdoc (ISummarizer:interface).enqueueSummarize} */
976
+ /**
977
+ *{@inheritdoc (ISummarizer:interface).enqueueSummarize}
978
+ */
936
979
  public enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult {
937
980
  const { reason, afterSequenceNumber = 0, override = false, ...summarizeOptions } = options;
938
981
  let overridden = false;
@@ -968,7 +1011,7 @@ export class RunningSummarizer
968
1011
  : results;
969
1012
  }
970
1013
 
971
- private tryRunEnqueuedSummary() {
1014
+ private tryRunEnqueuedSummary(): boolean {
972
1015
  if (this.stopping) {
973
1016
  this.disposeEnqueuedSummary();
974
1017
  return false;
@@ -992,7 +1035,7 @@ export class RunningSummarizer
992
1035
  return true;
993
1036
  }
994
1037
 
995
- private disposeEnqueuedSummary() {
1038
+ private disposeEnqueuedSummary(): void {
996
1039
  if (this.enqueuedSummary !== undefined) {
997
1040
  this.enqueuedSummary.resultsBuilder.fail(
998
1041
  "RunningSummarizer stopped or disposed",
@@ -21,20 +21,25 @@ import {
21
21
 
22
22
  import { ISummaryConfiguration } from "../containerRuntime.js";
23
23
 
24
+ // eslint-disable-next-line import/no-deprecated
24
25
  import { ICancellableSummarizerController } from "./runWhileConnectedCoordinator.js";
25
26
  import { RunningSummarizer } from "./runningSummarizer.js";
26
27
  import { SummarizeHeuristicData } from "./summarizerHeuristics.js";
27
28
  import {
28
29
  EnqueueSummarizeResult,
30
+ // eslint-disable-next-line import/no-deprecated
29
31
  IConnectableRuntime,
30
32
  IEnqueueSummarizeOptions,
31
33
  IOnDemandSummarizeOptions,
32
34
  ISummarizeHeuristicData,
33
35
  ISummarizeResults,
34
36
  ISummarizer,
37
+ // eslint-disable-next-line import/no-deprecated
35
38
  ISummarizerInternalsProvider,
39
+ // eslint-disable-next-line import/no-deprecated
36
40
  ISummarizerRuntime,
37
41
  ISummarizingWarning,
42
+ type IRetriableFailureError,
38
43
  } from "./summarizerTypes.js";
39
44
  import { SummaryCollection } from "./summaryCollection.js";
40
45
  import { SummarizeResultBuilder } from "./summaryGenerator.js";
@@ -55,14 +60,21 @@ export class SummarizingWarning
55
60
  super(errorMessage);
56
61
  }
57
62
 
58
- static wrap(error: any, logged: boolean = false, logger: ITelemetryLoggerExt) {
59
- const newErrorFn = (errMsg: string) => new SummarizingWarning(errMsg, logged);
63
+ static wrap(
64
+ error: unknown,
65
+ logged: boolean = false,
66
+ logger: ITelemetryLoggerExt,
67
+ ): SummarizingWarning {
68
+ const newErrorFn = (errMsg: string): SummarizingWarning =>
69
+ new SummarizingWarning(errMsg, logged);
60
70
  return wrapErrorAndLog<SummarizingWarning>(error, newErrorFn, logger);
61
71
  }
62
72
  }
63
73
 
64
- export const createSummarizingWarning = (errorMessage: string, logged: boolean) =>
65
- new SummarizingWarning(errorMessage, logged);
74
+ export const createSummarizingWarning = (
75
+ errorMessage: string,
76
+ logged: boolean,
77
+ ): SummarizingWarning => new SummarizingWarning(errorMessage, logged);
66
78
 
67
79
  /**
68
80
  * Summarizer is responsible for coordinating when to generate and send summaries.
@@ -70,9 +82,10 @@ export const createSummarizingWarning = (errorMessage: string, logged: boolean)
70
82
  * It is created only by summarizing container (i.e. one with clientType === "summarizer")
71
83
  * @legacy
72
84
  * @alpha
85
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
73
86
  */
74
87
  export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements ISummarizer {
75
- public get ISummarizer() {
88
+ public get ISummarizer(): this {
76
89
  return this;
77
90
  }
78
91
 
@@ -84,19 +97,25 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
84
97
  private readonly stopDeferred = new Deferred<SummarizerStopReason>();
85
98
 
86
99
  constructor(
87
- /** Reference to runtime that created this object.
100
+ /**
101
+ * Reference to runtime that created this object.
88
102
  * i.e. runtime with clientType === "summarizer"
89
103
  */
104
+ // eslint-disable-next-line import/no-deprecated
90
105
  private readonly runtime: ISummarizerRuntime,
91
106
  private readonly configurationGetter: () => ISummaryConfiguration,
92
- /** Represents an object that can generate summary.
107
+ /**
108
+ * Represents an object that can generate summary.
93
109
  * In practical terms, it's same runtime (this.runtime) with clientType === "summarizer".
94
110
  */
111
+ // eslint-disable-next-line import/no-deprecated
95
112
  private readonly internalsProvider: ISummarizerInternalsProvider,
96
113
  handleContext: IFluidHandleContext,
97
114
  public readonly summaryCollection: SummaryCollection,
98
115
  private readonly runCoordinatorCreateFn: (
116
+ // eslint-disable-next-line import/no-deprecated
99
117
  runtime: IConnectableRuntime,
118
+ // eslint-disable-next-line import/no-deprecated
100
119
  ) => Promise<ICancellableSummarizerController>,
101
120
  ) {
102
121
  super();
@@ -134,11 +153,11 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
134
153
  * the run promise, and also close the container.
135
154
  * @param reason - reason code for stopping
136
155
  */
137
- public stop(reason: SummarizerStopReason) {
156
+ public stop(reason: SummarizerStopReason): void {
138
157
  this.stopDeferred.resolve(reason);
139
158
  }
140
159
 
141
- public close() {
160
+ public close(): void {
142
161
  // This will result in "summarizerClientDisconnected" stop reason recorded in telemetry,
143
162
  // unless stop() was called earlier
144
163
  this.dispose();
@@ -146,12 +165,14 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
146
165
  }
147
166
 
148
167
  private async runCore(onBehalfOf: string): Promise<SummarizerStopReason> {
168
+ // eslint-disable-next-line import/no-deprecated
149
169
  const runCoordinator: ICancellableSummarizerController = await this.runCoordinatorCreateFn(
150
170
  this.runtime,
151
171
  );
152
172
 
153
173
  // Wait for either external signal to cancel, or loss of connectivity.
154
174
  const stopP = Promise.race([runCoordinator.waitCancelled, this.stopDeferred.promise]);
175
+ // eslint-disable-next-line no-void
155
176
  void stopP.then((reason) => {
156
177
  this.logger.sendTelemetryEvent({
157
178
  eventName: "StoppingSummarizer",
@@ -230,6 +251,7 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
230
251
  */
231
252
  private async start(
232
253
  onBehalfOf: string,
254
+ // eslint-disable-next-line import/no-deprecated
233
255
  runCoordinator: ICancellableSummarizerController,
234
256
  ): Promise<RunningSummarizer> {
235
257
  if (this.runningSummarizer) {
@@ -259,7 +281,9 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
259
281
  this._heuristicData = new SummarizeHeuristicData(
260
282
  this.runtime.deltaManager.lastSequenceNumber,
261
283
  {
262
- /** summary attempt baseline for heuristics */
284
+ /**
285
+ * summary attempt baseline for heuristics
286
+ */
263
287
  refSequenceNumber: this.runtime.deltaManager.initialSequenceNumber,
264
288
  summaryTime: Date.now(),
265
289
  } as const,
@@ -289,7 +313,7 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
289
313
  * properties.
290
314
  * Called by ContainerRuntime when it is disposed, as well as at the end the run().
291
315
  */
292
- public dispose() {
316
+ public dispose(): void {
293
317
  // Given that the call can come from own ContainerRuntime, ensure that we stop all the processes.
294
318
  this.stop("summarizerClientDisconnected");
295
319
 
@@ -347,12 +371,12 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
347
371
  runCoordinator.stop(stopReason);
348
372
  this.close();
349
373
  })
350
- .catch((reason) => {
351
- builder.fail("Failed to start summarizer", reason);
374
+ .catch((error: IRetriableFailureError) => {
375
+ builder.fail("Failed to start summarizer", error);
352
376
  });
353
377
  })
354
- .catch((reason) => {
355
- builder.fail("Failed to create cancellation token", reason);
378
+ .catch((error: IRetriableFailureError) => {
379
+ builder.fail("Failed to create cancellation token", error);
356
380
  });
357
381
 
358
382
  return builder.build();
@@ -372,26 +396,28 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
372
396
  return this.runningSummarizer.enqueueSummarize(options);
373
397
  }
374
398
 
375
- public recordSummaryAttempt?(summaryRefSeqNum?: number) {
399
+ public recordSummaryAttempt?(summaryRefSeqNum?: number): void {
376
400
  this._heuristicData?.recordAttempt(summaryRefSeqNum);
377
401
  }
378
402
 
379
- private readonly forwardedEvents = new Map<any, () => void>();
403
+ private readonly forwardedEvents = new Map<string, () => void>();
380
404
 
381
- private setupForwardedEvents() {
382
- ["summarize", "summarizeAllAttemptsFailed"].forEach((event) => {
383
- const listener = (...args: any[]) => {
405
+ private setupForwardedEvents(): void {
406
+ for (const event of ["summarize", "summarizeAllAttemptsFailed"]) {
407
+ const listener = (...args: unknown[]): void => {
384
408
  this.emit(event, ...args);
385
409
  };
410
+ // TODO: better typing here
411
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
386
412
  this.runningSummarizer?.on(event as any, listener);
387
413
  this.forwardedEvents.set(event, listener);
388
- });
414
+ }
389
415
  }
390
416
 
391
- private cleanupForwardedEvents() {
392
- this.forwardedEvents.forEach((listener, event) =>
393
- this.runningSummarizer?.off(event, listener),
394
- );
417
+ private cleanupForwardedEvents(): void {
418
+ for (const [event, listener] of this.forwardedEvents.entries()) {
419
+ this.runningSummarizer?.off(event, listener);
420
+ }
395
421
  this.forwardedEvents.clear();
396
422
  }
397
423
  }
@@ -11,6 +11,7 @@ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
11
11
 
12
12
  import {
13
13
  IOrderedClientElection,
14
+ // eslint-disable-next-line import/no-deprecated
14
15
  ISerializedElection,
15
16
  ITrackedClient,
16
17
  } from "./orderedClientElection.js";
@@ -51,10 +52,10 @@ export class SummarizerClientElection
51
52
  */
52
53
  private lastReportedSeq = 0;
53
54
 
54
- public get electedClientId() {
55
+ public get electedClientId(): string | undefined {
55
56
  return this.clientElection.electedClient?.clientId;
56
57
  }
57
- public get electedParentId() {
58
+ public get electedParentId(): string | undefined {
58
59
  return this.clientElection.electedParent?.clientId;
59
60
  }
60
61
 
@@ -119,6 +120,7 @@ export class SummarizerClientElection
119
120
  });
120
121
  }
121
122
 
123
+ // eslint-disable-next-line import/no-deprecated
122
124
  public serialize(): ISerializedElection {
123
125
  const { electedClientId, electedParentId, electionSequenceNumber } =
124
126
  this.clientElection.serialize();
@@ -16,7 +16,9 @@ import {
16
16
  } from "./summarizerTypes.js";
17
17
  import { SummarizeReason } from "./summaryGenerator.js";
18
18
 
19
- /** Simple implementation of class for tracking summarize heuristic data. */
19
+ /**
20
+ * Simple implementation of class for tracking summarize heuristic data.
21
+ */
20
22
  export class SummarizeHeuristicData implements ISummarizeHeuristicData {
21
23
  protected _lastAttempt: ISummarizeAttempt;
22
24
  public get lastAttempt(): ISummarizeAttempt {
@@ -57,19 +59,21 @@ export class SummarizeHeuristicData implements ISummarizeHeuristicData {
57
59
 
58
60
  constructor(
59
61
  public lastOpSequenceNumber: number,
60
- /** Baseline attempt data used for comparisons with subsequent attempts/calculations. */
62
+ /**
63
+ * Baseline attempt data used for comparisons with subsequent attempts/calculations.
64
+ */
61
65
  attemptBaseline: ISummarizeAttempt,
62
66
  ) {
63
67
  this._lastAttempt = attemptBaseline;
64
68
  this._lastSuccessfulSummary = { ...attemptBaseline };
65
69
  }
66
70
 
67
- public updateWithLastSummaryAckInfo(lastSummary: Readonly<ISummarizeAttempt>) {
71
+ public updateWithLastSummaryAckInfo(lastSummary: Readonly<ISummarizeAttempt>): void {
68
72
  this._lastAttempt = lastSummary;
69
73
  this._lastSuccessfulSummary = { ...lastSummary };
70
74
  }
71
75
 
72
- public recordAttempt(refSequenceNumber?: number) {
76
+ public recordAttempt(refSequenceNumber?: number): void {
73
77
  this._lastAttempt = {
74
78
  refSequenceNumber: refSequenceNumber ?? this.lastOpSequenceNumber,
75
79
  summaryTime: Date.now(),
@@ -80,7 +84,7 @@ export class SummarizeHeuristicData implements ISummarizeHeuristicData {
80
84
  this.totalOpsSizeBefore = this.totalOpsSize;
81
85
  }
82
86
 
83
- public markLastAttemptAsSuccessful() {
87
+ public markLastAttemptAsSuccessful(): void {
84
88
  this._lastSuccessfulSummary = { ...this.lastAttempt };
85
89
 
86
90
  this.numNonRuntimeOps -= this.numNonRuntimeOpsBefore;
@@ -130,7 +134,7 @@ export class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {
130
134
  this.configuration.runtimeOpWeight,
131
135
  this.configuration.nonRuntimeOpWeight,
132
136
  );
133
- const pToMaxOps = (weightedNumOfOps * 1.0) / this.configuration.maxOps;
137
+ const pToMaxOps = (weightedNumOfOps * 1) / this.configuration.maxOps;
134
138
 
135
139
  if (pToMaxOps >= 1) {
136
140
  return minIdleTime;
@@ -147,11 +151,11 @@ export class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {
147
151
  );
148
152
  }
149
153
 
150
- public start() {
154
+ public start(): void {
151
155
  this.idleTimer?.start(this.idleTime);
152
156
  }
153
157
 
154
- public run() {
158
+ public run(): void {
155
159
  for (const strategy of this.summarizeStrategies) {
156
160
  if (strategy.shouldRunSummary(this.configuration, this.heuristicData)) {
157
161
  return this.runSummarize(strategy.summarizeReason);
@@ -179,12 +183,14 @@ export class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {
179
183
  return weightedOpsSinceLastAck >= minOpsForLastSummaryAttempt;
180
184
  }
181
185
 
182
- public dispose() {
186
+ public dispose(): void {
183
187
  this.idleTimer?.clear();
184
188
  }
185
189
  }
186
190
 
187
- /** Strategy used to run a summary when it's been a while since our last successful summary */
191
+ /**
192
+ * Strategy used to run a summary when it's been a while since our last successful summary
193
+ */
188
194
  class MaxTimeSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {
189
195
  public readonly summarizeReason: Readonly<SummarizeReason> = "maxTime";
190
196
 
@@ -206,7 +212,9 @@ function getWeightedNumberOfOps(
206
212
  return runtimeOpWeight * runtimeOpCount + nonRuntimeOpWeight * nonRuntimeOpCount;
207
213
  }
208
214
 
209
- /** Strategy used to do a weighted analysis on the ops we've processed since the last successful summary */
215
+ /**
216
+ * Strategy used to do a weighted analysis on the ops we've processed since the last successful summary
217
+ */
210
218
  class WeightedOpsSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {
211
219
  public readonly summarizeReason: Readonly<SummarizeReason> = "maxOps";
212
220
 
@@ -224,6 +232,9 @@ class WeightedOpsSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {
224
232
  }
225
233
  }
226
234
 
227
- function getDefaultSummaryHeuristicStrategies() {
235
+ function getDefaultSummaryHeuristicStrategies(): (
236
+ | MaxTimeSummaryHeuristicStrategy
237
+ | WeightedOpsSummaryHeuristicStrategy
238
+ )[] {
228
239
  return [new MaxTimeSummaryHeuristicStrategy(), new WeightedOpsSummaryHeuristicStrategy()];
229
240
  }
@@ -8,6 +8,7 @@ export {
8
8
  ISummarizerNodeRootContract,
9
9
  ValidateSummaryResult,
10
10
  } from "./summarizerNodeUtils.js";
11
+
11
12
  export { IRootSummarizerNode, createRootSummarizerNode } from "./summarizerNode.js";
12
13
  export {
13
14
  IRootSummarizerNodeWithGC,