@fluidframework/container-runtime 2.0.0-dev-rc.1.0.0.228517 → 2.0.0-dev-rc.2.0.0.245554

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (695) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +5 -5
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +54 -0
  4. package/README.md +46 -1
  5. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  6. package/api-extractor-lint.json +1 -1
  7. package/api-extractor.json +1 -1
  8. package/api-report/container-runtime.api.md +435 -33
  9. package/dist/batchTracker.d.ts +1 -2
  10. package/dist/batchTracker.d.ts.map +1 -1
  11. package/dist/batchTracker.js.map +1 -1
  12. package/dist/blobManager.d.ts +0 -5
  13. package/dist/blobManager.d.ts.map +1 -1
  14. package/dist/blobManager.js +0 -12
  15. package/dist/blobManager.js.map +1 -1
  16. package/dist/channelCollection.d.ts +225 -0
  17. package/dist/channelCollection.d.ts.map +1 -0
  18. package/dist/{dataStores.js → channelCollection.js} +449 -143
  19. package/dist/channelCollection.js.map +1 -0
  20. package/dist/connectionTelemetry.d.ts +11 -1
  21. package/dist/connectionTelemetry.d.ts.map +1 -1
  22. package/dist/connectionTelemetry.js +42 -4
  23. package/dist/connectionTelemetry.js.map +1 -1
  24. package/dist/container-runtime-alpha.d.ts +138 -49
  25. package/dist/container-runtime-beta.d.ts +75 -9
  26. package/dist/container-runtime-public.d.ts +75 -9
  27. package/dist/container-runtime-untrimmed.d.ts +717 -49
  28. package/dist/containerHandleContext.d.ts +1 -1
  29. package/dist/containerHandleContext.d.ts.map +1 -1
  30. package/dist/containerHandleContext.js.map +1 -1
  31. package/dist/containerRuntime.d.ts +84 -64
  32. package/dist/containerRuntime.d.ts.map +1 -1
  33. package/dist/containerRuntime.js +550 -427
  34. package/dist/containerRuntime.js.map +1 -1
  35. package/dist/dataStore.d.ts +2 -3
  36. package/dist/dataStore.d.ts.map +1 -1
  37. package/dist/dataStore.js +12 -11
  38. package/dist/dataStore.js.map +1 -1
  39. package/dist/dataStoreContext.d.ts +118 -38
  40. package/dist/dataStoreContext.d.ts.map +1 -1
  41. package/dist/dataStoreContext.js +249 -161
  42. package/dist/dataStoreContext.js.map +1 -1
  43. package/dist/dataStoreContexts.d.ts +2 -1
  44. package/dist/dataStoreContexts.d.ts.map +1 -1
  45. package/dist/dataStoreContexts.js +1 -0
  46. package/dist/dataStoreContexts.js.map +1 -1
  47. package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
  48. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  49. package/dist/deltaManagerSummarizerProxy.js +91 -5
  50. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  51. package/dist/gc/garbageCollection.d.ts +29 -7
  52. package/dist/gc/garbageCollection.d.ts.map +1 -1
  53. package/dist/gc/garbageCollection.js +179 -98
  54. package/dist/gc/garbageCollection.js.map +1 -1
  55. package/dist/gc/gcConfigs.d.ts +2 -2
  56. package/dist/gc/gcConfigs.d.ts.map +1 -1
  57. package/dist/gc/gcConfigs.js +30 -23
  58. package/dist/gc/gcConfigs.js.map +1 -1
  59. package/dist/gc/gcDefinitions.d.ts +40 -15
  60. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  61. package/dist/gc/gcDefinitions.js +11 -4
  62. package/dist/gc/gcDefinitions.js.map +1 -1
  63. package/dist/gc/gcHelpers.d.ts +2 -2
  64. package/dist/gc/gcHelpers.d.ts.map +1 -1
  65. package/dist/gc/gcHelpers.js.map +1 -1
  66. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  67. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  68. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  69. package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
  70. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  71. package/dist/gc/gcSummaryStateTracker.js +18 -6
  72. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  73. package/dist/gc/gcTelemetry.d.ts +7 -7
  74. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  75. package/dist/gc/gcTelemetry.js +20 -20
  76. package/dist/gc/gcTelemetry.js.map +1 -1
  77. package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
  78. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  79. package/dist/gc/gcUnreferencedStateTracker.js +22 -11
  80. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  81. package/dist/gc/index.d.ts +8 -8
  82. package/dist/gc/index.d.ts.map +1 -1
  83. package/dist/gc/index.js +40 -38
  84. package/dist/gc/index.js.map +1 -1
  85. package/dist/index.d.ts +11 -20
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +36 -40
  88. package/dist/index.js.map +1 -1
  89. package/dist/messageTypes.d.ts +4 -4
  90. package/dist/messageTypes.d.ts.map +1 -1
  91. package/dist/messageTypes.js.map +1 -1
  92. package/dist/opLifecycle/batchManager.d.ts +2 -2
  93. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  94. package/dist/opLifecycle/batchManager.js.map +1 -1
  95. package/dist/opLifecycle/definitions.d.ts +2 -2
  96. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  97. package/dist/opLifecycle/definitions.js.map +1 -1
  98. package/dist/opLifecycle/index.d.ts +8 -8
  99. package/dist/opLifecycle/index.d.ts.map +1 -1
  100. package/dist/opLifecycle/index.js +18 -18
  101. package/dist/opLifecycle/index.js.map +1 -1
  102. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  103. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  104. package/dist/opLifecycle/opCompressor.js +4 -4
  105. package/dist/opLifecycle/opCompressor.js.map +1 -1
  106. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  107. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  108. package/dist/opLifecycle/opDecompressor.js +3 -3
  109. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  110. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  111. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  112. package/dist/opLifecycle/opGroupingManager.js +1 -10
  113. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  114. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  115. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  116. package/dist/opLifecycle/opSplitter.js +5 -5
  117. package/dist/opLifecycle/opSplitter.js.map +1 -1
  118. package/dist/opLifecycle/outbox.d.ts +7 -7
  119. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  120. package/dist/opLifecycle/outbox.js +20 -12
  121. package/dist/opLifecycle/outbox.js.map +1 -1
  122. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  123. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  124. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  125. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  126. package/dist/package.json +3 -0
  127. package/dist/packageVersion.d.ts +1 -1
  128. package/dist/packageVersion.js +1 -1
  129. package/dist/packageVersion.js.map +1 -1
  130. package/dist/pendingStateManager.d.ts +2 -1
  131. package/dist/pendingStateManager.d.ts.map +1 -1
  132. package/dist/pendingStateManager.js +18 -10
  133. package/dist/pendingStateManager.js.map +1 -1
  134. package/dist/scheduleManager.d.ts +1 -2
  135. package/dist/scheduleManager.d.ts.map +1 -1
  136. package/dist/scheduleManager.js +5 -5
  137. package/dist/scheduleManager.js.map +1 -1
  138. package/dist/summary/index.d.ts +12 -12
  139. package/dist/summary/index.d.ts.map +1 -1
  140. package/dist/summary/index.js +43 -43
  141. package/dist/summary/index.js.map +1 -1
  142. package/dist/summary/orderedClientElection.js +8 -8
  143. package/dist/summary/orderedClientElection.js.map +1 -1
  144. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  145. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  146. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  147. package/dist/summary/runningSummarizer.d.ts +11 -10
  148. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  149. package/dist/summary/runningSummarizer.js +114 -81
  150. package/dist/summary/runningSummarizer.js.map +1 -1
  151. package/dist/summary/summarizer.d.ts +4 -4
  152. package/dist/summary/summarizer.d.ts.map +1 -1
  153. package/dist/summary/summarizer.js +6 -6
  154. package/dist/summary/summarizer.js.map +1 -1
  155. package/dist/summary/summarizerClientElection.d.ts +2 -2
  156. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  157. package/dist/summary/summarizerClientElection.js.map +1 -1
  158. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  159. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  160. package/dist/summary/summarizerHeuristics.js.map +1 -1
  161. package/dist/summary/summarizerNode/index.d.ts +3 -3
  162. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  163. package/dist/summary/summarizerNode/index.js +4 -4
  164. package/dist/summary/summarizerNode/index.js.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  166. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  167. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  168. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  169. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  170. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  171. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  172. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  173. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  174. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  175. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  176. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  177. package/dist/summary/summarizerTypes.d.ts +10 -21
  178. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  179. package/dist/summary/summarizerTypes.js.map +1 -1
  180. package/dist/summary/summaryFormat.d.ts +15 -2
  181. package/dist/summary/summaryFormat.d.ts.map +1 -1
  182. package/dist/summary/summaryFormat.js.map +1 -1
  183. package/dist/summary/summaryGenerator.d.ts +6 -5
  184. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  185. package/dist/summary/summaryGenerator.js +10 -1
  186. package/dist/summary/summaryGenerator.js.map +1 -1
  187. package/dist/summary/summaryManager.d.ts +5 -6
  188. package/dist/summary/summaryManager.d.ts.map +1 -1
  189. package/dist/summary/summaryManager.js +4 -5
  190. package/dist/summary/summaryManager.js.map +1 -1
  191. package/dist/tsdoc-metadata.json +1 -1
  192. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  193. package/lib/batchTracker.d.ts.map +1 -0
  194. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  195. package/lib/batchTracker.js.map +1 -0
  196. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -6
  197. package/lib/blobManager.d.ts.map +1 -0
  198. package/lib/{blobManager.mjs → blobManager.js} +1 -13
  199. package/lib/blobManager.js.map +1 -0
  200. package/lib/channelCollection.d.ts +225 -0
  201. package/lib/channelCollection.d.ts.map +1 -0
  202. package/lib/{dataStores.mjs → channelCollection.js} +436 -133
  203. package/lib/channelCollection.js.map +1 -0
  204. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  205. package/lib/connectionTelemetry.d.ts.map +1 -0
  206. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  207. package/lib/connectionTelemetry.js.map +1 -0
  208. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +138 -49
  209. package/lib/{container-runtime-beta.d.mts → container-runtime-beta.d.ts} +75 -9
  210. package/lib/{container-runtime-public.d.mts → container-runtime-public.d.ts} +75 -9
  211. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +717 -49
  212. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  213. package/lib/containerHandleContext.d.ts.map +1 -0
  214. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  215. package/lib/containerHandleContext.js.map +1 -0
  216. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +89 -65
  217. package/lib/containerRuntime.d.ts.map +1 -0
  218. package/lib/{containerRuntime.mjs → containerRuntime.js} +469 -348
  219. package/lib/containerRuntime.js.map +1 -0
  220. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  221. package/lib/dataStore.d.ts.map +1 -0
  222. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  223. package/lib/dataStore.js.map +1 -0
  224. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +119 -39
  225. package/lib/dataStoreContext.d.ts.map +1 -0
  226. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +241 -153
  227. package/lib/dataStoreContext.js.map +1 -0
  228. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +3 -2
  229. package/lib/dataStoreContexts.d.ts.map +1 -0
  230. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +2 -1
  231. package/lib/dataStoreContexts.js.map +1 -0
  232. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  233. package/lib/dataStoreRegistry.d.ts.map +1 -0
  234. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  235. package/lib/dataStoreRegistry.js.map +1 -0
  236. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  237. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  238. package/lib/deltaManagerSummarizerProxy.js +124 -0
  239. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  240. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  241. package/lib/deltaScheduler.d.ts.map +1 -0
  242. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  243. package/lib/deltaScheduler.js.map +1 -0
  244. package/lib/{error.d.mts → error.d.ts} +1 -1
  245. package/lib/error.d.ts.map +1 -0
  246. package/lib/{error.mjs → error.js} +1 -1
  247. package/lib/error.js.map +1 -0
  248. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +30 -8
  249. package/lib/gc/garbageCollection.d.ts.map +1 -0
  250. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +149 -68
  251. package/lib/gc/garbageCollection.js.map +1 -0
  252. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  253. package/lib/gc/gcConfigs.d.ts.map +1 -0
  254. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +14 -7
  255. package/lib/gc/gcConfigs.js.map +1 -0
  256. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +41 -16
  257. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  258. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +11 -4
  259. package/lib/gc/gcDefinitions.js.map +1 -0
  260. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  261. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  262. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  263. package/lib/gc/gcHelpers.js.map +1 -0
  264. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  265. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  266. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  267. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  268. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  269. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  270. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  271. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  272. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
  273. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  274. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
  275. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  276. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
  277. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  278. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
  279. package/lib/gc/gcTelemetry.js.map +1 -0
  280. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
  281. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  282. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
  283. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  284. package/lib/gc/index.d.ts +13 -0
  285. package/lib/gc/index.d.ts.map +1 -0
  286. package/lib/gc/{index.mjs → index.js} +8 -8
  287. package/lib/gc/index.js.map +1 -0
  288. package/lib/{index.d.mts → index.d.ts} +12 -21
  289. package/lib/index.d.ts.map +1 -0
  290. package/lib/index.js +15 -0
  291. package/lib/index.js.map +1 -0
  292. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  293. package/lib/messageTypes.d.ts.map +1 -0
  294. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  295. package/lib/messageTypes.js.map +1 -0
  296. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  297. package/lib/metadata.d.ts.map +1 -0
  298. package/lib/{metadata.mjs → metadata.js} +1 -1
  299. package/lib/metadata.js.map +1 -0
  300. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  301. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  302. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  303. package/lib/opLifecycle/batchManager.js.map +1 -0
  304. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  305. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  306. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  307. package/lib/opLifecycle/definitions.js.map +1 -0
  308. package/lib/opLifecycle/index.d.ts +13 -0
  309. package/lib/opLifecycle/index.d.ts.map +1 -0
  310. package/lib/opLifecycle/index.js +12 -0
  311. package/lib/opLifecycle/index.js.map +1 -0
  312. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  313. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  314. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  315. package/lib/opLifecycle/opCompressor.js.map +1 -0
  316. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  317. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  318. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  319. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  320. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  321. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  322. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  323. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  324. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  325. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  326. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  327. package/lib/opLifecycle/opSplitter.js.map +1 -0
  328. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  329. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  330. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  331. package/lib/opLifecycle/outbox.js.map +1 -0
  332. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  333. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  334. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  335. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  336. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  337. package/lib/opProperties.d.ts.map +1 -0
  338. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  339. package/lib/opProperties.js.map +1 -0
  340. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  341. package/lib/packageVersion.d.ts.map +1 -0
  342. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  343. package/lib/packageVersion.js.map +1 -0
  344. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  345. package/lib/pendingStateManager.d.ts.map +1 -0
  346. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  347. package/lib/pendingStateManager.js.map +1 -0
  348. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  349. package/lib/scheduleManager.d.ts.map +1 -0
  350. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  351. package/lib/scheduleManager.js.map +1 -0
  352. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  353. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  354. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  355. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  356. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  357. package/lib/summary/index.d.ts.map +1 -0
  358. package/lib/summary/{index.mjs → index.js} +12 -12
  359. package/lib/summary/index.js.map +1 -0
  360. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  361. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  362. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  363. package/lib/summary/orderedClientElection.js.map +1 -0
  364. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  365. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  366. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  367. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  368. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  369. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  370. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  371. package/lib/summary/runningSummarizer.js.map +1 -0
  372. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  373. package/lib/summary/summarizer.d.ts.map +1 -0
  374. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  375. package/lib/summary/summarizer.js.map +1 -0
  376. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  377. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  378. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  379. package/lib/summary/summarizerClientElection.js.map +1 -0
  380. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  381. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  382. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  383. package/lib/summary/summarizerHeuristics.js.map +1 -0
  384. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  385. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  386. package/lib/summary/summarizerNode/index.js +7 -0
  387. package/lib/summary/summarizerNode/index.js.map +1 -0
  388. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  389. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  390. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  391. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  392. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  393. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  394. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  395. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  396. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  397. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  398. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  399. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  400. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  401. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  402. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  403. package/lib/summary/summarizerTypes.js.map +1 -0
  404. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  405. package/lib/summary/summaryCollection.d.ts.map +1 -0
  406. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  407. package/lib/summary/summaryCollection.js.map +1 -0
  408. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  409. package/lib/summary/summaryFormat.d.ts.map +1 -0
  410. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  411. package/lib/summary/summaryFormat.js.map +1 -0
  412. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  413. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  414. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  415. package/lib/summary/summaryGenerator.js.map +1 -0
  416. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  417. package/lib/summary/summaryManager.d.ts.map +1 -0
  418. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  419. package/lib/summary/summaryManager.js.map +1 -0
  420. package/lib/test/batchTracker.spec.js +88 -0
  421. package/lib/test/batchTracker.spec.js.map +1 -0
  422. package/lib/test/blobManager.spec.js +835 -0
  423. package/lib/test/blobManager.spec.js.map +1 -0
  424. package/lib/test/channelCollection.spec.js +138 -0
  425. package/lib/test/channelCollection.spec.js.map +1 -0
  426. package/lib/test/containerRuntime.spec.js +1748 -0
  427. package/lib/test/containerRuntime.spec.js.map +1 -0
  428. package/lib/test/dataStoreContext.spec.js +771 -0
  429. package/lib/test/dataStoreContext.spec.js.map +1 -0
  430. package/lib/test/dataStoreCreation.spec.js +303 -0
  431. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  432. package/lib/test/dataStoreRegistry.spec.js +26 -0
  433. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  434. package/lib/test/fuzz/fuzzUtils.js +66 -0
  435. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  436. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  437. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  438. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  439. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  440. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  441. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  442. package/lib/test/gc/garbageCollection.spec.js +1464 -0
  443. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  444. package/lib/test/gc/gcConfigs.spec.js +689 -0
  445. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  446. package/lib/test/gc/gcHelpers.spec.js +110 -0
  447. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  448. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  449. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  450. package/lib/test/gc/gcStats.spec.js +390 -0
  451. package/lib/test/gc/gcStats.spec.js.map +1 -0
  452. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  453. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  454. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  455. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  456. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  457. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  458. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  459. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  460. package/lib/test/getPendingBlobs.spec.js +193 -0
  461. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  462. package/lib/test/hardwareStats.spec.js +93 -0
  463. package/lib/test/hardwareStats.spec.js.map +1 -0
  464. package/lib/test/index.js +6 -0
  465. package/lib/test/index.js.map +1 -0
  466. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  467. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  468. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  469. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  470. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  471. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  472. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  473. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  474. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  475. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  476. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  477. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  478. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  479. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  480. package/lib/test/pendingStateManager.spec.js +329 -0
  481. package/lib/test/pendingStateManager.spec.js.map +1 -0
  482. package/lib/test/scheduleManager.spec.js +270 -0
  483. package/lib/test/scheduleManager.spec.js.map +1 -0
  484. package/lib/test/summarizerNode.spec.js +326 -0
  485. package/lib/test/summarizerNode.spec.js.map +1 -0
  486. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  487. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  488. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  489. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  490. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  491. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  492. package/lib/test/summary/summarizer.spec.js +29 -0
  493. package/lib/test/summary/summarizer.spec.js.map +1 -0
  494. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  495. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  496. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  497. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  498. package/lib/test/summary/summaryCollection.spec.js +200 -0
  499. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  500. package/lib/test/summary/summaryManager.spec.js +430 -0
  501. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  502. package/lib/test/summary/testQuorumClients.js +34 -0
  503. package/lib/test/summary/testQuorumClients.js.map +1 -0
  504. package/lib/test/throttler.spec.js +175 -0
  505. package/lib/test/throttler.spec.js.map +1 -0
  506. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  507. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  508. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  509. package/lib/throttler.d.ts.map +1 -0
  510. package/lib/{throttler.mjs → throttler.js} +1 -1
  511. package/lib/throttler.js.map +1 -0
  512. package/package.json +106 -87
  513. package/src/batchTracker.ts +1 -1
  514. package/src/blobManager.ts +1 -15
  515. package/src/{dataStores.ts → channelCollection.ts} +622 -170
  516. package/src/connectionTelemetry.ts +42 -3
  517. package/src/containerHandleContext.ts +1 -1
  518. package/src/containerRuntime.ts +683 -483
  519. package/src/dataStore.ts +16 -15
  520. package/src/dataStoreContext.ts +378 -216
  521. package/src/dataStoreContexts.ts +2 -1
  522. package/src/deltaManagerSummarizerProxy.ts +132 -7
  523. package/src/gc/garbageCollection.ts +167 -71
  524. package/src/gc/gcConfigs.ts +17 -7
  525. package/src/gc/gcDefinitions.ts +42 -16
  526. package/src/gc/gcHelpers.ts +2 -2
  527. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  528. package/src/gc/gcSummaryStateTracker.ts +19 -7
  529. package/src/gc/gcTelemetry.ts +10 -9
  530. package/src/gc/gcUnreferencedStateTracker.ts +12 -1
  531. package/src/gc/index.ts +11 -9
  532. package/src/index.ts +29 -26
  533. package/src/messageTypes.ts +4 -4
  534. package/src/opLifecycle/README.md +2 -4
  535. package/src/opLifecycle/batchManager.ts +2 -2
  536. package/src/opLifecycle/definitions.ts +2 -2
  537. package/src/opLifecycle/index.ts +8 -8
  538. package/src/opLifecycle/opCompressor.ts +3 -3
  539. package/src/opLifecycle/opDecompressor.ts +3 -3
  540. package/src/opLifecycle/opGroupingManager.ts +3 -12
  541. package/src/opLifecycle/opSplitter.ts +3 -3
  542. package/src/opLifecycle/outbox.ts +29 -9
  543. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  544. package/src/packageVersion.ts +1 -1
  545. package/src/pendingStateManager.ts +19 -13
  546. package/src/scheduleManager.ts +4 -4
  547. package/src/summary/index.ts +13 -12
  548. package/src/summary/orderedClientElection.ts +1 -1
  549. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  550. package/src/summary/runningSummarizer.ts +141 -93
  551. package/src/summary/summarizer.ts +7 -7
  552. package/src/summary/summarizerClientElection.ts +2 -2
  553. package/src/summary/summarizerHeuristics.ts +3 -3
  554. package/src/summary/summarizerNode/index.ts +6 -3
  555. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  556. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  557. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  558. package/src/summary/summarizerTypes.ts +12 -24
  559. package/src/summary/summaryFormat.ts +16 -2
  560. package/src/summary/summaryGenerator.ts +16 -4
  561. package/src/summary/summaryManager.ts +6 -7
  562. package/tsconfig.cjs.json +7 -0
  563. package/tsconfig.json +2 -5
  564. package/dist/dataStores.d.ts +0 -149
  565. package/dist/dataStores.d.ts.map +0 -1
  566. package/dist/dataStores.js.map +0 -1
  567. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  568. package/dist/deltaManagerProxyBase.js +0 -77
  569. package/dist/deltaManagerProxyBase.js.map +0 -1
  570. package/lib/batchTracker.d.mts.map +0 -1
  571. package/lib/batchTracker.mjs.map +0 -1
  572. package/lib/blobManager.d.mts.map +0 -1
  573. package/lib/blobManager.mjs.map +0 -1
  574. package/lib/connectionTelemetry.d.mts.map +0 -1
  575. package/lib/connectionTelemetry.mjs.map +0 -1
  576. package/lib/containerHandleContext.d.mts.map +0 -1
  577. package/lib/containerHandleContext.mjs.map +0 -1
  578. package/lib/containerRuntime.d.mts.map +0 -1
  579. package/lib/containerRuntime.mjs.map +0 -1
  580. package/lib/dataStore.d.mts.map +0 -1
  581. package/lib/dataStore.mjs.map +0 -1
  582. package/lib/dataStoreContext.d.mts.map +0 -1
  583. package/lib/dataStoreContext.mjs.map +0 -1
  584. package/lib/dataStoreContexts.d.mts.map +0 -1
  585. package/lib/dataStoreContexts.mjs.map +0 -1
  586. package/lib/dataStoreRegistry.d.mts.map +0 -1
  587. package/lib/dataStoreRegistry.mjs.map +0 -1
  588. package/lib/dataStores.d.mts +0 -149
  589. package/lib/dataStores.d.mts.map +0 -1
  590. package/lib/dataStores.mjs.map +0 -1
  591. package/lib/deltaManagerProxyBase.d.mts +0 -35
  592. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  593. package/lib/deltaManagerProxyBase.mjs +0 -73
  594. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  595. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  596. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  597. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  598. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  599. package/lib/deltaScheduler.d.mts.map +0 -1
  600. package/lib/deltaScheduler.mjs.map +0 -1
  601. package/lib/error.d.mts.map +0 -1
  602. package/lib/error.mjs.map +0 -1
  603. package/lib/gc/garbageCollection.d.mts.map +0 -1
  604. package/lib/gc/garbageCollection.mjs.map +0 -1
  605. package/lib/gc/gcConfigs.d.mts.map +0 -1
  606. package/lib/gc/gcConfigs.mjs.map +0 -1
  607. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  608. package/lib/gc/gcDefinitions.mjs.map +0 -1
  609. package/lib/gc/gcHelpers.mjs.map +0 -1
  610. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  611. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  612. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  613. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  614. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  615. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  616. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  617. package/lib/gc/gcTelemetry.mjs.map +0 -1
  618. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  619. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  620. package/lib/gc/index.d.mts +0 -13
  621. package/lib/gc/index.d.mts.map +0 -1
  622. package/lib/gc/index.mjs.map +0 -1
  623. package/lib/index.d.mts.map +0 -1
  624. package/lib/index.mjs +0 -24
  625. package/lib/index.mjs.map +0 -1
  626. package/lib/messageTypes.d.mts.map +0 -1
  627. package/lib/messageTypes.mjs.map +0 -1
  628. package/lib/metadata.d.mts.map +0 -1
  629. package/lib/metadata.mjs.map +0 -1
  630. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  631. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  632. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  633. package/lib/opLifecycle/definitions.mjs.map +0 -1
  634. package/lib/opLifecycle/index.d.mts +0 -13
  635. package/lib/opLifecycle/index.d.mts.map +0 -1
  636. package/lib/opLifecycle/index.mjs +0 -12
  637. package/lib/opLifecycle/index.mjs.map +0 -1
  638. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  639. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  640. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  641. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  642. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  643. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  644. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  645. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  646. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  647. package/lib/opLifecycle/outbox.mjs.map +0 -1
  648. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  649. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  650. package/lib/opProperties.d.mts.map +0 -1
  651. package/lib/opProperties.mjs.map +0 -1
  652. package/lib/packageVersion.d.mts.map +0 -1
  653. package/lib/packageVersion.mjs.map +0 -1
  654. package/lib/pendingStateManager.d.mts.map +0 -1
  655. package/lib/pendingStateManager.mjs.map +0 -1
  656. package/lib/scheduleManager.d.mts.map +0 -1
  657. package/lib/scheduleManager.mjs.map +0 -1
  658. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  659. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  660. package/lib/summary/index.d.mts.map +0 -1
  661. package/lib/summary/index.mjs.map +0 -1
  662. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  663. package/lib/summary/orderedClientElection.mjs.map +0 -1
  664. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  665. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  666. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  667. package/lib/summary/runningSummarizer.mjs.map +0 -1
  668. package/lib/summary/summarizer.d.mts.map +0 -1
  669. package/lib/summary/summarizer.mjs.map +0 -1
  670. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  671. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  672. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  673. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  674. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  675. package/lib/summary/summarizerNode/index.mjs +0 -7
  676. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  677. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  678. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  679. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  680. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  681. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  682. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  683. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  684. package/lib/summary/summarizerTypes.mjs.map +0 -1
  685. package/lib/summary/summaryCollection.d.mts.map +0 -1
  686. package/lib/summary/summaryCollection.mjs.map +0 -1
  687. package/lib/summary/summaryFormat.d.mts.map +0 -1
  688. package/lib/summary/summaryFormat.mjs.map +0 -1
  689. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  690. package/lib/summary/summaryGenerator.mjs.map +0 -1
  691. package/lib/summary/summaryManager.d.mts.map +0 -1
  692. package/lib/summary/summaryManager.mjs.map +0 -1
  693. package/lib/throttler.d.mts.map +0 -1
  694. package/lib/throttler.mjs.map +0 -1
  695. package/src/deltaManagerProxyBase.ts +0 -111
@@ -1,14 +1,16 @@
1
- import { assertIsStableId } from '@fluidframework/id-compressor';
1
+ import { AliasResult } from '@fluidframework/runtime-definitions';
2
2
  import { AttachState } from '@fluidframework/container-definitions';
3
3
  import { ContainerWarning } from '@fluidframework/container-definitions';
4
+ import { CreateChildSummarizerNodeFn } from '@fluidframework/runtime-definitions';
5
+ import { CreateChildSummarizerNodeParam } from '@fluidframework/runtime-definitions';
4
6
  import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions';
5
7
  import { FluidObject } from '@fluidframework/core-interfaces';
6
8
  import { FlushMode } from '@fluidframework/runtime-definitions';
7
- import { generateStableId } from '@fluidframework/id-compressor';
8
9
  import { IAudience } from '@fluidframework/container-definitions';
9
10
  import { IClientDetails } from '@fluidframework/protocol-definitions';
10
11
  import { IContainerContext } from '@fluidframework/container-definitions';
11
12
  import { IContainerRuntime } from '@fluidframework/container-runtime-definitions';
13
+ import { IContainerRuntimeBase } from '@fluidframework/runtime-definitions';
12
14
  import { IContainerRuntimeEvents } from '@fluidframework/container-runtime-definitions';
13
15
  import { ICriticalContainerError } from '@fluidframework/container-definitions';
14
16
  import { IDataStore } from '@fluidframework/runtime-definitions';
@@ -16,17 +18,24 @@ import { IDeltaManager } from '@fluidframework/container-definitions';
16
18
  import { IDisposable } from '@fluidframework/core-interfaces';
17
19
  import { IDocumentMessage } from '@fluidframework/protocol-definitions';
18
20
  import { IDocumentStorageService } from '@fluidframework/driver-definitions';
21
+ import { IEnvelope } from '@fluidframework/runtime-definitions';
19
22
  import { IEvent } from '@fluidframework/core-interfaces';
23
+ import { IEvent as IEvent_2 } from '@fluidframework/common-definitions';
20
24
  import { IEventProvider } from '@fluidframework/core-interfaces';
25
+ import { IFluidDataStoreChannel } from '@fluidframework/runtime-definitions';
26
+ import { IFluidDataStoreContext } from '@fluidframework/runtime-definitions';
21
27
  import { IFluidDataStoreContextDetached } from '@fluidframework/runtime-definitions';
28
+ import { IFluidDataStoreFactory } from '@fluidframework/runtime-definitions';
22
29
  import { IFluidDataStoreRegistry } from '@fluidframework/runtime-definitions';
23
30
  import { IFluidHandle } from '@fluidframework/core-interfaces';
24
31
  import { IFluidHandleContext } from '@fluidframework/core-interfaces';
32
+ import { IFluidParentContext } from '@fluidframework/runtime-definitions';
25
33
  import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
34
+ import { IGarbageCollectionDetailsBase } from '@fluidframework/runtime-definitions';
26
35
  import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions';
27
36
  import type { IIdCompressor } from '@fluidframework/id-compressor';
28
37
  import type { IIdCompressorCore } from '@fluidframework/id-compressor';
29
- import { ILoaderOptions } from '@fluidframework/container-definitions';
38
+ import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
30
39
  import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces';
31
40
  import { IQuorumClients } from '@fluidframework/protocol-definitions';
32
41
  import { IRequest } from '@fluidframework/core-interfaces';
@@ -34,17 +43,22 @@ import { IResponse } from '@fluidframework/core-interfaces';
34
43
  import { IRuntime } from '@fluidframework/container-definitions';
35
44
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
36
45
  import { ISignalMessage } from '@fluidframework/protocol-definitions';
37
- import { isStableId } from '@fluidframework/id-compressor';
46
+ import { ISnapshotTree } from '@fluidframework/protocol-definitions';
47
+ import { ISummarizeResult } from '@fluidframework/runtime-definitions';
48
+ import { ISummarizerNodeWithGC } from '@fluidframework/runtime-definitions';
38
49
  import { ISummaryAck } from '@fluidframework/protocol-definitions';
39
50
  import { ISummaryContent } from '@fluidframework/protocol-definitions';
40
51
  import { ISummaryNack } from '@fluidframework/protocol-definitions';
41
52
  import { ISummaryStats } from '@fluidframework/runtime-definitions';
42
53
  import { ISummaryTree } from '@fluidframework/protocol-definitions';
43
54
  import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
55
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
44
56
  import { ITelemetryContext } from '@fluidframework/runtime-definitions';
45
57
  import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils';
46
58
  import { MessageType } from '@fluidframework/protocol-definitions';
59
+ import { MonitoringContext } from '@fluidframework/telemetry-utils';
47
60
  import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions';
61
+ import { SummarizeInternalFn } from '@fluidframework/runtime-definitions';
48
62
  import { TypedEventEmitter } from '@fluid-internal/client-utils';
49
63
 
50
64
  /**
@@ -66,7 +80,178 @@ export declare const AllowInactiveRequestHeaderKey = "allowInactive";
66
80
  */
67
81
  export declare const AllowTombstoneRequestHeaderKey = "allowTombstone";
68
82
 
69
- export { assertIsStableId }
83
+ /**
84
+ * This class encapsulates data store handling. Currently it is only used by the container runtime,
85
+ * but eventually could be hosted on any channel once we formalize the channel api boundary.
86
+ * @internal
87
+ */
88
+ export declare class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
89
+ protected readonly baseSnapshot: ISnapshotTree | undefined;
90
+ readonly parentContext: IFluidParentContext;
91
+ private readonly gcNodeUpdated;
92
+ private readonly isDataStoreDeleted;
93
+ private readonly aliasMap;
94
+ private readonly pendingAttach;
95
+ readonly attachOpFiredForDataStore: Set<string>;
96
+ protected readonly mc: MonitoringContext;
97
+ private readonly disposeOnce;
98
+ readonly entryPoint: IFluidHandle<FluidObject>;
99
+ readonly containerLoadStats: {
100
+ readonly containerLoadDataStoreCount: number;
101
+ readonly referencedDataStoreCount: number;
102
+ };
103
+ private dataStoresSinceLastGC;
104
+ private readonly containerRuntimeHandle;
105
+ private readonly pendingAliasMap;
106
+ protected readonly contexts: DataStoreContexts;
107
+ constructor(baseSnapshot: ISnapshotTree | undefined, parentContext: IFluidParentContext, baseLogger: ITelemetryBaseLogger, gcNodeUpdated: (nodePath: string, reason: "Loaded" | "Changed", timestampMs?: number, packagePath?: readonly string[], request?: IRequest, headerData?: RuntimeHeaderData) => void, isDataStoreDeleted: (nodePath: string) => boolean, aliasMap: Map<string, string>, provideEntryPoint: (runtime: ChannelCollection) => Promise<FluidObject>);
108
+ get aliases(): ReadonlyMap<string, string>;
109
+ get pendingAliases(): Map<string, Promise<AliasResult>>;
110
+ waitIfPendingAlias(maybeAlias: string): Promise<AliasResult>;
111
+ /** For sampling. Only log once per container */
112
+ private shouldSendAttachLog;
113
+ protected wrapContextForInnerChannel(id: string): IFluidParentContext;
114
+ /**
115
+ * IFluidDataStoreChannel.makeVisibleAndAttachGraph implementation
116
+ * Not clear when it would be called and what it should do.
117
+ * Currently this API is called by context only for root data stores.
118
+ */
119
+ makeVisibleAndAttachGraph(): void;
120
+ private processAttachMessage;
121
+ private processAliasMessage;
122
+ processAliasMessageCore(internalId: string, alias: string): boolean;
123
+ private alreadyProcessed;
124
+ /** Package up the context's attach summary etc into an IAttachMessage */
125
+ private generateAttachMessage;
126
+ /**
127
+ * Make the data store locally visible in the container graph by moving the data store context from unbound to
128
+ * bound list and submitting the attach message. This data store can now be reached from the root.
129
+ * @param id - The id of the data store context to make visible.
130
+ */
131
+ private makeDataStoreLocallyVisible;
132
+ protected submitAttachChannelOp(localContext: LocalFluidDataStoreContext): void;
133
+ /**
134
+ * Generate compact internal DataStore ID.
135
+ *
136
+ * A note about namespace and name collisions:
137
+ * This code assumes that that's the only way to generate internal IDs, and that it's Ok for this namespace to overlap with
138
+ * user-provided alias names namespace.
139
+ * There are two scenarios where it could cause trouble:
140
+ * 1) Old files, where (already removed) CreateRoot*DataStore*() API was used, and thus internal name of data store
141
+ * was provided by user. Such files may experience name collision with future data stores that receive a name generated
142
+ * by this function.
143
+ * 2) Much less likely, but if it happen that internal ID (generated by this function) is exactly the same as alias name
144
+ * that user might use in the future, them ContainerRuntime.getAliasedDataStoreEntryPoint() or
145
+ * ContainerRuntime.getDataStoreFromRequest() could return a data store with internalID matching user request, even though
146
+ * user expected some other data store (that would receive alias later).
147
+ * Please note that above mentioned functions have the implementation they have (allowing #2) due to #1.
148
+ */
149
+ protected createDataStoreId(): string;
150
+ createDetachedDataStore(pkg: Readonly<string[]>, loadingGroupId?: string): IFluidDataStoreContextDetached;
151
+ createDataStoreContext(pkg: Readonly<string[]>, props?: any, loadingGroupId?: string): IFluidDataStoreContextInternal;
152
+ protected createContext<T extends LocalFluidDataStoreContext>(id: string, pkg: Readonly<string[]>, contextCtor: new (props: ILocalDetachedFluidDataStoreContextProps) => T, createProps?: any, loadingGroupId?: string): T;
153
+ get disposed(): boolean;
154
+ readonly dispose: () => void;
155
+ reSubmit(type: string, content: any, localOpMetadata: unknown): void;
156
+ protected reSubmitChannelOp(type: string, content: any, localOpMetadata: unknown): void;
157
+ rollback(type: string, content: any, localOpMetadata: unknown): void;
158
+ applyStashedOp(content: unknown): Promise<unknown>;
159
+ protected applyStashedChannelChannelOp(envelope: IEnvelope): Promise<unknown>;
160
+ private applyStashedAttachOp;
161
+ process(message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown, addedOutboundReference?: (fromNodePath: string, toNodePath: string) => void): void;
162
+ protected processChannelOp(address: string, message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown): void;
163
+ getDataStore(id: string, requestHeaderData: RuntimeHeaderData): Promise<IFluidDataStoreContextInternal>;
164
+ /**
165
+ * Returns the data store requested with the given id if available. Otherwise, returns undefined.
166
+ */
167
+ getDataStoreIfAvailable(id: string, requestHeaderData: RuntimeHeaderData): Promise<IFluidDataStoreContextInternal | undefined>;
168
+ /**
169
+ * Checks if the data store has been deleted by GC. If so, log an error.
170
+ * @param id - The data store's id.
171
+ * @param context - The data store context.
172
+ * @param callSite - The function name this is called from.
173
+ * @param requestHeaderData - The request header information to log if the data store is deleted.
174
+ * @returns true if the data store is deleted. Otherwise, returns false.
175
+ */
176
+ private checkAndLogIfDeleted;
177
+ processSignal(messageArg: IInboundSignalMessage, local: boolean): void;
178
+ setConnectionState(connected: boolean, clientId?: string): void;
179
+ setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
180
+ get size(): number;
181
+ summarize(fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;
182
+ /**
183
+ * Create a summary. Used when attaching or serializing a detached container.
184
+ */
185
+ getAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
186
+ /**
187
+ * Before GC runs, called by the garbage collector to update any pending GC state.
188
+ * The garbage collector needs to know all outbound references that are added. Since root data stores are not
189
+ * explicitly marked as referenced, notify GC of new root data stores that were added since the last GC run.
190
+ */
191
+ updateStateBeforeGC(): Promise<void>;
192
+ /**
193
+ * Generates data used for garbage collection. It does the following:
194
+ *
195
+ * 1. Calls into each child data store context to get its GC data.
196
+ *
197
+ * 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
198
+ * identified as belonging to the child.
199
+ *
200
+ * 3. Adds a GC node for this channel to the nodes received from the children. All these nodes together represent
201
+ * the GC data of this channel.
202
+ *
203
+ * @param fullGC - true to bypass optimizations and force full generation of GC data.
204
+ */
205
+ getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
206
+ /**
207
+ * After GC has run, called to notify this Container's data stores of routes that are used in it.
208
+ * @param usedRoutes - The routes that are used in all data stores in this Container.
209
+ */
210
+ updateUsedRoutes(usedRoutes: readonly string[]): void;
211
+ /**
212
+ * Delete data stores and its objects that are sweep ready.
213
+ * @param sweepReadyDataStoreRoutes - The routes of data stores and its objects that are sweep ready and should
214
+ * be deleted.
215
+ * @returns The routes of data stores and its objects that were deleted.
216
+ */
217
+ deleteSweepReadyNodes(sweepReadyDataStoreRoutes: readonly string[]): readonly string[];
218
+ /**
219
+ * This is called to update objects whose routes are tombstones.
220
+ *
221
+ * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
222
+ * Tombstoned objects are eventually deleted by GC.
223
+ *
224
+ * @param tombstonedRoutes - The routes that are tombstones in all data stores in this Container.
225
+ */
226
+ updateTombstonedRoutes(tombstonedRoutes: readonly string[]): void;
227
+ /**
228
+ * Returns the outbound routes of this channel. Only root data stores are considered referenced and their paths are
229
+ * part of outbound routes.
230
+ */
231
+ private getOutboundRoutes;
232
+ /**
233
+ * Called by GC to retrieve the package path of a data store node with the given path.
234
+ */
235
+ getDataStorePackagePath(nodePath: string): Promise<readonly string[] | undefined>;
236
+ /**
237
+ * 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).
238
+ * @returns the GC node type if the node belongs to a data store or object within data store, undefined otherwise.
239
+ */
240
+ getGCNodeType(nodePath: string): GCNodeType | undefined;
241
+ internalId(maybeAlias: string): string;
242
+ request(request: IRequest): Promise<IResponse>;
243
+ }
244
+
245
+ /** @internal */
246
+ export declare class ChannelCollectionFactory<T extends ChannelCollection = ChannelCollection> implements IFluidDataStoreFactory {
247
+ private readonly provideEntryPoint;
248
+ private readonly ctor;
249
+ readonly type = "ChannelCollectionChannel";
250
+ IFluidDataStoreRegistry: IFluidDataStoreRegistry;
251
+ constructor(registryEntries: NamedFluidDataStoreRegistryEntries, provideEntryPoint: (runtime: IFluidDataStoreChannel) => Promise<FluidObject>, ctor: (...args: ConstructorParameters<typeof ChannelCollection>) => T);
252
+ get IFluidDataStoreFactory(): this;
253
+ instantiateDataStore(context: IFluidDataStoreContext, _existing: boolean): Promise<IFluidDataStoreChannel>;
254
+ }
70
255
 
71
256
  /**
72
257
  * How should an older client handle an unrecognized remote op type?
@@ -117,10 +302,13 @@ export declare enum ContainerMessageType {
117
302
  */
118
303
  export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents & ISummarizerEvents> implements IContainerRuntime, IRuntime, ISummarizerRuntime, ISummarizerInternalsProvider, IProvideFluidHandleContext {
119
304
  private readonly registry;
305
+ private readonly metadata;
120
306
  private readonly runtimeOptions;
121
307
  private readonly containerScope;
122
308
  readonly logger: ITelemetryLoggerExt;
123
309
  private readonly _storage;
310
+ private readonly createIdCompressor;
311
+ private readonly idCompressorMode;
124
312
  private readonly requestHandler?;
125
313
  private readonly summaryConfiguration;
126
314
  /**
@@ -149,12 +337,13 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
149
337
  requestHandler?: (request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>;
150
338
  provideEntryPoint: (containerRuntime: IContainerRuntime) => Promise<FluidObject>;
151
339
  }): Promise<ContainerRuntime>;
152
- readonly options: ILoaderOptions;
340
+ readonly options: Record<string | number, any>;
153
341
  private imminentClosure;
154
342
  private readonly _getClientId;
155
343
  get clientId(): string | undefined;
156
344
  readonly clientDetails: IClientDetails;
157
345
  get storage(): IDocumentStorageService;
346
+ get containerRuntime(): this;
158
347
  private readonly submitFn;
159
348
  /**
160
349
  * Although current IContainerContext guarantees submitBatchFn, it is not available on older loaders.
@@ -169,7 +358,26 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
169
358
  get IFluidDataStoreRegistry(): IFluidDataStoreRegistry;
170
359
  private readonly _getAttachState;
171
360
  get attachState(): AttachState;
172
- idCompressor: (IIdCompressor & IIdCompressorCore) | undefined;
361
+ private _idCompressor;
362
+ private pendingIdCompressorOps;
363
+ private readonly skipSavedCompressorOps;
364
+ /**
365
+ * See IContainerRuntimeBase.idCompressor() for details.
366
+ */
367
+ get idCompressor(): (IIdCompressor & IIdCompressorCore) | undefined;
368
+ /**
369
+ * True if we have ID compressor loading in-flight (async operation). Useful only for
370
+ * this.idCompressorMode === "delayed" mode
371
+ */
372
+ protected compressorLoadInitiated: boolean;
373
+ /**
374
+ * See IContainerRuntimeBase.generateDocumentUniqueId() for details.
375
+ */
376
+ generateDocumentUniqueId(): string | (number & {
377
+ readonly SessionUnique: "cea55054-6b82-4cbf-ad19-1fa645ea3b3e";
378
+ } & {
379
+ readonly OpNormalized: "9209432d-a959-4df7-b2ad-767ead4dbcae";
380
+ });
173
381
  get IFluidHandleContext(): IFluidHandleContext;
174
382
  private readonly handleContext;
175
383
  /**
@@ -252,15 +460,13 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
252
460
  private readonly pendingStateManager;
253
461
  private readonly outbox;
254
462
  private readonly garbageCollector;
255
- private readonly dataStores;
463
+ private readonly channelCollection;
256
464
  private readonly remoteMessageProcessor;
257
465
  /** The last message processed at the time of the last summary. */
258
466
  private messageAtLastSummary;
259
467
  private get summarizer();
260
468
  private readonly summariesDisabled;
261
469
  private isSummariesDisabled;
262
- private readonly heuristicsDisabled;
263
- private isHeuristicsDisabled;
264
470
  private readonly maxOpsSinceLastSummary;
265
471
  private getMaxOpsSinceLastSummary;
266
472
  private readonly initialSummarizerDelayMs;
@@ -280,10 +486,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
280
486
  * ! Note: should not be used for anything other than telemetry and is not considered a stable GUID
281
487
  */
282
488
  private readonly telemetryDocumentId;
283
- /**
284
- * If true, the runtime has access to an IdCompressor
285
- */
286
- private readonly idCompressorEnabled;
287
489
  /**
288
490
  * Whether this client is the summarizer client itself (type is summarizerClientType)
289
491
  */
@@ -292,13 +494,41 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
292
494
  * The id of the version used to initially load this runtime, or undefined if it's newly created.
293
495
  */
294
496
  private readonly loadedFromVersionId;
497
+ /**
498
+ * It a cache for holding mapping for loading groupIds with its snapshot from the service. Add expiry policy of 1 minute.
499
+ * Starting with 1 min and based on recorded usage we can tweak it later on.
500
+ */
501
+ private readonly snapshotCacheForLoadingGroupIds;
295
502
  /***/
296
- protected constructor(context: IContainerContext, registry: IFluidDataStoreRegistry, metadata: IContainerRuntimeMetadata | undefined, electedSummarizerData: ISerializedElection | undefined, chunks: [string, string[]][], dataStoreAliasMap: [string, string][], runtimeOptions: Readonly<Required<IContainerRuntimeOptions>>, containerScope: FluidObject, logger: ITelemetryLoggerExt, existing: boolean, blobManagerSnapshot: IBlobManagerLoadInfo, _storage: IDocumentStorageService, idCompressor: (IIdCompressor & IIdCompressorCore) | undefined, provideEntryPoint: (containerRuntime: IContainerRuntime) => Promise<FluidObject>, requestHandler?: ((request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>) | undefined, summaryConfiguration?: ISummaryConfiguration);
503
+ protected constructor(context: IContainerContext, registry: IFluidDataStoreRegistry, metadata: IContainerRuntimeMetadata | undefined, electedSummarizerData: ISerializedElection | undefined, chunks: [string, string[]][], dataStoreAliasMap: [string, string][], runtimeOptions: Readonly<Required<IContainerRuntimeOptions>>, containerScope: FluidObject, logger: ITelemetryLoggerExt, existing: boolean, blobManagerSnapshot: IBlobManagerLoadInfo, _storage: IDocumentStorageService, createIdCompressor: () => Promise<IIdCompressor & IIdCompressorCore>, idCompressorMode: IdCompressorMode, provideEntryPoint: (containerRuntime: IContainerRuntime) => Promise<FluidObject>, requestHandler?: ((request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>) | undefined, summaryConfiguration?: ISummaryConfiguration);
504
+ getCreateChildSummarizerNodeFn(id: string, createParam: CreateChildSummarizerNodeParam): (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>) => ISummarizerNodeWithGC;
505
+ deleteChildSummarizerNode(id: string): void;
506
+ makeLocallyVisible(): void;
507
+ setChannelDirty(address: string): void;
297
508
  /**
298
509
  * Initializes the state from the base snapshot this container runtime loaded from.
299
510
  */
300
511
  private initializeBaseState;
301
512
  dispose(error?: Error): void;
513
+ /**
514
+ * Api to fetch the snapshot from the service for a loadingGroupIds.
515
+ * @param loadingGroupIds - LoadingGroupId for which the snapshot is asked for.
516
+ * @param pathParts - Parts of the path, which we want to extract from the snapshot tree.
517
+ * @returns - snapshotTree and the sequence number of the snapshot.
518
+ */
519
+ getSnapshotForLoadingGroupId(loadingGroupIds: string[], pathParts: string[]): Promise<{
520
+ snapshotTree: ISnapshotTree;
521
+ sequenceNumber: number;
522
+ }>;
523
+ /**
524
+ * Api to find a snapshot tree inside a bigger snapshot tree based on the path in the pathParts array.
525
+ * @param snapshotTree - snapshot tree to look into.
526
+ * @param pathParts - Part of the path, which we want to extract from the snapshot tree.
527
+ * @param hasIsolatedChannels - whether the channels are present inside ".channels" subtree. Older
528
+ * snapshots will not have trees inside ".channels", so check that.
529
+ * @returns - requested snapshot tree based on the path parts.
530
+ */
531
+ private getSnapshotTreeForPath;
302
532
  /**
303
533
  * Notifies this object about the request made to the container.
304
534
  * @param request - Request made to the handler.
@@ -316,7 +546,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
316
546
  getEntryPoint(): Promise<FluidObject>;
317
547
  private readonly entryPoint;
318
548
  private internalId;
319
- private getDataStoreFromRequest;
320
549
  /** Adds the container's metadata to the given summary tree. */
321
550
  private addMetadataToSummary;
322
551
  protected addContainerStateToSummary(summaryTree: ISummaryTreeWithStats, fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): void;
@@ -355,6 +584,9 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
355
584
  * This method is expected to be called at the end of a batch.
356
585
  */
357
586
  private flush;
587
+ /**
588
+ * {@inheritDoc @fluidframework/runtime-definitions#IContainerRuntimeBase.orderSequentially}
589
+ */
358
590
  orderSequentially<T>(callback: () => T): T;
359
591
  /**
360
592
  * Returns the aliased data store's entryPoint, given the alias.
@@ -363,13 +595,12 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
363
595
  * Returns undefined if no data store has been assigned the given alias.
364
596
  */
365
597
  getAliasedDataStoreEntryPoint(alias: string): Promise<IFluidHandle<FluidObject> | undefined>;
366
- createDetachedRootDataStore(pkg: Readonly<string[]>, rootDataStoreId: string): IFluidDataStoreContextDetached;
367
- createDetachedDataStore(pkg: Readonly<string[]>): IFluidDataStoreContextDetached;
368
- createDataStore(pkg: string | string[]): Promise<IDataStore>;
598
+ createDetachedDataStore(pkg: Readonly<string[]>, loadingGroupId?: string): IFluidDataStoreContextDetached;
599
+ createDataStore(pkg: Readonly<string | string[]>, loadingGroupId?: string): Promise<IDataStore>;
369
600
  /**
370
601
  * @deprecated 0.16 Issue #1537, #3631
371
602
  */
372
- _createDataStoreWithProps(pkg: string | string[], props?: any, id?: string): Promise<IDataStore>;
603
+ _createDataStoreWithProps(pkg: Readonly<string | string[]>, props?: any): Promise<IDataStore>;
373
604
  private canSendOps;
374
605
  /**
375
606
  * Are we in the middle of batching ops together?
@@ -393,13 +624,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
393
624
  * @param targetClientId - When specified, the signal is only sent to the provided client id.
394
625
  */
395
626
  submitSignal(type: string, content: any, targetClientId?: string): void;
396
- /**
397
- * Submits the signal to be sent to other clients.
398
- * @param type - Type of the signal.
399
- * @param content - Content of the signal.
400
- * @param targetClientId - When specified, the signal is only sent to the provided client id.
401
- */
402
- submitDataStoreSignal(address: string, type: string, content: any, targetClientId?: string): void;
403
627
  setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
404
628
  /**
405
629
  * Create a summary. Used when attaching or serializing a detached container.
@@ -449,15 +673,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
449
673
  * @see IGarbageCollectionRuntime.updateUsedRoutes
450
674
  */
451
675
  updateUsedRoutes(usedRoutes: readonly string[]): void;
452
- /**
453
- * This is called to update objects whose routes are unused.
454
- * @param unusedRoutes - Data store and attachment blob routes that are unused in this Container.
455
- */
456
- updateUnusedRoutes(unusedRoutes: readonly string[]): void;
457
- /**
458
- * @deprecated Replaced by deleteSweepReadyNodes.
459
- */
460
- deleteUnusedNodes(unusedRoutes: readonly string[]): string[];
461
676
  /**
462
677
  * After GC has run and identified nodes that are sweep ready, this is called to delete the sweep ready nodes.
463
678
  * @param sweepReadyRoutes - The routes of nodes that are sweep ready and should be deleted.
@@ -516,7 +731,11 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
516
731
  * @param srcHandle - The handle of the node that added the reference.
517
732
  * @param outboundHandle - The handle of the outbound node that is referenced.
518
733
  */
519
- addedGCOutboundReference(srcHandle: IFluidHandle, outboundHandle: IFluidHandle): void;
734
+ addedGCOutboundReference(srcHandle: {
735
+ absolutePath: string;
736
+ }, outboundHandle: {
737
+ absolutePath: string;
738
+ }): void;
520
739
  /**
521
740
  * Generates the summary tree, uploads it to storage, and then submits the summarize op.
522
741
  * This is intended to be called by the summarizer, since it is the implementation of
@@ -540,10 +759,9 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
540
759
  private get pendingMessagesCount();
541
760
  private hasPendingMessages;
542
761
  private updateDocumentDirtyState;
543
- submitDataStoreOp(id: string, contents: any, localOpMetadata?: unknown): void;
544
- submitDataStoreAliasOp(contents: any, localOpMetadata: unknown): void;
762
+ submitMessage(type: ContainerMessageType.FluidDataStoreOp | ContainerMessageType.Alias | ContainerMessageType.Attach, contents: any, localOpMetadata?: unknown): void;
545
763
  uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandle<ArrayBufferLike>>;
546
- private maybeSubmitIdAllocationOp;
764
+ private submitIdAllocationOpIfNeeded;
547
765
  private submit;
548
766
  private scheduleFlush;
549
767
  private submitSummaryMessage;
@@ -580,7 +798,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
580
798
  * overridden via options.
581
799
  */
582
800
  private fetchLatestSnapshotFromStorage;
583
- getPendingLocalState(props?: IGetPendingLocalStateProps): Promise<unknown>;
801
+ getPendingLocalState(props?: IGetPendingLocalStateProps): unknown;
584
802
  summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults;
585
803
  enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult;
586
804
  /**
@@ -611,11 +829,77 @@ export declare interface ContainerRuntimeMessage {
611
829
  compatDetails?: IContainerRuntimeMessageCompatDetails;
612
830
  }
613
831
 
832
+ /** @internal */
833
+ export declare class DataStoreContexts implements Iterable<[string, FluidDataStoreContext]>, IDisposable {
834
+ private readonly notBoundContexts;
835
+ /** Attached and loaded context proxies */
836
+ private readonly _contexts;
837
+ /**
838
+ * List of pending context waiting either to be bound or to arrive from another client.
839
+ * This covers the case where a local context has been created but not yet bound,
840
+ * or the case where a client knows a store will exist and is waiting on its creation,
841
+ * so that a caller may await the deferred's promise until such a time as the context is fully ready.
842
+ * This is a superset of _contexts, since contexts remain here once the Deferred resolves.
843
+ */
844
+ private readonly deferredContexts;
845
+ private readonly disposeOnce;
846
+ private readonly _logger;
847
+ constructor(baseLogger: ITelemetryBaseLogger);
848
+ [Symbol.iterator](): Iterator<[string, FluidDataStoreContext]>;
849
+ get size(): number;
850
+ get disposed(): boolean;
851
+ readonly dispose: () => void;
852
+ notBoundLength(): number;
853
+ isNotBound(id: string): boolean;
854
+ has(id: string): boolean;
855
+ get(id: string): FluidDataStoreContext | undefined;
856
+ delete(id: string): boolean;
857
+ /**
858
+ * Return the unbound local context with the given id,
859
+ * or undefined if it's not found or not unbound.
860
+ */
861
+ getUnbound(id: string): LocalFluidDataStoreContext | undefined;
862
+ /**
863
+ * Add the given context, marking it as to-be-bound
864
+ */
865
+ addUnbound(context: LocalFluidDataStoreContext): void;
866
+ /**
867
+ * Get the context with the given id, once it exists locally and is attached.
868
+ * e.g. If created locally, it must be bound, or if created remotely then it's fine as soon as it's sync'd in.
869
+ * @param id - The id of the context to get
870
+ * @param wait - If false, return undefined if the context isn't present and ready now. Otherwise, wait for it.
871
+ */
872
+ getBoundOrRemoted(id: string, wait: boolean): Promise<FluidDataStoreContext | undefined>;
873
+ private ensureDeferred;
874
+ /**
875
+ * Update this context as bound
876
+ */
877
+ bind(id: string): void;
878
+ /**
879
+ * Triggers the deferred to resolve, indicating the context is not local-only
880
+ * @param id - The id of the context to resolve to
881
+ */
882
+ private resolveDeferred;
883
+ /**
884
+ * Add the given context, marking it as not local-only.
885
+ * This could be because it's a local context that's been bound, or because it's a remote context.
886
+ * @param context - The context to add
887
+ */
888
+ addBoundOrRemoted(context: FluidDataStoreContext): void;
889
+ }
890
+
614
891
  /**
615
892
  * @alpha
616
893
  */
617
894
  export declare const DefaultSummaryConfiguration: ISummaryConfiguration;
618
895
 
896
+ /**
897
+ * Traverse this op's contents and detect any outbound routes that were added by this op.
898
+ *
899
+ * @internal
900
+ */
901
+ export declare function detectOutboundReferences(address: string, contents: unknown, addedOutboundReference: (fromNodePath: string, toNodePath: string) => void): void;
902
+
619
903
  /**
620
904
  * @alpha
621
905
  */
@@ -643,6 +927,246 @@ export declare type EnqueueSummarizeResult = (ISummarizeResults & {
643
927
  readonly overridden?: undefined;
644
928
  };
645
929
 
930
+ /**
931
+ * Represents the context for the store. This context is passed to the store runtime.
932
+ * @internal
933
+ */
934
+ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IFluidDataStoreContextEvents> implements IFluidDataStoreContextInternal, IFluidParentContext, IDisposable {
935
+ private readonly existing;
936
+ readonly isLocalDataStore: boolean;
937
+ private readonly makeLocallyVisibleFn;
938
+ get packagePath(): readonly string[];
939
+ get options(): Record<string | number, any>;
940
+ get clientId(): string | undefined;
941
+ get clientDetails(): IClientDetails;
942
+ get logger(): ITelemetryBaseLogger;
943
+ get deltaManager(): IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
944
+ get connected(): boolean;
945
+ get IFluidHandleContext(): IFluidHandleContext;
946
+ get containerRuntime(): IContainerRuntimeBase;
947
+ ensureNoDataModelChanges<T>(callback: () => T): T;
948
+ get isLoaded(): boolean;
949
+ get baseSnapshot(): ISnapshotTree | undefined;
950
+ get idCompressor(): IIdCompressor | undefined;
951
+ private _disposed;
952
+ get disposed(): boolean;
953
+ /**
954
+ * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
955
+ * Tombstoned objects are eventually deleted by GC.
956
+ */
957
+ private _tombstoned;
958
+ get tombstoned(): boolean;
959
+ /** If true, throw an error when a tombstone data store is used. */
960
+ readonly gcThrowOnTombstoneUsage: boolean;
961
+ readonly gcTombstoneEnforcementAllowed: boolean;
962
+ /** If true, this means that this data store context and its children have been removed from the runtime */
963
+ protected deleted: boolean;
964
+ get attachState(): AttachState;
965
+ get IFluidDataStoreRegistry(): IFluidDataStoreRegistry | undefined;
966
+ private baseSnapshotSequenceNumber;
967
+ /**
968
+ * A datastore is considered as root if it
969
+ * 1. is root in memory - see isInMemoryRoot
970
+ * 2. is root as part of the base snapshot that the datastore loaded from
971
+ * @returns whether a datastore is root
972
+ */
973
+ isRoot(): Promise<boolean>;
974
+ /**
975
+ * There are 3 states where isInMemoryRoot needs to be true
976
+ * 1. when a datastore becomes aliased. This can happen for both remote and local datastores
977
+ * 2. when a datastore is created locally as root
978
+ * 3. when a datastore is created locally as root and is rehydrated
979
+ * @returns whether a datastore is root in memory
980
+ */
981
+ protected isInMemoryRoot(): boolean;
982
+ protected registry: IFluidDataStoreRegistry | undefined;
983
+ protected detachedRuntimeCreation: boolean;
984
+ protected channel: IFluidDataStoreChannel | undefined;
985
+ private loaded;
986
+ protected pending: ISequencedDocumentMessage[] | undefined;
987
+ protected channelP: Promise<IFluidDataStoreChannel> | undefined;
988
+ protected _baseSnapshot: ISnapshotTree | undefined;
989
+ protected _attachState: AttachState;
990
+ private _isInMemoryRoot;
991
+ protected readonly summarizerNode: ISummarizerNodeWithGC;
992
+ protected readonly mc: MonitoringContext;
993
+ private readonly thresholdOpsCounter;
994
+ private static readonly pendingOpsCountThreshold;
995
+ /**
996
+ * If the summarizer makes local changes, a telemetry event is logged. This has the potential to be very noisy.
997
+ * So, adding a count of how many telemetry events are logged per data store context. This can be
998
+ * controlled via feature flags.
999
+ */
1000
+ private localChangesTelemetryCount;
1001
+ private lastUsedRoutes;
1002
+ readonly id: string;
1003
+ private readonly _containerRuntime;
1004
+ private readonly parentContext;
1005
+ readonly storage: IDocumentStorageService;
1006
+ readonly scope: FluidObject;
1007
+ readonly loadingGroupId: string | undefined;
1008
+ protected pkg?: readonly string[];
1009
+ constructor(props: IFluidDataStoreContextProps, existing: boolean, isLocalDataStore: boolean, makeLocallyVisibleFn: () => void);
1010
+ dispose(): void;
1011
+ /**
1012
+ * When delete is called, that means that the data store is permanently removed from the runtime, and will not show up in future summaries
1013
+ * This function is called to prevent ops from being generated from this data store once it has been deleted. Furthermore, this data store
1014
+ * should not receive any ops/signals.
1015
+ */
1016
+ delete(): void;
1017
+ setTombstone(tombstone: boolean): void;
1018
+ abstract setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
1019
+ private rejectDeferredRealize;
1020
+ realize(): Promise<IFluidDataStoreChannel>;
1021
+ protected factoryFromPackagePath(): Promise<IFluidDataStoreFactory>;
1022
+ private realizeCore;
1023
+ /**
1024
+ * Notifies this object about changes in the connection state.
1025
+ * @param value - New connection state.
1026
+ * @param clientId - ID of the client. Its old ID when in disconnected state and
1027
+ * its new client ID when we are connecting or connected.
1028
+ */
1029
+ setConnectionState(connected: boolean, clientId?: string): void;
1030
+ process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
1031
+ processSignal(message: IInboundSignalMessage, local: boolean): void;
1032
+ getQuorum(): IQuorumClients;
1033
+ getAudience(): IAudience;
1034
+ /**
1035
+ * Returns a summary at the current sequence number.
1036
+ * @param fullTree - true to bypass optimizations and force a full summary tree
1037
+ * @param trackState - This tells whether we should track state from this summary.
1038
+ * @param telemetryContext - summary data passed through the layers for telemetry purposes
1039
+ */
1040
+ summarize(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): Promise<ISummarizeResult>;
1041
+ private summarizeInternal;
1042
+ /**
1043
+ * Returns the data used for garbage collection. This includes a list of GC nodes that represent this data store
1044
+ * including any of its child channel contexts. Each node has a set of outbound routes to other GC nodes in the
1045
+ * document.
1046
+ * If there is no new data in this data store since the last summary, previous GC data is used.
1047
+ * If there is new data, the GC data is generated again (by calling getGCDataInternal).
1048
+ * @param fullGC - true to bypass optimizations and force full generation of GC data.
1049
+ */
1050
+ getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
1051
+ /**
1052
+ * Generates data used for garbage collection. This is called when there is new data since last summary. It
1053
+ * realizes the data store and calls into each channel context to get its GC data.
1054
+ * @param fullGC - true to bypass optimizations and force full generation of GC data.
1055
+ */
1056
+ private getGCDataInternal;
1057
+ /**
1058
+ * After GC has run, called to notify the data store of routes used in it. These are used for the following:
1059
+ *
1060
+ * 1. To identify if this data store is being referenced in the document or not.
1061
+ *
1062
+ * 2. To determine if it needs to re-summarize in case used routes changed since last summary.
1063
+ *
1064
+ * 3. These are added to the summary generated by the data store.
1065
+ *
1066
+ * 4. To notify child contexts of their used routes. This is done immediately if the data store is loaded.
1067
+ * Else, it is done when realizing the data store.
1068
+ *
1069
+ * 5. To update the timestamp when this data store or any children are marked as unreferenced.
1070
+ *
1071
+ * @param usedRoutes - The routes that are used in this data store.
1072
+ */
1073
+ updateUsedRoutes(usedRoutes: string[]): void;
1074
+ /**
1075
+ * @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
1076
+ * It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
1077
+ *
1078
+ * Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
1079
+ *
1080
+ * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
1081
+ * all references added in the system.
1082
+ * @param srcHandle - The handle of the node that added the reference.
1083
+ * @param outboundHandle - The handle of the outbound node that is referenced.
1084
+ */
1085
+ addedGCOutboundReference(srcHandle: IFluidHandle, outboundHandle: IFluidHandle): void;
1086
+ /**
1087
+ * (Same as @see addedGCOutboundReference, but with string paths instead of handles)
1088
+ *
1089
+ * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
1090
+ * all references added in the system.
1091
+ *
1092
+ * @param fromPath - The absolute path of the node that added the reference.
1093
+ * @param toPath - The absolute path of the outbound node that is referenced.
1094
+ */
1095
+ addedGCOutboundRoute(fromPath: string, toPath: string): void;
1096
+ /**
1097
+ * Updates the used routes of the channel and its child contexts. The channel must be loaded before calling this.
1098
+ * It is called in these two scenarios:
1099
+ * 1. When the used routes of the data store is updated and the data store is loaded.
1100
+ * 2. When the data store is realized. This updates the channel's used routes as per last GC run.
1101
+ */
1102
+ private updateChannelUsedRoutes;
1103
+ /**
1104
+ * @deprecated 0.18.Should call request on the runtime directly
1105
+ */
1106
+ request(request: IRequest): Promise<IResponse>;
1107
+ submitMessage(type: string, content: any, localOpMetadata: unknown): void;
1108
+ /**
1109
+ * This is called from a SharedSummaryBlock that does not generate ops but only wants to be part of the summary.
1110
+ * It indicates that there is data in the object that needs to be summarized.
1111
+ * We will update the latestSequenceNumber of the summary tracker of this
1112
+ * store and of the object's channel.
1113
+ *
1114
+ * @param address - The address of the channel that is dirty.
1115
+ *
1116
+ */
1117
+ setChannelDirty(address: string): void;
1118
+ /**
1119
+ * Submits the signal to be sent to other clients.
1120
+ * @param type - Type of the signal.
1121
+ * @param content - Content of the signal.
1122
+ * @param targetClientId - When specified, the signal is only sent to the provided client id.
1123
+ */
1124
+ submitSignal(type: string, content: any, targetClientId?: string): void;
1125
+ /**
1126
+ * This is called by the data store channel when it becomes locally visible indicating that it is ready to become
1127
+ * globally visible now.
1128
+ */
1129
+ makeLocallyVisible(): void;
1130
+ protected processPendingOps(channel: IFluidDataStoreChannel): void;
1131
+ protected completeBindingRuntime(channel: IFluidDataStoreChannel): void;
1132
+ protected bindRuntime(channel: IFluidDataStoreChannel, existing: boolean): Promise<void>;
1133
+ getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;
1134
+ /**
1135
+ * Get the data required when attaching this context's DataStore.
1136
+ * Used for both Container Attach and DataStore Attach.
1137
+ *
1138
+ * @returns the summary, type, and GC Data for this context's DataStore.
1139
+ */
1140
+ abstract getAttachData(includeGCData: boolean, telemetryContext?: ITelemetryContext): {
1141
+ attachSummary: ISummaryTreeWithStats;
1142
+ type: string;
1143
+ };
1144
+ abstract getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
1145
+ /**
1146
+ * @deprecated Sets the datastore as root, for aliasing purposes: #7948
1147
+ * This method should not be used outside of the aliasing context.
1148
+ * It will be removed, as the source of truth for this flag will be the aliasing blob.
1149
+ */
1150
+ setInMemoryRoot(): void;
1151
+ /**
1152
+ * @deprecated The functionality to get base GC details has been moved to summarizer node.
1153
+ */
1154
+ getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
1155
+ reSubmit(type: string, contents: any, localOpMetadata: unknown): void;
1156
+ rollback(type: string, contents: any, localOpMetadata: unknown): void;
1157
+ applyStashedOp(contents: any): Promise<unknown>;
1158
+ private verifyNotClosed;
1159
+ /**
1160
+ * Summarizer client should not have local changes. These changes can become part of the summary and can break
1161
+ * eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas
1162
+ * other clients that are up-to-date till seq# 100 may not have them yet.
1163
+ */
1164
+ protected identifyLocalChangeInSummarizer(eventName: string, type?: string): void;
1165
+ getCreateChildSummarizerNodeFn(id: string, createParam: CreateChildSummarizerNodeParam): (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>) => ISummarizerNodeWithGC;
1166
+ deleteChildSummarizerNode(id: string): void;
1167
+ uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandle<ArrayBufferLike>>;
1168
+ }
1169
+
646
1170
  /**
647
1171
  * @internal
648
1172
  */
@@ -695,8 +1219,6 @@ export declare type GCNodeType = (typeof GCNodeType)[keyof typeof GCNodeType];
695
1219
  */
696
1220
  export declare type GCVersion = number;
697
1221
 
698
- export { generateStableId }
699
-
700
1222
  /**
701
1223
  * A single summary which has already been acked by the server.
702
1224
  * @alpha
@@ -839,7 +1361,7 @@ export declare interface IContainerRuntimeMetadata extends ICreateContainerMetad
839
1361
  /** GUID to identify a document in telemetry */
840
1362
  readonly telemetryDocumentId?: string;
841
1363
  /** True if the runtime IdCompressor is enabled */
842
- readonly idCompressorEnabled?: boolean;
1364
+ readonly idCompressorMode?: IdCompressorMode;
843
1365
  }
844
1366
 
845
1367
  /**
@@ -898,7 +1420,7 @@ export declare interface IContainerRuntimeOptions {
898
1420
  * Enable the IdCompressor in the runtime.
899
1421
  * @experimental Not ready for use.
900
1422
  */
901
- readonly enableRuntimeIdCompressor?: boolean;
1423
+ readonly enableRuntimeIdCompressor?: IdCompressorMode;
902
1424
  /**
903
1425
  * If enabled, the runtime will block all attempts to send an op inside the
904
1426
  * {@link ContainerRuntime#ensureNoDataModelChanges} callback. The callback is used by
@@ -932,6 +1454,20 @@ export declare interface ICreateContainerMetadata {
932
1454
  createContainerTimestamp?: number;
933
1455
  }
934
1456
 
1457
+ /**
1458
+ * ID Compressor mode.
1459
+ * "on" - compressor is On. It's loaded as part of container load. This mode is sticky - once on, compressor is On for all
1460
+ * sessions for a given document. This results in IContainerRuntime.idCompressor to be always available.
1461
+ * "delayed" - ID compressor bundle is loaded only on establishing of first delta connection, i.e. it does not impact boot of cotnainer.
1462
+ * In such mode IContainerRuntime.idCompressor is not made available (unless previous sessions of same document had it "On").
1463
+ * The only thing that is available is IContainerRuntime.generateDocumentUniqueId() that provides opportunistically short IDs.
1464
+ * "off" - ID compressor is not laoded (unless it is "on" due to previous session for same document having it "on").
1465
+ * While IContainerRuntime.generateDocumentUniqueId() is available, it will produce long IDs that are do not compress well.
1466
+ *
1467
+ * @alpha
1468
+ */
1469
+ export declare type IdCompressorMode = "on" | "delayed" | "off";
1470
+
935
1471
  /**
936
1472
  * Options to use when enqueueing a summarize attempt.
937
1473
  * @alpha
@@ -948,6 +1484,41 @@ export declare interface IEnqueueSummarizeOptions extends IOnDemandSummarizeOpti
948
1484
  readonly override?: boolean;
949
1485
  }
950
1486
 
1487
+ /** @internal */
1488
+ export declare interface IFluidDataStoreContextEvents extends IEvent_2 {
1489
+ (event: "attaching" | "attached", listener: () => void): any;
1490
+ }
1491
+
1492
+ /**
1493
+ * This is interface that every context should implement.
1494
+ * This interface is used for context's parent - ChannelCollection.
1495
+ * It should not be exposed to any other users of context.
1496
+ * @internal
1497
+ */
1498
+ export declare interface IFluidDataStoreContextInternal extends IFluidDataStoreContext {
1499
+ getAttachData(includeGCData: boolean, telemetryContext?: ITelemetryContext): {
1500
+ attachSummary: ISummaryTreeWithStats;
1501
+ type: string;
1502
+ };
1503
+ getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
1504
+ realize(): Promise<IFluidDataStoreChannel>;
1505
+ isRoot(): Promise<boolean>;
1506
+ }
1507
+
1508
+ /**
1509
+ * Properties necessary for creating a FluidDataStoreContext
1510
+ * @internal
1511
+ */
1512
+ export declare interface IFluidDataStoreContextProps {
1513
+ readonly id: string;
1514
+ readonly parentContext: IFluidParentContext;
1515
+ readonly storage: IDocumentStorageService;
1516
+ readonly scope: FluidObject;
1517
+ readonly createSummarizerNodeFn: CreateChildSummarizerNodeFn;
1518
+ readonly pkg?: Readonly<string[]>;
1519
+ readonly loadingGroupId?: string;
1520
+ }
1521
+
951
1522
  /**
952
1523
  * GC-specific metadata to be written into the summary.
953
1524
  *
@@ -1091,6 +1662,28 @@ export declare interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeR
1091
1662
  readonly forcedFullTree: boolean;
1092
1663
  }
1093
1664
 
1665
+ /**
1666
+ * Properties necessary for creating a local FluidDataStoreContext
1667
+ * @internal
1668
+ */
1669
+ export declare interface ILocalDetachedFluidDataStoreContextProps extends ILocalFluidDataStoreContextProps {
1670
+ readonly channelToDataStoreFn: (channel: IFluidDataStoreChannel) => IDataStore;
1671
+ }
1672
+
1673
+ /**
1674
+ * Properties necessary for creating a local FluidDataStoreContext
1675
+ * @internal
1676
+ */
1677
+ export declare interface ILocalFluidDataStoreContextProps extends IFluidDataStoreContextProps {
1678
+ readonly pkg: Readonly<string[]> | undefined;
1679
+ readonly snapshotTree: ISnapshotTree | undefined;
1680
+ readonly makeLocallyVisibleFn: () => void;
1681
+ /**
1682
+ * @deprecated 0.16 Issue #1635, #3631
1683
+ */
1684
+ readonly createProps?: any;
1685
+ }
1686
+
1094
1687
  /**
1095
1688
  * The statistics of the system state after a garbage collection mark phase run.
1096
1689
  * @alpha
@@ -1183,14 +1776,20 @@ export declare interface ISerializedElection {
1183
1776
  readonly electedParentId: string | undefined;
1184
1777
  }
1185
1778
 
1779
+ /** @internal */
1780
+ export declare interface ISnapshotDetails {
1781
+ pkg: readonly string[];
1782
+ isRootDataStore: boolean;
1783
+ snapshot?: ISnapshotTree;
1784
+ sequenceNumber?: number;
1785
+ }
1786
+
1186
1787
  /**
1187
1788
  * @deprecated please use version in driver-utils
1188
1789
  * @internal
1189
1790
  */
1190
1791
  export declare function isRuntimeMessage(message: ISequencedDocumentMessage): boolean;
1191
1792
 
1192
- export { isStableId }
1193
-
1194
1793
  /**
1195
1794
  * Results of submitSummary after submitting the summarize op.
1196
1795
  * @alpha
@@ -1213,6 +1812,8 @@ export declare interface ISubmitSummaryOptions extends ISummarizeOptions {
1213
1812
  readonly cancellationToken: ISummaryCancellationToken;
1214
1813
  /** Summarization may be attempted multiple times. This tells whether this is the final summarization attempt. */
1215
1814
  readonly finalAttempt?: boolean;
1815
+ /** The sequence number of the latest summary used to validate if summary state is correct before summarizing */
1816
+ readonly latestSummaryRefSeqNum: number;
1216
1817
  }
1217
1818
 
1218
1819
  /**
@@ -1251,7 +1852,7 @@ export declare interface ISummarizer extends IEventProvider<ISummarizerEvents> {
1251
1852
  readonly ISummarizer?: ISummarizer;
1252
1853
  stop(reason: SummarizerStopReason): void;
1253
1854
  close(): void;
1254
- run(onBehalfOf: string, disableHeuristics?: boolean): Promise<SummarizerStopReason>;
1855
+ run(onBehalfOf: string): Promise<SummarizerStopReason>;
1255
1856
  /**
1256
1857
  * Attempts to generate a summary on demand. If already running, takes no action.
1257
1858
  * @param options - options controlling the summarize attempt
@@ -1534,6 +2135,48 @@ export declare interface IUploadSummaryResult extends Omit<IGenerateSummaryTreeR
1534
2135
  readonly uploadDuration: number;
1535
2136
  }
1536
2137
 
2138
+ /**
2139
+ * context implementation for "attached" data store runtime.
2140
+ * Various workflows (snapshot creation, requests) result in .realize() being called
2141
+ * on context, resulting in instantiation and attachment of runtime.
2142
+ * Runtime is created using data store factory that is associated with this context.
2143
+ * @internal
2144
+ */
2145
+ export declare class LocalFluidDataStoreContext extends LocalFluidDataStoreContextBase {
2146
+ constructor(props: ILocalFluidDataStoreContextProps);
2147
+ }
2148
+
2149
+ /**
2150
+ * Base class for detached & attached context classes
2151
+ * @internal
2152
+ */
2153
+ export declare class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
2154
+ private readonly snapshotTree;
2155
+ /**
2156
+ * @deprecated 0.16 Issue #1635, #3631
2157
+ */
2158
+ readonly createProps?: any;
2159
+ constructor(props: ILocalFluidDataStoreContextProps);
2160
+ setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
2161
+ /**
2162
+ * @see FluidDataStoreContext.getAttachData
2163
+ */
2164
+ getAttachData(includeGCData: boolean, telemetryContext?: ITelemetryContext): {
2165
+ attachSummary: ISummaryTreeWithStats;
2166
+ type: string;
2167
+ };
2168
+ private readonly initialSnapshotDetailsP;
2169
+ getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
2170
+ /**
2171
+ * A context should only be marked as deleted when its a remote context.
2172
+ * Session Expiry at the runtime level should have closed the container creating the local data store context
2173
+ * before delete is even possible. Session Expiry is at 30 days, and sweep is done 36+ days later from the time
2174
+ * it was unreferenced. Thus the sweeping container should have loaded from a snapshot and thus creating a remote
2175
+ * context.
2176
+ */
2177
+ delete(): void;
2178
+ }
2179
+
1537
2180
  /**
1538
2181
  * Can be useful in testing as well as in places where caller does not use cancellation.
1539
2182
  * This object implements ISummaryCancellationToken interface but cancellation is never leveraged.
@@ -1560,6 +2203,17 @@ export declare interface RecentlyAddedContainerRuntimeMessageDetails {
1560
2203
  compatDetails: IContainerRuntimeMessageCompatDetails;
1561
2204
  }
1562
2205
 
2206
+ /**
2207
+ * The full set of parsed header data that may be found on Runtime requests
2208
+ * @internal
2209
+ */
2210
+ export declare interface RuntimeHeaderData {
2211
+ wait?: boolean;
2212
+ viaHandle?: boolean;
2213
+ allowTombstone?: boolean;
2214
+ allowInactive?: boolean;
2215
+ }
2216
+
1563
2217
  /**
1564
2218
  * Accepted header keys for requests coming to the runtime.
1565
2219
  * @internal
@@ -1702,7 +2356,7 @@ export declare type SummarizeResultPart<TSuccess, TFailure = undefined> = {
1702
2356
  * @alpha
1703
2357
  */
1704
2358
  export declare type SummarizerStopReason =
1705
- /** Summarizer client failed to summarize in all 3 consecutive attempts. */
2359
+ /** Summarizer client failed to summarize in all attempts. */
1706
2360
  "failToSummarize"
1707
2361
  /** Parent client reported that it is no longer connected. */
1708
2362
  | "parentNotConnected"
@@ -1793,6 +2447,20 @@ export declare type SummaryStage = SubmitSummaryResult["stage"] | "unknown";
1793
2447
  */
1794
2448
  export declare const TombstoneResponseHeaderKey = "isTombstoned";
1795
2449
 
2450
+ /**
2451
+ * Represents an unrecognized TypedContainerRuntimeMessage, e.g. a message from a future version of the container runtime.
2452
+ * @internal
2453
+ */
2454
+ export declare interface UnknownContainerRuntimeMessage extends Partial<RecentlyAddedContainerRuntimeMessageDetails> {
2455
+ /** Invalid type of the op, within the ContainerRuntime's domain. This value should never exist at runtime.
2456
+ * This is useful for type narrowing but should never be used as an actual message type at runtime.
2457
+ * Actual value will not be "__unknown...", but the type `Exclude<string, ContainerMessageType>` is not supported.
2458
+ */
2459
+ type: "__unknown_container_message_type__never_use_as_value__";
2460
+ /** Domain-specific contents, but not decipherable by an unknown op. */
2461
+ contents: unknown;
2462
+ }
2463
+
1796
2464
  /**
1797
2465
  * Unpacks runtime messages.
1798
2466
  *