@fluidframework/container-runtime 2.13.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 (443) hide show
  1. package/.eslintrc.cjs +36 -0
  2. package/CHANGELOG.md +46 -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 +3 -2
  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/gcReferenceGraphAlgorithm.js.map +1 -1
  66. package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
  67. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  68. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  69. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  70. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  71. package/dist/gc/gcTelemetry.d.ts +33 -11
  72. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  73. package/dist/gc/gcTelemetry.js +6 -2
  74. package/dist/gc/gcTelemetry.js.map +1 -1
  75. package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
  76. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  77. package/dist/gc/gcUnreferencedStateTracker.js +27 -9
  78. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  79. package/dist/gc/index.d.ts +1 -0
  80. package/dist/gc/index.d.ts.map +1 -1
  81. package/dist/gc/index.js +3 -1
  82. package/dist/gc/index.js.map +1 -1
  83. package/dist/inboundBatchAggregator.d.ts +34 -0
  84. package/dist/inboundBatchAggregator.d.ts.map +1 -0
  85. package/dist/inboundBatchAggregator.js +185 -0
  86. package/dist/inboundBatchAggregator.js.map +1 -0
  87. package/dist/index.d.ts +1 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js.map +1 -1
  90. package/dist/legacy.d.ts +0 -4
  91. package/dist/messageTypes.d.ts +14 -5
  92. package/dist/messageTypes.d.ts.map +1 -1
  93. package/dist/messageTypes.js.map +1 -1
  94. package/dist/metadata.d.ts +12 -4
  95. package/dist/metadata.d.ts.map +1 -1
  96. package/dist/metadata.js +6 -2
  97. package/dist/metadata.js.map +1 -1
  98. package/dist/opLifecycle/batchManager.d.ts +9 -3
  99. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  100. package/dist/opLifecycle/batchManager.js +3 -1
  101. package/dist/opLifecycle/batchManager.js.map +1 -1
  102. package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  103. package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  104. package/dist/opLifecycle/duplicateBatchDetector.js +9 -3
  105. package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
  106. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  107. package/dist/opLifecycle/opCompressor.js.map +1 -1
  108. package/dist/opLifecycle/opDecompressor.d.ts +3 -1
  109. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  110. package/dist/opLifecycle/opDecompressor.js +12 -7
  111. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  112. package/dist/opLifecycle/opGroupingManager.d.ts +0 -1
  113. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  114. package/dist/opLifecycle/opGroupingManager.js +5 -4
  115. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  116. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  117. package/dist/opLifecycle/opSplitter.js +2 -0
  118. package/dist/opLifecycle/opSplitter.js.map +1 -1
  119. package/dist/opLifecycle/outbox.d.ts +1 -1
  120. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  121. package/dist/opLifecycle/outbox.js +6 -1
  122. package/dist/opLifecycle/outbox.js.map +1 -1
  123. package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  124. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  125. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  126. package/dist/package.json +2 -1
  127. package/dist/packageVersion.d.ts +1 -1
  128. package/dist/packageVersion.js +1 -1
  129. package/dist/packageVersion.js.map +1 -1
  130. package/dist/pendingStateManager.d.ts +19 -7
  131. package/dist/pendingStateManager.d.ts.map +1 -1
  132. package/dist/pendingStateManager.js +13 -5
  133. package/dist/pendingStateManager.js.map +1 -1
  134. package/dist/summary/documentSchema.d.ts.map +1 -1
  135. package/dist/summary/documentSchema.js +2 -0
  136. package/dist/summary/documentSchema.js.map +1 -1
  137. package/dist/summary/index.d.ts +1 -1
  138. package/dist/summary/index.d.ts.map +1 -1
  139. package/dist/summary/index.js.map +1 -1
  140. package/dist/summary/orderedClientElection.d.ts +93 -31
  141. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  142. package/dist/summary/orderedClientElection.js +15 -5
  143. package/dist/summary/orderedClientElection.js.map +1 -1
  144. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  145. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  146. package/dist/summary/runningSummarizer.d.ts +17 -6
  147. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  148. package/dist/summary/runningSummarizer.js +12 -4
  149. package/dist/summary/runningSummarizer.js.map +1 -1
  150. package/dist/summary/summarizer.d.ts +9 -5
  151. package/dist/summary/summarizer.d.ts.map +1 -1
  152. package/dist/summary/summarizer.js +9 -3
  153. package/dist/summary/summarizer.js.map +1 -1
  154. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  155. package/dist/summary/summarizerClientElection.js.map +1 -1
  156. package/dist/summary/summarizerHeuristics.d.ts +6 -2
  157. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  158. package/dist/summary/summarizerHeuristics.js +12 -4
  159. package/dist/summary/summarizerHeuristics.js.map +1 -1
  160. package/dist/summary/summarizerNode/summarizerNode.d.ts +24 -8
  161. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  162. package/dist/summary/summarizerNode/summarizerNode.js +15 -5
  163. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  164. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  167. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  168. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +12 -4
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
  171. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  172. package/dist/summary/summarizerTypes.d.ts +246 -135
  173. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  174. package/dist/summary/summarizerTypes.js.map +1 -1
  175. package/dist/summary/summaryCollection.d.ts.map +1 -1
  176. package/dist/summary/summaryCollection.js +1 -2
  177. package/dist/summary/summaryCollection.js.map +1 -1
  178. package/dist/summary/summaryFormat.d.ts +24 -8
  179. package/dist/summary/summaryFormat.d.ts.map +1 -1
  180. package/dist/summary/summaryFormat.js.map +1 -1
  181. package/dist/summary/summaryGenerator.d.ts +9 -3
  182. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  183. package/dist/summary/summaryGenerator.js +3 -1
  184. package/dist/summary/summaryGenerator.js.map +1 -1
  185. package/dist/summary/summaryManager.d.ts +8 -4
  186. package/dist/summary/summaryManager.d.ts.map +1 -1
  187. package/dist/summary/summaryManager.js +12 -4
  188. package/dist/summary/summaryManager.js.map +1 -1
  189. package/dist/throttler.d.ts +26 -10
  190. package/dist/throttler.d.ts.map +1 -1
  191. package/dist/throttler.js +12 -4
  192. package/dist/throttler.js.map +1 -1
  193. package/lib/batchTracker.d.ts.map +1 -1
  194. package/lib/batchTracker.js.map +1 -1
  195. package/lib/blobManager/blobManager.d.ts +5 -1
  196. package/lib/blobManager/blobManager.d.ts.map +1 -1
  197. package/lib/blobManager/blobManager.js +16 -2
  198. package/lib/blobManager/blobManager.js.map +1 -1
  199. package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  200. package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
  201. package/lib/channelCollection.d.ts +23 -12
  202. package/lib/channelCollection.d.ts.map +1 -1
  203. package/lib/channelCollection.js +22 -12
  204. package/lib/channelCollection.js.map +1 -1
  205. package/lib/connectionTelemetry.d.ts.map +1 -1
  206. package/lib/connectionTelemetry.js +6 -2
  207. package/lib/connectionTelemetry.js.map +1 -1
  208. package/lib/containerHandleContext.d.ts +1 -1
  209. package/lib/containerHandleContext.d.ts.map +1 -1
  210. package/lib/containerHandleContext.js.map +1 -1
  211. package/lib/containerRuntime.d.ts +74 -65
  212. package/lib/containerRuntime.d.ts.map +1 -1
  213. package/lib/containerRuntime.js +53 -37
  214. package/lib/containerRuntime.js.map +1 -1
  215. package/lib/dataStore.d.ts +7 -3
  216. package/lib/dataStore.d.ts.map +1 -1
  217. package/lib/dataStore.js +2 -1
  218. package/lib/dataStore.js.map +1 -1
  219. package/lib/dataStoreContext.d.ts +41 -25
  220. package/lib/dataStoreContext.d.ts.map +1 -1
  221. package/lib/dataStoreContext.js +31 -18
  222. package/lib/dataStoreContext.js.map +1 -1
  223. package/lib/dataStoreContexts.d.ts +6 -2
  224. package/lib/dataStoreContexts.d.ts.map +1 -1
  225. package/lib/dataStoreContexts.js +6 -2
  226. package/lib/dataStoreContexts.js.map +1 -1
  227. package/lib/dataStoreRegistry.d.ts +1 -1
  228. package/lib/dataStoreRegistry.d.ts.map +1 -1
  229. package/lib/dataStoreRegistry.js.map +1 -1
  230. package/lib/deltaManagerProxies.d.ts +1 -17
  231. package/lib/deltaManagerProxies.d.ts.map +1 -1
  232. package/lib/deltaManagerProxies.js.map +1 -1
  233. package/lib/deltaScheduler.d.ts +9 -6
  234. package/lib/deltaScheduler.d.ts.map +1 -1
  235. package/lib/deltaScheduler.js +95 -89
  236. package/lib/deltaScheduler.js.map +1 -1
  237. package/lib/gc/garbageCollection.d.ts +21 -7
  238. package/lib/gc/garbageCollection.d.ts.map +1 -1
  239. package/lib/gc/garbageCollection.js +12 -5
  240. package/lib/gc/garbageCollection.js.map +1 -1
  241. package/lib/gc/gcConfigs.d.ts +11 -0
  242. package/lib/gc/gcConfigs.d.ts.map +1 -1
  243. package/lib/gc/gcConfigs.js +2 -2
  244. package/lib/gc/gcConfigs.js.map +1 -1
  245. package/lib/gc/gcDefinitions.d.ts +210 -70
  246. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  247. package/lib/gc/gcDefinitions.js +39 -13
  248. package/lib/gc/gcDefinitions.js.map +1 -1
  249. package/lib/gc/gcHelpers.d.ts +6 -2
  250. package/lib/gc/gcHelpers.d.ts.map +1 -1
  251. package/lib/gc/gcHelpers.js +6 -2
  252. package/lib/gc/gcHelpers.js.map +1 -1
  253. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  254. package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
  255. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  256. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  257. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  258. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  259. package/lib/gc/gcTelemetry.d.ts +33 -11
  260. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  261. package/lib/gc/gcTelemetry.js +6 -2
  262. package/lib/gc/gcTelemetry.js.map +1 -1
  263. package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
  264. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  265. package/lib/gc/gcUnreferencedStateTracker.js +27 -9
  266. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  267. package/lib/gc/index.d.ts +1 -0
  268. package/lib/gc/index.d.ts.map +1 -1
  269. package/lib/gc/index.js +1 -0
  270. package/lib/gc/index.js.map +1 -1
  271. package/lib/inboundBatchAggregator.d.ts +34 -0
  272. package/lib/inboundBatchAggregator.d.ts.map +1 -0
  273. package/lib/inboundBatchAggregator.js +181 -0
  274. package/lib/inboundBatchAggregator.js.map +1 -0
  275. package/lib/index.d.ts +1 -1
  276. package/lib/index.d.ts.map +1 -1
  277. package/lib/index.js.map +1 -1
  278. package/lib/legacy.d.ts +0 -4
  279. package/lib/messageTypes.d.ts +14 -5
  280. package/lib/messageTypes.d.ts.map +1 -1
  281. package/lib/messageTypes.js.map +1 -1
  282. package/lib/metadata.d.ts +12 -4
  283. package/lib/metadata.d.ts.map +1 -1
  284. package/lib/metadata.js +6 -2
  285. package/lib/metadata.js.map +1 -1
  286. package/lib/opLifecycle/batchManager.d.ts +9 -3
  287. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  288. package/lib/opLifecycle/batchManager.js +3 -1
  289. package/lib/opLifecycle/batchManager.js.map +1 -1
  290. package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  291. package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  292. package/lib/opLifecycle/duplicateBatchDetector.js +9 -3
  293. package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
  294. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  295. package/lib/opLifecycle/opCompressor.js +1 -1
  296. package/lib/opLifecycle/opCompressor.js.map +1 -1
  297. package/lib/opLifecycle/opDecompressor.d.ts +3 -1
  298. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  299. package/lib/opLifecycle/opDecompressor.js +13 -8
  300. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  301. package/lib/opLifecycle/opGroupingManager.d.ts +0 -1
  302. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  303. package/lib/opLifecycle/opGroupingManager.js +6 -5
  304. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  305. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  306. package/lib/opLifecycle/opSplitter.js +2 -0
  307. package/lib/opLifecycle/opSplitter.js.map +1 -1
  308. package/lib/opLifecycle/outbox.d.ts +1 -1
  309. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  310. package/lib/opLifecycle/outbox.js +6 -1
  311. package/lib/opLifecycle/outbox.js.map +1 -1
  312. package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  313. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  314. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  315. package/lib/packageVersion.d.ts +1 -1
  316. package/lib/packageVersion.js +1 -1
  317. package/lib/packageVersion.js.map +1 -1
  318. package/lib/pendingStateManager.d.ts +19 -7
  319. package/lib/pendingStateManager.d.ts.map +1 -1
  320. package/lib/pendingStateManager.js +13 -5
  321. package/lib/pendingStateManager.js.map +1 -1
  322. package/lib/summary/documentSchema.d.ts.map +1 -1
  323. package/lib/summary/documentSchema.js +2 -0
  324. package/lib/summary/documentSchema.js.map +1 -1
  325. package/lib/summary/index.d.ts +1 -1
  326. package/lib/summary/index.d.ts.map +1 -1
  327. package/lib/summary/index.js.map +1 -1
  328. package/lib/summary/orderedClientElection.d.ts +93 -31
  329. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  330. package/lib/summary/orderedClientElection.js +15 -5
  331. package/lib/summary/orderedClientElection.js.map +1 -1
  332. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  333. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  334. package/lib/summary/runningSummarizer.d.ts +17 -6
  335. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  336. package/lib/summary/runningSummarizer.js +12 -4
  337. package/lib/summary/runningSummarizer.js.map +1 -1
  338. package/lib/summary/summarizer.d.ts +9 -5
  339. package/lib/summary/summarizer.d.ts.map +1 -1
  340. package/lib/summary/summarizer.js +9 -3
  341. package/lib/summary/summarizer.js.map +1 -1
  342. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  343. package/lib/summary/summarizerClientElection.js.map +1 -1
  344. package/lib/summary/summarizerHeuristics.d.ts +6 -2
  345. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  346. package/lib/summary/summarizerHeuristics.js +12 -4
  347. package/lib/summary/summarizerHeuristics.js.map +1 -1
  348. package/lib/summary/summarizerNode/summarizerNode.d.ts +24 -8
  349. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  350. package/lib/summary/summarizerNode/summarizerNode.js +15 -5
  351. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  352. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  353. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  354. package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  355. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  356. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +12 -4
  357. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  358. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
  359. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  360. package/lib/summary/summarizerTypes.d.ts +246 -135
  361. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  362. package/lib/summary/summarizerTypes.js.map +1 -1
  363. package/lib/summary/summaryCollection.d.ts.map +1 -1
  364. package/lib/summary/summaryCollection.js +1 -2
  365. package/lib/summary/summaryCollection.js.map +1 -1
  366. package/lib/summary/summaryFormat.d.ts +24 -8
  367. package/lib/summary/summaryFormat.d.ts.map +1 -1
  368. package/lib/summary/summaryFormat.js.map +1 -1
  369. package/lib/summary/summaryGenerator.d.ts +9 -3
  370. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  371. package/lib/summary/summaryGenerator.js +3 -1
  372. package/lib/summary/summaryGenerator.js.map +1 -1
  373. package/lib/summary/summaryManager.d.ts +8 -4
  374. package/lib/summary/summaryManager.d.ts.map +1 -1
  375. package/lib/summary/summaryManager.js +12 -4
  376. package/lib/summary/summaryManager.js.map +1 -1
  377. package/lib/throttler.d.ts +26 -10
  378. package/lib/throttler.d.ts.map +1 -1
  379. package/lib/throttler.js +12 -4
  380. package/lib/throttler.js.map +1 -1
  381. package/package.json +43 -30
  382. package/src/batchTracker.ts +31 -33
  383. package/src/blobManager/blobManager.ts +38 -19
  384. package/src/blobManager/blobManagerSnapSum.ts +2 -2
  385. package/src/channelCollection.ts +45 -38
  386. package/src/connectionTelemetry.ts +31 -13
  387. package/src/containerHandleContext.ts +2 -2
  388. package/src/containerRuntime.ts +199 -142
  389. package/src/dataStore.ts +11 -6
  390. package/src/dataStoreContext.ts +80 -59
  391. package/src/dataStoreContexts.ts +16 -12
  392. package/src/dataStoreRegistry.ts +1 -1
  393. package/src/deltaManagerProxies.ts +5 -5
  394. package/src/deltaScheduler.ts +19 -13
  395. package/src/gc/garbageCollection.ts +42 -20
  396. package/src/gc/gcConfigs.ts +4 -4
  397. package/src/gc/gcDefinitions.ts +212 -70
  398. package/src/gc/gcHelpers.ts +13 -7
  399. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  400. package/src/gc/gcSummaryDefinitions.ts +18 -6
  401. package/src/gc/gcSummaryStateTracker.ts +4 -2
  402. package/src/gc/gcTelemetry.ts +47 -19
  403. package/src/gc/gcUnreferencedStateTracker.ts +40 -16
  404. package/src/gc/index.ts +1 -0
  405. package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +53 -120
  406. package/src/index.ts +0 -3
  407. package/src/messageTypes.ts +14 -5
  408. package/src/metadata.ts +12 -4
  409. package/src/opLifecycle/batchManager.ts +12 -6
  410. package/src/opLifecycle/duplicateBatchDetector.ts +10 -4
  411. package/src/opLifecycle/opCompressor.ts +8 -4
  412. package/src/opLifecycle/opDecompressor.ts +19 -10
  413. package/src/opLifecycle/opGroupingManager.ts +12 -8
  414. package/src/opLifecycle/opSplitter.ts +10 -7
  415. package/src/opLifecycle/outbox.ts +22 -13
  416. package/src/opLifecycle/remoteMessageProcessor.ts +10 -4
  417. package/src/packageVersion.ts +1 -1
  418. package/src/pendingStateManager.ts +34 -16
  419. package/src/summary/documentSchema.ts +30 -18
  420. package/src/summary/index.ts +0 -3
  421. package/src/summary/orderedClientElection.ts +100 -38
  422. package/src/summary/runWhileConnectedCoordinator.ts +6 -3
  423. package/src/summary/runningSummarizer.ts +38 -19
  424. package/src/summary/summarizer.ts +29 -16
  425. package/src/summary/summarizerClientElection.ts +2 -2
  426. package/src/summary/summarizerHeuristics.ts +22 -11
  427. package/src/summary/summarizerNode/summarizerNode.ts +22 -12
  428. package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
  429. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +21 -11
  430. package/src/summary/summarizerTypes.ts +246 -139
  431. package/src/summary/summaryCollection.ts +22 -23
  432. package/src/summary/summaryFormat.ts +24 -8
  433. package/src/summary/summaryGenerator.ts +14 -8
  434. package/src/summary/summaryManager.ts +28 -18
  435. package/src/throttler.ts +23 -11
  436. package/dist/scheduleManager.d.ts +0 -28
  437. package/dist/scheduleManager.d.ts.map +0 -1
  438. package/dist/scheduleManager.js +0 -233
  439. package/dist/scheduleManager.js.map +0 -1
  440. package/lib/scheduleManager.d.ts +0 -28
  441. package/lib/scheduleManager.d.ts.map +0 -1
  442. package/lib/scheduleManager.js +0 -229
  443. package/lib/scheduleManager.js.map +0 -1
@@ -3,9 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { performance } from "@fluid-internal/client-utils";
6
+ import { performance, type TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IDeltaManagerFull } from "@fluidframework/container-definitions/internal";
8
8
  import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
9
+ import type { IContainerRuntimeBaseEvents } from "@fluidframework/runtime-definitions/internal";
9
10
  import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils/internal";
10
11
 
11
12
  /**
@@ -22,7 +23,6 @@ import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils
22
23
  * processed, the time and number of turns it took to process the ops.
23
24
  */
24
25
  export class DeltaScheduler {
25
- private readonly deltaManager: IDeltaManagerFull;
26
26
  // The time for processing ops in a single turn.
27
27
  public static readonly processingTime = 50;
28
28
 
@@ -50,16 +50,22 @@ export class DeltaScheduler {
50
50
  | undefined;
51
51
 
52
52
  constructor(
53
- deltaManager: IDeltaManagerFull,
53
+ private readonly deltaManager: IDeltaManagerFull,
54
+ private readonly runtimeEventsEmitter: TypedEventEmitter<IContainerRuntimeBaseEvents>,
54
55
  private readonly logger: ITelemetryLoggerExt,
55
56
  ) {
56
- this.deltaManager = deltaManager;
57
- this.deltaManager.inbound.on("idle", () => {
58
- this.inboundQueueIdle();
59
- });
57
+ this.deltaManager.inbound.on("idle", this.inboundQueueIdle);
58
+ runtimeEventsEmitter.on("batchBegin", this.batchBegin);
59
+ runtimeEventsEmitter.on("batchEnd", this.batchEnd);
60
60
  }
61
61
 
62
- public batchBegin(message: ISequencedDocumentMessage) {
62
+ public dispose(): void {
63
+ this.deltaManager.inbound.off("idle", this.inboundQueueIdle);
64
+ this.runtimeEventsEmitter.off("batchBegin", this.batchBegin);
65
+ this.runtimeEventsEmitter.off("batchEnd", this.batchEnd);
66
+ }
67
+
68
+ private readonly batchBegin = (message: ISequencedDocumentMessage): void => {
63
69
  if (!this.processingStartTime) {
64
70
  this.processingStartTime = performance.now();
65
71
  }
@@ -76,9 +82,9 @@ export class DeltaScheduler {
76
82
  startTime: performance.now(),
77
83
  };
78
84
  }
79
- }
85
+ };
80
86
 
81
- public batchEnd(message: ISequencedDocumentMessage) {
87
+ private readonly batchEnd = (error: unknown, message: ISequencedDocumentMessage): void => {
82
88
  if (this.schedulingLog) {
83
89
  this.schedulingLog.numberOfBatchesProcessed++;
84
90
  this.schedulingLog.lastSequenceNumber = message.sequenceNumber;
@@ -129,9 +135,9 @@ export class DeltaScheduler {
129
135
  this.processingStartTime = undefined;
130
136
  }
131
137
  }
132
- }
138
+ };
133
139
 
134
- private inboundQueueIdle() {
140
+ private readonly inboundQueueIdle = (): void => {
135
141
  if (this.schedulingLog) {
136
142
  // Add the time taken for processing the final ops to the total processing time in the
137
143
  // telemetry log object.
@@ -161,7 +167,7 @@ export class DeltaScheduler {
161
167
  // Reset the processing times.
162
168
  this.processingStartTime = undefined;
163
169
  this.currentAllowedProcessingTimeForTurn = DeltaScheduler.processingTime;
164
- }
170
+ };
165
171
 
166
172
  /**
167
173
  * This function tells whether we should run the scheduler.
@@ -5,7 +5,6 @@
5
5
 
6
6
  import { IRequest } from "@fluidframework/core-interfaces";
7
7
  import { assert, LazyPromise, Timer } from "@fluidframework/core-utils/internal";
8
- import type { ISnapshotTree } from "@fluidframework/driver-definitions/internal";
9
8
  import {
10
9
  IGarbageCollectionDetailsBase,
11
10
  ISummarizeResult,
@@ -142,16 +141,22 @@ export class GarbageCollector implements IGarbageCollector {
142
141
  private readonly summaryStateTracker: GCSummaryStateTracker;
143
142
  private readonly telemetryTracker: GCTelemetryTracker;
144
143
 
145
- /** For a given node path, returns the node's package path. */
144
+ /**
145
+ * For a given node path, returns the node's package path.
146
+ */
146
147
  private readonly getNodePackagePath: (
147
148
  nodePath: string,
148
149
  ) => Promise<readonly string[] | undefined>;
149
- /** Returns the timestamp of the last summary generated for this container. */
150
+ /**
151
+ * Returns the timestamp of the last summary generated for this container.
152
+ */
150
153
  private readonly getLastSummaryTimestampMs: () => number | undefined;
151
154
 
152
155
  private readonly submitMessage: (message: ContainerRuntimeGCMessage) => void;
153
156
 
154
- /** Returns the count of data stores whose GC state updated since the last summary. */
157
+ /**
158
+ * Returns the count of data stores whose GC state updated since the last summary.
159
+ */
155
160
  public get updatedDSCountSinceLastSummary(): number {
156
161
  return this.summaryStateTracker.updatedDSCountSinceLastSummary;
157
162
  }
@@ -227,7 +232,7 @@ export class GarbageCollector implements IGarbageCollector {
227
232
 
228
233
  try {
229
234
  // For newer documents, GC data should be present in the GC tree in the root of the snapshot.
230
- const gcSnapshotTree: ISnapshotTree | undefined = baseSnapshot.trees[gcTreeKey];
235
+ const gcSnapshotTree = baseSnapshot.trees[gcTreeKey];
231
236
  if (gcSnapshotTree === undefined) {
232
237
  // back-compat - Older documents get their gc data reset for simplicity as there are few of them
233
238
  // incremental gc summary will not work with older gc data as well
@@ -339,7 +344,9 @@ export class GarbageCollector implements IGarbageCollector {
339
344
  });
340
345
  }
341
346
 
342
- /** API for ensuring the correct auto-recovery mitigations */
347
+ /**
348
+ * API for ensuring the correct auto-recovery mitigations
349
+ */
343
350
  private readonly autoRecovery = (() => {
344
351
  // This uses a hidden state machine for forcing fullGC as part of autorecovery,
345
352
  // to regenerate the GC data for each node.
@@ -414,7 +421,7 @@ export class GarbageCollector implements IGarbageCollector {
414
421
  * Initialize the GC state if not already initialized. If GC state is already initialized, update the unreferenced
415
422
  * state tracking as per the current reference timestamp.
416
423
  */
417
- private async initializeOrUpdateGCState() {
424
+ private async initializeOrUpdateGCState(): Promise<void> {
418
425
  const currentReferenceTimestampMs = this.runtime.getCurrentReferenceTimestampMs();
419
426
  if (currentReferenceTimestampMs === undefined) {
420
427
  return;
@@ -488,11 +495,17 @@ export class GarbageCollector implements IGarbageCollector {
488
495
  */
489
496
  public async collectGarbage(
490
497
  options: {
491
- /** Logger to use for logging GC events */
498
+ /**
499
+ * Logger to use for logging GC events
500
+ */
492
501
  logger?: ITelemetryLoggerExt;
493
- /** True to run GC sweep phase after the mark phase */
502
+ /**
503
+ * True to run GC sweep phase after the mark phase
504
+ */
494
505
  runSweep?: boolean;
495
- /** True to generate full GC data */
506
+ /**
507
+ * True to generate full GC data
508
+ */
496
509
  fullGC?: boolean;
497
510
  },
498
511
  telemetryContext?: ITelemetryContext,
@@ -535,11 +548,15 @@ export class GarbageCollector implements IGarbageCollector {
535
548
  logger,
536
549
  { eventName: "GarbageCollection" },
537
550
  async (event) => {
538
- /** Pre-GC steps */
551
+ // #region Pre-GC steps
552
+
539
553
  // Ensure that state has been initialized from the base snapshot data.
540
554
  await this.initializeGCStateFromBaseSnapshotP;
541
555
 
542
- /** GC step */
556
+ // #endregion
557
+
558
+ // #region GC step
559
+
543
560
  const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);
544
561
  event.end({
545
562
  ...gcStats,
@@ -550,7 +567,10 @@ export class GarbageCollector implements IGarbageCollector {
550
567
  },
551
568
  });
552
569
 
553
- /** Post-GC steps */
570
+ // #endregion
571
+
572
+ // #region Post-GC steps
573
+
554
574
  // Log pending unreferenced events such as a node being used after inactive. This is done after GC runs and
555
575
  // updates its state so that we don't send false positives based on intermediate state. For example, we may get
556
576
  // reference to an unreferenced node from another unreferenced node which means the node wasn't revived.
@@ -561,6 +581,8 @@ export class GarbageCollector implements IGarbageCollector {
561
581
  this.newReferencesSinceLastRun.clear();
562
582
  this.completedRuns++;
563
583
 
584
+ // #endregion
585
+
564
586
  return gcStats;
565
587
  },
566
588
  { end: true, cancel: "error" },
@@ -700,7 +722,7 @@ export class GarbageCollector implements IGarbageCollector {
700
722
  gcResult: IGCResult,
701
723
  tombstoneReadyNodes: Set<string>,
702
724
  sweepReadyNodes: Set<string>,
703
- ) {
725
+ ): void {
704
726
  /**
705
727
  * Under "Test Mode", unreferenced nodes are immediately deleted without waiting for them to be sweep-ready.
706
728
  *
@@ -904,7 +926,7 @@ export class GarbageCollector implements IGarbageCollector {
904
926
  messageContents: GarbageCollectionMessage[],
905
927
  messageTimestampMs: number,
906
928
  local: boolean,
907
- ) {
929
+ ): void {
908
930
  for (const gcMessage of messageContents) {
909
931
  const gcMessageType = gcMessage.type;
910
932
  switch (gcMessageType) {
@@ -946,7 +968,7 @@ export class GarbageCollector implements IGarbageCollector {
946
968
  *
947
969
  * @param sweepReadyNodeIds - The ids of nodes that are ready to be deleted.
948
970
  */
949
- private deleteSweepReadyNodes(sweepReadyNodeIds: readonly string[]) {
971
+ private deleteSweepReadyNodes(sweepReadyNodeIds: readonly string[]): void {
950
972
  // Use a set for lookup because its much faster than array or map.
951
973
  const sweepReadyNodesSet: Set<string> = new Set(sweepReadyNodeIds);
952
974
 
@@ -992,7 +1014,7 @@ export class GarbageCollector implements IGarbageCollector {
992
1014
  request,
993
1015
  headerData,
994
1016
  additionalProps,
995
- }: IGCNodeUpdatedProps) {
1017
+ }: IGCNodeUpdatedProps): void {
996
1018
  // If there is no reference timestamp to work with, no ops have been processed after creation. If so, skip
997
1019
  // logging as nothing interesting would have happened worth logging.
998
1020
  if (!this.shouldRunGC || timestampMs === undefined) {
@@ -1063,7 +1085,7 @@ export class GarbageCollector implements IGarbageCollector {
1063
1085
  * Broadcasting this information in the op stream allows the Summarizer to reset unreferenced state
1064
1086
  * before running GC next.
1065
1087
  */
1066
- private triggerAutoRecovery(nodePath: string) {
1088
+ private triggerAutoRecovery(nodePath: string): void {
1067
1089
  // If sweep isn't enabled, auto-recovery isn't needed since its purpose is to prevent this object from being
1068
1090
  // deleted. It also would end up sending a GC op which can break clients running FF version 1.x.
1069
1091
  if (!this.configs.sweepEnabled) {
@@ -1094,7 +1116,7 @@ export class GarbageCollector implements IGarbageCollector {
1094
1116
  toNodePath: string,
1095
1117
  timestampMs: number,
1096
1118
  autorecovery?: true,
1097
- ) {
1119
+ ): void {
1098
1120
  if (!this.shouldRunGC) {
1099
1121
  return;
1100
1122
  }
@@ -1173,7 +1195,7 @@ export class GarbageCollector implements IGarbageCollector {
1173
1195
  updatedAttachmentBlobCount: 0,
1174
1196
  };
1175
1197
 
1176
- const updateNodeStats = (nodeId: string, isReferenced: boolean) => {
1198
+ const updateNodeStats = (nodeId: string, isReferenced: boolean): void => {
1177
1199
  markPhaseStats.nodeCount++;
1178
1200
  // If there is no previous GC data, every node's state is generated and is considered as updated.
1179
1201
  // Otherwise, find out if any node went from referenced to unreferenced or vice-versa.
@@ -87,7 +87,7 @@ export function generateGCConfigs(
87
87
  tombstoneTimeoutMs =
88
88
  testOverrideTombstoneTimeoutMs ?? computeTombstoneTimeout(sessionExpiryTimeoutMs);
89
89
 
90
- const gcGeneration = createParams.gcOptions?.[gcGenerationOptionName];
90
+ const gcGeneration = createParams.gcOptions[gcGenerationOptionName] as number;
91
91
  if (gcGeneration !== undefined) {
92
92
  persistedGcFeatureMatrix = { gcGeneration };
93
93
  }
@@ -116,9 +116,9 @@ export function generateGCConfigs(
116
116
  : sweepAllowed && createParams.gcOptions.enableGCSweep === true;
117
117
 
118
118
  // Override inactive timeout if test config or gc options to override it is set.
119
- const inactiveTimeoutMs =
119
+ const inactiveTimeoutMs: number =
120
120
  mc.config.getNumber("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs") ??
121
- createParams.gcOptions.inactiveTimeoutMs ??
121
+ (createParams.gcOptions.inactiveTimeoutMs as number) ??
122
122
  defaultInactiveTimeoutMs;
123
123
 
124
124
  // Inactive timeout must be greater than tombstone timeout since a node goes from active -> inactive -> sweep ready.
@@ -169,7 +169,7 @@ export function generateGCConfigs(
169
169
  *
170
170
  * If there is no Session Expiry timeout, GC can never guarantee an object won't be revived, so return undefined.
171
171
  */
172
- function computeTombstoneTimeout(
172
+ export function computeTombstoneTimeout(
173
173
  sessionExpiryTimeoutMs: number | undefined,
174
174
  ): number | undefined {
175
175
  const bufferMs = oneDayMs;