@fluidframework/container-runtime 2.0.0-rc.1.0.6 → 2.0.0-rc.2.0.1

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 (687) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +5 -5
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +54 -0
  4. package/README.md +45 -0
  5. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  6. package/api-extractor-lint.json +1 -1
  7. package/api-extractor.json +1 -1
  8. package/api-report/container-runtime.api.md +63 -29
  9. package/dist/batchTracker.d.ts +1 -2
  10. package/dist/batchTracker.d.ts.map +1 -1
  11. package/dist/batchTracker.js.map +1 -1
  12. package/dist/blobManager.js.map +1 -1
  13. package/{lib/dataStores.d.mts → dist/channelCollection.d.ts} +94 -27
  14. package/dist/channelCollection.d.ts.map +1 -0
  15. package/dist/{dataStores.js → channelCollection.js} +359 -84
  16. package/dist/channelCollection.js.map +1 -0
  17. package/dist/connectionTelemetry.d.ts +11 -1
  18. package/dist/connectionTelemetry.d.ts.map +1 -1
  19. package/dist/connectionTelemetry.js +42 -4
  20. package/dist/connectionTelemetry.js.map +1 -1
  21. package/dist/container-runtime-alpha.d.ts +93 -39
  22. package/dist/container-runtime-beta.d.ts +27 -9
  23. package/dist/container-runtime-public.d.ts +27 -9
  24. package/dist/container-runtime-untrimmed.d.ts +118 -39
  25. package/dist/containerHandleContext.d.ts +1 -1
  26. package/dist/containerHandleContext.d.ts.map +1 -1
  27. package/dist/containerHandleContext.js.map +1 -1
  28. package/dist/containerRuntime.d.ts +74 -54
  29. package/dist/containerRuntime.d.ts.map +1 -1
  30. package/dist/containerRuntime.js +534 -410
  31. package/dist/containerRuntime.js.map +1 -1
  32. package/dist/dataStore.d.ts +2 -3
  33. package/dist/dataStore.d.ts.map +1 -1
  34. package/dist/dataStore.js +12 -11
  35. package/dist/dataStore.js.map +1 -1
  36. package/dist/dataStoreContext.d.ts +34 -29
  37. package/dist/dataStoreContext.d.ts.map +1 -1
  38. package/dist/dataStoreContext.js +157 -133
  39. package/dist/dataStoreContext.js.map +1 -1
  40. package/dist/dataStoreContexts.d.ts +1 -1
  41. package/dist/dataStoreContexts.d.ts.map +1 -1
  42. package/dist/dataStoreContexts.js.map +1 -1
  43. package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
  44. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  45. package/dist/deltaManagerSummarizerProxy.js +91 -5
  46. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  47. package/dist/gc/garbageCollection.d.ts +5 -4
  48. package/dist/gc/garbageCollection.d.ts.map +1 -1
  49. package/dist/gc/garbageCollection.js +64 -53
  50. package/dist/gc/garbageCollection.js.map +1 -1
  51. package/dist/gc/gcConfigs.d.ts +2 -2
  52. package/dist/gc/gcConfigs.d.ts.map +1 -1
  53. package/dist/gc/gcConfigs.js +21 -21
  54. package/dist/gc/gcConfigs.js.map +1 -1
  55. package/dist/gc/gcDefinitions.d.ts +10 -3
  56. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  57. package/dist/gc/gcDefinitions.js.map +1 -1
  58. package/dist/gc/gcHelpers.d.ts +2 -2
  59. package/dist/gc/gcHelpers.d.ts.map +1 -1
  60. package/dist/gc/gcHelpers.js.map +1 -1
  61. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  62. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  63. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  64. package/dist/gc/gcSummaryStateTracker.d.ts +4 -4
  65. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  66. package/dist/gc/gcSummaryStateTracker.js +5 -5
  67. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  68. package/dist/gc/gcTelemetry.d.ts +6 -7
  69. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  70. package/dist/gc/gcTelemetry.js +17 -17
  71. package/dist/gc/gcTelemetry.js.map +1 -1
  72. package/dist/gc/gcUnreferencedStateTracker.d.ts +1 -1
  73. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  74. package/dist/gc/gcUnreferencedStateTracker.js +10 -10
  75. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  76. package/dist/gc/index.d.ts +8 -8
  77. package/dist/gc/index.d.ts.map +1 -1
  78. package/dist/gc/index.js +39 -39
  79. package/dist/gc/index.js.map +1 -1
  80. package/dist/index.d.ts +8 -20
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +28 -40
  83. package/dist/index.js.map +1 -1
  84. package/dist/messageTypes.d.ts +4 -4
  85. package/dist/messageTypes.d.ts.map +1 -1
  86. package/dist/messageTypes.js.map +1 -1
  87. package/dist/opLifecycle/batchManager.d.ts +2 -2
  88. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  89. package/dist/opLifecycle/batchManager.js.map +1 -1
  90. package/dist/opLifecycle/definitions.d.ts +2 -2
  91. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  92. package/dist/opLifecycle/definitions.js.map +1 -1
  93. package/dist/opLifecycle/index.d.ts +8 -8
  94. package/dist/opLifecycle/index.d.ts.map +1 -1
  95. package/dist/opLifecycle/index.js +18 -18
  96. package/dist/opLifecycle/index.js.map +1 -1
  97. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  98. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  99. package/dist/opLifecycle/opCompressor.js +4 -4
  100. package/dist/opLifecycle/opCompressor.js.map +1 -1
  101. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  102. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  103. package/dist/opLifecycle/opDecompressor.js +3 -3
  104. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  105. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  106. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  107. package/dist/opLifecycle/opGroupingManager.js +1 -10
  108. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  109. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  110. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  111. package/dist/opLifecycle/opSplitter.js +5 -5
  112. package/dist/opLifecycle/opSplitter.js.map +1 -1
  113. package/dist/opLifecycle/outbox.d.ts +7 -7
  114. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  115. package/dist/opLifecycle/outbox.js +20 -12
  116. package/dist/opLifecycle/outbox.js.map +1 -1
  117. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  118. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  119. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  120. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  121. package/dist/package.json +3 -0
  122. package/dist/packageVersion.d.ts +1 -1
  123. package/dist/packageVersion.js +1 -1
  124. package/dist/packageVersion.js.map +1 -1
  125. package/dist/pendingStateManager.d.ts +2 -1
  126. package/dist/pendingStateManager.d.ts.map +1 -1
  127. package/dist/pendingStateManager.js +18 -10
  128. package/dist/pendingStateManager.js.map +1 -1
  129. package/dist/scheduleManager.d.ts +1 -2
  130. package/dist/scheduleManager.d.ts.map +1 -1
  131. package/dist/scheduleManager.js +5 -5
  132. package/dist/scheduleManager.js.map +1 -1
  133. package/dist/summary/index.d.ts +12 -12
  134. package/dist/summary/index.d.ts.map +1 -1
  135. package/dist/summary/index.js +43 -43
  136. package/dist/summary/index.js.map +1 -1
  137. package/dist/summary/orderedClientElection.js +8 -8
  138. package/dist/summary/orderedClientElection.js.map +1 -1
  139. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  140. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  141. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  142. package/dist/summary/runningSummarizer.d.ts +11 -10
  143. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  144. package/dist/summary/runningSummarizer.js +114 -81
  145. package/dist/summary/runningSummarizer.js.map +1 -1
  146. package/dist/summary/summarizer.d.ts +4 -4
  147. package/dist/summary/summarizer.d.ts.map +1 -1
  148. package/dist/summary/summarizer.js +6 -6
  149. package/dist/summary/summarizer.js.map +1 -1
  150. package/dist/summary/summarizerClientElection.d.ts +2 -2
  151. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  152. package/dist/summary/summarizerClientElection.js.map +1 -1
  153. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  154. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  155. package/dist/summary/summarizerHeuristics.js.map +1 -1
  156. package/dist/summary/summarizerNode/index.d.ts +3 -3
  157. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  158. package/dist/summary/summarizerNode/index.js +4 -4
  159. package/dist/summary/summarizerNode/index.js.map +1 -1
  160. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  161. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  162. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  163. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  164. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  167. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  168. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  171. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  172. package/dist/summary/summarizerTypes.d.ts +10 -21
  173. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  174. package/dist/summary/summarizerTypes.js.map +1 -1
  175. package/dist/summary/summaryFormat.d.ts +15 -2
  176. package/dist/summary/summaryFormat.d.ts.map +1 -1
  177. package/dist/summary/summaryFormat.js.map +1 -1
  178. package/dist/summary/summaryGenerator.d.ts +6 -5
  179. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  180. package/dist/summary/summaryGenerator.js +10 -1
  181. package/dist/summary/summaryGenerator.js.map +1 -1
  182. package/dist/summary/summaryManager.d.ts +5 -6
  183. package/dist/summary/summaryManager.d.ts.map +1 -1
  184. package/dist/summary/summaryManager.js +4 -5
  185. package/dist/summary/summaryManager.js.map +1 -1
  186. package/dist/tsdoc-metadata.json +1 -1
  187. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  188. package/lib/batchTracker.d.ts.map +1 -0
  189. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  190. package/lib/batchTracker.js.map +1 -0
  191. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
  192. package/lib/blobManager.d.ts.map +1 -0
  193. package/lib/{blobManager.mjs → blobManager.js} +1 -1
  194. package/lib/blobManager.js.map +1 -0
  195. package/{dist/dataStores.d.ts → lib/channelCollection.d.ts} +94 -27
  196. package/lib/channelCollection.d.ts.map +1 -0
  197. package/lib/{dataStores.mjs → channelCollection.js} +345 -73
  198. package/lib/channelCollection.js.map +1 -0
  199. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  200. package/lib/connectionTelemetry.d.ts.map +1 -0
  201. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  202. package/lib/connectionTelemetry.js.map +1 -0
  203. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +93 -39
  204. package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
  205. package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
  206. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +118 -39
  207. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  208. package/lib/containerHandleContext.d.ts.map +1 -0
  209. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  210. package/lib/containerHandleContext.js.map +1 -0
  211. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +79 -55
  212. package/lib/containerRuntime.d.ts.map +1 -0
  213. package/lib/{containerRuntime.mjs → containerRuntime.js} +453 -331
  214. package/lib/containerRuntime.js.map +1 -0
  215. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  216. package/lib/dataStore.d.ts.map +1 -0
  217. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  218. package/lib/dataStore.js.map +1 -0
  219. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +35 -30
  220. package/lib/dataStoreContext.d.ts.map +1 -0
  221. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +146 -122
  222. package/lib/dataStoreContext.js.map +1 -0
  223. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
  224. package/lib/dataStoreContexts.d.ts.map +1 -0
  225. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
  226. package/lib/dataStoreContexts.js.map +1 -0
  227. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  228. package/lib/dataStoreRegistry.d.ts.map +1 -0
  229. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  230. package/lib/dataStoreRegistry.js.map +1 -0
  231. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  232. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  233. package/lib/deltaManagerSummarizerProxy.js +124 -0
  234. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  235. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  236. package/lib/deltaScheduler.d.ts.map +1 -0
  237. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  238. package/lib/deltaScheduler.js.map +1 -0
  239. package/lib/{error.d.mts → error.d.ts} +1 -1
  240. package/lib/error.d.ts.map +1 -0
  241. package/lib/{error.mjs → error.js} +1 -1
  242. package/lib/error.js.map +1 -0
  243. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +6 -5
  244. package/lib/gc/garbageCollection.d.ts.map +1 -0
  245. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +25 -14
  246. package/lib/gc/garbageCollection.js.map +1 -0
  247. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  248. package/lib/gc/gcConfigs.d.ts.map +1 -0
  249. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
  250. package/lib/gc/gcConfigs.js.map +1 -0
  251. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +11 -4
  252. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  253. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +1 -1
  254. package/lib/gc/gcDefinitions.js.map +1 -0
  255. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  256. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  257. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  258. package/lib/gc/gcHelpers.js.map +1 -0
  259. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  260. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  261. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  262. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  263. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  264. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  265. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  266. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  267. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +5 -5
  268. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  269. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +4 -4
  270. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  271. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +7 -8
  272. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  273. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +2 -2
  274. package/lib/gc/gcTelemetry.js.map +1 -0
  275. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +2 -2
  276. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  277. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +2 -2
  278. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  279. package/lib/gc/{index.d.mts → index.d.ts} +9 -9
  280. package/lib/gc/index.d.ts.map +1 -0
  281. package/lib/gc/{index.mjs → index.js} +8 -8
  282. package/lib/gc/index.js.map +1 -0
  283. package/lib/{index.d.mts → index.d.ts} +9 -21
  284. package/lib/index.d.ts.map +1 -0
  285. package/lib/index.js +12 -0
  286. package/lib/index.js.map +1 -0
  287. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  288. package/lib/messageTypes.d.ts.map +1 -0
  289. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  290. package/lib/messageTypes.js.map +1 -0
  291. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  292. package/lib/metadata.d.ts.map +1 -0
  293. package/lib/{metadata.mjs → metadata.js} +1 -1
  294. package/lib/metadata.js.map +1 -0
  295. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  296. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  297. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  298. package/lib/opLifecycle/batchManager.js.map +1 -0
  299. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  300. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  301. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  302. package/lib/opLifecycle/definitions.js.map +1 -0
  303. package/lib/opLifecycle/index.d.ts +13 -0
  304. package/lib/opLifecycle/index.d.ts.map +1 -0
  305. package/lib/opLifecycle/index.js +12 -0
  306. package/lib/opLifecycle/index.js.map +1 -0
  307. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  308. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  309. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  310. package/lib/opLifecycle/opCompressor.js.map +1 -0
  311. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  312. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  313. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  314. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  315. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  316. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  317. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  318. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  319. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  320. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  321. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  322. package/lib/opLifecycle/opSplitter.js.map +1 -0
  323. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  324. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  325. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  326. package/lib/opLifecycle/outbox.js.map +1 -0
  327. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  328. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  329. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  330. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  331. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  332. package/lib/opProperties.d.ts.map +1 -0
  333. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  334. package/lib/opProperties.js.map +1 -0
  335. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  336. package/lib/packageVersion.d.ts.map +1 -0
  337. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  338. package/lib/packageVersion.js.map +1 -0
  339. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  340. package/lib/pendingStateManager.d.ts.map +1 -0
  341. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  342. package/lib/pendingStateManager.js.map +1 -0
  343. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  344. package/lib/scheduleManager.d.ts.map +1 -0
  345. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  346. package/lib/scheduleManager.js.map +1 -0
  347. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  348. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  349. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  350. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  351. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  352. package/lib/summary/index.d.ts.map +1 -0
  353. package/lib/summary/{index.mjs → index.js} +12 -12
  354. package/lib/summary/index.js.map +1 -0
  355. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  356. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  357. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  358. package/lib/summary/orderedClientElection.js.map +1 -0
  359. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  360. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  361. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  362. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  363. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  364. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  365. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  366. package/lib/summary/runningSummarizer.js.map +1 -0
  367. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  368. package/lib/summary/summarizer.d.ts.map +1 -0
  369. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  370. package/lib/summary/summarizer.js.map +1 -0
  371. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  372. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  373. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  374. package/lib/summary/summarizerClientElection.js.map +1 -0
  375. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  376. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  377. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  378. package/lib/summary/summarizerHeuristics.js.map +1 -0
  379. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  380. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  381. package/lib/summary/summarizerNode/index.js +7 -0
  382. package/lib/summary/summarizerNode/index.js.map +1 -0
  383. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  384. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  385. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  386. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  387. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  388. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  389. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  390. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  391. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  392. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  393. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  394. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  395. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  396. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  397. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  398. package/lib/summary/summarizerTypes.js.map +1 -0
  399. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  400. package/lib/summary/summaryCollection.d.ts.map +1 -0
  401. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  402. package/lib/summary/summaryCollection.js.map +1 -0
  403. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  404. package/lib/summary/summaryFormat.d.ts.map +1 -0
  405. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  406. package/lib/summary/summaryFormat.js.map +1 -0
  407. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  408. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  409. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  410. package/lib/summary/summaryGenerator.js.map +1 -0
  411. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  412. package/lib/summary/summaryManager.d.ts.map +1 -0
  413. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  414. package/lib/summary/summaryManager.js.map +1 -0
  415. package/lib/test/batchTracker.spec.js +88 -0
  416. package/lib/test/batchTracker.spec.js.map +1 -0
  417. package/lib/test/blobManager.spec.js +835 -0
  418. package/lib/test/blobManager.spec.js.map +1 -0
  419. package/lib/test/channelCollection.spec.js +141 -0
  420. package/lib/test/channelCollection.spec.js.map +1 -0
  421. package/lib/test/containerRuntime.spec.js +1748 -0
  422. package/lib/test/containerRuntime.spec.js.map +1 -0
  423. package/lib/test/dataStoreContext.spec.js +801 -0
  424. package/lib/test/dataStoreContext.spec.js.map +1 -0
  425. package/lib/test/dataStoreCreation.spec.js +312 -0
  426. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  427. package/lib/test/dataStoreRegistry.spec.js +26 -0
  428. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  429. package/lib/test/fuzz/fuzzUtils.js +66 -0
  430. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  431. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  432. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  433. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  434. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  435. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  436. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  437. package/lib/test/gc/garbageCollection.spec.js +1465 -0
  438. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  439. package/lib/test/gc/gcConfigs.spec.js +690 -0
  440. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  441. package/lib/test/gc/gcHelpers.spec.js +110 -0
  442. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  443. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  444. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  445. package/lib/test/gc/gcStats.spec.js +391 -0
  446. package/lib/test/gc/gcStats.spec.js.map +1 -0
  447. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  448. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  449. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  450. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  451. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  452. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  453. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  454. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  455. package/lib/test/getPendingBlobs.spec.js +193 -0
  456. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  457. package/lib/test/hardwareStats.spec.js +93 -0
  458. package/lib/test/hardwareStats.spec.js.map +1 -0
  459. package/lib/test/index.js +6 -0
  460. package/lib/test/index.js.map +1 -0
  461. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  462. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  463. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  464. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  465. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  466. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  467. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  468. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  469. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  470. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  471. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  472. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  473. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  474. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  475. package/lib/test/pendingStateManager.spec.js +329 -0
  476. package/lib/test/pendingStateManager.spec.js.map +1 -0
  477. package/lib/test/scheduleManager.spec.js +270 -0
  478. package/lib/test/scheduleManager.spec.js.map +1 -0
  479. package/lib/test/summarizerNode.spec.js +326 -0
  480. package/lib/test/summarizerNode.spec.js.map +1 -0
  481. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  482. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  483. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  484. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  485. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  486. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  487. package/lib/test/summary/summarizer.spec.js +29 -0
  488. package/lib/test/summary/summarizer.spec.js.map +1 -0
  489. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  490. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  491. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  492. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  493. package/lib/test/summary/summaryCollection.spec.js +200 -0
  494. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  495. package/lib/test/summary/summaryManager.spec.js +430 -0
  496. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  497. package/lib/test/summary/testQuorumClients.js +34 -0
  498. package/lib/test/summary/testQuorumClients.js.map +1 -0
  499. package/lib/test/throttler.spec.js +175 -0
  500. package/lib/test/throttler.spec.js.map +1 -0
  501. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  502. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  503. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  504. package/lib/throttler.d.ts.map +1 -0
  505. package/lib/{throttler.mjs → throttler.js} +1 -1
  506. package/lib/throttler.js.map +1 -0
  507. package/package.json +99 -88
  508. package/src/batchTracker.ts +1 -1
  509. package/src/blobManager.ts +1 -1
  510. package/src/{dataStores.ts → channelCollection.ts} +467 -88
  511. package/src/connectionTelemetry.ts +42 -3
  512. package/src/containerHandleContext.ts +1 -1
  513. package/src/containerRuntime.ts +649 -462
  514. package/src/dataStore.ts +13 -15
  515. package/src/dataStoreContext.ts +203 -173
  516. package/src/dataStoreContexts.ts +1 -1
  517. package/src/deltaManagerSummarizerProxy.ts +132 -7
  518. package/src/gc/garbageCollection.ts +29 -16
  519. package/src/gc/gcConfigs.ts +3 -3
  520. package/src/gc/gcDefinitions.ts +10 -3
  521. package/src/gc/gcHelpers.ts +2 -2
  522. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  523. package/src/gc/gcSummaryStateTracker.ts +5 -6
  524. package/src/gc/gcTelemetry.ts +6 -6
  525. package/src/gc/gcUnreferencedStateTracker.ts +1 -1
  526. package/src/gc/index.ts +8 -8
  527. package/src/index.ts +16 -27
  528. package/src/messageTypes.ts +4 -4
  529. package/src/opLifecycle/README.md +2 -4
  530. package/src/opLifecycle/batchManager.ts +2 -2
  531. package/src/opLifecycle/definitions.ts +2 -2
  532. package/src/opLifecycle/index.ts +8 -8
  533. package/src/opLifecycle/opCompressor.ts +3 -3
  534. package/src/opLifecycle/opDecompressor.ts +3 -3
  535. package/src/opLifecycle/opGroupingManager.ts +3 -12
  536. package/src/opLifecycle/opSplitter.ts +3 -3
  537. package/src/opLifecycle/outbox.ts +29 -9
  538. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  539. package/src/packageVersion.ts +1 -1
  540. package/src/pendingStateManager.ts +19 -13
  541. package/src/scheduleManager.ts +4 -4
  542. package/src/summary/index.ts +13 -12
  543. package/src/summary/orderedClientElection.ts +1 -1
  544. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  545. package/src/summary/runningSummarizer.ts +141 -93
  546. package/src/summary/summarizer.ts +7 -7
  547. package/src/summary/summarizerClientElection.ts +2 -2
  548. package/src/summary/summarizerHeuristics.ts +3 -3
  549. package/src/summary/summarizerNode/index.ts +6 -3
  550. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  551. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  552. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  553. package/src/summary/summarizerTypes.ts +12 -24
  554. package/src/summary/summaryFormat.ts +16 -2
  555. package/src/summary/summaryGenerator.ts +16 -4
  556. package/src/summary/summaryManager.ts +6 -7
  557. package/tsconfig.cjs.json +7 -0
  558. package/tsconfig.json +2 -5
  559. package/dist/dataStores.d.ts.map +0 -1
  560. package/dist/dataStores.js.map +0 -1
  561. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  562. package/dist/deltaManagerProxyBase.js +0 -77
  563. package/dist/deltaManagerProxyBase.js.map +0 -1
  564. package/lib/batchTracker.d.mts.map +0 -1
  565. package/lib/batchTracker.mjs.map +0 -1
  566. package/lib/blobManager.d.mts.map +0 -1
  567. package/lib/blobManager.mjs.map +0 -1
  568. package/lib/connectionTelemetry.d.mts.map +0 -1
  569. package/lib/connectionTelemetry.mjs.map +0 -1
  570. package/lib/containerHandleContext.d.mts.map +0 -1
  571. package/lib/containerHandleContext.mjs.map +0 -1
  572. package/lib/containerRuntime.d.mts.map +0 -1
  573. package/lib/containerRuntime.mjs.map +0 -1
  574. package/lib/dataStore.d.mts.map +0 -1
  575. package/lib/dataStore.mjs.map +0 -1
  576. package/lib/dataStoreContext.d.mts.map +0 -1
  577. package/lib/dataStoreContext.mjs.map +0 -1
  578. package/lib/dataStoreContexts.d.mts.map +0 -1
  579. package/lib/dataStoreContexts.mjs.map +0 -1
  580. package/lib/dataStoreRegistry.d.mts.map +0 -1
  581. package/lib/dataStoreRegistry.mjs.map +0 -1
  582. package/lib/dataStores.d.mts.map +0 -1
  583. package/lib/dataStores.mjs.map +0 -1
  584. package/lib/deltaManagerProxyBase.d.mts +0 -35
  585. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  586. package/lib/deltaManagerProxyBase.mjs +0 -73
  587. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  588. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  589. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  590. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  591. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  592. package/lib/deltaScheduler.d.mts.map +0 -1
  593. package/lib/deltaScheduler.mjs.map +0 -1
  594. package/lib/error.d.mts.map +0 -1
  595. package/lib/error.mjs.map +0 -1
  596. package/lib/gc/garbageCollection.d.mts.map +0 -1
  597. package/lib/gc/garbageCollection.mjs.map +0 -1
  598. package/lib/gc/gcConfigs.d.mts.map +0 -1
  599. package/lib/gc/gcConfigs.mjs.map +0 -1
  600. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  601. package/lib/gc/gcDefinitions.mjs.map +0 -1
  602. package/lib/gc/gcHelpers.mjs.map +0 -1
  603. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  604. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  605. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  606. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  607. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  608. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  609. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  610. package/lib/gc/gcTelemetry.mjs.map +0 -1
  611. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  612. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  613. package/lib/gc/index.d.mts.map +0 -1
  614. package/lib/gc/index.mjs.map +0 -1
  615. package/lib/index.d.mts.map +0 -1
  616. package/lib/index.mjs +0 -24
  617. package/lib/index.mjs.map +0 -1
  618. package/lib/messageTypes.d.mts.map +0 -1
  619. package/lib/messageTypes.mjs.map +0 -1
  620. package/lib/metadata.d.mts.map +0 -1
  621. package/lib/metadata.mjs.map +0 -1
  622. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  623. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  624. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  625. package/lib/opLifecycle/definitions.mjs.map +0 -1
  626. package/lib/opLifecycle/index.d.mts +0 -13
  627. package/lib/opLifecycle/index.d.mts.map +0 -1
  628. package/lib/opLifecycle/index.mjs +0 -12
  629. package/lib/opLifecycle/index.mjs.map +0 -1
  630. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  631. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  632. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  633. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  634. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  635. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  636. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  637. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  638. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  639. package/lib/opLifecycle/outbox.mjs.map +0 -1
  640. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  641. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  642. package/lib/opProperties.d.mts.map +0 -1
  643. package/lib/opProperties.mjs.map +0 -1
  644. package/lib/packageVersion.d.mts.map +0 -1
  645. package/lib/packageVersion.mjs.map +0 -1
  646. package/lib/pendingStateManager.d.mts.map +0 -1
  647. package/lib/pendingStateManager.mjs.map +0 -1
  648. package/lib/scheduleManager.d.mts.map +0 -1
  649. package/lib/scheduleManager.mjs.map +0 -1
  650. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  651. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  652. package/lib/summary/index.d.mts.map +0 -1
  653. package/lib/summary/index.mjs.map +0 -1
  654. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  655. package/lib/summary/orderedClientElection.mjs.map +0 -1
  656. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  657. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  658. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  659. package/lib/summary/runningSummarizer.mjs.map +0 -1
  660. package/lib/summary/summarizer.d.mts.map +0 -1
  661. package/lib/summary/summarizer.mjs.map +0 -1
  662. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  663. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  664. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  665. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  666. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  667. package/lib/summary/summarizerNode/index.mjs +0 -7
  668. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  669. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  670. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  671. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  672. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  673. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  674. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  675. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  676. package/lib/summary/summarizerTypes.mjs.map +0 -1
  677. package/lib/summary/summaryCollection.d.mts.map +0 -1
  678. package/lib/summary/summaryCollection.mjs.map +0 -1
  679. package/lib/summary/summaryFormat.d.mts.map +0 -1
  680. package/lib/summary/summaryFormat.mjs.map +0 -1
  681. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  682. package/lib/summary/summaryGenerator.mjs.map +0 -1
  683. package/lib/summary/summaryManager.d.mts.map +0 -1
  684. package/lib/summary/summaryManager.mjs.map +0 -1
  685. package/lib/throttler.d.mts.map +0 -1
  686. package/lib/throttler.mjs.map +0 -1
  687. package/src/deltaManagerProxyBase.ts +0 -111
@@ -9,18 +9,14 @@ import {
9
9
  IRequest,
10
10
  IResponse,
11
11
  IFluidHandle,
12
- ITelemetryProperties,
12
+ ITelemetryBaseProperties,
13
13
  } from "@fluidframework/core-interfaces";
14
- import {
15
- IAudience,
16
- IDeltaManager,
17
- AttachState,
18
- ILoaderOptions,
19
- } from "@fluidframework/container-definitions";
14
+ import { IAudience, IDeltaManager, AttachState } from "@fluidframework/container-definitions";
20
15
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
21
- import { assert, Deferred, LazyPromise } from "@fluidframework/core-utils";
16
+ import { assert, LazyPromise } from "@fluidframework/core-utils";
22
17
  import { IDocumentStorageService } from "@fluidframework/driver-definitions";
23
18
  import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
19
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
24
20
  import {
25
21
  IClientDetails,
26
22
  IDocumentMessage,
@@ -29,7 +25,6 @@ import {
29
25
  ISnapshotTree,
30
26
  ITreeEntry,
31
27
  } from "@fluidframework/protocol-definitions";
32
- import { IContainerRuntime } from "@fluidframework/container-runtime-definitions";
33
28
  import {
34
29
  channelsTreeName,
35
30
  CreateChildSummarizerNodeFn,
@@ -37,6 +32,8 @@ import {
37
32
  FluidDataStoreRegistryEntry,
38
33
  IFluidDataStoreChannel,
39
34
  IFluidDataStoreContext,
35
+ IFluidParentContext,
36
+ IContainerRuntimeBase,
40
37
  IFluidDataStoreContextDetached,
41
38
  IFluidDataStoreContextEvents,
42
39
  IFluidDataStoreRegistry,
@@ -49,10 +46,9 @@ import {
49
46
  ISummarizerNodeWithGC,
50
47
  SummarizeInternalFn,
51
48
  ITelemetryContext,
52
- IIdCompressor,
53
- IIdCompressorCore,
54
- VisibilityState,
55
49
  ISummaryTreeWithStats,
50
+ IDataStore,
51
+ gcDataBlobKey,
56
52
  } from "@fluidframework/runtime-definitions";
57
53
  import { addBlobToSummary } from "@fluidframework/runtime-utils";
58
54
  import {
@@ -61,7 +57,6 @@ import {
61
57
  DataProcessingError,
62
58
  extractSafePropertiesFromMessage,
63
59
  generateStack,
64
- ITelemetryLoggerExt,
65
60
  LoggingError,
66
61
  MonitoringContext,
67
62
  tagCodeArtifacts,
@@ -76,9 +71,8 @@ import {
76
71
  getAttributesFormatVersion,
77
72
  getFluidDataStoreAttributes,
78
73
  summarizerClientType,
79
- } from "./summary";
80
- import { ContainerRuntime } from "./containerRuntime";
81
- import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc";
74
+ } from "./summary/index.js";
75
+ import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
82
76
 
83
77
  function createAttributes(
84
78
  pkg: readonly string[],
@@ -100,21 +94,18 @@ interface ISnapshotDetails {
100
94
  pkg: readonly string[];
101
95
  isRootDataStore: boolean;
102
96
  snapshot?: ISnapshotTree;
103
- }
104
-
105
- interface FluidDataStoreMessage {
106
- content: any;
107
- type: string;
97
+ sequenceNumber?: number;
108
98
  }
109
99
 
110
100
  /** Properties necessary for creating a FluidDataStoreContext */
111
101
  export interface IFluidDataStoreContextProps {
112
102
  readonly id: string;
113
- readonly runtime: ContainerRuntime;
103
+ readonly parentContext: IFluidParentContext;
114
104
  readonly storage: IDocumentStorageService;
115
105
  readonly scope: FluidObject;
116
106
  readonly createSummarizerNodeFn: CreateChildSummarizerNodeFn;
117
107
  readonly pkg?: Readonly<string[]>;
108
+ readonly loadingGroupId?: string;
118
109
  }
119
110
 
120
111
  /** Properties necessary for creating a local FluidDataStoreContext */
@@ -129,6 +120,11 @@ export interface ILocalFluidDataStoreContextProps extends IFluidDataStoreContext
129
120
  readonly createProps?: any;
130
121
  }
131
122
 
123
+ /** Properties necessary for creating a local FluidDataStoreContext */
124
+ export interface ILocalDetachedFluidDataStoreContextProps extends ILocalFluidDataStoreContextProps {
125
+ readonly channelToDataStoreFn: (channel: IFluidDataStoreChannel) => IDataStore;
126
+ }
127
+
132
128
  /** Properties necessary for creating a remote FluidDataStoreContext */
133
129
  export interface IRemoteFluidDataStoreContextProps extends IFluidDataStoreContextProps {
134
130
  readonly snapshotTree: ISnapshotTree | undefined;
@@ -139,47 +135,47 @@ export interface IRemoteFluidDataStoreContextProps extends IFluidDataStoreContex
139
135
  */
140
136
  export abstract class FluidDataStoreContext
141
137
  extends TypedEventEmitter<IFluidDataStoreContextEvents>
142
- implements IFluidDataStoreContext, IDisposable
138
+ implements IFluidDataStoreContext, IFluidParentContext, IDisposable
143
139
  {
144
140
  public get packagePath(): readonly string[] {
145
141
  assert(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
146
142
  return this.pkg;
147
143
  }
148
144
 
149
- public get options(): ILoaderOptions {
150
- return this._containerRuntime.options;
145
+ public get options(): Record<string | number, any> {
146
+ return this.parentContext.options;
151
147
  }
152
148
 
153
149
  public get clientId(): string | undefined {
154
- return this._containerRuntime.clientId;
150
+ return this.parentContext.clientId;
155
151
  }
156
152
 
157
153
  public get clientDetails(): IClientDetails {
158
- return this._containerRuntime.clientDetails;
154
+ return this.parentContext.clientDetails;
159
155
  }
160
156
 
161
- public get logger(): ITelemetryLoggerExt {
162
- return this._containerRuntime.logger;
157
+ public get logger() {
158
+ return this.parentContext.logger;
163
159
  }
164
160
 
165
161
  public get deltaManager(): IDeltaManager<ISequencedDocumentMessage, IDocumentMessage> {
166
- return this._containerRuntime.deltaManager;
162
+ return this.parentContext.deltaManager;
167
163
  }
168
164
 
169
165
  public get connected(): boolean {
170
- return this._containerRuntime.connected;
166
+ return this.parentContext.connected;
171
167
  }
172
168
 
173
169
  public get IFluidHandleContext() {
174
- return this._containerRuntime.IFluidHandleContext;
170
+ return this.parentContext.IFluidHandleContext;
175
171
  }
176
172
 
177
- public get containerRuntime(): IContainerRuntime {
173
+ public get containerRuntime(): IContainerRuntimeBase {
178
174
  return this._containerRuntime;
179
175
  }
180
176
 
181
177
  public ensureNoDataModelChanges<T>(callback: () => T): T {
182
- return this._containerRuntime.ensureNoDataModelChanges(callback);
178
+ return this.parentContext.ensureNoDataModelChanges(callback);
183
179
  }
184
180
 
185
181
  public get isLoaded(): boolean {
@@ -190,8 +186,8 @@ export abstract class FluidDataStoreContext
190
186
  return this._baseSnapshot;
191
187
  }
192
188
 
193
- public get idCompressor(): (IIdCompressorCore & IIdCompressor) | undefined {
194
- return this._containerRuntime.idCompressor;
189
+ public get idCompressor(): IIdCompressor | undefined {
190
+ return this.parentContext.idCompressor;
195
191
  }
196
192
 
197
193
  private _disposed = false;
@@ -208,7 +204,8 @@ export abstract class FluidDataStoreContext
208
204
  return this._tombstoned;
209
205
  }
210
206
  /** If true, throw an error when a tombstone data store is used. */
211
- private readonly throwOnTombstoneUsage: boolean;
207
+ public readonly gcThrowOnTombstoneUsage: boolean;
208
+ public readonly gcTombstoneEnforcementAllowed: boolean;
212
209
 
213
210
  /** If true, this means that this data store context and its children have been removed from the runtime */
214
211
  private deleted: boolean = false;
@@ -218,9 +215,15 @@ export abstract class FluidDataStoreContext
218
215
  }
219
216
 
220
217
  public get IFluidDataStoreRegistry(): IFluidDataStoreRegistry | undefined {
218
+ assert(
219
+ this.channel !== undefined,
220
+ 0x8f3 /* This should be called after the channel is created, when the registry is populated */,
221
+ );
221
222
  return this.registry;
222
223
  }
223
224
 
225
+ private baseSnapshotSequenceNumber: number | undefined;
226
+
224
227
  /**
225
228
  * A datastore is considered as root if it
226
229
  * 1. is root in memory - see isInMemoryRoot
@@ -248,8 +251,8 @@ export abstract class FluidDataStoreContext
248
251
  protected channel: IFluidDataStoreChannel | undefined;
249
252
  private loaded = false;
250
253
  protected pending: ISequencedDocumentMessage[] | undefined = [];
251
- protected channelDeferred: Deferred<IFluidDataStoreChannel> | undefined;
252
- private _baseSnapshot: ISnapshotTree | undefined;
254
+ protected channelP: Promise<IFluidDataStoreChannel> | undefined;
255
+ protected _baseSnapshot: ISnapshotTree | undefined;
253
256
  protected _attachState: AttachState;
254
257
  private _isInMemoryRoot: boolean = false;
255
258
  protected readonly summarizerNode: ISummarizerNodeWithGC;
@@ -269,9 +272,12 @@ export abstract class FluidDataStoreContext
269
272
  private lastUsedRoutes: string[] | undefined;
270
273
 
271
274
  public readonly id: string;
272
- private readonly _containerRuntime: ContainerRuntime;
275
+ private readonly _containerRuntime: IContainerRuntimeBase;
276
+ private readonly parentContext: IFluidParentContext;
273
277
  public readonly storage: IDocumentStorageService;
274
278
  public readonly scope: FluidObject;
279
+ // Represents the group to which the data store belongs too.
280
+ public readonly loadingGroupId: string | undefined;
275
281
  protected pkg?: readonly string[];
276
282
 
277
283
  constructor(
@@ -282,19 +288,21 @@ export abstract class FluidDataStoreContext
282
288
  ) {
283
289
  super();
284
290
 
285
- this._containerRuntime = props.runtime;
291
+ this._containerRuntime = props.parentContext.containerRuntime;
292
+ this.parentContext = props.parentContext;
286
293
  this.id = props.id;
287
294
  this.storage = props.storage;
288
295
  this.scope = props.scope;
289
296
  this.pkg = props.pkg;
297
+ this.loadingGroupId = props.loadingGroupId;
290
298
 
291
299
  // URIs use slashes as delimiters. Handles use URIs.
292
300
  // Thus having slashes in types almost guarantees trouble down the road!
293
301
  assert(!this.id.includes("/"), 0x13a /* Data store ID contains slash */);
294
302
 
295
303
  this._attachState =
296
- this.containerRuntime.attachState !== AttachState.Detached && this.existing
297
- ? this.containerRuntime.attachState
304
+ this.parentContext.attachState !== AttachState.Detached && this.existing
305
+ ? this.parentContext.attachState
298
306
  : AttachState.Detached;
299
307
 
300
308
  const thisSummarizeInternal = async (
@@ -325,7 +333,8 @@ export abstract class FluidDataStoreContext
325
333
  this.mc.logger,
326
334
  );
327
335
 
328
- this.throwOnTombstoneUsage = this._containerRuntime.gcThrowOnTombstoneUsage;
336
+ this.gcThrowOnTombstoneUsage = this.parentContext.gcThrowOnTombstoneUsage;
337
+ this.gcTombstoneEnforcementAllowed = this.parentContext.gcTombstoneEnforcementAllowed;
329
338
 
330
339
  // By default, a data store can log maximum 10 local changes telemetry in summarizer.
331
340
  this.localChangesTelemetryCount =
@@ -339,9 +348,9 @@ export abstract class FluidDataStoreContext
339
348
  this._disposed = true;
340
349
 
341
350
  // Dispose any pending runtime after it gets fulfilled
342
- // Errors are logged where this.channelDeferred is consumed/generated (realizeCore(), bindRuntime())
343
- if (this.channelDeferred) {
344
- this.channelDeferred.promise
351
+ // Errors are logged where this.channelP is consumed/generated (realizeCore(), bindRuntime())
352
+ if (this.channelP) {
353
+ this.channelP
345
354
  .then((runtime) => {
346
355
  runtime.dispose();
347
356
  })
@@ -382,9 +391,8 @@ export abstract class FluidDataStoreContext
382
391
 
383
392
  public async realize(): Promise<IFluidDataStoreChannel> {
384
393
  assert(!this.detachedRuntimeCreation, 0x13d /* "Detached runtime creation on realize()" */);
385
- if (!this.channelDeferred) {
386
- this.channelDeferred = new Deferred<IFluidDataStoreChannel>();
387
- this.realizeCore(this.existing).catch((error) => {
394
+ if (!this.channelP) {
395
+ this.channelP = this.realizeCore(this.existing).catch((error) => {
388
396
  const errorWrapped = DataProcessingError.wrapIfUnrecognized(
389
397
  error,
390
398
  "realizeFluidDataStoreContext",
@@ -395,22 +403,22 @@ export abstract class FluidDataStoreContext
395
403
  fluidDataStoreId: this.id,
396
404
  }),
397
405
  );
398
- this.channelDeferred?.reject(errorWrapped);
399
406
  this.mc.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
407
+ throw errorWrapped;
400
408
  });
401
409
  }
402
- return this.channelDeferred.promise;
410
+ return this.channelP;
403
411
  }
404
412
 
405
- protected async factoryFromPackagePath(packages?: readonly string[]) {
406
- assert(this.pkg === packages, 0x13e /* "Unexpected package path" */);
413
+ protected async factoryFromPackagePath() {
414
+ const packages = this.pkg;
407
415
  if (packages === undefined) {
408
416
  this.rejectDeferredRealize("packages is undefined");
409
417
  }
410
418
 
411
419
  let entry: FluidDataStoreRegistryEntry | undefined;
412
420
  let registry: IFluidDataStoreRegistry | undefined =
413
- this._containerRuntime.IFluidDataStoreRegistry;
421
+ this.parentContext.IFluidDataStoreRegistry;
414
422
  let lastPkg: string | undefined;
415
423
  for (const pkg of packages) {
416
424
  if (!registry) {
@@ -432,33 +440,33 @@ export abstract class FluidDataStoreContext
432
440
  this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
433
441
  }
434
442
 
435
- return { factory, registry };
443
+ assert(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
444
+ this.registry = registry;
445
+
446
+ return factory;
436
447
  }
437
448
 
438
- private async realizeCore(existing: boolean): Promise<void> {
449
+ private async realizeCore(existing: boolean) {
439
450
  const details = await this.getInitialSnapshotDetails();
440
451
  // Base snapshot is the baseline where pending ops are applied to.
441
452
  // It is important that this be in sync with the pending ops, and also
442
453
  // that it is set here, before bindRuntime is called.
443
454
  this._baseSnapshot = details.snapshot;
444
- const packages = details.pkg;
455
+ this.baseSnapshotSequenceNumber = details.sequenceNumber;
456
+ assert(this.pkg === details.pkg, 0x13e /* "Unexpected package path" */);
445
457
 
446
- const { factory, registry } = await this.factoryFromPackagePath(packages);
447
-
448
- assert(
449
- this.registry === undefined,
450
- 0x13f /* "datastore context registry is already set" */,
451
- );
452
- this.registry = registry;
458
+ const factory = await this.factoryFromPackagePath();
453
459
 
454
460
  const channel = await factory.instantiateDataStore(this, existing);
455
461
  assert(channel !== undefined, 0x140 /* "undefined channel on datastore context" */);
456
- this.bindRuntime(channel);
462
+ await this.bindRuntime(channel, existing);
457
463
  // This data store may have been disposed before the channel is created during realization. If so,
458
464
  // dispose the channel now.
459
465
  if (this.disposed) {
460
466
  channel.dispose();
461
467
  }
468
+
469
+ return channel;
462
470
  }
463
471
 
464
472
  /**
@@ -483,28 +491,21 @@ export abstract class FluidDataStoreContext
483
491
  }
484
492
 
485
493
  public process(
486
- messageArg: ISequencedDocumentMessage,
494
+ message: ISequencedDocumentMessage,
487
495
  local: boolean,
488
496
  localOpMetadata: unknown,
489
497
  ): void {
490
- const safeTelemetryProps = extractSafePropertiesFromMessage(messageArg);
498
+ const safeTelemetryProps = extractSafePropertiesFromMessage(message);
491
499
  // On op process, tombstone error is logged in garbage collector. So, set "checkTombstone" to false when calling
492
500
  // "verifyNotClosed" which logs tombstone errors. Throw error if tombstoned and throwing on load is configured.
493
501
  this.verifyNotClosed("process", false /* checkTombstone */, safeTelemetryProps);
494
- if (this.tombstoned && this.throwOnTombstoneUsage) {
502
+ if (this.tombstoned && this.gcThrowOnTombstoneUsage) {
495
503
  throw new DataCorruptionError(
496
504
  "Context is tombstoned! Call site [process]",
497
505
  safeTelemetryProps,
498
506
  );
499
507
  }
500
508
 
501
- const innerContents = messageArg.contents as FluidDataStoreMessage;
502
- const message = {
503
- ...messageArg,
504
- type: innerContents.type,
505
- contents: innerContents.content,
506
- };
507
-
508
509
  this.summarizerNode.recordChange(message);
509
510
 
510
511
  if (this.loaded) {
@@ -529,11 +530,11 @@ export abstract class FluidDataStoreContext
529
530
  }
530
531
 
531
532
  public getQuorum(): IQuorumClients {
532
- return this._containerRuntime.getQuorum();
533
+ return this.parentContext.getQuorum();
533
534
  }
534
535
 
535
536
  public getAudience(): IAudience {
536
- return this._containerRuntime.getAudience();
537
+ return this.parentContext.getAudience();
537
538
  }
538
539
 
539
540
  /**
@@ -581,6 +582,11 @@ export abstract class FluidDataStoreContext
581
582
  summarizeResult.stats.unreferencedBlobSize = summarizeResult.stats.totalBlobSize;
582
583
  }
583
584
 
585
+ // Add loadingGroupId to the summary
586
+ if (this.loadingGroupId !== undefined) {
587
+ summarizeResult.summary.groupId = this.loadingGroupId;
588
+ }
589
+
584
590
  return {
585
591
  ...summarizeResult,
586
592
  id: this.id,
@@ -664,7 +670,7 @@ export abstract class FluidDataStoreContext
664
670
  // By default, skip this call since the ContainerRuntime will detect the outbound route directly.
665
671
  if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) === true) {
666
672
  // Note: The ContainerRuntime code will check this same setting to avoid double counting.
667
- this._containerRuntime.addedGCOutboundReference(srcHandle, outboundHandle);
673
+ this.parentContext.addedGCOutboundReference?.(srcHandle, outboundHandle);
668
674
  }
669
675
  }
670
676
 
@@ -678,7 +684,7 @@ export abstract class FluidDataStoreContext
678
684
  * @param toPath - The absolute path of the outbound node that is referenced.
679
685
  */
680
686
  public addedGCOutboundRoute(fromPath: string, toPath: string) {
681
- this._containerRuntime.addedGCOutboundReference(
687
+ this.parentContext.addedGCOutboundReference?.(
682
688
  { absolutePath: fromPath },
683
689
  { absolutePath: toPath },
684
690
  );
@@ -720,15 +726,10 @@ export abstract class FluidDataStoreContext
720
726
  public submitMessage(type: string, content: any, localOpMetadata: unknown): void {
721
727
  this.verifyNotClosed("submitMessage");
722
728
  assert(!!this.channel, 0x146 /* "Channel must exist when submitting message" */);
723
- const fluidDataStoreContent: FluidDataStoreMessage = {
724
- content,
725
- type,
726
- };
727
-
728
729
  // Summarizer clients should not submit messages.
729
730
  this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
730
731
 
731
- this._containerRuntime.submitDataStoreOp(this.id, fluidDataStoreContent, localOpMetadata);
732
+ this.parentContext.submitMessage(type, content, localOpMetadata);
732
733
  }
733
734
 
734
735
  /**
@@ -765,7 +766,7 @@ export abstract class FluidDataStoreContext
765
766
  this.verifyNotClosed("submitSignal");
766
767
 
767
768
  assert(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
768
- return this._containerRuntime.submitDataStoreSignal(this.id, type, content, targetClientId);
769
+ return this.parentContext.submitSignal(type, content, targetClientId);
769
770
  }
770
771
 
771
772
  /**
@@ -774,72 +775,71 @@ export abstract class FluidDataStoreContext
774
775
  */
775
776
  public makeLocallyVisible() {
776
777
  assert(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
777
- assert(
778
- this.channel.visibilityState === VisibilityState.LocallyVisible,
779
- 0x590 /* Channel must be locally visible */,
780
- );
781
778
  this.makeLocallyVisibleFn();
782
779
  }
783
780
 
784
- protected bindRuntime(channel: IFluidDataStoreChannel) {
781
+ protected async bindRuntime(channel: IFluidDataStoreChannel, existing: boolean) {
785
782
  if (this.channel) {
786
783
  throw new Error("Runtime already bound");
787
784
  }
788
785
 
789
- try {
790
- assert(
791
- !this.detachedRuntimeCreation,
792
- 0x148 /* "Detached runtime creation on runtime bind" */,
793
- );
794
- assert(this.channelDeferred !== undefined, 0x149 /* "Undefined channel deferral" */);
795
- assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
786
+ assert(
787
+ !this.detachedRuntimeCreation,
788
+ 0x148 /* "Detached runtime creation on runtime bind" */,
789
+ );
790
+ assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
796
791
 
792
+ if (existing) {
797
793
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
798
794
  const pending = this.pending!;
799
795
 
800
796
  // Apply all pending ops
801
797
  for (const op of pending) {
802
- channel.process(op, false, undefined /* localOpMetadata */);
798
+ // Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
799
+ const seqNumber = this.baseSnapshotSequenceNumber ?? -1;
800
+ if (op.sequenceNumber > seqNumber) {
801
+ channel.process(op, false, undefined /* localOpMetadata */);
802
+ }
803
803
  }
804
804
 
805
805
  this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
806
- this.pending = undefined;
807
-
808
- // And now mark the runtime active
809
- this.loaded = true;
810
- this.channel = channel;
806
+ } else {
807
+ assert(this.pending?.length === 0, 0x8f4 /* no pending ops */);
808
+
809
+ // Execute data store's entry point to make sure that for a local (aka detached from container) data store, the
810
+ // entryPoint initialization function is called before the data store gets attached and potentially connected to
811
+ // the delta stream, so it gets a chance to do things while the data store is still "purely local".
812
+ // This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method
813
+ // of data store factories tends to construct the data object (at least kick off an async method that returns
814
+ // it); that code moved to the entryPoint initialization function, so we want to ensure it still executes
815
+ // before the data store is attached.
816
+ await channel.entryPoint.get();
817
+ }
818
+ this.pending = undefined;
811
819
 
812
- // Freeze the package path to ensure that someone doesn't modify it when it is
813
- // returned in packagePath().
814
- Object.freeze(this.pkg);
820
+ // And now mark the runtime active
821
+ this.loaded = true;
822
+ this.channel = channel;
815
823
 
816
- /**
817
- * Update the used routes of the channel. If GC has run before this data store was realized, we will have
818
- * the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
819
- * per the last time GC was run.
820
- * Also, this data store may have been realized during summarize. In that case, the child contexts need to
821
- * have their used routes updated to determine if its needs to summarize again and to add it to the summary.
822
- */
823
- this.updateChannelUsedRoutes();
824
+ // Freeze the package path to ensure that someone doesn't modify it when it is
825
+ // returned in packagePath().
826
+ Object.freeze(this.pkg);
824
827
 
825
- // And notify the pending promise it is now available
826
- this.channelDeferred.resolve(this.channel);
827
- } catch (error) {
828
- this.channelDeferred?.reject(error);
829
- this.mc.logger.sendErrorEvent(
830
- {
831
- eventName: "BindRuntimeError",
832
- },
833
- error,
834
- );
835
- }
828
+ /**
829
+ * Update the used routes of the channel. If GC has run before this data store was realized, we will have
830
+ * the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
831
+ * per the last time GC was run.
832
+ * Also, this data store may have been realized during summarize. In that case, the child contexts need to
833
+ * have their used routes updated to determine if its needs to summarize again and to add it to the summary.
834
+ */
835
+ this.updateChannelUsedRoutes();
836
836
  }
837
837
 
838
838
  public async getAbsoluteUrl(relativeUrl: string): Promise<string | undefined> {
839
839
  if (this.attachState !== AttachState.Attached) {
840
840
  return undefined;
841
841
  }
842
- return this._containerRuntime.getAbsoluteUrl(relativeUrl);
842
+ return this.parentContext.getAbsoluteUrl(relativeUrl);
843
843
  }
844
844
 
845
845
  /**
@@ -854,7 +854,6 @@ export abstract class FluidDataStoreContext
854
854
  ): {
855
855
  attachSummary: ISummaryTreeWithStats;
856
856
  type: string;
857
- gcData?: IGarbageCollectionData;
858
857
  };
859
858
 
860
859
  public abstract getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
@@ -875,21 +874,19 @@ export abstract class FluidDataStoreContext
875
874
  return {};
876
875
  }
877
876
 
878
- public reSubmit(contents: any, localOpMetadata: unknown) {
877
+ public reSubmit(type: string, contents: any, localOpMetadata: unknown) {
879
878
  assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
880
- const innerContents = contents as FluidDataStoreMessage;
881
- this.channel.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
879
+ this.channel.reSubmit(type, contents, localOpMetadata);
882
880
  }
883
881
 
884
- public rollback(contents: any, localOpMetadata: unknown) {
882
+ public rollback(type: string, contents: any, localOpMetadata: unknown) {
885
883
  if (!this.channel) {
886
884
  throw new Error("Channel must exist when rolling back ops");
887
885
  }
888
886
  if (!this.channel.rollback) {
889
887
  throw new Error("Channel doesn't support rollback");
890
888
  }
891
- const innerContents = contents as FluidDataStoreMessage;
892
- this.channel.rollback(innerContents.type, innerContents.content, localOpMetadata);
889
+ this.channel.rollback(type, contents, localOpMetadata);
893
890
  }
894
891
 
895
892
  public async applyStashedOp(contents: any): Promise<unknown> {
@@ -903,7 +900,7 @@ export abstract class FluidDataStoreContext
903
900
  private verifyNotClosed(
904
901
  callSite: string,
905
902
  checkTombstone = true,
906
- safeTelemetryProps: ITelemetryProperties = {},
903
+ safeTelemetryProps: ITelemetryBaseProperties = {},
907
904
  ) {
908
905
  if (this.deleted) {
909
906
  const messageString = `Context is deleted! Call site [${callSite}]`;
@@ -931,15 +928,14 @@ export abstract class FluidDataStoreContext
931
928
  this.mc,
932
929
  {
933
930
  eventName: "GC_Tombstone_DataStore_Changed",
934
- category: this.throwOnTombstoneUsage ? "error" : "generic",
935
- gcTombstoneEnforcementAllowed:
936
- this._containerRuntime.gcTombstoneEnforcementAllowed,
931
+ category: this.gcThrowOnTombstoneUsage ? "error" : "generic",
932
+ gcTombstoneEnforcementAllowed: this.gcTombstoneEnforcementAllowed,
937
933
  callSite,
938
934
  },
939
935
  this.pkg,
940
936
  error,
941
937
  );
942
- if (this.throwOnTombstoneUsage) {
938
+ if (this.gcThrowOnTombstoneUsage) {
943
939
  throw error;
944
940
  }
945
941
  }
@@ -979,37 +975,58 @@ export abstract class FluidDataStoreContext
979
975
  summarizeInternal,
980
976
  id,
981
977
  createParam,
982
- // DDS will not create failure summaries
983
- { throwOnFailure: true },
978
+ undefined /* config */,
984
979
  getGCDataFn,
985
980
  );
986
981
  }
987
982
 
983
+ public deleteChildSummarizerNode(id: string) {
984
+ this.summarizerNode.deleteChild(id);
985
+ }
986
+
988
987
  public async uploadBlob(
989
988
  blob: ArrayBufferLike,
990
989
  signal?: AbortSignal,
991
990
  ): Promise<IFluidHandle<ArrayBufferLike>> {
992
- return this.containerRuntime.uploadBlob(blob, signal);
991
+ return this.parentContext.uploadBlob(blob, signal);
993
992
  }
994
993
  }
995
994
 
996
995
  export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
997
- private readonly initSnapshotValue: ISnapshotTree | undefined;
996
+ // Tells whether we need to fetch the snapshot before use. This is to support Data Virtualization.
997
+ private snapshotFetchRequired: boolean;
998
+ private readonly runtime: IContainerRuntimeBase;
998
999
 
999
1000
  constructor(props: IRemoteFluidDataStoreContextProps) {
1000
1001
  super(props, true /* existing */, false /* isLocalDataStore */, () => {
1001
1002
  throw new Error("Already attached");
1002
1003
  });
1003
1004
 
1004
- this.initSnapshotValue = props.snapshotTree;
1005
-
1005
+ this._baseSnapshot = props.snapshotTree;
1006
+ this.snapshotFetchRequired = !!props.snapshotTree?.omitted;
1007
+ this.runtime = props.parentContext.containerRuntime;
1006
1008
  if (props.snapshotTree !== undefined) {
1007
1009
  this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
1008
1010
  }
1009
1011
  }
1010
1012
 
1011
1013
  private readonly initialSnapshotDetailsP = new LazyPromise<ISnapshotDetails>(async () => {
1012
- let tree = this.initSnapshotValue;
1014
+ // Sequence number of the snapshot.
1015
+ let sequenceNumber: number | undefined;
1016
+ if (this.snapshotFetchRequired) {
1017
+ assert(
1018
+ this.loadingGroupId !== undefined,
1019
+ 0x8f5 /* groupId should be present to fetch snapshot */,
1020
+ );
1021
+ const snapshot = await this.runtime.getSnapshotForLoadingGroupId(
1022
+ [this.loadingGroupId],
1023
+ [this.id],
1024
+ );
1025
+ this._baseSnapshot = snapshot.snapshotTree;
1026
+ sequenceNumber = snapshot.sequenceNumber;
1027
+ this.snapshotFetchRequired = false;
1028
+ }
1029
+ let tree = this.baseSnapshot;
1013
1030
  let isRootDataStore = true;
1014
1031
 
1015
1032
  if (!!tree && tree.blobs[dataStoreAttributesBlobName] !== undefined) {
@@ -1049,11 +1066,12 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
1049
1066
  }
1050
1067
  }
1051
1068
 
1069
+ assert(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
1052
1070
  return {
1053
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1054
- pkg: this.pkg!,
1071
+ pkg: this.pkg,
1055
1072
  isRootDataStore,
1056
1073
  snapshot: tree,
1074
+ sequenceNumber,
1057
1075
  };
1058
1076
  });
1059
1077
 
@@ -1067,7 +1085,6 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
1067
1085
  public getAttachData(includeGCData: boolean): {
1068
1086
  attachSummary: ISummaryTreeWithStats;
1069
1087
  type: string;
1070
- gcData?: IGarbageCollectionData;
1071
1088
  } {
1072
1089
  throw new Error("Cannot attach remote store");
1073
1090
  }
@@ -1128,7 +1145,6 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1128
1145
  ): {
1129
1146
  attachSummary: ISummaryTreeWithStats;
1130
1147
  type: string;
1131
- gcData?: IGarbageCollectionData;
1132
1148
  } {
1133
1149
  assert(
1134
1150
  this.channel !== undefined,
@@ -1147,11 +1163,21 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1147
1163
  // Add data store's attributes to the summary.
1148
1164
  const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
1149
1165
  addBlobToSummary(attachSummary, dataStoreAttributesBlobName, JSON.stringify(attributes));
1166
+ if (includeGCData) {
1167
+ const gcData = this.channel.getAttachGCData?.(telemetryContext);
1168
+ if (gcData !== undefined) {
1169
+ addBlobToSummary(attachSummary, gcDataBlobKey, JSON.stringify(gcData));
1170
+ }
1171
+ }
1172
+
1173
+ // Add loadingGroupId to the summary
1174
+ if (this.loadingGroupId !== undefined) {
1175
+ attachSummary.summary.groupId = this.loadingGroupId;
1176
+ }
1150
1177
 
1151
1178
  return {
1152
1179
  attachSummary,
1153
1180
  type: this.pkg[this.pkg.length - 1],
1154
- gcData: includeGCData ? this.channel.getAttachGCData?.(telemetryContext) : undefined,
1155
1181
  };
1156
1182
  }
1157
1183
 
@@ -1239,43 +1265,47 @@ export class LocalDetachedFluidDataStoreContext
1239
1265
  extends LocalFluidDataStoreContextBase
1240
1266
  implements IFluidDataStoreContextDetached
1241
1267
  {
1242
- constructor(props: ILocalFluidDataStoreContextProps) {
1268
+ constructor(props: ILocalDetachedFluidDataStoreContextProps) {
1243
1269
  super(props);
1244
1270
  this.detachedRuntimeCreation = true;
1271
+ this.channelToDataStoreFn = props.channelToDataStoreFn;
1245
1272
  }
1273
+ private readonly channelToDataStoreFn: (channel: IFluidDataStoreChannel) => IDataStore;
1246
1274
 
1247
1275
  public async attachRuntime(
1248
1276
  registry: IProvideFluidDataStoreFactory,
1249
1277
  dataStoreChannel: IFluidDataStoreChannel,
1250
- ) {
1278
+ ): Promise<IDataStore> {
1251
1279
  assert(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
1252
1280
  this.detachedRuntimeCreation = false;
1253
1281
 
1254
- assert(this.channelDeferred === undefined, 0x155 /* "channel deferral is already set" */);
1255
- this.channelDeferred = new Deferred<IFluidDataStoreChannel>();
1282
+ assert(this.channelP === undefined, 0x155 /* "channel deferral is already set" */);
1256
1283
 
1257
- const factory = registry.IFluidDataStoreFactory;
1284
+ this.channelP = Promise.resolve()
1285
+ .then(async () => {
1286
+ const factory = registry.IFluidDataStoreFactory;
1258
1287
 
1259
- const entry = await this.factoryFromPackagePath(this.pkg);
1260
- assert(entry.factory === factory, 0x156 /* "Unexpected factory for package path" */);
1288
+ const factory2 = await this.factoryFromPackagePath();
1289
+ assert(factory2 === factory, 0x156 /* "Unexpected factory for package path" */);
1261
1290
 
1262
- assert(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
1263
- this.registry = entry.registry;
1291
+ await super.bindRuntime(dataStoreChannel, false /* existing */);
1264
1292
 
1265
- super.bindRuntime(dataStoreChannel);
1293
+ assert(
1294
+ !(await this.isRoot()),
1295
+ 0x8f7 /* there are no more createRootDataStore() kind of APIs! */,
1296
+ );
1266
1297
 
1267
- // Load the handle to the data store's entryPoint to make sure that for a detached data store, the entryPoint
1268
- // initialization function is called before the data store gets attached and potentially connected to the
1269
- // delta stream, so it gets a chance to do things while the data store is still "purely local".
1270
- // This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method
1271
- // of data store factories tends to construct the data object (at least kick off an async method that returns
1272
- // it); that code moved to the entryPoint initialization function, so we want to ensure it still executes
1273
- // before the data store is attached.
1274
- await dataStoreChannel.entryPoint.get();
1298
+ return dataStoreChannel;
1299
+ })
1300
+ .catch((error) => {
1301
+ this.mc.logger.sendErrorEvent({ eventName: "AttachRuntimeError" }, error);
1302
+ // The following two lines result in same exception thrown.
1303
+ // But we need to ensure that this.channelDeferred.promise is "observed", as otherwise
1304
+ // out UT reports unhandled exception
1305
+ throw error;
1306
+ });
1275
1307
 
1276
- if (await this.isRoot()) {
1277
- dataStoreChannel.makeVisibleAndAttachGraph();
1278
- }
1308
+ return this.channelToDataStoreFn(await this.channelP);
1279
1309
  }
1280
1310
 
1281
1311
  public async getInitialSnapshotDetails(): Promise<ISnapshotDetails> {