@fluidframework/container-runtime 2.0.0-rc.2.0.1 → 2.0.0-rc.3.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 (554) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/api-report/container-runtime.api.md +471 -52
  3. package/dist/batchTracker.d.ts +1 -1
  4. package/dist/batchTracker.d.ts.map +1 -1
  5. package/dist/batchTracker.js +4 -4
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager.d.ts +33 -30
  8. package/dist/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager.js +82 -107
  10. package/dist/blobManager.js.map +1 -1
  11. package/dist/channelCollection.d.ts +27 -22
  12. package/dist/channelCollection.d.ts.map +1 -1
  13. package/dist/channelCollection.js +189 -165
  14. package/dist/channelCollection.js.map +1 -1
  15. package/dist/connectionTelemetry.d.ts +3 -3
  16. package/dist/connectionTelemetry.d.ts.map +1 -1
  17. package/dist/connectionTelemetry.js +17 -17
  18. package/dist/connectionTelemetry.js.map +1 -1
  19. package/dist/containerHandleContext.d.ts.map +1 -1
  20. package/dist/containerHandleContext.js +2 -2
  21. package/dist/containerHandleContext.js.map +1 -1
  22. package/dist/containerRuntime.d.ts +42 -39
  23. package/dist/containerRuntime.d.ts.map +1 -1
  24. package/dist/containerRuntime.js +425 -292
  25. package/dist/containerRuntime.js.map +1 -1
  26. package/dist/dataStore.d.ts +1 -1
  27. package/dist/dataStore.d.ts.map +1 -1
  28. package/dist/dataStore.js +8 -8
  29. package/dist/dataStore.js.map +1 -1
  30. package/dist/dataStoreContext.d.ts +58 -19
  31. package/dist/dataStoreContext.d.ts.map +1 -1
  32. package/dist/dataStoreContext.js +171 -114
  33. package/dist/dataStoreContext.js.map +1 -1
  34. package/dist/dataStoreContexts.d.ts +1 -0
  35. package/dist/dataStoreContexts.d.ts.map +1 -1
  36. package/dist/dataStoreContexts.js +12 -11
  37. package/dist/dataStoreContexts.js.map +1 -1
  38. package/dist/dataStoreRegistry.d.ts +5 -1
  39. package/dist/dataStoreRegistry.d.ts.map +1 -1
  40. package/dist/dataStoreRegistry.js +4 -4
  41. package/dist/dataStoreRegistry.js.map +1 -1
  42. package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
  43. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  44. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  45. package/dist/deltaScheduler.d.ts +1 -1
  46. package/dist/deltaScheduler.d.ts.map +1 -1
  47. package/dist/deltaScheduler.js +6 -6
  48. package/dist/deltaScheduler.js.map +1 -1
  49. package/dist/error.d.ts +1 -1
  50. package/dist/error.d.ts.map +1 -1
  51. package/dist/error.js +4 -4
  52. package/dist/error.js.map +1 -1
  53. package/dist/gc/garbageCollection.d.ts +3 -2
  54. package/dist/gc/garbageCollection.d.ts.map +1 -1
  55. package/dist/gc/garbageCollection.js +23 -23
  56. package/dist/gc/garbageCollection.js.map +1 -1
  57. package/dist/gc/gcConfigs.d.ts +2 -2
  58. package/dist/gc/gcConfigs.d.ts.map +1 -1
  59. package/dist/gc/gcConfigs.js +4 -5
  60. package/dist/gc/gcConfigs.js.map +1 -1
  61. package/dist/gc/gcDefinitions.d.ts +4 -5
  62. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  63. package/dist/gc/gcDefinitions.js.map +1 -1
  64. package/dist/gc/gcHelpers.d.ts +5 -1
  65. package/dist/gc/gcHelpers.d.ts.map +1 -1
  66. package/dist/gc/gcHelpers.js +21 -12
  67. package/dist/gc/gcHelpers.js.map +1 -1
  68. package/dist/gc/gcSummaryStateTracker.d.ts +2 -2
  69. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  70. package/dist/gc/gcSummaryStateTracker.js +11 -11
  71. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  72. package/dist/gc/gcTelemetry.d.ts +2 -1
  73. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  74. package/dist/gc/gcTelemetry.js +11 -9
  75. package/dist/gc/gcTelemetry.js.map +1 -1
  76. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  77. package/dist/gc/gcUnreferencedStateTracker.js +6 -6
  78. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  79. package/dist/gc/index.d.ts +1 -1
  80. package/dist/gc/index.d.ts.map +1 -1
  81. package/dist/gc/index.js +2 -1
  82. package/dist/gc/index.js.map +1 -1
  83. package/dist/index.d.ts +5 -2
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +12 -2
  86. package/dist/index.js.map +1 -1
  87. package/dist/legacy.d.ts +91 -0
  88. package/dist/messageTypes.d.ts +11 -5
  89. package/dist/messageTypes.d.ts.map +1 -1
  90. package/dist/messageTypes.js +4 -0
  91. package/dist/messageTypes.js.map +1 -1
  92. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  93. package/dist/opLifecycle/batchManager.js.map +1 -1
  94. package/dist/opLifecycle/definitions.d.ts +2 -20
  95. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  96. package/dist/opLifecycle/definitions.js.map +1 -1
  97. package/dist/opLifecycle/index.d.ts +3 -3
  98. package/dist/opLifecycle/index.d.ts.map +1 -1
  99. package/dist/opLifecycle/index.js +3 -1
  100. package/dist/opLifecycle/index.js.map +1 -1
  101. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  102. package/dist/opLifecycle/opCompressor.js +5 -6
  103. package/dist/opLifecycle/opCompressor.js.map +1 -1
  104. package/dist/opLifecycle/opDecompressor.d.ts +15 -4
  105. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  106. package/dist/opLifecycle/opDecompressor.js +62 -63
  107. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  108. package/dist/opLifecycle/opGroupingManager.d.ts +2 -1
  109. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  110. package/dist/opLifecycle/opGroupingManager.js +14 -16
  111. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  112. package/dist/opLifecycle/opSplitter.d.ts +12 -4
  113. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  114. package/dist/opLifecycle/opSplitter.js +63 -53
  115. package/dist/opLifecycle/opSplitter.js.map +1 -1
  116. package/dist/opLifecycle/outbox.d.ts +2 -1
  117. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  118. package/dist/opLifecycle/outbox.js +30 -29
  119. package/dist/opLifecycle/outbox.js.map +1 -1
  120. package/dist/opLifecycle/remoteMessageProcessor.d.ts +8 -0
  121. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  122. package/dist/opLifecycle/remoteMessageProcessor.js +36 -32
  123. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  124. package/dist/packageVersion.d.ts +1 -1
  125. package/dist/packageVersion.js +1 -1
  126. package/dist/packageVersion.js.map +1 -1
  127. package/dist/pendingStateManager.d.ts +1 -1
  128. package/dist/pendingStateManager.d.ts.map +1 -1
  129. package/dist/pendingStateManager.js +18 -18
  130. package/dist/pendingStateManager.js.map +1 -1
  131. package/dist/public.d.ts +12 -0
  132. package/dist/scheduleManager.d.ts +1 -1
  133. package/dist/scheduleManager.d.ts.map +1 -1
  134. package/dist/scheduleManager.js +28 -24
  135. package/dist/scheduleManager.js.map +1 -1
  136. package/dist/storageServiceWithAttachBlobs.d.ts +2 -2
  137. package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -1
  138. package/dist/storageServiceWithAttachBlobs.js +2 -2
  139. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  140. package/dist/summary/documentSchema.d.ts +209 -0
  141. package/dist/summary/documentSchema.d.ts.map +1 -0
  142. package/dist/summary/documentSchema.js +390 -0
  143. package/dist/summary/documentSchema.js.map +1 -0
  144. package/dist/summary/index.d.ts +2 -1
  145. package/dist/summary/index.d.ts.map +1 -1
  146. package/dist/summary/index.js +4 -1
  147. package/dist/summary/index.js.map +1 -1
  148. package/dist/summary/orderedClientElection.d.ts +2 -2
  149. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  150. package/dist/summary/orderedClientElection.js +12 -7
  151. package/dist/summary/orderedClientElection.js.map +1 -1
  152. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  153. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  154. package/dist/summary/runWhileConnectedCoordinator.js +3 -3
  155. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  156. package/dist/summary/runningSummarizer.d.ts +3 -3
  157. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  158. package/dist/summary/runningSummarizer.js +16 -16
  159. package/dist/summary/runningSummarizer.js.map +1 -1
  160. package/dist/summary/summarizer.d.ts +3 -2
  161. package/dist/summary/summarizer.d.ts.map +1 -1
  162. package/dist/summary/summarizer.js +13 -13
  163. package/dist/summary/summarizer.js.map +1 -1
  164. package/dist/summary/summarizerClientElection.d.ts +2 -2
  165. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  166. package/dist/summary/summarizerClientElection.js.map +1 -1
  167. package/dist/summary/summarizerHeuristics.d.ts +1 -1
  168. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  169. package/dist/summary/summarizerHeuristics.js +2 -2
  170. package/dist/summary/summarizerHeuristics.js.map +1 -1
  171. package/dist/summary/summarizerNode/summarizerNode.d.ts +3 -2
  172. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  173. package/dist/summary/summarizerNode/summarizerNode.js +28 -28
  174. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  175. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  176. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  177. package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -3
  178. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  179. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
  180. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  181. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +14 -14
  182. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  183. package/dist/summary/summarizerTypes.d.ts +5 -3
  184. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  185. package/dist/summary/summarizerTypes.js.map +1 -1
  186. package/dist/summary/summaryCollection.d.ts +2 -2
  187. package/dist/summary/summaryCollection.d.ts.map +1 -1
  188. package/dist/summary/summaryCollection.js +7 -7
  189. package/dist/summary/summaryCollection.js.map +1 -1
  190. package/dist/summary/summaryFormat.d.ts +6 -17
  191. package/dist/summary/summaryFormat.d.ts.map +1 -1
  192. package/dist/summary/summaryFormat.js +8 -8
  193. package/dist/summary/summaryFormat.js.map +1 -1
  194. package/dist/summary/summaryGenerator.d.ts +4 -3
  195. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  196. package/dist/summary/summaryGenerator.js +17 -17
  197. package/dist/summary/summaryGenerator.js.map +1 -1
  198. package/dist/summary/summaryManager.d.ts +1 -1
  199. package/dist/summary/summaryManager.d.ts.map +1 -1
  200. package/dist/summary/summaryManager.js +15 -14
  201. package/dist/summary/summaryManager.js.map +1 -1
  202. package/internal.d.ts +11 -0
  203. package/legacy.d.ts +11 -0
  204. package/lib/batchTracker.d.ts +1 -1
  205. package/lib/batchTracker.d.ts.map +1 -1
  206. package/lib/batchTracker.js +2 -2
  207. package/lib/batchTracker.js.map +1 -1
  208. package/lib/blobManager.d.ts +33 -30
  209. package/lib/blobManager.d.ts.map +1 -1
  210. package/lib/blobManager.js +48 -73
  211. package/lib/blobManager.js.map +1 -1
  212. package/lib/channelCollection.d.ts +27 -22
  213. package/lib/channelCollection.d.ts.map +1 -1
  214. package/lib/channelCollection.js +132 -108
  215. package/lib/channelCollection.js.map +1 -1
  216. package/lib/connectionTelemetry.d.ts +3 -3
  217. package/lib/connectionTelemetry.d.ts.map +1 -1
  218. package/lib/connectionTelemetry.js +3 -3
  219. package/lib/connectionTelemetry.js.map +1 -1
  220. package/lib/containerHandleContext.d.ts.map +1 -1
  221. package/lib/containerHandleContext.js +1 -1
  222. package/lib/containerHandleContext.js.map +1 -1
  223. package/lib/containerRuntime.d.ts +42 -39
  224. package/lib/containerRuntime.d.ts.map +1 -1
  225. package/lib/containerRuntime.js +276 -141
  226. package/lib/containerRuntime.js.map +1 -1
  227. package/lib/dataStore.d.ts +1 -1
  228. package/lib/dataStore.d.ts.map +1 -1
  229. package/lib/dataStore.js +3 -3
  230. package/lib/dataStore.js.map +1 -1
  231. package/lib/dataStoreContext.d.ts +58 -19
  232. package/lib/dataStoreContext.d.ts.map +1 -1
  233. package/lib/dataStoreContext.js +110 -53
  234. package/lib/dataStoreContext.js.map +1 -1
  235. package/lib/dataStoreContexts.d.ts +1 -0
  236. package/lib/dataStoreContexts.d.ts.map +1 -1
  237. package/lib/dataStoreContexts.js +3 -2
  238. package/lib/dataStoreContexts.js.map +1 -1
  239. package/lib/dataStoreRegistry.d.ts +5 -1
  240. package/lib/dataStoreRegistry.d.ts.map +1 -1
  241. package/lib/dataStoreRegistry.js +1 -1
  242. package/lib/dataStoreRegistry.js.map +1 -1
  243. package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
  244. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
  245. package/lib/deltaManagerSummarizerProxy.js.map +1 -1
  246. package/lib/deltaScheduler.d.ts +1 -1
  247. package/lib/deltaScheduler.d.ts.map +1 -1
  248. package/lib/deltaScheduler.js +1 -1
  249. package/lib/deltaScheduler.js.map +1 -1
  250. package/lib/error.d.ts +1 -1
  251. package/lib/error.d.ts.map +1 -1
  252. package/lib/error.js +2 -2
  253. package/lib/error.js.map +1 -1
  254. package/lib/gc/garbageCollection.d.ts +3 -2
  255. package/lib/gc/garbageCollection.d.ts.map +1 -1
  256. package/lib/gc/garbageCollection.js +8 -8
  257. package/lib/gc/garbageCollection.js.map +1 -1
  258. package/lib/gc/gcConfigs.d.ts +2 -2
  259. package/lib/gc/gcConfigs.d.ts.map +1 -1
  260. package/lib/gc/gcConfigs.js +4 -5
  261. package/lib/gc/gcConfigs.js.map +1 -1
  262. package/lib/gc/gcDefinitions.d.ts +4 -5
  263. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  264. package/lib/gc/gcDefinitions.js.map +1 -1
  265. package/lib/gc/gcHelpers.d.ts +5 -1
  266. package/lib/gc/gcHelpers.d.ts.map +1 -1
  267. package/lib/gc/gcHelpers.js +10 -2
  268. package/lib/gc/gcHelpers.js.map +1 -1
  269. package/lib/gc/gcSummaryStateTracker.d.ts +2 -2
  270. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  271. package/lib/gc/gcSummaryStateTracker.js +2 -2
  272. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  273. package/lib/gc/gcTelemetry.d.ts +2 -1
  274. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  275. package/lib/gc/gcTelemetry.js +4 -2
  276. package/lib/gc/gcTelemetry.js.map +1 -1
  277. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  278. package/lib/gc/gcUnreferencedStateTracker.js +2 -2
  279. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  280. package/lib/gc/index.d.ts +1 -1
  281. package/lib/gc/index.d.ts.map +1 -1
  282. package/lib/gc/index.js +1 -1
  283. package/lib/gc/index.js.map +1 -1
  284. package/lib/index.d.ts +5 -2
  285. package/lib/index.d.ts.map +1 -1
  286. package/lib/index.js +5 -2
  287. package/lib/index.js.map +1 -1
  288. package/lib/legacy.d.ts +91 -0
  289. package/lib/messageTypes.d.ts +11 -5
  290. package/lib/messageTypes.d.ts.map +1 -1
  291. package/lib/messageTypes.js +4 -0
  292. package/lib/messageTypes.js.map +1 -1
  293. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  294. package/lib/opLifecycle/batchManager.js.map +1 -1
  295. package/lib/opLifecycle/definitions.d.ts +2 -20
  296. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  297. package/lib/opLifecycle/definitions.js.map +1 -1
  298. package/lib/opLifecycle/index.d.ts +3 -3
  299. package/lib/opLifecycle/index.d.ts.map +1 -1
  300. package/lib/opLifecycle/index.js +2 -2
  301. package/lib/opLifecycle/index.js.map +1 -1
  302. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  303. package/lib/opLifecycle/opCompressor.js +2 -3
  304. package/lib/opLifecycle/opCompressor.js.map +1 -1
  305. package/lib/opLifecycle/opDecompressor.d.ts +15 -4
  306. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  307. package/lib/opLifecycle/opDecompressor.js +61 -62
  308. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  309. package/lib/opLifecycle/opGroupingManager.d.ts +2 -1
  310. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  311. package/lib/opLifecycle/opGroupingManager.js +9 -12
  312. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  313. package/lib/opLifecycle/opSplitter.d.ts +12 -4
  314. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  315. package/lib/opLifecycle/opSplitter.js +47 -38
  316. package/lib/opLifecycle/opSplitter.js.map +1 -1
  317. package/lib/opLifecycle/outbox.d.ts +2 -1
  318. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  319. package/lib/opLifecycle/outbox.js +19 -18
  320. package/lib/opLifecycle/outbox.js.map +1 -1
  321. package/lib/opLifecycle/remoteMessageProcessor.d.ts +8 -0
  322. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  323. package/lib/opLifecycle/remoteMessageProcessor.js +36 -32
  324. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  325. package/lib/packageVersion.d.ts +1 -1
  326. package/lib/packageVersion.js +1 -1
  327. package/lib/packageVersion.js.map +1 -1
  328. package/lib/pendingStateManager.d.ts +1 -1
  329. package/lib/pendingStateManager.d.ts.map +1 -1
  330. package/lib/pendingStateManager.js +2 -2
  331. package/lib/pendingStateManager.js.map +1 -1
  332. package/lib/public.d.ts +12 -0
  333. package/lib/scheduleManager.d.ts +1 -1
  334. package/lib/scheduleManager.d.ts.map +1 -1
  335. package/lib/scheduleManager.js +7 -3
  336. package/lib/scheduleManager.js.map +1 -1
  337. package/lib/storageServiceWithAttachBlobs.d.ts +2 -2
  338. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -1
  339. package/lib/storageServiceWithAttachBlobs.js +1 -1
  340. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  341. package/lib/summary/documentSchema.d.ts +209 -0
  342. package/lib/summary/documentSchema.d.ts.map +1 -0
  343. package/lib/summary/documentSchema.js +386 -0
  344. package/lib/summary/documentSchema.js.map +1 -0
  345. package/lib/summary/index.d.ts +2 -1
  346. package/lib/summary/index.d.ts.map +1 -1
  347. package/lib/summary/index.js +1 -0
  348. package/lib/summary/index.js.map +1 -1
  349. package/lib/summary/orderedClientElection.d.ts +2 -2
  350. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  351. package/lib/summary/orderedClientElection.js +7 -2
  352. package/lib/summary/orderedClientElection.js.map +1 -1
  353. package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -1
  354. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  355. package/lib/summary/runWhileConnectedCoordinator.js +1 -1
  356. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  357. package/lib/summary/runningSummarizer.d.ts +3 -3
  358. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  359. package/lib/summary/runningSummarizer.js +3 -3
  360. package/lib/summary/runningSummarizer.js.map +1 -1
  361. package/lib/summary/summarizer.d.ts +3 -2
  362. package/lib/summary/summarizer.d.ts.map +1 -1
  363. package/lib/summary/summarizer.js +3 -3
  364. package/lib/summary/summarizer.js.map +1 -1
  365. package/lib/summary/summarizerClientElection.d.ts +2 -2
  366. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  367. package/lib/summary/summarizerClientElection.js.map +1 -1
  368. package/lib/summary/summarizerHeuristics.d.ts +1 -1
  369. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  370. package/lib/summary/summarizerHeuristics.js +1 -1
  371. package/lib/summary/summarizerHeuristics.js.map +1 -1
  372. package/lib/summary/summarizerNode/summarizerNode.d.ts +3 -2
  373. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  374. package/lib/summary/summarizerNode/summarizerNode.js +5 -5
  375. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  376. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  377. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  378. package/lib/summary/summarizerNode/summarizerNodeUtils.js +1 -1
  379. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  380. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
  381. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  382. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
  383. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  384. package/lib/summary/summarizerTypes.d.ts +5 -3
  385. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  386. package/lib/summary/summarizerTypes.js.map +1 -1
  387. package/lib/summary/summaryCollection.d.ts +2 -2
  388. package/lib/summary/summaryCollection.d.ts.map +1 -1
  389. package/lib/summary/summaryCollection.js +1 -1
  390. package/lib/summary/summaryCollection.js.map +1 -1
  391. package/lib/summary/summaryFormat.d.ts +6 -17
  392. package/lib/summary/summaryFormat.d.ts.map +1 -1
  393. package/lib/summary/summaryFormat.js +3 -3
  394. package/lib/summary/summaryFormat.js.map +1 -1
  395. package/lib/summary/summaryGenerator.d.ts +4 -3
  396. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  397. package/lib/summary/summaryGenerator.js +4 -4
  398. package/lib/summary/summaryGenerator.js.map +1 -1
  399. package/lib/summary/summaryManager.d.ts +1 -1
  400. package/lib/summary/summaryManager.d.ts.map +1 -1
  401. package/lib/summary/summaryManager.js +9 -8
  402. package/lib/summary/summaryManager.js.map +1 -1
  403. package/package.json +57 -65
  404. package/src/batchTracker.ts +4 -3
  405. package/src/blobManager.ts +100 -77
  406. package/src/channelCollection.ts +223 -167
  407. package/src/connectionTelemetry.ts +12 -12
  408. package/src/containerHandleContext.ts +3 -2
  409. package/src/containerRuntime.ts +481 -277
  410. package/src/dataStore.ts +9 -4
  411. package/src/dataStoreContext.ts +201 -97
  412. package/src/dataStoreContexts.ts +5 -2
  413. package/src/dataStoreRegistry.ts +3 -2
  414. package/src/deltaManagerSummarizerProxy.ts +1 -1
  415. package/src/deltaScheduler.ts +2 -1
  416. package/src/error.ts +2 -2
  417. package/src/gc/garbageCollection.ts +21 -20
  418. package/src/gc/gcConfigs.ts +15 -18
  419. package/src/gc/gcDefinitions.ts +6 -8
  420. package/src/gc/gcHelpers.ts +22 -5
  421. package/src/gc/gcSummaryStateTracker.ts +7 -5
  422. package/src/gc/gcTelemetry.ts +13 -7
  423. package/src/gc/gcUnreferencedStateTracker.ts +3 -2
  424. package/src/gc/index.ts +1 -0
  425. package/src/index.ts +22 -1
  426. package/src/messageTypes.ts +20 -6
  427. package/src/opLifecycle/README.md +89 -0
  428. package/src/opLifecycle/batchManager.ts +1 -0
  429. package/src/opLifecycle/definitions.ts +3 -21
  430. package/src/opLifecycle/index.ts +3 -9
  431. package/src/opLifecycle/opCompressor.ts +6 -5
  432. package/src/opLifecycle/opDecompressor.ts +90 -100
  433. package/src/opLifecycle/opGroupingManager.ts +12 -14
  434. package/src/opLifecycle/opSplitter.ts +76 -48
  435. package/src/opLifecycle/outbox.ts +30 -38
  436. package/src/opLifecycle/remoteMessageProcessor.ts +43 -55
  437. package/src/packageVersion.ts +1 -1
  438. package/src/pendingStateManager.ts +6 -6
  439. package/src/scheduleManager.ts +10 -8
  440. package/src/storageServiceWithAttachBlobs.ts +2 -2
  441. package/src/summary/documentSchema.ts +631 -0
  442. package/src/summary/index.ts +10 -1
  443. package/src/summary/orderedClientElection.ts +7 -7
  444. package/src/summary/runWhileConnectedCoordinator.ts +3 -2
  445. package/src/summary/runningSummarizer.ts +22 -20
  446. package/src/summary/summarizer.ts +17 -15
  447. package/src/summary/summarizerClientElection.ts +3 -2
  448. package/src/summary/summarizerHeuristics.ts +4 -2
  449. package/src/summary/summarizerNode/summarizerNode.ts +20 -18
  450. package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -2
  451. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +16 -8
  452. package/src/summary/summarizerTypes.ts +7 -3
  453. package/src/summary/summaryCollection.ts +3 -3
  454. package/src/summary/summaryFormat.ts +14 -26
  455. package/src/summary/summaryGenerator.ts +12 -15
  456. package/src/summary/summaryManager.ts +16 -13
  457. package/api-extractor-cjs.json +0 -8
  458. package/dist/container-runtime-alpha.d.ts +0 -1753
  459. package/dist/container-runtime-beta.d.ts +0 -268
  460. package/dist/container-runtime-public.d.ts +0 -268
  461. package/dist/container-runtime-untrimmed.d.ts +0 -1893
  462. package/lib/container-runtime-alpha.d.ts +0 -1753
  463. package/lib/container-runtime-beta.d.ts +0 -268
  464. package/lib/container-runtime-public.d.ts +0 -268
  465. package/lib/container-runtime-untrimmed.d.ts +0 -1893
  466. package/lib/test/batchTracker.spec.js +0 -88
  467. package/lib/test/batchTracker.spec.js.map +0 -1
  468. package/lib/test/blobManager.spec.js +0 -835
  469. package/lib/test/blobManager.spec.js.map +0 -1
  470. package/lib/test/channelCollection.spec.js +0 -141
  471. package/lib/test/channelCollection.spec.js.map +0 -1
  472. package/lib/test/containerRuntime.spec.js +0 -1748
  473. package/lib/test/containerRuntime.spec.js.map +0 -1
  474. package/lib/test/dataStoreContext.spec.js +0 -801
  475. package/lib/test/dataStoreContext.spec.js.map +0 -1
  476. package/lib/test/dataStoreCreation.spec.js +0 -312
  477. package/lib/test/dataStoreCreation.spec.js.map +0 -1
  478. package/lib/test/dataStoreRegistry.spec.js +0 -26
  479. package/lib/test/dataStoreRegistry.spec.js.map +0 -1
  480. package/lib/test/fuzz/fuzzUtils.js +0 -66
  481. package/lib/test/fuzz/fuzzUtils.js.map +0 -1
  482. package/lib/test/fuzz/summarizer.fuzz.spec.js +0 -31
  483. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +0 -1
  484. package/lib/test/fuzz/summarizerFuzzMocks.js +0 -162
  485. package/lib/test/fuzz/summarizerFuzzMocks.js.map +0 -1
  486. package/lib/test/fuzz/summarizerFuzzSuite.js +0 -106
  487. package/lib/test/fuzz/summarizerFuzzSuite.js.map +0 -1
  488. package/lib/test/gc/garbageCollection.spec.js +0 -1465
  489. package/lib/test/gc/garbageCollection.spec.js.map +0 -1
  490. package/lib/test/gc/gcConfigs.spec.js +0 -690
  491. package/lib/test/gc/gcConfigs.spec.js.map +0 -1
  492. package/lib/test/gc/gcHelpers.spec.js +0 -110
  493. package/lib/test/gc/gcHelpers.spec.js.map +0 -1
  494. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +0 -68
  495. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +0 -1
  496. package/lib/test/gc/gcStats.spec.js +0 -391
  497. package/lib/test/gc/gcStats.spec.js.map +0 -1
  498. package/lib/test/gc/gcSummaryStateTracker.spec.js +0 -228
  499. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +0 -1
  500. package/lib/test/gc/gcTelemetry.spec.js +0 -530
  501. package/lib/test/gc/gcTelemetry.spec.js.map +0 -1
  502. package/lib/test/gc/gcUnitTestHelpers.js +0 -29
  503. package/lib/test/gc/gcUnitTestHelpers.js.map +0 -1
  504. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +0 -192
  505. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +0 -1
  506. package/lib/test/getPendingBlobs.spec.js +0 -193
  507. package/lib/test/getPendingBlobs.spec.js.map +0 -1
  508. package/lib/test/hardwareStats.spec.js +0 -93
  509. package/lib/test/hardwareStats.spec.js.map +0 -1
  510. package/lib/test/index.js +0 -6
  511. package/lib/test/index.js.map +0 -1
  512. package/lib/test/opLifecycle/OpGroupingManager.spec.js +0 -225
  513. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +0 -1
  514. package/lib/test/opLifecycle/batchManager.spec.js +0 -189
  515. package/lib/test/opLifecycle/batchManager.spec.js.map +0 -1
  516. package/lib/test/opLifecycle/opCompressor.spec.js +0 -74
  517. package/lib/test/opLifecycle/opCompressor.spec.js.map +0 -1
  518. package/lib/test/opLifecycle/opDecompressor.spec.js +0 -218
  519. package/lib/test/opLifecycle/opDecompressor.spec.js.map +0 -1
  520. package/lib/test/opLifecycle/opSplitter.spec.js +0 -272
  521. package/lib/test/opLifecycle/opSplitter.spec.js.map +0 -1
  522. package/lib/test/opLifecycle/outbox.spec.js +0 -675
  523. package/lib/test/opLifecycle/outbox.spec.js.map +0 -1
  524. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +0 -196
  525. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +0 -1
  526. package/lib/test/pendingStateManager.spec.js +0 -329
  527. package/lib/test/pendingStateManager.spec.js.map +0 -1
  528. package/lib/test/scheduleManager.spec.js +0 -270
  529. package/lib/test/scheduleManager.spec.js.map +0 -1
  530. package/lib/test/summarizerNode.spec.js +0 -326
  531. package/lib/test/summarizerNode.spec.js.map +0 -1
  532. package/lib/test/summarizerNodeWithGc.spec.js +0 -318
  533. package/lib/test/summarizerNodeWithGc.spec.js.map +0 -1
  534. package/lib/test/summary/orderedClientElection.spec.js +0 -535
  535. package/lib/test/summary/orderedClientElection.spec.js.map +0 -1
  536. package/lib/test/summary/runningSummarizer.spec.js +0 -1349
  537. package/lib/test/summary/runningSummarizer.spec.js.map +0 -1
  538. package/lib/test/summary/summarizer.spec.js +0 -29
  539. package/lib/test/summary/summarizer.spec.js.map +0 -1
  540. package/lib/test/summary/summarizerClientElection.spec.js +0 -436
  541. package/lib/test/summary/summarizerClientElection.spec.js.map +0 -1
  542. package/lib/test/summary/summarizerHeuristics.spec.js +0 -289
  543. package/lib/test/summary/summarizerHeuristics.spec.js.map +0 -1
  544. package/lib/test/summary/summaryCollection.spec.js +0 -200
  545. package/lib/test/summary/summaryCollection.spec.js.map +0 -1
  546. package/lib/test/summary/summaryManager.spec.js +0 -430
  547. package/lib/test/summary/summaryManager.spec.js.map +0 -1
  548. package/lib/test/summary/testQuorumClients.js +0 -34
  549. package/lib/test/summary/testQuorumClients.js.map +0 -1
  550. package/lib/test/throttler.spec.js +0 -175
  551. package/lib/test/throttler.spec.js.map +0 -1
  552. package/lib/test/types/validateContainerRuntimePrevious.generated.js +0 -180
  553. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +0 -1
  554. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -5,22 +5,22 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
8
- const datastore_1 = require("@fluidframework/datastore");
9
- const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
10
- const runtime_utils_1 = require("@fluidframework/runtime-utils");
11
- const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
12
8
  const container_definitions_1 = require("@fluidframework/container-definitions");
13
- const driver_utils_1 = require("@fluidframework/driver-utils");
14
- const core_utils_1 = require("@fluidframework/core-utils");
15
- const dataStoreContexts_js_1 = require("./dataStoreContexts.js");
9
+ const internal_1 = require("@fluidframework/core-utils/internal");
10
+ const internal_2 = require("@fluidframework/datastore/internal");
11
+ const internal_3 = require("@fluidframework/driver-utils/internal");
12
+ const internal_4 = require("@fluidframework/runtime-definitions/internal");
13
+ const internal_5 = require("@fluidframework/runtime-utils/internal");
14
+ const internal_6 = require("@fluidframework/telemetry-utils/internal");
16
15
  const containerRuntime_js_1 = require("./containerRuntime.js");
17
- const dataStoreContext_js_1 = require("./dataStoreContext.js");
18
- const storageServiceWithAttachBlobs_js_1 = require("./storageServiceWithAttachBlobs.js");
19
16
  const dataStore_js_1 = require("./dataStore.js");
17
+ const dataStoreContext_js_1 = require("./dataStoreContext.js");
18
+ const dataStoreContexts_js_1 = require("./dataStoreContexts.js");
19
+ const dataStoreRegistry_js_1 = require("./dataStoreRegistry.js");
20
20
  const index_js_1 = require("./gc/index.js");
21
- const index_js_2 = require("./summary/index.js");
22
21
  const messageTypes_js_1 = require("./messageTypes.js");
23
- const dataStoreRegistry_js_1 = require("./dataStoreRegistry.js");
22
+ const storageServiceWithAttachBlobs_js_1 = require("./storageServiceWithAttachBlobs.js");
23
+ const index_js_2 = require("./summary/index.js");
24
24
  /**
25
25
  * Accepted header keys for requests coming to the runtime.
26
26
  * @internal
@@ -105,7 +105,10 @@ function wrapContext(context) {
105
105
  return context.getCreateChildSummarizerNodeFn?.(...args);
106
106
  },
107
107
  deleteChildSummarizerNode: (...args) => {
108
- return context.deleteChildSummarizerNode?.(...args);
108
+ return context.deleteChildSummarizerNode(...args);
109
+ },
110
+ setChannelDirty: (address) => {
111
+ return context.setChannelDirty(address);
109
112
  },
110
113
  };
111
114
  }
@@ -157,7 +160,7 @@ class ChannelCollection {
157
160
  this.pendingAttach = new Map();
158
161
  // 0.24 back-compat attachingBeforeSummary
159
162
  this.attachOpFiredForDataStore = new Set();
160
- this.disposeOnce = new core_utils_1.Lazy(() => this.contexts.dispose());
163
+ this.disposeOnce = new internal_1.Lazy(() => this.contexts.dispose());
161
164
  // Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
162
165
  // root data stores that are added.
163
166
  this.dataStoresSinceLastGC = [];
@@ -165,10 +168,11 @@ class ChannelCollection {
165
168
  /** For sampling. Only log once per container */
166
169
  this.shouldSendAttachLog = true;
167
170
  this.dispose = () => this.disposeOnce.value;
168
- this.mc = (0, telemetry_utils_1.createChildMonitoringContext)({ logger: baseLogger });
171
+ this.mc = (0, internal_6.createChildMonitoringContext)({ logger: baseLogger });
169
172
  this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
170
- this.containerRuntimeHandle = new datastore_1.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
171
- this.entryPoint = new datastore_1.FluidObjectHandle(new core_utils_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
173
+ this.containerRuntimeHandle = new internal_2.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
174
+ this.entryPoint = new internal_2.FluidObjectHandle(new internal_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
175
+ this.aliasedDataStores = new Set(aliasMap.values());
172
176
  // Extract stores stored inside the snapshot
173
177
  const fluidDataStores = new Map();
174
178
  if (baseSnapshot) {
@@ -193,14 +197,14 @@ class ChannelCollection {
193
197
  storage: this.parentContext.storage,
194
198
  scope: this.parentContext.scope,
195
199
  createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
196
- type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
200
+ type: internal_4.CreateSummarizerNodeSource.FromSummary,
197
201
  }),
198
202
  loadingGroupId: value.groupId,
199
203
  });
200
204
  }
201
205
  else {
202
206
  if (typeof value !== "object") {
203
- throw new telemetry_utils_1.LoggingError("Snapshot should be there to load from!!");
207
+ throw new internal_6.LoggingError("Snapshot should be there to load from!!");
204
208
  }
205
209
  const snapshotTree = value;
206
210
  dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
@@ -210,11 +214,10 @@ class ChannelCollection {
210
214
  storage: this.parentContext.storage,
211
215
  scope: this.parentContext.scope,
212
216
  createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
213
- type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
217
+ type: internal_4.CreateSummarizerNodeSource.FromSummary,
214
218
  }),
215
219
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
216
220
  snapshotTree,
217
- isRootDataStore: undefined,
218
221
  });
219
222
  }
220
223
  this.contexts.addBoundOrRemoted(dataStoreContext);
@@ -249,7 +252,7 @@ class ChannelCollection {
249
252
  const attachMessage = message.contents;
250
253
  this.dataStoresSinceLastGC.push(attachMessage.id);
251
254
  // We need to process the GC Data for both local and remote attach messages
252
- const foundGCData = (0, runtime_utils_1.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
255
+ const foundGCData = (0, internal_5.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
253
256
  // nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
254
257
  const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
255
258
  this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
@@ -260,37 +263,37 @@ class ChannelCollection {
260
263
  this.shouldSendAttachLog = false;
261
264
  this.mc.logger.sendTelemetryEvent({
262
265
  eventName: "dataStoreAttachMessage_sampled",
263
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: attachMessage.id, pkg: attachMessage.type }),
266
+ ...(0, internal_6.tagCodeArtifacts)({ id: attachMessage.id, pkg: attachMessage.type }),
264
267
  details: {
265
268
  local,
266
269
  snapshot: !!attachMessage.snapshot,
267
270
  foundGCData,
268
271
  },
269
- ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
272
+ ...(0, internal_6.extractSafePropertiesFromMessage)(message),
270
273
  });
271
274
  }
272
275
  // The local object has already been attached
273
276
  if (local) {
274
- (0, core_utils_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
275
- this.contexts.get(attachMessage.id)?.emit("attached");
277
+ (0, internal_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
278
+ this.contexts.get(attachMessage.id)?.setAttachState(container_definitions_1.AttachState.Attached);
276
279
  this.pendingAttach.delete(attachMessage.id);
277
280
  return;
278
281
  }
279
282
  // If a non-local operation then go and create the object, otherwise mark it as officially attached.
280
283
  if (this.alreadyProcessed(attachMessage.id)) {
281
284
  // TODO: dataStoreId may require a different tag from PackageData #7488
282
- const error = new telemetry_utils_1.DataCorruptionError(
285
+ const error = new internal_6.DataCorruptionError(
283
286
  // pre-0.58 error message: duplicateDataStoreCreatedWithExistingId
284
287
  "Duplicate DataStore created with existing id", {
285
- ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
286
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ dataStoreId: attachMessage.id }),
288
+ ...(0, internal_6.extractSafePropertiesFromMessage)(message),
289
+ ...(0, internal_6.tagCodeArtifacts)({ dataStoreId: attachMessage.id }),
287
290
  });
288
291
  throw error;
289
292
  }
290
293
  const flatAttachBlobs = new Map();
291
294
  let snapshotTree;
292
295
  if (attachMessage.snapshot) {
293
- snapshotTree = (0, driver_utils_1.buildSnapshotTree)(attachMessage.snapshot.entries, flatAttachBlobs);
296
+ snapshotTree = (0, internal_3.buildSnapshotTree)(attachMessage.snapshot.entries, flatAttachBlobs);
294
297
  }
295
298
  // Include the type of attach message which is the pkg of the store to be
296
299
  // used by RemoteFluidDataStoreContext in case it is not in the snapshot.
@@ -303,7 +306,7 @@ class ChannelCollection {
303
306
  scope: this.parentContext.scope,
304
307
  loadingGroupId: attachMessage.snapshot?.groupId,
305
308
  createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {
306
- type: runtime_definitions_1.CreateSummarizerNodeSource.FromAttach,
309
+ type: internal_4.CreateSummarizerNodeSource.FromAttach,
307
310
  sequenceNumber: message.sequenceNumber,
308
311
  snapshot: attachMessage.snapshot ?? {
309
312
  entries: [(0, dataStoreContext_js_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
@@ -316,36 +319,37 @@ class ChannelCollection {
316
319
  processAliasMessage(message, localOpMetadata, local) {
317
320
  const aliasMessage = message.contents;
318
321
  if (!(0, dataStore_js_1.isDataStoreAliasMessage)(aliasMessage)) {
319
- throw new telemetry_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", {
320
- ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
322
+ throw new internal_6.DataCorruptionError("malformedDataStoreAliasMessage", {
323
+ ...(0, internal_6.extractSafePropertiesFromMessage)(message),
321
324
  });
322
325
  }
323
326
  const resolve = localOpMetadata;
324
- const aliasResult = this.processAliasMessageCore(aliasMessage);
327
+ const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias);
325
328
  if (local) {
326
329
  resolve(aliasResult);
327
330
  }
328
331
  }
329
- processAliasMessageCore(aliasMessage) {
330
- if (this.alreadyProcessed(aliasMessage.alias)) {
332
+ processAliasMessageCore(internalId, alias) {
333
+ if (this.alreadyProcessed(alias)) {
331
334
  return false;
332
335
  }
333
- const context = this.contexts.get(aliasMessage.internalId);
336
+ const context = this.contexts.get(internalId);
334
337
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
335
338
  // corruption in case a deleted data store accidentally submitted a signal.
336
- if (this.checkAndLogIfDeleted(aliasMessage.internalId, context, "Changed", "processAliasMessageCore")) {
339
+ if (this.checkAndLogIfDeleted(internalId, context, "Changed", "processAliasMessageCore")) {
337
340
  return false;
338
341
  }
339
342
  if (context === undefined) {
340
343
  this.mc.logger.sendErrorEvent({
341
344
  eventName: "AliasFluidDataStoreNotFound",
342
- fluidDataStoreId: aliasMessage.internalId,
345
+ fluidDataStoreId: internalId,
343
346
  });
344
347
  return false;
345
348
  }
346
- const handle = new datastore_1.FluidObjectHandle(context, aliasMessage.internalId, this.parentContext.IFluidHandleContext);
349
+ const handle = new internal_2.FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
347
350
  this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
348
- this.aliasMap.set(aliasMessage.alias, context.id);
351
+ this.aliasMap.set(alias, context.id);
352
+ this.aliasedDataStores.add(context.id);
349
353
  context.setInMemoryRoot();
350
354
  return true;
351
355
  }
@@ -357,7 +361,7 @@ class ChannelCollection {
357
361
  const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
358
362
  const type = localContext.packagePath[localContext.packagePath.length - 1];
359
363
  // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
360
- const snapshot = (0, runtime_utils_1.convertSummaryTreeToITree)(attachSummary.summary);
364
+ const snapshot = (0, internal_5.convertSummaryTreeToITree)(attachSummary.summary);
361
365
  return {
362
366
  id: localContext.id,
363
367
  snapshot,
@@ -371,21 +375,24 @@ class ChannelCollection {
371
375
  */
372
376
  makeDataStoreLocallyVisible(id) {
373
377
  const localContext = this.contexts.getUnbound(id);
374
- (0, core_utils_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
378
+ (0, internal_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
375
379
  /**
376
380
  * If the container is not detached, it is globally visible to all clients. This data store should also be
377
381
  * globally visible. Move it to attaching state and send an "attach" op for it.
378
382
  * If the container is detached, this data store will be part of the summary that makes the container attached.
379
383
  */
380
384
  if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
381
- localContext.emit("attaching");
382
- const message = this.generateAttachMessage(localContext);
383
- this.pendingAttach.set(id, message);
384
- this.parentContext.submitMessage(messageTypes_js_1.ContainerMessageType.Attach, message, undefined);
385
- this.attachOpFiredForDataStore.add(id);
385
+ localContext.setAttachState(container_definitions_1.AttachState.Attaching);
386
+ this.submitAttachChannelOp(localContext);
386
387
  }
387
388
  this.contexts.bind(id);
388
389
  }
390
+ submitAttachChannelOp(localContext) {
391
+ const message = this.generateAttachMessage(localContext);
392
+ this.pendingAttach.set(localContext.id, message);
393
+ this.parentContext.submitMessage(messageTypes_js_1.ContainerMessageType.Attach, message, undefined);
394
+ this.attachOpFiredForDataStore.add(localContext.id);
395
+ }
389
396
  /**
390
397
  * Generate compact internal DataStore ID.
391
398
  *
@@ -410,50 +417,36 @@ class ChannelCollection {
410
417
  // In first two cases we will encode result as strings in more compact form.
411
418
  if (this.parentContext.attachState === container_definitions_1.AttachState.Detached) {
412
419
  // container is detached, only one client observes content, no way to hit collisions with other clients.
413
- return (0, runtime_utils_1.encodeCompactIdToString)(2 * this.contexts.size);
420
+ return (0, internal_5.encodeCompactIdToString)(2 * this.contexts.size);
414
421
  }
415
422
  const id = this.parentContext.containerRuntime.generateDocumentUniqueId();
416
423
  if (typeof id === "number") {
417
- return (0, runtime_utils_1.encodeCompactIdToString)(2 * id + 1);
424
+ return (0, internal_5.encodeCompactIdToString)(2 * id + 1);
418
425
  }
419
426
  return id;
420
427
  }
421
- createDetachedDataStoreCore(pkg, loadingGroupId) {
422
- const id = this.createDataStoreId();
423
- const context = new dataStoreContext_js_1.LocalDetachedFluidDataStoreContext({
424
- id,
425
- pkg,
426
- parentContext: this.wrapContextForInnerChannel(id),
427
- storage: this.parentContext.storage,
428
- scope: this.parentContext.scope,
429
- createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
430
- type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
431
- }),
432
- makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
433
- snapshotTree: undefined,
434
- isRootDataStore: false,
435
- loadingGroupId,
436
- channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, telemetry_utils_1.createChildLogger)({ logger: this.parentContext.logger })),
437
- });
438
- this.contexts.addUnbound(context);
439
- return context;
428
+ createDetachedDataStore(pkg, loadingGroupId) {
429
+ return this.createContext(this.createDataStoreId(), pkg, dataStoreContext_js_1.LocalDetachedFluidDataStoreContext, undefined, // props
430
+ loadingGroupId);
431
+ }
432
+ createDataStoreContext(pkg, props, loadingGroupId) {
433
+ return this.createContext(this.createDataStoreId(), pkg, dataStoreContext_js_1.LocalFluidDataStoreContext, props, loadingGroupId);
440
434
  }
441
- _createFluidDataStoreContext(pkg, props, loadingGroupId) {
442
- const id = this.createDataStoreId();
443
- const context = new dataStoreContext_js_1.LocalFluidDataStoreContext({
435
+ createContext(id, pkg, contextCtor, createProps, loadingGroupId) {
436
+ const context = new contextCtor({
444
437
  id,
445
438
  pkg,
446
439
  parentContext: this.wrapContextForInnerChannel(id),
447
440
  storage: this.parentContext.storage,
448
441
  scope: this.parentContext.scope,
449
442
  createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
450
- type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
443
+ type: internal_4.CreateSummarizerNodeSource.Local,
451
444
  }),
452
445
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
453
446
  snapshotTree: undefined,
454
- isRootDataStore: false,
455
- createProps: props,
447
+ createProps,
456
448
  loadingGroupId,
449
+ channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, internal_6.createChildLogger)({ logger: this.parentContext.logger })),
457
450
  });
458
451
  this.contexts.addUnbound(context);
459
452
  return context;
@@ -467,36 +460,40 @@ class ChannelCollection {
467
460
  case messageTypes_js_1.ContainerMessageType.Alias:
468
461
  this.parentContext.submitMessage(type, content, localOpMetadata);
469
462
  return;
463
+ case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
464
+ return this.reSubmitChannelOp(type, content, localOpMetadata);
470
465
  default:
466
+ (0, internal_1.assert)(false, 0x907 /* unknown op type */);
471
467
  }
472
- (0, core_utils_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e7 /* type */);
468
+ }
469
+ reSubmitChannelOp(type, content, localOpMetadata) {
473
470
  const envelope = content;
474
471
  const context = this.contexts.get(envelope.address);
475
472
  // If the data store has been deleted, log an error and throw an error. If there are local changes for a
476
473
  // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
477
474
  if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "resubmitDataStoreOp")) {
478
- throw new telemetry_utils_1.DataCorruptionError("Context is deleted!", {
475
+ throw new internal_6.DataCorruptionError("Context is deleted!", {
479
476
  callSite: "resubmitDataStoreOp",
480
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: envelope.address }),
477
+ ...(0, internal_6.tagCodeArtifacts)({ id: envelope.address }),
481
478
  });
482
479
  }
483
- (0, core_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
480
+ (0, internal_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
484
481
  const innerContents = envelope.contents;
485
482
  context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
486
483
  }
487
484
  rollback(type, content, localOpMetadata) {
488
- (0, core_utils_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
485
+ (0, internal_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
489
486
  const envelope = content;
490
487
  const context = this.contexts.get(envelope.address);
491
488
  // If the data store has been deleted, log an error and throw an error. If there are local changes for a
492
489
  // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
493
490
  if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "rollbackDataStoreOp")) {
494
- throw new telemetry_utils_1.DataCorruptionError("Context is deleted!", {
491
+ throw new internal_6.DataCorruptionError("Context is deleted!", {
495
492
  callSite: "rollbackDataStoreOp",
496
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: envelope.address }),
493
+ ...(0, internal_6.tagCodeArtifacts)({ id: envelope.address }),
497
494
  });
498
495
  }
499
- (0, core_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
496
+ (0, internal_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
500
497
  const innerContents = envelope.contents;
501
498
  context.rollback(innerContents.type, innerContents.content, localOpMetadata);
502
499
  }
@@ -507,22 +504,59 @@ class ChannelCollection {
507
504
  return this.applyStashedAttachOp(opContents.contents);
508
505
  case messageTypes_js_1.ContainerMessageType.Alias:
509
506
  return;
507
+ case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
508
+ return this.applyStashedChannelChannelOp(opContents.contents);
510
509
  default:
510
+ (0, internal_1.assert)(false, 0x908 /* unknon type of op */);
511
511
  }
512
- const envelope = opContents.contents;
512
+ }
513
+ async applyStashedChannelChannelOp(envelope) {
513
514
  const context = this.contexts.get(envelope.address);
514
515
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
515
516
  // corruption in case the data store that stashed the op is deleted.
516
517
  if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "applyStashedOp")) {
517
518
  return undefined;
518
519
  }
519
- (0, core_utils_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
520
+ (0, internal_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
520
521
  return context.applyStashedOp(envelope.contents);
521
522
  }
522
523
  async applyStashedAttachOp(message) {
523
- this.pendingAttach.set(message.id, message);
524
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
525
- this.processAttachMessage({ contents: message }, false);
524
+ const { id, snapshot } = message;
525
+ // build the snapshot from the summary in the attach message
526
+ const flatAttachBlobs = new Map();
527
+ const snapshotTree = (0, internal_3.buildSnapshotTree)(snapshot.entries, flatAttachBlobs);
528
+ const storage = new storageServiceWithAttachBlobs_js_1.StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs);
529
+ // create a local datastore context for the data store context,
530
+ // which this message represents. All newly created data store
531
+ // contexts start as a local context on the client that created
532
+ // them, and for stashed ops, the client that applies it plays
533
+ // the role of creating client.
534
+ const dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
535
+ id,
536
+ pkg: undefined,
537
+ parentContext: this.wrapContextForInnerChannel(id),
538
+ storage,
539
+ scope: this.parentContext.scope,
540
+ createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
541
+ type: internal_4.CreateSummarizerNodeSource.FromSummary,
542
+ }),
543
+ makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
544
+ snapshotTree,
545
+ });
546
+ // realize the local context, as local contexts shouldn't be delay
547
+ // loaded, as this client is playing the role of creating client,
548
+ // and creating clients always create realized data store contexts.
549
+ const channel = await dataStoreContext.realize();
550
+ await channel.entryPoint.get();
551
+ // add to the list of bound or remoted, as this context must be bound
552
+ // to had an attach message sent, and is the non-detached case is remoted.
553
+ this.contexts.addBoundOrRemoted(dataStoreContext);
554
+ if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
555
+ // if the client is not detached put in the pending attach list
556
+ // so that on ack of the stashed op, the context is found.
557
+ // detached client don't send ops, so should not expect and ack.
558
+ this.pendingAttach.set(message.id, message);
559
+ }
526
560
  }
527
561
  process(message, local, localMessageMetadata, addedOutboundReference) {
528
562
  switch (message.type) {
@@ -532,59 +566,63 @@ class ChannelCollection {
532
566
  case messageTypes_js_1.ContainerMessageType.Alias:
533
567
  this.processAliasMessage(message, localMessageMetadata, local);
534
568
  return;
535
- case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
569
+ case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp: {
570
+ const envelope = message.contents;
571
+ const innerContents = envelope.contents;
572
+ const transformed = {
573
+ ...message,
574
+ type: innerContents.type,
575
+ contents: innerContents.content,
576
+ };
577
+ this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
578
+ // By default, we use the new behavior of detecting outbound routes here.
579
+ // If this setting is true, then DataStoreContext would be notifying GC instead.
580
+ if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) !== true &&
581
+ addedOutboundReference !== undefined) {
582
+ // Notify GC of any outbound references that were added by this op.
583
+ detectOutboundReferences(envelope.address, transformed.contents, addedOutboundReference);
584
+ }
536
585
  break;
586
+ }
537
587
  default:
538
- (0, core_utils_1.assert)(false, 0x8e9 /* unreached */);
588
+ (0, internal_1.assert)(false, 0x8e9 /* unreached */);
539
589
  }
540
- const envelope = message.contents;
541
- const innerContents = envelope.contents;
542
- const transformed = {
543
- ...message,
544
- type: innerContents.type,
545
- contents: innerContents.content,
546
- };
547
- const context = this.contexts.get(envelope.address);
590
+ }
591
+ processChannelOp(address, message, local, localMessageMetadata) {
592
+ const context = this.contexts.get(address);
548
593
  // If the data store has been deleted, log an error and ignore this message. This helps prevent document
549
594
  // corruption in case a deleted data store accidentally submitted an op.
550
- if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "processFluidDataStoreOp")) {
595
+ if (this.checkAndLogIfDeleted(address, context, "Changed", "processFluidDataStoreOp")) {
551
596
  return;
552
597
  }
553
598
  if (context === undefined) {
554
599
  // Former assert 0x162
555
- throw telemetry_utils_1.DataProcessingError.create("No context for op", "processFluidDataStoreOp", message, {
600
+ throw internal_6.DataProcessingError.create("No context for op", "processFluidDataStoreOp", message, {
556
601
  local,
557
602
  messageDetails: JSON.stringify({
558
603
  type: message.type,
559
604
  contentType: typeof message.contents,
560
605
  }),
561
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ address: envelope.address }),
606
+ ...(0, internal_6.tagCodeArtifacts)({ address }),
562
607
  });
563
608
  }
564
- context.process(transformed, local, localMessageMetadata);
565
- // By default, we use the new behavior of detecting outbound routes here.
566
- // If this setting is true, then DataStoreContext would be notifying GC instead.
567
- if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) !== true &&
568
- addedOutboundReference !== undefined) {
569
- // Notify GC of any outbound references that were added by this op.
570
- detectOutboundReferences(envelope, addedOutboundReference);
571
- }
609
+ context.process(message, local, localMessageMetadata);
572
610
  // Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
573
611
  // being used.
574
- this.gcNodeUpdated(`/${envelope.address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
612
+ this.gcNodeUpdated(`/${address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
575
613
  }
576
614
  async getDataStore(id, requestHeaderData) {
577
615
  const headerData = { ...containerRuntime_js_1.defaultRuntimeHeaderData, ...requestHeaderData };
578
616
  if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStore", requestHeaderData)) {
579
617
  // The requested data store has been deleted by gc. Create a 404 response exception.
580
618
  const request = { url: id };
581
- throw (0, runtime_utils_1.responseToException)((0, runtime_utils_1.createResponseError)(404, "DataStore was deleted", request), request);
619
+ throw (0, internal_5.responseToException)((0, internal_5.createResponseError)(404, "DataStore was deleted", request), request);
582
620
  }
583
621
  const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
584
622
  if (context === undefined) {
585
623
  // The requested data store does not exits. Throw a 404 response exception.
586
624
  const request = { url: id };
587
- throw (0, runtime_utils_1.responseToException)((0, runtime_utils_1.create404Response)(request), request);
625
+ throw (0, internal_5.responseToException)((0, internal_5.create404Response)(request), request);
588
626
  }
589
627
  return context;
590
628
  }
@@ -618,7 +656,7 @@ class ChannelCollection {
618
656
  }
619
657
  this.mc.logger.sendErrorEvent({
620
658
  eventName: `GC_Deleted_DataStore_${deletedLogSuffix}`,
621
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ id }),
659
+ ...(0, internal_6.tagCodeArtifacts)({ id }),
622
660
  callSite,
623
661
  headers: JSON.stringify(requestHeaderData),
624
662
  exists: context !== undefined,
@@ -637,10 +675,10 @@ class ChannelCollection {
637
675
  }
638
676
  if (!context) {
639
677
  // Attach message may not have been processed yet
640
- (0, core_utils_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
678
+ (0, internal_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
641
679
  this.mc.logger.sendTelemetryEvent({
642
680
  eventName: "SignalFluidDataStoreNotFound",
643
- ...(0, telemetry_utils_1.tagCodeArtifacts)({
681
+ ...(0, internal_6.tagCodeArtifacts)({
644
682
  fluidDataStoreId,
645
683
  }),
646
684
  });
@@ -657,7 +695,7 @@ class ChannelCollection {
657
695
  this.mc.logger.sendErrorEvent({
658
696
  eventName: "SetConnectionStateError",
659
697
  clientId,
660
- ...(0, telemetry_utils_1.tagCodeArtifacts)({
698
+ ...(0, internal_6.tagCodeArtifacts)({
661
699
  fluidDataStoreId,
662
700
  }),
663
701
  details: JSON.stringify({
@@ -669,11 +707,10 @@ class ChannelCollection {
669
707
  }
670
708
  }
671
709
  setAttachState(attachState) {
672
- const eventName = attachState === container_definitions_1.AttachState.Attaching ? "attaching" : "attached";
673
710
  for (const [, context] of this.contexts) {
674
711
  // Fire only for bounded stores.
675
712
  if (!this.contexts.isNotBound(context.id)) {
676
- context.emit(eventName);
713
+ context.setAttachState(attachState);
677
714
  }
678
715
  }
679
716
  }
@@ -681,7 +718,7 @@ class ChannelCollection {
681
718
  return this.contexts.size;
682
719
  }
683
720
  async summarize(fullTree, trackState, telemetryContext) {
684
- const summaryBuilder = new runtime_utils_1.SummaryTreeBuilder();
721
+ const summaryBuilder = new internal_5.SummaryTreeBuilder();
685
722
  // Iterate over each store and ask it to snapshot
686
723
  await Promise.all(Array.from(this.contexts)
687
724
  .filter(([_, context]) => {
@@ -690,7 +727,7 @@ class ChannelCollection {
690
727
  // had not yet round tripped back to the client.
691
728
  if (context.attachState === container_definitions_1.AttachState.Attaching) {
692
729
  // Formerly assert 0x588
693
- const error = telemetry_utils_1.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
730
+ const error = internal_6.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
694
731
  throw error;
695
732
  }
696
733
  return context.attachState === container_definitions_1.AttachState.Attached;
@@ -705,7 +742,7 @@ class ChannelCollection {
705
742
  * Create a summary. Used when attaching or serializing a detached container.
706
743
  */
707
744
  getAttachSummary(telemetryContext) {
708
- const builder = new runtime_utils_1.SummaryTreeBuilder();
745
+ const builder = new internal_5.SummaryTreeBuilder();
709
746
  // Attaching graph of some stores can cause other stores to get bound too.
710
747
  // So keep taking summary until no new stores get bound.
711
748
  let notBoundContextsLength;
@@ -730,8 +767,8 @@ class ChannelCollection {
730
767
  else {
731
768
  // If this data store is not yet loaded, then there should be no changes in the snapshot from
732
769
  // which it was created as it is detached container. So just use the previous snapshot.
733
- (0, core_utils_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
734
- dataStoreSummary = (0, runtime_utils_1.convertSnapshotTreeToSummaryTree)(this.baseSnapshot.trees[key]);
770
+ (0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
771
+ dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)(this.baseSnapshot.trees[key]);
735
772
  }
736
773
  builder.addWithStats(key, dataStoreSummary);
737
774
  });
@@ -746,10 +783,10 @@ class ChannelCollection {
746
783
  async updateStateBeforeGC() {
747
784
  for (const id of this.dataStoresSinceLastGC) {
748
785
  const context = this.contexts.get(id);
749
- (0, core_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
786
+ (0, internal_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
750
787
  if (await context.isRoot()) {
751
788
  // A root data store is basically a reference from the container runtime to the data store.
752
- const handle = new datastore_1.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
789
+ const handle = new internal_2.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
753
790
  this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
754
791
  }
755
792
  }
@@ -769,7 +806,7 @@ class ChannelCollection {
769
806
  * @param fullGC - true to bypass optimizations and force full generation of GC data.
770
807
  */
771
808
  async getGCData(fullGC = false) {
772
- const builder = new runtime_utils_1.GCDataBuilder();
809
+ const builder = new internal_5.GCDataBuilder();
773
810
  // Iterate over each store and get their GC data.
774
811
  await Promise.all(Array.from(this.contexts)
775
812
  .filter(([_, context]) => {
@@ -778,7 +815,7 @@ class ChannelCollection {
778
815
  // had not yet round tripped back to the client.
779
816
  // Formerly assert 0x589
780
817
  if (context.attachState === container_definitions_1.AttachState.Attaching) {
781
- const error = telemetry_utils_1.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
818
+ const error = internal_6.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
782
819
  throw error;
783
820
  }
784
821
  return context.attachState === container_definitions_1.AttachState.Attached;
@@ -799,35 +836,24 @@ class ChannelCollection {
799
836
  */
800
837
  updateUsedRoutes(usedRoutes) {
801
838
  // Get a map of data store ids to routes used in it.
802
- const usedDataStoreRoutes = (0, runtime_utils_1.unpackChildNodesUsedRoutes)(usedRoutes);
839
+ const usedDataStoreRoutes = (0, internal_5.unpackChildNodesUsedRoutes)(usedRoutes);
803
840
  // Verify that the used routes are correct.
804
841
  for (const [id] of usedDataStoreRoutes) {
805
- (0, core_utils_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
842
+ (0, internal_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
806
843
  }
807
844
  // Update the used routes in each data store. Used routes is empty for unused data stores.
808
845
  for (const [contextId, context] of this.contexts) {
809
846
  context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);
810
847
  }
811
848
  }
812
- /**
813
- * This is called to update objects whose routes are unused. The unused objects are deleted.
814
- * @param unusedRoutes - The routes that are unused in all data stores in this Container.
815
- */
816
- updateUnusedRoutes(unusedRoutes) {
817
- for (const route of unusedRoutes) {
818
- const pathParts = route.split("/");
819
- // Delete data store only if its route (/datastoreId) is in unusedRoutes. We don't want to delete a data
820
- // store based on its DDS being unused.
821
- if (pathParts.length > 2) {
822
- continue;
823
- }
824
- const dataStoreId = pathParts[1];
825
- (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
826
- // Delete the contexts of unused data stores.
827
- this.contexts.delete(dataStoreId);
828
- // Delete the summarizer node of the unused data stores.
829
- this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
830
- }
849
+ deleteChild(dataStoreId) {
850
+ const dataStoreContext = this.contexts.get(dataStoreId);
851
+ (0, internal_1.assert)(dataStoreContext !== undefined, 0x2d7 /* No data store with specified id */);
852
+ dataStoreContext.delete();
853
+ // Delete the contexts of unused data stores.
854
+ this.contexts.delete(dataStoreId);
855
+ // Delete the summarizer node of the unused data stores.
856
+ this.parentContext.deleteChildSummarizerNode(dataStoreId);
831
857
  }
832
858
  /**
833
859
  * Delete data stores and its objects that are sweep ready.
@@ -854,16 +880,12 @@ class ChannelCollection {
854
880
  this.mc.logger.sendTelemetryEvent({
855
881
  eventName: "DeletedDataStoreNotFound",
856
882
  category: alreadyDeleted ? "generic" : "error",
857
- ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: dataStoreId }),
883
+ ...(0, internal_6.tagCodeArtifacts)({ id: dataStoreId }),
858
884
  details: { alreadyDeleted },
859
885
  });
860
886
  continue;
861
887
  }
862
- dataStoreContext.delete();
863
- // Delete the contexts of sweep ready data stores.
864
- this.contexts.delete(dataStoreId);
865
- // Delete the summarizer node of the sweep ready data stores.
866
- this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
888
+ this.deleteChild(dataStoreId);
867
889
  }
868
890
  return Array.from(sweepReadyDataStoreRoutes);
869
891
  }
@@ -884,7 +906,7 @@ class ChannelCollection {
884
906
  continue;
885
907
  }
886
908
  const dataStoreId = pathParts[1];
887
- (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
909
+ (0, internal_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
888
910
  tombstonedDataStoresSet.add(dataStoreId);
889
911
  }
890
912
  // Update the used routes in each data store. Used routes is empty for unused data stores.
@@ -898,8 +920,9 @@ class ChannelCollection {
898
920
  */
899
921
  async getOutboundRoutes() {
900
922
  const outboundRoutes = [];
923
+ // Getting this information is a performance optimization that reduces network calls for virtualized datastores
901
924
  for (const [contextId, context] of this.contexts) {
902
- const isRootDataStore = await context.isRoot();
925
+ const isRootDataStore = await context.isRoot(this.aliasedDataStores);
903
926
  if (isRootDataStore) {
904
927
  outboundRoutes.push(`/${contextId}`);
905
928
  }
@@ -935,7 +958,7 @@ class ChannelCollection {
935
958
  return this.aliases.get(maybeAlias) ?? maybeAlias;
936
959
  }
937
960
  async request(request) {
938
- const requestParser = runtime_utils_1.RequestParser.create(request);
961
+ const requestParser = internal_5.RequestParser.create(request);
939
962
  const id = requestParser.pathParts[0];
940
963
  // Differentiate between requesting the dataStore directly, or one of its children
941
964
  const requestForChild = !requestParser.isLeaf(1);
@@ -971,7 +994,7 @@ class ChannelCollection {
971
994
  const subRequest = requestParser.createSubRequest(1);
972
995
  // We always expect createSubRequest to include a leading slash, but asserting here to protect against
973
996
  // unintentionally modifying the url if that changes.
974
- (0, core_utils_1.assert)(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
997
+ (0, internal_1.assert)(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
975
998
  return dataStore.request(subRequest);
976
999
  }
977
1000
  }
@@ -981,8 +1004,8 @@ function getSummaryForDatastores(snapshot, metadata) {
981
1004
  return undefined;
982
1005
  }
983
1006
  if ((0, index_js_2.rootHasIsolatedChannels)(metadata)) {
984
- const datastoresSnapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
985
- (0, core_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
1007
+ const datastoresSnapshot = snapshot.trees[internal_4.channelsTreeName];
1008
+ (0, internal_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
986
1009
  return datastoresSnapshot;
987
1010
  }
988
1011
  else {
@@ -1005,7 +1028,7 @@ exports.getSummaryForDatastores = getSummaryForDatastores;
1005
1028
  *
1006
1029
  * @internal
1007
1030
  */
1008
- function detectOutboundReferences(envelope, addedOutboundReference) {
1031
+ function detectOutboundReferences(address, contents, addedOutboundReference) {
1009
1032
  // These will be built up as we traverse the envelope contents
1010
1033
  const outboundPaths = [];
1011
1034
  let ddsAddress;
@@ -1013,7 +1036,7 @@ function detectOutboundReferences(envelope, addedOutboundReference) {
1013
1036
  if (typeof obj === "object" && obj !== null) {
1014
1037
  for (const [key, value] of Object.entries(obj)) {
1015
1038
  // If 'value' is a serialized IFluidHandle, it represents a new outbound route.
1016
- if ((0, runtime_utils_1.isSerializedHandle)(value)) {
1039
+ if ((0, internal_5.isSerializedHandle)(value)) {
1017
1040
  outboundPaths.push(value.url);
1018
1041
  }
1019
1042
  // NOTE: This is taking a hard dependency on the fact that in our DataStore implementation,
@@ -1026,10 +1049,10 @@ function detectOutboundReferences(envelope, addedOutboundReference) {
1026
1049
  }
1027
1050
  }
1028
1051
  }
1029
- recursivelyFindHandles(envelope.contents);
1052
+ recursivelyFindHandles(contents);
1030
1053
  // GC node paths are all absolute paths, hence the "" prefix.
1031
1054
  // e.g. this will yield "/dataStoreId/ddsId"
1032
- const fromPath = ["", envelope.address, ddsAddress].join("/");
1055
+ const fromPath = ["", address, ddsAddress].join("/");
1033
1056
  outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));
1034
1057
  }
1035
1058
  exports.detectOutboundReferences = detectOutboundReferences;
@@ -1037,8 +1060,9 @@ exports.detectOutboundReferences = detectOutboundReferences;
1037
1060
  class ChannelCollectionFactory {
1038
1061
  constructor(registryEntries,
1039
1062
  // ADO:7302 We need a better type here
1040
- provideEntryPoint) {
1063
+ provideEntryPoint, ctor) {
1041
1064
  this.provideEntryPoint = provideEntryPoint;
1065
+ this.ctor = ctor;
1042
1066
  this.type = "ChannelCollectionChannel";
1043
1067
  this.IFluidDataStoreRegistry = new dataStoreRegistry_js_1.FluidDataStoreRegistry(registryEntries);
1044
1068
  }
@@ -1046,7 +1070,7 @@ class ChannelCollectionFactory {
1046
1070
  return this;
1047
1071
  }
1048
1072
  async instantiateDataStore(context, _existing) {
1049
- const runtime = new ChannelCollection(context.baseSnapshot, context, // parentContext
1073
+ const runtime = this.ctor(context.baseSnapshot, context, // parentContext
1050
1074
  context.logger, () => { }, // gcNodeUpdated
1051
1075
  (_nodePath) => false, // isDataStoreDeleted
1052
1076
  new Map(), // aliasMap