@fluidframework/container-runtime 2.12.0 → 2.20.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 (440) hide show
  1. package/.eslintrc.cjs +36 -0
  2. package/CHANGELOG.md +50 -0
  3. package/api-report/container-runtime.legacy.alpha.api.md +9 -203
  4. package/container-runtime.test-files.tar +0 -0
  5. package/dist/batchTracker.d.ts.map +1 -1
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager/blobManager.d.ts +5 -1
  8. package/dist/blobManager/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager/blobManager.js +16 -2
  10. package/dist/blobManager/blobManager.js.map +1 -1
  11. package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  12. package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
  13. package/dist/channelCollection.d.ts +23 -12
  14. package/dist/channelCollection.d.ts.map +1 -1
  15. package/dist/channelCollection.js +22 -12
  16. package/dist/channelCollection.js.map +1 -1
  17. package/dist/connectionTelemetry.d.ts.map +1 -1
  18. package/dist/connectionTelemetry.js +6 -2
  19. package/dist/connectionTelemetry.js.map +1 -1
  20. package/dist/containerHandleContext.d.ts +1 -1
  21. package/dist/containerHandleContext.d.ts.map +1 -1
  22. package/dist/containerHandleContext.js.map +1 -1
  23. package/dist/containerRuntime.d.ts +74 -65
  24. package/dist/containerRuntime.d.ts.map +1 -1
  25. package/dist/containerRuntime.js +53 -37
  26. package/dist/containerRuntime.js.map +1 -1
  27. package/dist/dataStore.d.ts +7 -3
  28. package/dist/dataStore.d.ts.map +1 -1
  29. package/dist/dataStore.js +2 -1
  30. package/dist/dataStore.js.map +1 -1
  31. package/dist/dataStoreContext.d.ts +41 -25
  32. package/dist/dataStoreContext.d.ts.map +1 -1
  33. package/dist/dataStoreContext.js +31 -18
  34. package/dist/dataStoreContext.js.map +1 -1
  35. package/dist/dataStoreContexts.d.ts +6 -2
  36. package/dist/dataStoreContexts.d.ts.map +1 -1
  37. package/dist/dataStoreContexts.js +6 -2
  38. package/dist/dataStoreContexts.js.map +1 -1
  39. package/dist/dataStoreRegistry.d.ts +1 -1
  40. package/dist/dataStoreRegistry.d.ts.map +1 -1
  41. package/dist/dataStoreRegistry.js.map +1 -1
  42. package/dist/deltaManagerProxies.d.ts +1 -17
  43. package/dist/deltaManagerProxies.d.ts.map +1 -1
  44. package/dist/deltaManagerProxies.js.map +1 -1
  45. package/dist/deltaScheduler.d.ts +9 -6
  46. package/dist/deltaScheduler.d.ts.map +1 -1
  47. package/dist/deltaScheduler.js +95 -89
  48. package/dist/deltaScheduler.js.map +1 -1
  49. package/dist/gc/garbageCollection.d.ts +21 -7
  50. package/dist/gc/garbageCollection.d.ts.map +1 -1
  51. package/dist/gc/garbageCollection.js +12 -5
  52. package/dist/gc/garbageCollection.js.map +1 -1
  53. package/dist/gc/gcConfigs.d.ts +11 -0
  54. package/dist/gc/gcConfigs.d.ts.map +1 -1
  55. package/dist/gc/gcConfigs.js +2 -1
  56. package/dist/gc/gcConfigs.js.map +1 -1
  57. package/dist/gc/gcDefinitions.d.ts +210 -70
  58. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  59. package/dist/gc/gcDefinitions.js +39 -13
  60. package/dist/gc/gcDefinitions.js.map +1 -1
  61. package/dist/gc/gcHelpers.d.ts +6 -2
  62. package/dist/gc/gcHelpers.d.ts.map +1 -1
  63. package/dist/gc/gcHelpers.js +6 -2
  64. package/dist/gc/gcHelpers.js.map +1 -1
  65. package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
  66. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  68. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  69. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  70. package/dist/gc/gcTelemetry.d.ts +33 -11
  71. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  72. package/dist/gc/gcTelemetry.js +6 -2
  73. package/dist/gc/gcTelemetry.js.map +1 -1
  74. package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
  75. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  76. package/dist/gc/gcUnreferencedStateTracker.js +27 -9
  77. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  78. package/dist/gc/index.d.ts +1 -0
  79. package/dist/gc/index.d.ts.map +1 -1
  80. package/dist/gc/index.js +3 -1
  81. package/dist/gc/index.js.map +1 -1
  82. package/dist/inboundBatchAggregator.d.ts +34 -0
  83. package/dist/inboundBatchAggregator.d.ts.map +1 -0
  84. package/dist/inboundBatchAggregator.js +185 -0
  85. package/dist/inboundBatchAggregator.js.map +1 -0
  86. package/dist/index.d.ts +1 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/legacy.d.ts +0 -4
  90. package/dist/messageTypes.d.ts +14 -5
  91. package/dist/messageTypes.d.ts.map +1 -1
  92. package/dist/messageTypes.js.map +1 -1
  93. package/dist/metadata.d.ts +12 -4
  94. package/dist/metadata.d.ts.map +1 -1
  95. package/dist/metadata.js +6 -2
  96. package/dist/metadata.js.map +1 -1
  97. package/dist/opLifecycle/batchManager.d.ts +9 -3
  98. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  99. package/dist/opLifecycle/batchManager.js +3 -1
  100. package/dist/opLifecycle/batchManager.js.map +1 -1
  101. package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  102. package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  103. package/dist/opLifecycle/duplicateBatchDetector.js +9 -3
  104. package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
  105. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  106. package/dist/opLifecycle/opCompressor.js.map +1 -1
  107. package/dist/opLifecycle/opDecompressor.d.ts +3 -1
  108. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  109. package/dist/opLifecycle/opDecompressor.js +12 -8
  110. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  111. package/dist/opLifecycle/opGroupingManager.d.ts +0 -1
  112. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  113. package/dist/opLifecycle/opGroupingManager.js +5 -4
  114. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  115. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  116. package/dist/opLifecycle/opSplitter.js +2 -1
  117. package/dist/opLifecycle/opSplitter.js.map +1 -1
  118. package/dist/opLifecycle/outbox.d.ts +1 -1
  119. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  120. package/dist/opLifecycle/outbox.js +6 -1
  121. package/dist/opLifecycle/outbox.js.map +1 -1
  122. package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  123. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  124. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  125. package/dist/package.json +2 -1
  126. package/dist/packageVersion.d.ts +1 -1
  127. package/dist/packageVersion.js +1 -1
  128. package/dist/packageVersion.js.map +1 -1
  129. package/dist/pendingStateManager.d.ts +22 -6
  130. package/dist/pendingStateManager.d.ts.map +1 -1
  131. package/dist/pendingStateManager.js +43 -5
  132. package/dist/pendingStateManager.js.map +1 -1
  133. package/dist/summary/documentSchema.d.ts.map +1 -1
  134. package/dist/summary/documentSchema.js +2 -0
  135. package/dist/summary/documentSchema.js.map +1 -1
  136. package/dist/summary/index.d.ts +1 -1
  137. package/dist/summary/index.d.ts.map +1 -1
  138. package/dist/summary/index.js.map +1 -1
  139. package/dist/summary/orderedClientElection.d.ts +93 -31
  140. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  141. package/dist/summary/orderedClientElection.js +15 -5
  142. package/dist/summary/orderedClientElection.js.map +1 -1
  143. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  144. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  145. package/dist/summary/runningSummarizer.d.ts +17 -6
  146. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  147. package/dist/summary/runningSummarizer.js +12 -4
  148. package/dist/summary/runningSummarizer.js.map +1 -1
  149. package/dist/summary/summarizer.d.ts +9 -5
  150. package/dist/summary/summarizer.d.ts.map +1 -1
  151. package/dist/summary/summarizer.js +9 -3
  152. package/dist/summary/summarizer.js.map +1 -1
  153. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  154. package/dist/summary/summarizerClientElection.js.map +1 -1
  155. package/dist/summary/summarizerHeuristics.d.ts +6 -2
  156. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  157. package/dist/summary/summarizerHeuristics.js +12 -4
  158. package/dist/summary/summarizerHeuristics.js.map +1 -1
  159. package/dist/summary/summarizerNode/summarizerNode.d.ts +24 -8
  160. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  161. package/dist/summary/summarizerNode/summarizerNode.js +15 -5
  162. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  163. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  164. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  167. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +12 -4
  168. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  171. package/dist/summary/summarizerTypes.d.ts +246 -135
  172. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  173. package/dist/summary/summarizerTypes.js.map +1 -1
  174. package/dist/summary/summaryCollection.d.ts.map +1 -1
  175. package/dist/summary/summaryCollection.js +1 -4
  176. package/dist/summary/summaryCollection.js.map +1 -1
  177. package/dist/summary/summaryFormat.d.ts +24 -8
  178. package/dist/summary/summaryFormat.d.ts.map +1 -1
  179. package/dist/summary/summaryFormat.js.map +1 -1
  180. package/dist/summary/summaryGenerator.d.ts +9 -3
  181. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  182. package/dist/summary/summaryGenerator.js +3 -1
  183. package/dist/summary/summaryGenerator.js.map +1 -1
  184. package/dist/summary/summaryManager.d.ts +8 -4
  185. package/dist/summary/summaryManager.d.ts.map +1 -1
  186. package/dist/summary/summaryManager.js +12 -4
  187. package/dist/summary/summaryManager.js.map +1 -1
  188. package/dist/throttler.d.ts +26 -10
  189. package/dist/throttler.d.ts.map +1 -1
  190. package/dist/throttler.js +12 -4
  191. package/dist/throttler.js.map +1 -1
  192. package/lib/batchTracker.d.ts.map +1 -1
  193. package/lib/batchTracker.js.map +1 -1
  194. package/lib/blobManager/blobManager.d.ts +5 -1
  195. package/lib/blobManager/blobManager.d.ts.map +1 -1
  196. package/lib/blobManager/blobManager.js +16 -2
  197. package/lib/blobManager/blobManager.js.map +1 -1
  198. package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  199. package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
  200. package/lib/channelCollection.d.ts +23 -12
  201. package/lib/channelCollection.d.ts.map +1 -1
  202. package/lib/channelCollection.js +22 -12
  203. package/lib/channelCollection.js.map +1 -1
  204. package/lib/connectionTelemetry.d.ts.map +1 -1
  205. package/lib/connectionTelemetry.js +6 -2
  206. package/lib/connectionTelemetry.js.map +1 -1
  207. package/lib/containerHandleContext.d.ts +1 -1
  208. package/lib/containerHandleContext.d.ts.map +1 -1
  209. package/lib/containerHandleContext.js.map +1 -1
  210. package/lib/containerRuntime.d.ts +74 -65
  211. package/lib/containerRuntime.d.ts.map +1 -1
  212. package/lib/containerRuntime.js +53 -37
  213. package/lib/containerRuntime.js.map +1 -1
  214. package/lib/dataStore.d.ts +7 -3
  215. package/lib/dataStore.d.ts.map +1 -1
  216. package/lib/dataStore.js +2 -1
  217. package/lib/dataStore.js.map +1 -1
  218. package/lib/dataStoreContext.d.ts +41 -25
  219. package/lib/dataStoreContext.d.ts.map +1 -1
  220. package/lib/dataStoreContext.js +31 -18
  221. package/lib/dataStoreContext.js.map +1 -1
  222. package/lib/dataStoreContexts.d.ts +6 -2
  223. package/lib/dataStoreContexts.d.ts.map +1 -1
  224. package/lib/dataStoreContexts.js +6 -2
  225. package/lib/dataStoreContexts.js.map +1 -1
  226. package/lib/dataStoreRegistry.d.ts +1 -1
  227. package/lib/dataStoreRegistry.d.ts.map +1 -1
  228. package/lib/dataStoreRegistry.js.map +1 -1
  229. package/lib/deltaManagerProxies.d.ts +1 -17
  230. package/lib/deltaManagerProxies.d.ts.map +1 -1
  231. package/lib/deltaManagerProxies.js.map +1 -1
  232. package/lib/deltaScheduler.d.ts +9 -6
  233. package/lib/deltaScheduler.d.ts.map +1 -1
  234. package/lib/deltaScheduler.js +95 -89
  235. package/lib/deltaScheduler.js.map +1 -1
  236. package/lib/gc/garbageCollection.d.ts +21 -7
  237. package/lib/gc/garbageCollection.d.ts.map +1 -1
  238. package/lib/gc/garbageCollection.js +12 -5
  239. package/lib/gc/garbageCollection.js.map +1 -1
  240. package/lib/gc/gcConfigs.d.ts +11 -0
  241. package/lib/gc/gcConfigs.d.ts.map +1 -1
  242. package/lib/gc/gcConfigs.js +1 -1
  243. package/lib/gc/gcConfigs.js.map +1 -1
  244. package/lib/gc/gcDefinitions.d.ts +210 -70
  245. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  246. package/lib/gc/gcDefinitions.js +39 -13
  247. package/lib/gc/gcDefinitions.js.map +1 -1
  248. package/lib/gc/gcHelpers.d.ts +6 -2
  249. package/lib/gc/gcHelpers.d.ts.map +1 -1
  250. package/lib/gc/gcHelpers.js +6 -2
  251. package/lib/gc/gcHelpers.js.map +1 -1
  252. package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
  253. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  254. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  255. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  256. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  257. package/lib/gc/gcTelemetry.d.ts +33 -11
  258. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  259. package/lib/gc/gcTelemetry.js +6 -2
  260. package/lib/gc/gcTelemetry.js.map +1 -1
  261. package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
  262. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  263. package/lib/gc/gcUnreferencedStateTracker.js +27 -9
  264. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  265. package/lib/gc/index.d.ts +1 -0
  266. package/lib/gc/index.d.ts.map +1 -1
  267. package/lib/gc/index.js +1 -0
  268. package/lib/gc/index.js.map +1 -1
  269. package/lib/inboundBatchAggregator.d.ts +34 -0
  270. package/lib/inboundBatchAggregator.d.ts.map +1 -0
  271. package/lib/inboundBatchAggregator.js +181 -0
  272. package/lib/inboundBatchAggregator.js.map +1 -0
  273. package/lib/index.d.ts +1 -1
  274. package/lib/index.d.ts.map +1 -1
  275. package/lib/index.js.map +1 -1
  276. package/lib/legacy.d.ts +0 -4
  277. package/lib/messageTypes.d.ts +14 -5
  278. package/lib/messageTypes.d.ts.map +1 -1
  279. package/lib/messageTypes.js.map +1 -1
  280. package/lib/metadata.d.ts +12 -4
  281. package/lib/metadata.d.ts.map +1 -1
  282. package/lib/metadata.js +6 -2
  283. package/lib/metadata.js.map +1 -1
  284. package/lib/opLifecycle/batchManager.d.ts +9 -3
  285. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  286. package/lib/opLifecycle/batchManager.js +3 -1
  287. package/lib/opLifecycle/batchManager.js.map +1 -1
  288. package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  289. package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  290. package/lib/opLifecycle/duplicateBatchDetector.js +9 -3
  291. package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
  292. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  293. package/lib/opLifecycle/opCompressor.js +1 -1
  294. package/lib/opLifecycle/opCompressor.js.map +1 -1
  295. package/lib/opLifecycle/opDecompressor.d.ts +3 -1
  296. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  297. package/lib/opLifecycle/opDecompressor.js +13 -9
  298. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  299. package/lib/opLifecycle/opGroupingManager.d.ts +0 -1
  300. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  301. package/lib/opLifecycle/opGroupingManager.js +6 -5
  302. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  303. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  304. package/lib/opLifecycle/opSplitter.js +2 -1
  305. package/lib/opLifecycle/opSplitter.js.map +1 -1
  306. package/lib/opLifecycle/outbox.d.ts +1 -1
  307. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  308. package/lib/opLifecycle/outbox.js +6 -1
  309. package/lib/opLifecycle/outbox.js.map +1 -1
  310. package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  311. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  312. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  313. package/lib/packageVersion.d.ts +1 -1
  314. package/lib/packageVersion.js +1 -1
  315. package/lib/packageVersion.js.map +1 -1
  316. package/lib/pendingStateManager.d.ts +22 -6
  317. package/lib/pendingStateManager.d.ts.map +1 -1
  318. package/lib/pendingStateManager.js +41 -4
  319. package/lib/pendingStateManager.js.map +1 -1
  320. package/lib/summary/documentSchema.d.ts.map +1 -1
  321. package/lib/summary/documentSchema.js +2 -0
  322. package/lib/summary/documentSchema.js.map +1 -1
  323. package/lib/summary/index.d.ts +1 -1
  324. package/lib/summary/index.d.ts.map +1 -1
  325. package/lib/summary/index.js.map +1 -1
  326. package/lib/summary/orderedClientElection.d.ts +93 -31
  327. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  328. package/lib/summary/orderedClientElection.js +15 -5
  329. package/lib/summary/orderedClientElection.js.map +1 -1
  330. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  331. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  332. package/lib/summary/runningSummarizer.d.ts +17 -6
  333. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  334. package/lib/summary/runningSummarizer.js +12 -4
  335. package/lib/summary/runningSummarizer.js.map +1 -1
  336. package/lib/summary/summarizer.d.ts +9 -5
  337. package/lib/summary/summarizer.d.ts.map +1 -1
  338. package/lib/summary/summarizer.js +9 -3
  339. package/lib/summary/summarizer.js.map +1 -1
  340. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  341. package/lib/summary/summarizerClientElection.js.map +1 -1
  342. package/lib/summary/summarizerHeuristics.d.ts +6 -2
  343. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  344. package/lib/summary/summarizerHeuristics.js +12 -4
  345. package/lib/summary/summarizerHeuristics.js.map +1 -1
  346. package/lib/summary/summarizerNode/summarizerNode.d.ts +24 -8
  347. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  348. package/lib/summary/summarizerNode/summarizerNode.js +15 -5
  349. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  350. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  351. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  352. package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  353. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  354. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +12 -4
  355. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  356. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
  357. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  358. package/lib/summary/summarizerTypes.d.ts +246 -135
  359. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  360. package/lib/summary/summarizerTypes.js.map +1 -1
  361. package/lib/summary/summaryCollection.d.ts.map +1 -1
  362. package/lib/summary/summaryCollection.js +1 -4
  363. package/lib/summary/summaryCollection.js.map +1 -1
  364. package/lib/summary/summaryFormat.d.ts +24 -8
  365. package/lib/summary/summaryFormat.d.ts.map +1 -1
  366. package/lib/summary/summaryFormat.js.map +1 -1
  367. package/lib/summary/summaryGenerator.d.ts +9 -3
  368. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  369. package/lib/summary/summaryGenerator.js +3 -1
  370. package/lib/summary/summaryGenerator.js.map +1 -1
  371. package/lib/summary/summaryManager.d.ts +8 -4
  372. package/lib/summary/summaryManager.d.ts.map +1 -1
  373. package/lib/summary/summaryManager.js +12 -4
  374. package/lib/summary/summaryManager.js.map +1 -1
  375. package/lib/throttler.d.ts +26 -10
  376. package/lib/throttler.d.ts.map +1 -1
  377. package/lib/throttler.js +12 -4
  378. package/lib/throttler.js.map +1 -1
  379. package/package.json +44 -31
  380. package/src/batchTracker.ts +31 -33
  381. package/src/blobManager/blobManager.ts +38 -19
  382. package/src/blobManager/blobManagerSnapSum.ts +1 -1
  383. package/src/channelCollection.ts +44 -37
  384. package/src/connectionTelemetry.ts +31 -13
  385. package/src/containerHandleContext.ts +2 -2
  386. package/src/containerRuntime.ts +198 -140
  387. package/src/dataStore.ts +11 -6
  388. package/src/dataStoreContext.ts +80 -59
  389. package/src/dataStoreContexts.ts +16 -12
  390. package/src/dataStoreRegistry.ts +1 -1
  391. package/src/deltaManagerProxies.ts +5 -5
  392. package/src/deltaScheduler.ts +19 -13
  393. package/src/gc/garbageCollection.ts +41 -18
  394. package/src/gc/gcConfigs.ts +4 -4
  395. package/src/gc/gcDefinitions.ts +212 -70
  396. package/src/gc/gcHelpers.ts +11 -5
  397. package/src/gc/gcSummaryDefinitions.ts +18 -6
  398. package/src/gc/gcSummaryStateTracker.ts +4 -2
  399. package/src/gc/gcTelemetry.ts +47 -19
  400. package/src/gc/gcUnreferencedStateTracker.ts +40 -16
  401. package/src/gc/index.ts +1 -0
  402. package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +54 -121
  403. package/src/index.ts +0 -3
  404. package/src/messageTypes.ts +14 -5
  405. package/src/metadata.ts +12 -4
  406. package/src/opLifecycle/batchManager.ts +12 -6
  407. package/src/opLifecycle/duplicateBatchDetector.ts +10 -4
  408. package/src/opLifecycle/opCompressor.ts +8 -4
  409. package/src/opLifecycle/opDecompressor.ts +20 -11
  410. package/src/opLifecycle/opGroupingManager.ts +12 -8
  411. package/src/opLifecycle/opSplitter.ts +11 -8
  412. package/src/opLifecycle/outbox.ts +22 -13
  413. package/src/opLifecycle/remoteMessageProcessor.ts +10 -4
  414. package/src/packageVersion.ts +1 -1
  415. package/src/pendingStateManager.ts +71 -15
  416. package/src/summary/documentSchema.ts +30 -18
  417. package/src/summary/index.ts +0 -3
  418. package/src/summary/orderedClientElection.ts +100 -38
  419. package/src/summary/runWhileConnectedCoordinator.ts +6 -3
  420. package/src/summary/runningSummarizer.ts +38 -19
  421. package/src/summary/summarizer.ts +29 -16
  422. package/src/summary/summarizerClientElection.ts +2 -2
  423. package/src/summary/summarizerHeuristics.ts +22 -11
  424. package/src/summary/summarizerNode/summarizerNode.ts +22 -12
  425. package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
  426. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +21 -11
  427. package/src/summary/summarizerTypes.ts +246 -139
  428. package/src/summary/summaryCollection.ts +24 -25
  429. package/src/summary/summaryFormat.ts +24 -8
  430. package/src/summary/summaryGenerator.ts +14 -8
  431. package/src/summary/summaryManager.ts +28 -18
  432. package/src/throttler.ts +23 -11
  433. package/dist/scheduleManager.d.ts +0 -28
  434. package/dist/scheduleManager.d.ts.map +0 -1
  435. package/dist/scheduleManager.js +0 -235
  436. package/dist/scheduleManager.js.map +0 -1
  437. package/lib/scheduleManager.d.ts +0 -28
  438. package/lib/scheduleManager.d.ts.map +0 -1
  439. package/lib/scheduleManager.js +0 -231
  440. package/lib/scheduleManager.js.map +0 -1
@@ -23,12 +23,13 @@ import { ContainerFluidHandleContext } from "./containerHandleContext.js";
23
23
  import { channelToDataStore } from "./dataStore.js";
24
24
  import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
25
25
  import { DeltaManagerPendingOpsProxy, DeltaManagerSummarizerProxy, } from "./deltaManagerProxies.js";
26
+ import { DeltaScheduler } from "./deltaScheduler.js";
26
27
  import { GCNodeType, GarbageCollector, gcGenerationOptionName, } from "./gc/index.js";
28
+ import { InboundBatchAggregator } from "./inboundBatchAggregator.js";
27
29
  import { ContainerMessageType, } from "./messageTypes.js";
28
30
  import { DuplicateBatchDetector, ensureContentsDeserialized, OpCompressor, OpDecompressor, OpGroupingManager, OpSplitter, Outbox, RemoteMessageProcessor, serializeOpContents, } from "./opLifecycle/index.js";
29
31
  import { pkgVersion } from "./packageVersion.js";
30
32
  import { PendingStateManager, } from "./pendingStateManager.js";
31
- import { ScheduleManager } from "./scheduleManager.js";
32
33
  import { DocumentsSchemaController, OrderedClientCollection, OrderedClientElection, RetriableSummaryError, RunWhileConnectedCoordinator, Summarizer, SummarizerClientElection, SummaryCollection, SummaryManager, aliasBlobName, chunksBlobName, recentBatchInfoBlobName, createRootSummarizerNodeWithGC, electedSummarizerBlobName, extractSummaryMetadataMessage, idCompressorBlobName, metadataBlobName, rootHasIsolatedChannels, summarizerClientType, wrapSummaryInChannelsTree, } from "./summary/index.js";
33
34
  import { Throttler, formExponentialFn } from "./throttler.js";
34
35
  /**
@@ -89,7 +90,9 @@ export const TombstoneResponseHeaderKey = "isTombstoned";
89
90
  * to this was experimental and is no longer supported.
90
91
  */
91
92
  export const InactiveResponseHeaderKey = "isInactive";
92
- /** Default values for Runtime Headers */
93
+ /**
94
+ * Default values for Runtime Headers
95
+ */
93
96
  export const defaultRuntimeHeaderData = {
94
97
  wait: true,
95
98
  viaHandle: false,
@@ -125,9 +128,13 @@ const defaultCompressionConfig = {
125
128
  compressionAlgorithm: CompressionAlgorithms.lz4,
126
129
  };
127
130
  const defaultChunkSizeInBytes = 204800;
128
- /** The default time to wait for pending ops to be processed during summarization */
131
+ /**
132
+ * The default time to wait for pending ops to be processed during summarization
133
+ */
129
134
  export const defaultPendingOpsWaitTimeoutMs = 1000;
130
- /** The default time to delay a summarization retry attempt when there are pending ops */
135
+ /**
136
+ * The default time to delay a summarization retry attempt when there are pending ops
137
+ */
131
138
  export const defaultPendingOpsRetryDelayMs = 1000;
132
139
  /**
133
140
  * Instead of refreshing from latest because we do not have 100% confidence in the state
@@ -153,6 +160,7 @@ export function getDeviceSpec() {
153
160
  try {
154
161
  if (typeof navigator === "object" && navigator !== null) {
155
162
  return {
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
156
164
  deviceMemory: navigator.deviceMemory,
157
165
  hardwareConcurrency: navigator.hardwareConcurrency,
158
166
  };
@@ -203,12 +211,15 @@ async function createSummarizer(loader, url) {
203
211
  fluidObject = await resolvedContainer.getEntryPoint();
204
212
  }
205
213
  else {
214
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
206
215
  const response = await resolvedContainer.request({
207
216
  url: `/${summarizerRequestUrl}`,
208
217
  });
218
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
209
219
  if (response.status !== 200 || response.mimeType !== "fluid/object") {
210
220
  throw responseToException(response, request);
211
221
  }
222
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
212
223
  fluidObject = response.value;
213
224
  }
214
225
  if (fluidObject?.ISummarizer === undefined) {
@@ -256,11 +267,7 @@ export async function loadContainerRuntime(params) {
256
267
  * Represents the runtime of the container. Contains helper functions/state of the container.
257
268
  * It will define the store level mappings.
258
269
  *
259
- * @deprecated To be removed from the Legacy-Alpha API in version 2.20.0.
260
- * Use the loadContainerRuntime function and interfaces IContainerRuntime / IRuntime instead.
261
- *
262
- * @legacy
263
- * @alpha
270
+ * @internal
264
271
  */
265
272
  export class ContainerRuntime extends TypedEventEmitter {
266
273
  /**
@@ -295,7 +302,9 @@ export class ContainerRuntime extends TypedEventEmitter {
295
302
  },
296
303
  });
297
304
  const mc = loggerToMonitoringContext(logger);
298
- const { summaryOptions = {}, gcOptions = {}, loadSequenceNumberVerification = "close", flushMode = defaultFlushMode, compressionOptions = defaultCompressionConfig, maxBatchSizeInBytes = defaultMaxBatchSizeInBytes, enableRuntimeIdCompressor, chunkSizeInBytes = defaultChunkSizeInBytes, enableGroupedBatching = true, explicitSchemaControl = false, } = runtimeOptions;
305
+ const { summaryOptions = {}, gcOptions = {}, loadSequenceNumberVerification = "close", flushMode = defaultFlushMode, compressionOptions = runtimeOptions.enableGroupedBatching === false
306
+ ? disabledCompressionConfig // Compression must be disabled if Grouping is disabled
307
+ : defaultCompressionConfig, maxBatchSizeInBytes = defaultMaxBatchSizeInBytes, enableRuntimeIdCompressor, chunkSizeInBytes = defaultChunkSizeInBytes, enableGroupedBatching = true, explicitSchemaControl = false, } = runtimeOptions;
299
308
  const registry = new FluidDataStoreRegistry(registryEntries);
300
309
  const tryFetchBlob = async (blobName) => {
301
310
  const blobId = context.baseSnapshot?.blobs[blobName];
@@ -424,6 +433,9 @@ export class ContainerRuntime extends TypedEventEmitter {
424
433
  }, (schema) => {
425
434
  runtime.onSchemaChange(schema);
426
435
  });
436
+ if (compressionLz4 && !enableGroupedBatching) {
437
+ throw new UsageError("If compression is enabled, op grouping must be enabled too");
438
+ }
427
439
  const featureGatesForTelemetry = {};
428
440
  // Make sure we've got all the options including internal ones
429
441
  const internalRuntimeOptions = {
@@ -484,7 +496,7 @@ export class ContainerRuntime extends TypedEventEmitter {
484
496
  * has to deal with compressed ops as other clients might send them.
485
497
  * And in reverse, session schema can have compression Off, but feature gates / runtime options want it On.
486
498
  * In such case it will be off in session schema, however this client will propose change to schema, and once / if
487
- * this op rountrips, compression will be On. Client can't send compressed ops until it's change in schema.
499
+ * this op roundtrips, compression will be On. Client can't send compressed ops until it's change in schema.
488
500
  */
489
501
  get sessionSchema() {
490
502
  return this.documentsSchemaController.sessionSchema.runtime;
@@ -493,7 +505,7 @@ export class ContainerRuntime extends TypedEventEmitter {
493
505
  return this.sessionSchema.idCompressorMode;
494
506
  }
495
507
  /**
496
- * See IContainerRuntimeBase.idCompressor() for details.
508
+ * {@inheritDoc @fluidframework/runtime-definitions#IContainerRuntimeBase.idCompressor}
497
509
  */
498
510
  get idCompressor() {
499
511
  // Expose ID Compressor only if it's On from the start.
@@ -506,7 +518,7 @@ export class ContainerRuntime extends TypedEventEmitter {
506
518
  }
507
519
  }
508
520
  /**
509
- * See IContainerRuntimeBase.generateDocumentUniqueId() for details.
521
+ * {@inheritDoc @fluidframework/runtime-definitions#IContainerRuntimeBase.generateDocumentUniqueId}
510
522
  */
511
523
  generateDocumentUniqueId() {
512
524
  return this._idCompressor?.generateDocumentUniqueId() ?? uuid();
@@ -542,7 +554,9 @@ export class ContainerRuntime extends TypedEventEmitter {
542
554
  get connected() {
543
555
  return this._connected;
544
556
  }
545
- /** clientId of parent (non-summarizing) container that owns summarizer container */
557
+ /**
558
+ * clientId of parent (non-summarizing) container that owns summarizer container
559
+ */
546
560
  get summarizerClientId() {
547
561
  return this.summarizerClientElection?.electedClientId;
548
562
  }
@@ -640,7 +654,6 @@ export class ContainerRuntime extends TypedEventEmitter {
640
654
  // Backfill in defaults for the internal runtimeOptions, since they may not be present on the provided runtimeOptions object
641
655
  this.runtimeOptions = {
642
656
  flushMode: defaultFlushMode,
643
- enableGroupedBatching: true,
644
657
  ...runtimeOptions,
645
658
  };
646
659
  this.logger = createChildLogger({ logger: this.baseLogger });
@@ -719,6 +732,7 @@ export class ContainerRuntime extends TypedEventEmitter {
719
732
  eventName: "GCFeatureMatrix",
720
733
  metadataValue: JSON.stringify(metadata?.gcFeatureMatrix),
721
734
  inputs: JSON.stringify({
735
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
722
736
  gcOptions_gcGeneration: this.runtimeOptions.gcOptions[gcGenerationOptionName],
723
737
  }),
724
738
  });
@@ -727,8 +741,6 @@ export class ContainerRuntime extends TypedEventEmitter {
727
741
  const opGroupingManager = new OpGroupingManager({
728
742
  groupedBatchingEnabled: this.groupedBatchingEnabled,
729
743
  opCountThreshold: this.mc.config.getNumber("Fluid.ContainerRuntime.GroupedBatchingOpCount") ?? 2,
730
- reentrantBatchGroupingEnabled: this.mc.config.getBoolean("Fluid.ContainerRuntime.GroupedBatchingReentrancy") ??
731
- true,
732
744
  }, this.mc.logger);
733
745
  const opSplitter = new OpSplitter(chunks, this.submitBatchFn, runtimeOptions.chunkSizeInBytes, runtimeOptions.maxBatchSizeInBytes, this.mc.logger);
734
746
  this.remoteMessageProcessor = new RemoteMessageProcessor(opSplitter, new OpDecompressor(this.mc.logger), opGroupingManager);
@@ -879,7 +891,8 @@ export class ContainerRuntime extends TypedEventEmitter {
879
891
  stashedBlobs: pendingRuntimeState?.pendingAttachmentBlobs,
880
892
  closeContainer: (error) => this.closeFn(error),
881
893
  });
882
- this.scheduleManager = new ScheduleManager(this.innerDeltaManager, this, () => this.clientId, createChildLogger({ logger: this.logger, namespace: "ScheduleManager" }));
894
+ this.deltaScheduler = new DeltaScheduler(this.innerDeltaManager, this, createChildLogger({ logger: this.logger, namespace: "DeltaScheduler" }));
895
+ this.inboundBatchAggregator = new InboundBatchAggregator(this.innerDeltaManager, () => this.clientId, createChildLogger({ logger: this.logger, namespace: "InboundBatchAggregator" }));
883
896
  const disablePartialFlush = this.mc.config.getBoolean("Fluid.ContainerRuntime.DisablePartialFlush");
884
897
  const legacySendBatchFn = makeLegacySendBatchFn(this.submitFn, this.innerDeltaManager);
885
898
  this.outbox = new Outbox({
@@ -1061,13 +1074,14 @@ export class ContainerRuntime extends TypedEventEmitter {
1061
1074
  deleteChildSummarizerNode(id) {
1062
1075
  return this.summarizerNode.deleteChild(id);
1063
1076
  }
1064
- /* IFluidParentContext APIs that should not be called on Root */
1077
+ // #region `IFluidParentContext` APIs that should not be called on Root
1065
1078
  makeLocallyVisible() {
1066
1079
  assert(false, 0x8eb /* should not be called */);
1067
1080
  }
1068
1081
  setChannelDirty(address) {
1069
1082
  assert(false, 0x909 /* should not be called */);
1070
1083
  }
1084
+ // #endregion
1071
1085
  /**
1072
1086
  * Initializes the state from the base snapshot this container runtime loaded from.
1073
1087
  */
@@ -1098,6 +1112,8 @@ export class ContainerRuntime extends TypedEventEmitter {
1098
1112
  this._summarizer?.dispose();
1099
1113
  this.channelCollection.dispose();
1100
1114
  this.pendingStateManager.dispose();
1115
+ this.inboundBatchAggregator.dispose();
1116
+ this.deltaScheduler.dispose();
1101
1117
  this.emit("dispose");
1102
1118
  this.removeAllListeners();
1103
1119
  }
@@ -1270,7 +1286,9 @@ export class ContainerRuntime extends TypedEventEmitter {
1270
1286
  internalId(maybeAlias) {
1271
1287
  return this.channelCollection.internalId(maybeAlias);
1272
1288
  }
1273
- /** Adds the container's metadata to the given summary tree. */
1289
+ /**
1290
+ * Adds the container's metadata to the given summary tree.
1291
+ */
1274
1292
  addMetadataToSummary(summaryTree) {
1275
1293
  // The last message processed at the time of summary. If there are no new messages, use the message from the
1276
1294
  // last summary.
@@ -1639,7 +1657,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1639
1657
  }
1640
1658
  }
1641
1659
  /**
1642
- * Processes inbound message(s). It calls schedule manager according to the messages' location in the batch.
1660
+ * Processes inbound message(s). It calls delta scheduler according to the messages' location in the batch.
1643
1661
  * @param messagesWithMetadata - messages to process along with their metadata.
1644
1662
  * @param locationInBatch - Are we processing the start and/or end of a batch?
1645
1663
  * @param local - true if the messages were originally generated by the client receiving it.
@@ -1651,7 +1669,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1651
1669
  if (locationInBatch.batchStart) {
1652
1670
  const firstMessage = messagesWithMetadata[0]?.message;
1653
1671
  assert(firstMessage !== undefined, 0xa31 /* Batch must have at least one message */);
1654
- this.scheduleManager.batchBegin(firstMessage);
1672
+ this.emit("batchBegin", firstMessage);
1655
1673
  }
1656
1674
  let error;
1657
1675
  try {
@@ -1663,7 +1681,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1663
1681
  });
1664
1682
  return;
1665
1683
  }
1666
- // Helper that updates a message's minimum sequence number to the minimum sequence number that container
1684
+ // Updates a message's minimum sequence number to the minimum sequence number that container
1667
1685
  // runtime is tracking and sets _processedClientSequenceNumber. It returns the updated message.
1668
1686
  const updateSequenceNumbers = (message) => {
1669
1687
  // Set the minimum sequence number to the containerRuntime's understanding of minimum sequence number.
@@ -1694,7 +1712,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1694
1712
  }
1695
1713
  let bunchedMessagesContent = [];
1696
1714
  let previousMessage;
1697
- // Helper that processes the previous bunch of messages.
1715
+ // Process the previous bunch of messages.
1698
1716
  const sendBunchedMessages = () => {
1699
1717
  assert(previousMessage !== undefined, 0xa67 /* previous message must exist */);
1700
1718
  this.ensureNoDataModelChanges(() => {
@@ -1736,7 +1754,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1736
1754
  if (locationInBatch.batchEnd) {
1737
1755
  const lastMessage = messagesWithMetadata[messagesWithMetadata.length - 1]?.message;
1738
1756
  assert(lastMessage !== undefined, 0xa32 /* Batch must have at least one message */);
1739
- this.scheduleManager.batchEnd(error, lastMessage);
1757
+ this.emit("batchEnd", error, lastMessage);
1740
1758
  }
1741
1759
  }
1742
1760
  }
@@ -2043,15 +2061,7 @@ export class ContainerRuntime extends TypedEventEmitter {
2043
2061
  return this.channelCollection.createDetachedDataStore(pkg, loadingGroupId);
2044
2062
  }
2045
2063
  async createDataStore(pkg, loadingGroupId) {
2046
- const context = this.channelCollection.createDataStoreContext(Array.isArray(pkg) ? pkg : [pkg], undefined, // props
2047
- loadingGroupId);
2048
- return channelToDataStore(await context.realize(), context.id, this.channelCollection, this.mc.logger);
2049
- }
2050
- /**
2051
- * @deprecated 0.16 Issue #1537, #3631
2052
- */
2053
- async _createDataStoreWithProps(pkg, props) {
2054
- const context = this.channelCollection.createDataStoreContext(Array.isArray(pkg) ? pkg : [pkg], props);
2064
+ const context = this.channelCollection.createDataStoreContext(Array.isArray(pkg) ? pkg : [pkg], loadingGroupId);
2055
2065
  return channelToDataStore(await context.realize(), context.id, this.channelCollection, this.mc.logger);
2056
2066
  }
2057
2067
  canSendOps() {
@@ -2078,7 +2088,7 @@ export class ContainerRuntime extends TypedEventEmitter {
2078
2088
  get isDirty() {
2079
2089
  return this.dirtyContainer;
2080
2090
  }
2081
- isContainerMessageDirtyable({ type, contents }) {
2091
+ isContainerMessageDirtyable({ type, contents, }) {
2082
2092
  // Certain container runtime messages should not mark the container dirty such as the old built-in
2083
2093
  // AgentScheduler and Garbage collector messages.
2084
2094
  switch (type) {
@@ -2744,7 +2754,11 @@ export class ContainerRuntime extends TypedEventEmitter {
2744
2754
  this.emit(dirty ? "dirty" : "saved");
2745
2755
  }
2746
2756
  }
2747
- submitMessage(type, contents, localOpMetadata = undefined) {
2757
+ submitMessage(type,
2758
+ // TODO: better typing
2759
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
2760
+ contents, localOpMetadata = undefined) {
2761
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
2748
2762
  this.submit({ type, contents }, localOpMetadata);
2749
2763
  }
2750
2764
  async uploadBlob(blob, signal) {
@@ -2974,7 +2988,9 @@ export class ContainerRuntime extends TypedEventEmitter {
2974
2988
  throw new Error(`Can't rollback ${type}`);
2975
2989
  }
2976
2990
  }
2977
- /** Implementation of ISummarizerInternalsProvider.refreshLatestSummaryAck */
2991
+ /**
2992
+ * Implementation of ISummarizerInternalsProvider.refreshLatestSummaryAck
2993
+ */
2978
2994
  async refreshLatestSummaryAck(options) {
2979
2995
  const { proposalHandle, ackHandle, summaryRefSeq, summaryLogger } = options;
2980
2996
  // proposalHandle is always passed from RunningSummarizer.