@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
@@ -32,11 +32,17 @@ export interface IGarbageCollectionState {
32
32
  * The GC data that is read from a snapshot. It contains the Garbage CollectionState state and tombstone state.
33
33
  */
34
34
  export interface IGarbageCollectionSnapshotData {
35
- /** The garbage collection state. It is a list of nodes in the container and their GC data. */
35
+ /**
36
+ * The garbage collection state. It is a list of nodes in the container and their GC data.
37
+ */
36
38
  gcState: IGarbageCollectionState | undefined;
37
- /** A list of nodes that have been tombstoned by GC. */
39
+ /**
40
+ * A list of nodes that have been tombstoned by GC.
41
+ */
38
42
  tombstones: string[] | undefined;
39
- /** A list of nodes that have been deleted by GC. */
43
+ /**
44
+ * A list of nodes that have been deleted by GC.
45
+ */
40
46
  deletedNodes: string[] | undefined;
41
47
  }
42
48
 
@@ -45,10 +51,16 @@ export interface IGarbageCollectionSnapshotData {
45
51
  * Legacy GC details from when the GC details were written at the data store's summary tree.
46
52
  */
47
53
  export interface IGarbageCollectionSummaryDetailsLegacy {
48
- /** A list of routes to Fluid objects that are used in this node. */
54
+ /**
55
+ * A list of routes to Fluid objects that are used in this node.
56
+ */
49
57
  usedRoutes?: string[];
50
- /** The GC data of this node. */
58
+ /**
59
+ * The GC data of this node.
60
+ */
51
61
  gcData?: IGarbageCollectionData;
52
- /** If this node is unreferenced, the time when it was marked as such. */
62
+ /**
63
+ * If this node is unreferenced, the time when it was marked as such.
64
+ */
53
65
  unrefTimestamp?: number;
54
66
  }
@@ -16,6 +16,7 @@ import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils/in
16
16
 
17
17
  import { IRefreshSummaryResult } from "../summary/index.js";
18
18
 
19
+ // eslint-disable-next-line import/no-deprecated
19
20
  import { IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
20
21
  import { generateSortedGCState } from "./gcHelpers.js";
21
22
  import {
@@ -61,7 +62,9 @@ export class GCSummaryStateTracker {
61
62
  /**
62
63
  * Called during GC initialization. Initialize the latest summary data from the base snapshot data.
63
64
  */
64
- public initializeBaseState(baseSnapshotData: IGarbageCollectionSnapshotData | undefined) {
65
+ public initializeBaseState(
66
+ baseSnapshotData: IGarbageCollectionSnapshotData | undefined,
67
+ ): void {
65
68
  if (baseSnapshotData === undefined) {
66
69
  return;
67
70
  }
@@ -96,7 +99,7 @@ export class GCSummaryStateTracker {
96
99
  // Serialize and write deleted nodes, if any. This is done irrespective of whether sweep is enabled or not so
97
100
  // to identify deleted nodes' usage.
98
101
  const serializedDeletedNodes =
99
- deletedNodes.size > 0 ? JSON.stringify(Array.from(deletedNodes).sort()) : undefined;
102
+ deletedNodes.size > 0 ? JSON.stringify([...deletedNodes].sort()) : undefined;
100
103
  // Serialize and write tombstones, if any.
101
104
  const serializedTombstones =
102
105
  tombstones.length > 0 ? JSON.stringify(tombstones.sort()) : undefined;
@@ -228,7 +231,8 @@ export class GCSummaryStateTracker {
228
231
  /**
229
232
  * Called to update the state from a GC run's stats. Used to update the count of data stores whose state updated.
230
233
  */
231
- public updateStateFromGCRunStats(stats: IGCStats) {
234
+ // eslint-disable-next-line import/no-deprecated
235
+ public updateStateFromGCRunStats(stats: IGCStats): void {
232
236
  this.updatedDSCountSinceLastSummary += stats.updatedDataStoreCount;
233
237
  }
234
238
  }
@@ -14,10 +14,13 @@ import {
14
14
  } from "@fluidframework/telemetry-utils/internal";
15
15
 
16
16
  import { RuntimeHeaderData } from "../containerRuntime.js";
17
+ // eslint-disable-next-line import/no-deprecated
17
18
  import { ICreateContainerMetadata } from "../summary/index.js";
18
19
 
19
20
  import {
21
+ // eslint-disable-next-line import/no-deprecated
20
22
  GCFeatureMatrix,
23
+ // eslint-disable-next-line import/no-deprecated
21
24
  GCNodeType,
22
25
  IGarbageCollectorConfigs,
23
26
  UnreferencedState,
@@ -26,7 +29,9 @@ import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
26
29
 
27
30
  type NodeUsageType = "Changed" | "Loaded" | "Revived" | "Realized";
28
31
 
29
- /** Properties that are common to IUnreferencedEventProps and INodeUsageProps */
32
+ /**
33
+ * Properties that are common to IUnreferencedEventProps and INodeUsageProps
34
+ */
30
35
  interface ICommonProps {
31
36
  usageType: NodeUsageType;
32
37
  completedGCRuns: number;
@@ -36,39 +41,64 @@ interface ICommonProps {
36
41
  additionalProps?: ITelemetryPropertiesExt;
37
42
  }
38
43
 
39
- /** The event that is logged when unreferenced node is used after a certain time. */
44
+ /**
45
+ * The event that is logged when unreferenced node is used after a certain time.
46
+ */
47
+ // eslint-disable-next-line import/no-deprecated
40
48
  interface IUnreferencedEventProps extends ICreateContainerMetadata, ICommonProps {
41
- /** The id that GC uses to track the node. May or may not match id */
49
+ /**
50
+ * The id that GC uses to track the node. May or may not match id
51
+ */
42
52
  trackedId: string;
43
53
  state: UnreferencedState;
44
- /** The full path (in GC Path format) to the node in question */
54
+ /**
55
+ * The full path (in GC Path format) to the node in question
56
+ */
45
57
  id: Tagged<string>;
46
58
  fromId?: Tagged<string>;
59
+ // eslint-disable-next-line import/no-deprecated
47
60
  type: GCNodeType;
48
61
  unrefTime: number;
49
62
  age: number;
50
63
  // Expanding GC feature matrix. Without doing this, the configs cannot be logged in telemetry directly.
51
64
  gcConfigs: Omit<IGarbageCollectorConfigs, "persistedGcFeatureMatrix"> & {
65
+ // eslint-disable-next-line import/no-deprecated
52
66
  [K in keyof GCFeatureMatrix]: GCFeatureMatrix[K];
53
67
  };
54
68
  timeout?: number;
55
69
  }
56
70
 
57
- /** Properties passed to nodeUsed function when a node is used. */
71
+ /**
72
+ * Properties passed to nodeUsed function when a node is used.
73
+ */
58
74
  interface INodeUsageProps extends ICommonProps {
59
- /** The full path (in GC Path format) to the node in question */
75
+ /**
76
+ * The full path (in GC Path format) to the node in question
77
+ */
60
78
  id: string;
61
- /** Latest timestamp received from the server, as a baseline for computing GC state/age */
79
+ /**
80
+ * Latest timestamp received from the server, as a baseline for computing GC state/age
81
+ */
62
82
  currentReferenceTimestampMs: number;
63
- /** The package path of the node. This may not be available if the node hasn't been loaded yet */
83
+ /**
84
+ * The package path of the node. This may not be available if the node hasn't been loaded yet
85
+ */
64
86
  packagePath: readonly string[] | undefined;
65
- /** In case of Revived - what node added the reference? */
87
+ /**
88
+ * In case of Revived - what node added the reference?
89
+ */
66
90
  fromId?: string;
67
- /** In case of Revived - was it revived due to autorecovery? */
91
+ /**
92
+ * In case of Revived - was it revived due to autorecovery?
93
+ */
68
94
  autorecovery?: true;
69
- /** URL (including query string) if this usage came from a request */
95
+ /**
96
+ * URL (including query string) if this usage came from a request
97
+ */
70
98
  requestUrl?: string;
71
- /** Original request headers if this usage came from a request or handle.get */
99
+ /**
100
+ * Original request headers if this usage came from a request or handle.get
101
+ */
72
102
  requestHeaders?: string;
73
103
  }
74
104
 
@@ -99,7 +129,9 @@ export class GCTelemetryTracker {
99
129
  private readonly mc: MonitoringContext,
100
130
  private readonly configs: IGarbageCollectorConfigs,
101
131
  private readonly isSummarizerClient: boolean,
132
+ // eslint-disable-next-line import/no-deprecated
102
133
  private readonly createContainerMetadata: ICreateContainerMetadata,
134
+ // eslint-disable-next-line import/no-deprecated
103
135
  private readonly getNodeType: (nodeId: string) => GCNodeType,
104
136
  private readonly getNodeStateTracker: (
105
137
  nodeId: string,
@@ -110,27 +142,34 @@ export class GCTelemetryTracker {
110
142
  ) {}
111
143
 
112
144
  /**
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:
145
+ * Returns whether an event should be logged for a node that isn't active anymore.
146
+ *
147
+ * @remarks
148
+ * This does not apply to tombstoned nodes for which an event is always logged. Some scenarios where we won't log:
149
+ *
115
150
  * 1. When a DDS is changed. The corresponding data store's event will be logged instead.
151
+ *
116
152
  * 2. An event is logged only once per container instance per event per node.
117
153
  */
118
154
  private shouldLogNonActiveEvent(
155
+ // eslint-disable-next-line import/no-deprecated
119
156
  nodeType: GCNodeType,
120
157
  usageType: NodeUsageType,
121
158
  nodeStateTracker: UnreferencedStateTracker,
122
159
  uniqueEventId: string,
123
- ) {
160
+ ): boolean {
124
161
  if (nodeStateTracker.state === UnreferencedState.Active) {
125
162
  return false;
126
163
  }
127
164
 
165
+ // eslint-disable-next-line import/no-deprecated
128
166
  if (nodeType === GCNodeType.Other) {
129
167
  return false;
130
168
  }
131
169
 
132
170
  // For sub data store (DDS) nodes, if they are changed, its data store will also be changed,
133
171
  // so skip logging to make the telemetry less noisy.
172
+ // eslint-disable-next-line import/no-deprecated
134
173
  if (nodeType === GCNodeType.SubDataStore && usageType === "Changed") {
135
174
  return false;
136
175
  }
@@ -160,7 +199,7 @@ export class GCTelemetryTracker {
160
199
  isTombstoned,
161
200
  ...otherNodeUsageProps
162
201
  }: INodeUsageProps,
163
- ) {
202
+ ): void {
164
203
  // Note: For SubDataStore Load usage, trackedId will be the DataStore's id, not the full path in question.
165
204
  // This is necessary because the SubDataStore path may be unrecognized by GC (if suited for a custom request handler)
166
205
  const nodeStateTracker = this.getNodeStateTracker(trackedId);
@@ -168,17 +207,21 @@ export class GCTelemetryTracker {
168
207
 
169
208
  const timeout = (() => {
170
209
  switch (nodeStateTracker?.state) {
171
- case UnreferencedState.Inactive:
210
+ case UnreferencedState.Inactive: {
172
211
  return this.configs.inactiveTimeoutMs;
173
- case UnreferencedState.TombstoneReady:
212
+ }
213
+ case UnreferencedState.TombstoneReady: {
174
214
  return this.configs.tombstoneTimeoutMs;
175
- case UnreferencedState.SweepReady:
215
+ }
216
+ case UnreferencedState.SweepReady: {
176
217
  return (
177
218
  this.configs.tombstoneTimeoutMs &&
178
219
  this.configs.tombstoneTimeoutMs + this.configs.sweepGracePeriodMs
179
220
  );
180
- default:
221
+ }
222
+ default: {
181
223
  return undefined;
224
+ }
182
225
  }
183
226
  })();
184
227
  const { persistedGcFeatureMatrix, ...configs } = this.configs;
@@ -187,9 +230,9 @@ export class GCTelemetryTracker {
187
230
  type: nodeType,
188
231
  unrefTime: nodeStateTracker?.unreferencedTimestampMs ?? -1,
189
232
  age:
190
- nodeStateTracker !== undefined
191
- ? currentReferenceTimestampMs - nodeStateTracker.unreferencedTimestampMs
192
- : -1,
233
+ nodeStateTracker === undefined
234
+ ? -1
235
+ : currentReferenceTimestampMs - nodeStateTracker.unreferencedTimestampMs,
193
236
  timeout,
194
237
  isTombstoned,
195
238
  ...tagCodeArtifacts({ id: untaggedId, fromId: untaggedFromId }),
@@ -262,10 +305,11 @@ export class GCTelemetryTracker {
262
305
  */
263
306
  private logTombstoneUsageTelemetry(
264
307
  unrefEventProps: Omit<IUnreferencedEventProps, "state" | "usageType">,
308
+ // eslint-disable-next-line import/no-deprecated
265
309
  nodeType: GCNodeType,
266
310
  usageType: NodeUsageType,
267
311
  packagePath?: readonly string[],
268
- ) {
312
+ ): void {
269
313
  // This will log the following events:
270
314
  // GC_Tombstone_DataStore_Requested, GC_Tombstone_DataStore_Changed, GC_Tombstone_DataStore_Revived
271
315
  // GC_Tombstone_SubDataStore_Requested, GC_Tombstone_SubDataStore_Changed, GC_Tombstone_SubDataStore_Revived
@@ -312,7 +356,7 @@ export class GCTelemetryTracker {
312
356
  previousGCData: IGarbageCollectionData,
313
357
  explicitReferences: Map<string, string[]>,
314
358
  logger: ITelemetryLoggerExt,
315
- ) {
359
+ ): void {
316
360
  for (const [nodeId, currentOutboundRoutes] of Object.entries(currentGCData.gcNodes)) {
317
361
  const previousRoutes = previousGCData.gcNodes[nodeId] ?? [];
318
362
  const explicitRoutes = explicitReferences.get(nodeId) ?? [];
@@ -329,6 +373,7 @@ export class GCTelemetryTracker {
329
373
  for (const route of currentOutboundRoutes) {
330
374
  const nodeType = this.getNodeType(route);
331
375
  if (
376
+ // eslint-disable-next-line import/no-deprecated
332
377
  (nodeType === GCNodeType.DataStore || nodeType === GCNodeType.Blob) &&
333
378
  !nodeId.startsWith(route) &&
334
379
  !previousRoutes.includes(route) &&
@@ -356,7 +401,7 @@ export class GCTelemetryTracker {
356
401
  * Log events that are pending in pendingEventsQueue. This is called after GC runs in the summarizer client
357
402
  * so that the state of an unreferenced node is updated.
358
403
  */
359
- public async logPendingEvents(logger: ITelemetryLoggerExt) {
404
+ public async logPendingEvents(logger: ITelemetryLoggerExt): Promise<void> {
360
405
  // Events sent come only from the summarizer client. In between summaries, events are pushed to a queue and at
361
406
  // summary time they are then logged.
362
407
  // Events generated:
@@ -383,10 +428,8 @@ export class GCTelemetryTracker {
383
428
  const active =
384
429
  nodeStateTracker === undefined || nodeStateTracker.state === UnreferencedState.Active;
385
430
  if ((usageType === "Revived") === active) {
386
- const pkg = await this.getNodePackagePath(eventProps.id.value);
387
- const fromPkg = eventProps.fromId
388
- ? await this.getNodePackagePath(eventProps.fromId.value)
389
- : undefined;
431
+ const pkg = await this.getNodePackagePath(id.value);
432
+ const fromPkg = fromId ? await this.getNodePackagePath(fromId.value) : undefined;
390
433
  const event = {
391
434
  eventName: `${state}Object_${usageType}`,
392
435
  id,
@@ -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,