@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-runtime",
3
- "version": "2.13.0",
3
+ "version": "2.20.0",
4
4
  "description": "Fluid container runtime",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -63,16 +63,6 @@
63
63
  "default": "./dist/deltaScheduler.js"
64
64
  }
65
65
  },
66
- "./internal/test/scheduleManager": {
67
- "import": {
68
- "types": "./lib/scheduleManager.d.ts",
69
- "default": "./lib/scheduleManager.js"
70
- },
71
- "require": {
72
- "types": "./dist/scheduleManager.d.ts",
73
- "default": "./dist/scheduleManager.js"
74
- }
75
- },
76
66
  "./internal/test/blobManager": {
77
67
  "import": {
78
68
  "types": "./lib/blobManager/index.d.ts",
@@ -129,18 +119,18 @@
129
119
  "temp-directory": "nyc/.nyc_output"
130
120
  },
131
121
  "dependencies": {
132
- "@fluid-internal/client-utils": "~2.13.0",
133
- "@fluidframework/container-definitions": "~2.13.0",
134
- "@fluidframework/container-runtime-definitions": "~2.13.0",
135
- "@fluidframework/core-interfaces": "~2.13.0",
136
- "@fluidframework/core-utils": "~2.13.0",
137
- "@fluidframework/datastore": "~2.13.0",
138
- "@fluidframework/driver-definitions": "~2.13.0",
139
- "@fluidframework/driver-utils": "~2.13.0",
140
- "@fluidframework/id-compressor": "~2.13.0",
141
- "@fluidframework/runtime-definitions": "~2.13.0",
142
- "@fluidframework/runtime-utils": "~2.13.0",
143
- "@fluidframework/telemetry-utils": "~2.13.0",
122
+ "@fluid-internal/client-utils": "~2.20.0",
123
+ "@fluidframework/container-definitions": "~2.20.0",
124
+ "@fluidframework/container-runtime-definitions": "~2.20.0",
125
+ "@fluidframework/core-interfaces": "~2.20.0",
126
+ "@fluidframework/core-utils": "~2.20.0",
127
+ "@fluidframework/datastore": "~2.20.0",
128
+ "@fluidframework/driver-definitions": "~2.20.0",
129
+ "@fluidframework/driver-utils": "~2.20.0",
130
+ "@fluidframework/id-compressor": "~2.20.0",
131
+ "@fluidframework/runtime-definitions": "~2.20.0",
132
+ "@fluidframework/runtime-utils": "~2.20.0",
133
+ "@fluidframework/telemetry-utils": "~2.20.0",
144
134
  "@tylerbu/sorted-btree-es6": "^1.8.0",
145
135
  "double-ended-queue": "^2.1.0-0",
146
136
  "lz4js": "^0.2.0",
@@ -149,18 +139,19 @@
149
139
  "devDependencies": {
150
140
  "@arethetypeswrong/cli": "^0.17.1",
151
141
  "@biomejs/biome": "~1.9.3",
152
- "@fluid-internal/mocha-test-setup": "~2.13.0",
153
- "@fluid-private/stochastic-test-utils": "~2.13.0",
154
- "@fluid-private/test-pairwise-generator": "~2.13.0",
142
+ "@fluid-internal/mocha-test-setup": "~2.20.0",
143
+ "@fluid-private/stochastic-test-utils": "~2.20.0",
144
+ "@fluid-private/test-pairwise-generator": "~2.20.0",
155
145
  "@fluid-tools/benchmark": "^0.50.0",
156
146
  "@fluid-tools/build-cli": "^0.51.0",
157
147
  "@fluidframework/build-common": "^2.0.3",
158
148
  "@fluidframework/build-tools": "^0.51.0",
159
- "@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.12.0",
149
+ "@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.13.0",
160
150
  "@fluidframework/eslint-config-fluid": "^5.6.0",
161
- "@fluidframework/test-runtime-utils": "~2.13.0",
151
+ "@fluidframework/test-runtime-utils": "~2.20.0",
162
152
  "@microsoft/api-extractor": "7.47.8",
163
153
  "@types/double-ended-queue": "^2.1.0",
154
+ "@types/lz4js": "^0.2.0",
164
155
  "@types/mocha": "^10.0.10",
165
156
  "@types/node": "^18.19.0",
166
157
  "@types/sinon": "^17.0.3",
@@ -179,7 +170,29 @@
179
170
  "typescript": "~5.4.5"
180
171
  },
181
172
  "typeValidation": {
182
- "broken": {},
173
+ "broken": {
174
+ "Class_ContainerRuntime": {
175
+ "backCompat": false
176
+ },
177
+ "Class_DocumentsSchemaController": {
178
+ "forwardCompat": false
179
+ },
180
+ "ClassStatics_ContainerRuntime": {
181
+ "backCompat": false
182
+ },
183
+ "TypeAlias_SummarizerStopReason": {
184
+ "backCompat": false,
185
+ "forwardCompat": false
186
+ },
187
+ "Interface_ISummarizeEventProps": {
188
+ "backCompat": false,
189
+ "forwardCompat": false
190
+ },
191
+ "Interface_ISummarizerEvents": {
192
+ "backCompat": false,
193
+ "forwardCompat": false
194
+ }
195
+ },
183
196
  "entrypoint": "legacy"
184
197
  },
185
198
  "scripts": {
@@ -198,7 +211,7 @@
198
211
  "build:test": "npm run build:test:esm && npm run build:test:cjs",
199
212
  "build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
200
213
  "build:test:esm": "tsc --project ./src/test/tsconfig.json",
201
- "check:are-the-types-wrong": "attw --pack . --exclude-entrypoints ./internal/test/containerRuntime ./internal/test/deltaScheduler ./internal/test/scheduleManager ./internal/test/blobManager ./internal/test/summary ./internal/test/gc",
214
+ "check:are-the-types-wrong": "attw --pack . --exclude-entrypoints ./internal/test/containerRuntime ./internal/test/deltaScheduler ./internal/test/blobManager ./internal/test/summary ./internal/test/gc",
202
215
  "check:biome": "biome check .",
203
216
  "check:exports": "concurrently \"npm:check:exports:*\"",
204
217
  "check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
@@ -36,41 +36,38 @@ export class BatchTracker {
36
36
  this.trackedBatchCount++;
37
37
  });
38
38
 
39
- this.batchEventEmitter.on(
40
- "batchEnd",
41
- (error: any | undefined, message: BatchTrackerMessage) => {
42
- assert(
43
- this.startBatchSequenceNumber !== undefined &&
44
- this.batchProcessingStartTimeStamp !== undefined,
45
- 0x2ba /* "batchBegin must fire before batchEnd" */,
46
- );
39
+ this.batchEventEmitter.on("batchEnd", (error: unknown, message: BatchTrackerMessage) => {
40
+ assert(
41
+ this.startBatchSequenceNumber !== undefined &&
42
+ this.batchProcessingStartTimeStamp !== undefined,
43
+ 0x2ba /* "batchBegin must fire before batchEnd" */,
44
+ );
47
45
 
48
- const length = message.sequenceNumber - this.startBatchSequenceNumber + 1;
49
- if (length >= batchLengthThreshold) {
50
- this.logger.sendPerformanceEvent({
51
- eventName: "LengthTooBig",
52
- length,
53
- threshold: batchLengthThreshold,
54
- batchEndSequenceNumber: message.sequenceNumber,
55
- duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
56
- batchError: error !== undefined,
57
- });
58
- }
46
+ const length = message.sequenceNumber - this.startBatchSequenceNumber + 1;
47
+ if (length >= batchLengthThreshold) {
48
+ this.logger.sendPerformanceEvent({
49
+ eventName: "LengthTooBig",
50
+ length,
51
+ threshold: batchLengthThreshold,
52
+ batchEndSequenceNumber: message.sequenceNumber,
53
+ duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
54
+ batchError: error !== undefined,
55
+ });
56
+ }
59
57
 
60
- if (this.trackedBatchCount % batchCountSamplingRate === 0) {
61
- this.logger.sendPerformanceEvent({
62
- eventName: "Length",
63
- length,
64
- samplingRate: batchCountSamplingRate,
65
- batchEndSequenceNumber: message.sequenceNumber,
66
- duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
67
- });
68
- }
58
+ if (this.trackedBatchCount % batchCountSamplingRate === 0) {
59
+ this.logger.sendPerformanceEvent({
60
+ eventName: "Length",
61
+ length,
62
+ samplingRate: batchCountSamplingRate,
63
+ batchEndSequenceNumber: message.sequenceNumber,
64
+ duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
65
+ });
66
+ }
69
67
 
70
- this.startBatchSequenceNumber = undefined;
71
- this.batchProcessingStartTimeStamp = undefined;
72
- },
73
- );
68
+ this.startBatchSequenceNumber = undefined;
69
+ this.batchProcessingStartTimeStamp = undefined;
70
+ });
74
71
  }
75
72
  }
76
73
 
@@ -87,4 +84,5 @@ export const BindBatchTracker = (
87
84
  logger: ITelemetryLoggerExt,
88
85
  batchLengthThreshold: number = 1000,
89
86
  batchCountSamplingRate: number = 1000,
90
- ) => new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);
87
+ ): BatchTracker =>
88
+ new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);
@@ -80,14 +80,14 @@ export class BlobHandle extends FluidHandleBase<ArrayBufferLike> {
80
80
  this.absolutePath = generateHandleContextPath(path, this.routeContext);
81
81
  }
82
82
 
83
- public attachGraph() {
83
+ public attachGraph(): void {
84
84
  if (!this.attached) {
85
85
  this.attached = true;
86
86
  this.onAttachGraph?.();
87
87
  }
88
88
  }
89
89
 
90
- public bind(handle: IFluidHandleInternal) {
90
+ public bind(handle: IFluidHandleInternal): void {
91
91
  throw new Error("Cannot bind to blob handle");
92
92
  }
93
93
  }
@@ -96,7 +96,7 @@ export class BlobHandle extends FluidHandleBase<ArrayBufferLike> {
96
96
  // the contract explicit and reduces the amount of mocking required for tests.
97
97
  export type IBlobManagerRuntime = Pick<
98
98
  IContainerRuntime,
99
- "attachState" | "connected" | "baseLogger" | "clientDetails"
99
+ "attachState" | "connected" | "baseLogger" | "clientDetails" | "disposed"
100
100
  > &
101
101
  TypedEventEmitter<IContainerRuntimeEvents>;
102
102
 
@@ -329,7 +329,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
329
329
  );
330
330
  }
331
331
 
332
- private createAbortError(pending?: PendingBlob) {
332
+ private createAbortError(pending?: PendingBlob): LoggingError {
333
333
  return new LoggingError("uploadBlob aborted", {
334
334
  acked: pending?.acked,
335
335
  uploadTime: pending?.uploadTime,
@@ -370,8 +370,17 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
370
370
  return PerformanceEvent.timedExecAsync(
371
371
  this.mc.logger,
372
372
  { eventName: "AttachmentReadBlob", id: storageId },
373
- async () => {
374
- return this.getStorage().readBlob(storageId);
373
+ async (event) => {
374
+ return this.getStorage()
375
+ .readBlob(storageId)
376
+ .catch((error) => {
377
+ if (this.runtime.disposed) {
378
+ // If the runtime is disposed, this is not an error we care to track, it's expected behavior.
379
+ event.cancel({ category: "generic" });
380
+ }
381
+
382
+ throw error;
383
+ });
375
384
  },
376
385
  { end: true, cancel: "error" },
377
386
  );
@@ -445,7 +454,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
445
454
  };
446
455
  this.pendingBlobs.set(localId, pendingEntry);
447
456
 
448
- const abortListener = () => {
457
+ const abortListener = (): void => {
449
458
  if (!pendingEntry.acked) {
450
459
  pendingEntry.handleP.reject(this.createAbortError(pendingEntry));
451
460
  }
@@ -490,6 +499,8 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
490
499
  (error) => {
491
500
  this.mc.logger.sendTelemetryEvent({
492
501
  eventName: "UploadBlobReject",
502
+ // TODO: better typing
503
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
493
504
  error,
494
505
  localId,
495
506
  });
@@ -506,11 +517,11 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
506
517
  * Set up a mapping in the redirect table from fromId to toId. Also, notify the runtime that a reference is added
507
518
  * which is required for GC.
508
519
  */
509
- private setRedirection(fromId: string, toId: string | undefined) {
520
+ private setRedirection(fromId: string, toId: string | undefined): void {
510
521
  this.redirectTable.set(fromId, toId);
511
522
  }
512
523
 
513
- private deletePendingBlobMaybe(id: string) {
524
+ private deletePendingBlobMaybe(id: string): void {
514
525
  if (this.pendingBlobs.has(id)) {
515
526
  const entry = this.pendingBlobs.get(id);
516
527
  if (entry?.attached && entry?.acked) {
@@ -519,13 +530,16 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
519
530
  }
520
531
  }
521
532
 
522
- private deletePendingBlob(id: string) {
533
+ private deletePendingBlob(id: string): void {
523
534
  if (this.pendingBlobs.delete(id) && !this.hasPendingBlobs) {
524
535
  this.emit("noPendingBlobs");
525
536
  }
526
537
  }
527
538
 
528
- private onUploadResolve(localId: string, response: ICreateBlobResponseWithTTL) {
539
+ private onUploadResolve(
540
+ localId: string,
541
+ response: ICreateBlobResponseWithTTL,
542
+ ): ICreateBlobResponseWithTTL | undefined {
529
543
  const entry = this.pendingBlobs.get(localId);
530
544
  if (entry === undefined && this.pendingStashedBlobs.has(localId)) {
531
545
  // The blob was already processed and deleted. This can happen if the blob was reuploaded by
@@ -587,7 +601,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
587
601
  * submitted to runtime while disconnected.
588
602
  * @param metadata - op metadata containing storage and/or local IDs
589
603
  */
590
- public reSubmit(metadata: Record<string, unknown> | undefined) {
604
+ public reSubmit(metadata: Record<string, unknown> | undefined): void {
591
605
  assert(!!metadata, 0x38b /* Resubmitted ops must have metadata */);
592
606
  const { localId, blobId }: { localId?: string; blobId?: string } = metadata;
593
607
  assert(localId !== undefined, 0x50d /* local ID not available on reSubmit */);
@@ -604,7 +618,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
604
618
  return this.sendBlobAttachOp(localId, blobId);
605
619
  }
606
620
 
607
- public processBlobAttachMessage(message: ISequencedMessageEnvelope, local: boolean) {
621
+ public processBlobAttachMessage(message: ISequencedMessageEnvelope, local: boolean): void {
608
622
  const localId = (message.metadata as IBlobMetadata | undefined)?.localId;
609
623
  const blobId = (message.metadata as IBlobMetadata | undefined)?.blobId;
610
624
 
@@ -694,16 +708,20 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
694
708
 
695
709
  /**
696
710
  * Delete blobs with the given routes from the redirect table.
711
+ *
712
+ * @remarks
697
713
  * The routes are GC nodes paths of format -`/<blobManagerBasePath>/<blobId>`. The blob ids are all local ids.
698
714
  * Deleting the blobs involves 2 steps:
715
+ *
699
716
  * 1. The redirect table entry for the local ids are deleted.
717
+ *
700
718
  * 2. If the storage ids corresponding to the deleted local ids are not in-use anymore, the redirect table entries
701
719
  * for the storage ids are deleted as well.
702
720
  *
703
721
  * Note that this does not delete the blobs from storage service immediately. Deleting the blobs from redirect table
704
722
  * will remove them the next summary. The service would them delete them some time in the future.
705
723
  */
706
- private deleteBlobsFromRedirectTable(blobRoutes: readonly string[]) {
724
+ private deleteBlobsFromRedirectTable(blobRoutes: readonly string[]): void {
707
725
  if (blobRoutes.length === 0) {
708
726
  return;
709
727
  }
@@ -753,7 +771,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
753
771
  * Verifies that the blob with given id is not deleted, i.e., it has not been garbage collected. If the blob is GC'd,
754
772
  * log an error and throw if necessary.
755
773
  */
756
- private verifyBlobNotDeleted(blobId: string) {
774
+ private verifyBlobNotDeleted(blobId: string): void {
757
775
  if (!this.isBlobDeleted(getGCNodePathFromBlobId(blobId))) {
758
776
  return;
759
777
  }
@@ -774,7 +792,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
774
792
  throw error;
775
793
  }
776
794
 
777
- public setRedirectTable(table: Map<string, string>) {
795
+ public setRedirectTable(table: Map<string, string>): void {
778
796
  assert(
779
797
  this.runtime.attachState === AttachState.Detached,
780
798
  0x252 /* "redirect table can only be set in detached container" */,
@@ -841,7 +859,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
841
859
  },
842
860
  { once: true },
843
861
  );
844
- const onBlobAttached = (attachedEntry) => {
862
+ const onBlobAttached = (attachedEntry): void => {
845
863
  if (attachedEntry === entry) {
846
864
  this.off("blobAttached", onBlobAttached);
847
865
  resolve();
@@ -891,12 +909,13 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
891
909
  * This path must match the path of the blob handle returned by the createBlob API because blobs are marked
892
910
  * referenced by storing these handles in a referenced DDS.
893
911
  */
894
- const getGCNodePathFromBlobId = (blobId: string) => `/${blobManagerBasePath}/${blobId}`;
912
+ const getGCNodePathFromBlobId = (blobId: string): string =>
913
+ `/${blobManagerBasePath}/${blobId}`;
895
914
 
896
915
  /**
897
916
  * For a given GC node path, return the blobId. The node path is of the format `/<basePath>/<blobId>`.
898
917
  */
899
- const getBlobIdFromGCNodePath = (nodePath: string) => {
918
+ const getBlobIdFromGCNodePath = (nodePath: string): string => {
900
919
  const pathParts = nodePath.split("/");
901
920
  assert(areBlobPathParts(pathParts), 0x5bd /* Invalid blob node path */);
902
921
  return pathParts[2];
@@ -47,7 +47,7 @@ const loadV1 = async (
47
47
  return {};
48
48
  }
49
49
  let redirectTableEntries: [string, string][] = [];
50
- const tableId: string | undefined = blobsTree.blobs[redirectTableBlobName];
50
+ const tableId = blobsTree.blobs[redirectTableBlobName];
51
51
  if (tableId) {
52
52
  redirectTableEntries = await readAndParse(context.storage, tableId);
53
53
  }
@@ -116,7 +116,7 @@ const summarizeV1 = (
116
116
  export const getStorageIds = (
117
117
  redirectTable: Map<string, string | undefined>,
118
118
  attachState: AttachState,
119
- ) => {
119
+ ): Set<string> => {
120
120
  const ids = new Set<string | undefined>(redirectTable.values());
121
121
 
122
122
  // If we are detached, we will not have storage IDs, only undefined