@fluidframework/container-runtime 2.0.0-rc.2.0.2 → 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 +155 -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 +169 -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 +96 -106
  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 +107 -52
  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 +180 -165
  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 +195 -93
  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
package/src/dataStore.ts CHANGED
@@ -3,15 +3,17 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLoggerExt, TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils";
7
- import { assert, unreachableCase } from "@fluidframework/core-utils";
8
6
  import { AttachState } from "@fluidframework/container-definitions";
9
7
  import { FluidObject, IFluidHandle } from "@fluidframework/core-interfaces";
8
+ import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
10
9
  import {
11
10
  AliasResult,
12
11
  IDataStore,
13
12
  IFluidDataStoreChannel,
14
- } from "@fluidframework/runtime-definitions";
13
+ } from "@fluidframework/runtime-definitions/internal";
14
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
15
+ import { TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils/internal";
16
+
15
17
  import { ChannelCollection } from "./channelCollection.js";
16
18
  import { ContainerMessageType } from "./messageTypes.js";
17
19
 
@@ -115,7 +117,10 @@ class DataStore implements IDataStore {
115
117
  this.fluidDataStoreChannel.makeVisibleAndAttachGraph();
116
118
 
117
119
  if (this.parentContext.attachState === AttachState.Detached) {
118
- const localResult = this.channelCollection.processAliasMessageCore(message);
120
+ const localResult = this.channelCollection.processAliasMessageCore(
121
+ this.internalId,
122
+ alias,
123
+ );
119
124
  // Explicitly lock-out future attempts of aliasing,
120
125
  // regardless of result
121
126
  this.aliasState = AliasState.Aliased;
@@ -3,19 +3,20 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
+ import { AttachState, IAudience, IDeltaManager } from "@fluidframework/container-definitions";
6
8
  import {
7
- IDisposable,
8
9
  FluidObject,
10
+ IDisposable,
11
+ IEvent,
12
+ IFluidHandle,
9
13
  IRequest,
10
14
  IResponse,
11
- IFluidHandle,
12
15
  ITelemetryBaseProperties,
13
16
  } from "@fluidframework/core-interfaces";
14
- import { IAudience, IDeltaManager, AttachState } from "@fluidframework/container-definitions";
15
- import { TypedEventEmitter } from "@fluid-internal/client-utils";
16
- import { assert, LazyPromise } from "@fluidframework/core-utils";
17
- import { IDocumentStorageService } from "@fluidframework/driver-definitions";
18
- import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
17
+ import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils/internal";
18
+ import { IDocumentStorageService } from "@fluidframework/driver-definitions/internal";
19
+ import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils/internal";
19
20
  import type { IIdCompressor } from "@fluidframework/id-compressor";
20
21
  import {
21
22
  IClientDetails,
@@ -26,53 +27,55 @@ import {
26
27
  ITreeEntry,
27
28
  } from "@fluidframework/protocol-definitions";
28
29
  import {
29
- channelsTreeName,
30
+ IGarbageCollectionData,
31
+ IInboundSignalMessage,
32
+ ISummaryTreeWithStats,
33
+ ITelemetryContext,
34
+ } from "@fluidframework/runtime-definitions";
35
+ import {
30
36
  CreateChildSummarizerNodeFn,
31
37
  CreateChildSummarizerNodeParam,
32
38
  FluidDataStoreRegistryEntry,
39
+ IContainerRuntimeBase,
40
+ IDataStore,
33
41
  IFluidDataStoreChannel,
34
42
  IFluidDataStoreContext,
35
- IFluidParentContext,
36
- IContainerRuntimeBase,
37
43
  IFluidDataStoreContextDetached,
38
- IFluidDataStoreContextEvents,
39
44
  IFluidDataStoreRegistry,
40
- IGarbageCollectionData,
45
+ IFluidParentContext,
41
46
  IGarbageCollectionDetailsBase,
42
- IInboundSignalMessage,
43
47
  IProvideFluidDataStoreFactory,
44
48
  ISummarizeInternalResult,
45
49
  ISummarizeResult,
46
50
  ISummarizerNodeWithGC,
47
51
  SummarizeInternalFn,
48
- ITelemetryContext,
49
- ISummaryTreeWithStats,
50
- IDataStore,
52
+ channelsTreeName,
51
53
  gcDataBlobKey,
52
- } from "@fluidframework/runtime-definitions";
53
- import { addBlobToSummary } from "@fluidframework/runtime-utils";
54
+ } from "@fluidframework/runtime-definitions/internal";
55
+ import { addBlobToSummary } from "@fluidframework/runtime-utils/internal";
54
56
  import {
55
- createChildMonitoringContext,
56
57
  DataCorruptionError,
57
58
  DataProcessingError,
58
- extractSafePropertiesFromMessage,
59
- generateStack,
60
59
  LoggingError,
61
60
  MonitoringContext,
62
- tagCodeArtifacts,
63
61
  ThresholdCounter,
64
- } from "@fluidframework/telemetry-utils";
62
+ createChildMonitoringContext,
63
+ extractSafePropertiesFromMessage,
64
+ generateStack,
65
+ tagCodeArtifacts,
66
+ } from "@fluidframework/telemetry-utils/internal";
67
+
68
+ import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
65
69
  import {
66
- dataStoreAttributesBlobName,
67
- hasIsolatedChannels,
68
- wrapSummaryInChannelsTree,
69
70
  ReadFluidDataStoreAttributes,
70
71
  WriteFluidDataStoreAttributes,
72
+ dataStoreAttributesBlobName,
71
73
  getAttributesFormatVersion,
72
74
  getFluidDataStoreAttributes,
75
+ hasIsolatedChannels,
73
76
  summarizerClientType,
77
+ wrapSummaryInChannelsTree,
74
78
  } from "./summary/index.js";
75
- import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
76
79
 
77
80
  function createAttributes(
78
81
  pkg: readonly string[],
@@ -90,14 +93,40 @@ export function createAttributesBlob(pkg: readonly string[], isRootDataStore: bo
90
93
  return new BlobTreeEntry(dataStoreAttributesBlobName, JSON.stringify(attributes));
91
94
  }
92
95
 
93
- interface ISnapshotDetails {
96
+ /** @internal */
97
+ export interface ISnapshotDetails {
94
98
  pkg: readonly string[];
95
99
  isRootDataStore: boolean;
96
100
  snapshot?: ISnapshotTree;
97
101
  sequenceNumber?: number;
98
102
  }
99
103
 
100
- /** Properties necessary for creating a FluidDataStoreContext */
104
+ /**
105
+ * This is interface that every context should implement.
106
+ * This interface is used for context's parent - ChannelCollection.
107
+ * It should not be exposed to any other users of context.
108
+ * @internal
109
+ */
110
+ export interface IFluidDataStoreContextInternal extends IFluidDataStoreContext {
111
+ getAttachData(
112
+ includeGCData: boolean,
113
+ telemetryContext?: ITelemetryContext,
114
+ ): {
115
+ attachSummary: ISummaryTreeWithStats;
116
+ type: string;
117
+ };
118
+
119
+ getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
120
+
121
+ realize(): Promise<IFluidDataStoreChannel>;
122
+
123
+ isRoot(): Promise<boolean>;
124
+ }
125
+
126
+ /**
127
+ * Properties necessary for creating a FluidDataStoreContext
128
+ * @internal
129
+ */
101
130
  export interface IFluidDataStoreContextProps {
102
131
  readonly id: string;
103
132
  readonly parentContext: IFluidParentContext;
@@ -108,11 +137,13 @@ export interface IFluidDataStoreContextProps {
108
137
  readonly loadingGroupId?: string;
109
138
  }
110
139
 
111
- /** Properties necessary for creating a local FluidDataStoreContext */
140
+ /**
141
+ * Properties necessary for creating a local FluidDataStoreContext
142
+ * @internal
143
+ */
112
144
  export interface ILocalFluidDataStoreContextProps extends IFluidDataStoreContextProps {
113
145
  readonly pkg: Readonly<string[]> | undefined;
114
146
  readonly snapshotTree: ISnapshotTree | undefined;
115
- readonly isRootDataStore: boolean | undefined;
116
147
  readonly makeLocallyVisibleFn: () => void;
117
148
  /**
118
149
  * @deprecated 0.16 Issue #1635, #3631
@@ -120,22 +151,36 @@ export interface ILocalFluidDataStoreContextProps extends IFluidDataStoreContext
120
151
  readonly createProps?: any;
121
152
  }
122
153
 
123
- /** Properties necessary for creating a local FluidDataStoreContext */
154
+ /**
155
+ * Properties necessary for creating a local FluidDataStoreContext
156
+ * @internal
157
+ */
124
158
  export interface ILocalDetachedFluidDataStoreContextProps extends ILocalFluidDataStoreContextProps {
125
159
  readonly channelToDataStoreFn: (channel: IFluidDataStoreChannel) => IDataStore;
126
160
  }
127
161
 
128
- /** Properties necessary for creating a remote FluidDataStoreContext */
162
+ /**
163
+ * Properties necessary for creating a remote FluidDataStoreContext
164
+ * @internal
165
+ */
129
166
  export interface IRemoteFluidDataStoreContextProps extends IFluidDataStoreContextProps {
130
167
  readonly snapshotTree: ISnapshotTree | undefined;
131
168
  }
132
169
 
170
+ // back-compat: To be removed in the future.
171
+ // Added in "2.0.0-rc.2.0.0" timeframe (to support older builds).
172
+ /** @internal */
173
+ export interface IFluidDataStoreContextEvents extends IEvent {
174
+ (event: "attaching" | "attached", listener: () => void);
175
+ }
176
+
133
177
  /**
134
178
  * Represents the context for the store. This context is passed to the store runtime.
179
+ * @internal
135
180
  */
136
181
  export abstract class FluidDataStoreContext
137
182
  extends TypedEventEmitter<IFluidDataStoreContextEvents>
138
- implements IFluidDataStoreContext, IFluidParentContext, IDisposable
183
+ implements IFluidDataStoreContextInternal, IFluidParentContext, IDisposable
139
184
  {
140
185
  public get packagePath(): readonly string[] {
141
186
  assert(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
@@ -208,17 +253,13 @@ export abstract class FluidDataStoreContext
208
253
  public readonly gcTombstoneEnforcementAllowed: boolean;
209
254
 
210
255
  /** If true, this means that this data store context and its children have been removed from the runtime */
211
- private deleted: boolean = false;
256
+ protected deleted: boolean = false;
212
257
 
213
258
  public get attachState(): AttachState {
214
259
  return this._attachState;
215
260
  }
216
261
 
217
262
  public get IFluidDataStoreRegistry(): IFluidDataStoreRegistry | undefined {
218
- assert(
219
- this.channel !== undefined,
220
- 0x8f3 /* This should be called after the channel is created, when the registry is populated */,
221
- );
222
263
  return this.registry;
223
264
  }
224
265
 
@@ -230,8 +271,20 @@ export abstract class FluidDataStoreContext
230
271
  * 2. is root as part of the base snapshot that the datastore loaded from
231
272
  * @returns whether a datastore is root
232
273
  */
233
- public async isRoot(): Promise<boolean> {
234
- return this.isInMemoryRoot() || (await this.getInitialSnapshotDetails()).isRootDataStore;
274
+ public async isRoot(aliasedDataStores?: Set<string>): Promise<boolean> {
275
+ if (this.isInMemoryRoot()) {
276
+ return true;
277
+ }
278
+
279
+ // This if is a performance optimization.
280
+ // We know that if the base snapshot is omitted, then the isRootDataStore flag is not set.
281
+ // That means we can skip the expensive call to getInitialSnapshotDetails for virtualized datastores,
282
+ // and get the information from the alias map directly.
283
+ if (aliasedDataStores !== undefined && this.baseSnapshot?.omitted === true) {
284
+ return aliasedDataStores.has(this.id);
285
+ }
286
+
287
+ return (await this.getInitialSnapshotDetails()).isRootDataStore;
235
288
  }
236
289
 
237
290
  /**
@@ -375,6 +428,8 @@ export abstract class FluidDataStoreContext
375
428
  this._tombstoned = tombstone;
376
429
  }
377
430
 
431
+ public abstract setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
432
+
378
433
  private rejectDeferredRealize(
379
434
  reason: string,
380
435
  failedPkgPath?: string,
@@ -759,10 +814,10 @@ export abstract class FluidDataStoreContext
759
814
  /**
760
815
  * Submits the signal to be sent to other clients.
761
816
  * @param type - Type of the signal.
762
- * @param content - Content of the signal.
817
+ * @param content - Content of the signal. Should be a JSON serializable object or primitive.
763
818
  * @param targetClientId - When specified, the signal is only sent to the provided client id.
764
819
  */
765
- public submitSignal(type: string, content: any, targetClientId?: string) {
820
+ public submitSignal(type: string, content: unknown, targetClientId?: string) {
766
821
  this.verifyNotClosed("submitSignal");
767
822
 
768
823
  assert(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
@@ -778,6 +833,48 @@ export abstract class FluidDataStoreContext
778
833
  this.makeLocallyVisibleFn();
779
834
  }
780
835
 
836
+ protected processPendingOps(channel: IFluidDataStoreChannel) {
837
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
838
+ const pending = this.pending!;
839
+
840
+ // Apply all pending ops
841
+ for (const op of pending) {
842
+ // Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
843
+ const seqNumber = this.baseSnapshotSequenceNumber ?? -1;
844
+ if (op.sequenceNumber > seqNumber) {
845
+ channel.process(op, false, undefined /* localOpMetadata */);
846
+ }
847
+ }
848
+ this.pending = undefined;
849
+
850
+ this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
851
+ }
852
+
853
+ protected completeBindingRuntime(channel: IFluidDataStoreChannel) {
854
+ // And now mark the runtime active
855
+ this.loaded = true;
856
+ this.channel = channel;
857
+
858
+ // Channel does not know when it's "live" (as in - starts to receive events in the system)
859
+ // It may read current state of the system when channel was created, but it was not getting any updates
860
+ // through creation process and could have missed events. So update it on current state.
861
+ // Once this.loaded is set (above), it will stat receiving events.
862
+ channel.setConnectionState(this.connected, this.clientId);
863
+
864
+ // Freeze the package path to ensure that someone doesn't modify it when it is
865
+ // returned in packagePath().
866
+ Object.freeze(this.pkg);
867
+
868
+ /**
869
+ * Update the used routes of the channel. If GC has run before this data store was realized, we will have
870
+ * the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
871
+ * per the last time GC was run.
872
+ * Also, this data store may have been realized during summarize. In that case, the child contexts need to
873
+ * have their used routes updated to determine if its needs to summarize again and to add it to the summary.
874
+ */
875
+ this.updateChannelUsedRoutes();
876
+ }
877
+
781
878
  protected async bindRuntime(channel: IFluidDataStoreChannel, existing: boolean) {
782
879
  if (this.channel) {
783
880
  throw new Error("Runtime already bound");
@@ -789,23 +886,7 @@ export abstract class FluidDataStoreContext
789
886
  );
790
887
  assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
791
888
 
792
- if (existing) {
793
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
794
- const pending = this.pending!;
795
-
796
- // Apply all pending ops
797
- for (const op of pending) {
798
- // Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
799
- const seqNumber = this.baseSnapshotSequenceNumber ?? -1;
800
- if (op.sequenceNumber > seqNumber) {
801
- channel.process(op, false, undefined /* localOpMetadata */);
802
- }
803
- }
804
-
805
- this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
806
- } else {
807
- assert(this.pending?.length === 0, 0x8f4 /* no pending ops */);
808
-
889
+ if (!existing) {
809
890
  // Execute data store's entry point to make sure that for a local (aka detached from container) data store, the
810
891
  // entryPoint initialization function is called before the data store gets attached and potentially connected to
811
892
  // the delta stream, so it gets a chance to do things while the data store is still "purely local".
@@ -815,24 +896,9 @@ export abstract class FluidDataStoreContext
815
896
  // before the data store is attached.
816
897
  await channel.entryPoint.get();
817
898
  }
818
- this.pending = undefined;
819
-
820
- // And now mark the runtime active
821
- this.loaded = true;
822
- this.channel = channel;
823
-
824
- // Freeze the package path to ensure that someone doesn't modify it when it is
825
- // returned in packagePath().
826
- Object.freeze(this.pkg);
827
899
 
828
- /**
829
- * Update the used routes of the channel. If GC has run before this data store was realized, we will have
830
- * the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
831
- * per the last time GC was run.
832
- * Also, this data store may have been realized during summarize. In that case, the child contexts need to
833
- * have their used routes updated to determine if its needs to summarize again and to add it to the summary.
834
- */
835
- this.updateChannelUsedRoutes();
900
+ this.processPendingOps(channel);
901
+ this.completeBindingRuntime(channel);
836
902
  }
837
903
 
838
904
  public async getAbsoluteUrl(relativeUrl: string): Promise<string | undefined> {
@@ -992,6 +1058,7 @@ export abstract class FluidDataStoreContext
992
1058
  }
993
1059
  }
994
1060
 
1061
+ /** @internal */
995
1062
  export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
996
1063
  // Tells whether we need to fetch the snapshot before use. This is to support Data Virtualization.
997
1064
  private snapshotFetchRequired: boolean;
@@ -1010,6 +1077,18 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
1010
1077
  }
1011
1078
  }
1012
1079
 
1080
+ /*
1081
+ This API should not be called for RemoteFluidDataStoreContext. But here is one scenario where it's not the case:
1082
+ The scenario (hit by stashedOps.spec.ts, "resends attach op" UT is the following (as far as I understand):
1083
+ 1. data store is being attached in attached container
1084
+ 2. container state is serialized (stashed ops feature)
1085
+ 3. new container instance is rehydrated (from stashed ops)
1086
+ - As result, we create RemoteFluidDataStoreContext for this data store that is actually in "attaching" state (as of # 2).
1087
+ But its state is set to attached when loading container from stashed ops
1088
+ 4. attach op for this data store is processed - setAttachState() is called.
1089
+ */
1090
+ public setAttachState(attachState: AttachState.Attaching | AttachState.Attached) {}
1091
+
1013
1092
  private readonly initialSnapshotDetailsP = new LazyPromise<ISnapshotDetails>(async () => {
1014
1093
  // Sequence number of the snapshot.
1015
1094
  let sequenceNumber: number | undefined;
@@ -1092,6 +1171,7 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
1092
1171
 
1093
1172
  /**
1094
1173
  * Base class for detached & attached context classes
1174
+ * @internal
1095
1175
  */
1096
1176
  export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1097
1177
  private readonly snapshotTree: ISnapshotTree | undefined;
@@ -1103,7 +1183,7 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1103
1183
  constructor(props: ILocalFluidDataStoreContextProps) {
1104
1184
  super(
1105
1185
  props,
1106
- props.snapshotTree !== undefined ? true : false /* existing */,
1186
+ props.snapshotTree !== undefined /* existing */,
1107
1187
  true /* isLocalDataStore */,
1108
1188
  props.makeLocallyVisibleFn,
1109
1189
  );
@@ -1112,29 +1192,50 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1112
1192
  this.identifyLocalChangeInSummarizer("DataStoreCreatedInSummarizer");
1113
1193
 
1114
1194
  this.snapshotTree = props.snapshotTree;
1115
- if (props.isRootDataStore === true) {
1116
- this.setInMemoryRoot();
1117
- }
1118
1195
  this.createProps = props.createProps;
1119
- this.attachListeners();
1120
1196
  }
1121
1197
 
1122
- private attachListeners(): void {
1123
- if (this.attachState !== AttachState.Attached) {
1124
- this.once("attaching", () => {
1198
+ public setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void {
1199
+ switch (attachState) {
1200
+ case AttachState.Attaching:
1125
1201
  assert(
1126
1202
  this.attachState === AttachState.Detached,
1127
1203
  0x14d /* "Should move from detached to attaching" */,
1128
1204
  );
1129
1205
  this._attachState = AttachState.Attaching;
1130
- });
1131
- this.once("attached", () => {
1132
- assert(
1133
- this.attachState === AttachState.Attaching,
1134
- 0x14e /* "Should move from attaching to attached" */,
1135
- );
1136
- this._attachState = AttachState.Attached;
1137
- });
1206
+ if (this.channel?.setAttachState) {
1207
+ this.channel.setAttachState(attachState);
1208
+ } else if (this.channel) {
1209
+ // back-compat! To be removed in the future
1210
+ // Added in "2.0.0-rc.2.0.0" timeframe.
1211
+ this.emit("attaching");
1212
+ }
1213
+ break;
1214
+ case AttachState.Attached:
1215
+ // We can get called into here twice, as result of both container and data store being attached, if
1216
+ // those processes overlapped, for example, in a flow like that one:
1217
+ // 1. Container attach started
1218
+ // 2. data store attachment started
1219
+ // 3. container attached
1220
+ // 4. data store attached.
1221
+ if (this.attachState !== AttachState.Attached) {
1222
+ assert(
1223
+ this.attachState === AttachState.Attaching,
1224
+ 0x14e /* "Should move from attaching to attached" */,
1225
+ );
1226
+ this._attachState = AttachState.Attached;
1227
+ this.channel?.setAttachState?.(attachState);
1228
+ if (this.channel?.setAttachState) {
1229
+ this.channel.setAttachState(attachState);
1230
+ } else if (this.channel) {
1231
+ // back-compat! To be removed in the future
1232
+ // Added in "2.0.0-rc.2.0.0" timeframe.
1233
+ this.emit("attached");
1234
+ }
1235
+ }
1236
+ break;
1237
+ default:
1238
+ unreachableCase(attachState, "unreached");
1138
1239
  }
1139
1240
  }
1140
1241
 
@@ -1250,6 +1351,7 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1250
1351
  * Various workflows (snapshot creation, requests) result in .realize() being called
1251
1352
  * on context, resulting in instantiation and attachment of runtime.
1252
1353
  * Runtime is created using data store factory that is associated with this context.
1354
+ * @internal
1253
1355
  */
1254
1356
  export class LocalFluidDataStoreContext extends LocalFluidDataStoreContextBase {
1255
1357
  constructor(props: ILocalFluidDataStoreContextProps) {
@@ -3,11 +3,14 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
7
6
  import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { createChildLogger, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
+ import { assert, Deferred, Lazy } from "@fluidframework/core-utils/internal";
8
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
9
+ import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
10
+
9
11
  import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext.js";
10
12
 
13
+ /** @internal */
11
14
  export class DataStoreContexts implements Iterable<[string, FluidDataStoreContext]>, IDisposable {
12
15
  private readonly notBoundContexts = new Set<string>();
13
16
 
@@ -2,12 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { UsageError } from "@fluidframework/telemetry-utils";
5
+
6
6
  import {
7
7
  FluidDataStoreRegistryEntry,
8
8
  IFluidDataStoreRegistry,
9
9
  NamedFluidDataStoreRegistryEntries,
10
- } from "@fluidframework/runtime-definitions";
10
+ } from "@fluidframework/runtime-definitions/internal";
11
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
11
12
 
12
13
  /**
13
14
  * @internal
@@ -139,7 +139,7 @@ export class DeltaManagerSummarizerProxy
139
139
  this.deltaManager.off("readonly", this.onReadonly);
140
140
  }
141
141
 
142
- public submitSignal(content: any, targetClientId?: string): void {
142
+ public submitSignal(content: string, targetClientId?: string): void {
143
143
  return this.deltaManager.submitSignal(content, targetClientId);
144
144
  }
145
145
 
@@ -3,10 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils";
7
6
  import { performance } from "@fluid-internal/client-utils";
8
7
  import { IDeltaManager } from "@fluidframework/container-definitions";
9
8
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
9
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
10
+ import { formatTick } from "@fluidframework/telemetry-utils/internal";
10
11
 
11
12
  /**
12
13
  * DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there
package/src/error.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ContainerErrorTypes } from "@fluidframework/container-definitions";
7
- import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils";
6
+ import { ContainerErrorTypes } from "@fluidframework/container-definitions/internal";
7
+ import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  /**
10
10
  * Error indicating that a client's session has reached its time limit and is closed.
@@ -3,25 +3,25 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
7
6
  import { IRequest } from "@fluidframework/core-interfaces";
7
+ import { assert, LazyPromise, Timer } from "@fluidframework/core-utils/internal";
8
+ import { IGarbageCollectionData, ITelemetryContext } from "@fluidframework/runtime-definitions";
8
9
  import {
9
- gcTreeKey,
10
- IGarbageCollectionData,
11
10
  IGarbageCollectionDetailsBase,
12
11
  ISummarizeResult,
13
- ITelemetryContext,
14
- } from "@fluidframework/runtime-definitions";
15
- import { createResponseError, responseToException } from "@fluidframework/runtime-utils";
12
+ gcTreeKey,
13
+ } from "@fluidframework/runtime-definitions/internal";
14
+ import { createResponseError, responseToException } from "@fluidframework/runtime-utils/internal";
15
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
16
16
  import {
17
- createChildLogger,
18
- createChildMonitoringContext,
19
17
  DataProcessingError,
20
- ITelemetryLoggerExt,
21
18
  MonitoringContext,
22
19
  PerformanceEvent,
20
+ createChildLogger,
21
+ createChildMonitoringContext,
23
22
  tagCodeArtifacts,
24
- } from "@fluidframework/telemetry-utils";
23
+ } from "@fluidframework/telemetry-utils/internal";
24
+
25
25
  import { BlobManager } from "../blobManager.js";
26
26
  import {
27
27
  InactiveResponseHeaderKey,
@@ -31,21 +31,22 @@ import {
31
31
  import { ClientSessionExpiredError } from "../error.js";
32
32
  import { ContainerMessageType, ContainerRuntimeGCMessage } from "../messageTypes.js";
33
33
  import { IRefreshSummaryResult } from "../summary/index.js";
34
+
34
35
  import { generateGCConfigs } from "./gcConfigs.js";
35
36
  import {
36
37
  GCNodeType,
37
- IGarbageCollector,
38
- IGarbageCollectorCreateParams,
39
- IGarbageCollectionRuntime,
38
+ GarbageCollectionMessage,
39
+ GarbageCollectionMessageType,
40
+ IGCMetadata,
40
41
  IGCResult,
41
42
  IGCStats,
42
- UnreferencedState,
43
- IGCMetadata,
43
+ IGarbageCollectionRuntime,
44
+ IGarbageCollector,
44
45
  IGarbageCollectorConfigs,
46
+ IGarbageCollectorCreateParams,
45
47
  IMarkPhaseStats,
46
48
  ISweepPhaseStats,
47
- GarbageCollectionMessage,
48
- GarbageCollectionMessageType,
49
+ UnreferencedState,
49
50
  disableAutoRecoveryKey,
50
51
  } from "./gcDefinitions.js";
51
52
  import {
@@ -57,11 +58,11 @@ import {
57
58
  import { runGarbageCollection } from "./gcReferenceGraphAlgorithm.js";
58
59
  import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
59
60
  import { GCSummaryStateTracker } from "./gcSummaryStateTracker.js";
61
+ import { GCTelemetryTracker } from "./gcTelemetry.js";
60
62
  import {
61
63
  UnreferencedStateTracker,
62
64
  UnreferencedStateTrackerMap,
63
65
  } from "./gcUnreferencedStateTracker.js";
64
- import { GCTelemetryTracker } from "./gcTelemetry.js";
65
66
 
66
67
  /**
67
68
  * The garbage collector for the container runtime. It consolidates the garbage collection functionality and maintains
@@ -684,8 +685,8 @@ export class GarbageCollector implements IGarbageCollector {
684
685
  */
685
686
 
686
687
  if (this.configs.testMode) {
687
- // If we are running in GC test mode, unreferenced nodes (gcResult.deletedNodeIds) are deleted.
688
- this.runtime.updateUnusedRoutes(gcResult.deletedNodeIds);
688
+ // If we are running in GC test mode, unreferenced nodes (gcResult.deletedNodeIds) are deleted immediately.
689
+ this.runtime.deleteSweepReadyNodes(gcResult.deletedNodeIds);
689
690
  return;
690
691
  }
691
692