@fluidframework/container-runtime 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.225277

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 (705) hide show
  1. package/.eslintrc.js +19 -29
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +427 -0
  4. package/README.md +69 -0
  5. package/api-extractor-esm.json +4 -0
  6. package/api-extractor-lint.json +4 -0
  7. package/api-extractor.json +2 -2
  8. package/api-report/container-runtime.api.md +863 -0
  9. package/dist/{batchTracker.js → batchTracker.cjs} +9 -8
  10. package/dist/batchTracker.cjs.map +1 -0
  11. package/dist/batchTracker.d.ts +6 -5
  12. package/dist/batchTracker.d.ts.map +1 -1
  13. package/dist/blobManager.cjs +709 -0
  14. package/dist/blobManager.cjs.map +1 -0
  15. package/dist/blobManager.d.ts +140 -39
  16. package/dist/blobManager.d.ts.map +1 -1
  17. package/dist/connectionTelemetry.cjs +230 -0
  18. package/dist/connectionTelemetry.cjs.map +1 -0
  19. package/dist/connectionTelemetry.d.ts +2 -2
  20. package/dist/connectionTelemetry.d.ts.map +1 -1
  21. package/dist/container-runtime-alpha.d.ts +1690 -0
  22. package/dist/container-runtime-beta.d.ts +250 -0
  23. package/dist/container-runtime-public.d.ts +250 -0
  24. package/dist/container-runtime-untrimmed.d.ts +1805 -0
  25. package/dist/{containerHandleContext.js → containerHandleContext.cjs} +4 -2
  26. package/dist/containerHandleContext.cjs.map +1 -0
  27. package/dist/containerHandleContext.d.ts.map +1 -1
  28. package/dist/containerRuntime.cjs +2535 -0
  29. package/dist/containerRuntime.cjs.map +1 -0
  30. package/dist/containerRuntime.d.ts +458 -256
  31. package/dist/containerRuntime.d.ts.map +1 -1
  32. package/dist/{dataStore.js → dataStore.cjs} +54 -45
  33. package/dist/dataStore.cjs.map +1 -0
  34. package/dist/dataStore.d.ts +2 -2
  35. package/dist/dataStore.d.ts.map +1 -1
  36. package/dist/{dataStoreContext.js → dataStoreContext.cjs} +343 -247
  37. package/dist/dataStoreContext.cjs.map +1 -0
  38. package/dist/dataStoreContext.d.ts +73 -41
  39. package/dist/dataStoreContext.d.ts.map +1 -1
  40. package/dist/{dataStoreContexts.js → dataStoreContexts.cjs} +19 -15
  41. package/dist/dataStoreContexts.cjs.map +1 -0
  42. package/dist/dataStoreContexts.d.ts +1 -1
  43. package/dist/dataStoreContexts.d.ts.map +1 -1
  44. package/dist/{dataStoreRegistry.js → dataStoreRegistry.cjs} +9 -4
  45. package/dist/dataStoreRegistry.cjs.map +1 -0
  46. package/dist/dataStoreRegistry.d.ts +3 -0
  47. package/dist/dataStoreRegistry.d.ts.map +1 -1
  48. package/dist/{dataStores.js → dataStores.cjs} +276 -124
  49. package/dist/dataStores.cjs.map +1 -0
  50. package/dist/dataStores.d.ts +56 -23
  51. package/dist/dataStores.d.ts.map +1 -1
  52. package/dist/deltaManagerProxyBase.cjs +77 -0
  53. package/dist/deltaManagerProxyBase.cjs.map +1 -0
  54. package/dist/deltaManagerProxyBase.d.ts +35 -0
  55. package/dist/deltaManagerProxyBase.d.ts.map +1 -0
  56. package/dist/deltaManagerSummarizerProxy.cjs +42 -0
  57. package/dist/deltaManagerSummarizerProxy.cjs.map +1 -0
  58. package/dist/deltaManagerSummarizerProxy.d.ts +19 -0
  59. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -0
  60. package/dist/{deltaScheduler.js → deltaScheduler.cjs} +25 -18
  61. package/dist/deltaScheduler.cjs.map +1 -0
  62. package/dist/deltaScheduler.d.ts +8 -6
  63. package/dist/deltaScheduler.d.ts.map +1 -1
  64. package/dist/error.cjs +21 -0
  65. package/dist/error.cjs.map +1 -0
  66. package/dist/error.d.ts +14 -0
  67. package/dist/error.d.ts.map +1 -0
  68. package/dist/gc/garbageCollection.cjs +865 -0
  69. package/dist/gc/garbageCollection.cjs.map +1 -0
  70. package/dist/gc/garbageCollection.d.ts +224 -0
  71. package/dist/gc/garbageCollection.d.ts.map +1 -0
  72. package/dist/gc/gcConfigs.cjs +160 -0
  73. package/dist/gc/gcConfigs.cjs.map +1 -0
  74. package/dist/gc/gcConfigs.d.ts +23 -0
  75. package/dist/gc/gcConfigs.d.ts.map +1 -0
  76. package/dist/gc/gcDefinitions.cjs +96 -0
  77. package/dist/gc/gcDefinitions.cjs.map +1 -0
  78. package/dist/gc/gcDefinitions.d.ts +458 -0
  79. package/dist/gc/gcDefinitions.d.ts.map +1 -0
  80. package/dist/gc/gcHelpers.cjs +235 -0
  81. package/dist/gc/gcHelpers.cjs.map +1 -0
  82. package/dist/gc/gcHelpers.d.ts +71 -0
  83. package/dist/gc/gcHelpers.d.ts.map +1 -0
  84. package/dist/gc/gcReferenceGraphAlgorithm.cjs +49 -0
  85. package/dist/gc/gcReferenceGraphAlgorithm.cjs.map +1 -0
  86. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +16 -0
  87. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  88. package/dist/{summarizerTypes.js → gc/gcSummaryDefinitions.cjs} +1 -6
  89. package/dist/gc/gcSummaryDefinitions.cjs.map +1 -0
  90. package/dist/gc/gcSummaryDefinitions.d.ts +52 -0
  91. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -0
  92. package/dist/gc/gcSummaryStateTracker.cjs +213 -0
  93. package/dist/gc/gcSummaryStateTracker.cjs.map +1 -0
  94. package/dist/gc/gcSummaryStateTracker.d.ts +94 -0
  95. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -0
  96. package/dist/gc/gcTelemetry.cjs +307 -0
  97. package/dist/gc/gcTelemetry.cjs.map +1 -0
  98. package/dist/gc/gcTelemetry.d.ts +99 -0
  99. package/dist/gc/gcTelemetry.d.ts.map +1 -0
  100. package/dist/gc/gcUnreferencedStateTracker.cjs +118 -0
  101. package/dist/gc/gcUnreferencedStateTracker.cjs.map +1 -0
  102. package/dist/gc/gcUnreferencedStateTracker.d.ts +40 -0
  103. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  104. package/dist/gc/index.cjs +44 -0
  105. package/dist/gc/index.cjs.map +1 -0
  106. package/dist/gc/index.d.ts +13 -0
  107. package/dist/gc/index.d.ts.map +1 -0
  108. package/dist/index.cjs +47 -0
  109. package/dist/index.cjs.map +1 -0
  110. package/dist/index.d.ts +19 -8
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/messageTypes.cjs +37 -0
  113. package/dist/messageTypes.cjs.map +1 -0
  114. package/dist/messageTypes.d.ts +142 -0
  115. package/dist/messageTypes.d.ts.map +1 -0
  116. package/dist/metadata.cjs +7 -0
  117. package/dist/metadata.cjs.map +1 -0
  118. package/dist/metadata.d.ts +24 -0
  119. package/dist/metadata.d.ts.map +1 -0
  120. package/dist/opLifecycle/batchManager.cjs +139 -0
  121. package/dist/opLifecycle/batchManager.cjs.map +1 -0
  122. package/dist/opLifecycle/batchManager.d.ts +48 -0
  123. package/dist/opLifecycle/batchManager.d.ts.map +1 -0
  124. package/dist/opLifecycle/definitions.cjs +7 -0
  125. package/dist/opLifecycle/definitions.cjs.map +1 -0
  126. package/dist/opLifecycle/definitions.d.ts +83 -0
  127. package/dist/opLifecycle/definitions.d.ts.map +1 -0
  128. package/dist/opLifecycle/index.cjs +26 -0
  129. package/dist/opLifecycle/index.cjs.map +1 -0
  130. package/dist/opLifecycle/index.d.ts +13 -0
  131. package/dist/opLifecycle/index.d.ts.map +1 -0
  132. package/dist/opLifecycle/opCompressor.cjs +84 -0
  133. package/dist/opLifecycle/opCompressor.cjs.map +1 -0
  134. package/dist/opLifecycle/opCompressor.d.ts +18 -0
  135. package/dist/opLifecycle/opCompressor.d.ts.map +1 -0
  136. package/dist/opLifecycle/opDecompressor.cjs +132 -0
  137. package/dist/opLifecycle/opDecompressor.cjs.map +1 -0
  138. package/dist/opLifecycle/opDecompressor.d.ts +25 -0
  139. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -0
  140. package/dist/opLifecycle/opGroupingManager.cjs +95 -0
  141. package/dist/opLifecycle/opGroupingManager.cjs.map +1 -0
  142. package/dist/opLifecycle/opGroupingManager.d.ts +22 -0
  143. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -0
  144. package/dist/opLifecycle/opSplitter.cjs +202 -0
  145. package/dist/opLifecycle/opSplitter.cjs.map +1 -0
  146. package/dist/opLifecycle/opSplitter.d.ts +61 -0
  147. package/dist/opLifecycle/opSplitter.d.ts.map +1 -0
  148. package/dist/opLifecycle/outbox.cjs +326 -0
  149. package/dist/opLifecycle/outbox.cjs.map +1 -0
  150. package/dist/opLifecycle/outbox.d.ts +104 -0
  151. package/dist/opLifecycle/outbox.d.ts.map +1 -0
  152. package/dist/opLifecycle/remoteMessageProcessor.cjs +136 -0
  153. package/dist/opLifecycle/remoteMessageProcessor.cjs.map +1 -0
  154. package/dist/opLifecycle/remoteMessageProcessor.d.ts +47 -0
  155. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  156. package/dist/opProperties.cjs +17 -0
  157. package/dist/opProperties.cjs.map +1 -0
  158. package/dist/opProperties.d.ts +7 -0
  159. package/dist/opProperties.d.ts.map +1 -0
  160. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  161. package/dist/packageVersion.cjs.map +1 -0
  162. package/dist/packageVersion.d.ts +1 -1
  163. package/dist/packageVersion.d.ts.map +1 -1
  164. package/dist/pendingStateManager.cjs +282 -0
  165. package/dist/pendingStateManager.cjs.map +1 -0
  166. package/dist/pendingStateManager.d.ts +32 -69
  167. package/dist/pendingStateManager.d.ts.map +1 -1
  168. package/dist/scheduleManager.cjs +258 -0
  169. package/dist/scheduleManager.cjs.map +1 -0
  170. package/dist/scheduleManager.d.ts +31 -0
  171. package/dist/scheduleManager.d.ts.map +1 -0
  172. package/dist/storageServiceWithAttachBlobs.cjs +32 -0
  173. package/dist/storageServiceWithAttachBlobs.cjs.map +1 -0
  174. package/dist/storageServiceWithAttachBlobs.d.ts +17 -0
  175. package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -0
  176. package/dist/summary/index.cjs +51 -0
  177. package/dist/summary/index.cjs.map +1 -0
  178. package/dist/summary/index.d.ts +17 -0
  179. package/dist/summary/index.d.ts.map +1 -0
  180. package/dist/{orderedClientElection.js → summary/orderedClientElection.cjs} +100 -84
  181. package/dist/summary/orderedClientElection.cjs.map +1 -0
  182. package/{lib → dist/summary}/orderedClientElection.d.ts +41 -18
  183. package/dist/summary/orderedClientElection.d.ts.map +1 -0
  184. package/dist/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.cjs} +12 -10
  185. package/dist/summary/runWhileConnectedCoordinator.cjs.map +1 -0
  186. package/{lib → dist/summary}/runWhileConnectedCoordinator.d.ts +8 -2
  187. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  188. package/dist/summary/runningSummarizer.cjs +679 -0
  189. package/dist/summary/runningSummarizer.cjs.map +1 -0
  190. package/dist/summary/runningSummarizer.d.ts +128 -0
  191. package/dist/summary/runningSummarizer.d.ts.map +1 -0
  192. package/dist/summary/summarizer.cjs +263 -0
  193. package/dist/summary/summarizer.cjs.map +1 -0
  194. package/dist/{summarizer.d.ts → summary/summarizer.d.ts} +18 -33
  195. package/dist/summary/summarizer.d.ts.map +1 -0
  196. package/dist/{summarizerClientElection.js → summary/summarizerClientElection.cjs} +15 -46
  197. package/dist/summary/summarizerClientElection.cjs.map +1 -0
  198. package/{lib → dist/summary}/summarizerClientElection.d.ts +4 -4
  199. package/dist/summary/summarizerClientElection.d.ts.map +1 -0
  200. package/dist/summary/summarizerHeuristics.cjs +156 -0
  201. package/dist/summary/summarizerHeuristics.cjs.map +1 -0
  202. package/{lib → dist/summary}/summarizerHeuristics.d.ts +28 -6
  203. package/dist/summary/summarizerHeuristics.d.ts.map +1 -0
  204. package/dist/summary/summarizerNode/index.cjs +12 -0
  205. package/dist/summary/summarizerNode/index.cjs.map +1 -0
  206. package/dist/summary/summarizerNode/index.d.ts +8 -0
  207. package/dist/summary/summarizerNode/index.d.ts.map +1 -0
  208. package/dist/summary/summarizerNode/summarizerNode.cjs +526 -0
  209. package/dist/summary/summarizerNode/summarizerNode.cjs.map +1 -0
  210. package/dist/summary/summarizerNode/summarizerNode.d.ts +167 -0
  211. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  212. package/dist/summary/summarizerNode/summarizerNodeUtils.cjs +130 -0
  213. package/dist/summary/summarizerNode/summarizerNodeUtils.cjs.map +1 -0
  214. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +121 -0
  215. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  216. package/dist/summary/summarizerNode/summarizerNodeWithGc.cjs +375 -0
  217. package/dist/summary/summarizerNode/summarizerNodeWithGc.cjs.map +1 -0
  218. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +153 -0
  219. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  220. package/dist/summary/summarizerTypes.cjs +7 -0
  221. package/dist/summary/summarizerTypes.cjs.map +1 -0
  222. package/{lib → dist/summary}/summarizerTypes.d.ts +233 -83
  223. package/dist/summary/summarizerTypes.d.ts.map +1 -0
  224. package/dist/{summaryCollection.js → summary/summaryCollection.cjs} +80 -49
  225. package/dist/summary/summaryCollection.cjs.map +1 -0
  226. package/dist/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +23 -5
  227. package/dist/summary/summaryCollection.d.ts.map +1 -0
  228. package/dist/{summaryFormat.js → summary/summaryFormat.cjs} +29 -26
  229. package/dist/summary/summaryFormat.cjs.map +1 -0
  230. package/{lib → dist/summary}/summaryFormat.d.ts +25 -30
  231. package/dist/summary/summaryFormat.d.ts.map +1 -0
  232. package/dist/{summaryGenerator.js → summary/summaryGenerator.cjs} +162 -74
  233. package/dist/summary/summaryGenerator.cjs.map +1 -0
  234. package/dist/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +53 -11
  235. package/dist/summary/summaryGenerator.d.ts.map +1 -0
  236. package/dist/{summaryManager.js → summary/summaryManager.cjs} +98 -55
  237. package/dist/summary/summaryManager.cjs.map +1 -0
  238. package/{lib → dist/summary}/summaryManager.d.ts +13 -11
  239. package/dist/summary/summaryManager.d.ts.map +1 -0
  240. package/dist/{throttler.js → throttler.cjs} +21 -21
  241. package/dist/throttler.cjs.map +1 -0
  242. package/dist/throttler.d.ts +2 -2
  243. package/dist/throttler.d.ts.map +1 -1
  244. package/dist/tsdoc-metadata.json +11 -0
  245. package/lib/{batchTracker.d.ts → batchTracker.d.mts} +7 -6
  246. package/lib/batchTracker.d.mts.map +1 -0
  247. package/lib/{batchTracker.js → batchTracker.mjs} +9 -8
  248. package/lib/batchTracker.mjs.map +1 -0
  249. package/lib/blobManager.d.mts +196 -0
  250. package/lib/blobManager.d.mts.map +1 -0
  251. package/lib/blobManager.mjs +704 -0
  252. package/lib/blobManager.mjs.map +1 -0
  253. package/lib/{connectionTelemetry.d.ts → connectionTelemetry.d.mts} +3 -3
  254. package/lib/connectionTelemetry.d.mts.map +1 -0
  255. package/lib/connectionTelemetry.mjs +226 -0
  256. package/lib/connectionTelemetry.mjs.map +1 -0
  257. package/lib/container-runtime-alpha.d.mts +1690 -0
  258. package/lib/container-runtime-beta.d.mts +250 -0
  259. package/lib/container-runtime-public.d.mts +250 -0
  260. package/lib/container-runtime-untrimmed.d.mts +1805 -0
  261. package/lib/{containerHandleContext.d.ts → containerHandleContext.d.mts} +2 -2
  262. package/lib/containerHandleContext.d.mts.map +1 -0
  263. package/lib/{containerHandleContext.js → containerHandleContext.mjs} +4 -2
  264. package/lib/containerHandleContext.mjs.map +1 -0
  265. package/lib/containerRuntime.d.mts +813 -0
  266. package/lib/containerRuntime.d.mts.map +1 -0
  267. package/lib/containerRuntime.mjs +2530 -0
  268. package/lib/containerRuntime.mjs.map +1 -0
  269. package/lib/{dataStore.d.ts → dataStore.d.mts} +5 -5
  270. package/lib/dataStore.d.mts.map +1 -0
  271. package/lib/{dataStore.js → dataStore.mjs} +52 -43
  272. package/lib/dataStore.mjs.map +1 -0
  273. package/lib/{dataStoreContext.d.ts → dataStoreContext.d.mts} +75 -43
  274. package/lib/dataStoreContext.d.mts.map +1 -0
  275. package/lib/{dataStoreContext.js → dataStoreContext.mjs} +309 -213
  276. package/lib/dataStoreContext.mjs.map +1 -0
  277. package/lib/{dataStoreContexts.d.ts → dataStoreContexts.d.mts} +3 -3
  278. package/lib/dataStoreContexts.d.mts.map +1 -0
  279. package/lib/{dataStoreContexts.js → dataStoreContexts.mjs} +12 -8
  280. package/lib/dataStoreContexts.mjs.map +1 -0
  281. package/lib/{dataStoreRegistry.d.ts → dataStoreRegistry.d.mts} +4 -1
  282. package/lib/dataStoreRegistry.d.mts.map +1 -0
  283. package/lib/{dataStoreRegistry.js → dataStoreRegistry.mjs} +7 -6
  284. package/lib/dataStoreRegistry.mjs.map +1 -0
  285. package/lib/{dataStores.d.ts → dataStores.d.mts} +60 -27
  286. package/lib/dataStores.d.mts.map +1 -0
  287. package/lib/{dataStores.js → dataStores.mjs} +257 -105
  288. package/lib/dataStores.mjs.map +1 -0
  289. package/lib/deltaManagerProxyBase.d.mts +35 -0
  290. package/lib/deltaManagerProxyBase.d.mts.map +1 -0
  291. package/lib/deltaManagerProxyBase.mjs +73 -0
  292. package/lib/deltaManagerProxyBase.mjs.map +1 -0
  293. package/lib/deltaManagerSummarizerProxy.d.mts +19 -0
  294. package/lib/deltaManagerSummarizerProxy.d.mts.map +1 -0
  295. package/lib/deltaManagerSummarizerProxy.mjs +38 -0
  296. package/lib/deltaManagerSummarizerProxy.mjs.map +1 -0
  297. package/lib/{deltaScheduler.d.ts → deltaScheduler.d.mts} +9 -7
  298. package/lib/deltaScheduler.d.mts.map +1 -0
  299. package/lib/{deltaScheduler.js → deltaScheduler.mjs} +22 -15
  300. package/lib/deltaScheduler.mjs.map +1 -0
  301. package/lib/error.d.mts +14 -0
  302. package/lib/error.d.mts.map +1 -0
  303. package/lib/error.mjs +17 -0
  304. package/lib/error.mjs.map +1 -0
  305. package/lib/gc/garbageCollection.d.mts +224 -0
  306. package/lib/gc/garbageCollection.d.mts.map +1 -0
  307. package/lib/gc/garbageCollection.mjs +861 -0
  308. package/lib/gc/garbageCollection.mjs.map +1 -0
  309. package/lib/gc/gcConfigs.d.mts +23 -0
  310. package/lib/gc/gcConfigs.d.mts.map +1 -0
  311. package/lib/gc/gcConfigs.mjs +156 -0
  312. package/lib/gc/gcConfigs.mjs.map +1 -0
  313. package/lib/gc/gcDefinitions.d.mts +458 -0
  314. package/lib/gc/gcDefinitions.d.mts.map +1 -0
  315. package/lib/gc/gcDefinitions.mjs +93 -0
  316. package/lib/gc/gcDefinitions.mjs.map +1 -0
  317. package/lib/gc/gcHelpers.d.mts +71 -0
  318. package/lib/gc/gcHelpers.d.mts.map +1 -0
  319. package/lib/gc/gcHelpers.mjs +222 -0
  320. package/lib/gc/gcHelpers.mjs.map +1 -0
  321. package/lib/gc/gcReferenceGraphAlgorithm.d.mts +16 -0
  322. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +1 -0
  323. package/lib/gc/gcReferenceGraphAlgorithm.mjs +45 -0
  324. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +1 -0
  325. package/lib/gc/gcSummaryDefinitions.d.mts +52 -0
  326. package/lib/gc/gcSummaryDefinitions.d.mts.map +1 -0
  327. package/lib/gc/gcSummaryDefinitions.mjs +6 -0
  328. package/lib/gc/gcSummaryDefinitions.mjs.map +1 -0
  329. package/lib/gc/gcSummaryStateTracker.d.mts +94 -0
  330. package/lib/gc/gcSummaryStateTracker.d.mts.map +1 -0
  331. package/lib/gc/gcSummaryStateTracker.mjs +209 -0
  332. package/lib/gc/gcSummaryStateTracker.mjs.map +1 -0
  333. package/lib/gc/gcTelemetry.d.mts +99 -0
  334. package/lib/gc/gcTelemetry.d.mts.map +1 -0
  335. package/lib/gc/gcTelemetry.mjs +302 -0
  336. package/lib/gc/gcTelemetry.mjs.map +1 -0
  337. package/lib/gc/gcUnreferencedStateTracker.d.mts +40 -0
  338. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +1 -0
  339. package/lib/gc/gcUnreferencedStateTracker.mjs +114 -0
  340. package/lib/gc/gcUnreferencedStateTracker.mjs.map +1 -0
  341. package/lib/gc/index.d.mts +13 -0
  342. package/lib/gc/index.d.mts.map +1 -0
  343. package/lib/gc/index.mjs +12 -0
  344. package/lib/gc/index.mjs.map +1 -0
  345. package/lib/index.d.mts +25 -0
  346. package/lib/index.d.mts.map +1 -0
  347. package/lib/index.mjs +24 -0
  348. package/lib/index.mjs.map +1 -0
  349. package/lib/messageTypes.d.mts +142 -0
  350. package/lib/messageTypes.d.mts.map +1 -0
  351. package/lib/messageTypes.mjs +34 -0
  352. package/lib/messageTypes.mjs.map +1 -0
  353. package/lib/metadata.d.mts +24 -0
  354. package/lib/metadata.d.mts.map +1 -0
  355. package/lib/metadata.mjs +6 -0
  356. package/lib/metadata.mjs.map +1 -0
  357. package/lib/opLifecycle/batchManager.d.mts +48 -0
  358. package/lib/opLifecycle/batchManager.d.mts.map +1 -0
  359. package/lib/opLifecycle/batchManager.mjs +133 -0
  360. package/lib/opLifecycle/batchManager.mjs.map +1 -0
  361. package/lib/opLifecycle/definitions.d.mts +83 -0
  362. package/lib/opLifecycle/definitions.d.mts.map +1 -0
  363. package/lib/opLifecycle/definitions.mjs +6 -0
  364. package/lib/opLifecycle/definitions.mjs.map +1 -0
  365. package/lib/opLifecycle/index.d.mts +13 -0
  366. package/lib/opLifecycle/index.d.mts.map +1 -0
  367. package/lib/opLifecycle/index.mjs +12 -0
  368. package/lib/opLifecycle/index.mjs.map +1 -0
  369. package/lib/opLifecycle/opCompressor.d.mts +18 -0
  370. package/lib/opLifecycle/opCompressor.d.mts.map +1 -0
  371. package/lib/opLifecycle/opCompressor.mjs +80 -0
  372. package/lib/opLifecycle/opCompressor.mjs.map +1 -0
  373. package/lib/opLifecycle/opDecompressor.d.mts +25 -0
  374. package/lib/opLifecycle/opDecompressor.d.mts.map +1 -0
  375. package/lib/opLifecycle/opDecompressor.mjs +128 -0
  376. package/lib/opLifecycle/opDecompressor.mjs.map +1 -0
  377. package/lib/opLifecycle/opGroupingManager.d.mts +22 -0
  378. package/lib/opLifecycle/opGroupingManager.d.mts.map +1 -0
  379. package/lib/opLifecycle/opGroupingManager.mjs +91 -0
  380. package/lib/opLifecycle/opGroupingManager.mjs.map +1 -0
  381. package/lib/opLifecycle/opSplitter.d.mts +61 -0
  382. package/lib/opLifecycle/opSplitter.d.mts.map +1 -0
  383. package/lib/opLifecycle/opSplitter.mjs +197 -0
  384. package/lib/opLifecycle/opSplitter.mjs.map +1 -0
  385. package/lib/opLifecycle/outbox.d.mts +104 -0
  386. package/lib/opLifecycle/outbox.d.mts.map +1 -0
  387. package/lib/opLifecycle/outbox.mjs +321 -0
  388. package/lib/opLifecycle/outbox.mjs.map +1 -0
  389. package/lib/opLifecycle/remoteMessageProcessor.d.mts +47 -0
  390. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +1 -0
  391. package/lib/opLifecycle/remoteMessageProcessor.mjs +131 -0
  392. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +1 -0
  393. package/lib/opProperties.d.mts +7 -0
  394. package/lib/opProperties.d.mts.map +1 -0
  395. package/lib/opProperties.mjs +13 -0
  396. package/lib/opProperties.mjs.map +1 -0
  397. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
  398. package/lib/packageVersion.d.mts.map +1 -0
  399. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  400. package/lib/packageVersion.mjs.map +1 -0
  401. package/lib/{pendingStateManager.d.ts → pendingStateManager.d.mts} +33 -70
  402. package/lib/pendingStateManager.d.mts.map +1 -0
  403. package/lib/pendingStateManager.mjs +275 -0
  404. package/lib/pendingStateManager.mjs.map +1 -0
  405. package/lib/scheduleManager.d.mts +27 -0
  406. package/lib/scheduleManager.d.mts.map +1 -0
  407. package/lib/scheduleManager.mjs +254 -0
  408. package/lib/scheduleManager.mjs.map +1 -0
  409. package/lib/storageServiceWithAttachBlobs.d.mts +17 -0
  410. package/lib/storageServiceWithAttachBlobs.d.mts.map +1 -0
  411. package/lib/storageServiceWithAttachBlobs.mjs +28 -0
  412. package/lib/storageServiceWithAttachBlobs.mjs.map +1 -0
  413. package/lib/summary/index.d.mts +17 -0
  414. package/lib/summary/index.d.mts.map +1 -0
  415. package/lib/summary/index.mjs +16 -0
  416. package/lib/summary/index.mjs.map +1 -0
  417. package/{dist/orderedClientElection.d.ts → lib/summary/orderedClientElection.d.mts} +42 -23
  418. package/lib/summary/orderedClientElection.d.mts.map +1 -0
  419. package/lib/{orderedClientElection.js → summary/orderedClientElection.mjs} +95 -79
  420. package/lib/summary/orderedClientElection.mjs.map +1 -0
  421. package/{dist/runWhileConnectedCoordinator.d.ts → lib/summary/runWhileConnectedCoordinator.d.mts} +10 -4
  422. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +1 -0
  423. package/lib/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.mjs} +12 -10
  424. package/lib/summary/runWhileConnectedCoordinator.mjs.map +1 -0
  425. package/lib/summary/runningSummarizer.d.mts +128 -0
  426. package/lib/summary/runningSummarizer.d.mts.map +1 -0
  427. package/lib/summary/runningSummarizer.mjs +675 -0
  428. package/lib/summary/runningSummarizer.mjs.map +1 -0
  429. package/lib/{summarizer.d.ts → summary/summarizer.d.mts} +21 -36
  430. package/lib/summary/summarizer.d.mts.map +1 -0
  431. package/lib/summary/summarizer.mjs +257 -0
  432. package/lib/summary/summarizer.mjs.map +1 -0
  433. package/{dist/summarizerClientElection.d.ts → lib/summary/summarizerClientElection.d.mts} +7 -7
  434. package/lib/summary/summarizerClientElection.d.mts.map +1 -0
  435. package/lib/{summarizerClientElection.js → summary/summarizerClientElection.mjs} +14 -45
  436. package/lib/summary/summarizerClientElection.mjs.map +1 -0
  437. package/{dist/summarizerHeuristics.d.ts → lib/summary/summarizerHeuristics.d.mts} +30 -8
  438. package/lib/summary/summarizerHeuristics.d.mts.map +1 -0
  439. package/lib/summary/summarizerHeuristics.mjs +151 -0
  440. package/lib/summary/summarizerHeuristics.mjs.map +1 -0
  441. package/lib/summary/summarizerNode/index.d.mts +8 -0
  442. package/lib/summary/summarizerNode/index.d.mts.map +1 -0
  443. package/lib/summary/summarizerNode/index.mjs +7 -0
  444. package/lib/summary/summarizerNode/index.mjs.map +1 -0
  445. package/lib/summary/summarizerNode/summarizerNode.d.mts +167 -0
  446. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +1 -0
  447. package/lib/summary/summarizerNode/summarizerNode.mjs +521 -0
  448. package/lib/summary/summarizerNode/summarizerNode.mjs.map +1 -0
  449. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts +121 -0
  450. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +1 -0
  451. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs +123 -0
  452. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +1 -0
  453. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts +153 -0
  454. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +1 -0
  455. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs +370 -0
  456. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +1 -0
  457. package/{dist/summarizerTypes.d.ts → lib/summary/summarizerTypes.d.mts} +235 -85
  458. package/lib/summary/summarizerTypes.d.mts.map +1 -0
  459. package/lib/summary/summarizerTypes.mjs +6 -0
  460. package/lib/summary/summarizerTypes.mjs.map +1 -0
  461. package/lib/{summaryCollection.d.ts → summary/summaryCollection.d.mts} +24 -6
  462. package/lib/summary/summaryCollection.d.mts.map +1 -0
  463. package/lib/{summaryCollection.js → summary/summaryCollection.mjs} +76 -45
  464. package/lib/summary/summaryCollection.mjs.map +1 -0
  465. package/{dist/summaryFormat.d.ts → lib/summary/summaryFormat.d.mts} +26 -31
  466. package/lib/summary/summaryFormat.d.mts.map +1 -0
  467. package/lib/{summaryFormat.js → summary/summaryFormat.mjs} +30 -26
  468. package/lib/summary/summaryFormat.mjs.map +1 -0
  469. package/lib/summary/summaryGenerator.d.mts +127 -0
  470. package/lib/summary/summaryGenerator.d.mts.map +1 -0
  471. package/lib/{summaryGenerator.js → summary/summaryGenerator.mjs} +153 -67
  472. package/lib/summary/summaryGenerator.mjs.map +1 -0
  473. package/{dist/summaryManager.d.ts → lib/summary/summaryManager.d.mts} +16 -14
  474. package/lib/summary/summaryManager.d.mts.map +1 -0
  475. package/lib/{summaryManager.js → summary/summaryManager.mjs} +94 -51
  476. package/lib/summary/summaryManager.mjs.map +1 -0
  477. package/lib/{throttler.d.ts → throttler.d.mts} +3 -3
  478. package/lib/throttler.d.mts.map +1 -0
  479. package/lib/{throttler.js → throttler.mjs} +21 -21
  480. package/lib/throttler.mjs.map +1 -0
  481. package/package.json +199 -71
  482. package/prettier.config.cjs +8 -0
  483. package/src/batchTracker.ts +59 -54
  484. package/src/blobManager.ts +942 -294
  485. package/src/connectionTelemetry.ts +342 -252
  486. package/src/containerHandleContext.ts +27 -29
  487. package/src/containerRuntime.ts +3883 -3143
  488. package/src/dataStore.ts +170 -140
  489. package/src/dataStoreContext.ts +1166 -986
  490. package/src/dataStoreContexts.ts +176 -163
  491. package/src/dataStoreRegistry.ts +29 -21
  492. package/src/dataStores.ts +924 -678
  493. package/src/deltaManagerProxyBase.ts +111 -0
  494. package/src/deltaManagerSummarizerProxy.ts +49 -0
  495. package/src/deltaScheduler.ts +161 -156
  496. package/src/error.ts +21 -0
  497. package/src/gc/garbageCollection.md +106 -0
  498. package/src/gc/garbageCollection.ts +1157 -0
  499. package/src/gc/gcConfigs.ts +224 -0
  500. package/src/gc/gcDefinitions.ts +524 -0
  501. package/src/gc/gcHelpers.ts +284 -0
  502. package/src/gc/gcReferenceGraphAlgorithm.ts +52 -0
  503. package/src/gc/gcSummaryDefinitions.ts +54 -0
  504. package/src/gc/gcSummaryStateTracker.ts +299 -0
  505. package/src/gc/gcTelemetry.ts +433 -0
  506. package/src/gc/gcUnreferencedStateTracker.ts +153 -0
  507. package/src/gc/index.ts +60 -0
  508. package/src/index.ts +101 -74
  509. package/src/messageTypes.ts +238 -0
  510. package/src/metadata.ts +26 -0
  511. package/src/opLifecycle/README.md +321 -0
  512. package/src/opLifecycle/batchManager.ts +179 -0
  513. package/src/opLifecycle/definitions.ts +89 -0
  514. package/src/opLifecycle/index.ts +19 -0
  515. package/src/opLifecycle/opCompressor.ts +99 -0
  516. package/src/opLifecycle/opDecompressor.ts +190 -0
  517. package/src/opLifecycle/opGroupingManager.ts +133 -0
  518. package/src/opLifecycle/opSplitter.ts +279 -0
  519. package/src/opLifecycle/outbox.ts +474 -0
  520. package/src/opLifecycle/remoteMessageProcessor.ts +175 -0
  521. package/src/opProperties.ts +21 -0
  522. package/src/packageVersion.ts +1 -1
  523. package/src/pendingStateManager.ts +396 -465
  524. package/src/scheduleManager.ts +358 -0
  525. package/src/storageServiceWithAttachBlobs.ts +38 -0
  526. package/src/summary/index.ts +109 -0
  527. package/src/summary/orderedClientElection.ts +571 -0
  528. package/src/summary/runWhileConnectedCoordinator.ts +117 -0
  529. package/src/summary/runningSummarizer.ts +920 -0
  530. package/src/summary/summarizer.ts +352 -0
  531. package/src/summary/summarizerClientElection.ts +140 -0
  532. package/src/summary/summarizerHeuristics.ts +227 -0
  533. package/src/summary/summarizerNode/index.ts +12 -0
  534. package/src/summary/summarizerNode/summarizerNode.ts +725 -0
  535. package/src/summary/summarizerNode/summarizerNodeUtils.ts +206 -0
  536. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +571 -0
  537. package/src/summary/summarizerTypes.ts +631 -0
  538. package/src/summary/summaryCollection.ts +474 -0
  539. package/src/summary/summaryFormat.ts +249 -0
  540. package/src/summary/summaryGenerator.ts +539 -0
  541. package/src/summary/summaryManager.ts +452 -0
  542. package/src/throttler.ts +131 -122
  543. package/tsc-multi.test.json +4 -0
  544. package/tsconfig.json +11 -13
  545. package/dist/batchTracker.js.map +0 -1
  546. package/dist/blobManager.js +0 -249
  547. package/dist/blobManager.js.map +0 -1
  548. package/dist/connectionTelemetry.js +0 -178
  549. package/dist/connectionTelemetry.js.map +0 -1
  550. package/dist/containerHandleContext.js.map +0 -1
  551. package/dist/containerRuntime.js +0 -2174
  552. package/dist/containerRuntime.js.map +0 -1
  553. package/dist/dataStore.js.map +0 -1
  554. package/dist/dataStoreContext.js.map +0 -1
  555. package/dist/dataStoreContexts.js.map +0 -1
  556. package/dist/dataStoreRegistry.js.map +0 -1
  557. package/dist/dataStores.js.map +0 -1
  558. package/dist/deltaScheduler.js.map +0 -1
  559. package/dist/garbageCollection.d.ts +0 -319
  560. package/dist/garbageCollection.d.ts.map +0 -1
  561. package/dist/garbageCollection.js +0 -993
  562. package/dist/garbageCollection.js.map +0 -1
  563. package/dist/index.js +0 -33
  564. package/dist/index.js.map +0 -1
  565. package/dist/opTelemetry.d.ts +0 -22
  566. package/dist/opTelemetry.d.ts.map +0 -1
  567. package/dist/opTelemetry.js +0 -60
  568. package/dist/opTelemetry.js.map +0 -1
  569. package/dist/orderedClientElection.d.ts.map +0 -1
  570. package/dist/orderedClientElection.js.map +0 -1
  571. package/dist/packageVersion.js.map +0 -1
  572. package/dist/pendingStateManager.js +0 -346
  573. package/dist/pendingStateManager.js.map +0 -1
  574. package/dist/runWhileConnectedCoordinator.d.ts.map +0 -1
  575. package/dist/runWhileConnectedCoordinator.js.map +0 -1
  576. package/dist/runningSummarizer.d.ts +0 -93
  577. package/dist/runningSummarizer.d.ts.map +0 -1
  578. package/dist/runningSummarizer.js +0 -384
  579. package/dist/runningSummarizer.js.map +0 -1
  580. package/dist/serializedSnapshotStorage.d.ts +0 -58
  581. package/dist/serializedSnapshotStorage.d.ts.map +0 -1
  582. package/dist/serializedSnapshotStorage.js +0 -108
  583. package/dist/serializedSnapshotStorage.js.map +0 -1
  584. package/dist/summarizer.d.ts.map +0 -1
  585. package/dist/summarizer.js +0 -348
  586. package/dist/summarizer.js.map +0 -1
  587. package/dist/summarizerClientElection.d.ts.map +0 -1
  588. package/dist/summarizerClientElection.js.map +0 -1
  589. package/dist/summarizerHandle.d.ts +0 -12
  590. package/dist/summarizerHandle.d.ts.map +0 -1
  591. package/dist/summarizerHandle.js +0 -22
  592. package/dist/summarizerHandle.js.map +0 -1
  593. package/dist/summarizerHeuristics.d.ts.map +0 -1
  594. package/dist/summarizerHeuristics.js +0 -84
  595. package/dist/summarizerHeuristics.js.map +0 -1
  596. package/dist/summarizerTypes.d.ts.map +0 -1
  597. package/dist/summarizerTypes.js.map +0 -1
  598. package/dist/summaryCollection.d.ts.map +0 -1
  599. package/dist/summaryCollection.js.map +0 -1
  600. package/dist/summaryFormat.d.ts.map +0 -1
  601. package/dist/summaryFormat.js.map +0 -1
  602. package/dist/summaryGenerator.d.ts.map +0 -1
  603. package/dist/summaryGenerator.js.map +0 -1
  604. package/dist/summaryManager.d.ts.map +0 -1
  605. package/dist/summaryManager.js.map +0 -1
  606. package/dist/throttler.js.map +0 -1
  607. package/garbageCollection.md +0 -41
  608. package/lib/batchTracker.d.ts.map +0 -1
  609. package/lib/batchTracker.js.map +0 -1
  610. package/lib/blobManager.d.ts +0 -95
  611. package/lib/blobManager.d.ts.map +0 -1
  612. package/lib/blobManager.js +0 -244
  613. package/lib/blobManager.js.map +0 -1
  614. package/lib/connectionTelemetry.d.ts.map +0 -1
  615. package/lib/connectionTelemetry.js +0 -174
  616. package/lib/connectionTelemetry.js.map +0 -1
  617. package/lib/containerHandleContext.d.ts.map +0 -1
  618. package/lib/containerHandleContext.js.map +0 -1
  619. package/lib/containerRuntime.d.ts +0 -615
  620. package/lib/containerRuntime.d.ts.map +0 -1
  621. package/lib/containerRuntime.js +0 -2166
  622. package/lib/containerRuntime.js.map +0 -1
  623. package/lib/dataStore.d.ts.map +0 -1
  624. package/lib/dataStore.js.map +0 -1
  625. package/lib/dataStoreContext.d.ts.map +0 -1
  626. package/lib/dataStoreContext.js.map +0 -1
  627. package/lib/dataStoreContexts.d.ts.map +0 -1
  628. package/lib/dataStoreContexts.js.map +0 -1
  629. package/lib/dataStoreRegistry.d.ts.map +0 -1
  630. package/lib/dataStoreRegistry.js.map +0 -1
  631. package/lib/dataStores.d.ts.map +0 -1
  632. package/lib/dataStores.js.map +0 -1
  633. package/lib/deltaScheduler.d.ts.map +0 -1
  634. package/lib/deltaScheduler.js.map +0 -1
  635. package/lib/garbageCollection.d.ts +0 -319
  636. package/lib/garbageCollection.d.ts.map +0 -1
  637. package/lib/garbageCollection.js +0 -989
  638. package/lib/garbageCollection.js.map +0 -1
  639. package/lib/index.d.ts +0 -14
  640. package/lib/index.d.ts.map +0 -1
  641. package/lib/index.js +0 -13
  642. package/lib/index.js.map +0 -1
  643. package/lib/opTelemetry.d.ts +0 -22
  644. package/lib/opTelemetry.d.ts.map +0 -1
  645. package/lib/opTelemetry.js +0 -56
  646. package/lib/opTelemetry.js.map +0 -1
  647. package/lib/orderedClientElection.d.ts.map +0 -1
  648. package/lib/orderedClientElection.js.map +0 -1
  649. package/lib/packageVersion.d.ts.map +0 -1
  650. package/lib/packageVersion.js.map +0 -1
  651. package/lib/pendingStateManager.d.ts.map +0 -1
  652. package/lib/pendingStateManager.js +0 -339
  653. package/lib/pendingStateManager.js.map +0 -1
  654. package/lib/runWhileConnectedCoordinator.d.ts.map +0 -1
  655. package/lib/runWhileConnectedCoordinator.js.map +0 -1
  656. package/lib/runningSummarizer.d.ts +0 -93
  657. package/lib/runningSummarizer.d.ts.map +0 -1
  658. package/lib/runningSummarizer.js +0 -380
  659. package/lib/runningSummarizer.js.map +0 -1
  660. package/lib/serializedSnapshotStorage.d.ts +0 -58
  661. package/lib/serializedSnapshotStorage.d.ts.map +0 -1
  662. package/lib/serializedSnapshotStorage.js +0 -104
  663. package/lib/serializedSnapshotStorage.js.map +0 -1
  664. package/lib/summarizer.d.ts.map +0 -1
  665. package/lib/summarizer.js +0 -342
  666. package/lib/summarizer.js.map +0 -1
  667. package/lib/summarizerClientElection.d.ts.map +0 -1
  668. package/lib/summarizerClientElection.js.map +0 -1
  669. package/lib/summarizerHandle.d.ts +0 -12
  670. package/lib/summarizerHandle.d.ts.map +0 -1
  671. package/lib/summarizerHandle.js +0 -18
  672. package/lib/summarizerHandle.js.map +0 -1
  673. package/lib/summarizerHeuristics.d.ts.map +0 -1
  674. package/lib/summarizerHeuristics.js +0 -79
  675. package/lib/summarizerHeuristics.js.map +0 -1
  676. package/lib/summarizerTypes.d.ts.map +0 -1
  677. package/lib/summarizerTypes.js +0 -9
  678. package/lib/summarizerTypes.js.map +0 -1
  679. package/lib/summaryCollection.d.ts.map +0 -1
  680. package/lib/summaryCollection.js.map +0 -1
  681. package/lib/summaryFormat.d.ts.map +0 -1
  682. package/lib/summaryFormat.js.map +0 -1
  683. package/lib/summaryGenerator.d.ts +0 -85
  684. package/lib/summaryGenerator.d.ts.map +0 -1
  685. package/lib/summaryGenerator.js.map +0 -1
  686. package/lib/summaryManager.d.ts.map +0 -1
  687. package/lib/summaryManager.js.map +0 -1
  688. package/lib/throttler.d.ts.map +0 -1
  689. package/lib/throttler.js.map +0 -1
  690. package/src/garbageCollection.ts +0 -1434
  691. package/src/opTelemetry.ts +0 -71
  692. package/src/orderedClientElection.ts +0 -511
  693. package/src/runWhileConnectedCoordinator.ts +0 -106
  694. package/src/runningSummarizer.ts +0 -550
  695. package/src/serializedSnapshotStorage.ts +0 -146
  696. package/src/summarizer.ts +0 -438
  697. package/src/summarizerClientElection.ts +0 -161
  698. package/src/summarizerHandle.ts +0 -21
  699. package/src/summarizerHeuristics.ts +0 -108
  700. package/src/summarizerTypes.ts +0 -462
  701. package/src/summaryCollection.ts +0 -406
  702. package/src/summaryFormat.ts +0 -239
  703. package/src/summaryGenerator.ts +0 -427
  704. package/src/summaryManager.ts +0 -368
  705. package/tsconfig.esnext.json +0 -7
@@ -5,55 +5,48 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.getSummaryForDatastores = exports.DataStores = void 0;
8
- const container_utils_1 = require("@fluidframework/container-utils");
9
8
  const datastore_1 = require("@fluidframework/datastore");
10
9
  const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
11
10
  const runtime_utils_1 = require("@fluidframework/runtime-utils");
12
11
  const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
13
12
  const container_definitions_1 = require("@fluidframework/container-definitions");
14
13
  const driver_utils_1 = require("@fluidframework/driver-utils");
15
- const common_utils_1 = require("@fluidframework/common-utils");
14
+ const core_utils_1 = require("@fluidframework/core-utils");
16
15
  const uuid_1 = require("uuid");
17
- const garbage_collector_1 = require("@fluidframework/garbage-collector");
18
- const dataStoreContexts_1 = require("./dataStoreContexts");
19
- const dataStoreContext_1 = require("./dataStoreContext");
20
- const summaryFormat_1 = require("./summaryFormat");
21
- const dataStore_1 = require("./dataStore");
22
- const garbageCollection_1 = require("./garbageCollection");
16
+ const dataStoreContexts_1 = require("./dataStoreContexts.cjs");
17
+ const containerRuntime_1 = require("./containerRuntime.cjs");
18
+ const dataStoreContext_1 = require("./dataStoreContext.cjs");
19
+ const storageServiceWithAttachBlobs_1 = require("./storageServiceWithAttachBlobs.cjs");
20
+ const dataStore_1 = require("./dataStore.cjs");
21
+ const gc_1 = require("./gc/index.cjs");
22
+ const summary_1 = require("./summary/index.cjs");
23
23
  /**
24
24
  * This class encapsulates data store handling. Currently it is only used by the container runtime,
25
25
  * but eventually could be hosted on any channel once we formalize the channel api boundary.
26
26
  */
27
27
  class DataStores {
28
- constructor(baseSnapshot, runtime, submitAttachFn, getCreateChildSummarizerNodeFn, deleteChildSummarizerNodeFn, baseLogger, getBaseGCDetails, gcNodeUpdated, aliasMap, writeGCDataAtRoot, contexts = new dataStoreContexts_1.DataStoreContexts(baseLogger)) {
28
+ constructor(baseSnapshot, runtime, submitAttachFn, getCreateChildSummarizerNodeFn, deleteChildSummarizerNodeFn, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, contexts = new dataStoreContexts_1.DataStoreContexts(baseLogger)) {
29
29
  this.baseSnapshot = baseSnapshot;
30
30
  this.runtime = runtime;
31
31
  this.submitAttachFn = submitAttachFn;
32
32
  this.getCreateChildSummarizerNodeFn = getCreateChildSummarizerNodeFn;
33
33
  this.deleteChildSummarizerNodeFn = deleteChildSummarizerNodeFn;
34
34
  this.gcNodeUpdated = gcNodeUpdated;
35
+ this.isDataStoreDeleted = isDataStoreDeleted;
35
36
  this.aliasMap = aliasMap;
36
- this.writeGCDataAtRoot = writeGCDataAtRoot;
37
37
  this.contexts = contexts;
38
38
  // Stores tracked by the Domain
39
39
  this.pendingAttach = new Map();
40
40
  // 0.24 back-compat attachingBeforeSummary
41
41
  this.attachOpFiredForDataStore = new Set();
42
- this.disposeOnce = new common_utils_1.Lazy(() => this.contexts.dispose());
42
+ this.disposeOnce = new core_utils_1.Lazy(() => this.contexts.dispose());
43
43
  // Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
44
44
  // root data stores that are added.
45
45
  this.dataStoresSinceLastGC = [];
46
+ this.pendingAliasMap = new Map();
46
47
  this.dispose = () => this.disposeOnce.value;
47
- this.logger = telemetry_utils_1.ChildLogger.create(baseLogger);
48
+ this.mc = (0, telemetry_utils_1.createChildMonitoringContext)({ logger: baseLogger });
48
49
  this.containerRuntimeHandle = new datastore_1.FluidObjectHandle(this.runtime, "/", this.runtime.IFluidHandleContext);
49
- const baseGCDetailsP = new common_utils_1.LazyPromise(async () => {
50
- return getBaseGCDetails();
51
- });
52
- // Returns the base GC details for the data store with the given id.
53
- const dataStoreBaseGCDetails = async (dataStoreId) => {
54
- const baseGCDetails = await baseGCDetailsP;
55
- return baseGCDetails.get(dataStoreId);
56
- };
57
50
  // Extract stores stored inside the snapshot
58
51
  const fluidDataStores = new Map();
59
52
  if (baseSnapshot) {
@@ -74,13 +67,12 @@ class DataStores {
74
67
  dataStoreContext = new dataStoreContext_1.RemoteFluidDataStoreContext({
75
68
  id: key,
76
69
  snapshotTree: value,
77
- getBaseGCDetails: async () => dataStoreBaseGCDetails(key),
78
70
  runtime: this.runtime,
79
71
  storage: this.runtime.storage,
80
72
  scope: this.runtime.scope,
81
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, { type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary }),
82
- writeGCDataAtRoot: this.writeGCDataAtRoot,
83
- disableIsolatedChannels: this.runtime.disableIsolatedChannels,
73
+ createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
74
+ type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
75
+ }),
84
76
  });
85
77
  }
86
78
  else {
@@ -94,12 +86,12 @@ class DataStores {
94
86
  runtime: this.runtime,
95
87
  storage: this.runtime.storage,
96
88
  scope: this.runtime.scope,
97
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, { type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary }),
89
+ createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
90
+ type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
91
+ }),
98
92
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
99
93
  snapshotTree,
100
94
  isRootDataStore: undefined,
101
- writeGCDataAtRoot: this.writeGCDataAtRoot,
102
- disableIsolatedChannels: this.runtime.disableIsolatedChannels,
103
95
  });
104
96
  }
105
97
  this.contexts.addBoundOrRemoted(dataStoreContext);
@@ -109,35 +101,41 @@ class DataStores {
109
101
  referencedDataStoreCount: fluidDataStores.size - unreferencedDataStoreCount,
110
102
  };
111
103
  }
112
- aliases() {
104
+ get aliases() {
113
105
  return this.aliasMap;
114
106
  }
107
+ get pendingAliases() {
108
+ return this.pendingAliasMap;
109
+ }
110
+ async waitIfPendingAlias(maybeAlias) {
111
+ const pendingAliasPromise = this.pendingAliases.get(maybeAlias);
112
+ return pendingAliasPromise ?? "Success";
113
+ }
115
114
  processAttachMessage(message, local) {
116
- var _a, _b;
117
115
  const attachMessage = message.contents;
118
116
  this.dataStoresSinceLastGC.push(attachMessage.id);
119
117
  // The local object has already been attached
120
118
  if (local) {
121
- (0, common_utils_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
122
- (_a = this.contexts.get(attachMessage.id)) === null || _a === void 0 ? void 0 : _a.emit("attached");
119
+ (0, core_utils_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
120
+ this.contexts.get(attachMessage.id)?.emit("attached");
123
121
  this.pendingAttach.delete(attachMessage.id);
124
122
  return;
125
123
  }
126
124
  // If a non-local operation then go and create the object, otherwise mark it as officially attached.
127
125
  if (this.alreadyProcessed(attachMessage.id)) {
128
126
  // TODO: dataStoreId may require a different tag from PackageData #7488
129
- const error = new container_utils_1.DataCorruptionError(
127
+ const error = new telemetry_utils_1.DataCorruptionError(
130
128
  // pre-0.58 error message: duplicateDataStoreCreatedWithExistingId
131
- "Duplicate DataStore created with existing id", Object.assign(Object.assign({}, (0, container_utils_1.extractSafePropertiesFromMessage)(message)), { dataStoreId: {
132
- value: attachMessage.id,
133
- tag: telemetry_utils_1.TelemetryDataTag.PackageData,
134
- } }));
129
+ "Duplicate DataStore created with existing id", {
130
+ ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
131
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ dataStoreId: attachMessage.id }),
132
+ });
135
133
  throw error;
136
134
  }
137
- const flatBlobs = new Map();
135
+ const flatAttachBlobs = new Map();
138
136
  let snapshotTree;
139
137
  if (attachMessage.snapshot) {
140
- snapshotTree = (0, driver_utils_1.buildSnapshotTree)(attachMessage.snapshot.entries, flatBlobs);
138
+ snapshotTree = (0, driver_utils_1.buildSnapshotTree)(attachMessage.snapshot.entries, flatAttachBlobs);
141
139
  }
142
140
  // Include the type of attach message which is the pkg of the store to be
143
141
  // used by RemoteFluidDataStoreContext in case it is not in the snapshot.
@@ -145,20 +143,16 @@ class DataStores {
145
143
  const remoteFluidDataStoreContext = new dataStoreContext_1.RemoteFluidDataStoreContext({
146
144
  id: attachMessage.id,
147
145
  snapshotTree,
148
- // New data stores begin with empty GC details since GC hasn't run on them yet.
149
- getBaseGCDetails: async () => { return {}; },
150
146
  runtime: this.runtime,
151
- storage: new driver_utils_1.BlobCacheStorageService(this.runtime.storage, flatBlobs),
147
+ storage: new storageServiceWithAttachBlobs_1.StorageServiceWithAttachBlobs(this.runtime.storage, flatAttachBlobs),
152
148
  scope: this.runtime.scope,
153
149
  createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(attachMessage.id, {
154
150
  type: runtime_definitions_1.CreateSummarizerNodeSource.FromAttach,
155
151
  sequenceNumber: message.sequenceNumber,
156
- snapshot: (_b = attachMessage.snapshot) !== null && _b !== void 0 ? _b : {
157
- entries: [(0, dataStoreContext_1.createAttributesBlob)(pkg, true /* isRootDataStore */, this.runtime.disableIsolatedChannels)],
152
+ snapshot: attachMessage.snapshot ?? {
153
+ entries: [(0, dataStoreContext_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
158
154
  },
159
155
  }),
160
- writeGCDataAtRoot: this.writeGCDataAtRoot,
161
- disableIsolatedChannels: this.runtime.disableIsolatedChannels,
162
156
  pkg,
163
157
  });
164
158
  this.contexts.addBoundOrRemoted(remoteFluidDataStoreContext);
@@ -166,7 +160,9 @@ class DataStores {
166
160
  processAliasMessage(message, localOpMetadata, local) {
167
161
  const aliasMessage = message.contents;
168
162
  if (!(0, dataStore_1.isDataStoreAliasMessage)(aliasMessage)) {
169
- throw new container_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", Object.assign({}, (0, container_utils_1.extractSafePropertiesFromMessage)(message)));
163
+ throw new telemetry_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", {
164
+ ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
165
+ });
170
166
  }
171
167
  const resolve = localOpMetadata;
172
168
  const aliasResult = this.processAliasMessageCore(aliasMessage);
@@ -179,8 +175,13 @@ class DataStores {
179
175
  return false;
180
176
  }
181
177
  const context = this.contexts.get(aliasMessage.internalId);
178
+ // If the data store has been deleted, log an error and ignore this message. This helps prevent document
179
+ // corruption in case a deleted data store accidentally submitted a signal.
180
+ if (this.checkAndLogIfDeleted(aliasMessage.internalId, context, "Changed", "processAliasMessageCore")) {
181
+ return false;
182
+ }
182
183
  if (context === undefined) {
183
- this.logger.sendErrorEvent({
184
+ this.mc.logger.sendErrorEvent({
184
185
  eventName: "AliasFluidDataStoreNotFound",
185
186
  fluidDataStoreId: aliasMessage.internalId,
186
187
  });
@@ -202,7 +203,7 @@ class DataStores {
202
203
  */
203
204
  makeDataStoreLocallyVisible(id) {
204
205
  const localContext = this.contexts.getUnbound(id);
205
- (0, common_utils_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
206
+ (0, core_utils_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
206
207
  /**
207
208
  * If the container is not detached, it is globally visible to all clients. This data store should also be
208
209
  * globally visible. Move it to attaching state and send an "attach" op for it.
@@ -218,59 +219,79 @@ class DataStores {
218
219
  this.contexts.bind(id);
219
220
  }
220
221
  createDetachedDataStoreCore(pkg, isRoot, id = (0, uuid_1.v4)()) {
221
- (0, common_utils_1.assert)(!id.includes("/"), 0x30c /* Id cannot contain slashes */);
222
+ (0, core_utils_1.assert)(!id.includes("/"), 0x30c /* Id cannot contain slashes */);
222
223
  const context = new dataStoreContext_1.LocalDetachedFluidDataStoreContext({
223
224
  id,
224
225
  pkg,
225
226
  runtime: this.runtime,
226
227
  storage: this.runtime.storage,
227
228
  scope: this.runtime.scope,
228
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, { type: runtime_definitions_1.CreateSummarizerNodeSource.Local }),
229
+ createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
230
+ type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
231
+ }),
229
232
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
230
233
  snapshotTree: undefined,
231
234
  isRootDataStore: isRoot,
232
- writeGCDataAtRoot: this.writeGCDataAtRoot,
233
- disableIsolatedChannels: this.runtime.disableIsolatedChannels,
234
235
  });
235
236
  this.contexts.addUnbound(context);
236
237
  return context;
237
238
  }
238
- _createFluidDataStoreContext(pkg, id, isRoot, props) {
239
- (0, common_utils_1.assert)(!id.includes("/"), 0x30d /* Id cannot contain slashes */);
239
+ _createFluidDataStoreContext(pkg, id, props) {
240
+ (0, core_utils_1.assert)(!id.includes("/"), 0x30d /* Id cannot contain slashes */);
240
241
  const context = new dataStoreContext_1.LocalFluidDataStoreContext({
241
242
  id,
242
243
  pkg,
243
244
  runtime: this.runtime,
244
245
  storage: this.runtime.storage,
245
246
  scope: this.runtime.scope,
246
- createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, { type: runtime_definitions_1.CreateSummarizerNodeSource.Local }),
247
+ createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
248
+ type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
249
+ }),
247
250
  makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
248
251
  snapshotTree: undefined,
249
- isRootDataStore: isRoot,
250
- writeGCDataAtRoot: this.writeGCDataAtRoot,
251
- disableIsolatedChannels: this.runtime.disableIsolatedChannels,
252
+ isRootDataStore: false,
252
253
  createProps: props,
253
254
  });
254
255
  this.contexts.addUnbound(context);
255
256
  return context;
256
257
  }
257
- get disposed() { return this.disposeOnce.evaluated; }
258
- resubmitDataStoreOp(content, localOpMetadata) {
259
- const envelope = content;
258
+ get disposed() {
259
+ return this.disposeOnce.evaluated;
260
+ }
261
+ resubmitDataStoreOp(envelope, localOpMetadata) {
260
262
  const context = this.contexts.get(envelope.address);
261
- (0, common_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
263
+ // If the data store has been deleted, log an error and throw an error. If there are local changes for a
264
+ // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
265
+ if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "resubmitDataStoreOp")) {
266
+ throw new telemetry_utils_1.DataCorruptionError("Context is deleted!", {
267
+ callSite: "resubmitDataStoreOp",
268
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: envelope.address }),
269
+ });
270
+ }
271
+ (0, core_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
262
272
  context.reSubmit(envelope.contents, localOpMetadata);
263
273
  }
264
- rollbackDataStoreOp(content, localOpMetadata) {
265
- const envelope = content;
274
+ rollbackDataStoreOp(envelope, localOpMetadata) {
266
275
  const context = this.contexts.get(envelope.address);
267
- (0, common_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
276
+ // If the data store has been deleted, log an error and throw an error. If there are local changes for a
277
+ // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
278
+ if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "rollbackDataStoreOp")) {
279
+ throw new telemetry_utils_1.DataCorruptionError("Context is deleted!", {
280
+ callSite: "rollbackDataStoreOp",
281
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: envelope.address }),
282
+ });
283
+ }
284
+ (0, core_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
268
285
  context.rollback(envelope.contents, localOpMetadata);
269
286
  }
270
- async applyStashedOp(content) {
271
- const envelope = content;
287
+ async applyStashedOp(envelope) {
272
288
  const context = this.contexts.get(envelope.address);
273
- (0, common_utils_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
289
+ // If the data store has been deleted, log an error and ignore this message. This helps prevent document
290
+ // corruption in case the data store that stashed the op is deleted.
291
+ if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "applyStashedOp")) {
292
+ return undefined;
293
+ }
294
+ (0, core_utils_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
274
295
  return context.applyStashedOp(envelope.contents);
275
296
  }
276
297
  async applyStashedAttachOp(message) {
@@ -280,16 +301,27 @@ class DataStores {
280
301
  }
281
302
  processFluidDataStoreOp(message, local, localMessageMetadata) {
282
303
  const envelope = message.contents;
283
- const transformed = Object.assign(Object.assign({}, message), { contents: envelope.contents });
304
+ const transformed = { ...message, contents: envelope.contents };
284
305
  const context = this.contexts.get(envelope.address);
285
- (0, common_utils_1.assert)(!!context, 0x162 /* "There should be a store context for the op" */);
306
+ // If the data store has been deleted, log an error and ignore this message. This helps prevent document
307
+ // corruption in case a deleted data store accidentally submitted an op.
308
+ if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "processFluidDataStoreOp")) {
309
+ return;
310
+ }
311
+ (0, core_utils_1.assert)(!!context, 0x162 /* "There should be a store context for the op" */);
286
312
  context.process(transformed, local, localMessageMetadata);
287
313
  // Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
288
314
  // being used.
289
315
  this.gcNodeUpdated(`/${envelope.address}`, message.timestamp, context.isLoaded ? context.packagePath : undefined);
290
316
  }
291
- async getDataStore(id, wait) {
292
- const context = await this.contexts.getBoundOrRemoted(id, wait);
317
+ async getDataStore(id, requestHeaderData) {
318
+ const headerData = { ...containerRuntime_1.defaultRuntimeHeaderData, ...requestHeaderData };
319
+ if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStore", requestHeaderData)) {
320
+ // The requested data store has been deleted by gc. Create a 404 response exception.
321
+ const request = { url: id };
322
+ throw (0, runtime_utils_1.responseToException)((0, runtime_utils_1.createResponseError)(404, "DataStore was deleted", request), request);
323
+ }
324
+ const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
293
325
  if (context === undefined) {
294
326
  // The requested data store does not exits. Throw a 404 response exception.
295
327
  const request = { url: id };
@@ -297,44 +329,85 @@ class DataStores {
297
329
  }
298
330
  return context;
299
331
  }
300
- processSignal(address, message, local) {
301
- const context = this.contexts.get(address);
332
+ /**
333
+ * Returns the data store requested with the given id if available. Otherwise, returns undefined.
334
+ */
335
+ async getDataStoreIfAvailable(id, requestHeaderData) {
336
+ // If the data store has been deleted, log an error and return undefined.
337
+ if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStoreIfAvailable", requestHeaderData)) {
338
+ return undefined;
339
+ }
340
+ const headerData = { ...containerRuntime_1.defaultRuntimeHeaderData, ...requestHeaderData };
341
+ const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
342
+ if (context === undefined) {
343
+ return undefined;
344
+ }
345
+ return context;
346
+ }
347
+ /**
348
+ * Checks if the data store has been deleted by GC. If so, log an error.
349
+ * @param id - The data store's id.
350
+ * @param context - The data store context.
351
+ * @param callSite - The function name this is called from.
352
+ * @param requestHeaderData - The request header information to log if the data store is deleted.
353
+ * @returns true if the data store is deleted. Otherwise, returns false.
354
+ */
355
+ checkAndLogIfDeleted(id, context, deletedLogSuffix, callSite, requestHeaderData) {
356
+ const dataStoreNodePath = `/${id}`;
357
+ if (!this.isDataStoreDeleted(dataStoreNodePath)) {
358
+ return false;
359
+ }
360
+ this.mc.logger.sendErrorEvent({
361
+ eventName: `GC_Deleted_DataStore_${deletedLogSuffix}`,
362
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ id }),
363
+ callSite,
364
+ headers: JSON.stringify(requestHeaderData),
365
+ exists: context !== undefined,
366
+ });
367
+ return true;
368
+ }
369
+ processSignal(fluidDataStoreId, message, local) {
370
+ const context = this.contexts.get(fluidDataStoreId);
371
+ // If the data store has been deleted, log an error and ignore this message. This helps prevent document
372
+ // corruption in case a deleted data store accidentally submitted a signal.
373
+ if (this.checkAndLogIfDeleted(fluidDataStoreId, context, "Changed", "processSignal")) {
374
+ return;
375
+ }
302
376
  if (!context) {
303
377
  // Attach message may not have been processed yet
304
- (0, common_utils_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
305
- this.logger.sendTelemetryEvent({
378
+ (0, core_utils_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
379
+ this.mc.logger.sendTelemetryEvent({
306
380
  eventName: "SignalFluidDataStoreNotFound",
307
- fluidDataStoreId: {
308
- value: address,
309
- tag: telemetry_utils_1.TelemetryDataTag.PackageData,
310
- },
381
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({
382
+ fluidDataStoreId,
383
+ }),
311
384
  });
312
385
  return;
313
386
  }
314
387
  context.processSignal(message, local);
315
388
  }
316
389
  setConnectionState(connected, clientId) {
317
- for (const [fluidDataStore, context] of this.contexts) {
390
+ for (const [fluidDataStoreId, context] of this.contexts) {
318
391
  try {
319
392
  context.setConnectionState(connected, clientId);
320
393
  }
321
394
  catch (error) {
322
- this.logger.sendErrorEvent({
395
+ this.mc.logger.sendErrorEvent({
323
396
  eventName: "SetConnectionStateError",
324
397
  clientId,
325
- fluidDataStore,
398
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({
399
+ fluidDataStoreId,
400
+ }),
401
+ details: JSON.stringify({
402
+ runtimeConnected: this.runtime.connected,
403
+ connected,
404
+ }),
326
405
  }, error);
327
406
  }
328
407
  }
329
408
  }
330
409
  setAttachState(attachState) {
331
- let eventName;
332
- if (attachState === container_definitions_1.AttachState.Attaching) {
333
- eventName = "attaching";
334
- }
335
- else {
336
- eventName = "attached";
337
- }
410
+ const eventName = attachState === container_definitions_1.AttachState.Attaching ? "attaching" : "attached";
338
411
  for (const [, context] of this.contexts) {
339
412
  // Fire only for bounded stores.
340
413
  if (!this.contexts.isNotBound(context.id)) {
@@ -350,10 +423,17 @@ class DataStores {
350
423
  // Iterate over each store and ask it to snapshot
351
424
  await Promise.all(Array.from(this.contexts)
352
425
  .filter(([_, context]) => {
353
- // Summarizer works only with clients with no local changes!
354
- (0, common_utils_1.assert)(context.attachState !== container_definitions_1.AttachState.Attaching, 0x165 /* "Summarizer cannot work if client has local changes" */);
426
+ // Summarizer works only with clients with no local changes. A data store in attaching
427
+ // state indicates an op was sent to attach a local data store, and the the attach op
428
+ // had not yet round tripped back to the client.
429
+ if (context.attachState === container_definitions_1.AttachState.Attaching) {
430
+ // Formerly assert 0x588
431
+ const error = telemetry_utils_1.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
432
+ throw error;
433
+ }
355
434
  return context.attachState === container_definitions_1.AttachState.Attached;
356
- }).map(async ([contextId, context]) => {
435
+ })
436
+ .map(async ([contextId, context]) => {
357
437
  const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);
358
438
  summaryBuilder.addWithStats(contextId, contextSummary);
359
439
  }));
@@ -373,9 +453,9 @@ class DataStores {
373
453
  // Take summary of bounded data stores only, make sure we haven't summarized them already
374
454
  // and no attach op has been fired for that data store because for loader versions <= 0.24
375
455
  // we set attach state as "attaching" before taking createNew summary.
376
- !(this.contexts.isNotBound(key)
377
- || builderTree[key]
378
- || this.attachOpFiredForDataStore.has(key)))
456
+ !(this.contexts.isNotBound(key) ||
457
+ builderTree[key] ||
458
+ this.attachOpFiredForDataStore.has(key)))
379
459
  .map(([key, value]) => {
380
460
  let dataStoreSummary;
381
461
  if (value.isLoaded) {
@@ -385,7 +465,7 @@ class DataStores {
385
465
  else {
386
466
  // If this data store is not yet loaded, then there should be no changes in the snapshot from
387
467
  // which it was created as it is detached container. So just use the previous snapshot.
388
- (0, common_utils_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
468
+ (0, core_utils_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
389
469
  dataStoreSummary = (0, runtime_utils_1.convertSnapshotTreeToSummaryTree)(this.baseSnapshot.trees[key]);
390
470
  }
391
471
  builder.addWithStats(key, dataStoreSummary);
@@ -401,7 +481,7 @@ class DataStores {
401
481
  async updateStateBeforeGC() {
402
482
  for (const id of this.dataStoresSinceLastGC) {
403
483
  const context = this.contexts.get(id);
404
- (0, common_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
484
+ (0, core_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
405
485
  if (await context.isRoot()) {
406
486
  // A root data store is basically a reference from the container runtime to the data store.
407
487
  const handle = new datastore_1.FluidObjectHandle(context, id, this.runtime.IFluidHandleContext);
@@ -412,22 +492,33 @@ class DataStores {
412
492
  }
413
493
  /**
414
494
  * Generates data used for garbage collection. It does the following:
495
+ *
415
496
  * 1. Calls into each child data store context to get its GC data.
497
+ *
416
498
  * 2. Prefixes the child context's id to the GC nodes in the child's GC data. This makes sure that the node can be
417
- * identified as belonging to the child.
499
+ * identified as belonging to the child.
500
+ *
418
501
  * 3. Adds a GC node for this channel to the nodes received from the children. All these nodes together represent
419
- * the GC data of this channel.
502
+ * the GC data of this channel.
503
+ *
420
504
  * @param fullGC - true to bypass optimizations and force full generation of GC data.
421
505
  */
422
506
  async getGCData(fullGC = false) {
423
- const builder = new garbage_collector_1.GCDataBuilder();
507
+ const builder = new runtime_utils_1.GCDataBuilder();
424
508
  // Iterate over each store and get their GC data.
425
509
  await Promise.all(Array.from(this.contexts)
426
510
  .filter(([_, context]) => {
427
- // Get GC data only for attached contexts. Detached contexts are not connected in the GC reference
428
- // graph so any references they might have won't be connected as well.
511
+ // Summarizer client and hence GC works only with clients with no local changes. A data store in
512
+ // attaching state indicates an op was sent to attach a local data store, and the the attach op
513
+ // had not yet round tripped back to the client.
514
+ // Formerly assert 0x589
515
+ if (context.attachState === container_definitions_1.AttachState.Attaching) {
516
+ const error = telemetry_utils_1.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
517
+ throw error;
518
+ }
429
519
  return context.attachState === container_definitions_1.AttachState.Attached;
430
- }).map(async ([contextId, context]) => {
520
+ })
521
+ .map(async ([contextId, context]) => {
431
522
  const contextGCData = await context.getGCData(fullGC);
432
523
  // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
433
524
  // This also gradually builds the id of each node to be a path from the root.
@@ -440,28 +531,24 @@ class DataStores {
440
531
  /**
441
532
  * After GC has run, called to notify this Container's data stores of routes that are used in it.
442
533
  * @param usedRoutes - The routes that are used in all data stores in this Container.
443
- * @param gcTimestamp - The time when GC was run that generated these used routes. If any node node becomes
444
- * unreferenced as part of this GC run, this should be used to update the time when it happens.
445
534
  */
446
- updateUsedRoutes(usedRoutes, gcTimestamp) {
447
- var _a;
535
+ updateUsedRoutes(usedRoutes) {
448
536
  // Get a map of data store ids to routes used in it.
449
- const usedDataStoreRoutes = (0, garbage_collector_1.unpackChildNodesUsedRoutes)(usedRoutes);
537
+ const usedDataStoreRoutes = (0, runtime_utils_1.unpackChildNodesUsedRoutes)(usedRoutes);
450
538
  // Verify that the used routes are correct.
451
539
  for (const [id] of usedDataStoreRoutes) {
452
- (0, common_utils_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
540
+ (0, core_utils_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
453
541
  }
454
542
  // Update the used routes in each data store. Used routes is empty for unused data stores.
455
543
  for (const [contextId, context] of this.contexts) {
456
- context.updateUsedRoutes((_a = usedDataStoreRoutes.get(contextId)) !== null && _a !== void 0 ? _a : [], gcTimestamp);
544
+ context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);
457
545
  }
458
546
  }
459
547
  /**
460
- * When running GC in test mode, this is called to delete objects whose routes are unused. This enables testing
461
- * scenarios with accessing deleted content.
548
+ * This is called to update objects whose routes are unused. The unused objects are deleted.
462
549
  * @param unusedRoutes - The routes that are unused in all data stores in this Container.
463
550
  */
464
- deleteUnusedRoutes(unusedRoutes) {
551
+ updateUnusedRoutes(unusedRoutes) {
465
552
  for (const route of unusedRoutes) {
466
553
  const pathParts = route.split("/");
467
554
  // Delete data store only if its route (/datastoreId) is in unusedRoutes. We don't want to delete a data
@@ -470,13 +557,76 @@ class DataStores {
470
557
  continue;
471
558
  }
472
559
  const dataStoreId = pathParts[1];
473
- (0, common_utils_1.assert)(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
560
+ (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
474
561
  // Delete the contexts of unused data stores.
475
562
  this.contexts.delete(dataStoreId);
476
563
  // Delete the summarizer node of the unused data stores.
477
564
  this.deleteChildSummarizerNodeFn(dataStoreId);
478
565
  }
479
566
  }
567
+ /**
568
+ * Delete data stores and its objects that are sweep ready.
569
+ * @param sweepReadyDataStoreRoutes - The routes of data stores and its objects that are sweep ready and should
570
+ * be deleted.
571
+ * @returns The routes of data stores and its objects that were deleted.
572
+ */
573
+ deleteSweepReadyNodes(sweepReadyDataStoreRoutes) {
574
+ // If sweep for data stores is not enabled, return empty list indicating nothing is deleted.
575
+ if (this.mc.config.getBoolean(gc_1.disableDatastoreSweepKey) === true) {
576
+ return [];
577
+ }
578
+ for (const route of sweepReadyDataStoreRoutes) {
579
+ const pathParts = route.split("/");
580
+ const dataStoreId = pathParts[1];
581
+ // Ignore sub-data store routes because a data store and its sub-routes are deleted together, so, we only
582
+ // need to delete the data store.
583
+ if (pathParts.length > 2) {
584
+ continue;
585
+ }
586
+ const dataStoreContext = this.contexts.get(dataStoreId);
587
+ if (dataStoreContext === undefined) {
588
+ this.mc.logger.sendErrorEvent({
589
+ eventName: "DeletedDataStoreNotFound",
590
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ id: dataStoreId }),
591
+ details: {
592
+ alreadyDeleted: this.isDataStoreDeleted(dataStoreId),
593
+ },
594
+ });
595
+ continue;
596
+ }
597
+ dataStoreContext.delete();
598
+ // Delete the contexts of sweep ready data stores.
599
+ this.contexts.delete(dataStoreId);
600
+ // Delete the summarizer node of the sweep ready data stores.
601
+ this.deleteChildSummarizerNodeFn(dataStoreId);
602
+ }
603
+ return Array.from(sweepReadyDataStoreRoutes);
604
+ }
605
+ /**
606
+ * This is called to update objects whose routes are tombstones.
607
+ *
608
+ * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
609
+ * Tombstoned objects are eventually deleted by GC.
610
+ *
611
+ * @param tombstonedRoutes - The routes that are tombstones in all data stores in this Container.
612
+ */
613
+ updateTombstonedRoutes(tombstonedRoutes) {
614
+ const tombstonedDataStoresSet = new Set();
615
+ for (const route of tombstonedRoutes) {
616
+ const pathParts = route.split("/");
617
+ // Tombstone data store only if its route (/datastoreId) is directly in tombstoneRoutes.
618
+ if (pathParts.length > 2) {
619
+ continue;
620
+ }
621
+ const dataStoreId = pathParts[1];
622
+ (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
623
+ tombstonedDataStoresSet.add(dataStoreId);
624
+ }
625
+ // Update the used routes in each data store. Used routes is empty for unused data stores.
626
+ for (const [contextId, context] of this.contexts) {
627
+ context.setTombstone(tombstonedDataStoresSet.has(contextId));
628
+ }
629
+ }
480
630
  /**
481
631
  * Returns the outbound routes of this channel. Only root data stores are considered referenced and their paths are
482
632
  * part of outbound routes.
@@ -495,11 +645,10 @@ class DataStores {
495
645
  * Called by GC to retrieve the package path of a data store node with the given path.
496
646
  */
497
647
  async getDataStorePackagePath(nodePath) {
498
- var _a;
499
648
  // If the node belongs to a data store, return its package path. For DDSes, we return the package path of the
500
649
  // data store that contains it.
501
650
  const context = this.contexts.get(nodePath.split("/")[1]);
502
- return (_a = (await (context === null || context === void 0 ? void 0 : context.getInitialSnapshotDetails()))) === null || _a === void 0 ? void 0 : _a.pkg;
651
+ return (await context?.getInitialSnapshotDetails())?.pkg;
503
652
  }
504
653
  /**
505
654
  * Called by GC to determine if a node is for a data store or for an object within a data store (for e.g. DDS).
@@ -513,9 +662,9 @@ class DataStores {
513
662
  // Data stores paths are of the format "/dataStoreId".
514
663
  // Sub data store paths are of the format "/dataStoreId/subPath/...".
515
664
  if (pathParts.length === 2) {
516
- return garbageCollection_1.GCNodeType.DataStore;
665
+ return gc_1.GCNodeType.DataStore;
517
666
  }
518
- return garbageCollection_1.GCNodeType.SubDataStore;
667
+ return gc_1.GCNodeType.SubDataStore;
519
668
  }
520
669
  }
521
670
  exports.DataStores = DataStores;
@@ -523,21 +672,24 @@ function getSummaryForDatastores(snapshot, metadata) {
523
672
  if (!snapshot) {
524
673
  return undefined;
525
674
  }
526
- if ((0, summaryFormat_1.rootHasIsolatedChannels)(metadata)) {
675
+ if ((0, summary_1.rootHasIsolatedChannels)(metadata)) {
527
676
  const datastoresSnapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
528
- (0, common_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
677
+ (0, core_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
529
678
  return datastoresSnapshot;
530
679
  }
531
680
  else {
532
681
  // back-compat: strip out all non-datastore paths before giving to DataStores object.
533
682
  const datastoresTrees = {};
534
683
  for (const [key, value] of Object.entries(snapshot.trees)) {
535
- if (!summaryFormat_1.nonDataStorePaths.includes(key)) {
684
+ if (!summary_1.nonDataStorePaths.includes(key)) {
536
685
  datastoresTrees[key] = value;
537
686
  }
538
687
  }
539
- return Object.assign(Object.assign({}, snapshot), { trees: datastoresTrees });
688
+ return {
689
+ ...snapshot,
690
+ trees: datastoresTrees,
691
+ };
540
692
  }
541
693
  }
542
694
  exports.getSummaryForDatastores = getSummaryForDatastores;
543
- //# sourceMappingURL=dataStores.js.map
695
+ //# sourceMappingURL=dataStores.cjs.map