@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
@@ -4,7 +4,7 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.DataStores = void 0;
7
+ exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
8
8
  const datastore_1 = require("@fluidframework/datastore");
9
9
  const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
10
10
  const runtime_utils_1 = require("@fluidframework/runtime-utils");
@@ -12,29 +12,150 @@ const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
12
12
  const container_definitions_1 = require("@fluidframework/container-definitions");
13
13
  const driver_utils_1 = require("@fluidframework/driver-utils");
14
14
  const core_utils_1 = require("@fluidframework/core-utils");
15
- const uuid_1 = require("uuid");
16
- const dataStoreContexts_1 = require("./dataStoreContexts");
17
- const containerRuntime_1 = require("./containerRuntime");
18
- const dataStoreContext_1 = require("./dataStoreContext");
19
- const storageServiceWithAttachBlobs_1 = require("./storageServiceWithAttachBlobs");
20
- const dataStore_1 = require("./dataStore");
21
- const gc_1 = require("./gc");
22
- const summary_1 = require("./summary");
15
+ const dataStoreContexts_js_1 = require("./dataStoreContexts.js");
16
+ const containerRuntime_js_1 = require("./containerRuntime.js");
17
+ const dataStoreContext_js_1 = require("./dataStoreContext.js");
18
+ const storageServiceWithAttachBlobs_js_1 = require("./storageServiceWithAttachBlobs.js");
19
+ const dataStore_js_1 = require("./dataStore.js");
20
+ const index_js_1 = require("./gc/index.js");
21
+ const index_js_2 = require("./summary/index.js");
22
+ const messageTypes_js_1 = require("./messageTypes.js");
23
+ const dataStoreRegistry_js_1 = require("./dataStoreRegistry.js");
24
+ /**
25
+ * Accepted header keys for requests coming to the runtime.
26
+ * @internal
27
+ */
28
+ var RuntimeHeaders;
29
+ (function (RuntimeHeaders) {
30
+ /** True to wait for a data store to be created and loaded before returning it. */
31
+ RuntimeHeaders["wait"] = "wait";
32
+ /** True if the request is coming from an IFluidHandle. */
33
+ RuntimeHeaders["viaHandle"] = "viaHandle";
34
+ })(RuntimeHeaders || (exports.RuntimeHeaders = RuntimeHeaders = {}));
35
+ /** True if a tombstoned object should be returned without erroring
36
+ * @alpha
37
+ */
38
+ exports.AllowTombstoneRequestHeaderKey = "allowTombstone"; // Belongs in the enum above, but avoiding the breaking change
39
+ /**
40
+ * [IRRELEVANT IF throwOnInactiveLoad OPTION NOT SET] True if an inactive object should be returned without erroring
41
+ * @internal
42
+ */
43
+ exports.AllowInactiveRequestHeaderKey = "allowInactive"; // Belongs in the enum above, but avoiding the breaking change
44
+ /**
45
+ * Creates a shallow wrapper of {@link IFluidParentContext}. The wrapper can then have its methods overwritten as needed
46
+ */
47
+ function wrapContext(context) {
48
+ return {
49
+ get IFluidDataStoreRegistry() {
50
+ return context.IFluidDataStoreRegistry;
51
+ },
52
+ IFluidHandleContext: context.IFluidHandleContext,
53
+ options: context.options,
54
+ get clientId() {
55
+ return context.clientId;
56
+ },
57
+ get connected() {
58
+ return context.connected;
59
+ },
60
+ deltaManager: context.deltaManager,
61
+ storage: context.storage,
62
+ logger: context.logger,
63
+ get clientDetails() {
64
+ return context.clientDetails;
65
+ },
66
+ get idCompressor() {
67
+ return context.idCompressor;
68
+ },
69
+ loadingGroupId: context.loadingGroupId,
70
+ get attachState() {
71
+ return context.attachState;
72
+ },
73
+ containerRuntime: context.containerRuntime,
74
+ scope: context.scope,
75
+ gcThrowOnTombstoneUsage: context.gcThrowOnTombstoneUsage,
76
+ gcTombstoneEnforcementAllowed: context.gcTombstoneEnforcementAllowed,
77
+ getAbsoluteUrl: async (...args) => {
78
+ return context.getAbsoluteUrl(...args);
79
+ },
80
+ getQuorum: (...args) => {
81
+ return context.getQuorum(...args);
82
+ },
83
+ getAudience: (...args) => {
84
+ return context.getAudience(...args);
85
+ },
86
+ ensureNoDataModelChanges: (...args) => {
87
+ return context.ensureNoDataModelChanges(...args);
88
+ },
89
+ submitMessage: (...args) => {
90
+ return context.submitMessage(...args);
91
+ },
92
+ submitSignal: (...args) => {
93
+ return context.submitSignal(...args);
94
+ },
95
+ makeLocallyVisible: (...args) => {
96
+ return context.makeLocallyVisible(...args);
97
+ },
98
+ uploadBlob: async (...args) => {
99
+ return context.uploadBlob(...args);
100
+ },
101
+ addedGCOutboundReference: (...args) => {
102
+ return context.addedGCOutboundReference?.(...args);
103
+ },
104
+ getCreateChildSummarizerNodeFn: (...args) => {
105
+ return context.getCreateChildSummarizerNodeFn?.(...args);
106
+ },
107
+ deleteChildSummarizerNode: (...args) => {
108
+ return context.deleteChildSummarizerNode?.(...args);
109
+ },
110
+ setChannelDirty: (address) => {
111
+ return context.setChannelDirty(address);
112
+ },
113
+ };
114
+ }
115
+ exports.wrapContext = wrapContext;
116
+ /**
117
+ * Creates a wrapper of a {@link IFluidParentContext} to be provided to the inner datastore channels.
118
+ * The wrapper will have the submit methods overwritten with the appropriate id as the destination address.
119
+ *
120
+ * @param id - the id of the channel
121
+ * @param parentContext - the {@link IFluidParentContext} to wrap
122
+ * @returns A wrapped {@link IFluidParentContext}
123
+ */
124
+ function wrapContextForInnerChannel(id, parentContext) {
125
+ const context = wrapContext(parentContext);
126
+ context.submitMessage = (type, content, localOpMetadata) => {
127
+ const fluidDataStoreContent = {
128
+ content,
129
+ type,
130
+ };
131
+ const envelope = {
132
+ address: id,
133
+ contents: fluidDataStoreContent,
134
+ };
135
+ parentContext.submitMessage(messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, envelope, localOpMetadata);
136
+ };
137
+ context.submitSignal = (type, contents, targetClientId) => {
138
+ const envelope = {
139
+ address: id,
140
+ contents,
141
+ };
142
+ parentContext.submitSignal(type, envelope, targetClientId);
143
+ };
144
+ return context;
145
+ }
146
+ exports.wrapContextForInnerChannel = wrapContextForInnerChannel;
23
147
  /**
24
148
  * This class encapsulates data store handling. Currently it is only used by the container runtime,
25
149
  * but eventually could be hosted on any channel once we formalize the channel api boundary.
150
+ * @internal
26
151
  */
27
- class DataStores {
28
- constructor(baseSnapshot, runtime, submitAttachFn, getCreateChildSummarizerNodeFn, deleteChildSummarizerNodeFn, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, contexts = new dataStoreContexts_1.DataStoreContexts(baseLogger)) {
152
+ class ChannelCollection {
153
+ constructor(baseSnapshot, parentContext, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, provideEntryPoint) {
29
154
  this.baseSnapshot = baseSnapshot;
30
- this.runtime = runtime;
31
- this.submitAttachFn = submitAttachFn;
32
- this.getCreateChildSummarizerNodeFn = getCreateChildSummarizerNodeFn;
33
- this.deleteChildSummarizerNodeFn = deleteChildSummarizerNodeFn;
155
+ this.parentContext = parentContext;
34
156
  this.gcNodeUpdated = gcNodeUpdated;
35
157
  this.isDataStoreDeleted = isDataStoreDeleted;
36
158
  this.aliasMap = aliasMap;
37
- this.contexts = contexts;
38
159
  // Stores tracked by the Domain
39
160
  this.pendingAttach = new Map();
40
161
  // 0.24 back-compat attachingBeforeSummary
@@ -44,9 +165,13 @@ class DataStores {
44
165
  // root data stores that are added.
45
166
  this.dataStoresSinceLastGC = [];
46
167
  this.pendingAliasMap = new Map();
168
+ /** For sampling. Only log once per container */
169
+ this.shouldSendAttachLog = true;
47
170
  this.dispose = () => this.disposeOnce.value;
48
171
  this.mc = (0, telemetry_utils_1.createChildMonitoringContext)({ logger: baseLogger });
49
- this.containerRuntimeHandle = new datastore_1.FluidObjectHandle(this.runtime, "/", this.runtime.IFluidHandleContext);
172
+ this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
173
+ this.containerRuntimeHandle = new datastore_1.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
174
+ this.entryPoint = new datastore_1.FluidObjectHandle(new core_utils_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
50
175
  // Extract stores stored inside the snapshot
51
176
  const fluidDataStores = new Map();
52
177
  if (baseSnapshot) {
@@ -63,16 +188,17 @@ class DataStores {
63
188
  unreferencedDataStoreCount++;
64
189
  }
65
190
  // If we have a detached container, then create local data store contexts.
66
- if (this.runtime.attachState !== container_definitions_1.AttachState.Detached) {
67
- dataStoreContext = new dataStoreContext_1.RemoteFluidDataStoreContext({
191
+ if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
192
+ dataStoreContext = new dataStoreContext_js_1.RemoteFluidDataStoreContext({
68
193
  id: key,
69
194
  snapshotTree: value,
70
- runtime: this.runtime,
71
- storage: this.runtime.storage,
72
- scope: this.runtime.scope,
73
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
195
+ parentContext: this.wrapContextForInnerChannel(key),
196
+ storage: this.parentContext.storage,
197
+ scope: this.parentContext.scope,
198
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
74
199
  type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
75
200
  }),
201
+ loadingGroupId: value.groupId,
76
202
  });
77
203
  }
78
204
  else {
@@ -80,18 +206,17 @@ class DataStores {
80
206
  throw new telemetry_utils_1.LoggingError("Snapshot should be there to load from!!");
81
207
  }
82
208
  const snapshotTree = value;
83
- dataStoreContext = new dataStoreContext_1.LocalFluidDataStoreContext({
209
+ dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
84
210
  id: key,
85
211
  pkg: undefined,
86
- runtime: this.runtime,
87
- storage: this.runtime.storage,
88
- scope: this.runtime.scope,
89
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
212
+ parentContext: this.wrapContextForInnerChannel(key),
213
+ storage: this.parentContext.storage,
214
+ scope: this.parentContext.scope,
215
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
90
216
  type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
91
217
  }),
92
218
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
93
219
  snapshotTree,
94
- isRootDataStore: undefined,
95
220
  });
96
221
  }
97
222
  this.contexts.addBoundOrRemoted(dataStoreContext);
@@ -111,13 +236,45 @@ class DataStores {
111
236
  const pendingAliasPromise = this.pendingAliases.get(maybeAlias);
112
237
  return pendingAliasPromise ?? "Success";
113
238
  }
239
+ wrapContextForInnerChannel(id) {
240
+ return wrapContextForInnerChannel(id, this.parentContext);
241
+ }
242
+ /**
243
+ * IFluidDataStoreChannel.makeVisibleAndAttachGraph implementation
244
+ * Not clear when it would be called and what it should do.
245
+ * Currently this API is called by context only for root data stores.
246
+ */
247
+ makeVisibleAndAttachGraph() {
248
+ this.parentContext.makeLocallyVisible();
249
+ }
114
250
  processAttachMessage(message, local) {
115
251
  const attachMessage = message.contents;
116
252
  this.dataStoresSinceLastGC.push(attachMessage.id);
253
+ // We need to process the GC Data for both local and remote attach messages
254
+ const foundGCData = (0, runtime_utils_1.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
255
+ // nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
256
+ const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
257
+ this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
258
+ });
259
+ // Only log once per container to avoid noise/cost.
260
+ // Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
261
+ if (this.shouldSendAttachLog) {
262
+ this.shouldSendAttachLog = false;
263
+ this.mc.logger.sendTelemetryEvent({
264
+ eventName: "dataStoreAttachMessage_sampled",
265
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: attachMessage.id, pkg: attachMessage.type }),
266
+ details: {
267
+ local,
268
+ snapshot: !!attachMessage.snapshot,
269
+ foundGCData,
270
+ },
271
+ ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
272
+ });
273
+ }
117
274
  // The local object has already been attached
118
275
  if (local) {
119
276
  (0, core_utils_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
120
- this.contexts.get(attachMessage.id)?.emit("attached");
277
+ this.contexts.get(attachMessage.id)?.setAttachState(container_definitions_1.AttachState.Attached);
121
278
  this.pendingAttach.delete(attachMessage.id);
122
279
  return;
123
280
  }
@@ -140,17 +297,18 @@ class DataStores {
140
297
  // Include the type of attach message which is the pkg of the store to be
141
298
  // used by RemoteFluidDataStoreContext in case it is not in the snapshot.
142
299
  const pkg = [attachMessage.type];
143
- const remoteFluidDataStoreContext = new dataStoreContext_1.RemoteFluidDataStoreContext({
300
+ const remoteFluidDataStoreContext = new dataStoreContext_js_1.RemoteFluidDataStoreContext({
144
301
  id: attachMessage.id,
145
302
  snapshotTree,
146
- runtime: this.runtime,
147
- storage: new storageServiceWithAttachBlobs_1.StorageServiceWithAttachBlobs(this.runtime.storage, flatAttachBlobs),
148
- scope: this.runtime.scope,
149
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(attachMessage.id, {
303
+ parentContext: this.wrapContextForInnerChannel(attachMessage.id),
304
+ storage: new storageServiceWithAttachBlobs_js_1.StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs),
305
+ scope: this.parentContext.scope,
306
+ loadingGroupId: attachMessage.snapshot?.groupId,
307
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {
150
308
  type: runtime_definitions_1.CreateSummarizerNodeSource.FromAttach,
151
309
  sequenceNumber: message.sequenceNumber,
152
310
  snapshot: attachMessage.snapshot ?? {
153
- entries: [(0, dataStoreContext_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
311
+ entries: [(0, dataStoreContext_js_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
154
312
  },
155
313
  }),
156
314
  pkg,
@@ -159,46 +317,58 @@ class DataStores {
159
317
  }
160
318
  processAliasMessage(message, localOpMetadata, local) {
161
319
  const aliasMessage = message.contents;
162
- if (!(0, dataStore_1.isDataStoreAliasMessage)(aliasMessage)) {
320
+ if (!(0, dataStore_js_1.isDataStoreAliasMessage)(aliasMessage)) {
163
321
  throw new telemetry_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", {
164
322
  ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
165
323
  });
166
324
  }
167
325
  const resolve = localOpMetadata;
168
- const aliasResult = this.processAliasMessageCore(aliasMessage);
326
+ const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias);
169
327
  if (local) {
170
328
  resolve(aliasResult);
171
329
  }
172
330
  }
173
- processAliasMessageCore(aliasMessage) {
174
- if (this.alreadyProcessed(aliasMessage.alias)) {
331
+ processAliasMessageCore(internalId, alias) {
332
+ if (this.alreadyProcessed(alias)) {
175
333
  return false;
176
334
  }
177
- const context = this.contexts.get(aliasMessage.internalId);
335
+ const context = this.contexts.get(internalId);
178
336
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
179
337
  // corruption in case a deleted data store accidentally submitted a signal.
180
- if (this.checkAndLogIfDeleted(aliasMessage.internalId, context, "Changed", "processAliasMessageCore")) {
338
+ if (this.checkAndLogIfDeleted(internalId, context, "Changed", "processAliasMessageCore")) {
181
339
  return false;
182
340
  }
183
341
  if (context === undefined) {
184
342
  this.mc.logger.sendErrorEvent({
185
343
  eventName: "AliasFluidDataStoreNotFound",
186
- fluidDataStoreId: aliasMessage.internalId,
344
+ fluidDataStoreId: internalId,
187
345
  });
188
346
  return false;
189
347
  }
190
- const handle = new datastore_1.FluidObjectHandle(context, aliasMessage.internalId, this.runtime.IFluidHandleContext);
191
- this.runtime.addedGCOutboundReference(this.containerRuntimeHandle, handle);
192
- this.aliasMap.set(aliasMessage.alias, context.id);
348
+ const handle = new datastore_1.FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
349
+ this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
350
+ this.aliasMap.set(alias, context.id);
193
351
  context.setInMemoryRoot();
194
352
  return true;
195
353
  }
196
354
  alreadyProcessed(id) {
197
355
  return this.aliasMap.get(id) !== undefined || this.contexts.get(id) !== undefined;
198
356
  }
357
+ /** Package up the context's attach summary etc into an IAttachMessage */
358
+ generateAttachMessage(localContext) {
359
+ const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
360
+ const type = localContext.packagePath[localContext.packagePath.length - 1];
361
+ // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
362
+ const snapshot = (0, runtime_utils_1.convertSummaryTreeToITree)(attachSummary.summary);
363
+ return {
364
+ id: localContext.id,
365
+ snapshot,
366
+ type,
367
+ };
368
+ }
199
369
  /**
200
- * Make the data stores locally visible in the container graph by moving the data store context from unbound to
201
- * bound list. This data store can now be reached from the root.
370
+ * Make the data store locally visible in the container graph by moving the data store context from unbound to
371
+ * bound list and submitting the attach message. This data store can now be reached from the root.
202
372
  * @param id - The id of the data store context to make visible.
203
373
  */
204
374
  makeDataStoreLocallyVisible(id) {
@@ -209,48 +379,72 @@ class DataStores {
209
379
  * globally visible. Move it to attaching state and send an "attach" op for it.
210
380
  * If the container is detached, this data store will be part of the summary that makes the container attached.
211
381
  */
212
- if (this.runtime.attachState !== container_definitions_1.AttachState.Detached) {
213
- localContext.emit("attaching");
214
- const message = localContext.generateAttachMessage();
215
- this.pendingAttach.set(id, message);
216
- this.submitAttachFn(message);
217
- this.attachOpFiredForDataStore.add(id);
382
+ if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
383
+ localContext.setAttachState(container_definitions_1.AttachState.Attaching);
384
+ this.submitAttachChannelOp(localContext);
218
385
  }
219
386
  this.contexts.bind(id);
220
387
  }
221
- createDetachedDataStoreCore(pkg, isRoot, id = (0, uuid_1.v4)()) {
222
- (0, core_utils_1.assert)(!id.includes("/"), 0x30c /* Id cannot contain slashes */);
223
- const context = new dataStoreContext_1.LocalDetachedFluidDataStoreContext({
224
- id,
225
- pkg,
226
- runtime: this.runtime,
227
- storage: this.runtime.storage,
228
- scope: this.runtime.scope,
229
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
230
- type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
231
- }),
232
- makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
233
- snapshotTree: undefined,
234
- isRootDataStore: isRoot,
235
- });
236
- this.contexts.addUnbound(context);
237
- return context;
388
+ submitAttachChannelOp(localContext) {
389
+ const message = this.generateAttachMessage(localContext);
390
+ this.pendingAttach.set(localContext.id, message);
391
+ this.parentContext.submitMessage(messageTypes_js_1.ContainerMessageType.Attach, message, undefined);
392
+ this.attachOpFiredForDataStore.add(localContext.id);
393
+ }
394
+ /**
395
+ * Generate compact internal DataStore ID.
396
+ *
397
+ * A note about namespace and name collisions:
398
+ * This code assumes that that's the only way to generate internal IDs, and that it's Ok for this namespace to overlap with
399
+ * user-provided alias names namespace.
400
+ * There are two scenarios where it could cause trouble:
401
+ * 1) Old files, where (already removed) CreateRoot*DataStore*() API was used, and thus internal name of data store
402
+ * was provided by user. Such files may experience name collision with future data stores that receive a name generated
403
+ * by this function.
404
+ * 2) Much less likely, but if it happen that internal ID (generated by this function) is exactly the same as alias name
405
+ * that user might use in the future, them ContainerRuntime.getAliasedDataStoreEntryPoint() or
406
+ * ContainerRuntime.getDataStoreFromRequest() could return a data store with internalID matching user request, even though
407
+ * user expected some other data store (that would receive alias later).
408
+ * Please note that above mentioned functions have the implementation they have (allowing #2) due to #1.
409
+ */
410
+ createDataStoreId() {
411
+ // We use three non-overlapping namespaces:
412
+ // - detached state: even numbers
413
+ // - attached state: odd numbers
414
+ // - uuids
415
+ // In first two cases we will encode result as strings in more compact form.
416
+ if (this.parentContext.attachState === container_definitions_1.AttachState.Detached) {
417
+ // container is detached, only one client observes content, no way to hit collisions with other clients.
418
+ return (0, runtime_utils_1.encodeCompactIdToString)(2 * this.contexts.size);
419
+ }
420
+ const id = this.parentContext.containerRuntime.generateDocumentUniqueId();
421
+ if (typeof id === "number") {
422
+ return (0, runtime_utils_1.encodeCompactIdToString)(2 * id + 1);
423
+ }
424
+ return id;
425
+ }
426
+ createDetachedDataStore(pkg, loadingGroupId) {
427
+ return this.createContext(this.createDataStoreId(), pkg, dataStoreContext_js_1.LocalDetachedFluidDataStoreContext, undefined, // props
428
+ loadingGroupId);
238
429
  }
239
- _createFluidDataStoreContext(pkg, id, props) {
240
- (0, core_utils_1.assert)(!id.includes("/"), 0x30d /* Id cannot contain slashes */);
241
- const context = new dataStoreContext_1.LocalFluidDataStoreContext({
430
+ createDataStoreContext(pkg, props, loadingGroupId) {
431
+ return this.createContext(this.createDataStoreId(), pkg, dataStoreContext_js_1.LocalFluidDataStoreContext, props, loadingGroupId);
432
+ }
433
+ createContext(id, pkg, contextCtor, createProps, loadingGroupId) {
434
+ const context = new contextCtor({
242
435
  id,
243
436
  pkg,
244
- runtime: this.runtime,
245
- storage: this.runtime.storage,
246
- scope: this.runtime.scope,
247
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
437
+ parentContext: this.wrapContextForInnerChannel(id),
438
+ storage: this.parentContext.storage,
439
+ scope: this.parentContext.scope,
440
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
248
441
  type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
249
442
  }),
250
443
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
251
444
  snapshotTree: undefined,
252
- isRootDataStore: false,
253
- createProps: props,
445
+ createProps,
446
+ loadingGroupId,
447
+ channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, telemetry_utils_1.createChildLogger)({ logger: this.parentContext.logger })),
254
448
  });
255
449
  this.contexts.addUnbound(context);
256
450
  return context;
@@ -258,7 +452,20 @@ class DataStores {
258
452
  get disposed() {
259
453
  return this.disposeOnce.evaluated;
260
454
  }
261
- resubmitDataStoreOp(envelope, localOpMetadata) {
455
+ reSubmit(type, content, localOpMetadata) {
456
+ switch (type) {
457
+ case messageTypes_js_1.ContainerMessageType.Attach:
458
+ case messageTypes_js_1.ContainerMessageType.Alias:
459
+ this.parentContext.submitMessage(type, content, localOpMetadata);
460
+ return;
461
+ case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
462
+ return this.reSubmitChannelOp(type, content, localOpMetadata);
463
+ default:
464
+ (0, core_utils_1.assert)(false, "unknown op type");
465
+ }
466
+ }
467
+ reSubmitChannelOp(type, content, localOpMetadata) {
468
+ const envelope = content;
262
469
  const context = this.contexts.get(envelope.address);
263
470
  // If the data store has been deleted, log an error and throw an error. If there are local changes for a
264
471
  // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
@@ -269,9 +476,12 @@ class DataStores {
269
476
  });
270
477
  }
271
478
  (0, core_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
272
- context.reSubmit(envelope.contents, localOpMetadata);
479
+ const innerContents = envelope.contents;
480
+ context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
273
481
  }
274
- rollbackDataStoreOp(envelope, localOpMetadata) {
482
+ rollback(type, content, localOpMetadata) {
483
+ (0, core_utils_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
484
+ const envelope = content;
275
485
  const context = this.contexts.get(envelope.address);
276
486
  // If the data store has been deleted, log an error and throw an error. If there are local changes for a
277
487
  // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
@@ -282,9 +492,23 @@ class DataStores {
282
492
  });
283
493
  }
284
494
  (0, core_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
285
- context.rollback(envelope.contents, localOpMetadata);
495
+ const innerContents = envelope.contents;
496
+ context.rollback(innerContents.type, innerContents.content, localOpMetadata);
497
+ }
498
+ async applyStashedOp(content) {
499
+ const opContents = content;
500
+ switch (opContents.type) {
501
+ case messageTypes_js_1.ContainerMessageType.Attach:
502
+ return this.applyStashedAttachOp(opContents.contents);
503
+ case messageTypes_js_1.ContainerMessageType.Alias:
504
+ return;
505
+ case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
506
+ return this.applyStashedChannelChannelOp(opContents.contents);
507
+ default:
508
+ (0, core_utils_1.assert)(false, "unknon type of op");
509
+ }
286
510
  }
287
- async applyStashedOp(envelope) {
511
+ async applyStashedChannelChannelOp(envelope) {
288
512
  const context = this.contexts.get(envelope.address);
289
513
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
290
514
  // corruption in case the data store that stashed the op is deleted.
@@ -299,29 +523,61 @@ class DataStores {
299
523
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
300
524
  this.processAttachMessage({ contents: message }, false);
301
525
  }
302
- processFluidDataStoreOp(message, local, localMessageMetadata, addedOutboundReference) {
303
- const envelope = message.contents;
304
- const transformed = { ...message, contents: envelope.contents };
305
- const context = this.contexts.get(envelope.address);
526
+ process(message, local, localMessageMetadata, addedOutboundReference) {
527
+ switch (message.type) {
528
+ case messageTypes_js_1.ContainerMessageType.Attach:
529
+ this.processAttachMessage(message, local);
530
+ return;
531
+ case messageTypes_js_1.ContainerMessageType.Alias:
532
+ this.processAliasMessage(message, localMessageMetadata, local);
533
+ return;
534
+ case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp: {
535
+ const envelope = message.contents;
536
+ const innerContents = envelope.contents;
537
+ const transformed = {
538
+ ...message,
539
+ type: innerContents.type,
540
+ contents: innerContents.content,
541
+ };
542
+ this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
543
+ // By default, we use the new behavior of detecting outbound routes here.
544
+ // If this setting is true, then DataStoreContext would be notifying GC instead.
545
+ if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) !== true &&
546
+ addedOutboundReference !== undefined) {
547
+ // Notify GC of any outbound references that were added by this op.
548
+ detectOutboundReferences(envelope.address, transformed.contents, addedOutboundReference);
549
+ }
550
+ break;
551
+ }
552
+ default:
553
+ (0, core_utils_1.assert)(false, 0x8e9 /* unreached */);
554
+ }
555
+ }
556
+ processChannelOp(address, message, local, localMessageMetadata) {
557
+ const context = this.contexts.get(address);
306
558
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
307
559
  // corruption in case a deleted data store accidentally submitted an op.
308
- if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "processFluidDataStoreOp")) {
560
+ if (this.checkAndLogIfDeleted(address, context, "Changed", "processFluidDataStoreOp")) {
309
561
  return;
310
562
  }
311
- (0, core_utils_1.assert)(!!context, 0x162 /* "There should be a store context for the op" */);
312
- context.process(transformed, local, localMessageMetadata);
313
- // By default, we use the new behavior of detecting outbound routes here.
314
- // If this setting is true, then DataStoreContext would be notifying GC instead.
315
- if (this.mc.config.getBoolean(gc_1.detectOutboundRoutesViaDDSKey) !== true) {
316
- // Notify GC of any outbound references that were added by this op.
317
- detectOutboundReferences(envelope, addedOutboundReference);
563
+ if (context === undefined) {
564
+ // Former assert 0x162
565
+ throw telemetry_utils_1.DataProcessingError.create("No context for op", "processFluidDataStoreOp", message, {
566
+ local,
567
+ messageDetails: JSON.stringify({
568
+ type: message.type,
569
+ contentType: typeof message.contents,
570
+ }),
571
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ address }),
572
+ });
318
573
  }
574
+ context.process(message, local, localMessageMetadata);
319
575
  // Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
320
576
  // being used.
321
- this.gcNodeUpdated(`/${envelope.address}`, message.timestamp, context.isLoaded ? context.packagePath : undefined);
577
+ this.gcNodeUpdated(`/${address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
322
578
  }
323
579
  async getDataStore(id, requestHeaderData) {
324
- const headerData = { ...containerRuntime_1.defaultRuntimeHeaderData, ...requestHeaderData };
580
+ const headerData = { ...containerRuntime_js_1.defaultRuntimeHeaderData, ...requestHeaderData };
325
581
  if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStore", requestHeaderData)) {
326
582
  // The requested data store has been deleted by gc. Create a 404 response exception.
327
583
  const request = { url: id };
@@ -343,7 +599,7 @@ class DataStores {
343
599
  if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStoreIfAvailable", requestHeaderData)) {
344
600
  return undefined;
345
601
  }
346
- const headerData = { ...containerRuntime_1.defaultRuntimeHeaderData, ...requestHeaderData };
602
+ const headerData = { ...containerRuntime_js_1.defaultRuntimeHeaderData, ...requestHeaderData };
347
603
  const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
348
604
  if (context === undefined) {
349
605
  return undefined;
@@ -372,7 +628,10 @@ class DataStores {
372
628
  });
373
629
  return true;
374
630
  }
375
- processSignal(fluidDataStoreId, message, local) {
631
+ processSignal(messageArg, local) {
632
+ const envelope = messageArg.content;
633
+ const fluidDataStoreId = envelope.address;
634
+ const message = { ...messageArg, content: envelope.contents };
376
635
  const context = this.contexts.get(fluidDataStoreId);
377
636
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
378
637
  // corruption in case a deleted data store accidentally submitted a signal.
@@ -405,7 +664,7 @@ class DataStores {
405
664
  fluidDataStoreId,
406
665
  }),
407
666
  details: JSON.stringify({
408
- runtimeConnected: this.runtime.connected,
667
+ runtimeConnected: this.parentContext.connected,
409
668
  connected,
410
669
  }),
411
670
  }, error);
@@ -413,11 +672,10 @@ class DataStores {
413
672
  }
414
673
  }
415
674
  setAttachState(attachState) {
416
- const eventName = attachState === container_definitions_1.AttachState.Attaching ? "attaching" : "attached";
417
675
  for (const [, context] of this.contexts) {
418
676
  // Fire only for bounded stores.
419
677
  if (!this.contexts.isNotBound(context.id)) {
420
- context.emit(eventName);
678
+ context.setAttachState(attachState);
421
679
  }
422
680
  }
423
681
  }
@@ -445,7 +703,10 @@ class DataStores {
445
703
  }));
446
704
  return summaryBuilder.getSummaryTree();
447
705
  }
448
- createSummary(telemetryContext) {
706
+ /**
707
+ * Create a summary. Used when attaching or serializing a detached container.
708
+ */
709
+ getAttachSummary(telemetryContext) {
449
710
  const builder = new runtime_utils_1.SummaryTreeBuilder();
450
711
  // Attaching graph of some stores can cause other stores to get bound too.
451
712
  // So keep taking summary until no new stores get bound.
@@ -465,8 +726,8 @@ class DataStores {
465
726
  .map(([key, value]) => {
466
727
  let dataStoreSummary;
467
728
  if (value.isLoaded) {
468
- const snapshot = value.generateAttachMessage().snapshot;
469
- dataStoreSummary = (0, runtime_utils_1.convertToSummaryTree)(snapshot, true);
729
+ dataStoreSummary = value.getAttachData(
730
+ /* includeGCCData: */ false, telemetryContext).attachSummary;
470
731
  }
471
732
  else {
472
733
  // If this data store is not yet loaded, then there should be no changes in the snapshot from
@@ -490,8 +751,8 @@ class DataStores {
490
751
  (0, core_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
491
752
  if (await context.isRoot()) {
492
753
  // A root data store is basically a reference from the container runtime to the data store.
493
- const handle = new datastore_1.FluidObjectHandle(context, id, this.runtime.IFluidHandleContext);
494
- this.runtime.addedGCOutboundReference(this.containerRuntimeHandle, handle);
754
+ const handle = new datastore_1.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
755
+ this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
495
756
  }
496
757
  }
497
758
  this.dataStoresSinceLastGC = [];
@@ -550,26 +811,6 @@ class DataStores {
550
811
  context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);
551
812
  }
552
813
  }
553
- /**
554
- * This is called to update objects whose routes are unused. The unused objects are deleted.
555
- * @param unusedRoutes - The routes that are unused in all data stores in this Container.
556
- */
557
- updateUnusedRoutes(unusedRoutes) {
558
- for (const route of unusedRoutes) {
559
- const pathParts = route.split("/");
560
- // Delete data store only if its route (/datastoreId) is in unusedRoutes. We don't want to delete a data
561
- // store based on its DDS being unused.
562
- if (pathParts.length > 2) {
563
- continue;
564
- }
565
- const dataStoreId = pathParts[1];
566
- (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
567
- // Delete the contexts of unused data stores.
568
- this.contexts.delete(dataStoreId);
569
- // Delete the summarizer node of the unused data stores.
570
- this.deleteChildSummarizerNodeFn(dataStoreId);
571
- }
572
- }
573
814
  /**
574
815
  * Delete data stores and its objects that are sweep ready.
575
816
  * @param sweepReadyDataStoreRoutes - The routes of data stores and its objects that are sweep ready and should
@@ -577,15 +818,12 @@ class DataStores {
577
818
  * @returns The routes of data stores and its objects that were deleted.
578
819
  */
579
820
  deleteSweepReadyNodes(sweepReadyDataStoreRoutes) {
580
- // If sweep for data stores is not enabled, return empty list indicating nothing is deleted.
581
- if (this.mc.config.getBoolean(gc_1.disableDatastoreSweepKey) === true) {
582
- return [];
583
- }
584
821
  for (const route of sweepReadyDataStoreRoutes) {
585
822
  const pathParts = route.split("/");
586
823
  const dataStoreId = pathParts[1];
587
824
  // Ignore sub-data store routes because a data store and its sub-routes are deleted together, so, we only
588
825
  // need to delete the data store.
826
+ // These routes will still be returned below as among the deleted routes
589
827
  if (pathParts.length > 2) {
590
828
  continue;
591
829
  }
@@ -607,7 +845,7 @@ class DataStores {
607
845
  // Delete the contexts of sweep ready data stores.
608
846
  this.contexts.delete(dataStoreId);
609
847
  // Delete the summarizer node of the sweep ready data stores.
610
- this.deleteChildSummarizerNodeFn(dataStoreId);
848
+ this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
611
849
  }
612
850
  return Array.from(sweepReadyDataStoreRoutes);
613
851
  }
@@ -671,17 +909,60 @@ class DataStores {
671
909
  // Data stores paths are of the format "/dataStoreId".
672
910
  // Sub data store paths are of the format "/dataStoreId/subPath/...".
673
911
  if (pathParts.length === 2) {
674
- return gc_1.GCNodeType.DataStore;
912
+ return index_js_1.GCNodeType.DataStore;
913
+ }
914
+ return index_js_1.GCNodeType.SubDataStore;
915
+ }
916
+ internalId(maybeAlias) {
917
+ return this.aliases.get(maybeAlias) ?? maybeAlias;
918
+ }
919
+ async request(request) {
920
+ const requestParser = runtime_utils_1.RequestParser.create(request);
921
+ const id = requestParser.pathParts[0];
922
+ // Differentiate between requesting the dataStore directly, or one of its children
923
+ const requestForChild = !requestParser.isLeaf(1);
924
+ const headerData = {};
925
+ if (typeof request.headers?.[RuntimeHeaders.wait] === "boolean") {
926
+ headerData.wait = request.headers[RuntimeHeaders.wait];
927
+ }
928
+ if (typeof request.headers?.[RuntimeHeaders.viaHandle] === "boolean") {
929
+ headerData.viaHandle = request.headers[RuntimeHeaders.viaHandle];
930
+ }
931
+ if (typeof request.headers?.[exports.AllowTombstoneRequestHeaderKey] === "boolean") {
932
+ headerData.allowTombstone = request.headers[exports.AllowTombstoneRequestHeaderKey];
933
+ }
934
+ if (typeof request.headers?.[exports.AllowInactiveRequestHeaderKey] === "boolean") {
935
+ headerData.allowInactive = request.headers[exports.AllowInactiveRequestHeaderKey];
675
936
  }
676
- return gc_1.GCNodeType.SubDataStore;
937
+ // We allow Tombstone requests for sub-DataStore objects
938
+ if (requestForChild) {
939
+ headerData.allowTombstone = true;
940
+ }
941
+ await this.waitIfPendingAlias(id);
942
+ const internalId = this.internalId(id);
943
+ const dataStoreContext = await this.getDataStore(internalId, headerData);
944
+ // Remove query params, leading and trailing slashes from the url. This is done to make sure the format is
945
+ // the same as GC nodes id.
946
+ const urlWithoutQuery = (0, index_js_1.trimLeadingAndTrailingSlashes)(request.url.split("?")[0]);
947
+ // Get the initial snapshot details which contain the data store package path.
948
+ const details = await dataStoreContext.getInitialSnapshotDetails();
949
+ // Note that this will throw if the data store is inactive or tombstoned and throwing on incorrect usage
950
+ // is configured.
951
+ this.gcNodeUpdated(`/${urlWithoutQuery}`, "Loaded", undefined /* timestampMs */, details.pkg, request, headerData);
952
+ const dataStore = await dataStoreContext.realize();
953
+ const subRequest = requestParser.createSubRequest(1);
954
+ // We always expect createSubRequest to include a leading slash, but asserting here to protect against
955
+ // unintentionally modifying the url if that changes.
956
+ (0, core_utils_1.assert)(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
957
+ return dataStore.request(subRequest);
677
958
  }
678
959
  }
679
- exports.DataStores = DataStores;
960
+ exports.ChannelCollection = ChannelCollection;
680
961
  function getSummaryForDatastores(snapshot, metadata) {
681
962
  if (!snapshot) {
682
963
  return undefined;
683
964
  }
684
- if ((0, summary_1.rootHasIsolatedChannels)(metadata)) {
965
+ if ((0, index_js_2.rootHasIsolatedChannels)(metadata)) {
685
966
  const datastoresSnapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
686
967
  (0, core_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
687
968
  return datastoresSnapshot;
@@ -690,7 +971,7 @@ function getSummaryForDatastores(snapshot, metadata) {
690
971
  // back-compat: strip out all non-datastore paths before giving to DataStores object.
691
972
  const datastoresTrees = {};
692
973
  for (const [key, value] of Object.entries(snapshot.trees)) {
693
- if (!summary_1.nonDataStorePaths.includes(key)) {
974
+ if (!index_js_2.nonDataStorePaths.includes(key)) {
694
975
  datastoresTrees[key] = value;
695
976
  }
696
977
  }
@@ -703,8 +984,10 @@ function getSummaryForDatastores(snapshot, metadata) {
703
984
  exports.getSummaryForDatastores = getSummaryForDatastores;
704
985
  /**
705
986
  * Traverse this op's contents and detect any outbound routes that were added by this op.
987
+ *
988
+ * @internal
706
989
  */
707
- function detectOutboundReferences(envelope, addedOutboundReference) {
990
+ function detectOutboundReferences(address, contents, addedOutboundReference) {
708
991
  // These will be built up as we traverse the envelope contents
709
992
  const outboundPaths = [];
710
993
  let ddsAddress;
@@ -725,11 +1008,34 @@ function detectOutboundReferences(envelope, addedOutboundReference) {
725
1008
  }
726
1009
  }
727
1010
  }
728
- recursivelyFindHandles(envelope.contents);
1011
+ recursivelyFindHandles(contents);
729
1012
  // GC node paths are all absolute paths, hence the "" prefix.
730
1013
  // e.g. this will yield "/dataStoreId/ddsId"
731
- const fromPath = ["", envelope.address, ddsAddress].join("/");
1014
+ const fromPath = ["", address, ddsAddress].join("/");
732
1015
  outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));
733
1016
  }
734
1017
  exports.detectOutboundReferences = detectOutboundReferences;
735
- //# sourceMappingURL=dataStores.js.map
1018
+ /** @internal */
1019
+ class ChannelCollectionFactory {
1020
+ constructor(registryEntries,
1021
+ // ADO:7302 We need a better type here
1022
+ provideEntryPoint, ctor) {
1023
+ this.provideEntryPoint = provideEntryPoint;
1024
+ this.ctor = ctor;
1025
+ this.type = "ChannelCollectionChannel";
1026
+ this.IFluidDataStoreRegistry = new dataStoreRegistry_js_1.FluidDataStoreRegistry(registryEntries);
1027
+ }
1028
+ get IFluidDataStoreFactory() {
1029
+ return this;
1030
+ }
1031
+ async instantiateDataStore(context, _existing) {
1032
+ const runtime = this.ctor(context.baseSnapshot, context, // parentContext
1033
+ context.logger, () => { }, // gcNodeUpdated
1034
+ (_nodePath) => false, // isDataStoreDeleted
1035
+ new Map(), // aliasMap
1036
+ this.provideEntryPoint);
1037
+ return runtime;
1038
+ }
1039
+ }
1040
+ exports.ChannelCollectionFactory = ChannelCollectionFactory;
1041
+ //# sourceMappingURL=channelCollection.js.map