@fluidframework/container-runtime 2.0.0-dev-rc.1.0.0.228517 → 2.0.0-dev-rc.2.0.0.245554

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 (695) 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 +46 -1
  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 +435 -33
  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.d.ts +0 -5
  13. package/dist/blobManager.d.ts.map +1 -1
  14. package/dist/blobManager.js +0 -12
  15. package/dist/blobManager.js.map +1 -1
  16. package/dist/channelCollection.d.ts +225 -0
  17. package/dist/channelCollection.d.ts.map +1 -0
  18. package/dist/{dataStores.js → channelCollection.js} +449 -143
  19. package/dist/channelCollection.js.map +1 -0
  20. package/dist/connectionTelemetry.d.ts +11 -1
  21. package/dist/connectionTelemetry.d.ts.map +1 -1
  22. package/dist/connectionTelemetry.js +42 -4
  23. package/dist/connectionTelemetry.js.map +1 -1
  24. package/dist/container-runtime-alpha.d.ts +138 -49
  25. package/dist/container-runtime-beta.d.ts +75 -9
  26. package/dist/container-runtime-public.d.ts +75 -9
  27. package/dist/container-runtime-untrimmed.d.ts +717 -49
  28. package/dist/containerHandleContext.d.ts +1 -1
  29. package/dist/containerHandleContext.d.ts.map +1 -1
  30. package/dist/containerHandleContext.js.map +1 -1
  31. package/dist/containerRuntime.d.ts +84 -64
  32. package/dist/containerRuntime.d.ts.map +1 -1
  33. package/dist/containerRuntime.js +550 -427
  34. package/dist/containerRuntime.js.map +1 -1
  35. package/dist/dataStore.d.ts +2 -3
  36. package/dist/dataStore.d.ts.map +1 -1
  37. package/dist/dataStore.js +12 -11
  38. package/dist/dataStore.js.map +1 -1
  39. package/dist/dataStoreContext.d.ts +118 -38
  40. package/dist/dataStoreContext.d.ts.map +1 -1
  41. package/dist/dataStoreContext.js +249 -161
  42. package/dist/dataStoreContext.js.map +1 -1
  43. package/dist/dataStoreContexts.d.ts +2 -1
  44. package/dist/dataStoreContexts.d.ts.map +1 -1
  45. package/dist/dataStoreContexts.js +1 -0
  46. package/dist/dataStoreContexts.js.map +1 -1
  47. package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
  48. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  49. package/dist/deltaManagerSummarizerProxy.js +91 -5
  50. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  51. package/dist/gc/garbageCollection.d.ts +29 -7
  52. package/dist/gc/garbageCollection.d.ts.map +1 -1
  53. package/dist/gc/garbageCollection.js +179 -98
  54. package/dist/gc/garbageCollection.js.map +1 -1
  55. package/dist/gc/gcConfigs.d.ts +2 -2
  56. package/dist/gc/gcConfigs.d.ts.map +1 -1
  57. package/dist/gc/gcConfigs.js +30 -23
  58. package/dist/gc/gcConfigs.js.map +1 -1
  59. package/dist/gc/gcDefinitions.d.ts +40 -15
  60. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  61. package/dist/gc/gcDefinitions.js +11 -4
  62. package/dist/gc/gcDefinitions.js.map +1 -1
  63. package/dist/gc/gcHelpers.d.ts +2 -2
  64. package/dist/gc/gcHelpers.d.ts.map +1 -1
  65. package/dist/gc/gcHelpers.js.map +1 -1
  66. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  67. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  68. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  69. package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
  70. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  71. package/dist/gc/gcSummaryStateTracker.js +18 -6
  72. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  73. package/dist/gc/gcTelemetry.d.ts +7 -7
  74. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  75. package/dist/gc/gcTelemetry.js +20 -20
  76. package/dist/gc/gcTelemetry.js.map +1 -1
  77. package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
  78. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  79. package/dist/gc/gcUnreferencedStateTracker.js +22 -11
  80. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  81. package/dist/gc/index.d.ts +8 -8
  82. package/dist/gc/index.d.ts.map +1 -1
  83. package/dist/gc/index.js +40 -38
  84. package/dist/gc/index.js.map +1 -1
  85. package/dist/index.d.ts +11 -20
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +36 -40
  88. package/dist/index.js.map +1 -1
  89. package/dist/messageTypes.d.ts +4 -4
  90. package/dist/messageTypes.d.ts.map +1 -1
  91. package/dist/messageTypes.js.map +1 -1
  92. package/dist/opLifecycle/batchManager.d.ts +2 -2
  93. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  94. package/dist/opLifecycle/batchManager.js.map +1 -1
  95. package/dist/opLifecycle/definitions.d.ts +2 -2
  96. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  97. package/dist/opLifecycle/definitions.js.map +1 -1
  98. package/dist/opLifecycle/index.d.ts +8 -8
  99. package/dist/opLifecycle/index.d.ts.map +1 -1
  100. package/dist/opLifecycle/index.js +18 -18
  101. package/dist/opLifecycle/index.js.map +1 -1
  102. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  103. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  104. package/dist/opLifecycle/opCompressor.js +4 -4
  105. package/dist/opLifecycle/opCompressor.js.map +1 -1
  106. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  107. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  108. package/dist/opLifecycle/opDecompressor.js +3 -3
  109. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  110. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  111. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  112. package/dist/opLifecycle/opGroupingManager.js +1 -10
  113. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  114. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  115. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  116. package/dist/opLifecycle/opSplitter.js +5 -5
  117. package/dist/opLifecycle/opSplitter.js.map +1 -1
  118. package/dist/opLifecycle/outbox.d.ts +7 -7
  119. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  120. package/dist/opLifecycle/outbox.js +20 -12
  121. package/dist/opLifecycle/outbox.js.map +1 -1
  122. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  123. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  124. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  125. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  126. package/dist/package.json +3 -0
  127. package/dist/packageVersion.d.ts +1 -1
  128. package/dist/packageVersion.js +1 -1
  129. package/dist/packageVersion.js.map +1 -1
  130. package/dist/pendingStateManager.d.ts +2 -1
  131. package/dist/pendingStateManager.d.ts.map +1 -1
  132. package/dist/pendingStateManager.js +18 -10
  133. package/dist/pendingStateManager.js.map +1 -1
  134. package/dist/scheduleManager.d.ts +1 -2
  135. package/dist/scheduleManager.d.ts.map +1 -1
  136. package/dist/scheduleManager.js +5 -5
  137. package/dist/scheduleManager.js.map +1 -1
  138. package/dist/summary/index.d.ts +12 -12
  139. package/dist/summary/index.d.ts.map +1 -1
  140. package/dist/summary/index.js +43 -43
  141. package/dist/summary/index.js.map +1 -1
  142. package/dist/summary/orderedClientElection.js +8 -8
  143. package/dist/summary/orderedClientElection.js.map +1 -1
  144. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  145. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  146. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  147. package/dist/summary/runningSummarizer.d.ts +11 -10
  148. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  149. package/dist/summary/runningSummarizer.js +114 -81
  150. package/dist/summary/runningSummarizer.js.map +1 -1
  151. package/dist/summary/summarizer.d.ts +4 -4
  152. package/dist/summary/summarizer.d.ts.map +1 -1
  153. package/dist/summary/summarizer.js +6 -6
  154. package/dist/summary/summarizer.js.map +1 -1
  155. package/dist/summary/summarizerClientElection.d.ts +2 -2
  156. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  157. package/dist/summary/summarizerClientElection.js.map +1 -1
  158. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  159. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  160. package/dist/summary/summarizerHeuristics.js.map +1 -1
  161. package/dist/summary/summarizerNode/index.d.ts +3 -3
  162. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  163. package/dist/summary/summarizerNode/index.js +4 -4
  164. package/dist/summary/summarizerNode/index.js.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  166. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  167. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  168. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  169. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  170. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  171. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  172. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  173. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  174. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  175. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  176. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  177. package/dist/summary/summarizerTypes.d.ts +10 -21
  178. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  179. package/dist/summary/summarizerTypes.js.map +1 -1
  180. package/dist/summary/summaryFormat.d.ts +15 -2
  181. package/dist/summary/summaryFormat.d.ts.map +1 -1
  182. package/dist/summary/summaryFormat.js.map +1 -1
  183. package/dist/summary/summaryGenerator.d.ts +6 -5
  184. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  185. package/dist/summary/summaryGenerator.js +10 -1
  186. package/dist/summary/summaryGenerator.js.map +1 -1
  187. package/dist/summary/summaryManager.d.ts +5 -6
  188. package/dist/summary/summaryManager.d.ts.map +1 -1
  189. package/dist/summary/summaryManager.js +4 -5
  190. package/dist/summary/summaryManager.js.map +1 -1
  191. package/dist/tsdoc-metadata.json +1 -1
  192. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  193. package/lib/batchTracker.d.ts.map +1 -0
  194. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  195. package/lib/batchTracker.js.map +1 -0
  196. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -6
  197. package/lib/blobManager.d.ts.map +1 -0
  198. package/lib/{blobManager.mjs → blobManager.js} +1 -13
  199. package/lib/blobManager.js.map +1 -0
  200. package/lib/channelCollection.d.ts +225 -0
  201. package/lib/channelCollection.d.ts.map +1 -0
  202. package/lib/{dataStores.mjs → channelCollection.js} +436 -133
  203. package/lib/channelCollection.js.map +1 -0
  204. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  205. package/lib/connectionTelemetry.d.ts.map +1 -0
  206. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  207. package/lib/connectionTelemetry.js.map +1 -0
  208. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +138 -49
  209. package/lib/{container-runtime-beta.d.mts → container-runtime-beta.d.ts} +75 -9
  210. package/lib/{container-runtime-public.d.mts → container-runtime-public.d.ts} +75 -9
  211. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +717 -49
  212. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  213. package/lib/containerHandleContext.d.ts.map +1 -0
  214. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  215. package/lib/containerHandleContext.js.map +1 -0
  216. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +89 -65
  217. package/lib/containerRuntime.d.ts.map +1 -0
  218. package/lib/{containerRuntime.mjs → containerRuntime.js} +469 -348
  219. package/lib/containerRuntime.js.map +1 -0
  220. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  221. package/lib/dataStore.d.ts.map +1 -0
  222. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  223. package/lib/dataStore.js.map +1 -0
  224. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +119 -39
  225. package/lib/dataStoreContext.d.ts.map +1 -0
  226. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +241 -153
  227. package/lib/dataStoreContext.js.map +1 -0
  228. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +3 -2
  229. package/lib/dataStoreContexts.d.ts.map +1 -0
  230. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +2 -1
  231. package/lib/dataStoreContexts.js.map +1 -0
  232. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  233. package/lib/dataStoreRegistry.d.ts.map +1 -0
  234. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  235. package/lib/dataStoreRegistry.js.map +1 -0
  236. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  237. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  238. package/lib/deltaManagerSummarizerProxy.js +124 -0
  239. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  240. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  241. package/lib/deltaScheduler.d.ts.map +1 -0
  242. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  243. package/lib/deltaScheduler.js.map +1 -0
  244. package/lib/{error.d.mts → error.d.ts} +1 -1
  245. package/lib/error.d.ts.map +1 -0
  246. package/lib/{error.mjs → error.js} +1 -1
  247. package/lib/error.js.map +1 -0
  248. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +30 -8
  249. package/lib/gc/garbageCollection.d.ts.map +1 -0
  250. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +149 -68
  251. package/lib/gc/garbageCollection.js.map +1 -0
  252. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  253. package/lib/gc/gcConfigs.d.ts.map +1 -0
  254. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +14 -7
  255. package/lib/gc/gcConfigs.js.map +1 -0
  256. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +41 -16
  257. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  258. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +11 -4
  259. package/lib/gc/gcDefinitions.js.map +1 -0
  260. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  261. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  262. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  263. package/lib/gc/gcHelpers.js.map +1 -0
  264. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  265. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  266. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  267. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  268. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  269. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  270. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  271. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  272. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
  273. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  274. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
  275. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  276. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
  277. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  278. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
  279. package/lib/gc/gcTelemetry.js.map +1 -0
  280. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
  281. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  282. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
  283. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  284. package/lib/gc/index.d.ts +13 -0
  285. package/lib/gc/index.d.ts.map +1 -0
  286. package/lib/gc/{index.mjs → index.js} +8 -8
  287. package/lib/gc/index.js.map +1 -0
  288. package/lib/{index.d.mts → index.d.ts} +12 -21
  289. package/lib/index.d.ts.map +1 -0
  290. package/lib/index.js +15 -0
  291. package/lib/index.js.map +1 -0
  292. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  293. package/lib/messageTypes.d.ts.map +1 -0
  294. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  295. package/lib/messageTypes.js.map +1 -0
  296. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  297. package/lib/metadata.d.ts.map +1 -0
  298. package/lib/{metadata.mjs → metadata.js} +1 -1
  299. package/lib/metadata.js.map +1 -0
  300. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  301. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  302. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  303. package/lib/opLifecycle/batchManager.js.map +1 -0
  304. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  305. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  306. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  307. package/lib/opLifecycle/definitions.js.map +1 -0
  308. package/lib/opLifecycle/index.d.ts +13 -0
  309. package/lib/opLifecycle/index.d.ts.map +1 -0
  310. package/lib/opLifecycle/index.js +12 -0
  311. package/lib/opLifecycle/index.js.map +1 -0
  312. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  313. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  314. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  315. package/lib/opLifecycle/opCompressor.js.map +1 -0
  316. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  317. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  318. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  319. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  320. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  321. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  322. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  323. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  324. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  325. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  326. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  327. package/lib/opLifecycle/opSplitter.js.map +1 -0
  328. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  329. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  330. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  331. package/lib/opLifecycle/outbox.js.map +1 -0
  332. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  333. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  334. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  335. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  336. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  337. package/lib/opProperties.d.ts.map +1 -0
  338. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  339. package/lib/opProperties.js.map +1 -0
  340. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  341. package/lib/packageVersion.d.ts.map +1 -0
  342. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  343. package/lib/packageVersion.js.map +1 -0
  344. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  345. package/lib/pendingStateManager.d.ts.map +1 -0
  346. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  347. package/lib/pendingStateManager.js.map +1 -0
  348. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  349. package/lib/scheduleManager.d.ts.map +1 -0
  350. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  351. package/lib/scheduleManager.js.map +1 -0
  352. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  353. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  354. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  355. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  356. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  357. package/lib/summary/index.d.ts.map +1 -0
  358. package/lib/summary/{index.mjs → index.js} +12 -12
  359. package/lib/summary/index.js.map +1 -0
  360. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  361. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  362. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  363. package/lib/summary/orderedClientElection.js.map +1 -0
  364. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  365. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  366. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  367. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  368. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  369. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  370. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  371. package/lib/summary/runningSummarizer.js.map +1 -0
  372. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  373. package/lib/summary/summarizer.d.ts.map +1 -0
  374. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  375. package/lib/summary/summarizer.js.map +1 -0
  376. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  377. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  378. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  379. package/lib/summary/summarizerClientElection.js.map +1 -0
  380. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  381. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  382. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  383. package/lib/summary/summarizerHeuristics.js.map +1 -0
  384. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  385. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  386. package/lib/summary/summarizerNode/index.js +7 -0
  387. package/lib/summary/summarizerNode/index.js.map +1 -0
  388. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  389. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  390. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  391. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  392. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  393. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  394. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  395. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  396. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  397. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  398. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  399. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  400. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  401. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  402. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  403. package/lib/summary/summarizerTypes.js.map +1 -0
  404. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  405. package/lib/summary/summaryCollection.d.ts.map +1 -0
  406. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  407. package/lib/summary/summaryCollection.js.map +1 -0
  408. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  409. package/lib/summary/summaryFormat.d.ts.map +1 -0
  410. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  411. package/lib/summary/summaryFormat.js.map +1 -0
  412. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  413. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  414. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  415. package/lib/summary/summaryGenerator.js.map +1 -0
  416. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  417. package/lib/summary/summaryManager.d.ts.map +1 -0
  418. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  419. package/lib/summary/summaryManager.js.map +1 -0
  420. package/lib/test/batchTracker.spec.js +88 -0
  421. package/lib/test/batchTracker.spec.js.map +1 -0
  422. package/lib/test/blobManager.spec.js +835 -0
  423. package/lib/test/blobManager.spec.js.map +1 -0
  424. package/lib/test/channelCollection.spec.js +138 -0
  425. package/lib/test/channelCollection.spec.js.map +1 -0
  426. package/lib/test/containerRuntime.spec.js +1748 -0
  427. package/lib/test/containerRuntime.spec.js.map +1 -0
  428. package/lib/test/dataStoreContext.spec.js +771 -0
  429. package/lib/test/dataStoreContext.spec.js.map +1 -0
  430. package/lib/test/dataStoreCreation.spec.js +303 -0
  431. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  432. package/lib/test/dataStoreRegistry.spec.js +26 -0
  433. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  434. package/lib/test/fuzz/fuzzUtils.js +66 -0
  435. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  436. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  437. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  438. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  439. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  440. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  441. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  442. package/lib/test/gc/garbageCollection.spec.js +1464 -0
  443. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  444. package/lib/test/gc/gcConfigs.spec.js +689 -0
  445. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  446. package/lib/test/gc/gcHelpers.spec.js +110 -0
  447. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  448. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  449. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  450. package/lib/test/gc/gcStats.spec.js +390 -0
  451. package/lib/test/gc/gcStats.spec.js.map +1 -0
  452. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  453. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  454. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  455. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  456. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  457. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  458. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  459. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  460. package/lib/test/getPendingBlobs.spec.js +193 -0
  461. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  462. package/lib/test/hardwareStats.spec.js +93 -0
  463. package/lib/test/hardwareStats.spec.js.map +1 -0
  464. package/lib/test/index.js +6 -0
  465. package/lib/test/index.js.map +1 -0
  466. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  467. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  468. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  469. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  470. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  471. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  472. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  473. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  474. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  475. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  476. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  477. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  478. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  479. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  480. package/lib/test/pendingStateManager.spec.js +329 -0
  481. package/lib/test/pendingStateManager.spec.js.map +1 -0
  482. package/lib/test/scheduleManager.spec.js +270 -0
  483. package/lib/test/scheduleManager.spec.js.map +1 -0
  484. package/lib/test/summarizerNode.spec.js +326 -0
  485. package/lib/test/summarizerNode.spec.js.map +1 -0
  486. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  487. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  488. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  489. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  490. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  491. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  492. package/lib/test/summary/summarizer.spec.js +29 -0
  493. package/lib/test/summary/summarizer.spec.js.map +1 -0
  494. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  495. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  496. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  497. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  498. package/lib/test/summary/summaryCollection.spec.js +200 -0
  499. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  500. package/lib/test/summary/summaryManager.spec.js +430 -0
  501. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  502. package/lib/test/summary/testQuorumClients.js +34 -0
  503. package/lib/test/summary/testQuorumClients.js.map +1 -0
  504. package/lib/test/throttler.spec.js +175 -0
  505. package/lib/test/throttler.spec.js.map +1 -0
  506. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  507. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  508. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  509. package/lib/throttler.d.ts.map +1 -0
  510. package/lib/{throttler.mjs → throttler.js} +1 -1
  511. package/lib/throttler.js.map +1 -0
  512. package/package.json +106 -87
  513. package/src/batchTracker.ts +1 -1
  514. package/src/blobManager.ts +1 -15
  515. package/src/{dataStores.ts → channelCollection.ts} +622 -170
  516. package/src/connectionTelemetry.ts +42 -3
  517. package/src/containerHandleContext.ts +1 -1
  518. package/src/containerRuntime.ts +683 -483
  519. package/src/dataStore.ts +16 -15
  520. package/src/dataStoreContext.ts +378 -216
  521. package/src/dataStoreContexts.ts +2 -1
  522. package/src/deltaManagerSummarizerProxy.ts +132 -7
  523. package/src/gc/garbageCollection.ts +167 -71
  524. package/src/gc/gcConfigs.ts +17 -7
  525. package/src/gc/gcDefinitions.ts +42 -16
  526. package/src/gc/gcHelpers.ts +2 -2
  527. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  528. package/src/gc/gcSummaryStateTracker.ts +19 -7
  529. package/src/gc/gcTelemetry.ts +10 -9
  530. package/src/gc/gcUnreferencedStateTracker.ts +12 -1
  531. package/src/gc/index.ts +11 -9
  532. package/src/index.ts +29 -26
  533. package/src/messageTypes.ts +4 -4
  534. package/src/opLifecycle/README.md +2 -4
  535. package/src/opLifecycle/batchManager.ts +2 -2
  536. package/src/opLifecycle/definitions.ts +2 -2
  537. package/src/opLifecycle/index.ts +8 -8
  538. package/src/opLifecycle/opCompressor.ts +3 -3
  539. package/src/opLifecycle/opDecompressor.ts +3 -3
  540. package/src/opLifecycle/opGroupingManager.ts +3 -12
  541. package/src/opLifecycle/opSplitter.ts +3 -3
  542. package/src/opLifecycle/outbox.ts +29 -9
  543. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  544. package/src/packageVersion.ts +1 -1
  545. package/src/pendingStateManager.ts +19 -13
  546. package/src/scheduleManager.ts +4 -4
  547. package/src/summary/index.ts +13 -12
  548. package/src/summary/orderedClientElection.ts +1 -1
  549. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  550. package/src/summary/runningSummarizer.ts +141 -93
  551. package/src/summary/summarizer.ts +7 -7
  552. package/src/summary/summarizerClientElection.ts +2 -2
  553. package/src/summary/summarizerHeuristics.ts +3 -3
  554. package/src/summary/summarizerNode/index.ts +6 -3
  555. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  556. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  557. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  558. package/src/summary/summarizerTypes.ts +12 -24
  559. package/src/summary/summaryFormat.ts +16 -2
  560. package/src/summary/summaryGenerator.ts +16 -4
  561. package/src/summary/summaryManager.ts +6 -7
  562. package/tsconfig.cjs.json +7 -0
  563. package/tsconfig.json +2 -5
  564. package/dist/dataStores.d.ts +0 -149
  565. package/dist/dataStores.d.ts.map +0 -1
  566. package/dist/dataStores.js.map +0 -1
  567. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  568. package/dist/deltaManagerProxyBase.js +0 -77
  569. package/dist/deltaManagerProxyBase.js.map +0 -1
  570. package/lib/batchTracker.d.mts.map +0 -1
  571. package/lib/batchTracker.mjs.map +0 -1
  572. package/lib/blobManager.d.mts.map +0 -1
  573. package/lib/blobManager.mjs.map +0 -1
  574. package/lib/connectionTelemetry.d.mts.map +0 -1
  575. package/lib/connectionTelemetry.mjs.map +0 -1
  576. package/lib/containerHandleContext.d.mts.map +0 -1
  577. package/lib/containerHandleContext.mjs.map +0 -1
  578. package/lib/containerRuntime.d.mts.map +0 -1
  579. package/lib/containerRuntime.mjs.map +0 -1
  580. package/lib/dataStore.d.mts.map +0 -1
  581. package/lib/dataStore.mjs.map +0 -1
  582. package/lib/dataStoreContext.d.mts.map +0 -1
  583. package/lib/dataStoreContext.mjs.map +0 -1
  584. package/lib/dataStoreContexts.d.mts.map +0 -1
  585. package/lib/dataStoreContexts.mjs.map +0 -1
  586. package/lib/dataStoreRegistry.d.mts.map +0 -1
  587. package/lib/dataStoreRegistry.mjs.map +0 -1
  588. package/lib/dataStores.d.mts +0 -149
  589. package/lib/dataStores.d.mts.map +0 -1
  590. package/lib/dataStores.mjs.map +0 -1
  591. package/lib/deltaManagerProxyBase.d.mts +0 -35
  592. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  593. package/lib/deltaManagerProxyBase.mjs +0 -73
  594. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  595. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  596. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  597. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  598. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  599. package/lib/deltaScheduler.d.mts.map +0 -1
  600. package/lib/deltaScheduler.mjs.map +0 -1
  601. package/lib/error.d.mts.map +0 -1
  602. package/lib/error.mjs.map +0 -1
  603. package/lib/gc/garbageCollection.d.mts.map +0 -1
  604. package/lib/gc/garbageCollection.mjs.map +0 -1
  605. package/lib/gc/gcConfigs.d.mts.map +0 -1
  606. package/lib/gc/gcConfigs.mjs.map +0 -1
  607. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  608. package/lib/gc/gcDefinitions.mjs.map +0 -1
  609. package/lib/gc/gcHelpers.mjs.map +0 -1
  610. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  611. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  612. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  613. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  614. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  615. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  616. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  617. package/lib/gc/gcTelemetry.mjs.map +0 -1
  618. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  619. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  620. package/lib/gc/index.d.mts +0 -13
  621. package/lib/gc/index.d.mts.map +0 -1
  622. package/lib/gc/index.mjs.map +0 -1
  623. package/lib/index.d.mts.map +0 -1
  624. package/lib/index.mjs +0 -24
  625. package/lib/index.mjs.map +0 -1
  626. package/lib/messageTypes.d.mts.map +0 -1
  627. package/lib/messageTypes.mjs.map +0 -1
  628. package/lib/metadata.d.mts.map +0 -1
  629. package/lib/metadata.mjs.map +0 -1
  630. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  631. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  632. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  633. package/lib/opLifecycle/definitions.mjs.map +0 -1
  634. package/lib/opLifecycle/index.d.mts +0 -13
  635. package/lib/opLifecycle/index.d.mts.map +0 -1
  636. package/lib/opLifecycle/index.mjs +0 -12
  637. package/lib/opLifecycle/index.mjs.map +0 -1
  638. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  639. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  640. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  641. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  642. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  643. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  644. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  645. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  646. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  647. package/lib/opLifecycle/outbox.mjs.map +0 -1
  648. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  649. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  650. package/lib/opProperties.d.mts.map +0 -1
  651. package/lib/opProperties.mjs.map +0 -1
  652. package/lib/packageVersion.d.mts.map +0 -1
  653. package/lib/packageVersion.mjs.map +0 -1
  654. package/lib/pendingStateManager.d.mts.map +0 -1
  655. package/lib/pendingStateManager.mjs.map +0 -1
  656. package/lib/scheduleManager.d.mts.map +0 -1
  657. package/lib/scheduleManager.mjs.map +0 -1
  658. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  659. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  660. package/lib/summary/index.d.mts.map +0 -1
  661. package/lib/summary/index.mjs.map +0 -1
  662. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  663. package/lib/summary/orderedClientElection.mjs.map +0 -1
  664. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  665. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  666. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  667. package/lib/summary/runningSummarizer.mjs.map +0 -1
  668. package/lib/summary/summarizer.d.mts.map +0 -1
  669. package/lib/summary/summarizer.mjs.map +0 -1
  670. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  671. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  672. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  673. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  674. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  675. package/lib/summary/summarizerNode/index.mjs +0 -7
  676. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  677. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  678. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  679. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  680. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  681. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  682. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  683. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  684. package/lib/summary/summarizerTypes.mjs.map +0 -1
  685. package/lib/summary/summaryCollection.d.mts.map +0 -1
  686. package/lib/summary/summaryCollection.mjs.map +0 -1
  687. package/lib/summary/summaryFormat.d.mts.map +0 -1
  688. package/lib/summary/summaryFormat.mjs.map +0 -1
  689. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  690. package/lib/summary/summaryGenerator.mjs.map +0 -1
  691. package/lib/summary/summaryManager.d.mts.map +0 -1
  692. package/lib/summary/summaryManager.mjs.map +0 -1
  693. package/lib/throttler.d.mts.map +0 -1
  694. package/lib/throttler.mjs.map +0 -1
  695. package/src/deltaManagerProxyBase.ts +0 -111
@@ -2,15 +2,15 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { AttachState, } from "@fluidframework/container-definitions";
5
+ import { AttachState } from "@fluidframework/container-definitions";
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
- import { assert, Deferred, LazyPromise } from "@fluidframework/core-utils";
7
+ import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils";
8
8
  import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
9
- import { channelsTreeName, VisibilityState, } from "@fluidframework/runtime-definitions";
10
- import { addBlobToSummary, convertSummaryTreeToITree } from "@fluidframework/runtime-utils";
9
+ import { channelsTreeName, gcDataBlobKey, } from "@fluidframework/runtime-definitions";
10
+ import { addBlobToSummary } from "@fluidframework/runtime-utils";
11
11
  import { createChildMonitoringContext, DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, generateStack, LoggingError, tagCodeArtifacts, ThresholdCounter, } from "@fluidframework/telemetry-utils";
12
- import { dataStoreAttributesBlobName, hasIsolatedChannels, wrapSummaryInChannelsTree, getAttributesFormatVersion, getFluidDataStoreAttributes, summarizerClientType, } from "./summary/index.mjs";
13
- import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.mjs";
12
+ import { dataStoreAttributesBlobName, hasIsolatedChannels, wrapSummaryInChannelsTree, getAttributesFormatVersion, getFluidDataStoreAttributes, summarizerClientType, } from "./summary/index.js";
13
+ import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
14
14
  function createAttributes(pkg, isRootDataStore) {
15
15
  const stringifiedPkg = JSON.stringify(pkg);
16
16
  return {
@@ -25,6 +25,7 @@ export function createAttributesBlob(pkg, isRootDataStore) {
25
25
  }
26
26
  /**
27
27
  * Represents the context for the store. This context is passed to the store runtime.
28
+ * @internal
28
29
  */
29
30
  export class FluidDataStoreContext extends TypedEventEmitter {
30
31
  get packagePath() {
@@ -32,31 +33,31 @@ export class FluidDataStoreContext extends TypedEventEmitter {
32
33
  return this.pkg;
33
34
  }
34
35
  get options() {
35
- return this._containerRuntime.options;
36
+ return this.parentContext.options;
36
37
  }
37
38
  get clientId() {
38
- return this._containerRuntime.clientId;
39
+ return this.parentContext.clientId;
39
40
  }
40
41
  get clientDetails() {
41
- return this._containerRuntime.clientDetails;
42
+ return this.parentContext.clientDetails;
42
43
  }
43
44
  get logger() {
44
- return this._containerRuntime.logger;
45
+ return this.parentContext.logger;
45
46
  }
46
47
  get deltaManager() {
47
- return this._containerRuntime.deltaManager;
48
+ return this.parentContext.deltaManager;
48
49
  }
49
50
  get connected() {
50
- return this._containerRuntime.connected;
51
+ return this.parentContext.connected;
51
52
  }
52
53
  get IFluidHandleContext() {
53
- return this._containerRuntime.IFluidHandleContext;
54
+ return this.parentContext.IFluidHandleContext;
54
55
  }
55
56
  get containerRuntime() {
56
57
  return this._containerRuntime;
57
58
  }
58
59
  ensureNoDataModelChanges(callback) {
59
- return this._containerRuntime.ensureNoDataModelChanges(callback);
60
+ return this.parentContext.ensureNoDataModelChanges(callback);
60
61
  }
61
62
  get isLoaded() {
62
63
  return this.loaded;
@@ -65,7 +66,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
65
66
  return this._baseSnapshot;
66
67
  }
67
68
  get idCompressor() {
68
- return this._containerRuntime.idCompressor;
69
+ return this.parentContext.idCompressor;
69
70
  }
70
71
  get disposed() {
71
72
  return this._disposed;
@@ -115,17 +116,19 @@ export class FluidDataStoreContext extends TypedEventEmitter {
115
116
  this.loaded = false;
116
117
  this.pending = [];
117
118
  this._isInMemoryRoot = false;
118
- this._containerRuntime = props.runtime;
119
+ this._containerRuntime = props.parentContext.containerRuntime;
120
+ this.parentContext = props.parentContext;
119
121
  this.id = props.id;
120
122
  this.storage = props.storage;
121
123
  this.scope = props.scope;
122
124
  this.pkg = props.pkg;
125
+ this.loadingGroupId = props.loadingGroupId;
123
126
  // URIs use slashes as delimiters. Handles use URIs.
124
127
  // Thus having slashes in types almost guarantees trouble down the road!
125
128
  assert(!this.id.includes("/"), 0x13a /* Data store ID contains slash */);
126
129
  this._attachState =
127
- this.containerRuntime.attachState !== AttachState.Detached && this.existing
128
- ? this.containerRuntime.attachState
130
+ this.parentContext.attachState !== AttachState.Detached && this.existing
131
+ ? this.parentContext.attachState
129
132
  : AttachState.Detached;
130
133
  const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);
131
134
  this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));
@@ -142,7 +145,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
142
145
  },
143
146
  });
144
147
  this.thresholdOpsCounter = new ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
145
- this.throwOnTombstoneUsage = this._containerRuntime.gcThrowOnTombstoneUsage;
148
+ this.gcThrowOnTombstoneUsage = this.parentContext.gcThrowOnTombstoneUsage;
149
+ this.gcTombstoneEnforcementAllowed = this.parentContext.gcTombstoneEnforcementAllowed;
146
150
  // By default, a data store can log maximum 10 local changes telemetry in summarizer.
147
151
  this.localChangesTelemetryCount =
148
152
  this.mc.config.getNumber("Fluid.Telemetry.LocalChangesTelemetryCount") ?? 10;
@@ -153,9 +157,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
153
157
  }
154
158
  this._disposed = true;
155
159
  // Dispose any pending runtime after it gets fulfilled
156
- // Errors are logged where this.channelDeferred is consumed/generated (realizeCore(), bindRuntime())
157
- if (this.channelDeferred) {
158
- this.channelDeferred.promise
160
+ // Errors are logged where this.channelP is consumed/generated (realizeCore(), bindRuntime())
161
+ if (this.channelP) {
162
+ this.channelP
159
163
  .then((runtime) => {
160
164
  runtime.dispose();
161
165
  })
@@ -184,27 +188,26 @@ export class FluidDataStoreContext extends TypedEventEmitter {
184
188
  }
185
189
  async realize() {
186
190
  assert(!this.detachedRuntimeCreation, 0x13d /* "Detached runtime creation on realize()" */);
187
- if (!this.channelDeferred) {
188
- this.channelDeferred = new Deferred();
189
- this.realizeCore(this.existing).catch((error) => {
191
+ if (!this.channelP) {
192
+ this.channelP = this.realizeCore(this.existing).catch((error) => {
190
193
  const errorWrapped = DataProcessingError.wrapIfUnrecognized(error, "realizeFluidDataStoreContext");
191
194
  errorWrapped.addTelemetryProperties(tagCodeArtifacts({
192
195
  fullPackageName: this.pkg?.join("/"),
193
196
  fluidDataStoreId: this.id,
194
197
  }));
195
- this.channelDeferred?.reject(errorWrapped);
196
198
  this.mc.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
199
+ throw errorWrapped;
197
200
  });
198
201
  }
199
- return this.channelDeferred.promise;
202
+ return this.channelP;
200
203
  }
201
- async factoryFromPackagePath(packages) {
202
- assert(this.pkg === packages, 0x13e /* "Unexpected package path" */);
204
+ async factoryFromPackagePath() {
205
+ const packages = this.pkg;
203
206
  if (packages === undefined) {
204
207
  this.rejectDeferredRealize("packages is undefined");
205
208
  }
206
209
  let entry;
207
- let registry = this._containerRuntime.IFluidDataStoreRegistry;
210
+ let registry = this.parentContext.IFluidDataStoreRegistry;
208
211
  let lastPkg;
209
212
  for (const pkg of packages) {
210
213
  if (!registry) {
@@ -221,7 +224,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
221
224
  if (factory === undefined) {
222
225
  this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
223
226
  }
224
- return { factory, registry };
227
+ assert(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
228
+ this.registry = registry;
229
+ return factory;
225
230
  }
226
231
  async realizeCore(existing) {
227
232
  const details = await this.getInitialSnapshotDetails();
@@ -229,18 +234,18 @@ export class FluidDataStoreContext extends TypedEventEmitter {
229
234
  // It is important that this be in sync with the pending ops, and also
230
235
  // that it is set here, before bindRuntime is called.
231
236
  this._baseSnapshot = details.snapshot;
232
- const packages = details.pkg;
233
- const { factory, registry } = await this.factoryFromPackagePath(packages);
234
- assert(this.registry === undefined, 0x13f /* "datastore context registry is already set" */);
235
- this.registry = registry;
237
+ this.baseSnapshotSequenceNumber = details.sequenceNumber;
238
+ assert(this.pkg === details.pkg, 0x13e /* "Unexpected package path" */);
239
+ const factory = await this.factoryFromPackagePath();
236
240
  const channel = await factory.instantiateDataStore(this, existing);
237
241
  assert(channel !== undefined, 0x140 /* "undefined channel on datastore context" */);
238
- this.bindRuntime(channel);
242
+ await this.bindRuntime(channel, existing);
239
243
  // This data store may have been disposed before the channel is created during realization. If so,
240
244
  // dispose the channel now.
241
245
  if (this.disposed) {
242
246
  channel.dispose();
243
247
  }
248
+ return channel;
244
249
  }
245
250
  /**
246
251
  * Notifies this object about changes in the connection state.
@@ -259,20 +264,14 @@ export class FluidDataStoreContext extends TypedEventEmitter {
259
264
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
260
265
  this.channel.setConnectionState(connected, clientId);
261
266
  }
262
- process(messageArg, local, localOpMetadata) {
263
- const safeTelemetryProps = extractSafePropertiesFromMessage(messageArg);
267
+ process(message, local, localOpMetadata) {
268
+ const safeTelemetryProps = extractSafePropertiesFromMessage(message);
264
269
  // On op process, tombstone error is logged in garbage collector. So, set "checkTombstone" to false when calling
265
270
  // "verifyNotClosed" which logs tombstone errors. Throw error if tombstoned and throwing on load is configured.
266
271
  this.verifyNotClosed("process", false /* checkTombstone */, safeTelemetryProps);
267
- if (this.tombstoned && this.throwOnTombstoneUsage) {
272
+ if (this.tombstoned && this.gcThrowOnTombstoneUsage) {
268
273
  throw new DataCorruptionError("Context is tombstoned! Call site [process]", safeTelemetryProps);
269
274
  }
270
- const innerContents = messageArg.contents;
271
- const message = {
272
- ...messageArg,
273
- type: innerContents.type,
274
- contents: innerContents.content,
275
- };
276
275
  this.summarizerNode.recordChange(message);
277
276
  if (this.loaded) {
278
277
  return this.channel?.process(message, local, localOpMetadata);
@@ -293,10 +292,10 @@ export class FluidDataStoreContext extends TypedEventEmitter {
293
292
  this.channel?.processSignal(message, local);
294
293
  }
295
294
  getQuorum() {
296
- return this._containerRuntime.getQuorum();
295
+ return this.parentContext.getQuorum();
297
296
  }
298
297
  getAudience() {
299
- return this._containerRuntime.getAudience();
298
+ return this.parentContext.getAudience();
300
299
  }
301
300
  /**
302
301
  * Returns a summary at the current sequence number.
@@ -325,6 +324,10 @@ export class FluidDataStoreContext extends TypedEventEmitter {
325
324
  summarizeResult.summary.unreferenced = true;
326
325
  summarizeResult.stats.unreferencedBlobSize = summarizeResult.stats.totalBlobSize;
327
326
  }
327
+ // Add loadingGroupId to the summary
328
+ if (this.loadingGroupId !== undefined) {
329
+ summarizeResult.summary.groupId = this.loadingGroupId;
330
+ }
328
331
  return {
329
332
  ...summarizeResult,
330
333
  id: this.id,
@@ -384,9 +387,11 @@ export class FluidDataStoreContext extends TypedEventEmitter {
384
387
  }
385
388
  }
386
389
  /**
387
- * @deprecated There is no replacement for this, its functionality is no longer needed.
390
+ * @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
388
391
  * It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
389
392
  *
393
+ * Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
394
+ *
390
395
  * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
391
396
  * all references added in the system.
392
397
  * @param srcHandle - The handle of the node that added the reference.
@@ -396,9 +401,21 @@ export class FluidDataStoreContext extends TypedEventEmitter {
396
401
  // By default, skip this call since the ContainerRuntime will detect the outbound route directly.
397
402
  if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) === true) {
398
403
  // Note: The ContainerRuntime code will check this same setting to avoid double counting.
399
- this._containerRuntime.addedGCOutboundReference(srcHandle, outboundHandle);
404
+ this.parentContext.addedGCOutboundReference?.(srcHandle, outboundHandle);
400
405
  }
401
406
  }
407
+ /**
408
+ * (Same as @see addedGCOutboundReference, but with string paths instead of handles)
409
+ *
410
+ * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
411
+ * all references added in the system.
412
+ *
413
+ * @param fromPath - The absolute path of the node that added the reference.
414
+ * @param toPath - The absolute path of the outbound node that is referenced.
415
+ */
416
+ addedGCOutboundRoute(fromPath, toPath) {
417
+ this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
418
+ }
402
419
  /**
403
420
  * Updates the used routes of the channel and its child contexts. The channel must be loaded before calling this.
404
421
  * It is called in these two scenarios:
@@ -428,13 +445,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
428
445
  submitMessage(type, content, localOpMetadata) {
429
446
  this.verifyNotClosed("submitMessage");
430
447
  assert(!!this.channel, 0x146 /* "Channel must exist when submitting message" */);
431
- const fluidDataStoreContent = {
432
- content,
433
- type,
434
- };
435
448
  // Summarizer clients should not submit messages.
436
449
  this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
437
- this._containerRuntime.submitDataStoreOp(this.id, fluidDataStoreContent, localOpMetadata);
450
+ this.parentContext.submitMessage(type, content, localOpMetadata);
438
451
  }
439
452
  /**
440
453
  * This is called from a SharedSummaryBlock that does not generate ops but only wants to be part of the summary.
@@ -464,7 +477,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
464
477
  submitSignal(type, content, targetClientId) {
465
478
  this.verifyNotClosed("submitSignal");
466
479
  assert(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
467
- return this._containerRuntime.submitDataStoreSignal(this.id, type, content, targetClientId);
480
+ return this.parentContext.submitSignal(type, content, targetClientId);
468
481
  }
469
482
  /**
470
483
  * This is called by the data store channel when it becomes locally visible indicating that it is ready to become
@@ -472,54 +485,67 @@ export class FluidDataStoreContext extends TypedEventEmitter {
472
485
  */
473
486
  makeLocallyVisible() {
474
487
  assert(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
475
- assert(this.channel.visibilityState === VisibilityState.LocallyVisible, 0x590 /* Channel must be locally visible */);
476
488
  this.makeLocallyVisibleFn();
477
489
  }
478
- bindRuntime(channel) {
479
- if (this.channel) {
480
- throw new Error("Runtime already bound");
481
- }
482
- try {
483
- assert(!this.detachedRuntimeCreation, 0x148 /* "Detached runtime creation on runtime bind" */);
484
- assert(this.channelDeferred !== undefined, 0x149 /* "Undefined channel deferral" */);
485
- assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
486
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
487
- const pending = this.pending;
488
- // Apply all pending ops
489
- for (const op of pending) {
490
+ processPendingOps(channel) {
491
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
492
+ const pending = this.pending;
493
+ // Apply all pending ops
494
+ for (const op of pending) {
495
+ // Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
496
+ const seqNumber = this.baseSnapshotSequenceNumber ?? -1;
497
+ if (op.sequenceNumber > seqNumber) {
490
498
  channel.process(op, false, undefined /* localOpMetadata */);
491
499
  }
492
- this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
493
- this.pending = undefined;
494
- // And now mark the runtime active
495
- this.loaded = true;
496
- this.channel = channel;
497
- // Freeze the package path to ensure that someone doesn't modify it when it is
498
- // returned in packagePath().
499
- Object.freeze(this.pkg);
500
- /**
501
- * Update the used routes of the channel. If GC has run before this data store was realized, we will have
502
- * the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
503
- * per the last time GC was run.
504
- * Also, this data store may have been realized during summarize. In that case, the child contexts need to
505
- * have their used routes updated to determine if its needs to summarize again and to add it to the summary.
506
- */
507
- this.updateChannelUsedRoutes();
508
- // And notify the pending promise it is now available
509
- this.channelDeferred.resolve(this.channel);
510
500
  }
511
- catch (error) {
512
- this.channelDeferred?.reject(error);
513
- this.mc.logger.sendErrorEvent({
514
- eventName: "BindRuntimeError",
515
- }, error);
501
+ this.pending = undefined;
502
+ this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
503
+ }
504
+ completeBindingRuntime(channel) {
505
+ // And now mark the runtime active
506
+ this.loaded = true;
507
+ this.channel = channel;
508
+ // Channel does not know when it's "live" (as in - starts to receive events in the system)
509
+ // It may read current state of the system when channel was created, but it was not getting any updates
510
+ // through creation process and could have missed events. So update it on current state.
511
+ // Once this.loaded is set (above), it will stat receiving events.
512
+ channel.setConnectionState(this.connected, this.clientId);
513
+ // Freeze the package path to ensure that someone doesn't modify it when it is
514
+ // returned in packagePath().
515
+ Object.freeze(this.pkg);
516
+ /**
517
+ * Update the used routes of the channel. If GC has run before this data store was realized, we will have
518
+ * the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
519
+ * per the last time GC was run.
520
+ * Also, this data store may have been realized during summarize. In that case, the child contexts need to
521
+ * have their used routes updated to determine if its needs to summarize again and to add it to the summary.
522
+ */
523
+ this.updateChannelUsedRoutes();
524
+ }
525
+ async bindRuntime(channel, existing) {
526
+ if (this.channel) {
527
+ throw new Error("Runtime already bound");
516
528
  }
529
+ assert(!this.detachedRuntimeCreation, 0x148 /* "Detached runtime creation on runtime bind" */);
530
+ assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
531
+ if (!existing) {
532
+ // Execute data store's entry point to make sure that for a local (aka detached from container) data store, the
533
+ // entryPoint initialization function is called before the data store gets attached and potentially connected to
534
+ // the delta stream, so it gets a chance to do things while the data store is still "purely local".
535
+ // This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method
536
+ // of data store factories tends to construct the data object (at least kick off an async method that returns
537
+ // it); that code moved to the entryPoint initialization function, so we want to ensure it still executes
538
+ // before the data store is attached.
539
+ await channel.entryPoint.get();
540
+ }
541
+ this.processPendingOps(channel);
542
+ this.completeBindingRuntime(channel);
517
543
  }
518
544
  async getAbsoluteUrl(relativeUrl) {
519
545
  if (this.attachState !== AttachState.Attached) {
520
546
  return undefined;
521
547
  }
522
- return this._containerRuntime.getAbsoluteUrl(relativeUrl);
548
+ return this.parentContext.getAbsoluteUrl(relativeUrl);
523
549
  }
524
550
  /**
525
551
  * @deprecated Sets the datastore as root, for aliasing purposes: #7948
@@ -535,20 +561,18 @@ export class FluidDataStoreContext extends TypedEventEmitter {
535
561
  async getBaseGCDetails() {
536
562
  return {};
537
563
  }
538
- reSubmit(contents, localOpMetadata) {
564
+ reSubmit(type, contents, localOpMetadata) {
539
565
  assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
540
- const innerContents = contents;
541
- this.channel.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
566
+ this.channel.reSubmit(type, contents, localOpMetadata);
542
567
  }
543
- rollback(contents, localOpMetadata) {
568
+ rollback(type, contents, localOpMetadata) {
544
569
  if (!this.channel) {
545
570
  throw new Error("Channel must exist when rolling back ops");
546
571
  }
547
572
  if (!this.channel.rollback) {
548
573
  throw new Error("Channel doesn't support rollback");
549
574
  }
550
- const innerContents = contents;
551
- this.channel.rollback(innerContents.type, innerContents.content, localOpMetadata);
575
+ this.channel.rollback(type, contents, localOpMetadata);
552
576
  }
553
577
  async applyStashedOp(contents) {
554
578
  if (!this.channel) {
@@ -575,11 +599,11 @@ export class FluidDataStoreContext extends TypedEventEmitter {
575
599
  const error = new DataCorruptionError(messageString, safeTelemetryProps);
576
600
  sendGCUnexpectedUsageEvent(this.mc, {
577
601
  eventName: "GC_Tombstone_DataStore_Changed",
578
- category: this.throwOnTombstoneUsage ? "error" : "generic",
579
- gcTombstoneEnforcementAllowed: this._containerRuntime.gcTombstoneEnforcementAllowed,
602
+ category: this.gcThrowOnTombstoneUsage ? "error" : "generic",
603
+ gcTombstoneEnforcementAllowed: this.gcTombstoneEnforcementAllowed,
580
604
  callSite,
581
605
  }, this.pkg, error);
582
- if (this.throwOnTombstoneUsage) {
606
+ if (this.gcThrowOnTombstoneUsage) {
583
607
  throw error;
584
608
  }
585
609
  }
@@ -606,22 +630,33 @@ export class FluidDataStoreContext extends TypedEventEmitter {
606
630
  this.localChangesTelemetryCount--;
607
631
  }
608
632
  getCreateChildSummarizerNodeFn(id, createParam) {
609
- return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam,
610
- // DDS will not create failure summaries
611
- { throwOnFailure: true }, getGCDataFn);
633
+ return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam, undefined /* config */, getGCDataFn);
634
+ }
635
+ deleteChildSummarizerNode(id) {
636
+ this.summarizerNode.deleteChild(id);
612
637
  }
613
638
  async uploadBlob(blob, signal) {
614
- return this.containerRuntime.uploadBlob(blob, signal);
639
+ return this.parentContext.uploadBlob(blob, signal);
615
640
  }
616
641
  }
617
642
  FluidDataStoreContext.pendingOpsCountThreshold = 1000;
643
+ /** @internal */
618
644
  export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
619
645
  constructor(props) {
620
646
  super(props, true /* existing */, false /* isLocalDataStore */, () => {
621
647
  throw new Error("Already attached");
622
648
  });
623
649
  this.initialSnapshotDetailsP = new LazyPromise(async () => {
624
- let tree = this.initSnapshotValue;
650
+ // Sequence number of the snapshot.
651
+ let sequenceNumber;
652
+ if (this.snapshotFetchRequired) {
653
+ assert(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
654
+ const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
655
+ this._baseSnapshot = snapshot.snapshotTree;
656
+ sequenceNumber = snapshot.sequenceNumber;
657
+ this.snapshotFetchRequired = false;
658
+ }
659
+ let tree = this.baseSnapshot;
625
660
  let isRootDataStore = true;
626
661
  if (!!tree && tree.blobs[dataStoreAttributesBlobName] !== undefined) {
627
662
  // Need to get through snapshot and use that to populate extraBlobs
@@ -651,31 +686,49 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
651
686
  assert(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
652
687
  }
653
688
  }
689
+ assert(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
654
690
  return {
655
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
656
691
  pkg: this.pkg,
657
692
  isRootDataStore,
658
693
  snapshot: tree,
694
+ sequenceNumber,
659
695
  };
660
696
  });
661
- this.initSnapshotValue = props.snapshotTree;
697
+ this._baseSnapshot = props.snapshotTree;
698
+ this.snapshotFetchRequired = !!props.snapshotTree?.omitted;
699
+ this.runtime = props.parentContext.containerRuntime;
662
700
  if (props.snapshotTree !== undefined) {
663
701
  this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
664
702
  }
665
703
  }
704
+ /*
705
+ This API should not be called for RemoteFluidDataStoreContext. But here is one scenario where it's not the case:
706
+ The scenario (hit by stashedOps.spec.ts, "resends attach op" UT is the following (as far as I understand):
707
+ 1. data store is being attached in attached container
708
+ 2. container state is serialized (stashed ops feature)
709
+ 3. new container instance is rehydrated (from stashed ops)
710
+ - As result, we create RemoteFluidDataStoreContext for this data store that is actually in "attaching" state (as of # 2).
711
+ But its state is set to attached when loading container from stashed ops
712
+ 4. attach op for this data store is processed - setAttachState() is called.
713
+ */
714
+ setAttachState(attachState) { }
666
715
  async getInitialSnapshotDetails() {
667
716
  return this.initialSnapshotDetailsP;
668
717
  }
669
- generateAttachMessage() {
718
+ /**
719
+ * @see FluidDataStoreContext.getAttachData
720
+ */
721
+ getAttachData(includeGCData) {
670
722
  throw new Error("Cannot attach remote store");
671
723
  }
672
724
  }
673
725
  /**
674
726
  * Base class for detached & attached context classes
727
+ * @internal
675
728
  */
676
729
  export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
677
730
  constructor(props) {
678
- super(props, props.snapshotTree !== undefined ? true : false /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
731
+ super(props, props.snapshotTree !== undefined /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
679
732
  this.initialSnapshotDetailsP = new LazyPromise(async () => {
680
733
  let snapshot = this.snapshotTree;
681
734
  let attributes;
@@ -709,39 +762,73 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
709
762
  // Summarizer client should not create local data stores.
710
763
  this.identifyLocalChangeInSummarizer("DataStoreCreatedInSummarizer");
711
764
  this.snapshotTree = props.snapshotTree;
712
- if (props.isRootDataStore === true) {
713
- this.setInMemoryRoot();
714
- }
715
765
  this.createProps = props.createProps;
716
- this.attachListeners();
717
766
  }
718
- attachListeners() {
719
- this.once("attaching", () => {
720
- assert(this.attachState === AttachState.Detached, 0x14d /* "Should move from detached to attaching" */);
721
- this._attachState = AttachState.Attaching;
722
- });
723
- this.once("attached", () => {
724
- assert(this.attachState === AttachState.Attaching, 0x14e /* "Should move from attaching to attached" */);
725
- this._attachState = AttachState.Attached;
726
- });
767
+ setAttachState(attachState) {
768
+ switch (attachState) {
769
+ case AttachState.Attaching:
770
+ assert(this.attachState === AttachState.Detached, 0x14d /* "Should move from detached to attaching" */);
771
+ this._attachState = AttachState.Attaching;
772
+ if (this.channel?.setAttachState) {
773
+ this.channel.setAttachState(attachState);
774
+ }
775
+ else if (this.channel) {
776
+ // back-compat! To be removed in the future
777
+ // Added in "2.0.0-rc.2.0.0" timeframe.
778
+ this.emit("attaching");
779
+ }
780
+ break;
781
+ case AttachState.Attached:
782
+ // We can get called into here twice, as result of both container and data store being attached, if
783
+ // those processes overlapped, for example, in a flow like that one:
784
+ // 1. Container attach started
785
+ // 2. data store attachment started
786
+ // 3. container attached
787
+ // 4. data store attached.
788
+ if (this.attachState !== AttachState.Attached) {
789
+ assert(this.attachState === AttachState.Attaching, 0x14e /* "Should move from attaching to attached" */);
790
+ this._attachState = AttachState.Attached;
791
+ this.channel?.setAttachState?.(attachState);
792
+ if (this.channel?.setAttachState) {
793
+ this.channel.setAttachState(attachState);
794
+ }
795
+ else if (this.channel) {
796
+ // back-compat! To be removed in the future
797
+ // Added in "2.0.0-rc.2.0.0" timeframe.
798
+ this.emit("attached");
799
+ }
800
+ }
801
+ break;
802
+ default:
803
+ unreachableCase(attachState, "unreached");
804
+ }
727
805
  }
728
- generateAttachMessage() {
806
+ /**
807
+ * @see FluidDataStoreContext.getAttachData
808
+ */
809
+ getAttachData(includeGCData, telemetryContext) {
729
810
  assert(this.channel !== undefined, 0x14f /* "There should be a channel when generating attach message" */);
730
811
  assert(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
731
- const summarizeResult = this.channel.getAttachSummary();
812
+ const attachSummary = this.channel.getAttachSummary(telemetryContext);
732
813
  // Wrap dds summaries in .channels subtree.
733
- wrapSummaryInChannelsTree(summarizeResult);
814
+ wrapSummaryInChannelsTree(attachSummary);
734
815
  // Add data store's attributes to the summary.
735
816
  const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
736
- addBlobToSummary(summarizeResult, dataStoreAttributesBlobName, JSON.stringify(attributes));
737
- // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
738
- const snapshot = convertSummaryTreeToITree(summarizeResult.summary);
739
- const message = {
740
- id: this.id,
741
- snapshot,
817
+ addBlobToSummary(attachSummary, dataStoreAttributesBlobName, JSON.stringify(attributes));
818
+ if (includeGCData) {
819
+ const gcData = this.channel.getAttachGCData?.(telemetryContext);
820
+ if (gcData !== undefined) {
821
+ addBlobToSummary(attachSummary, gcDataBlobKey, JSON.stringify(gcData));
822
+ }
823
+ }
824
+ // Add loadingGroupId to the summary
825
+ if (this.loadingGroupId !== undefined) {
826
+ attachSummary.summary.groupId = this.loadingGroupId;
827
+ }
828
+ return {
829
+ attachSummary,
742
830
  type: this.pkg[this.pkg.length - 1],
743
831
  };
744
- return message;
745
832
  }
746
833
  async getInitialSnapshotDetails() {
747
834
  return this.initialSnapshotDetailsP;
@@ -769,6 +856,7 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
769
856
  * Various workflows (snapshot creation, requests) result in .realize() being called
770
857
  * on context, resulting in instantiation and attachment of runtime.
771
858
  * Runtime is created using data store factory that is associated with this context.
859
+ * @internal
772
860
  */
773
861
  export class LocalFluidDataStoreContext extends LocalFluidDataStoreContextBase {
774
862
  constructor(props) {
@@ -785,29 +873,29 @@ export class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreConte
785
873
  constructor(props) {
786
874
  super(props);
787
875
  this.detachedRuntimeCreation = true;
876
+ this.channelToDataStoreFn = props.channelToDataStoreFn;
788
877
  }
789
878
  async attachRuntime(registry, dataStoreChannel) {
790
879
  assert(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
791
880
  this.detachedRuntimeCreation = false;
792
- assert(this.channelDeferred === undefined, 0x155 /* "channel deferral is already set" */);
793
- this.channelDeferred = new Deferred();
794
- const factory = registry.IFluidDataStoreFactory;
795
- const entry = await this.factoryFromPackagePath(this.pkg);
796
- assert(entry.factory === factory, 0x156 /* "Unexpected factory for package path" */);
797
- assert(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
798
- this.registry = entry.registry;
799
- super.bindRuntime(dataStoreChannel);
800
- // Load the handle to the data store's entryPoint to make sure that for a detached data store, the entryPoint
801
- // initialization function is called before the data store gets attached and potentially connected to the
802
- // delta stream, so it gets a chance to do things while the data store is still "purely local".
803
- // This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method
804
- // of data store factories tends to construct the data object (at least kick off an async method that returns
805
- // it); that code moved to the entryPoint initialization function, so we want to ensure it still executes
806
- // before the data store is attached.
807
- await dataStoreChannel.entryPoint.get();
808
- if (await this.isRoot()) {
809
- dataStoreChannel.makeVisibleAndAttachGraph();
810
- }
881
+ assert(this.channelP === undefined, 0x155 /* "channel deferral is already set" */);
882
+ this.channelP = Promise.resolve()
883
+ .then(async () => {
884
+ const factory = registry.IFluidDataStoreFactory;
885
+ const factory2 = await this.factoryFromPackagePath();
886
+ assert(factory2 === factory, 0x156 /* "Unexpected factory for package path" */);
887
+ await super.bindRuntime(dataStoreChannel, false /* existing */);
888
+ assert(!(await this.isRoot()), 0x8f7 /* there are no more createRootDataStore() kind of APIs! */);
889
+ return dataStoreChannel;
890
+ })
891
+ .catch((error) => {
892
+ this.mc.logger.sendErrorEvent({ eventName: "AttachRuntimeError" }, error);
893
+ // The following two lines result in same exception thrown.
894
+ // But we need to ensure that this.channelDeferred.promise is "observed", as otherwise
895
+ // out UT reports unhandled exception
896
+ throw error;
897
+ });
898
+ return this.channelToDataStoreFn(await this.channelP);
811
899
  }
812
900
  async getInitialSnapshotDetails() {
813
901
  if (this.detachedRuntimeCreation) {
@@ -816,4 +904,4 @@ export class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreConte
816
904
  return super.getInitialSnapshotDetails();
817
905
  }
818
906
  }
819
- //# sourceMappingURL=dataStoreContext.mjs.map
907
+ //# sourceMappingURL=dataStoreContext.js.map