@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
@@ -26,7 +26,9 @@ import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
26
26
 
27
27
  type NodeUsageType = "Changed" | "Loaded" | "Revived" | "Realized";
28
28
 
29
- /** Properties that are common to IUnreferencedEventProps and INodeUsageProps */
29
+ /**
30
+ * Properties that are common to IUnreferencedEventProps and INodeUsageProps
31
+ */
30
32
  interface ICommonProps {
31
33
  usageType: NodeUsageType;
32
34
  completedGCRuns: number;
@@ -36,12 +38,18 @@ interface ICommonProps {
36
38
  additionalProps?: ITelemetryPropertiesExt;
37
39
  }
38
40
 
39
- /** The event that is logged when unreferenced node is used after a certain time. */
41
+ /**
42
+ * The event that is logged when unreferenced node is used after a certain time.
43
+ */
40
44
  interface IUnreferencedEventProps extends ICreateContainerMetadata, ICommonProps {
41
- /** The id that GC uses to track the node. May or may not match id */
45
+ /**
46
+ * The id that GC uses to track the node. May or may not match id
47
+ */
42
48
  trackedId: string;
43
49
  state: UnreferencedState;
44
- /** The full path (in GC Path format) to the node in question */
50
+ /**
51
+ * The full path (in GC Path format) to the node in question
52
+ */
45
53
  id: Tagged<string>;
46
54
  fromId?: Tagged<string>;
47
55
  type: GCNodeType;
@@ -54,21 +62,37 @@ interface IUnreferencedEventProps extends ICreateContainerMetadata, ICommonProps
54
62
  timeout?: number;
55
63
  }
56
64
 
57
- /** Properties passed to nodeUsed function when a node is used. */
65
+ /**
66
+ * Properties passed to nodeUsed function when a node is used.
67
+ */
58
68
  interface INodeUsageProps extends ICommonProps {
59
- /** The full path (in GC Path format) to the node in question */
69
+ /**
70
+ * The full path (in GC Path format) to the node in question
71
+ */
60
72
  id: string;
61
- /** Latest timestamp received from the server, as a baseline for computing GC state/age */
73
+ /**
74
+ * Latest timestamp received from the server, as a baseline for computing GC state/age
75
+ */
62
76
  currentReferenceTimestampMs: number;
63
- /** The package path of the node. This may not be available if the node hasn't been loaded yet */
77
+ /**
78
+ * The package path of the node. This may not be available if the node hasn't been loaded yet
79
+ */
64
80
  packagePath: readonly string[] | undefined;
65
- /** In case of Revived - what node added the reference? */
81
+ /**
82
+ * In case of Revived - what node added the reference?
83
+ */
66
84
  fromId?: string;
67
- /** In case of Revived - was it revived due to autorecovery? */
85
+ /**
86
+ * In case of Revived - was it revived due to autorecovery?
87
+ */
68
88
  autorecovery?: true;
69
- /** URL (including query string) if this usage came from a request */
89
+ /**
90
+ * URL (including query string) if this usage came from a request
91
+ */
70
92
  requestUrl?: string;
71
- /** Original request headers if this usage came from a request or handle.get */
93
+ /**
94
+ * Original request headers if this usage came from a request or handle.get
95
+ */
72
96
  requestHeaders?: string;
73
97
  }
74
98
 
@@ -110,9 +134,13 @@ export class GCTelemetryTracker {
110
134
  ) {}
111
135
 
112
136
  /**
113
- * Returns whether an event should be logged for a node that isn't active anymore. This does not apply to
114
- * tombstoned nodes for which an event is always logged. Some scenarios where we won't log:
137
+ * Returns whether an event should be logged for a node that isn't active anymore.
138
+ *
139
+ * @remarks
140
+ * This does not apply to tombstoned nodes for which an event is always logged. Some scenarios where we won't log:
141
+ *
115
142
  * 1. When a DDS is changed. The corresponding data store's event will be logged instead.
143
+ *
116
144
  * 2. An event is logged only once per container instance per event per node.
117
145
  */
118
146
  private shouldLogNonActiveEvent(
@@ -120,7 +148,7 @@ export class GCTelemetryTracker {
120
148
  usageType: NodeUsageType,
121
149
  nodeStateTracker: UnreferencedStateTracker,
122
150
  uniqueEventId: string,
123
- ) {
151
+ ): boolean {
124
152
  if (nodeStateTracker.state === UnreferencedState.Active) {
125
153
  return false;
126
154
  }
@@ -160,7 +188,7 @@ export class GCTelemetryTracker {
160
188
  isTombstoned,
161
189
  ...otherNodeUsageProps
162
190
  }: INodeUsageProps,
163
- ) {
191
+ ): void {
164
192
  // Note: For SubDataStore Load usage, trackedId will be the DataStore's id, not the full path in question.
165
193
  // This is necessary because the SubDataStore path may be unrecognized by GC (if suited for a custom request handler)
166
194
  const nodeStateTracker = this.getNodeStateTracker(trackedId);
@@ -265,7 +293,7 @@ export class GCTelemetryTracker {
265
293
  nodeType: GCNodeType,
266
294
  usageType: NodeUsageType,
267
295
  packagePath?: readonly string[],
268
- ) {
296
+ ): void {
269
297
  // This will log the following events:
270
298
  // GC_Tombstone_DataStore_Requested, GC_Tombstone_DataStore_Changed, GC_Tombstone_DataStore_Revived
271
299
  // GC_Tombstone_SubDataStore_Requested, GC_Tombstone_SubDataStore_Changed, GC_Tombstone_SubDataStore_Revived
@@ -312,7 +340,7 @@ export class GCTelemetryTracker {
312
340
  previousGCData: IGarbageCollectionData,
313
341
  explicitReferences: Map<string, string[]>,
314
342
  logger: ITelemetryLoggerExt,
315
- ) {
343
+ ): void {
316
344
  for (const [nodeId, currentOutboundRoutes] of Object.entries(currentGCData.gcNodes)) {
317
345
  const previousRoutes = previousGCData.gcNodes[nodeId] ?? [];
318
346
  const explicitRoutes = explicitReferences.get(nodeId) ?? [];
@@ -356,7 +384,7 @@ export class GCTelemetryTracker {
356
384
  * Log events that are pending in pendingEventsQueue. This is called after GC runs in the summarizer client
357
385
  * so that the state of an unreferenced node is updated.
358
386
  */
359
- public async logPendingEvents(logger: ITelemetryLoggerExt) {
387
+ public async logPendingEvents(logger: ITelemetryLoggerExt): Promise<void> {
360
388
  // Events sent come only from the summarizer client. In between summaries, events are pushed to a queue and at
361
389
  // summary time they are then logged.
362
390
  // Events generated:
@@ -8,7 +8,9 @@ import { validatePrecondition } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import { UnreferencedState } from "./gcDefinitions.js";
10
10
 
11
- /** A wrapper around common-utils Timer that requires the timeout when calling start/restart */
11
+ /**
12
+ * A wrapper around common-utils Timer that requires the timeout when calling start/restart
13
+ */
12
14
  class TimerWithNoDefaultTimeout extends Timer {
13
15
  constructor(private readonly callback: () => void) {
14
16
  // The default timeout/handlers will never be used since start/restart pass overrides below
@@ -17,7 +19,7 @@ class TimerWithNoDefaultTimeout extends Timer {
17
19
  });
18
20
  }
19
21
 
20
- start(timeoutMs: number) {
22
+ start(timeoutMs: number): void {
21
23
  super.start(timeoutMs, this.callback);
22
24
  }
23
25
 
@@ -26,9 +28,13 @@ class TimerWithNoDefaultTimeout extends Timer {
26
28
  }
27
29
  }
28
30
 
29
- /** The collection of UnreferencedStateTrackers for all unreferenced nodes. Ensures stopTracking is called when deleting */
31
+ /**
32
+ * The collection of UnreferencedStateTrackers for all unreferenced nodes. Ensures stopTracking is called when deleting
33
+ */
30
34
  export class UnreferencedStateTrackerMap extends Map<string, UnreferencedStateTracker> {
31
- /** Delete the given key, and stop tracking if that node was actually unreferenced */
35
+ /**
36
+ * Delete the given key, and stop tracking if that node was actually unreferenced
37
+ */
32
38
  delete(key: string): boolean {
33
39
  // Stop tracking so as to clear out any running timers.
34
40
  this.get(key)?.stopTracking();
@@ -47,22 +53,36 @@ export class UnreferencedStateTracker {
47
53
  return this._state;
48
54
  }
49
55
 
50
- /** Timer to indicate when an unreferenced object is considered Inactive */
56
+ /**
57
+ * Timer to indicate when an unreferenced object is considered Inactive
58
+ */
51
59
  private readonly inactiveTimer: TimerWithNoDefaultTimeout;
52
- /** Timer to indicate when an unreferenced object is Tombstone-Ready */
60
+ /**
61
+ * Timer to indicate when an unreferenced object is Tombstone-Ready
62
+ */
53
63
  private readonly tombstoneTimer: TimerWithNoDefaultTimeout;
54
- /** Timer to indicate when an unreferenced object is Sweep-Ready */
64
+ /**
65
+ * Timer to indicate when an unreferenced object is Sweep-Ready
66
+ */
55
67
  private readonly sweepTimer: TimerWithNoDefaultTimeout;
56
68
 
57
69
  constructor(
58
70
  public readonly unreferencedTimestampMs: number,
59
- /** The time after which node transitions to Inactive state. */
71
+ /**
72
+ * The time after which node transitions to Inactive state.
73
+ */
60
74
  private readonly inactiveTimeoutMs: number,
61
- /** The current reference timestamp used to track how long this node has been unreferenced for. */
75
+ /**
76
+ * The current reference timestamp used to track how long this node has been unreferenced for.
77
+ */
62
78
  currentReferenceTimestampMs: number,
63
- /** The time after which node transitions to TombstoneReady state; undefined if session expiry is disabled. */
79
+ /**
80
+ * The time after which node transitions to TombstoneReady state; undefined if session expiry is disabled.
81
+ */
64
82
  private readonly tombstoneTimeoutMs: number | undefined,
65
- /** The delay from TombstoneReady to SweepReady (only applies if tombstoneTimeoutMs is defined) */
83
+ /**
84
+ * The delay from TombstoneReady to SweepReady (only applies if tombstoneTimeoutMs is defined)
85
+ */
66
86
  private readonly sweepGracePeriodMs: number,
67
87
  ) {
68
88
  validatePrecondition(
@@ -106,8 +126,10 @@ export class UnreferencedStateTracker {
106
126
  this.updateTracking(currentReferenceTimestampMs);
107
127
  }
108
128
 
109
- /* Updates the unreferenced state based on the provided timestamp. */
110
- public updateTracking(currentReferenceTimestampMs: number) {
129
+ /**
130
+ * Updates the unreferenced state based on the provided timestamp.
131
+ */
132
+ public updateTracking(currentReferenceTimestampMs: number): void {
111
133
  const unreferencedDurationMs = currentReferenceTimestampMs - this.unreferencedTimestampMs;
112
134
 
113
135
  // Below we will set the appropriate timer (or none). Any running timers are superceded by the new currentReferenceTimestampMs
@@ -151,14 +173,16 @@ export class UnreferencedStateTracker {
151
173
  this.inactiveTimer.restart(this.inactiveTimeoutMs - unreferencedDurationMs);
152
174
  }
153
175
 
154
- private clearTimers() {
176
+ private clearTimers(): void {
155
177
  this.inactiveTimer.clear();
156
178
  this.tombstoneTimer.clear();
157
179
  this.sweepTimer.clear();
158
180
  }
159
181
 
160
- /** Stop tracking this node. Reset the unreferenced timers and state, if any. */
161
- public stopTracking() {
182
+ /**
183
+ * Stop tracking this node. Reset the unreferenced timers and state, if any.
184
+ */
185
+ public stopTracking(): void {
162
186
  this.clearTimers();
163
187
  this._state = UnreferencedState.Active;
164
188
  }
package/src/gc/index.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  export { GarbageCollector } from "./garbageCollection.js";
7
+ export { computeTombstoneTimeout } from "./gcConfigs.js";
7
8
  export {
8
9
  nextGCVersion,
9
10
  defaultInactiveTimeoutMs,
@@ -3,24 +3,18 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { EventEmitter } from "@fluid-internal/client-utils";
7
6
  import { performance } from "@fluid-internal/client-utils";
8
7
  import { IDeltaManagerFull } from "@fluidframework/container-definitions/internal";
9
8
  import { assert } from "@fluidframework/core-utils/internal";
10
- import {
11
- IDocumentMessage,
12
- ISequencedDocumentMessage,
13
- } from "@fluidframework/driver-definitions/internal";
9
+ import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
14
10
  import { isRuntimeMessage } from "@fluidframework/driver-utils/internal";
15
11
  import {
16
12
  ITelemetryLoggerExt,
17
13
  DataCorruptionError,
18
14
  DataProcessingError,
19
- createChildLogger,
20
15
  extractSafePropertiesFromMessage,
21
16
  } from "@fluidframework/telemetry-utils/internal";
22
17
 
23
- import { DeltaScheduler } from "./deltaScheduler.js";
24
18
  import { IBatchMetadata } from "./metadata.js";
25
19
  import { pkgVersion } from "./packageVersion.js";
26
20
 
@@ -31,46 +25,10 @@ type IRuntimeMessageMetadata =
31
25
  };
32
26
 
33
27
  /**
34
- * This class has the following responsibilities:
35
- *
36
- * 1. It tracks batches as we process ops and raises "batchBegin" and "batchEnd" events.
37
- * As part of it, it validates batch correctness (i.e. no system ops in the middle of batch)
38
- *
39
- * 2. It creates instance of ScheduleManagerCore that ensures we never start processing ops from batch
40
- * unless all ops of the batch are in.
41
- */
42
- export class ScheduleManager {
43
- private readonly deltaScheduler: DeltaScheduler;
44
-
45
- constructor(
46
- private readonly deltaManager: IDeltaManagerFull,
47
- private readonly emitter: EventEmitter,
48
- readonly getClientId: () => string | undefined,
49
- private readonly logger: ITelemetryLoggerExt,
50
- ) {
51
- this.deltaScheduler = new DeltaScheduler(
52
- this.deltaManager,
53
- createChildLogger({ logger: this.logger, namespace: "DeltaScheduler" }),
54
- );
55
- void new ScheduleManagerCore(deltaManager, getClientId, logger);
56
- }
57
-
58
- public batchBegin(message: ISequencedDocumentMessage) {
59
- this.emitter.emit("batchBegin", message);
60
- this.deltaScheduler.batchBegin(message);
61
- }
62
-
63
- public batchEnd(error: any | undefined, message: ISequencedDocumentMessage) {
64
- this.emitter.emit("batchEnd", error, message);
65
- this.deltaScheduler.batchEnd(message);
66
- }
67
- }
68
-
69
- /**
70
- * This class controls pausing and resuming of inbound queue to ensure that we never
71
- * start processing ops in a batch IF we do not have all ops in the batch.
28
+ * This class ensures that we aggregate a complete batch of incoming ops before processing them. It basically ensures
29
+ * that we never start processing ops in a batch IF we do not have all ops in the batch.
72
30
  */
73
- class ScheduleManagerCore {
31
+ export class InboundBatchAggregator {
74
32
  private pauseSequenceNumber: number | undefined;
75
33
  private currentBatchClientId: string | undefined;
76
34
  private localPaused = false;
@@ -82,38 +40,8 @@ class ScheduleManagerCore {
82
40
  private readonly getClientId: () => string | undefined,
83
41
  private readonly logger: ITelemetryLoggerExt,
84
42
  ) {
85
- // Listen for delta manager sends and add batch metadata to messages
86
- this.deltaManager.on("prepareSend", (messages: IDocumentMessage[]) => {
87
- if (messages.length === 0) {
88
- return;
89
- }
90
-
91
- // First message will have the batch flag set to true if doing a batched send
92
- const firstMessageMetadata = messages[0].metadata as IRuntimeMessageMetadata;
93
- if (!firstMessageMetadata?.batch) {
94
- return;
95
- }
96
-
97
- // If the batch contains only a single op, clear the batch flag.
98
- if (messages.length === 1) {
99
- delete firstMessageMetadata.batch;
100
- return;
101
- }
102
-
103
- // Set the batch flag to false on the last message to indicate the end of the send batch
104
- const lastMessage = messages[messages.length - 1];
105
- // TODO: It's not clear if this shallow clone is required, as opposed to just setting "batch" to false.
106
-
107
- lastMessage.metadata = { ...(lastMessage.metadata as any), batch: false };
108
- });
109
-
110
43
  // Listen for updates and peek at the inbound
111
- this.deltaManager.inbound.on("push", (message: ISequencedDocumentMessage) => {
112
- this.trackPending(message);
113
- });
114
-
115
- // Start with baseline - empty inbound queue.
116
- assert(!this.localPaused, 0x293 /* "initial state" */);
44
+ this.deltaManager.inbound.on("push", this.trackPending);
117
45
 
118
46
  const allPending = this.deltaManager.inbound.toArray();
119
47
  for (const pending of allPending) {
@@ -121,16 +49,21 @@ class ScheduleManagerCore {
121
49
  }
122
50
 
123
51
  // We are intentionally directly listening to the "op" to inspect system ops as well.
124
- // If we do not observe system ops, we are likely to hit 0x296 assert when system ops
52
+ // If we do not observe system ops, we are likely to hit an error when system ops
125
53
  // precedes start of incomplete batch.
126
- this.deltaManager.on("op", (message) => this.afterOpProcessing(message));
54
+ this.deltaManager.on("op", this.afterOpProcessing);
55
+ }
56
+
57
+ public dispose(): void {
58
+ this.deltaManager.off("op", this.afterOpProcessing);
59
+ this.deltaManager.inbound.off("push", this.trackPending);
127
60
  }
128
61
 
129
62
  /**
130
- * The only public function in this class - called when we processed an op,
131
- * to make decision if op processing should be paused or not after that.
63
+ * Callback for DeltaManager's "op" event, for us to make decision if op processing should
64
+ * be paused or not after that.
132
65
  */
133
- public afterOpProcessing(message: ISequencedDocumentMessage) {
66
+ private readonly afterOpProcessing = (message: ISequencedDocumentMessage): void => {
134
67
  assert(
135
68
  !this.localPaused,
136
69
  0x294 /* "can't have op processing paused if we are processing an op" */,
@@ -157,7 +90,7 @@ class ScheduleManagerCore {
157
90
  throw DataProcessingError.create(
158
91
  // Former assert 0x296
159
92
  "Incomplete batch",
160
- "ScheduleManager",
93
+ "InboundBatchAggregator",
161
94
  message,
162
95
  {
163
96
  type: message.type,
@@ -174,47 +107,12 @@ class ScheduleManagerCore {
174
107
  this.pauseQueue();
175
108
  }
176
109
  }
177
- }
178
-
179
- private pauseQueue() {
180
- assert(!this.localPaused, 0x297 /* "always called from resumed state" */);
181
- this.localPaused = true;
182
- this.timePaused = performance.now();
183
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
184
- this.deltaManager.inbound.pause();
185
- }
186
-
187
- private resumeQueue(startBatch: number, messageEndBatch: ISequencedDocumentMessage) {
188
- const endBatch = messageEndBatch.sequenceNumber;
189
- const duration = this.localPaused ? performance.now() - this.timePaused : undefined;
190
-
191
- this.batchCount++;
192
- if (this.batchCount % 1000 === 1) {
193
- this.logger.sendTelemetryEvent({
194
- eventName: "BatchStats",
195
- sequenceNumber: endBatch,
196
- length: endBatch - startBatch + 1,
197
- msnDistance: endBatch - messageEndBatch.minimumSequenceNumber,
198
- duration,
199
- batchCount: this.batchCount,
200
- interrupted: this.localPaused,
201
- });
202
- }
203
-
204
- // Return early if no change in value
205
- if (!this.localPaused) {
206
- return;
207
- }
208
-
209
- this.localPaused = false;
210
-
211
- this.deltaManager.inbound.resume();
212
- }
110
+ };
213
111
 
214
112
  /**
215
113
  * Called for each incoming op (i.e. inbound "push" notification)
216
114
  */
217
- private trackPending(message: ISequencedDocumentMessage) {
115
+ private readonly trackPending = (message: ISequencedDocumentMessage): void => {
218
116
  assert(
219
117
  this.deltaManager.inbound.length !== 0,
220
118
  0x298 /* "we have something in the queue that generates this event" */,
@@ -324,5 +222,40 @@ class ScheduleManagerCore {
324
222
  // Continuation of current batch. Do nothing
325
223
  assert(this.currentBatchClientId !== undefined, 0x2a1 /* "logic error" */);
326
224
  }
225
+ };
226
+
227
+ private pauseQueue(): void {
228
+ assert(!this.localPaused, 0x297 /* "always called from resumed state" */);
229
+ this.localPaused = true;
230
+ this.timePaused = performance.now();
231
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
232
+ this.deltaManager.inbound.pause();
233
+ }
234
+
235
+ private resumeQueue(startBatch: number, messageEndBatch: ISequencedDocumentMessage): void {
236
+ const endBatch = messageEndBatch.sequenceNumber;
237
+ const duration = this.localPaused ? performance.now() - this.timePaused : undefined;
238
+
239
+ this.batchCount++;
240
+ if (this.batchCount % 1000 === 1) {
241
+ this.logger.sendTelemetryEvent({
242
+ eventName: "BatchStats",
243
+ sequenceNumber: endBatch,
244
+ length: endBatch - startBatch + 1,
245
+ msnDistance: endBatch - messageEndBatch.minimumSequenceNumber,
246
+ duration,
247
+ batchCount: this.batchCount,
248
+ interrupted: this.localPaused,
249
+ });
250
+ }
251
+
252
+ // Return early if no change in value
253
+ if (!this.localPaused) {
254
+ return;
255
+ }
256
+
257
+ this.localPaused = false;
258
+
259
+ this.deltaManager.inbound.resume();
327
260
  }
328
261
  }
package/src/index.ts CHANGED
@@ -55,7 +55,6 @@ export {
55
55
  ISummaryCancellationToken,
56
56
  neverCancelledSummaryToken,
57
57
  Summarizer,
58
- SummarizerStopReason,
59
58
  SummaryCollection,
60
59
  EnqueueSummarizeResult,
61
60
  IAckSummaryResult,
@@ -75,7 +74,6 @@ export {
75
74
  ISubmitSummaryOptions,
76
75
  ISerializedElection,
77
76
  ISummarizeOptions,
78
- ISummarizerEvents,
79
77
  ISummarizerInternalsProvider,
80
78
  ISummarizerRuntime,
81
79
  ISummarizingWarning,
@@ -95,7 +93,6 @@ export {
95
93
  SubmitSummaryFailureData,
96
94
  SummaryStage,
97
95
  IRetriableFailureError,
98
- ISummarizeEventProps,
99
96
  IdCompressorMode,
100
97
  IDocumentSchema,
101
98
  DocumentSchemaValueType,
@@ -66,9 +66,13 @@ export enum ContainerMessageType {
66
66
  * This way stringified values can be compared.
67
67
  */
68
68
  interface TypedContainerRuntimeMessage<TType extends ContainerMessageType, TContents> {
69
- /** Type of the op, within the ContainerRuntime's domain */
69
+ /**
70
+ * Type of the op, within the ContainerRuntime's domain
71
+ */
70
72
  type: TType;
71
- /** Domain-specific contents, interpreted according to the type */
73
+ /**
74
+ * Domain-specific contents, interpreted according to the type
75
+ */
72
76
  contents: TContents;
73
77
  }
74
78
 
@@ -118,13 +122,16 @@ export type ContainerRuntimeDocumentSchemaMessage = TypedContainerRuntimeMessage
118
122
  * @internal
119
123
  */
120
124
  export interface UnknownContainerRuntimeMessage {
121
- /** Invalid type of the op, within the ContainerRuntime's domain. This value should never exist at runtime.
125
+ /**
126
+ * Invalid type of the op, within the ContainerRuntime's domain. This value should never exist at runtime.
122
127
  * This is useful for type narrowing but should never be used as an actual message type at runtime.
123
128
  * Actual value will not be "__unknown...", but the type `Exclude<string, ContainerMessageType>` is not supported.
124
129
  */
125
130
  type: "__unknown_container_message_type__never_use_as_value__";
126
131
 
127
- /** Domain-specific contents, but not decipherable by an unknown op. */
132
+ /**
133
+ * Domain-specific contents, but not decipherable by an unknown op.
134
+ */
128
135
  contents: unknown;
129
136
  }
130
137
 
@@ -160,7 +167,9 @@ export type LocalContainerRuntimeMessage =
160
167
  | UnknownContainerRuntimeMessage
161
168
  | ContainerRuntimeDocumentSchemaMessage;
162
169
 
163
- /** A {@link TypedContainerRuntimeMessage} that is being sent to the server from the container runtime. */
170
+ /**
171
+ * A {@link TypedContainerRuntimeMessage} that is being sent to the server from the container runtime.
172
+ */
164
173
  export type OutboundContainerRuntimeMessage =
165
174
  | ContainerRuntimeDataStoreOpMessage
166
175
  | OutboundContainerRuntimeAttachMessage
package/src/metadata.ts CHANGED
@@ -5,12 +5,16 @@
5
5
 
6
6
  import type { BatchId } from "./opLifecycle/index.js";
7
7
 
8
- /** Syntactic sugar for casting */
8
+ /**
9
+ * Syntactic sugar for casting
10
+ */
9
11
  export function asBatchMetadata(metadata: unknown): Partial<IBatchMetadata> | undefined {
10
12
  return metadata as Partial<IBatchMetadata> | undefined;
11
13
  }
12
14
 
13
- /** Syntactic sugar for casting */
15
+ /**
16
+ * Syntactic sugar for casting
17
+ */
14
18
  export function asEmptyBatchLocalOpMetadata(
15
19
  localOpMetadata: unknown,
16
20
  ): IEmptyBatchMetadata | undefined {
@@ -28,9 +32,13 @@ export interface IEmptyBatchMetadata {
28
32
  * Properties put on the op metadata object for batch tracking
29
33
  */
30
34
  export interface IBatchMetadata {
31
- /** Set on first/last messages of a multi-message batch, to true/false respectively */
35
+ /**
36
+ * Set on first/last messages of a multi-message batch, to true/false respectively
37
+ */
32
38
  batch?: boolean;
33
- /** Maybe set on first message of a batch, to the batchId generated when resubmitting (set/fixed on first resubmit) */
39
+ /**
40
+ * Maybe set on first message of a batch, to the batchId generated when resubmitting (set/fixed on first resubmit)
41
+ */
34
42
  batchId?: BatchId;
35
43
  }
36
44
 
@@ -21,7 +21,9 @@ export interface IBatchManagerOptions {
21
21
  */
22
22
  readonly canRebase: boolean;
23
23
 
24
- /** If true, don't compare batchID of incoming batches to this. e.g. ID Allocation Batch IDs should be ignored */
24
+ /**
25
+ * If true, don't compare batchID of incoming batches to this. e.g. ID Allocation Batch IDs should be ignored
26
+ */
25
27
  readonly ignoreBatchId?: boolean;
26
28
  }
27
29
 
@@ -30,10 +32,14 @@ export interface BatchSequenceNumbers {
30
32
  clientSequenceNumber?: number;
31
33
  }
32
34
 
33
- /** Type alias for the batchId stored in batch metadata */
35
+ /**
36
+ * Type alias for the batchId stored in batch metadata
37
+ */
34
38
  export type BatchId = string;
35
39
 
36
- /** Compose original client ID and client sequence number into BatchId to stamp on the message during reconnect */
40
+ /**
41
+ * Compose original client ID and client sequence number into BatchId to stamp on the message during reconnect
42
+ */
37
43
  export function generateBatchId(originalClientId: string, batchStartCsn: number): BatchId {
38
44
  return `${originalClientId}_[${batchStartCsn}]`;
39
45
  }
@@ -76,10 +82,10 @@ export class BatchManager {
76
82
  private batchContentSize = 0;
77
83
  private hasReentrantOps = false;
78
84
 
79
- public get length() {
85
+ public get length(): number {
80
86
  return this.pendingBatch.length;
81
87
  }
82
- public get contentSizeInBytes() {
88
+ public get contentSizeInBytes(): number {
83
89
  return this.batchContentSize;
84
90
  }
85
91
 
@@ -133,7 +139,7 @@ export class BatchManager {
133
139
  return true;
134
140
  }
135
141
 
136
- public get empty() {
142
+ public get empty(): boolean {
137
143
  return this.pendingBatch.length === 0;
138
144
  }
139
145