@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
@@ -61,7 +61,7 @@ export class SummarizerNode implements IRootSummarizerNode {
61
61
  * The reference sequence number of the most recent acked summary.
62
62
  * Returns 0 if there is not yet an acked summary.
63
63
  */
64
- public get referenceSequenceNumber() {
64
+ public get referenceSequenceNumber(): number {
65
65
  return this._lastSummaryReferenceSequenceNumber ?? 0;
66
66
  }
67
67
 
@@ -98,13 +98,19 @@ export class SummarizerNode implements IRootSummarizerNode {
98
98
  baseLogger: ITelemetryBaseLogger,
99
99
  private readonly summarizeInternalFn: SummarizeInternalFn,
100
100
  config: ISummarizerNodeConfig,
101
- /** Encoded handle or path to the node */
101
+ /**
102
+ * Encoded handle or path to the node
103
+ */
102
104
  private readonly _summaryHandleId: EscapedPath,
103
105
  private _changeSequenceNumber: number,
104
- /** Summary reference sequence number, i.e. last sequence number seen when last successful summary was created */
106
+ /**
107
+ * Summary reference sequence number, i.e. last sequence number seen when last successful summary was created
108
+ */
105
109
  private _lastSummaryReferenceSequenceNumber?: number,
106
110
  protected wipSummaryLogger?: ITelemetryBaseLogger,
107
- /** A unique id of this node to be logged when sending telemetry. */
111
+ /**
112
+ * A unique id of this node to be logged when sending telemetry.
113
+ */
108
114
  protected telemetryNodeId?: string,
109
115
  ) {
110
116
  this.canReuseHandle = config.canReuseHandle ?? true;
@@ -192,20 +198,23 @@ export class SummarizerNode implements IRootSummarizerNode {
192
198
  this.wipSummarizeCalled = true;
193
199
 
194
200
  // Try to reuse the tree if unchanged
195
- if (this.canReuseHandle && !fullTree && !this.hasChanged()) {
196
- if (this._lastSummaryReferenceSequenceNumber !== undefined) {
197
- this.wipSkipRecursion = true;
198
- const stats = mergeStats();
199
- stats.handleNodeCount++;
200
- return {
201
- summary: {
202
- type: SummaryType.Handle,
203
- handle: this.summaryHandleId,
204
- handleType: SummaryType.Tree,
205
- },
206
- stats,
207
- };
208
- }
201
+ if (
202
+ this.canReuseHandle &&
203
+ !fullTree &&
204
+ !this.hasChanged() &&
205
+ this._lastSummaryReferenceSequenceNumber !== undefined
206
+ ) {
207
+ this.wipSkipRecursion = true;
208
+ const stats = mergeStats();
209
+ stats.handleNodeCount++;
210
+ return {
211
+ summary: {
212
+ type: SummaryType.Handle,
213
+ handle: this.summaryHandleId,
214
+ handleType: SummaryType.Tree,
215
+ },
216
+ stats,
217
+ };
209
218
  }
210
219
 
211
220
  let incrementalSummaryContext: IExperimentalIncrementalSummaryContext | undefined;
@@ -215,14 +224,14 @@ export class SummarizerNode implements IRootSummarizerNode {
215
224
  0x5df /* Summarize should not be called when not tracking the summary */,
216
225
  );
217
226
  incrementalSummaryContext =
218
- this._lastSummaryReferenceSequenceNumber !== undefined
219
- ? {
227
+ this._lastSummaryReferenceSequenceNumber === undefined
228
+ ? undefined
229
+ : {
220
230
  summarySequenceNumber: this.wipReferenceSequenceNumber,
221
231
  latestSummarySequenceNumber: this._lastSummaryReferenceSequenceNumber,
222
232
  // TODO: remove summaryPath.
223
233
  summaryPath: this.summaryHandleId,
224
- }
225
- : undefined;
234
+ };
226
235
  }
227
236
 
228
237
  const result = await this.summarizeInternalFn(
@@ -317,7 +326,7 @@ export class SummarizerNode implements IRootSummarizerNode {
317
326
  * queue. We track this until we get an ack from the server for this summary.
318
327
  * @param proposalHandle - The handle of the summary that was uploaded to the server.
319
328
  */
320
- public completeSummary(proposalHandle: string) {
329
+ public completeSummary(proposalHandle: string): void {
321
330
  this.completeSummaryCore(proposalHandle, false /* parentSkipRecursion */);
322
331
  }
323
332
 
@@ -329,22 +338,20 @@ export class SummarizerNode implements IRootSummarizerNode {
329
338
  * In that case, the children will not have work-in-progress state.
330
339
  * @param validate - true to validate that the in-progress summary is correct for all nodes.
331
340
  */
332
- protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean) {
341
+ protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean): void {
333
342
  assert(
334
343
  this.wipReferenceSequenceNumber !== undefined,
335
344
  0x1a4 /* "Not tracking a summary" */,
336
345
  );
337
- if (parentSkipRecursion) {
338
- if (this._lastSummaryReferenceSequenceNumber === undefined) {
339
- // This case the child is added after the latest non-failure summary.
340
- // This node and all children should consider themselves as still not
341
- // having a successful summary yet.
342
- // We cannot "reuse" this node if unchanged since that summary, because
343
- // handles will be unable to point to that node. It never made it to the
344
- // tree itself, and only exists as an attach op in the _outstandingOps.
345
- this.clearSummary();
346
- return;
347
- }
346
+ if (parentSkipRecursion && this._lastSummaryReferenceSequenceNumber === undefined) {
347
+ // This case the child is added after the latest non-failure summary.
348
+ // This node and all children should consider themselves as still not
349
+ // having a successful summary yet.
350
+ // We cannot "reuse" this node if unchanged since that summary, because
351
+ // handles will be unable to point to that node. It never made it to the
352
+ // tree itself, and only exists as an attach op in the _outstandingOps.
353
+ this.clearSummary();
354
+ return;
348
355
  }
349
356
 
350
357
  for (const child of this.children.values()) {
@@ -362,7 +369,7 @@ export class SummarizerNode implements IRootSummarizerNode {
362
369
  this.clearSummary();
363
370
  }
364
371
 
365
- public clearSummary() {
372
+ public clearSummary(): void {
366
373
  this.wipReferenceSequenceNumber = undefined;
367
374
  this.wipSummarizeCalled = false;
368
375
  this.wipSkipRecursion = false;
@@ -476,7 +483,7 @@ export class SummarizerNode implements IRootSummarizerNode {
476
483
  }
477
484
  }
478
485
 
479
- public updateBaseSummaryState(snapshot: ISnapshotTree) {
486
+ public updateBaseSummaryState(snapshot: ISnapshotTree): void {
480
487
  // Function deprecated. Empty declaration is kept around to compat failures.
481
488
  }
482
489
 
@@ -502,9 +509,13 @@ export class SummarizerNode implements IRootSummarizerNode {
502
509
  protected readonly canReuseHandle: boolean;
503
510
 
504
511
  public createChild(
505
- /** Summarize function */
512
+ /**
513
+ * Summarize function
514
+ */
506
515
  summarizeInternalFn: SummarizeInternalFn,
507
- /** Initial id or path part of this node */
516
+ /**
517
+ * Initial id or path part of this node
518
+ */
508
519
  id: string,
509
520
  /**
510
521
  * Information needed to create the node.
@@ -599,7 +610,7 @@ export class SummarizerNode implements IRootSummarizerNode {
599
610
  * @param id - Initial id or path part of this node
600
611
  *
601
612
  */
602
- protected maybeUpdateChildState(child: SummarizerNode, id: string) {
613
+ protected maybeUpdateChildState(child: SummarizerNode, id: string): void {
603
614
  // If a summary is in progress, this child was created after the summary started. So, we need to update the
604
615
  // child's summary state as well.
605
616
  if (this.isSummaryInProgress()) {
@@ -607,13 +618,13 @@ export class SummarizerNode implements IRootSummarizerNode {
607
618
  }
608
619
  // In case we have pending summaries on the parent, let's initialize it on the child.
609
620
  if (child._lastSummaryReferenceSequenceNumber !== undefined) {
610
- this.pendingSummaries.forEach((pendingSummaryInfo, proposedHandle) => {
621
+ for (const [proposedHandle, pendingSummaryInfo] of this.pendingSummaries.entries()) {
611
622
  child.addPendingSummary(proposedHandle, pendingSummaryInfo);
612
- });
623
+ }
613
624
  }
614
625
  }
615
626
 
616
- protected addPendingSummary(key: string, pendingSummaryInfo: PendingSummaryInfo) {
627
+ protected addPendingSummary(key: string, pendingSummaryInfo: PendingSummaryInfo): void {
617
628
  this.pendingSummaries.set(key, pendingSummaryInfo);
618
629
  }
619
630
 
@@ -12,18 +12,28 @@ import {
12
12
  } from "@fluidframework/telemetry-utils/internal";
13
13
 
14
14
  export interface IRefreshSummaryResult {
15
- /** Tells whether this summary is tracked by this client. */
15
+ /**
16
+ * Tells whether this summary is tracked by this client.
17
+ */
16
18
  isSummaryTracked: boolean;
17
- /** Tells whether this summary is newer than the latest one tracked by this client. */
19
+ /**
20
+ * Tells whether this summary is newer than the latest one tracked by this client.
21
+ */
18
22
  isSummaryNewer: boolean;
19
23
  }
20
24
 
21
25
  export interface IStartSummaryResult {
22
- /** The number of summarizerNodes at the start of the summary. */
26
+ /**
27
+ * The number of summarizerNodes at the start of the summary.
28
+ */
23
29
  nodes: number;
24
- /** The number of summarizerNodes in the wrong state. */
30
+ /**
31
+ * The number of summarizerNodes in the wrong state.
32
+ */
25
33
  invalidNodes: number;
26
- /** The invalid sequence numbers and their values. It should be in the format of validateSequenceNumber-nodeSequenceNumber */
34
+ /**
35
+ * The invalid sequence numbers and their values. It should be in the format of validateSequenceNumber-nodeSequenceNumber
36
+ */
27
37
  mismatchNumbers: Set<string>;
28
38
  }
29
39
 
@@ -38,14 +48,20 @@ export type ValidateSummaryResult =
38
48
  }
39
49
  | {
40
50
  success: false;
41
- /** The failure reason */
51
+ /**
52
+ * The failure reason
53
+ */
42
54
  reason: string;
43
- /** id of the node that failed during validation */
55
+ /**
56
+ * id of the node that failed during validation
57
+ */
44
58
  id: {
45
59
  tag: TelemetryDataTag.CodeArtifact;
46
60
  value: string | undefined;
47
61
  };
48
- /** If the error can be retried, time to wait before retrying */
62
+ /**
63
+ * If the error can be retried, time to wait before retrying
64
+ */
49
65
  retryAfterSeconds?: number;
50
66
  };
51
67
 
@@ -64,7 +80,9 @@ export interface ISummarizerNodeRootContract {
64
80
  ): Promise<IRefreshSummaryResult>;
65
81
  }
66
82
 
67
- /** Class to build paths for nodes in a tree with escaped special characters */
83
+ /**
84
+ * Class to build paths for nodes in a tree with escaped special characters
85
+ */
68
86
  export class EscapedPath {
69
87
  private constructor(public readonly path: string) {}
70
88
 
@@ -88,7 +106,9 @@ export class EscapedPath {
88
106
  }
89
107
  }
90
108
  export interface PendingSummaryInfo {
91
- /** The sequence number at which the summary was created. */
109
+ /**
110
+ * The sequence number at which the summary was created.
111
+ */
92
112
  referenceSequenceNumber: number;
93
113
  }
94
114
 
@@ -96,19 +116,31 @@ export interface PendingSummaryInfo {
96
116
  * Represents the details needed to create a child summarizer node.
97
117
  */
98
118
  export interface ICreateChildDetails {
99
- /** Sequence number of latest known change to the node */
119
+ /**
120
+ * Sequence number of latest known change to the node
121
+ */
100
122
  changeSequenceNumber: number;
101
- /** A unique id of this child to be logged when sending telemetry. */
123
+ /**
124
+ * A unique id of this child to be logged when sending telemetry.
125
+ */
102
126
  telemetryNodeId: string;
103
- /** Summary handle for child node */
127
+ /**
128
+ * Summary handle for child node
129
+ */
104
130
  summaryHandleId: EscapedPath;
105
- /** the reference sequence number of the last successful summary. */
131
+ /**
132
+ * the reference sequence number of the last successful summary.
133
+ */
106
134
  lastSummaryReferenceSequenceNumber: number | undefined;
107
135
  }
108
136
 
109
137
  export interface ISubtreeInfo<T extends ISnapshotTree | SummaryObject> {
110
- /** Tree to use to find children subtrees */
138
+ /**
139
+ * Tree to use to find children subtrees
140
+ */
111
141
  childrenTree: T;
112
- /** Additional path part where children are isolated */
142
+ /**
143
+ * Additional path part where children are isolated
144
+ */
113
145
  childrenPathPart: string | undefined;
114
146
  }
@@ -51,7 +51,7 @@ interface PendingSummaryInfoWithGC extends PendingSummaryInfo {
51
51
  * - Manages the used routes of this node. These are used to identify if this node is referenced in the document
52
52
  * and to determine if the node's used state changed since last summary.
53
53
  *
54
- * - Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls
54
+ *- Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls
55
55
  * directly into summarizeInternal method.
56
56
  */
57
57
  export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummarizerNodeWithGC {
@@ -95,12 +95,16 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
95
95
  config: ISummarizerNodeConfigWithGC,
96
96
  _summaryHandleId: EscapedPath,
97
97
  changeSequenceNumber: number,
98
- /** Summary reference sequence number, i.e. last sequence number seen when it was created */
98
+ /**
99
+ * Summary reference sequence number, i.e. last sequence number seen when it was created
100
+ */
99
101
  lastSummaryReferenceSequenceNumber?: number,
100
102
  wipSummaryLogger?: ITelemetryBaseLogger,
101
103
  private readonly getGCDataFn?: (fullGC?: boolean) => Promise<IGarbageCollectionData>,
102
104
  getBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,
103
- /** A unique id of this node to be logged when sending telemetry. */
105
+ /**
106
+ * A unique id of this node to be logged when sending telemetry.
107
+ */
104
108
  telemetryId?: string,
105
109
  ) {
106
110
  super(
@@ -132,7 +136,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
132
136
  * - usedRoutes: This is used to figure out if the used state of this node changed since last summary.
133
137
  * - gcData: The garbage collection data of this node that is required for running GC.
134
138
  */
135
- private async loadBaseGCDetails() {
139
+ private async loadBaseGCDetails(): Promise<void> {
136
140
  if (this.baseGCDetailsLoaded) {
137
141
  return;
138
142
  }
@@ -152,8 +156,8 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
152
156
  this.gcData = cloneGCData(baseGCDetails.gcData);
153
157
  }
154
158
  if (baseGCDetails.usedRoutes !== undefined) {
155
- this.usedRoutes = Array.from(baseGCDetails.usedRoutes).sort();
156
- this.referenceUsedRoutes = Array.from(baseGCDetails.usedRoutes).sort();
159
+ this.usedRoutes = [...baseGCDetails.usedRoutes].sort();
160
+ this.referenceUsedRoutes = [...baseGCDetails.usedRoutes].sort();
157
161
  }
158
162
  }
159
163
 
@@ -263,7 +267,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
263
267
  * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.
264
268
  * In that case, the children will not have work-in-progress state.
265
269
  */
266
- protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean) {
270
+ protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean): void {
267
271
  let wipSerializedUsedRoutes: string | undefined;
268
272
  // If GC is disabled, don't set wip used routes.
269
273
  if (!this.gcDisabled) {
@@ -288,7 +292,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
288
292
  /**
289
293
  * Clears the work-in-progress state.
290
294
  */
291
- public clearSummary() {
295
+ public clearSummary(): void {
292
296
  this.wipSerializedUsedRoutes = undefined;
293
297
  this.wipChildNodesUsedRoutes = undefined;
294
298
  super.clearSummary();
@@ -324,7 +328,9 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
324
328
  );
325
329
  throw error;
326
330
  }
327
- this.referenceUsedRoutes = JSON.parse(summaryNodeWithGC.serializedUsedRoutes);
331
+ this.referenceUsedRoutes = JSON.parse(
332
+ summaryNodeWithGC.serializedUsedRoutes,
333
+ ) as string[];
328
334
  }
329
335
  }
330
336
 
@@ -335,9 +341,13 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
335
341
  * Override the createChild method to return an instance of SummarizerNodeWithGC.
336
342
  */
337
343
  public createChild(
338
- /** Summarize function */
344
+ /**
345
+ * Summarize function
346
+ */
339
347
  summarizeInternalFn: SummarizeInternalFn,
340
- /** Initial id or path part of this node */
348
+ /**
349
+ * Initial id or path part of this node
350
+ */
341
351
  id: string,
342
352
  /**
343
353
  * Information needed to create the node.
@@ -355,7 +365,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
355
365
  * snapshot and the child node wasn't created then. If a child is created after that, its GC details should be
356
366
  * the one from the downloaded snapshot and not the base GC details.
357
367
  */
358
- const getChildBaseGCDetailsFn = async () => {
368
+ const getChildBaseGCDetailsFn = async (): Promise<IGarbageCollectionDetailsBase> => {
359
369
  const childNodesBaseGCDetails = await this.childNodesBaseGCDetailsP;
360
370
  return childNodesBaseGCDetails.get(id) ?? {};
361
371
  };
@@ -395,7 +405,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
395
405
  * @param child - The child node whose state is to be updated.
396
406
  * @param id - Initial id or path part of this node
397
407
  */
398
- protected maybeUpdateChildState(child: SummarizerNodeWithGC, id: string) {
408
+ protected maybeUpdateChildState(child: SummarizerNodeWithGC, id: string): void {
399
409
  super.maybeUpdateChildState(child, id);
400
410
 
401
411
  // If GC has run on this node and summarization isn't complete, this.wipSerializedUsedRoutes will be defined.
@@ -417,7 +427,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
417
427
  const pendingSummaryWithGC = pendingSummary as PendingSummaryInfoWithGC;
418
428
  if (pendingSummaryWithGC.serializedUsedRoutes !== undefined) {
419
429
  const childNodeUsedRoutes = unpackChildNodesUsedRoutes(
420
- JSON.parse(pendingSummaryWithGC.serializedUsedRoutes),
430
+ JSON.parse(pendingSummaryWithGC.serializedUsedRoutes) as string[],
421
431
  );
422
432
  const newSerializedRoutes = childNodeUsedRoutes.get(id) ?? [""];
423
433
  const childPendingSummaryInfo = {
@@ -447,7 +457,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
447
457
  return this.usedRoutes.includes("") || this.usedRoutes.includes("/");
448
458
  }
449
459
 
450
- public updateUsedRoutes(usedRoutes: string[]) {
460
+ public updateUsedRoutes(usedRoutes: string[]): void {
451
461
  // Sort the given routes before updating. This will ensure that the routes compared in hasUsedStateChanged()
452
462
  // are in the same order.
453
463
  this.usedRoutes = usedRoutes.sort();