@fluidframework/container-runtime 2.0.0-rc.1.0.4 → 2.0.0-rc.2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) 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 +68 -30
  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/dist/channelCollection.d.ts +223 -0
  14. package/dist/channelCollection.d.ts.map +1 -0
  15. package/dist/{dataStores.js → channelCollection.js} +399 -83
  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 +98 -40
  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 +123 -40
  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 +79 -55
  29. package/dist/containerRuntime.d.ts.map +1 -1
  30. package/dist/containerRuntime.js +541 -411
  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 +71 -30
  37. package/dist/dataStoreContext.d.ts.map +1 -1
  38. package/dist/dataStoreContext.js +182 -141
  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 +22 -5
  48. package/dist/gc/garbageCollection.d.ts.map +1 -1
  49. package/dist/gc/garbageCollection.js +134 -75
  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 +29 -6
  56. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  57. package/dist/gc/gcDefinitions.js +5 -1
  58. package/dist/gc/gcDefinitions.js.map +1 -1
  59. package/dist/gc/gcHelpers.d.ts +2 -2
  60. package/dist/gc/gcHelpers.d.ts.map +1 -1
  61. package/dist/gc/gcHelpers.js.map +1 -1
  62. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  63. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  64. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  65. package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
  66. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryStateTracker.js +18 -6
  68. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  69. package/dist/gc/gcTelemetry.d.ts +7 -7
  70. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  71. package/dist/gc/gcTelemetry.js +20 -20
  72. package/dist/gc/gcTelemetry.js.map +1 -1
  73. package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
  74. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  75. package/dist/gc/gcUnreferencedStateTracker.js +22 -11
  76. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  77. package/dist/gc/index.d.ts +8 -8
  78. package/dist/gc/index.d.ts.map +1 -1
  79. package/dist/gc/index.js +40 -38
  80. package/dist/gc/index.js.map +1 -1
  81. package/dist/index.d.ts +8 -20
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +28 -40
  84. package/dist/index.js.map +1 -1
  85. package/dist/messageTypes.d.ts +4 -4
  86. package/dist/messageTypes.d.ts.map +1 -1
  87. package/dist/messageTypes.js.map +1 -1
  88. package/dist/opLifecycle/batchManager.d.ts +2 -2
  89. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  90. package/dist/opLifecycle/batchManager.js.map +1 -1
  91. package/dist/opLifecycle/definitions.d.ts +2 -2
  92. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  93. package/dist/opLifecycle/definitions.js.map +1 -1
  94. package/dist/opLifecycle/index.d.ts +8 -8
  95. package/dist/opLifecycle/index.d.ts.map +1 -1
  96. package/dist/opLifecycle/index.js +18 -18
  97. package/dist/opLifecycle/index.js.map +1 -1
  98. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  99. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  100. package/dist/opLifecycle/opCompressor.js +4 -4
  101. package/dist/opLifecycle/opCompressor.js.map +1 -1
  102. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  103. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  104. package/dist/opLifecycle/opDecompressor.js +3 -3
  105. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  106. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  107. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  108. package/dist/opLifecycle/opGroupingManager.js +1 -10
  109. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  110. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  111. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  112. package/dist/opLifecycle/opSplitter.js +5 -5
  113. package/dist/opLifecycle/opSplitter.js.map +1 -1
  114. package/dist/opLifecycle/outbox.d.ts +7 -7
  115. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  116. package/dist/opLifecycle/outbox.js +20 -12
  117. package/dist/opLifecycle/outbox.js.map +1 -1
  118. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  119. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  120. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  121. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  122. package/dist/package.json +3 -0
  123. package/dist/packageVersion.d.ts +1 -1
  124. package/dist/packageVersion.js +1 -1
  125. package/dist/packageVersion.js.map +1 -1
  126. package/dist/pendingStateManager.d.ts +2 -1
  127. package/dist/pendingStateManager.d.ts.map +1 -1
  128. package/dist/pendingStateManager.js +18 -10
  129. package/dist/pendingStateManager.js.map +1 -1
  130. package/dist/scheduleManager.d.ts +1 -2
  131. package/dist/scheduleManager.d.ts.map +1 -1
  132. package/dist/scheduleManager.js +5 -5
  133. package/dist/scheduleManager.js.map +1 -1
  134. package/dist/summary/index.d.ts +12 -12
  135. package/dist/summary/index.d.ts.map +1 -1
  136. package/dist/summary/index.js +43 -43
  137. package/dist/summary/index.js.map +1 -1
  138. package/dist/summary/orderedClientElection.js +8 -8
  139. package/dist/summary/orderedClientElection.js.map +1 -1
  140. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  141. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  142. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  143. package/dist/summary/runningSummarizer.d.ts +11 -10
  144. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  145. package/dist/summary/runningSummarizer.js +114 -81
  146. package/dist/summary/runningSummarizer.js.map +1 -1
  147. package/dist/summary/summarizer.d.ts +4 -4
  148. package/dist/summary/summarizer.d.ts.map +1 -1
  149. package/dist/summary/summarizer.js +6 -6
  150. package/dist/summary/summarizer.js.map +1 -1
  151. package/dist/summary/summarizerClientElection.d.ts +2 -2
  152. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  153. package/dist/summary/summarizerClientElection.js.map +1 -1
  154. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  155. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  156. package/dist/summary/summarizerHeuristics.js.map +1 -1
  157. package/dist/summary/summarizerNode/index.d.ts +3 -3
  158. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  159. package/dist/summary/summarizerNode/index.js +4 -4
  160. package/dist/summary/summarizerNode/index.js.map +1 -1
  161. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  162. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  163. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  164. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  167. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  168. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  171. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  172. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  173. package/dist/summary/summarizerTypes.d.ts +10 -21
  174. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  175. package/dist/summary/summarizerTypes.js.map +1 -1
  176. package/dist/summary/summaryFormat.d.ts +15 -2
  177. package/dist/summary/summaryFormat.d.ts.map +1 -1
  178. package/dist/summary/summaryFormat.js.map +1 -1
  179. package/dist/summary/summaryGenerator.d.ts +6 -5
  180. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  181. package/dist/summary/summaryGenerator.js +10 -1
  182. package/dist/summary/summaryGenerator.js.map +1 -1
  183. package/dist/summary/summaryManager.d.ts +5 -6
  184. package/dist/summary/summaryManager.d.ts.map +1 -1
  185. package/dist/summary/summaryManager.js +4 -5
  186. package/dist/summary/summaryManager.js.map +1 -1
  187. package/dist/tsdoc-metadata.json +1 -1
  188. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  189. package/lib/batchTracker.d.ts.map +1 -0
  190. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  191. package/lib/batchTracker.js.map +1 -0
  192. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
  193. package/lib/blobManager.d.ts.map +1 -0
  194. package/lib/{blobManager.mjs → blobManager.js} +1 -1
  195. package/lib/blobManager.js.map +1 -0
  196. package/lib/channelCollection.d.ts +223 -0
  197. package/lib/channelCollection.d.ts.map +1 -0
  198. package/lib/{dataStores.mjs → channelCollection.js} +384 -71
  199. package/lib/channelCollection.js.map +1 -0
  200. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  201. package/lib/connectionTelemetry.d.ts.map +1 -0
  202. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  203. package/lib/connectionTelemetry.js.map +1 -0
  204. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +98 -40
  205. package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
  206. package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
  207. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +123 -40
  208. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  209. package/lib/containerHandleContext.d.ts.map +1 -0
  210. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  211. package/lib/containerHandleContext.js.map +1 -0
  212. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +84 -56
  213. package/lib/containerRuntime.d.ts.map +1 -0
  214. package/lib/{containerRuntime.mjs → containerRuntime.js} +460 -332
  215. package/lib/containerRuntime.js.map +1 -0
  216. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  217. package/lib/dataStore.d.ts.map +1 -0
  218. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  219. package/lib/dataStore.js.map +1 -0
  220. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +72 -31
  221. package/lib/dataStoreContext.d.ts.map +1 -0
  222. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +174 -133
  223. package/lib/dataStoreContext.js.map +1 -0
  224. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
  225. package/lib/dataStoreContexts.d.ts.map +1 -0
  226. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
  227. package/lib/dataStoreContexts.js.map +1 -0
  228. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  229. package/lib/dataStoreRegistry.d.ts.map +1 -0
  230. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  231. package/lib/dataStoreRegistry.js.map +1 -0
  232. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  233. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  234. package/lib/deltaManagerSummarizerProxy.js +124 -0
  235. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  236. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  237. package/lib/deltaScheduler.d.ts.map +1 -0
  238. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  239. package/lib/deltaScheduler.js.map +1 -0
  240. package/lib/{error.d.mts → error.d.ts} +1 -1
  241. package/lib/error.d.ts.map +1 -0
  242. package/lib/{error.mjs → error.js} +1 -1
  243. package/lib/error.js.map +1 -0
  244. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +23 -6
  245. package/lib/gc/garbageCollection.d.ts.map +1 -0
  246. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +103 -44
  247. package/lib/gc/garbageCollection.js.map +1 -0
  248. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  249. package/lib/gc/gcConfigs.d.ts.map +1 -0
  250. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
  251. package/lib/gc/gcConfigs.js.map +1 -0
  252. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +30 -7
  253. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  254. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +5 -1
  255. package/lib/gc/gcDefinitions.js.map +1 -0
  256. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  257. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  258. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  259. package/lib/gc/gcHelpers.js.map +1 -0
  260. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  261. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  262. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  263. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  264. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  265. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  266. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  267. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  268. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
  269. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  270. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
  271. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  272. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
  273. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  274. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
  275. package/lib/gc/gcTelemetry.js.map +1 -0
  276. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
  277. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  278. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
  279. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  280. package/lib/gc/{index.d.mts → index.d.ts} +9 -9
  281. package/lib/gc/index.d.ts.map +1 -0
  282. package/lib/gc/{index.mjs → index.js} +8 -8
  283. package/lib/gc/index.js.map +1 -0
  284. package/lib/{index.d.mts → index.d.ts} +9 -21
  285. package/lib/index.d.ts.map +1 -0
  286. package/lib/index.js +12 -0
  287. package/lib/index.js.map +1 -0
  288. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  289. package/lib/messageTypes.d.ts.map +1 -0
  290. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  291. package/lib/messageTypes.js.map +1 -0
  292. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  293. package/lib/metadata.d.ts.map +1 -0
  294. package/lib/{metadata.mjs → metadata.js} +1 -1
  295. package/lib/metadata.js.map +1 -0
  296. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  297. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  298. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  299. package/lib/opLifecycle/batchManager.js.map +1 -0
  300. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  301. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  302. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  303. package/lib/opLifecycle/definitions.js.map +1 -0
  304. package/lib/opLifecycle/index.d.ts +13 -0
  305. package/lib/opLifecycle/index.d.ts.map +1 -0
  306. package/lib/opLifecycle/index.js +12 -0
  307. package/lib/opLifecycle/index.js.map +1 -0
  308. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  309. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  310. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  311. package/lib/opLifecycle/opCompressor.js.map +1 -0
  312. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  313. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  314. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  315. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  316. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  317. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  318. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  319. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  320. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  321. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  322. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  323. package/lib/opLifecycle/opSplitter.js.map +1 -0
  324. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  325. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  326. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  327. package/lib/opLifecycle/outbox.js.map +1 -0
  328. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  329. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  330. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  331. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  332. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  333. package/lib/opProperties.d.ts.map +1 -0
  334. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  335. package/lib/opProperties.js.map +1 -0
  336. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  337. package/lib/packageVersion.d.ts.map +1 -0
  338. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  339. package/lib/packageVersion.js.map +1 -0
  340. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  341. package/lib/pendingStateManager.d.ts.map +1 -0
  342. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  343. package/lib/pendingStateManager.js.map +1 -0
  344. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  345. package/lib/scheduleManager.d.ts.map +1 -0
  346. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  347. package/lib/scheduleManager.js.map +1 -0
  348. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  349. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  350. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  351. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  352. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  353. package/lib/summary/index.d.ts.map +1 -0
  354. package/lib/summary/{index.mjs → index.js} +12 -12
  355. package/lib/summary/index.js.map +1 -0
  356. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  357. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  358. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  359. package/lib/summary/orderedClientElection.js.map +1 -0
  360. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  361. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  362. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  363. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  364. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  365. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  366. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  367. package/lib/summary/runningSummarizer.js.map +1 -0
  368. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  369. package/lib/summary/summarizer.d.ts.map +1 -0
  370. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  371. package/lib/summary/summarizer.js.map +1 -0
  372. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  373. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  374. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  375. package/lib/summary/summarizerClientElection.js.map +1 -0
  376. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  377. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  378. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  379. package/lib/summary/summarizerHeuristics.js.map +1 -0
  380. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  381. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  382. package/lib/summary/summarizerNode/index.js +7 -0
  383. package/lib/summary/summarizerNode/index.js.map +1 -0
  384. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  385. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  386. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  387. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  388. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  389. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  390. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  391. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  392. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  393. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  394. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  395. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  396. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  397. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  398. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  399. package/lib/summary/summarizerTypes.js.map +1 -0
  400. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  401. package/lib/summary/summaryCollection.d.ts.map +1 -0
  402. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  403. package/lib/summary/summaryCollection.js.map +1 -0
  404. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  405. package/lib/summary/summaryFormat.d.ts.map +1 -0
  406. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  407. package/lib/summary/summaryFormat.js.map +1 -0
  408. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  409. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  410. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  411. package/lib/summary/summaryGenerator.js.map +1 -0
  412. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  413. package/lib/summary/summaryManager.d.ts.map +1 -0
  414. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  415. package/lib/summary/summaryManager.js.map +1 -0
  416. package/lib/test/batchTracker.spec.js +88 -0
  417. package/lib/test/batchTracker.spec.js.map +1 -0
  418. package/lib/test/blobManager.spec.js +835 -0
  419. package/lib/test/blobManager.spec.js.map +1 -0
  420. package/lib/test/channelCollection.spec.js +141 -0
  421. package/lib/test/channelCollection.spec.js.map +1 -0
  422. package/lib/test/containerRuntime.spec.js +1748 -0
  423. package/lib/test/containerRuntime.spec.js.map +1 -0
  424. package/lib/test/dataStoreContext.spec.js +801 -0
  425. package/lib/test/dataStoreContext.spec.js.map +1 -0
  426. package/lib/test/dataStoreCreation.spec.js +312 -0
  427. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  428. package/lib/test/dataStoreRegistry.spec.js +26 -0
  429. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  430. package/lib/test/fuzz/fuzzUtils.js +66 -0
  431. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  432. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  433. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  434. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  435. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  436. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  437. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  438. package/lib/test/gc/garbageCollection.spec.js +1465 -0
  439. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  440. package/lib/test/gc/gcConfigs.spec.js +690 -0
  441. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  442. package/lib/test/gc/gcHelpers.spec.js +110 -0
  443. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  444. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  445. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  446. package/lib/test/gc/gcStats.spec.js +391 -0
  447. package/lib/test/gc/gcStats.spec.js.map +1 -0
  448. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  449. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  450. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  451. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  452. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  453. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  454. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  455. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  456. package/lib/test/getPendingBlobs.spec.js +193 -0
  457. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  458. package/lib/test/hardwareStats.spec.js +93 -0
  459. package/lib/test/hardwareStats.spec.js.map +1 -0
  460. package/lib/test/index.js +6 -0
  461. package/lib/test/index.js.map +1 -0
  462. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  463. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  464. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  465. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  466. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  467. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  468. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  469. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  470. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  471. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  472. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  473. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  474. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  475. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  476. package/lib/test/pendingStateManager.spec.js +329 -0
  477. package/lib/test/pendingStateManager.spec.js.map +1 -0
  478. package/lib/test/scheduleManager.spec.js +270 -0
  479. package/lib/test/scheduleManager.spec.js.map +1 -0
  480. package/lib/test/summarizerNode.spec.js +326 -0
  481. package/lib/test/summarizerNode.spec.js.map +1 -0
  482. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  483. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  484. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  485. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  486. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  487. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  488. package/lib/test/summary/summarizer.spec.js +29 -0
  489. package/lib/test/summary/summarizer.spec.js.map +1 -0
  490. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  491. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  492. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  493. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  494. package/lib/test/summary/summaryCollection.spec.js +200 -0
  495. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  496. package/lib/test/summary/summaryManager.spec.js +430 -0
  497. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  498. package/lib/test/summary/testQuorumClients.js +34 -0
  499. package/lib/test/summary/testQuorumClients.js.map +1 -0
  500. package/lib/test/throttler.spec.js +175 -0
  501. package/lib/test/throttler.spec.js.map +1 -0
  502. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  503. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  504. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  505. package/lib/throttler.d.ts.map +1 -0
  506. package/lib/{throttler.mjs → throttler.js} +1 -1
  507. package/lib/throttler.js.map +1 -0
  508. package/package.json +99 -88
  509. package/src/batchTracker.ts +1 -1
  510. package/src/blobManager.ts +1 -1
  511. package/src/{dataStores.ts → channelCollection.ts} +520 -84
  512. package/src/connectionTelemetry.ts +42 -3
  513. package/src/containerHandleContext.ts +1 -1
  514. package/src/containerRuntime.ts +661 -464
  515. package/src/dataStore.ts +13 -15
  516. package/src/dataStoreContext.ts +257 -184
  517. package/src/dataStoreContexts.ts +1 -1
  518. package/src/deltaManagerSummarizerProxy.ts +132 -7
  519. package/src/gc/garbageCollection.ts +121 -46
  520. package/src/gc/gcConfigs.ts +3 -3
  521. package/src/gc/gcDefinitions.ts +30 -7
  522. package/src/gc/gcHelpers.ts +2 -2
  523. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  524. package/src/gc/gcSummaryStateTracker.ts +19 -7
  525. package/src/gc/gcTelemetry.ts +10 -9
  526. package/src/gc/gcUnreferencedStateTracker.ts +12 -1
  527. package/src/gc/index.ts +10 -8
  528. package/src/index.ts +16 -27
  529. package/src/messageTypes.ts +4 -4
  530. package/src/opLifecycle/README.md +2 -4
  531. package/src/opLifecycle/batchManager.ts +2 -2
  532. package/src/opLifecycle/definitions.ts +2 -2
  533. package/src/opLifecycle/index.ts +8 -8
  534. package/src/opLifecycle/opCompressor.ts +3 -3
  535. package/src/opLifecycle/opDecompressor.ts +3 -3
  536. package/src/opLifecycle/opGroupingManager.ts +3 -12
  537. package/src/opLifecycle/opSplitter.ts +3 -3
  538. package/src/opLifecycle/outbox.ts +29 -9
  539. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  540. package/src/packageVersion.ts +1 -1
  541. package/src/pendingStateManager.ts +19 -13
  542. package/src/scheduleManager.ts +4 -4
  543. package/src/summary/index.ts +13 -12
  544. package/src/summary/orderedClientElection.ts +1 -1
  545. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  546. package/src/summary/runningSummarizer.ts +141 -93
  547. package/src/summary/summarizer.ts +7 -7
  548. package/src/summary/summarizerClientElection.ts +2 -2
  549. package/src/summary/summarizerHeuristics.ts +3 -3
  550. package/src/summary/summarizerNode/index.ts +6 -3
  551. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  552. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  553. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  554. package/src/summary/summarizerTypes.ts +12 -24
  555. package/src/summary/summaryFormat.ts +16 -2
  556. package/src/summary/summaryGenerator.ts +16 -4
  557. package/src/summary/summaryManager.ts +6 -7
  558. package/tsconfig.cjs.json +7 -0
  559. package/tsconfig.json +2 -5
  560. package/dist/dataStores.d.ts +0 -149
  561. package/dist/dataStores.d.ts.map +0 -1
  562. package/dist/dataStores.js.map +0 -1
  563. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  564. package/dist/deltaManagerProxyBase.js +0 -77
  565. package/dist/deltaManagerProxyBase.js.map +0 -1
  566. package/lib/batchTracker.d.mts.map +0 -1
  567. package/lib/batchTracker.mjs.map +0 -1
  568. package/lib/blobManager.d.mts.map +0 -1
  569. package/lib/blobManager.mjs.map +0 -1
  570. package/lib/connectionTelemetry.d.mts.map +0 -1
  571. package/lib/connectionTelemetry.mjs.map +0 -1
  572. package/lib/containerHandleContext.d.mts.map +0 -1
  573. package/lib/containerHandleContext.mjs.map +0 -1
  574. package/lib/containerRuntime.d.mts.map +0 -1
  575. package/lib/containerRuntime.mjs.map +0 -1
  576. package/lib/dataStore.d.mts.map +0 -1
  577. package/lib/dataStore.mjs.map +0 -1
  578. package/lib/dataStoreContext.d.mts.map +0 -1
  579. package/lib/dataStoreContext.mjs.map +0 -1
  580. package/lib/dataStoreContexts.d.mts.map +0 -1
  581. package/lib/dataStoreContexts.mjs.map +0 -1
  582. package/lib/dataStoreRegistry.d.mts.map +0 -1
  583. package/lib/dataStoreRegistry.mjs.map +0 -1
  584. package/lib/dataStores.d.mts +0 -149
  585. package/lib/dataStores.d.mts.map +0 -1
  586. package/lib/dataStores.mjs.map +0 -1
  587. package/lib/deltaManagerProxyBase.d.mts +0 -35
  588. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  589. package/lib/deltaManagerProxyBase.mjs +0 -73
  590. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  591. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  592. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  593. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  594. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  595. package/lib/deltaScheduler.d.mts.map +0 -1
  596. package/lib/deltaScheduler.mjs.map +0 -1
  597. package/lib/error.d.mts.map +0 -1
  598. package/lib/error.mjs.map +0 -1
  599. package/lib/gc/garbageCollection.d.mts.map +0 -1
  600. package/lib/gc/garbageCollection.mjs.map +0 -1
  601. package/lib/gc/gcConfigs.d.mts.map +0 -1
  602. package/lib/gc/gcConfigs.mjs.map +0 -1
  603. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  604. package/lib/gc/gcDefinitions.mjs.map +0 -1
  605. package/lib/gc/gcHelpers.mjs.map +0 -1
  606. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  607. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  608. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  609. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  610. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  611. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  612. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  613. package/lib/gc/gcTelemetry.mjs.map +0 -1
  614. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  615. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  616. package/lib/gc/index.d.mts.map +0 -1
  617. package/lib/gc/index.mjs.map +0 -1
  618. package/lib/index.d.mts.map +0 -1
  619. package/lib/index.mjs +0 -24
  620. package/lib/index.mjs.map +0 -1
  621. package/lib/messageTypes.d.mts.map +0 -1
  622. package/lib/messageTypes.mjs.map +0 -1
  623. package/lib/metadata.d.mts.map +0 -1
  624. package/lib/metadata.mjs.map +0 -1
  625. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  626. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  627. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  628. package/lib/opLifecycle/definitions.mjs.map +0 -1
  629. package/lib/opLifecycle/index.d.mts +0 -13
  630. package/lib/opLifecycle/index.d.mts.map +0 -1
  631. package/lib/opLifecycle/index.mjs +0 -12
  632. package/lib/opLifecycle/index.mjs.map +0 -1
  633. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  634. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  635. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  636. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  637. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  638. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  639. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  640. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  641. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  642. package/lib/opLifecycle/outbox.mjs.map +0 -1
  643. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  644. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  645. package/lib/opProperties.d.mts.map +0 -1
  646. package/lib/opProperties.mjs.map +0 -1
  647. package/lib/packageVersion.d.mts.map +0 -1
  648. package/lib/packageVersion.mjs.map +0 -1
  649. package/lib/pendingStateManager.d.mts.map +0 -1
  650. package/lib/pendingStateManager.mjs.map +0 -1
  651. package/lib/scheduleManager.d.mts.map +0 -1
  652. package/lib/scheduleManager.mjs.map +0 -1
  653. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  654. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  655. package/lib/summary/index.d.mts.map +0 -1
  656. package/lib/summary/index.mjs.map +0 -1
  657. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  658. package/lib/summary/orderedClientElection.mjs.map +0 -1
  659. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  660. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  661. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  662. package/lib/summary/runningSummarizer.mjs.map +0 -1
  663. package/lib/summary/summarizer.d.mts.map +0 -1
  664. package/lib/summary/summarizer.mjs.map +0 -1
  665. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  666. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  667. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  668. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  669. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  670. package/lib/summary/summarizerNode/index.mjs +0 -7
  671. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  672. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  673. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  674. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  675. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  676. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  677. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  678. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  679. package/lib/summary/summarizerTypes.mjs.map +0 -1
  680. package/lib/summary/summaryCollection.d.mts.map +0 -1
  681. package/lib/summary/summaryCollection.mjs.map +0 -1
  682. package/lib/summary/summaryFormat.d.mts.map +0 -1
  683. package/lib/summary/summaryFormat.mjs.map +0 -1
  684. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  685. package/lib/summary/summaryGenerator.mjs.map +0 -1
  686. package/lib/summary/summaryManager.d.mts.map +0 -1
  687. package/lib/summary/summaryManager.mjs.map +0 -1
  688. package/lib/throttler.d.mts.map +0 -1
  689. package/lib/throttler.mjs.map +0 -1
  690. package/src/deltaManagerProxyBase.ts +0 -111
@@ -4,34 +4,150 @@
4
4
  */
5
5
  import { FluidObjectHandle } from "@fluidframework/datastore";
6
6
  import { channelsTreeName, CreateSummarizerNodeSource, } from "@fluidframework/runtime-definitions";
7
- import { convertSnapshotTreeToSummaryTree, convertToSummaryTree, create404Response, createResponseError, GCDataBuilder, isSerializedHandle, responseToException, SummaryTreeBuilder, unpackChildNodesUsedRoutes, } from "@fluidframework/runtime-utils";
8
- import { createChildMonitoringContext, DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, LoggingError, tagCodeArtifacts, } from "@fluidframework/telemetry-utils";
7
+ import { convertSnapshotTreeToSummaryTree, convertSummaryTreeToITree, create404Response, createResponseError, GCDataBuilder, isSerializedHandle, processAttachMessageGCData, responseToException, SummaryTreeBuilder, unpackChildNodesUsedRoutes, RequestParser, encodeCompactIdToString, } from "@fluidframework/runtime-utils";
8
+ import { createChildMonitoringContext, DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, LoggingError, tagCodeArtifacts, createChildLogger, } from "@fluidframework/telemetry-utils";
9
9
  import { AttachState } from "@fluidframework/container-definitions";
10
10
  import { buildSnapshotTree } from "@fluidframework/driver-utils";
11
- import { assert, Lazy } from "@fluidframework/core-utils";
12
- import { v4 as uuid } from "uuid";
13
- import { DataStoreContexts } from "./dataStoreContexts.mjs";
14
- import { defaultRuntimeHeaderData } from "./containerRuntime.mjs";
15
- import { RemoteFluidDataStoreContext, LocalFluidDataStoreContext, createAttributesBlob, LocalDetachedFluidDataStoreContext, } from "./dataStoreContext.mjs";
16
- import { StorageServiceWithAttachBlobs } from "./storageServiceWithAttachBlobs.mjs";
17
- import { GCNodeType, detectOutboundRoutesViaDDSKey } from "./gc/index.mjs";
18
- import { isDataStoreAliasMessage } from "./dataStore.mjs";
19
- import { nonDataStorePaths, rootHasIsolatedChannels } from "./summary/index.mjs";
11
+ import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils";
12
+ import { DataStoreContexts } from "./dataStoreContexts.js";
13
+ import { defaultRuntimeHeaderData } from "./containerRuntime.js";
14
+ import { RemoteFluidDataStoreContext, LocalFluidDataStoreContext, createAttributesBlob, LocalDetachedFluidDataStoreContext, } from "./dataStoreContext.js";
15
+ import { StorageServiceWithAttachBlobs } from "./storageServiceWithAttachBlobs.js";
16
+ import { channelToDataStore, isDataStoreAliasMessage, } from "./dataStore.js";
17
+ import { GCNodeType, detectOutboundRoutesViaDDSKey, trimLeadingAndTrailingSlashes, } from "./gc/index.js";
18
+ import { nonDataStorePaths, rootHasIsolatedChannels, } from "./summary/index.js";
19
+ import { ContainerMessageType } from "./messageTypes.js";
20
+ import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
21
+ /**
22
+ * Accepted header keys for requests coming to the runtime.
23
+ * @internal
24
+ */
25
+ export var RuntimeHeaders;
26
+ (function (RuntimeHeaders) {
27
+ /** True to wait for a data store to be created and loaded before returning it. */
28
+ RuntimeHeaders["wait"] = "wait";
29
+ /** True if the request is coming from an IFluidHandle. */
30
+ RuntimeHeaders["viaHandle"] = "viaHandle";
31
+ })(RuntimeHeaders || (RuntimeHeaders = {}));
32
+ /** True if a tombstoned object should be returned without erroring
33
+ * @alpha
34
+ */
35
+ export const AllowTombstoneRequestHeaderKey = "allowTombstone"; // Belongs in the enum above, but avoiding the breaking change
36
+ /**
37
+ * [IRRELEVANT IF throwOnInactiveLoad OPTION NOT SET] True if an inactive object should be returned without erroring
38
+ * @internal
39
+ */
40
+ export const AllowInactiveRequestHeaderKey = "allowInactive"; // Belongs in the enum above, but avoiding the breaking change
41
+ /**
42
+ * Creates a shallow wrapper of {@link IFluidParentContext}. The wrapper can then have its methods overwritten as needed
43
+ */
44
+ export function wrapContext(context) {
45
+ return {
46
+ get IFluidDataStoreRegistry() {
47
+ return context.IFluidDataStoreRegistry;
48
+ },
49
+ IFluidHandleContext: context.IFluidHandleContext,
50
+ options: context.options,
51
+ get clientId() {
52
+ return context.clientId;
53
+ },
54
+ get connected() {
55
+ return context.connected;
56
+ },
57
+ deltaManager: context.deltaManager,
58
+ storage: context.storage,
59
+ logger: context.logger,
60
+ get clientDetails() {
61
+ return context.clientDetails;
62
+ },
63
+ get idCompressor() {
64
+ return context.idCompressor;
65
+ },
66
+ loadingGroupId: context.loadingGroupId,
67
+ get attachState() {
68
+ return context.attachState;
69
+ },
70
+ containerRuntime: context.containerRuntime,
71
+ scope: context.scope,
72
+ gcThrowOnTombstoneUsage: context.gcThrowOnTombstoneUsage,
73
+ gcTombstoneEnforcementAllowed: context.gcTombstoneEnforcementAllowed,
74
+ getAbsoluteUrl: async (...args) => {
75
+ return context.getAbsoluteUrl(...args);
76
+ },
77
+ getQuorum: (...args) => {
78
+ return context.getQuorum(...args);
79
+ },
80
+ getAudience: (...args) => {
81
+ return context.getAudience(...args);
82
+ },
83
+ ensureNoDataModelChanges: (...args) => {
84
+ return context.ensureNoDataModelChanges(...args);
85
+ },
86
+ submitMessage: (...args) => {
87
+ return context.submitMessage(...args);
88
+ },
89
+ submitSignal: (...args) => {
90
+ return context.submitSignal(...args);
91
+ },
92
+ makeLocallyVisible: (...args) => {
93
+ return context.makeLocallyVisible(...args);
94
+ },
95
+ uploadBlob: async (...args) => {
96
+ return context.uploadBlob(...args);
97
+ },
98
+ addedGCOutboundReference: (...args) => {
99
+ return context.addedGCOutboundReference?.(...args);
100
+ },
101
+ getCreateChildSummarizerNodeFn: (...args) => {
102
+ return context.getCreateChildSummarizerNodeFn?.(...args);
103
+ },
104
+ deleteChildSummarizerNode: (...args) => {
105
+ return context.deleteChildSummarizerNode?.(...args);
106
+ },
107
+ };
108
+ }
109
+ /**
110
+ * Creates a wrapper of a {@link IFluidParentContext} to be provided to the inner datastore channels.
111
+ * The wrapper will have the submit methods overwritten with the appropriate id as the destination address.
112
+ *
113
+ * @param id - the id of the channel
114
+ * @param parentContext - the {@link IFluidParentContext} to wrap
115
+ * @returns A wrapped {@link IFluidParentContext}
116
+ */
117
+ export function wrapContextForInnerChannel(id, parentContext) {
118
+ const context = wrapContext(parentContext);
119
+ context.submitMessage = (type, content, localOpMetadata) => {
120
+ const fluidDataStoreContent = {
121
+ content,
122
+ type,
123
+ };
124
+ const envelope = {
125
+ address: id,
126
+ contents: fluidDataStoreContent,
127
+ };
128
+ parentContext.submitMessage(ContainerMessageType.FluidDataStoreOp, envelope, localOpMetadata);
129
+ };
130
+ context.submitSignal = (type, contents, targetClientId) => {
131
+ const envelope = {
132
+ address: id,
133
+ contents,
134
+ };
135
+ parentContext.submitSignal(type, envelope, targetClientId);
136
+ };
137
+ return context;
138
+ }
20
139
  /**
21
140
  * This class encapsulates data store handling. Currently it is only used by the container runtime,
22
141
  * but eventually could be hosted on any channel once we formalize the channel api boundary.
142
+ * @internal
23
143
  */
24
- export class DataStores {
25
- constructor(baseSnapshot, runtime, submitAttachFn, getCreateChildSummarizerNodeFn, deleteChildSummarizerNodeFn, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, contexts = new DataStoreContexts(baseLogger)) {
144
+ export class ChannelCollection {
145
+ constructor(baseSnapshot, parentContext, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, provideEntryPoint) {
26
146
  this.baseSnapshot = baseSnapshot;
27
- this.runtime = runtime;
28
- this.submitAttachFn = submitAttachFn;
29
- this.getCreateChildSummarizerNodeFn = getCreateChildSummarizerNodeFn;
30
- this.deleteChildSummarizerNodeFn = deleteChildSummarizerNodeFn;
147
+ this.parentContext = parentContext;
31
148
  this.gcNodeUpdated = gcNodeUpdated;
32
149
  this.isDataStoreDeleted = isDataStoreDeleted;
33
150
  this.aliasMap = aliasMap;
34
- this.contexts = contexts;
35
151
  // Stores tracked by the Domain
36
152
  this.pendingAttach = new Map();
37
153
  // 0.24 back-compat attachingBeforeSummary
@@ -41,9 +157,13 @@ export class DataStores {
41
157
  // root data stores that are added.
42
158
  this.dataStoresSinceLastGC = [];
43
159
  this.pendingAliasMap = new Map();
160
+ /** For sampling. Only log once per container */
161
+ this.shouldSendAttachLog = true;
44
162
  this.dispose = () => this.disposeOnce.value;
45
163
  this.mc = createChildMonitoringContext({ logger: baseLogger });
46
- this.containerRuntimeHandle = new FluidObjectHandle(this.runtime, "/", this.runtime.IFluidHandleContext);
164
+ this.contexts = new DataStoreContexts(baseLogger);
165
+ this.containerRuntimeHandle = new FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
166
+ this.entryPoint = new FluidObjectHandle(new LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
47
167
  // Extract stores stored inside the snapshot
48
168
  const fluidDataStores = new Map();
49
169
  if (baseSnapshot) {
@@ -60,16 +180,17 @@ export class DataStores {
60
180
  unreferencedDataStoreCount++;
61
181
  }
62
182
  // If we have a detached container, then create local data store contexts.
63
- if (this.runtime.attachState !== AttachState.Detached) {
183
+ if (this.parentContext.attachState !== AttachState.Detached) {
64
184
  dataStoreContext = new RemoteFluidDataStoreContext({
65
185
  id: key,
66
186
  snapshotTree: value,
67
- runtime: this.runtime,
68
- storage: this.runtime.storage,
69
- scope: this.runtime.scope,
70
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
187
+ parentContext: this.wrapContextForInnerChannel(key),
188
+ storage: this.parentContext.storage,
189
+ scope: this.parentContext.scope,
190
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
71
191
  type: CreateSummarizerNodeSource.FromSummary,
72
192
  }),
193
+ loadingGroupId: value.groupId,
73
194
  });
74
195
  }
75
196
  else {
@@ -80,10 +201,10 @@ export class DataStores {
80
201
  dataStoreContext = new LocalFluidDataStoreContext({
81
202
  id: key,
82
203
  pkg: undefined,
83
- runtime: this.runtime,
84
- storage: this.runtime.storage,
85
- scope: this.runtime.scope,
86
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
204
+ parentContext: this.wrapContextForInnerChannel(key),
205
+ storage: this.parentContext.storage,
206
+ scope: this.parentContext.scope,
207
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
87
208
  type: CreateSummarizerNodeSource.FromSummary,
88
209
  }),
89
210
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
@@ -108,9 +229,41 @@ export class DataStores {
108
229
  const pendingAliasPromise = this.pendingAliases.get(maybeAlias);
109
230
  return pendingAliasPromise ?? "Success";
110
231
  }
232
+ wrapContextForInnerChannel(id) {
233
+ return wrapContextForInnerChannel(id, this.parentContext);
234
+ }
235
+ /**
236
+ * IFluidDataStoreChannel.makeVisibleAndAttachGraph implementation
237
+ * Not clear when it would be called and what it should do.
238
+ * Currently this API is called by context only for root data stores.
239
+ */
240
+ makeVisibleAndAttachGraph() {
241
+ this.parentContext.makeLocallyVisible();
242
+ }
111
243
  processAttachMessage(message, local) {
112
244
  const attachMessage = message.contents;
113
245
  this.dataStoresSinceLastGC.push(attachMessage.id);
246
+ // We need to process the GC Data for both local and remote attach messages
247
+ const foundGCData = processAttachMessageGCData(attachMessage.snapshot, (nodeId, toPath) => {
248
+ // nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
249
+ const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
250
+ this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
251
+ });
252
+ // Only log once per container to avoid noise/cost.
253
+ // Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
254
+ if (this.shouldSendAttachLog) {
255
+ this.shouldSendAttachLog = false;
256
+ this.mc.logger.sendTelemetryEvent({
257
+ eventName: "dataStoreAttachMessage_sampled",
258
+ ...tagCodeArtifacts({ id: attachMessage.id, pkg: attachMessage.type }),
259
+ details: {
260
+ local,
261
+ snapshot: !!attachMessage.snapshot,
262
+ foundGCData,
263
+ },
264
+ ...extractSafePropertiesFromMessage(message),
265
+ });
266
+ }
114
267
  // The local object has already been attached
115
268
  if (local) {
116
269
  assert(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
@@ -140,10 +293,11 @@ export class DataStores {
140
293
  const remoteFluidDataStoreContext = new RemoteFluidDataStoreContext({
141
294
  id: attachMessage.id,
142
295
  snapshotTree,
143
- runtime: this.runtime,
144
- storage: new StorageServiceWithAttachBlobs(this.runtime.storage, flatAttachBlobs),
145
- scope: this.runtime.scope,
146
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(attachMessage.id, {
296
+ parentContext: this.wrapContextForInnerChannel(attachMessage.id),
297
+ storage: new StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs),
298
+ scope: this.parentContext.scope,
299
+ loadingGroupId: attachMessage.snapshot?.groupId,
300
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {
147
301
  type: CreateSummarizerNodeSource.FromAttach,
148
302
  sequenceNumber: message.sequenceNumber,
149
303
  snapshot: attachMessage.snapshot ?? {
@@ -184,8 +338,8 @@ export class DataStores {
184
338
  });
185
339
  return false;
186
340
  }
187
- const handle = new FluidObjectHandle(context, aliasMessage.internalId, this.runtime.IFluidHandleContext);
188
- this.runtime.addedGCOutboundReference(this.containerRuntimeHandle, handle);
341
+ const handle = new FluidObjectHandle(context, aliasMessage.internalId, this.parentContext.IFluidHandleContext);
342
+ this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
189
343
  this.aliasMap.set(aliasMessage.alias, context.id);
190
344
  context.setInMemoryRoot();
191
345
  return true;
@@ -193,9 +347,21 @@ export class DataStores {
193
347
  alreadyProcessed(id) {
194
348
  return this.aliasMap.get(id) !== undefined || this.contexts.get(id) !== undefined;
195
349
  }
350
+ /** Package up the context's attach summary etc into an IAttachMessage */
351
+ generateAttachMessage(localContext) {
352
+ const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
353
+ const type = localContext.packagePath[localContext.packagePath.length - 1];
354
+ // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
355
+ const snapshot = convertSummaryTreeToITree(attachSummary.summary);
356
+ return {
357
+ id: localContext.id,
358
+ snapshot,
359
+ type,
360
+ };
361
+ }
196
362
  /**
197
- * Make the data stores locally visible in the container graph by moving the data store context from unbound to
198
- * bound list. This data store can now be reached from the root.
363
+ * Make the data store locally visible in the container graph by moving the data store context from unbound to
364
+ * bound list and submitting the attach message. This data store can now be reached from the root.
199
365
  * @param id - The id of the data store context to make visible.
200
366
  */
201
367
  makeDataStoreLocallyVisible(id) {
@@ -206,48 +372,83 @@ export class DataStores {
206
372
  * globally visible. Move it to attaching state and send an "attach" op for it.
207
373
  * If the container is detached, this data store will be part of the summary that makes the container attached.
208
374
  */
209
- if (this.runtime.attachState !== AttachState.Detached) {
375
+ if (this.parentContext.attachState !== AttachState.Detached) {
210
376
  localContext.emit("attaching");
211
- const message = localContext.generateAttachMessage();
377
+ const message = this.generateAttachMessage(localContext);
212
378
  this.pendingAttach.set(id, message);
213
- this.submitAttachFn(message);
379
+ this.parentContext.submitMessage(ContainerMessageType.Attach, message, undefined);
214
380
  this.attachOpFiredForDataStore.add(id);
215
381
  }
216
382
  this.contexts.bind(id);
217
383
  }
218
- createDetachedDataStoreCore(pkg, isRoot, id = uuid()) {
219
- assert(!id.includes("/"), 0x30c /* Id cannot contain slashes */);
384
+ /**
385
+ * Generate compact internal DataStore ID.
386
+ *
387
+ * A note about namespace and name collisions:
388
+ * This code assumes that that's the only way to generate internal IDs, and that it's Ok for this namespace to overlap with
389
+ * user-provided alias names namespace.
390
+ * There are two scenarios where it could cause trouble:
391
+ * 1) Old files, where (already removed) CreateRoot*DataStore*() API was used, and thus internal name of data store
392
+ * was provided by user. Such files may experience name collision with future data stores that receive a name generated
393
+ * by this function.
394
+ * 2) Much less likely, but if it happen that internal ID (generated by this function) is exactly the same as alias name
395
+ * that user might use in the future, them ContainerRuntime.getAliasedDataStoreEntryPoint() or
396
+ * ContainerRuntime.getDataStoreFromRequest() could return a data store with internalID matching user request, even though
397
+ * user expected some other data store (that would receive alias later).
398
+ * Please note that above mentioned functions have the implementation they have (allowing #2) due to #1.
399
+ */
400
+ createDataStoreId() {
401
+ // We use three non-overlapping namespaces:
402
+ // - detached state: even numbers
403
+ // - attached state: odd numbers
404
+ // - uuids
405
+ // In first two cases we will encode result as strings in more compact form.
406
+ if (this.parentContext.attachState === AttachState.Detached) {
407
+ // container is detached, only one client observes content, no way to hit collisions with other clients.
408
+ return encodeCompactIdToString(2 * this.contexts.size);
409
+ }
410
+ const id = this.parentContext.containerRuntime.generateDocumentUniqueId();
411
+ if (typeof id === "number") {
412
+ return encodeCompactIdToString(2 * id + 1);
413
+ }
414
+ return id;
415
+ }
416
+ createDetachedDataStoreCore(pkg, loadingGroupId) {
417
+ const id = this.createDataStoreId();
220
418
  const context = new LocalDetachedFluidDataStoreContext({
221
419
  id,
222
420
  pkg,
223
- runtime: this.runtime,
224
- storage: this.runtime.storage,
225
- scope: this.runtime.scope,
226
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
421
+ parentContext: this.wrapContextForInnerChannel(id),
422
+ storage: this.parentContext.storage,
423
+ scope: this.parentContext.scope,
424
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
227
425
  type: CreateSummarizerNodeSource.Local,
228
426
  }),
229
427
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
230
428
  snapshotTree: undefined,
231
- isRootDataStore: isRoot,
429
+ isRootDataStore: false,
430
+ loadingGroupId,
431
+ channelToDataStoreFn: (channel) => channelToDataStore(channel, id, this, createChildLogger({ logger: this.parentContext.logger })),
232
432
  });
233
433
  this.contexts.addUnbound(context);
234
434
  return context;
235
435
  }
236
- _createFluidDataStoreContext(pkg, id, props) {
237
- assert(!id.includes("/"), 0x30d /* Id cannot contain slashes */);
436
+ _createFluidDataStoreContext(pkg, props, loadingGroupId) {
437
+ const id = this.createDataStoreId();
238
438
  const context = new LocalFluidDataStoreContext({
239
439
  id,
240
440
  pkg,
241
- runtime: this.runtime,
242
- storage: this.runtime.storage,
243
- scope: this.runtime.scope,
244
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
441
+ parentContext: this.wrapContextForInnerChannel(id),
442
+ storage: this.parentContext.storage,
443
+ scope: this.parentContext.scope,
444
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
245
445
  type: CreateSummarizerNodeSource.Local,
246
446
  }),
247
447
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
248
448
  snapshotTree: undefined,
249
449
  isRootDataStore: false,
250
450
  createProps: props,
451
+ loadingGroupId,
251
452
  });
252
453
  this.contexts.addUnbound(context);
253
454
  return context;
@@ -255,7 +456,16 @@ export class DataStores {
255
456
  get disposed() {
256
457
  return this.disposeOnce.evaluated;
257
458
  }
258
- resubmitDataStoreOp(envelope, localOpMetadata) {
459
+ reSubmit(type, content, localOpMetadata) {
460
+ switch (type) {
461
+ case ContainerMessageType.Attach:
462
+ case ContainerMessageType.Alias:
463
+ this.parentContext.submitMessage(type, content, localOpMetadata);
464
+ return;
465
+ default:
466
+ }
467
+ assert(type === ContainerMessageType.FluidDataStoreOp, 0x8e7 /* type */);
468
+ const envelope = content;
259
469
  const context = this.contexts.get(envelope.address);
260
470
  // If the data store has been deleted, log an error and throw an error. If there are local changes for a
261
471
  // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
@@ -266,9 +476,12 @@ export class DataStores {
266
476
  });
267
477
  }
268
478
  assert(!!context, 0x160 /* "There should be a store context for the op" */);
269
- context.reSubmit(envelope.contents, localOpMetadata);
479
+ const innerContents = envelope.contents;
480
+ context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
270
481
  }
271
- rollbackDataStoreOp(envelope, localOpMetadata) {
482
+ rollback(type, content, localOpMetadata) {
483
+ assert(type === ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
484
+ const envelope = content;
272
485
  const context = this.contexts.get(envelope.address);
273
486
  // If the data store has been deleted, log an error and throw an error. If there are local changes for a
274
487
  // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
@@ -279,9 +492,19 @@ export class DataStores {
279
492
  });
280
493
  }
281
494
  assert(!!context, 0x2e8 /* "There should be a store context for the op" */);
282
- context.rollback(envelope.contents, localOpMetadata);
495
+ const innerContents = envelope.contents;
496
+ context.rollback(innerContents.type, innerContents.content, localOpMetadata);
283
497
  }
284
- async applyStashedOp(envelope) {
498
+ async applyStashedOp(content) {
499
+ const opContents = content;
500
+ switch (opContents.type) {
501
+ case ContainerMessageType.Attach:
502
+ return this.applyStashedAttachOp(opContents.contents);
503
+ case ContainerMessageType.Alias:
504
+ return;
505
+ default:
506
+ }
507
+ const envelope = opContents.contents;
285
508
  const context = this.contexts.get(envelope.address);
286
509
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
287
510
  // corruption in case the data store that stashed the op is deleted.
@@ -296,9 +519,26 @@ export class DataStores {
296
519
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
297
520
  this.processAttachMessage({ contents: message }, false);
298
521
  }
299
- processFluidDataStoreOp(message, local, localMessageMetadata, addedOutboundReference) {
522
+ process(message, local, localMessageMetadata, addedOutboundReference) {
523
+ switch (message.type) {
524
+ case ContainerMessageType.Attach:
525
+ this.processAttachMessage(message, local);
526
+ return;
527
+ case ContainerMessageType.Alias:
528
+ this.processAliasMessage(message, localMessageMetadata, local);
529
+ return;
530
+ case ContainerMessageType.FluidDataStoreOp:
531
+ break;
532
+ default:
533
+ assert(false, 0x8e9 /* unreached */);
534
+ }
300
535
  const envelope = message.contents;
301
- const transformed = { ...message, contents: envelope.contents };
536
+ const innerContents = envelope.contents;
537
+ const transformed = {
538
+ ...message,
539
+ type: innerContents.type,
540
+ contents: innerContents.content,
541
+ };
302
542
  const context = this.contexts.get(envelope.address);
303
543
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
304
544
  // corruption in case a deleted data store accidentally submitted an op.
@@ -319,13 +559,14 @@ export class DataStores {
319
559
  context.process(transformed, local, localMessageMetadata);
320
560
  // By default, we use the new behavior of detecting outbound routes here.
321
561
  // If this setting is true, then DataStoreContext would be notifying GC instead.
322
- if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) !== true) {
562
+ if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) !== true &&
563
+ addedOutboundReference !== undefined) {
323
564
  // Notify GC of any outbound references that were added by this op.
324
565
  detectOutboundReferences(envelope, addedOutboundReference);
325
566
  }
326
567
  // Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
327
568
  // being used.
328
- this.gcNodeUpdated(`/${envelope.address}`, message.timestamp, context.isLoaded ? context.packagePath : undefined);
569
+ this.gcNodeUpdated(`/${envelope.address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
329
570
  }
330
571
  async getDataStore(id, requestHeaderData) {
331
572
  const headerData = { ...defaultRuntimeHeaderData, ...requestHeaderData };
@@ -379,7 +620,10 @@ export class DataStores {
379
620
  });
380
621
  return true;
381
622
  }
382
- processSignal(fluidDataStoreId, message, local) {
623
+ processSignal(messageArg, local) {
624
+ const envelope = messageArg.content;
625
+ const fluidDataStoreId = envelope.address;
626
+ const message = { ...messageArg, content: envelope.contents };
383
627
  const context = this.contexts.get(fluidDataStoreId);
384
628
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
385
629
  // corruption in case a deleted data store accidentally submitted a signal.
@@ -412,7 +656,7 @@ export class DataStores {
412
656
  fluidDataStoreId,
413
657
  }),
414
658
  details: JSON.stringify({
415
- runtimeConnected: this.runtime.connected,
659
+ runtimeConnected: this.parentContext.connected,
416
660
  connected,
417
661
  }),
418
662
  }, error);
@@ -452,7 +696,10 @@ export class DataStores {
452
696
  }));
453
697
  return summaryBuilder.getSummaryTree();
454
698
  }
455
- createSummary(telemetryContext) {
699
+ /**
700
+ * Create a summary. Used when attaching or serializing a detached container.
701
+ */
702
+ getAttachSummary(telemetryContext) {
456
703
  const builder = new SummaryTreeBuilder();
457
704
  // Attaching graph of some stores can cause other stores to get bound too.
458
705
  // So keep taking summary until no new stores get bound.
@@ -472,8 +719,8 @@ export class DataStores {
472
719
  .map(([key, value]) => {
473
720
  let dataStoreSummary;
474
721
  if (value.isLoaded) {
475
- const snapshot = value.generateAttachMessage().snapshot;
476
- dataStoreSummary = convertToSummaryTree(snapshot, true);
722
+ dataStoreSummary = value.getAttachData(
723
+ /* includeGCCData: */ false, telemetryContext).attachSummary;
477
724
  }
478
725
  else {
479
726
  // If this data store is not yet loaded, then there should be no changes in the snapshot from
@@ -497,8 +744,8 @@ export class DataStores {
497
744
  assert(context !== undefined, 0x2b6 /* Missing data store context */);
498
745
  if (await context.isRoot()) {
499
746
  // A root data store is basically a reference from the container runtime to the data store.
500
- const handle = new FluidObjectHandle(context, id, this.runtime.IFluidHandleContext);
501
- this.runtime.addedGCOutboundReference(this.containerRuntimeHandle, handle);
747
+ const handle = new FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
748
+ this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
502
749
  }
503
750
  }
504
751
  this.dataStoresSinceLastGC = [];
@@ -574,7 +821,7 @@ export class DataStores {
574
821
  // Delete the contexts of unused data stores.
575
822
  this.contexts.delete(dataStoreId);
576
823
  // Delete the summarizer node of the unused data stores.
577
- this.deleteChildSummarizerNodeFn(dataStoreId);
824
+ this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
578
825
  }
579
826
  }
580
827
  /**
@@ -611,7 +858,7 @@ export class DataStores {
611
858
  // Delete the contexts of sweep ready data stores.
612
859
  this.contexts.delete(dataStoreId);
613
860
  // Delete the summarizer node of the sweep ready data stores.
614
- this.deleteChildSummarizerNodeFn(dataStoreId);
861
+ this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
615
862
  }
616
863
  return Array.from(sweepReadyDataStoreRoutes);
617
864
  }
@@ -679,6 +926,49 @@ export class DataStores {
679
926
  }
680
927
  return GCNodeType.SubDataStore;
681
928
  }
929
+ internalId(maybeAlias) {
930
+ return this.aliases.get(maybeAlias) ?? maybeAlias;
931
+ }
932
+ async request(request) {
933
+ const requestParser = RequestParser.create(request);
934
+ const id = requestParser.pathParts[0];
935
+ // Differentiate between requesting the dataStore directly, or one of its children
936
+ const requestForChild = !requestParser.isLeaf(1);
937
+ const headerData = {};
938
+ if (typeof request.headers?.[RuntimeHeaders.wait] === "boolean") {
939
+ headerData.wait = request.headers[RuntimeHeaders.wait];
940
+ }
941
+ if (typeof request.headers?.[RuntimeHeaders.viaHandle] === "boolean") {
942
+ headerData.viaHandle = request.headers[RuntimeHeaders.viaHandle];
943
+ }
944
+ if (typeof request.headers?.[AllowTombstoneRequestHeaderKey] === "boolean") {
945
+ headerData.allowTombstone = request.headers[AllowTombstoneRequestHeaderKey];
946
+ }
947
+ if (typeof request.headers?.[AllowInactiveRequestHeaderKey] === "boolean") {
948
+ headerData.allowInactive = request.headers[AllowInactiveRequestHeaderKey];
949
+ }
950
+ // We allow Tombstone requests for sub-DataStore objects
951
+ if (requestForChild) {
952
+ headerData.allowTombstone = true;
953
+ }
954
+ await this.waitIfPendingAlias(id);
955
+ const internalId = this.internalId(id);
956
+ const dataStoreContext = await this.getDataStore(internalId, headerData);
957
+ // Remove query params, leading and trailing slashes from the url. This is done to make sure the format is
958
+ // the same as GC nodes id.
959
+ const urlWithoutQuery = trimLeadingAndTrailingSlashes(request.url.split("?")[0]);
960
+ // Get the initial snapshot details which contain the data store package path.
961
+ const details = await dataStoreContext.getInitialSnapshotDetails();
962
+ // Note that this will throw if the data store is inactive or tombstoned and throwing on incorrect usage
963
+ // is configured.
964
+ this.gcNodeUpdated(`/${urlWithoutQuery}`, "Loaded", undefined /* timestampMs */, details.pkg, request, headerData);
965
+ const dataStore = await dataStoreContext.realize();
966
+ const subRequest = requestParser.createSubRequest(1);
967
+ // We always expect createSubRequest to include a leading slash, but asserting here to protect against
968
+ // unintentionally modifying the url if that changes.
969
+ assert(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
970
+ return dataStore.request(subRequest);
971
+ }
682
972
  }
683
973
  export function getSummaryForDatastores(snapshot, metadata) {
684
974
  if (!snapshot) {
@@ -705,6 +995,8 @@ export function getSummaryForDatastores(snapshot, metadata) {
705
995
  }
706
996
  /**
707
997
  * Traverse this op's contents and detect any outbound routes that were added by this op.
998
+ *
999
+ * @internal
708
1000
  */
709
1001
  export function detectOutboundReferences(envelope, addedOutboundReference) {
710
1002
  // These will be built up as we traverse the envelope contents
@@ -733,4 +1025,25 @@ export function detectOutboundReferences(envelope, addedOutboundReference) {
733
1025
  const fromPath = ["", envelope.address, ddsAddress].join("/");
734
1026
  outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));
735
1027
  }
736
- //# sourceMappingURL=dataStores.mjs.map
1028
+ /** @internal */
1029
+ export class ChannelCollectionFactory {
1030
+ constructor(registryEntries,
1031
+ // ADO:7302 We need a better type here
1032
+ provideEntryPoint) {
1033
+ this.provideEntryPoint = provideEntryPoint;
1034
+ this.type = "ChannelCollectionChannel";
1035
+ this.IFluidDataStoreRegistry = new FluidDataStoreRegistry(registryEntries);
1036
+ }
1037
+ get IFluidDataStoreFactory() {
1038
+ return this;
1039
+ }
1040
+ async instantiateDataStore(context, _existing) {
1041
+ const runtime = new ChannelCollection(context.baseSnapshot, context, // parentContext
1042
+ context.logger, () => { }, // gcNodeUpdated
1043
+ (_nodePath) => false, // isDataStoreDeleted
1044
+ new Map(), // aliasMap
1045
+ this.provideEntryPoint);
1046
+ return runtime;
1047
+ }
1048
+ }
1049
+ //# sourceMappingURL=channelCollection.js.map