@fluidframework/container-runtime 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.225277

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 (705) hide show
  1. package/.eslintrc.js +19 -29
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +427 -0
  4. package/README.md +69 -0
  5. package/api-extractor-esm.json +4 -0
  6. package/api-extractor-lint.json +4 -0
  7. package/api-extractor.json +2 -2
  8. package/api-report/container-runtime.api.md +863 -0
  9. package/dist/{batchTracker.js → batchTracker.cjs} +9 -8
  10. package/dist/batchTracker.cjs.map +1 -0
  11. package/dist/batchTracker.d.ts +6 -5
  12. package/dist/batchTracker.d.ts.map +1 -1
  13. package/dist/blobManager.cjs +709 -0
  14. package/dist/blobManager.cjs.map +1 -0
  15. package/dist/blobManager.d.ts +140 -39
  16. package/dist/blobManager.d.ts.map +1 -1
  17. package/dist/connectionTelemetry.cjs +230 -0
  18. package/dist/connectionTelemetry.cjs.map +1 -0
  19. package/dist/connectionTelemetry.d.ts +2 -2
  20. package/dist/connectionTelemetry.d.ts.map +1 -1
  21. package/dist/container-runtime-alpha.d.ts +1690 -0
  22. package/dist/container-runtime-beta.d.ts +250 -0
  23. package/dist/container-runtime-public.d.ts +250 -0
  24. package/dist/container-runtime-untrimmed.d.ts +1805 -0
  25. package/dist/{containerHandleContext.js → containerHandleContext.cjs} +4 -2
  26. package/dist/containerHandleContext.cjs.map +1 -0
  27. package/dist/containerHandleContext.d.ts.map +1 -1
  28. package/dist/containerRuntime.cjs +2535 -0
  29. package/dist/containerRuntime.cjs.map +1 -0
  30. package/dist/containerRuntime.d.ts +458 -256
  31. package/dist/containerRuntime.d.ts.map +1 -1
  32. package/dist/{dataStore.js → dataStore.cjs} +54 -45
  33. package/dist/dataStore.cjs.map +1 -0
  34. package/dist/dataStore.d.ts +2 -2
  35. package/dist/dataStore.d.ts.map +1 -1
  36. package/dist/{dataStoreContext.js → dataStoreContext.cjs} +343 -247
  37. package/dist/dataStoreContext.cjs.map +1 -0
  38. package/dist/dataStoreContext.d.ts +73 -41
  39. package/dist/dataStoreContext.d.ts.map +1 -1
  40. package/dist/{dataStoreContexts.js → dataStoreContexts.cjs} +19 -15
  41. package/dist/dataStoreContexts.cjs.map +1 -0
  42. package/dist/dataStoreContexts.d.ts +1 -1
  43. package/dist/dataStoreContexts.d.ts.map +1 -1
  44. package/dist/{dataStoreRegistry.js → dataStoreRegistry.cjs} +9 -4
  45. package/dist/dataStoreRegistry.cjs.map +1 -0
  46. package/dist/dataStoreRegistry.d.ts +3 -0
  47. package/dist/dataStoreRegistry.d.ts.map +1 -1
  48. package/dist/{dataStores.js → dataStores.cjs} +276 -124
  49. package/dist/dataStores.cjs.map +1 -0
  50. package/dist/dataStores.d.ts +56 -23
  51. package/dist/dataStores.d.ts.map +1 -1
  52. package/dist/deltaManagerProxyBase.cjs +77 -0
  53. package/dist/deltaManagerProxyBase.cjs.map +1 -0
  54. package/dist/deltaManagerProxyBase.d.ts +35 -0
  55. package/dist/deltaManagerProxyBase.d.ts.map +1 -0
  56. package/dist/deltaManagerSummarizerProxy.cjs +42 -0
  57. package/dist/deltaManagerSummarizerProxy.cjs.map +1 -0
  58. package/dist/deltaManagerSummarizerProxy.d.ts +19 -0
  59. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -0
  60. package/dist/{deltaScheduler.js → deltaScheduler.cjs} +25 -18
  61. package/dist/deltaScheduler.cjs.map +1 -0
  62. package/dist/deltaScheduler.d.ts +8 -6
  63. package/dist/deltaScheduler.d.ts.map +1 -1
  64. package/dist/error.cjs +21 -0
  65. package/dist/error.cjs.map +1 -0
  66. package/dist/error.d.ts +14 -0
  67. package/dist/error.d.ts.map +1 -0
  68. package/dist/gc/garbageCollection.cjs +865 -0
  69. package/dist/gc/garbageCollection.cjs.map +1 -0
  70. package/dist/gc/garbageCollection.d.ts +224 -0
  71. package/dist/gc/garbageCollection.d.ts.map +1 -0
  72. package/dist/gc/gcConfigs.cjs +160 -0
  73. package/dist/gc/gcConfigs.cjs.map +1 -0
  74. package/dist/gc/gcConfigs.d.ts +23 -0
  75. package/dist/gc/gcConfigs.d.ts.map +1 -0
  76. package/dist/gc/gcDefinitions.cjs +96 -0
  77. package/dist/gc/gcDefinitions.cjs.map +1 -0
  78. package/dist/gc/gcDefinitions.d.ts +458 -0
  79. package/dist/gc/gcDefinitions.d.ts.map +1 -0
  80. package/dist/gc/gcHelpers.cjs +235 -0
  81. package/dist/gc/gcHelpers.cjs.map +1 -0
  82. package/dist/gc/gcHelpers.d.ts +71 -0
  83. package/dist/gc/gcHelpers.d.ts.map +1 -0
  84. package/dist/gc/gcReferenceGraphAlgorithm.cjs +49 -0
  85. package/dist/gc/gcReferenceGraphAlgorithm.cjs.map +1 -0
  86. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +16 -0
  87. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  88. package/dist/{summarizerTypes.js → gc/gcSummaryDefinitions.cjs} +1 -6
  89. package/dist/gc/gcSummaryDefinitions.cjs.map +1 -0
  90. package/dist/gc/gcSummaryDefinitions.d.ts +52 -0
  91. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -0
  92. package/dist/gc/gcSummaryStateTracker.cjs +213 -0
  93. package/dist/gc/gcSummaryStateTracker.cjs.map +1 -0
  94. package/dist/gc/gcSummaryStateTracker.d.ts +94 -0
  95. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -0
  96. package/dist/gc/gcTelemetry.cjs +307 -0
  97. package/dist/gc/gcTelemetry.cjs.map +1 -0
  98. package/dist/gc/gcTelemetry.d.ts +99 -0
  99. package/dist/gc/gcTelemetry.d.ts.map +1 -0
  100. package/dist/gc/gcUnreferencedStateTracker.cjs +118 -0
  101. package/dist/gc/gcUnreferencedStateTracker.cjs.map +1 -0
  102. package/dist/gc/gcUnreferencedStateTracker.d.ts +40 -0
  103. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  104. package/dist/gc/index.cjs +44 -0
  105. package/dist/gc/index.cjs.map +1 -0
  106. package/dist/gc/index.d.ts +13 -0
  107. package/dist/gc/index.d.ts.map +1 -0
  108. package/dist/index.cjs +47 -0
  109. package/dist/index.cjs.map +1 -0
  110. package/dist/index.d.ts +19 -8
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/messageTypes.cjs +37 -0
  113. package/dist/messageTypes.cjs.map +1 -0
  114. package/dist/messageTypes.d.ts +142 -0
  115. package/dist/messageTypes.d.ts.map +1 -0
  116. package/dist/metadata.cjs +7 -0
  117. package/dist/metadata.cjs.map +1 -0
  118. package/dist/metadata.d.ts +24 -0
  119. package/dist/metadata.d.ts.map +1 -0
  120. package/dist/opLifecycle/batchManager.cjs +139 -0
  121. package/dist/opLifecycle/batchManager.cjs.map +1 -0
  122. package/dist/opLifecycle/batchManager.d.ts +48 -0
  123. package/dist/opLifecycle/batchManager.d.ts.map +1 -0
  124. package/dist/opLifecycle/definitions.cjs +7 -0
  125. package/dist/opLifecycle/definitions.cjs.map +1 -0
  126. package/dist/opLifecycle/definitions.d.ts +83 -0
  127. package/dist/opLifecycle/definitions.d.ts.map +1 -0
  128. package/dist/opLifecycle/index.cjs +26 -0
  129. package/dist/opLifecycle/index.cjs.map +1 -0
  130. package/dist/opLifecycle/index.d.ts +13 -0
  131. package/dist/opLifecycle/index.d.ts.map +1 -0
  132. package/dist/opLifecycle/opCompressor.cjs +84 -0
  133. package/dist/opLifecycle/opCompressor.cjs.map +1 -0
  134. package/dist/opLifecycle/opCompressor.d.ts +18 -0
  135. package/dist/opLifecycle/opCompressor.d.ts.map +1 -0
  136. package/dist/opLifecycle/opDecompressor.cjs +132 -0
  137. package/dist/opLifecycle/opDecompressor.cjs.map +1 -0
  138. package/dist/opLifecycle/opDecompressor.d.ts +25 -0
  139. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -0
  140. package/dist/opLifecycle/opGroupingManager.cjs +95 -0
  141. package/dist/opLifecycle/opGroupingManager.cjs.map +1 -0
  142. package/dist/opLifecycle/opGroupingManager.d.ts +22 -0
  143. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -0
  144. package/dist/opLifecycle/opSplitter.cjs +202 -0
  145. package/dist/opLifecycle/opSplitter.cjs.map +1 -0
  146. package/dist/opLifecycle/opSplitter.d.ts +61 -0
  147. package/dist/opLifecycle/opSplitter.d.ts.map +1 -0
  148. package/dist/opLifecycle/outbox.cjs +326 -0
  149. package/dist/opLifecycle/outbox.cjs.map +1 -0
  150. package/dist/opLifecycle/outbox.d.ts +104 -0
  151. package/dist/opLifecycle/outbox.d.ts.map +1 -0
  152. package/dist/opLifecycle/remoteMessageProcessor.cjs +136 -0
  153. package/dist/opLifecycle/remoteMessageProcessor.cjs.map +1 -0
  154. package/dist/opLifecycle/remoteMessageProcessor.d.ts +47 -0
  155. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  156. package/dist/opProperties.cjs +17 -0
  157. package/dist/opProperties.cjs.map +1 -0
  158. package/dist/opProperties.d.ts +7 -0
  159. package/dist/opProperties.d.ts.map +1 -0
  160. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  161. package/dist/packageVersion.cjs.map +1 -0
  162. package/dist/packageVersion.d.ts +1 -1
  163. package/dist/packageVersion.d.ts.map +1 -1
  164. package/dist/pendingStateManager.cjs +282 -0
  165. package/dist/pendingStateManager.cjs.map +1 -0
  166. package/dist/pendingStateManager.d.ts +32 -69
  167. package/dist/pendingStateManager.d.ts.map +1 -1
  168. package/dist/scheduleManager.cjs +258 -0
  169. package/dist/scheduleManager.cjs.map +1 -0
  170. package/dist/scheduleManager.d.ts +31 -0
  171. package/dist/scheduleManager.d.ts.map +1 -0
  172. package/dist/storageServiceWithAttachBlobs.cjs +32 -0
  173. package/dist/storageServiceWithAttachBlobs.cjs.map +1 -0
  174. package/dist/storageServiceWithAttachBlobs.d.ts +17 -0
  175. package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -0
  176. package/dist/summary/index.cjs +51 -0
  177. package/dist/summary/index.cjs.map +1 -0
  178. package/dist/summary/index.d.ts +17 -0
  179. package/dist/summary/index.d.ts.map +1 -0
  180. package/dist/{orderedClientElection.js → summary/orderedClientElection.cjs} +100 -84
  181. package/dist/summary/orderedClientElection.cjs.map +1 -0
  182. package/{lib → dist/summary}/orderedClientElection.d.ts +41 -18
  183. package/dist/summary/orderedClientElection.d.ts.map +1 -0
  184. package/dist/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.cjs} +12 -10
  185. package/dist/summary/runWhileConnectedCoordinator.cjs.map +1 -0
  186. package/{lib → dist/summary}/runWhileConnectedCoordinator.d.ts +8 -2
  187. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  188. package/dist/summary/runningSummarizer.cjs +679 -0
  189. package/dist/summary/runningSummarizer.cjs.map +1 -0
  190. package/dist/summary/runningSummarizer.d.ts +128 -0
  191. package/dist/summary/runningSummarizer.d.ts.map +1 -0
  192. package/dist/summary/summarizer.cjs +263 -0
  193. package/dist/summary/summarizer.cjs.map +1 -0
  194. package/dist/{summarizer.d.ts → summary/summarizer.d.ts} +18 -33
  195. package/dist/summary/summarizer.d.ts.map +1 -0
  196. package/dist/{summarizerClientElection.js → summary/summarizerClientElection.cjs} +15 -46
  197. package/dist/summary/summarizerClientElection.cjs.map +1 -0
  198. package/{lib → dist/summary}/summarizerClientElection.d.ts +4 -4
  199. package/dist/summary/summarizerClientElection.d.ts.map +1 -0
  200. package/dist/summary/summarizerHeuristics.cjs +156 -0
  201. package/dist/summary/summarizerHeuristics.cjs.map +1 -0
  202. package/{lib → dist/summary}/summarizerHeuristics.d.ts +28 -6
  203. package/dist/summary/summarizerHeuristics.d.ts.map +1 -0
  204. package/dist/summary/summarizerNode/index.cjs +12 -0
  205. package/dist/summary/summarizerNode/index.cjs.map +1 -0
  206. package/dist/summary/summarizerNode/index.d.ts +8 -0
  207. package/dist/summary/summarizerNode/index.d.ts.map +1 -0
  208. package/dist/summary/summarizerNode/summarizerNode.cjs +526 -0
  209. package/dist/summary/summarizerNode/summarizerNode.cjs.map +1 -0
  210. package/dist/summary/summarizerNode/summarizerNode.d.ts +167 -0
  211. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  212. package/dist/summary/summarizerNode/summarizerNodeUtils.cjs +130 -0
  213. package/dist/summary/summarizerNode/summarizerNodeUtils.cjs.map +1 -0
  214. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +121 -0
  215. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  216. package/dist/summary/summarizerNode/summarizerNodeWithGc.cjs +375 -0
  217. package/dist/summary/summarizerNode/summarizerNodeWithGc.cjs.map +1 -0
  218. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +153 -0
  219. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  220. package/dist/summary/summarizerTypes.cjs +7 -0
  221. package/dist/summary/summarizerTypes.cjs.map +1 -0
  222. package/{lib → dist/summary}/summarizerTypes.d.ts +233 -83
  223. package/dist/summary/summarizerTypes.d.ts.map +1 -0
  224. package/dist/{summaryCollection.js → summary/summaryCollection.cjs} +80 -49
  225. package/dist/summary/summaryCollection.cjs.map +1 -0
  226. package/dist/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +23 -5
  227. package/dist/summary/summaryCollection.d.ts.map +1 -0
  228. package/dist/{summaryFormat.js → summary/summaryFormat.cjs} +29 -26
  229. package/dist/summary/summaryFormat.cjs.map +1 -0
  230. package/{lib → dist/summary}/summaryFormat.d.ts +25 -30
  231. package/dist/summary/summaryFormat.d.ts.map +1 -0
  232. package/dist/{summaryGenerator.js → summary/summaryGenerator.cjs} +162 -74
  233. package/dist/summary/summaryGenerator.cjs.map +1 -0
  234. package/dist/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +53 -11
  235. package/dist/summary/summaryGenerator.d.ts.map +1 -0
  236. package/dist/{summaryManager.js → summary/summaryManager.cjs} +98 -55
  237. package/dist/summary/summaryManager.cjs.map +1 -0
  238. package/{lib → dist/summary}/summaryManager.d.ts +13 -11
  239. package/dist/summary/summaryManager.d.ts.map +1 -0
  240. package/dist/{throttler.js → throttler.cjs} +21 -21
  241. package/dist/throttler.cjs.map +1 -0
  242. package/dist/throttler.d.ts +2 -2
  243. package/dist/throttler.d.ts.map +1 -1
  244. package/dist/tsdoc-metadata.json +11 -0
  245. package/lib/{batchTracker.d.ts → batchTracker.d.mts} +7 -6
  246. package/lib/batchTracker.d.mts.map +1 -0
  247. package/lib/{batchTracker.js → batchTracker.mjs} +9 -8
  248. package/lib/batchTracker.mjs.map +1 -0
  249. package/lib/blobManager.d.mts +196 -0
  250. package/lib/blobManager.d.mts.map +1 -0
  251. package/lib/blobManager.mjs +704 -0
  252. package/lib/blobManager.mjs.map +1 -0
  253. package/lib/{connectionTelemetry.d.ts → connectionTelemetry.d.mts} +3 -3
  254. package/lib/connectionTelemetry.d.mts.map +1 -0
  255. package/lib/connectionTelemetry.mjs +226 -0
  256. package/lib/connectionTelemetry.mjs.map +1 -0
  257. package/lib/container-runtime-alpha.d.mts +1690 -0
  258. package/lib/container-runtime-beta.d.mts +250 -0
  259. package/lib/container-runtime-public.d.mts +250 -0
  260. package/lib/container-runtime-untrimmed.d.mts +1805 -0
  261. package/lib/{containerHandleContext.d.ts → containerHandleContext.d.mts} +2 -2
  262. package/lib/containerHandleContext.d.mts.map +1 -0
  263. package/lib/{containerHandleContext.js → containerHandleContext.mjs} +4 -2
  264. package/lib/containerHandleContext.mjs.map +1 -0
  265. package/lib/containerRuntime.d.mts +813 -0
  266. package/lib/containerRuntime.d.mts.map +1 -0
  267. package/lib/containerRuntime.mjs +2530 -0
  268. package/lib/containerRuntime.mjs.map +1 -0
  269. package/lib/{dataStore.d.ts → dataStore.d.mts} +5 -5
  270. package/lib/dataStore.d.mts.map +1 -0
  271. package/lib/{dataStore.js → dataStore.mjs} +52 -43
  272. package/lib/dataStore.mjs.map +1 -0
  273. package/lib/{dataStoreContext.d.ts → dataStoreContext.d.mts} +75 -43
  274. package/lib/dataStoreContext.d.mts.map +1 -0
  275. package/lib/{dataStoreContext.js → dataStoreContext.mjs} +309 -213
  276. package/lib/dataStoreContext.mjs.map +1 -0
  277. package/lib/{dataStoreContexts.d.ts → dataStoreContexts.d.mts} +3 -3
  278. package/lib/dataStoreContexts.d.mts.map +1 -0
  279. package/lib/{dataStoreContexts.js → dataStoreContexts.mjs} +12 -8
  280. package/lib/dataStoreContexts.mjs.map +1 -0
  281. package/lib/{dataStoreRegistry.d.ts → dataStoreRegistry.d.mts} +4 -1
  282. package/lib/dataStoreRegistry.d.mts.map +1 -0
  283. package/lib/{dataStoreRegistry.js → dataStoreRegistry.mjs} +7 -6
  284. package/lib/dataStoreRegistry.mjs.map +1 -0
  285. package/lib/{dataStores.d.ts → dataStores.d.mts} +60 -27
  286. package/lib/dataStores.d.mts.map +1 -0
  287. package/lib/{dataStores.js → dataStores.mjs} +257 -105
  288. package/lib/dataStores.mjs.map +1 -0
  289. package/lib/deltaManagerProxyBase.d.mts +35 -0
  290. package/lib/deltaManagerProxyBase.d.mts.map +1 -0
  291. package/lib/deltaManagerProxyBase.mjs +73 -0
  292. package/lib/deltaManagerProxyBase.mjs.map +1 -0
  293. package/lib/deltaManagerSummarizerProxy.d.mts +19 -0
  294. package/lib/deltaManagerSummarizerProxy.d.mts.map +1 -0
  295. package/lib/deltaManagerSummarizerProxy.mjs +38 -0
  296. package/lib/deltaManagerSummarizerProxy.mjs.map +1 -0
  297. package/lib/{deltaScheduler.d.ts → deltaScheduler.d.mts} +9 -7
  298. package/lib/deltaScheduler.d.mts.map +1 -0
  299. package/lib/{deltaScheduler.js → deltaScheduler.mjs} +22 -15
  300. package/lib/deltaScheduler.mjs.map +1 -0
  301. package/lib/error.d.mts +14 -0
  302. package/lib/error.d.mts.map +1 -0
  303. package/lib/error.mjs +17 -0
  304. package/lib/error.mjs.map +1 -0
  305. package/lib/gc/garbageCollection.d.mts +224 -0
  306. package/lib/gc/garbageCollection.d.mts.map +1 -0
  307. package/lib/gc/garbageCollection.mjs +861 -0
  308. package/lib/gc/garbageCollection.mjs.map +1 -0
  309. package/lib/gc/gcConfigs.d.mts +23 -0
  310. package/lib/gc/gcConfigs.d.mts.map +1 -0
  311. package/lib/gc/gcConfigs.mjs +156 -0
  312. package/lib/gc/gcConfigs.mjs.map +1 -0
  313. package/lib/gc/gcDefinitions.d.mts +458 -0
  314. package/lib/gc/gcDefinitions.d.mts.map +1 -0
  315. package/lib/gc/gcDefinitions.mjs +93 -0
  316. package/lib/gc/gcDefinitions.mjs.map +1 -0
  317. package/lib/gc/gcHelpers.d.mts +71 -0
  318. package/lib/gc/gcHelpers.d.mts.map +1 -0
  319. package/lib/gc/gcHelpers.mjs +222 -0
  320. package/lib/gc/gcHelpers.mjs.map +1 -0
  321. package/lib/gc/gcReferenceGraphAlgorithm.d.mts +16 -0
  322. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +1 -0
  323. package/lib/gc/gcReferenceGraphAlgorithm.mjs +45 -0
  324. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +1 -0
  325. package/lib/gc/gcSummaryDefinitions.d.mts +52 -0
  326. package/lib/gc/gcSummaryDefinitions.d.mts.map +1 -0
  327. package/lib/gc/gcSummaryDefinitions.mjs +6 -0
  328. package/lib/gc/gcSummaryDefinitions.mjs.map +1 -0
  329. package/lib/gc/gcSummaryStateTracker.d.mts +94 -0
  330. package/lib/gc/gcSummaryStateTracker.d.mts.map +1 -0
  331. package/lib/gc/gcSummaryStateTracker.mjs +209 -0
  332. package/lib/gc/gcSummaryStateTracker.mjs.map +1 -0
  333. package/lib/gc/gcTelemetry.d.mts +99 -0
  334. package/lib/gc/gcTelemetry.d.mts.map +1 -0
  335. package/lib/gc/gcTelemetry.mjs +302 -0
  336. package/lib/gc/gcTelemetry.mjs.map +1 -0
  337. package/lib/gc/gcUnreferencedStateTracker.d.mts +40 -0
  338. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +1 -0
  339. package/lib/gc/gcUnreferencedStateTracker.mjs +114 -0
  340. package/lib/gc/gcUnreferencedStateTracker.mjs.map +1 -0
  341. package/lib/gc/index.d.mts +13 -0
  342. package/lib/gc/index.d.mts.map +1 -0
  343. package/lib/gc/index.mjs +12 -0
  344. package/lib/gc/index.mjs.map +1 -0
  345. package/lib/index.d.mts +25 -0
  346. package/lib/index.d.mts.map +1 -0
  347. package/lib/index.mjs +24 -0
  348. package/lib/index.mjs.map +1 -0
  349. package/lib/messageTypes.d.mts +142 -0
  350. package/lib/messageTypes.d.mts.map +1 -0
  351. package/lib/messageTypes.mjs +34 -0
  352. package/lib/messageTypes.mjs.map +1 -0
  353. package/lib/metadata.d.mts +24 -0
  354. package/lib/metadata.d.mts.map +1 -0
  355. package/lib/metadata.mjs +6 -0
  356. package/lib/metadata.mjs.map +1 -0
  357. package/lib/opLifecycle/batchManager.d.mts +48 -0
  358. package/lib/opLifecycle/batchManager.d.mts.map +1 -0
  359. package/lib/opLifecycle/batchManager.mjs +133 -0
  360. package/lib/opLifecycle/batchManager.mjs.map +1 -0
  361. package/lib/opLifecycle/definitions.d.mts +83 -0
  362. package/lib/opLifecycle/definitions.d.mts.map +1 -0
  363. package/lib/opLifecycle/definitions.mjs +6 -0
  364. package/lib/opLifecycle/definitions.mjs.map +1 -0
  365. package/lib/opLifecycle/index.d.mts +13 -0
  366. package/lib/opLifecycle/index.d.mts.map +1 -0
  367. package/lib/opLifecycle/index.mjs +12 -0
  368. package/lib/opLifecycle/index.mjs.map +1 -0
  369. package/lib/opLifecycle/opCompressor.d.mts +18 -0
  370. package/lib/opLifecycle/opCompressor.d.mts.map +1 -0
  371. package/lib/opLifecycle/opCompressor.mjs +80 -0
  372. package/lib/opLifecycle/opCompressor.mjs.map +1 -0
  373. package/lib/opLifecycle/opDecompressor.d.mts +25 -0
  374. package/lib/opLifecycle/opDecompressor.d.mts.map +1 -0
  375. package/lib/opLifecycle/opDecompressor.mjs +128 -0
  376. package/lib/opLifecycle/opDecompressor.mjs.map +1 -0
  377. package/lib/opLifecycle/opGroupingManager.d.mts +22 -0
  378. package/lib/opLifecycle/opGroupingManager.d.mts.map +1 -0
  379. package/lib/opLifecycle/opGroupingManager.mjs +91 -0
  380. package/lib/opLifecycle/opGroupingManager.mjs.map +1 -0
  381. package/lib/opLifecycle/opSplitter.d.mts +61 -0
  382. package/lib/opLifecycle/opSplitter.d.mts.map +1 -0
  383. package/lib/opLifecycle/opSplitter.mjs +197 -0
  384. package/lib/opLifecycle/opSplitter.mjs.map +1 -0
  385. package/lib/opLifecycle/outbox.d.mts +104 -0
  386. package/lib/opLifecycle/outbox.d.mts.map +1 -0
  387. package/lib/opLifecycle/outbox.mjs +321 -0
  388. package/lib/opLifecycle/outbox.mjs.map +1 -0
  389. package/lib/opLifecycle/remoteMessageProcessor.d.mts +47 -0
  390. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +1 -0
  391. package/lib/opLifecycle/remoteMessageProcessor.mjs +131 -0
  392. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +1 -0
  393. package/lib/opProperties.d.mts +7 -0
  394. package/lib/opProperties.d.mts.map +1 -0
  395. package/lib/opProperties.mjs +13 -0
  396. package/lib/opProperties.mjs.map +1 -0
  397. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
  398. package/lib/packageVersion.d.mts.map +1 -0
  399. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  400. package/lib/packageVersion.mjs.map +1 -0
  401. package/lib/{pendingStateManager.d.ts → pendingStateManager.d.mts} +33 -70
  402. package/lib/pendingStateManager.d.mts.map +1 -0
  403. package/lib/pendingStateManager.mjs +275 -0
  404. package/lib/pendingStateManager.mjs.map +1 -0
  405. package/lib/scheduleManager.d.mts +27 -0
  406. package/lib/scheduleManager.d.mts.map +1 -0
  407. package/lib/scheduleManager.mjs +254 -0
  408. package/lib/scheduleManager.mjs.map +1 -0
  409. package/lib/storageServiceWithAttachBlobs.d.mts +17 -0
  410. package/lib/storageServiceWithAttachBlobs.d.mts.map +1 -0
  411. package/lib/storageServiceWithAttachBlobs.mjs +28 -0
  412. package/lib/storageServiceWithAttachBlobs.mjs.map +1 -0
  413. package/lib/summary/index.d.mts +17 -0
  414. package/lib/summary/index.d.mts.map +1 -0
  415. package/lib/summary/index.mjs +16 -0
  416. package/lib/summary/index.mjs.map +1 -0
  417. package/{dist/orderedClientElection.d.ts → lib/summary/orderedClientElection.d.mts} +42 -23
  418. package/lib/summary/orderedClientElection.d.mts.map +1 -0
  419. package/lib/{orderedClientElection.js → summary/orderedClientElection.mjs} +95 -79
  420. package/lib/summary/orderedClientElection.mjs.map +1 -0
  421. package/{dist/runWhileConnectedCoordinator.d.ts → lib/summary/runWhileConnectedCoordinator.d.mts} +10 -4
  422. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +1 -0
  423. package/lib/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.mjs} +12 -10
  424. package/lib/summary/runWhileConnectedCoordinator.mjs.map +1 -0
  425. package/lib/summary/runningSummarizer.d.mts +128 -0
  426. package/lib/summary/runningSummarizer.d.mts.map +1 -0
  427. package/lib/summary/runningSummarizer.mjs +675 -0
  428. package/lib/summary/runningSummarizer.mjs.map +1 -0
  429. package/lib/{summarizer.d.ts → summary/summarizer.d.mts} +21 -36
  430. package/lib/summary/summarizer.d.mts.map +1 -0
  431. package/lib/summary/summarizer.mjs +257 -0
  432. package/lib/summary/summarizer.mjs.map +1 -0
  433. package/{dist/summarizerClientElection.d.ts → lib/summary/summarizerClientElection.d.mts} +7 -7
  434. package/lib/summary/summarizerClientElection.d.mts.map +1 -0
  435. package/lib/{summarizerClientElection.js → summary/summarizerClientElection.mjs} +14 -45
  436. package/lib/summary/summarizerClientElection.mjs.map +1 -0
  437. package/{dist/summarizerHeuristics.d.ts → lib/summary/summarizerHeuristics.d.mts} +30 -8
  438. package/lib/summary/summarizerHeuristics.d.mts.map +1 -0
  439. package/lib/summary/summarizerHeuristics.mjs +151 -0
  440. package/lib/summary/summarizerHeuristics.mjs.map +1 -0
  441. package/lib/summary/summarizerNode/index.d.mts +8 -0
  442. package/lib/summary/summarizerNode/index.d.mts.map +1 -0
  443. package/lib/summary/summarizerNode/index.mjs +7 -0
  444. package/lib/summary/summarizerNode/index.mjs.map +1 -0
  445. package/lib/summary/summarizerNode/summarizerNode.d.mts +167 -0
  446. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +1 -0
  447. package/lib/summary/summarizerNode/summarizerNode.mjs +521 -0
  448. package/lib/summary/summarizerNode/summarizerNode.mjs.map +1 -0
  449. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts +121 -0
  450. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +1 -0
  451. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs +123 -0
  452. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +1 -0
  453. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts +153 -0
  454. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +1 -0
  455. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs +370 -0
  456. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +1 -0
  457. package/{dist/summarizerTypes.d.ts → lib/summary/summarizerTypes.d.mts} +235 -85
  458. package/lib/summary/summarizerTypes.d.mts.map +1 -0
  459. package/lib/summary/summarizerTypes.mjs +6 -0
  460. package/lib/summary/summarizerTypes.mjs.map +1 -0
  461. package/lib/{summaryCollection.d.ts → summary/summaryCollection.d.mts} +24 -6
  462. package/lib/summary/summaryCollection.d.mts.map +1 -0
  463. package/lib/{summaryCollection.js → summary/summaryCollection.mjs} +76 -45
  464. package/lib/summary/summaryCollection.mjs.map +1 -0
  465. package/{dist/summaryFormat.d.ts → lib/summary/summaryFormat.d.mts} +26 -31
  466. package/lib/summary/summaryFormat.d.mts.map +1 -0
  467. package/lib/{summaryFormat.js → summary/summaryFormat.mjs} +30 -26
  468. package/lib/summary/summaryFormat.mjs.map +1 -0
  469. package/lib/summary/summaryGenerator.d.mts +127 -0
  470. package/lib/summary/summaryGenerator.d.mts.map +1 -0
  471. package/lib/{summaryGenerator.js → summary/summaryGenerator.mjs} +153 -67
  472. package/lib/summary/summaryGenerator.mjs.map +1 -0
  473. package/{dist/summaryManager.d.ts → lib/summary/summaryManager.d.mts} +16 -14
  474. package/lib/summary/summaryManager.d.mts.map +1 -0
  475. package/lib/{summaryManager.js → summary/summaryManager.mjs} +94 -51
  476. package/lib/summary/summaryManager.mjs.map +1 -0
  477. package/lib/{throttler.d.ts → throttler.d.mts} +3 -3
  478. package/lib/throttler.d.mts.map +1 -0
  479. package/lib/{throttler.js → throttler.mjs} +21 -21
  480. package/lib/throttler.mjs.map +1 -0
  481. package/package.json +199 -71
  482. package/prettier.config.cjs +8 -0
  483. package/src/batchTracker.ts +59 -54
  484. package/src/blobManager.ts +942 -294
  485. package/src/connectionTelemetry.ts +342 -252
  486. package/src/containerHandleContext.ts +27 -29
  487. package/src/containerRuntime.ts +3883 -3143
  488. package/src/dataStore.ts +170 -140
  489. package/src/dataStoreContext.ts +1166 -986
  490. package/src/dataStoreContexts.ts +176 -163
  491. package/src/dataStoreRegistry.ts +29 -21
  492. package/src/dataStores.ts +924 -678
  493. package/src/deltaManagerProxyBase.ts +111 -0
  494. package/src/deltaManagerSummarizerProxy.ts +49 -0
  495. package/src/deltaScheduler.ts +161 -156
  496. package/src/error.ts +21 -0
  497. package/src/gc/garbageCollection.md +106 -0
  498. package/src/gc/garbageCollection.ts +1157 -0
  499. package/src/gc/gcConfigs.ts +224 -0
  500. package/src/gc/gcDefinitions.ts +524 -0
  501. package/src/gc/gcHelpers.ts +284 -0
  502. package/src/gc/gcReferenceGraphAlgorithm.ts +52 -0
  503. package/src/gc/gcSummaryDefinitions.ts +54 -0
  504. package/src/gc/gcSummaryStateTracker.ts +299 -0
  505. package/src/gc/gcTelemetry.ts +433 -0
  506. package/src/gc/gcUnreferencedStateTracker.ts +153 -0
  507. package/src/gc/index.ts +60 -0
  508. package/src/index.ts +101 -74
  509. package/src/messageTypes.ts +238 -0
  510. package/src/metadata.ts +26 -0
  511. package/src/opLifecycle/README.md +321 -0
  512. package/src/opLifecycle/batchManager.ts +179 -0
  513. package/src/opLifecycle/definitions.ts +89 -0
  514. package/src/opLifecycle/index.ts +19 -0
  515. package/src/opLifecycle/opCompressor.ts +99 -0
  516. package/src/opLifecycle/opDecompressor.ts +190 -0
  517. package/src/opLifecycle/opGroupingManager.ts +133 -0
  518. package/src/opLifecycle/opSplitter.ts +279 -0
  519. package/src/opLifecycle/outbox.ts +474 -0
  520. package/src/opLifecycle/remoteMessageProcessor.ts +175 -0
  521. package/src/opProperties.ts +21 -0
  522. package/src/packageVersion.ts +1 -1
  523. package/src/pendingStateManager.ts +396 -465
  524. package/src/scheduleManager.ts +358 -0
  525. package/src/storageServiceWithAttachBlobs.ts +38 -0
  526. package/src/summary/index.ts +109 -0
  527. package/src/summary/orderedClientElection.ts +571 -0
  528. package/src/summary/runWhileConnectedCoordinator.ts +117 -0
  529. package/src/summary/runningSummarizer.ts +920 -0
  530. package/src/summary/summarizer.ts +352 -0
  531. package/src/summary/summarizerClientElection.ts +140 -0
  532. package/src/summary/summarizerHeuristics.ts +227 -0
  533. package/src/summary/summarizerNode/index.ts +12 -0
  534. package/src/summary/summarizerNode/summarizerNode.ts +725 -0
  535. package/src/summary/summarizerNode/summarizerNodeUtils.ts +206 -0
  536. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +571 -0
  537. package/src/summary/summarizerTypes.ts +631 -0
  538. package/src/summary/summaryCollection.ts +474 -0
  539. package/src/summary/summaryFormat.ts +249 -0
  540. package/src/summary/summaryGenerator.ts +539 -0
  541. package/src/summary/summaryManager.ts +452 -0
  542. package/src/throttler.ts +131 -122
  543. package/tsc-multi.test.json +4 -0
  544. package/tsconfig.json +11 -13
  545. package/dist/batchTracker.js.map +0 -1
  546. package/dist/blobManager.js +0 -249
  547. package/dist/blobManager.js.map +0 -1
  548. package/dist/connectionTelemetry.js +0 -178
  549. package/dist/connectionTelemetry.js.map +0 -1
  550. package/dist/containerHandleContext.js.map +0 -1
  551. package/dist/containerRuntime.js +0 -2174
  552. package/dist/containerRuntime.js.map +0 -1
  553. package/dist/dataStore.js.map +0 -1
  554. package/dist/dataStoreContext.js.map +0 -1
  555. package/dist/dataStoreContexts.js.map +0 -1
  556. package/dist/dataStoreRegistry.js.map +0 -1
  557. package/dist/dataStores.js.map +0 -1
  558. package/dist/deltaScheduler.js.map +0 -1
  559. package/dist/garbageCollection.d.ts +0 -319
  560. package/dist/garbageCollection.d.ts.map +0 -1
  561. package/dist/garbageCollection.js +0 -993
  562. package/dist/garbageCollection.js.map +0 -1
  563. package/dist/index.js +0 -33
  564. package/dist/index.js.map +0 -1
  565. package/dist/opTelemetry.d.ts +0 -22
  566. package/dist/opTelemetry.d.ts.map +0 -1
  567. package/dist/opTelemetry.js +0 -60
  568. package/dist/opTelemetry.js.map +0 -1
  569. package/dist/orderedClientElection.d.ts.map +0 -1
  570. package/dist/orderedClientElection.js.map +0 -1
  571. package/dist/packageVersion.js.map +0 -1
  572. package/dist/pendingStateManager.js +0 -346
  573. package/dist/pendingStateManager.js.map +0 -1
  574. package/dist/runWhileConnectedCoordinator.d.ts.map +0 -1
  575. package/dist/runWhileConnectedCoordinator.js.map +0 -1
  576. package/dist/runningSummarizer.d.ts +0 -93
  577. package/dist/runningSummarizer.d.ts.map +0 -1
  578. package/dist/runningSummarizer.js +0 -384
  579. package/dist/runningSummarizer.js.map +0 -1
  580. package/dist/serializedSnapshotStorage.d.ts +0 -58
  581. package/dist/serializedSnapshotStorage.d.ts.map +0 -1
  582. package/dist/serializedSnapshotStorage.js +0 -108
  583. package/dist/serializedSnapshotStorage.js.map +0 -1
  584. package/dist/summarizer.d.ts.map +0 -1
  585. package/dist/summarizer.js +0 -348
  586. package/dist/summarizer.js.map +0 -1
  587. package/dist/summarizerClientElection.d.ts.map +0 -1
  588. package/dist/summarizerClientElection.js.map +0 -1
  589. package/dist/summarizerHandle.d.ts +0 -12
  590. package/dist/summarizerHandle.d.ts.map +0 -1
  591. package/dist/summarizerHandle.js +0 -22
  592. package/dist/summarizerHandle.js.map +0 -1
  593. package/dist/summarizerHeuristics.d.ts.map +0 -1
  594. package/dist/summarizerHeuristics.js +0 -84
  595. package/dist/summarizerHeuristics.js.map +0 -1
  596. package/dist/summarizerTypes.d.ts.map +0 -1
  597. package/dist/summarizerTypes.js.map +0 -1
  598. package/dist/summaryCollection.d.ts.map +0 -1
  599. package/dist/summaryCollection.js.map +0 -1
  600. package/dist/summaryFormat.d.ts.map +0 -1
  601. package/dist/summaryFormat.js.map +0 -1
  602. package/dist/summaryGenerator.d.ts.map +0 -1
  603. package/dist/summaryGenerator.js.map +0 -1
  604. package/dist/summaryManager.d.ts.map +0 -1
  605. package/dist/summaryManager.js.map +0 -1
  606. package/dist/throttler.js.map +0 -1
  607. package/garbageCollection.md +0 -41
  608. package/lib/batchTracker.d.ts.map +0 -1
  609. package/lib/batchTracker.js.map +0 -1
  610. package/lib/blobManager.d.ts +0 -95
  611. package/lib/blobManager.d.ts.map +0 -1
  612. package/lib/blobManager.js +0 -244
  613. package/lib/blobManager.js.map +0 -1
  614. package/lib/connectionTelemetry.d.ts.map +0 -1
  615. package/lib/connectionTelemetry.js +0 -174
  616. package/lib/connectionTelemetry.js.map +0 -1
  617. package/lib/containerHandleContext.d.ts.map +0 -1
  618. package/lib/containerHandleContext.js.map +0 -1
  619. package/lib/containerRuntime.d.ts +0 -615
  620. package/lib/containerRuntime.d.ts.map +0 -1
  621. package/lib/containerRuntime.js +0 -2166
  622. package/lib/containerRuntime.js.map +0 -1
  623. package/lib/dataStore.d.ts.map +0 -1
  624. package/lib/dataStore.js.map +0 -1
  625. package/lib/dataStoreContext.d.ts.map +0 -1
  626. package/lib/dataStoreContext.js.map +0 -1
  627. package/lib/dataStoreContexts.d.ts.map +0 -1
  628. package/lib/dataStoreContexts.js.map +0 -1
  629. package/lib/dataStoreRegistry.d.ts.map +0 -1
  630. package/lib/dataStoreRegistry.js.map +0 -1
  631. package/lib/dataStores.d.ts.map +0 -1
  632. package/lib/dataStores.js.map +0 -1
  633. package/lib/deltaScheduler.d.ts.map +0 -1
  634. package/lib/deltaScheduler.js.map +0 -1
  635. package/lib/garbageCollection.d.ts +0 -319
  636. package/lib/garbageCollection.d.ts.map +0 -1
  637. package/lib/garbageCollection.js +0 -989
  638. package/lib/garbageCollection.js.map +0 -1
  639. package/lib/index.d.ts +0 -14
  640. package/lib/index.d.ts.map +0 -1
  641. package/lib/index.js +0 -13
  642. package/lib/index.js.map +0 -1
  643. package/lib/opTelemetry.d.ts +0 -22
  644. package/lib/opTelemetry.d.ts.map +0 -1
  645. package/lib/opTelemetry.js +0 -56
  646. package/lib/opTelemetry.js.map +0 -1
  647. package/lib/orderedClientElection.d.ts.map +0 -1
  648. package/lib/orderedClientElection.js.map +0 -1
  649. package/lib/packageVersion.d.ts.map +0 -1
  650. package/lib/packageVersion.js.map +0 -1
  651. package/lib/pendingStateManager.d.ts.map +0 -1
  652. package/lib/pendingStateManager.js +0 -339
  653. package/lib/pendingStateManager.js.map +0 -1
  654. package/lib/runWhileConnectedCoordinator.d.ts.map +0 -1
  655. package/lib/runWhileConnectedCoordinator.js.map +0 -1
  656. package/lib/runningSummarizer.d.ts +0 -93
  657. package/lib/runningSummarizer.d.ts.map +0 -1
  658. package/lib/runningSummarizer.js +0 -380
  659. package/lib/runningSummarizer.js.map +0 -1
  660. package/lib/serializedSnapshotStorage.d.ts +0 -58
  661. package/lib/serializedSnapshotStorage.d.ts.map +0 -1
  662. package/lib/serializedSnapshotStorage.js +0 -104
  663. package/lib/serializedSnapshotStorage.js.map +0 -1
  664. package/lib/summarizer.d.ts.map +0 -1
  665. package/lib/summarizer.js +0 -342
  666. package/lib/summarizer.js.map +0 -1
  667. package/lib/summarizerClientElection.d.ts.map +0 -1
  668. package/lib/summarizerClientElection.js.map +0 -1
  669. package/lib/summarizerHandle.d.ts +0 -12
  670. package/lib/summarizerHandle.d.ts.map +0 -1
  671. package/lib/summarizerHandle.js +0 -18
  672. package/lib/summarizerHandle.js.map +0 -1
  673. package/lib/summarizerHeuristics.d.ts.map +0 -1
  674. package/lib/summarizerHeuristics.js +0 -79
  675. package/lib/summarizerHeuristics.js.map +0 -1
  676. package/lib/summarizerTypes.d.ts.map +0 -1
  677. package/lib/summarizerTypes.js +0 -9
  678. package/lib/summarizerTypes.js.map +0 -1
  679. package/lib/summaryCollection.d.ts.map +0 -1
  680. package/lib/summaryCollection.js.map +0 -1
  681. package/lib/summaryFormat.d.ts.map +0 -1
  682. package/lib/summaryFormat.js.map +0 -1
  683. package/lib/summaryGenerator.d.ts +0 -85
  684. package/lib/summaryGenerator.d.ts.map +0 -1
  685. package/lib/summaryGenerator.js.map +0 -1
  686. package/lib/summaryManager.d.ts.map +0 -1
  687. package/lib/summaryManager.js.map +0 -1
  688. package/lib/throttler.d.ts.map +0 -1
  689. package/lib/throttler.js.map +0 -1
  690. package/src/garbageCollection.ts +0 -1434
  691. package/src/opTelemetry.ts +0 -71
  692. package/src/orderedClientElection.ts +0 -511
  693. package/src/runWhileConnectedCoordinator.ts +0 -106
  694. package/src/runningSummarizer.ts +0 -550
  695. package/src/serializedSnapshotStorage.ts +0 -146
  696. package/src/summarizer.ts +0 -438
  697. package/src/summarizerClientElection.ts +0 -161
  698. package/src/summarizerHandle.ts +0 -21
  699. package/src/summarizerHeuristics.ts +0 -108
  700. package/src/summarizerTypes.ts +0 -462
  701. package/src/summaryCollection.ts +0 -406
  702. package/src/summaryFormat.ts +0 -239
  703. package/src/summaryGenerator.ts +0 -427
  704. package/src/summaryManager.ts +0 -368
  705. package/tsconfig.esnext.json +0 -7
@@ -0,0 +1,571 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ ITelemetryLoggerExt,
8
+ LoggingError,
9
+ TelemetryDataTag,
10
+ tagCodeArtifacts,
11
+ } from "@fluidframework/telemetry-utils";
12
+ import { assert, LazyPromise } from "@fluidframework/core-utils";
13
+ import {
14
+ CreateChildSummarizerNodeParam,
15
+ IGarbageCollectionData,
16
+ IGarbageCollectionDetailsBase,
17
+ ISummarizeInternalResult,
18
+ ISummarizeResult,
19
+ ISummarizerNodeConfigWithGC,
20
+ ISummarizerNodeWithGC,
21
+ SummarizeInternalFn,
22
+ ITelemetryContext,
23
+ IExperimentalIncrementalSummaryContext,
24
+ } from "@fluidframework/runtime-definitions";
25
+ import { unpackChildNodesUsedRoutes } from "@fluidframework/runtime-utils";
26
+ import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
27
+ import { cloneGCData, unpackChildNodesGCDetails } from "../../gc";
28
+ import { SummarizerNode } from "./summarizerNode";
29
+ import {
30
+ EscapedPath,
31
+ ICreateChildDetails,
32
+ IInitialSummary,
33
+ ISummarizerNodeRootContract,
34
+ SummaryNode,
35
+ ValidateSummaryResult,
36
+ } from "./summarizerNodeUtils";
37
+
38
+ export interface IRootSummarizerNodeWithGC
39
+ extends ISummarizerNodeWithGC,
40
+ ISummarizerNodeRootContract {}
41
+
42
+ // Extend SummaryNode to add used routes tracking to it.
43
+ class SummaryNodeWithGC extends SummaryNode {
44
+ constructor(
45
+ public readonly serializedUsedRoutes: string | undefined,
46
+ summary: {
47
+ readonly referenceSequenceNumber: number;
48
+ readonly basePath: EscapedPath | undefined;
49
+ readonly localPath: EscapedPath;
50
+ additionalPath?: EscapedPath;
51
+ },
52
+ ) {
53
+ super(summary);
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Extends the functionality of SummarizerNode to manage this node's garbage collection data:
59
+ *
60
+ * - Adds a new API `getGCData` to return GC data of this node.
61
+ *
62
+ * - Caches the result of `getGCData` to be used if nothing changes between summaries.
63
+ *
64
+ * - Manages the used routes of this node. These are used to identify if this node is referenced in the document
65
+ * and to determine if the node's used state changed since last summary.
66
+ *
67
+ * - Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls
68
+ * directly into summarizeInternal method.
69
+ */
70
+ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummarizerNodeWithGC {
71
+ // Tracks the work-in-progress used routes during summary.
72
+ private wipSerializedUsedRoutes: string | undefined;
73
+
74
+ // This is the last known used routes of this node as seen by the server as part of a summary.
75
+ private referenceUsedRoutes: string[] | undefined;
76
+
77
+ // The base GC details of this node used to initialize the GC state.
78
+ private readonly baseGCDetailsP: LazyPromise<IGarbageCollectionDetailsBase>;
79
+
80
+ // Keeps track of whether we have loaded the base details to ensure that we only do it once.
81
+ private baseGCDetailsLoaded: boolean = false;
82
+
83
+ // The base GC details for the child nodes. This is passed to child nodes when creating them.
84
+ private readonly childNodesBaseGCDetailsP: LazyPromise<
85
+ Map<string, IGarbageCollectionDetailsBase>
86
+ >;
87
+
88
+ private gcData: IGarbageCollectionData | undefined;
89
+
90
+ // Set used routes to have self route by default. This makes the node referenced by default. This is done to ensure
91
+ // that this node is not marked as collected when running GC has been disabled. Once, the option to disable GC is
92
+ // removed (from runGC flag in IContainerRuntimeOptions), this should be changed to be have no routes by default.
93
+ private usedRoutes: string[] = [""];
94
+
95
+ // True if GC is disabled for this node. If so, do not track GC specific state for a summary.
96
+ private readonly gcDisabled: boolean;
97
+
98
+ /**
99
+ * Do not call constructor directly.
100
+ * Use createRootSummarizerNodeWithGC to create root node, or createChild to create child nodes.
101
+ */
102
+ public constructor(
103
+ logger: ITelemetryBaseLogger,
104
+ private readonly summarizeFn: (
105
+ fullTree: boolean,
106
+ trackState: boolean,
107
+ telemetryContext?: ITelemetryContext,
108
+ incrementalSummaryContext?: IExperimentalIncrementalSummaryContext,
109
+ ) => Promise<ISummarizeInternalResult>,
110
+ config: ISummarizerNodeConfigWithGC,
111
+ changeSequenceNumber: number,
112
+ /** Undefined means created without summary */
113
+ latestSummary?: SummaryNode,
114
+ initialSummary?: IInitialSummary,
115
+ wipSummaryLogger?: ITelemetryBaseLogger,
116
+ private readonly getGCDataFn?: (fullGC?: boolean) => Promise<IGarbageCollectionData>,
117
+ getBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,
118
+ /** A unique id of this node to be logged when sending telemetry. */
119
+ telemetryId?: string,
120
+ ) {
121
+ super(
122
+ logger,
123
+ async (
124
+ fullTree: boolean,
125
+ _trackState: boolean,
126
+ telemetryContext?: ITelemetryContext,
127
+ incrementalSummaryContext?: IExperimentalIncrementalSummaryContext,
128
+ ) =>
129
+ summarizeFn(
130
+ fullTree,
131
+ true /* trackState */,
132
+ telemetryContext,
133
+ incrementalSummaryContext,
134
+ ),
135
+ config,
136
+ changeSequenceNumber,
137
+ latestSummary,
138
+ initialSummary,
139
+ wipSummaryLogger,
140
+ telemetryId,
141
+ );
142
+
143
+ this.gcDisabled = config.gcDisabled === true;
144
+
145
+ this.baseGCDetailsP = new LazyPromise(async () => {
146
+ return (await getBaseGCDetailsFn?.()) ?? { usedRoutes: [] };
147
+ });
148
+
149
+ this.childNodesBaseGCDetailsP = new LazyPromise(async () => {
150
+ await this.loadBaseGCDetails();
151
+ return unpackChildNodesGCDetails({ gcData: this.gcData, usedRoutes: this.usedRoutes });
152
+ });
153
+ }
154
+
155
+ /**
156
+ * Loads state from this node's initial GC summary details. This contains the following data from the last summary
157
+ * seen by the server for this client:
158
+ * - usedRoutes: This is used to figure out if the used state of this node changed since last summary.
159
+ * - gcData: The garbage collection data of this node that is required for running GC.
160
+ */
161
+ private async loadBaseGCDetails() {
162
+ if (this.baseGCDetailsLoaded) {
163
+ return;
164
+ }
165
+ const baseGCDetails = await this.baseGCDetailsP;
166
+
167
+ // Possible race - If there were parallel calls to loadBaseGCDetails, we want to make sure that we update
168
+ // the state from the base details only once.
169
+ if (this.baseGCDetailsLoaded) {
170
+ return;
171
+ }
172
+ this.baseGCDetailsLoaded = true;
173
+
174
+ // Update GC data, used routes and reference used routes. The used routes are sorted because they are compared
175
+ // across GC runs to check if they changed. Sorting ensures that the elements are in the same order.
176
+ // If the GC details has GC data, initialize our GC data from it.
177
+ if (baseGCDetails.gcData !== undefined) {
178
+ this.gcData = cloneGCData(baseGCDetails.gcData);
179
+ }
180
+ if (baseGCDetails.usedRoutes !== undefined) {
181
+ this.usedRoutes = Array.from(baseGCDetails.usedRoutes).sort();
182
+ this.referenceUsedRoutes = Array.from(baseGCDetails.usedRoutes).sort();
183
+ }
184
+ }
185
+
186
+ public async summarize(
187
+ fullTree: boolean,
188
+ trackState: boolean = true,
189
+ telemetryContext?: ITelemetryContext,
190
+ ): Promise<ISummarizeResult> {
191
+ // If GC is not disabled and a summary is in progress, GC should have run and updated the used routes for this
192
+ // summary by calling updateUsedRoutes which sets wipSerializedUsedRoutes.
193
+ if (!this.gcDisabled && this.isSummaryInProgress()) {
194
+ assert(
195
+ this.wipSerializedUsedRoutes !== undefined,
196
+ 0x1b1 /* "wip used routes should be set if tracking a summary" */,
197
+ );
198
+ }
199
+
200
+ // If trackState is true, get summary from base summarizer node which tracks summary state.
201
+ // If trackState is false, get summary from summarizeInternal.
202
+ return trackState
203
+ ? super.summarize(fullTree, true /* trackState */, telemetryContext)
204
+ : this.summarizeFn(fullTree, trackState, telemetryContext);
205
+ }
206
+
207
+ /**
208
+ * Returns the GC data of this node. If nothing has changed since last summary, it tries to reuse the data from
209
+ * the previous summary. Else, it gets new GC data from the underlying Fluid object.
210
+ * @param fullGC - true to bypass optimizations and force full generation of GC data.
211
+ */
212
+ public async getGCData(fullGC: boolean = false): Promise<IGarbageCollectionData> {
213
+ assert(
214
+ !this.gcDisabled,
215
+ 0x1b2 /* "Getting GC data should not be called when GC is disabled!" */,
216
+ );
217
+ assert(
218
+ this.getGCDataFn !== undefined,
219
+ 0x1b3 /* "GC data cannot be retrieved without getGCDataFn" */,
220
+ );
221
+
222
+ // Load GC details from the initial summary, if not already loaded. If this is the first time this function is
223
+ // called and the node's data has not changed since last summary, the GC data in initial details is returned.
224
+ await this.loadBaseGCDetails();
225
+
226
+ // If there is no new data since last summary and we have GC data from the previous run, return it. The previous
227
+ // GC data may not be available if loaded from a snapshot with either GC disabled or before GC was added.
228
+ // Note - canReuseHandle is checked to be consistent with summarize - generate GC data for nodes for which
229
+ // summary must be generated.
230
+ if (this.canReuseHandle && !fullGC && !this.hasDataChanged() && this.gcData !== undefined) {
231
+ return cloneGCData(this.gcData);
232
+ }
233
+
234
+ const gcData = await this.getGCDataFn(fullGC);
235
+ this.gcData = cloneGCData(gcData);
236
+ return gcData;
237
+ }
238
+
239
+ /**
240
+ * Called during the start of a summary. Updates the work-in-progress used routes.
241
+ */
242
+ public startSummary(referenceSequenceNumber: number, summaryLogger: ITelemetryLoggerExt) {
243
+ // If GC is disabled, skip setting wip used routes since we should not track GC state.
244
+ if (!this.gcDisabled) {
245
+ assert(
246
+ this.wipSerializedUsedRoutes === undefined,
247
+ 0x1b4 /* "We should not already be tracking used routes when to track a new summary" */,
248
+ );
249
+ }
250
+ super.startSummary(referenceSequenceNumber, summaryLogger);
251
+ }
252
+
253
+ /**
254
+ * Validates that the in-progress summary is correct for all nodes, i.e., GC should have run for non-skipped nodes.
255
+ * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when running GC.
256
+ * In that case, the children will not have work-in-progress state.
257
+ *
258
+ * @returns ValidateSummaryResult which contains a boolean success indicating whether the validation was successful.
259
+ * In case of failure, additional information is returned indicating type of failure and where it was.
260
+ */
261
+ protected validateSummaryCore(parentSkipRecursion: boolean): ValidateSummaryResult {
262
+ if (this.wasGCMissed()) {
263
+ return {
264
+ success: false,
265
+ reason: "NodeDidNotRunGC",
266
+ id: {
267
+ tag: TelemetryDataTag.CodeArtifact,
268
+ value: this.telemetryNodeId,
269
+ },
270
+ // These errors are usually transient and should go away when summarize / GC is retried.
271
+ retryAfterSeconds: 1,
272
+ };
273
+ }
274
+ return super.validateSummaryCore(parentSkipRecursion);
275
+ }
276
+
277
+ private wasGCMissed(): boolean {
278
+ // If GC is disabled, it should not have run so it was not missed.
279
+ // Otherwise, GC should have been called on this node and wipSerializedUsedRoutes must be set.
280
+ if (this.gcDisabled || this.wipSerializedUsedRoutes !== undefined) {
281
+ return false;
282
+ }
283
+ /**
284
+ * The absence of wip used routes indicates that GC was not run on this node. This can happen if:
285
+ * 1. A child node was created after GC was already run on the parent. For example, a data store
286
+ * is realized (loaded) after GC was run on it creating summarizer nodes for its DDSes. In this
287
+ * case, the parent will pass on used routes to the child nodes and it will have wip used routes.
288
+ * 2. A new node was created but GC was never run on it. This can mean that the GC data generated
289
+ * during summarize is incomplete.
290
+ *
291
+ * This happens due to scenarios such as data store created during summarize. Such errors should go away when
292
+ * summarize is attempted again.
293
+ */
294
+ return true;
295
+ }
296
+
297
+ /**
298
+ * Called after summary has been uploaded to the server. Add the work-in-progress state to the pending
299
+ * summary queue. We track this until we get an ack from the server for this summary.
300
+ * @param proposalHandle - The handle of the summary that was uploaded to the server.
301
+ * @param parentPath - The path of the parent node which is used to build the path of this node.
302
+ * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.
303
+ * In that case, the children will not have work-in-progress state.
304
+ * @param validate - true to validate that the in-progress summary is correct for all nodes.
305
+ */
306
+ protected completeSummaryCore(
307
+ proposalHandle: string,
308
+ parentPath: EscapedPath | undefined,
309
+ parentSkipRecursion: boolean,
310
+ validate: boolean,
311
+ ) {
312
+ if (validate && this.wasGCMissed()) {
313
+ this.throwUnexpectedError({
314
+ eventName: "NodeDidNotRunGC",
315
+ proposalHandle,
316
+ });
317
+ }
318
+
319
+ let wipSerializedUsedRoutes: string | undefined;
320
+ // If GC is disabled, don't set wip used routes.
321
+ if (!this.gcDisabled) {
322
+ wipSerializedUsedRoutes = this.wipSerializedUsedRoutes;
323
+ }
324
+
325
+ super.completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion, validate);
326
+
327
+ // If GC is disabled, skip setting pending summary with GC state.
328
+ if (!this.gcDisabled) {
329
+ const summaryNode = this.pendingSummaries.get(proposalHandle);
330
+ if (summaryNode !== undefined) {
331
+ const summaryNodeWithGC = new SummaryNodeWithGC(
332
+ wipSerializedUsedRoutes,
333
+ summaryNode,
334
+ );
335
+ this.pendingSummaries.set(proposalHandle, summaryNodeWithGC);
336
+ }
337
+ }
338
+ }
339
+
340
+ /**
341
+ * Clears the work-in-progress state.
342
+ */
343
+ public clearSummary() {
344
+ this.wipSerializedUsedRoutes = undefined;
345
+ super.clearSummary();
346
+ }
347
+
348
+ /**
349
+ * Called when we get an ack from the server for a summary we sent. Update the reference state of this node
350
+ * from the state in the pending summary queue.
351
+ */
352
+ protected refreshLatestSummaryFromPending(
353
+ proposalHandle: string,
354
+ referenceSequenceNumber: number,
355
+ ): void {
356
+ // If GC is disabled, skip setting referenced used routes since we are not tracking GC state.
357
+ if (!this.gcDisabled) {
358
+ const summaryNode = this.pendingSummaries.get(proposalHandle);
359
+ if (summaryNode !== undefined) {
360
+ // If a pending summary exists, it must have used routes since GC is enabled.
361
+ const summaryNodeWithGC = summaryNode as SummaryNodeWithGC;
362
+ if (summaryNodeWithGC.serializedUsedRoutes === undefined) {
363
+ const error = new LoggingError("MissingGCStateInPendingSummary", {
364
+ proposalHandle,
365
+ referenceSequenceNumber,
366
+ ...tagCodeArtifacts({
367
+ id: this.telemetryNodeId,
368
+ }),
369
+ });
370
+ this.logger.sendErrorEvent(
371
+ {
372
+ eventName: error.message,
373
+ },
374
+ error,
375
+ );
376
+ throw error;
377
+ }
378
+ this.referenceUsedRoutes = JSON.parse(summaryNodeWithGC.serializedUsedRoutes);
379
+ }
380
+ }
381
+
382
+ return super.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);
383
+ }
384
+
385
+ /**
386
+ * Override the createChild method to return an instance of SummarizerNodeWithGC.
387
+ */
388
+ public createChild(
389
+ /** Summarize function */
390
+ summarizeInternalFn: SummarizeInternalFn,
391
+ /** Initial id or path part of this node */
392
+ id: string,
393
+ /**
394
+ * Information needed to create the node.
395
+ * If it is from a base summary, it will assert that a summary has been seen.
396
+ * Attach information if it is created from an attach op.
397
+ */
398
+ createParam: CreateChildSummarizerNodeParam,
399
+ config: ISummarizerNodeConfigWithGC = {},
400
+ getGCDataFn?: (fullGC?: boolean) => Promise<IGarbageCollectionData>,
401
+ getBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,
402
+ ): ISummarizerNodeWithGC {
403
+ assert(!this.children.has(id), 0x1b6 /* "Create SummarizerNode child already exists" */);
404
+ /**
405
+ * Update the child node's base GC details from this node's current GC details instead of updating from the base
406
+ * GC details of this node. This will handle scenarios where the GC details was updated during refresh from
407
+ * snapshot and the child node wasn't created then. If a child is created after that, its GC details should be
408
+ * the one from the downloaded snapshot and not the base GC details.
409
+ */
410
+ const getChildBaseGCDetailsFn = async () => {
411
+ const childNodesBaseGCDetails = await this.childNodesBaseGCDetailsP;
412
+ return childNodesBaseGCDetails.get(id) ?? {};
413
+ };
414
+
415
+ const createDetails: ICreateChildDetails = this.getCreateDetailsForChild(id, createParam);
416
+ const child = new SummarizerNodeWithGC(
417
+ this.logger,
418
+ summarizeInternalFn,
419
+ {
420
+ ...config,
421
+ // Propagate our gcDisabled state to the child if its not explicity specified in child's config.
422
+ gcDisabled: config.gcDisabled ?? this.gcDisabled,
423
+ },
424
+ createDetails.changeSequenceNumber,
425
+ createDetails.latestSummary,
426
+ createDetails.initialSummary,
427
+ this.wipSummaryLogger,
428
+ getGCDataFn,
429
+ getChildBaseGCDetailsFn,
430
+ createDetails.telemetryNodeId,
431
+ );
432
+
433
+ // There may be additional state that has to be updated in this child. For example, if a summary is being
434
+ // tracked, the child's summary tracking state needs to be updated too.
435
+ this.maybeUpdateChildState(child, id);
436
+
437
+ this.children.set(id, child);
438
+ return child;
439
+ }
440
+
441
+ /**
442
+ * Updates the state of the child if required. For example, if a summary is currently being tracked, the child's
443
+ * summary tracking state needs to be updated too.
444
+ * Also, in case a child node gets realized in between Summary Op and Summary Ack, let's initialize the child's
445
+ * pending summary as well. Finally, if the pendingSummaries entries have serializedRoutes, replicate them to the
446
+ * pendingSummaries from the child nodes.
447
+ * @param child - The child node whose state is to be updated.
448
+ * @param id - Initial id or path part of this node
449
+ */
450
+ protected maybeUpdateChildState(child: SummarizerNodeWithGC, id: string) {
451
+ super.maybeUpdateChildState(child, id);
452
+
453
+ // In case we have pending summaries on the parent, let's initialize it on the child.
454
+ if (child.latestSummary !== undefined) {
455
+ for (const [key, value] of this.pendingSummaries.entries()) {
456
+ const summaryNodeWithGC = value as SummaryNodeWithGC;
457
+ if (summaryNodeWithGC.serializedUsedRoutes !== undefined) {
458
+ const childNodeUsedRoutes = unpackChildNodesUsedRoutes(
459
+ JSON.parse(summaryNodeWithGC.serializedUsedRoutes),
460
+ );
461
+ const newSerializedRoutes = childNodeUsedRoutes.get(id) ?? [""];
462
+ const newLatestSummaryNode = new SummaryNodeWithGC(
463
+ JSON.stringify(newSerializedRoutes),
464
+ {
465
+ referenceSequenceNumber: value.referenceSequenceNumber,
466
+ basePath: child.latestSummary.basePath,
467
+ localPath: child.latestSummary.localPath,
468
+ },
469
+ );
470
+ child.addPendingSummary(key, newLatestSummaryNode);
471
+ }
472
+ }
473
+ }
474
+ }
475
+
476
+ /**
477
+ * Deletes the child node with the given id.
478
+ */
479
+ public deleteChild(id: string): void {
480
+ this.children.delete(id);
481
+ }
482
+
483
+ /**
484
+ * Override the getChild method to return an instance of SummarizerNodeWithGC.
485
+ */
486
+ public getChild(id: string): ISummarizerNodeWithGC | undefined {
487
+ return this.children.get(id) as SummarizerNodeWithGC;
488
+ }
489
+
490
+ public isReferenced(): boolean {
491
+ return this.usedRoutes.includes("") || this.usedRoutes.includes("/");
492
+ }
493
+
494
+ public updateUsedRoutes(usedRoutes: string[]) {
495
+ // Sort the given routes before updating. This will ensure that the routes compared in hasUsedStateChanged()
496
+ // are in the same order.
497
+ this.usedRoutes = usedRoutes.sort();
498
+
499
+ // If GC is not disabled and a summary is in progress, update the work-in-progress used routes so that it can
500
+ // be tracked for this summary.
501
+ if (!this.gcDisabled && this.isSummaryInProgress()) {
502
+ this.wipSerializedUsedRoutes = JSON.stringify(this.usedRoutes);
503
+ }
504
+ }
505
+
506
+ /**
507
+ * Override the hasChanged method. If this node data or its used state changed, the node is considered changed.
508
+ */
509
+ protected hasChanged(): boolean {
510
+ return this.hasDataChanged() || this.hasUsedStateChanged();
511
+ }
512
+
513
+ /**
514
+ * This tells whether the data in this node has changed or not.
515
+ */
516
+ private hasDataChanged(): boolean {
517
+ return super.hasChanged();
518
+ }
519
+
520
+ /**
521
+ * This tells whether the used state of this node has changed since last successful summary. If the used routes
522
+ * of this node changed, its used state is considered changed. Basically, if this node or any of its child nodes
523
+ * was previously used and became unused (or vice versa), its used state has changed.
524
+ */
525
+ private hasUsedStateChanged(): boolean {
526
+ // If GC is disabled, we are not tracking used state, return false.
527
+ if (this.gcDisabled) {
528
+ return false;
529
+ }
530
+
531
+ return (
532
+ this.referenceUsedRoutes === undefined ||
533
+ JSON.stringify(this.usedRoutes) !== JSON.stringify(this.referenceUsedRoutes)
534
+ );
535
+ }
536
+ }
537
+
538
+ /**
539
+ * Creates a root summarizer node with GC functionality built-in.
540
+ * @param logger - Logger to use within SummarizerNode
541
+ * @param summarizeInternalFn - Function to generate summary
542
+ * @param changeSequenceNumber - Sequence number of latest change to new node/subtree
543
+ * @param referenceSequenceNumber - Reference sequence number of last acked summary,
544
+ * or undefined if not loaded from summary
545
+ * @param config - Configure behavior of summarizer node
546
+ * @param getGCDataFn - Function to get the GC data of this node
547
+ * @param baseGCDetailsP - Function to get the initial GC details of this node
548
+ */
549
+ export const createRootSummarizerNodeWithGC = (
550
+ logger: ITelemetryBaseLogger,
551
+ summarizeInternalFn: SummarizeInternalFn,
552
+ changeSequenceNumber: number,
553
+ referenceSequenceNumber: number | undefined,
554
+ config: ISummarizerNodeConfigWithGC = {},
555
+ getGCDataFn?: (fullGC?: boolean) => Promise<IGarbageCollectionData>,
556
+ getBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,
557
+ ): IRootSummarizerNodeWithGC =>
558
+ new SummarizerNodeWithGC(
559
+ logger,
560
+ summarizeInternalFn,
561
+ config,
562
+ changeSequenceNumber,
563
+ referenceSequenceNumber === undefined
564
+ ? undefined
565
+ : SummaryNode.createForRoot(referenceSequenceNumber),
566
+ undefined /* initialSummary */,
567
+ undefined /* wipSummaryLogger */,
568
+ getGCDataFn,
569
+ getBaseGCDetailsFn,
570
+ "" /* telemetryId */,
571
+ );