@fluidframework/container-runtime 2.0.0-rc.1.0.3 → 2.0.0-rc.2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) 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 +45 -0
  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 +68 -30
  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.js.map +1 -1
  13. package/dist/channelCollection.d.ts +223 -0
  14. package/dist/channelCollection.d.ts.map +1 -0
  15. package/dist/{dataStores.js → channelCollection.js} +399 -83
  16. package/dist/channelCollection.js.map +1 -0
  17. package/dist/connectionTelemetry.d.ts +11 -1
  18. package/dist/connectionTelemetry.d.ts.map +1 -1
  19. package/dist/connectionTelemetry.js +42 -4
  20. package/dist/connectionTelemetry.js.map +1 -1
  21. package/dist/container-runtime-alpha.d.ts +98 -40
  22. package/dist/container-runtime-beta.d.ts +27 -9
  23. package/dist/container-runtime-public.d.ts +27 -9
  24. package/dist/container-runtime-untrimmed.d.ts +123 -40
  25. package/dist/containerHandleContext.d.ts +1 -1
  26. package/dist/containerHandleContext.d.ts.map +1 -1
  27. package/dist/containerHandleContext.js.map +1 -1
  28. package/dist/containerRuntime.d.ts +79 -55
  29. package/dist/containerRuntime.d.ts.map +1 -1
  30. package/dist/containerRuntime.js +541 -411
  31. package/dist/containerRuntime.js.map +1 -1
  32. package/dist/dataStore.d.ts +2 -3
  33. package/dist/dataStore.d.ts.map +1 -1
  34. package/dist/dataStore.js +12 -11
  35. package/dist/dataStore.js.map +1 -1
  36. package/dist/dataStoreContext.d.ts +71 -30
  37. package/dist/dataStoreContext.d.ts.map +1 -1
  38. package/dist/dataStoreContext.js +182 -141
  39. package/dist/dataStoreContext.js.map +1 -1
  40. package/dist/dataStoreContexts.d.ts +1 -1
  41. package/dist/dataStoreContexts.d.ts.map +1 -1
  42. package/dist/dataStoreContexts.js.map +1 -1
  43. package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
  44. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  45. package/dist/deltaManagerSummarizerProxy.js +91 -5
  46. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  47. package/dist/gc/garbageCollection.d.ts +22 -5
  48. package/dist/gc/garbageCollection.d.ts.map +1 -1
  49. package/dist/gc/garbageCollection.js +134 -75
  50. package/dist/gc/garbageCollection.js.map +1 -1
  51. package/dist/gc/gcConfigs.d.ts +2 -2
  52. package/dist/gc/gcConfigs.d.ts.map +1 -1
  53. package/dist/gc/gcConfigs.js +21 -21
  54. package/dist/gc/gcConfigs.js.map +1 -1
  55. package/dist/gc/gcDefinitions.d.ts +29 -6
  56. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  57. package/dist/gc/gcDefinitions.js +5 -1
  58. package/dist/gc/gcDefinitions.js.map +1 -1
  59. package/dist/gc/gcHelpers.d.ts +2 -2
  60. package/dist/gc/gcHelpers.d.ts.map +1 -1
  61. package/dist/gc/gcHelpers.js.map +1 -1
  62. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  63. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  64. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  65. package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
  66. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryStateTracker.js +18 -6
  68. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  69. package/dist/gc/gcTelemetry.d.ts +7 -7
  70. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  71. package/dist/gc/gcTelemetry.js +20 -20
  72. package/dist/gc/gcTelemetry.js.map +1 -1
  73. package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
  74. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  75. package/dist/gc/gcUnreferencedStateTracker.js +22 -11
  76. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  77. package/dist/gc/index.d.ts +8 -8
  78. package/dist/gc/index.d.ts.map +1 -1
  79. package/dist/gc/index.js +40 -38
  80. package/dist/gc/index.js.map +1 -1
  81. package/dist/index.d.ts +8 -20
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +28 -40
  84. package/dist/index.js.map +1 -1
  85. package/dist/messageTypes.d.ts +4 -4
  86. package/dist/messageTypes.d.ts.map +1 -1
  87. package/dist/messageTypes.js.map +1 -1
  88. package/dist/opLifecycle/batchManager.d.ts +2 -2
  89. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  90. package/dist/opLifecycle/batchManager.js.map +1 -1
  91. package/dist/opLifecycle/definitions.d.ts +2 -2
  92. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  93. package/dist/opLifecycle/definitions.js.map +1 -1
  94. package/dist/opLifecycle/index.d.ts +8 -8
  95. package/dist/opLifecycle/index.d.ts.map +1 -1
  96. package/dist/opLifecycle/index.js +18 -18
  97. package/dist/opLifecycle/index.js.map +1 -1
  98. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  99. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  100. package/dist/opLifecycle/opCompressor.js +4 -4
  101. package/dist/opLifecycle/opCompressor.js.map +1 -1
  102. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  103. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  104. package/dist/opLifecycle/opDecompressor.js +3 -3
  105. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  106. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  107. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  108. package/dist/opLifecycle/opGroupingManager.js +1 -10
  109. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  110. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  111. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  112. package/dist/opLifecycle/opSplitter.js +5 -5
  113. package/dist/opLifecycle/opSplitter.js.map +1 -1
  114. package/dist/opLifecycle/outbox.d.ts +7 -7
  115. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  116. package/dist/opLifecycle/outbox.js +20 -12
  117. package/dist/opLifecycle/outbox.js.map +1 -1
  118. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  119. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  120. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  121. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  122. package/dist/package.json +3 -0
  123. package/dist/packageVersion.d.ts +1 -1
  124. package/dist/packageVersion.js +1 -1
  125. package/dist/packageVersion.js.map +1 -1
  126. package/dist/pendingStateManager.d.ts +2 -1
  127. package/dist/pendingStateManager.d.ts.map +1 -1
  128. package/dist/pendingStateManager.js +18 -10
  129. package/dist/pendingStateManager.js.map +1 -1
  130. package/dist/scheduleManager.d.ts +1 -2
  131. package/dist/scheduleManager.d.ts.map +1 -1
  132. package/dist/scheduleManager.js +5 -5
  133. package/dist/scheduleManager.js.map +1 -1
  134. package/dist/summary/index.d.ts +12 -12
  135. package/dist/summary/index.d.ts.map +1 -1
  136. package/dist/summary/index.js +43 -43
  137. package/dist/summary/index.js.map +1 -1
  138. package/dist/summary/orderedClientElection.js +8 -8
  139. package/dist/summary/orderedClientElection.js.map +1 -1
  140. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  141. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  142. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  143. package/dist/summary/runningSummarizer.d.ts +11 -10
  144. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  145. package/dist/summary/runningSummarizer.js +114 -81
  146. package/dist/summary/runningSummarizer.js.map +1 -1
  147. package/dist/summary/summarizer.d.ts +4 -4
  148. package/dist/summary/summarizer.d.ts.map +1 -1
  149. package/dist/summary/summarizer.js +6 -6
  150. package/dist/summary/summarizer.js.map +1 -1
  151. package/dist/summary/summarizerClientElection.d.ts +2 -2
  152. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  153. package/dist/summary/summarizerClientElection.js.map +1 -1
  154. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  155. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  156. package/dist/summary/summarizerHeuristics.js.map +1 -1
  157. package/dist/summary/summarizerNode/index.d.ts +3 -3
  158. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  159. package/dist/summary/summarizerNode/index.js +4 -4
  160. package/dist/summary/summarizerNode/index.js.map +1 -1
  161. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  162. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  163. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  164. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  167. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  168. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  171. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  172. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  173. package/dist/summary/summarizerTypes.d.ts +10 -21
  174. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  175. package/dist/summary/summarizerTypes.js.map +1 -1
  176. package/dist/summary/summaryFormat.d.ts +15 -2
  177. package/dist/summary/summaryFormat.d.ts.map +1 -1
  178. package/dist/summary/summaryFormat.js.map +1 -1
  179. package/dist/summary/summaryGenerator.d.ts +6 -5
  180. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  181. package/dist/summary/summaryGenerator.js +10 -1
  182. package/dist/summary/summaryGenerator.js.map +1 -1
  183. package/dist/summary/summaryManager.d.ts +5 -6
  184. package/dist/summary/summaryManager.d.ts.map +1 -1
  185. package/dist/summary/summaryManager.js +4 -5
  186. package/dist/summary/summaryManager.js.map +1 -1
  187. package/dist/tsdoc-metadata.json +1 -1
  188. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  189. package/lib/batchTracker.d.ts.map +1 -0
  190. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  191. package/lib/batchTracker.js.map +1 -0
  192. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
  193. package/lib/blobManager.d.ts.map +1 -0
  194. package/lib/{blobManager.mjs → blobManager.js} +1 -1
  195. package/lib/blobManager.js.map +1 -0
  196. package/lib/channelCollection.d.ts +223 -0
  197. package/lib/channelCollection.d.ts.map +1 -0
  198. package/lib/{dataStores.mjs → channelCollection.js} +384 -71
  199. package/lib/channelCollection.js.map +1 -0
  200. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  201. package/lib/connectionTelemetry.d.ts.map +1 -0
  202. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  203. package/lib/connectionTelemetry.js.map +1 -0
  204. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +98 -40
  205. package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
  206. package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
  207. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +123 -40
  208. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  209. package/lib/containerHandleContext.d.ts.map +1 -0
  210. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  211. package/lib/containerHandleContext.js.map +1 -0
  212. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +84 -56
  213. package/lib/containerRuntime.d.ts.map +1 -0
  214. package/lib/{containerRuntime.mjs → containerRuntime.js} +460 -332
  215. package/lib/containerRuntime.js.map +1 -0
  216. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  217. package/lib/dataStore.d.ts.map +1 -0
  218. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  219. package/lib/dataStore.js.map +1 -0
  220. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +72 -31
  221. package/lib/dataStoreContext.d.ts.map +1 -0
  222. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +174 -133
  223. package/lib/dataStoreContext.js.map +1 -0
  224. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
  225. package/lib/dataStoreContexts.d.ts.map +1 -0
  226. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
  227. package/lib/dataStoreContexts.js.map +1 -0
  228. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  229. package/lib/dataStoreRegistry.d.ts.map +1 -0
  230. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  231. package/lib/dataStoreRegistry.js.map +1 -0
  232. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  233. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  234. package/lib/deltaManagerSummarizerProxy.js +124 -0
  235. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  236. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  237. package/lib/deltaScheduler.d.ts.map +1 -0
  238. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  239. package/lib/deltaScheduler.js.map +1 -0
  240. package/lib/{error.d.mts → error.d.ts} +1 -1
  241. package/lib/error.d.ts.map +1 -0
  242. package/lib/{error.mjs → error.js} +1 -1
  243. package/lib/error.js.map +1 -0
  244. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +23 -6
  245. package/lib/gc/garbageCollection.d.ts.map +1 -0
  246. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +103 -44
  247. package/lib/gc/garbageCollection.js.map +1 -0
  248. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  249. package/lib/gc/gcConfigs.d.ts.map +1 -0
  250. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
  251. package/lib/gc/gcConfigs.js.map +1 -0
  252. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +30 -7
  253. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  254. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +5 -1
  255. package/lib/gc/gcDefinitions.js.map +1 -0
  256. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  257. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  258. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  259. package/lib/gc/gcHelpers.js.map +1 -0
  260. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  261. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  262. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  263. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  264. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  265. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  266. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  267. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  268. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
  269. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  270. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
  271. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  272. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
  273. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  274. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
  275. package/lib/gc/gcTelemetry.js.map +1 -0
  276. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
  277. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  278. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
  279. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  280. package/lib/gc/{index.d.mts → index.d.ts} +9 -9
  281. package/lib/gc/index.d.ts.map +1 -0
  282. package/lib/gc/{index.mjs → index.js} +8 -8
  283. package/lib/gc/index.js.map +1 -0
  284. package/lib/{index.d.mts → index.d.ts} +9 -21
  285. package/lib/index.d.ts.map +1 -0
  286. package/lib/index.js +12 -0
  287. package/lib/index.js.map +1 -0
  288. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  289. package/lib/messageTypes.d.ts.map +1 -0
  290. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  291. package/lib/messageTypes.js.map +1 -0
  292. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  293. package/lib/metadata.d.ts.map +1 -0
  294. package/lib/{metadata.mjs → metadata.js} +1 -1
  295. package/lib/metadata.js.map +1 -0
  296. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  297. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  298. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  299. package/lib/opLifecycle/batchManager.js.map +1 -0
  300. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  301. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  302. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  303. package/lib/opLifecycle/definitions.js.map +1 -0
  304. package/lib/opLifecycle/index.d.ts +13 -0
  305. package/lib/opLifecycle/index.d.ts.map +1 -0
  306. package/lib/opLifecycle/index.js +12 -0
  307. package/lib/opLifecycle/index.js.map +1 -0
  308. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  309. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  310. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  311. package/lib/opLifecycle/opCompressor.js.map +1 -0
  312. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  313. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  314. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  315. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  316. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  317. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  318. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  319. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  320. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  321. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  322. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  323. package/lib/opLifecycle/opSplitter.js.map +1 -0
  324. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  325. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  326. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  327. package/lib/opLifecycle/outbox.js.map +1 -0
  328. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  329. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  330. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  331. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  332. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  333. package/lib/opProperties.d.ts.map +1 -0
  334. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  335. package/lib/opProperties.js.map +1 -0
  336. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  337. package/lib/packageVersion.d.ts.map +1 -0
  338. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  339. package/lib/packageVersion.js.map +1 -0
  340. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  341. package/lib/pendingStateManager.d.ts.map +1 -0
  342. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  343. package/lib/pendingStateManager.js.map +1 -0
  344. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  345. package/lib/scheduleManager.d.ts.map +1 -0
  346. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  347. package/lib/scheduleManager.js.map +1 -0
  348. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  349. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  350. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  351. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  352. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  353. package/lib/summary/index.d.ts.map +1 -0
  354. package/lib/summary/{index.mjs → index.js} +12 -12
  355. package/lib/summary/index.js.map +1 -0
  356. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  357. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  358. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  359. package/lib/summary/orderedClientElection.js.map +1 -0
  360. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  361. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  362. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  363. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  364. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  365. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  366. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  367. package/lib/summary/runningSummarizer.js.map +1 -0
  368. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  369. package/lib/summary/summarizer.d.ts.map +1 -0
  370. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  371. package/lib/summary/summarizer.js.map +1 -0
  372. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  373. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  374. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  375. package/lib/summary/summarizerClientElection.js.map +1 -0
  376. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  377. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  378. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  379. package/lib/summary/summarizerHeuristics.js.map +1 -0
  380. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  381. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  382. package/lib/summary/summarizerNode/index.js +7 -0
  383. package/lib/summary/summarizerNode/index.js.map +1 -0
  384. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  385. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  386. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  387. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  388. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  389. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  390. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  391. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  392. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  393. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  394. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  395. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  396. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  397. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  398. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  399. package/lib/summary/summarizerTypes.js.map +1 -0
  400. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  401. package/lib/summary/summaryCollection.d.ts.map +1 -0
  402. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  403. package/lib/summary/summaryCollection.js.map +1 -0
  404. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  405. package/lib/summary/summaryFormat.d.ts.map +1 -0
  406. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  407. package/lib/summary/summaryFormat.js.map +1 -0
  408. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  409. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  410. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  411. package/lib/summary/summaryGenerator.js.map +1 -0
  412. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  413. package/lib/summary/summaryManager.d.ts.map +1 -0
  414. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  415. package/lib/summary/summaryManager.js.map +1 -0
  416. package/lib/test/batchTracker.spec.js +88 -0
  417. package/lib/test/batchTracker.spec.js.map +1 -0
  418. package/lib/test/blobManager.spec.js +835 -0
  419. package/lib/test/blobManager.spec.js.map +1 -0
  420. package/lib/test/channelCollection.spec.js +141 -0
  421. package/lib/test/channelCollection.spec.js.map +1 -0
  422. package/lib/test/containerRuntime.spec.js +1748 -0
  423. package/lib/test/containerRuntime.spec.js.map +1 -0
  424. package/lib/test/dataStoreContext.spec.js +801 -0
  425. package/lib/test/dataStoreContext.spec.js.map +1 -0
  426. package/lib/test/dataStoreCreation.spec.js +312 -0
  427. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  428. package/lib/test/dataStoreRegistry.spec.js +26 -0
  429. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  430. package/lib/test/fuzz/fuzzUtils.js +66 -0
  431. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  432. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  433. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  434. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  435. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  436. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  437. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  438. package/lib/test/gc/garbageCollection.spec.js +1465 -0
  439. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  440. package/lib/test/gc/gcConfigs.spec.js +690 -0
  441. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  442. package/lib/test/gc/gcHelpers.spec.js +110 -0
  443. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  444. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  445. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  446. package/lib/test/gc/gcStats.spec.js +391 -0
  447. package/lib/test/gc/gcStats.spec.js.map +1 -0
  448. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  449. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  450. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  451. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  452. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  453. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  454. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  455. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  456. package/lib/test/getPendingBlobs.spec.js +193 -0
  457. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  458. package/lib/test/hardwareStats.spec.js +93 -0
  459. package/lib/test/hardwareStats.spec.js.map +1 -0
  460. package/lib/test/index.js +6 -0
  461. package/lib/test/index.js.map +1 -0
  462. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  463. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  464. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  465. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  466. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  467. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  468. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  469. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  470. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  471. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  472. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  473. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  474. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  475. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  476. package/lib/test/pendingStateManager.spec.js +329 -0
  477. package/lib/test/pendingStateManager.spec.js.map +1 -0
  478. package/lib/test/scheduleManager.spec.js +270 -0
  479. package/lib/test/scheduleManager.spec.js.map +1 -0
  480. package/lib/test/summarizerNode.spec.js +326 -0
  481. package/lib/test/summarizerNode.spec.js.map +1 -0
  482. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  483. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  484. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  485. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  486. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  487. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  488. package/lib/test/summary/summarizer.spec.js +29 -0
  489. package/lib/test/summary/summarizer.spec.js.map +1 -0
  490. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  491. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  492. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  493. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  494. package/lib/test/summary/summaryCollection.spec.js +200 -0
  495. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  496. package/lib/test/summary/summaryManager.spec.js +430 -0
  497. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  498. package/lib/test/summary/testQuorumClients.js +34 -0
  499. package/lib/test/summary/testQuorumClients.js.map +1 -0
  500. package/lib/test/throttler.spec.js +175 -0
  501. package/lib/test/throttler.spec.js.map +1 -0
  502. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  503. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  504. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  505. package/lib/throttler.d.ts.map +1 -0
  506. package/lib/{throttler.mjs → throttler.js} +1 -1
  507. package/lib/throttler.js.map +1 -0
  508. package/package.json +99 -88
  509. package/src/batchTracker.ts +1 -1
  510. package/src/blobManager.ts +1 -1
  511. package/src/{dataStores.ts → channelCollection.ts} +520 -84
  512. package/src/connectionTelemetry.ts +42 -3
  513. package/src/containerHandleContext.ts +1 -1
  514. package/src/containerRuntime.ts +661 -464
  515. package/src/dataStore.ts +13 -15
  516. package/src/dataStoreContext.ts +257 -184
  517. package/src/dataStoreContexts.ts +1 -1
  518. package/src/deltaManagerSummarizerProxy.ts +132 -7
  519. package/src/gc/garbageCollection.ts +121 -46
  520. package/src/gc/gcConfigs.ts +3 -3
  521. package/src/gc/gcDefinitions.ts +30 -7
  522. package/src/gc/gcHelpers.ts +2 -2
  523. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  524. package/src/gc/gcSummaryStateTracker.ts +19 -7
  525. package/src/gc/gcTelemetry.ts +10 -9
  526. package/src/gc/gcUnreferencedStateTracker.ts +12 -1
  527. package/src/gc/index.ts +10 -8
  528. package/src/index.ts +16 -27
  529. package/src/messageTypes.ts +4 -4
  530. package/src/opLifecycle/README.md +2 -4
  531. package/src/opLifecycle/batchManager.ts +2 -2
  532. package/src/opLifecycle/definitions.ts +2 -2
  533. package/src/opLifecycle/index.ts +8 -8
  534. package/src/opLifecycle/opCompressor.ts +3 -3
  535. package/src/opLifecycle/opDecompressor.ts +3 -3
  536. package/src/opLifecycle/opGroupingManager.ts +3 -12
  537. package/src/opLifecycle/opSplitter.ts +3 -3
  538. package/src/opLifecycle/outbox.ts +29 -9
  539. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  540. package/src/packageVersion.ts +1 -1
  541. package/src/pendingStateManager.ts +19 -13
  542. package/src/scheduleManager.ts +4 -4
  543. package/src/summary/index.ts +13 -12
  544. package/src/summary/orderedClientElection.ts +1 -1
  545. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  546. package/src/summary/runningSummarizer.ts +141 -93
  547. package/src/summary/summarizer.ts +7 -7
  548. package/src/summary/summarizerClientElection.ts +2 -2
  549. package/src/summary/summarizerHeuristics.ts +3 -3
  550. package/src/summary/summarizerNode/index.ts +6 -3
  551. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  552. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  553. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  554. package/src/summary/summarizerTypes.ts +12 -24
  555. package/src/summary/summaryFormat.ts +16 -2
  556. package/src/summary/summaryGenerator.ts +16 -4
  557. package/src/summary/summaryManager.ts +6 -7
  558. package/tsconfig.cjs.json +7 -0
  559. package/tsconfig.json +2 -5
  560. package/dist/dataStores.d.ts +0 -149
  561. package/dist/dataStores.d.ts.map +0 -1
  562. package/dist/dataStores.js.map +0 -1
  563. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  564. package/dist/deltaManagerProxyBase.js +0 -77
  565. package/dist/deltaManagerProxyBase.js.map +0 -1
  566. package/lib/batchTracker.d.mts.map +0 -1
  567. package/lib/batchTracker.mjs.map +0 -1
  568. package/lib/blobManager.d.mts.map +0 -1
  569. package/lib/blobManager.mjs.map +0 -1
  570. package/lib/connectionTelemetry.d.mts.map +0 -1
  571. package/lib/connectionTelemetry.mjs.map +0 -1
  572. package/lib/containerHandleContext.d.mts.map +0 -1
  573. package/lib/containerHandleContext.mjs.map +0 -1
  574. package/lib/containerRuntime.d.mts.map +0 -1
  575. package/lib/containerRuntime.mjs.map +0 -1
  576. package/lib/dataStore.d.mts.map +0 -1
  577. package/lib/dataStore.mjs.map +0 -1
  578. package/lib/dataStoreContext.d.mts.map +0 -1
  579. package/lib/dataStoreContext.mjs.map +0 -1
  580. package/lib/dataStoreContexts.d.mts.map +0 -1
  581. package/lib/dataStoreContexts.mjs.map +0 -1
  582. package/lib/dataStoreRegistry.d.mts.map +0 -1
  583. package/lib/dataStoreRegistry.mjs.map +0 -1
  584. package/lib/dataStores.d.mts +0 -149
  585. package/lib/dataStores.d.mts.map +0 -1
  586. package/lib/dataStores.mjs.map +0 -1
  587. package/lib/deltaManagerProxyBase.d.mts +0 -35
  588. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  589. package/lib/deltaManagerProxyBase.mjs +0 -73
  590. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  591. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  592. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  593. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  594. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  595. package/lib/deltaScheduler.d.mts.map +0 -1
  596. package/lib/deltaScheduler.mjs.map +0 -1
  597. package/lib/error.d.mts.map +0 -1
  598. package/lib/error.mjs.map +0 -1
  599. package/lib/gc/garbageCollection.d.mts.map +0 -1
  600. package/lib/gc/garbageCollection.mjs.map +0 -1
  601. package/lib/gc/gcConfigs.d.mts.map +0 -1
  602. package/lib/gc/gcConfigs.mjs.map +0 -1
  603. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  604. package/lib/gc/gcDefinitions.mjs.map +0 -1
  605. package/lib/gc/gcHelpers.mjs.map +0 -1
  606. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  607. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  608. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  609. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  610. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  611. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  612. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  613. package/lib/gc/gcTelemetry.mjs.map +0 -1
  614. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  615. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  616. package/lib/gc/index.d.mts.map +0 -1
  617. package/lib/gc/index.mjs.map +0 -1
  618. package/lib/index.d.mts.map +0 -1
  619. package/lib/index.mjs +0 -24
  620. package/lib/index.mjs.map +0 -1
  621. package/lib/messageTypes.d.mts.map +0 -1
  622. package/lib/messageTypes.mjs.map +0 -1
  623. package/lib/metadata.d.mts.map +0 -1
  624. package/lib/metadata.mjs.map +0 -1
  625. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  626. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  627. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  628. package/lib/opLifecycle/definitions.mjs.map +0 -1
  629. package/lib/opLifecycle/index.d.mts +0 -13
  630. package/lib/opLifecycle/index.d.mts.map +0 -1
  631. package/lib/opLifecycle/index.mjs +0 -12
  632. package/lib/opLifecycle/index.mjs.map +0 -1
  633. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  634. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  635. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  636. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  637. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  638. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  639. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  640. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  641. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  642. package/lib/opLifecycle/outbox.mjs.map +0 -1
  643. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  644. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  645. package/lib/opProperties.d.mts.map +0 -1
  646. package/lib/opProperties.mjs.map +0 -1
  647. package/lib/packageVersion.d.mts.map +0 -1
  648. package/lib/packageVersion.mjs.map +0 -1
  649. package/lib/pendingStateManager.d.mts.map +0 -1
  650. package/lib/pendingStateManager.mjs.map +0 -1
  651. package/lib/scheduleManager.d.mts.map +0 -1
  652. package/lib/scheduleManager.mjs.map +0 -1
  653. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  654. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  655. package/lib/summary/index.d.mts.map +0 -1
  656. package/lib/summary/index.mjs.map +0 -1
  657. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  658. package/lib/summary/orderedClientElection.mjs.map +0 -1
  659. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  660. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  661. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  662. package/lib/summary/runningSummarizer.mjs.map +0 -1
  663. package/lib/summary/summarizer.d.mts.map +0 -1
  664. package/lib/summary/summarizer.mjs.map +0 -1
  665. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  666. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  667. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  668. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  669. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  670. package/lib/summary/summarizerNode/index.mjs +0 -7
  671. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  672. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  673. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  674. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  675. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  676. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  677. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  678. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  679. package/lib/summary/summarizerTypes.mjs.map +0 -1
  680. package/lib/summary/summaryCollection.d.mts.map +0 -1
  681. package/lib/summary/summaryCollection.mjs.map +0 -1
  682. package/lib/summary/summaryFormat.d.mts.map +0 -1
  683. package/lib/summary/summaryFormat.mjs.map +0 -1
  684. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  685. package/lib/summary/summaryGenerator.mjs.map +0 -1
  686. package/lib/summary/summaryManager.d.mts.map +0 -1
  687. package/lib/summary/summaryManager.mjs.map +0 -1
  688. package/lib/throttler.d.mts.map +0 -1
  689. package/lib/throttler.mjs.map +0 -1
  690. package/src/deltaManagerProxyBase.ts +0 -111
@@ -13,10 +13,10 @@ import {
13
13
  ISummaryTreeWithStats,
14
14
  } from "@fluidframework/runtime-definitions";
15
15
  import { mergeStats, SummaryTreeBuilder } from "@fluidframework/runtime-utils";
16
- import { IRefreshSummaryResult } from "../summary";
17
- import { GCVersion, IGarbageCollectorConfigs, IGCStats } from "./gcDefinitions";
18
- import { generateSortedGCState } from "./gcHelpers";
19
- import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions";
16
+ import { IRefreshSummaryResult } from "../summary/index.js";
17
+ import { GCVersion, IGarbageCollectorConfigs, IGCStats } from "./gcDefinitions.js";
18
+ import { generateSortedGCState } from "./gcHelpers.js";
19
+ import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
20
20
 
21
21
  export const gcStateBlobKey = `${gcBlobPrefix}_root`;
22
22
 
@@ -51,6 +51,18 @@ export class GCSummaryStateTracker {
51
51
  // to unreferenced or vice-versa.
52
52
  public updatedDSCountSinceLastSummary: number = 0;
53
53
 
54
+ /** API for ensuring the correct auto-recovery mitigations */
55
+ public autoRecovery = {
56
+ requestFullGCOnNextRun: () => {
57
+ this.fullGCModeForAutoRecovery = true;
58
+ },
59
+ fullGCRequested: () => {
60
+ return this.fullGCModeForAutoRecovery;
61
+ },
62
+ };
63
+ /** If true, the next GC run will do fullGC mode to regenerate the GC data for each node */
64
+ private fullGCModeForAutoRecovery: boolean = false;
65
+
54
66
  constructor(
55
67
  // Tells whether GC should run or not.
56
68
  private readonly configs: Pick<
@@ -133,7 +145,6 @@ export class GCSummaryStateTracker {
133
145
  * If none of the components changed, it returns a summary handle for the entire GC data.
134
146
  */
135
147
  public summarize(
136
- fullTree: boolean,
137
148
  trackState: boolean,
138
149
  gcState: IGarbageCollectionState,
139
150
  deletedNodes: Set<string>,
@@ -167,7 +178,7 @@ export class GCSummaryStateTracker {
167
178
  serializedDeletedNodes,
168
179
  };
169
180
 
170
- if (trackState && !fullTree && this.latestSummaryData !== undefined) {
181
+ if (trackState && this.latestSummaryData !== undefined) {
171
182
  // If nothing changed since last summary, send a summary handle for the entire GC data.
172
183
  if (
173
184
  this.latestSummaryData.serializedGCState === serializedGCState &&
@@ -267,7 +278,7 @@ export class GCSummaryStateTracker {
267
278
  }
268
279
 
269
280
  /**
270
- * Called to refresh the latest summary state. This happens when either a pending summary is acked.
281
+ * Called to refresh the latest summary state. This happens when a pending summary is acked.
271
282
  */
272
283
  public async refreshLatestSummary(result: IRefreshSummaryResult): Promise<void> {
273
284
  if (!result.isSummaryTracked) {
@@ -287,6 +298,7 @@ export class GCSummaryStateTracker {
287
298
  this.latestSummaryData = this.pendingSummaryData;
288
299
  this.pendingSummaryData = undefined;
289
300
  this.updatedDSCountSinceLastSummary = 0;
301
+ this.fullGCModeForAutoRecovery = false;
290
302
  return;
291
303
  }
292
304
 
@@ -3,16 +3,16 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryGenericEvent } from "@fluidframework/core-interfaces";
7
6
  import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
8
7
  import {
9
8
  generateStack,
10
9
  ITelemetryLoggerExt,
11
10
  MonitoringContext,
12
11
  tagCodeArtifacts,
12
+ type ITelemetryGenericEventExt,
13
13
  } from "@fluidframework/telemetry-utils";
14
- import { RuntimeHeaderData } from "../containerRuntime";
15
- import { ICreateContainerMetadata } from "../summary";
14
+ import { RuntimeHeaderData } from "../containerRuntime.js";
15
+ import { ICreateContainerMetadata } from "../summary/index.js";
16
16
  import {
17
17
  GCNodeType,
18
18
  UnreferencedState,
@@ -22,8 +22,8 @@ import {
22
22
  throwOnTombstoneLoadOverrideKey,
23
23
  runSweepKey,
24
24
  GCFeatureMatrix,
25
- } from "./gcDefinitions";
26
- import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker";
25
+ } from "./gcDefinitions.js";
26
+ import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
27
27
 
28
28
  type NodeUsageType = "Changed" | "Loaded" | "Revived";
29
29
 
@@ -63,6 +63,7 @@ interface INodeUsageProps extends ICommonProps {
63
63
  currentReferenceTimestampMs: number | undefined;
64
64
  packagePath: readonly string[] | undefined;
65
65
  fromId?: string;
66
+ autorecovery?: true;
66
67
  }
67
68
 
68
69
  /**
@@ -189,8 +190,6 @@ export class GCTelemetryTracker {
189
190
  };
190
191
 
191
192
  // If the node that is used is tombstoned, log a tombstone telemetry.
192
- // Note that this is done before checking if "nodeStateTracker" is undefined below because unreferenced
193
- // tracking may not have yet been enabled. That happens only after the client transitions to write mode.
194
193
  if (nodeUsageProps.isTombstoned) {
195
194
  this.logTombstoneUsageTelemetry(nodeUsageProps, unrefEventProps, nodeType, usageType);
196
195
  }
@@ -344,7 +343,9 @@ export class GCTelemetryTracker {
344
343
  }
345
344
 
346
345
  if (missingExplicitRoutes.length > 0) {
347
- logger.sendErrorEvent({
346
+ // Send as Generic not Error since there are known corner cases where this will fire.
347
+ // E.g. If an old client re-references a node via an attach op (that doesn't include GC Data)
348
+ logger.sendTelemetryEvent({
348
349
  eventName: "gcUnknownOutboundReferences",
349
350
  ...tagCodeArtifacts({
350
351
  id: nodeId,
@@ -412,7 +413,7 @@ export class GCTelemetryTracker {
412
413
  */
413
414
  export function sendGCUnexpectedUsageEvent(
414
415
  mc: MonitoringContext,
415
- event: ITelemetryGenericEvent & {
416
+ event: ITelemetryGenericEventExt & {
416
417
  category: "error" | "generic";
417
418
  gcTombstoneEnforcementAllowed: boolean | undefined;
418
419
  },
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { assert, Timer } from "@fluidframework/core-utils";
7
7
  import { validatePrecondition } from "@fluidframework/telemetry-utils";
8
- import { UnreferencedState } from "./gcDefinitions";
8
+ import { UnreferencedState } from "./gcDefinitions.js";
9
9
 
10
10
  /** A wrapper around common-utils Timer that requires the timeout when calling start/restart */
11
11
  class TimerWithNoDefaultTimeout extends Timer {
@@ -25,6 +25,17 @@ class TimerWithNoDefaultTimeout extends Timer {
25
25
  }
26
26
  }
27
27
 
28
+ /** The collection of UnreferencedStateTrackers for all unreferenced nodes. Ensures stopTracking is called when deleting */
29
+ export class UnreferencedStateTrackerMap extends Map<string, UnreferencedStateTracker> {
30
+ /** Delete the given key, and stop tracking if that node was actually unreferenced */
31
+ delete(key: string): boolean {
32
+ // Stop tracking so as to clear out any running timers.
33
+ this.get(key)?.stopTracking();
34
+ // Delete the node as we don't need to track it any more.
35
+ return super.delete(key);
36
+ }
37
+ }
38
+
28
39
  /**
29
40
  * Helper class that tracks the state of an unreferenced node such as the time it was unreferenced and if it can
30
41
  * be tombstoned or deleted by the sweep phase.
package/src/gc/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { GarbageCollector } from "./garbageCollection";
6
+ export { GarbageCollector } from "./garbageCollection.js";
7
7
  export {
8
8
  nextGCVersion,
9
9
  defaultInactiveTimeoutMs,
@@ -33,30 +33,32 @@ export {
33
33
  runSessionExpiryKey,
34
34
  runSweepKey,
35
35
  stableGCVersion,
36
+ disableAutoRecoveryKey,
36
37
  disableDatastoreSweepKey,
37
38
  detectOutboundRoutesViaDDSKey,
38
39
  UnreferencedState,
39
40
  throwOnTombstoneLoadOverrideKey,
40
41
  GarbageCollectionMessage,
42
+ GarbageCollectionMessageType,
41
43
  ISweepMessage,
42
- } from "./gcDefinitions";
44
+ } from "./gcDefinitions.js";
43
45
  export {
44
46
  cloneGCData,
45
47
  concatGarbageCollectionStates,
46
48
  trimLeadingAndTrailingSlashes,
47
49
  unpackChildNodesGCDetails,
48
- } from "./gcHelpers";
49
- export { runGarbageCollection } from "./gcReferenceGraphAlgorithm";
50
+ } from "./gcHelpers.js";
51
+ export { runGarbageCollection } from "./gcReferenceGraphAlgorithm.js";
50
52
  export {
51
53
  IGarbageCollectionNodeData,
52
54
  IGarbageCollectionSnapshotData,
53
55
  IGarbageCollectionState,
54
56
  IGarbageCollectionSummaryDetailsLegacy,
55
- } from "./gcSummaryDefinitions";
57
+ } from "./gcSummaryDefinitions.js";
56
58
  export {
57
59
  gcStateBlobKey,
58
60
  GCSummaryStateTracker,
59
61
  IGCSummaryTrackingData,
60
- } from "./gcSummaryStateTracker";
61
- export { GCTelemetryTracker, sendGCUnexpectedUsageEvent } from "./gcTelemetry";
62
- export { UnreferencedStateTracker } from "./gcUnreferencedStateTracker";
62
+ } from "./gcSummaryStateTracker.js";
63
+ export { GCTelemetryTracker, sendGCUnexpectedUsageEvent } from "./gcTelemetry.js";
64
+ export { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
package/src/index.ts CHANGED
@@ -14,25 +14,30 @@ export {
14
14
  RuntimeMessage,
15
15
  agentSchedulerId,
16
16
  ContainerRuntime,
17
- RuntimeHeaders,
18
- AllowTombstoneRequestHeaderKey,
19
- AllowInactiveRequestHeaderKey,
20
17
  TombstoneResponseHeaderKey,
21
18
  InactiveResponseHeaderKey,
22
19
  ISummaryConfiguration,
23
20
  DefaultSummaryConfiguration,
24
21
  ICompressionRuntimeOptions,
25
22
  CompressionAlgorithms,
26
- } from "./containerRuntime";
23
+ } from "./containerRuntime.js";
27
24
  export {
28
25
  ContainerMessageType,
29
26
  ContainerRuntimeMessage,
30
27
  IContainerRuntimeMessageCompatDetails,
31
28
  CompatModeBehavior,
32
29
  RecentlyAddedContainerRuntimeMessageDetails,
33
- } from "./messageTypes";
34
- export { IBlobManagerLoadInfo } from "./blobManager";
35
- export { FluidDataStoreRegistry } from "./dataStoreRegistry";
30
+ UnknownContainerRuntimeMessage,
31
+ } from "./messageTypes.js";
32
+ export { IBlobManagerLoadInfo } from "./blobManager.js";
33
+ export { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
34
+ export {
35
+ detectOutboundReferences,
36
+ RuntimeHeaders,
37
+ ChannelCollectionFactory,
38
+ AllowTombstoneRequestHeaderKey,
39
+ AllowInactiveRequestHeaderKey,
40
+ } from "./channelCollection.js";
36
41
  export {
37
42
  GCNodeType,
38
43
  IGCMetadata,
@@ -42,7 +47,7 @@ export {
42
47
  IMarkPhaseStats,
43
48
  ISweepPhaseStats,
44
49
  IGCStats,
45
- } from "./gc";
50
+ } from "./gc/index.js";
46
51
  export {
47
52
  IAckedSummary,
48
53
  ISummarizer,
@@ -91,22 +96,6 @@ export {
91
96
  SummaryStage,
92
97
  IRetriableFailureResult,
93
98
  ISummarizeEventProps,
94
- } from "./summary";
95
- export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle";
96
-
97
- // Re-exports for backwards compatibility.
98
- // Will be removed in the future.
99
- export {
100
- /**
101
- * @deprecated Import from `@fluidframework/id-compressor` instead.
102
- */
103
- assertIsStableId,
104
- /**
105
- * @deprecated Import from `@fluidframework/id-compressor` instead.
106
- */
107
- generateStableId,
108
- /**
109
- * @deprecated Import from `@fluidframework/id-compressor` instead.
110
- */
111
- isStableId,
112
- } from "@fluidframework/id-compressor";
99
+ IdCompressorMode,
100
+ } from "./summary/index.js";
101
+ export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle/index.js";
@@ -10,9 +10,9 @@ import {
10
10
  IAttachMessage,
11
11
  } from "@fluidframework/runtime-definitions";
12
12
  import type { IdCreationRange } from "@fluidframework/id-compressor";
13
- import { IDataStoreAliasMessage } from "./dataStore";
14
- import { GarbageCollectionMessage } from "./gc";
15
- import { IChunkedOp } from "./opLifecycle";
13
+ import { IDataStoreAliasMessage } from "./dataStore.js";
14
+ import { GarbageCollectionMessage } from "./gc/index.js";
15
+ import { IChunkedOp } from "./opLifecycle/index.js";
16
16
 
17
17
  /**
18
18
  * @alpha
@@ -133,7 +133,7 @@ export type ContainerRuntimeGCMessage = TypedContainerRuntimeMessage<
133
133
  >;
134
134
 
135
135
  /**
136
- * Represents an unrecognized {@link TypedContainerRuntimeMessage}, e.g. a message from a future version of the container runtime.
136
+ * Represents an unrecognized TypedContainerRuntimeMessage, e.g. a message from a future version of the container runtime.
137
137
  * @internal
138
138
  */
139
139
  export interface UnknownContainerRuntimeMessage
@@ -65,8 +65,6 @@ Compression is relevant for both `FlushMode.TurnBased` and `FlushMode.Immediate`
65
65
 
66
66
  ## Grouped batching
67
67
 
68
- **Note: This feature is currently considered experimental and is not ready for production usage.**
69
-
70
68
  The `IContainerRuntimeOptions.enableGroupedBatching` option has been added to the container runtime layer and is **off by default**. This option will group all batch messages under a new "grouped" message to be sent to the service. Upon receiving this new "grouped" message, the batch messages will be extracted and given the sequence number of the parent "grouped" message.
71
69
 
72
70
  The purpose for enabling grouped batching on top of compression is that regular compression won't include the empty messages in the chunks. Thus, if we have batches with many messages (i.e. more than 4k), we will go over the batch size limit just on empty op envelopes alone.
@@ -75,7 +73,7 @@ See [below](#how-grouped-batching-works) for an example.
75
73
 
76
74
  ### Risks
77
75
 
78
- This option is experimental and should not be enabled yet in production. This option should **ONLY** be enabled after observing that 99.9% of your application sessions contains these changes (runtime version "2.0.0-internal.4.1.0" or later). Containers created with this option may not open in future versions of the framework.
76
+ This option should **ONLY** be enabled after observing that 99.9% of your application sessions contains these changes (runtime version "2.0.0-internal.7.0.0" or later). Containers created with this option may not open in future versions of the framework.
79
77
 
80
78
  This option will change a couple of expectations around message structure and runtime layer expectations. Only enable this option after testing
81
79
  and verifying that the following expectation changes won't have any effects:
@@ -91,7 +89,7 @@ Therefore, when grouped batching is enabled, all batches with reentrant ops are
91
89
 
92
90
  ### How to enable
93
91
 
94
- **This feature is disabled by default, currently considered experimental and not ready for production usage.**
92
+ **This feature is disabled by default**
95
93
 
96
94
  If all prerequisites in the previous section are met, enabling the feature can be done via the `IContainerRuntimeOptions` as following:
97
95
 
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ICompressionRuntimeOptions } from "../containerRuntime";
7
- import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
6
+ import { ICompressionRuntimeOptions } from "../containerRuntime.js";
7
+ import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions.js";
8
8
 
9
9
  export interface IBatchManagerOptions {
10
10
  readonly hardLimit: number;
@@ -5,8 +5,8 @@
5
5
 
6
6
  import { IBatchMessage } from "@fluidframework/container-definitions";
7
7
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
8
- import { CompressionAlgorithms } from "../containerRuntime";
9
- import { ContainerMessageType } from "../messageTypes";
8
+ import { CompressionAlgorithms } from "../containerRuntime.js";
9
+ import { ContainerMessageType } from "../messageTypes.js";
10
10
 
11
11
  /**
12
12
  * Batch message type used internally by the runtime
@@ -3,17 +3,17 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { BatchManager, estimateSocketSize, BatchSequenceNumbers } from "./batchManager";
6
+ export { BatchManager, estimateSocketSize, BatchSequenceNumbers } from "./batchManager.js";
7
7
  export {
8
8
  BatchMessage,
9
9
  IBatch,
10
10
  IBatchCheckpoint,
11
11
  IChunkedOp,
12
12
  IMessageProcessingResult,
13
- } from "./definitions";
14
- export { Outbox, getLongStack } from "./outbox";
15
- export { OpCompressor } from "./opCompressor";
16
- export { OpDecompressor } from "./opDecompressor";
17
- export { OpSplitter, splitOp } from "./opSplitter";
18
- export { RemoteMessageProcessor, unpackRuntimeMessage } from "./remoteMessageProcessor";
19
- export { OpGroupingManager } from "./opGroupingManager";
13
+ } from "./definitions.js";
14
+ export { Outbox, getLongStack } from "./outbox.js";
15
+ export { OpCompressor } from "./opCompressor.js";
16
+ export { OpDecompressor } from "./opDecompressor.js";
17
+ export { OpSplitter, splitOp } from "./opSplitter.js";
18
+ export { RemoteMessageProcessor, unpackRuntimeMessage } from "./remoteMessageProcessor.js";
19
+ export { OpGroupingManager } from "./opGroupingManager.js";
@@ -8,9 +8,9 @@ import { assert } from "@fluidframework/core-utils";
8
8
  import { IsoBuffer } from "@fluid-internal/client-utils";
9
9
  import { compress } from "lz4js";
10
10
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
11
- import { CompressionAlgorithms } from "../containerRuntime";
12
- import { estimateSocketSize } from "./batchManager";
13
- import { IBatch, BatchMessage } from "./definitions";
11
+ import { CompressionAlgorithms } from "../containerRuntime.js";
12
+ import { estimateSocketSize } from "./batchManager.js";
13
+ import { IBatch, BatchMessage } from "./definitions.js";
14
14
 
15
15
  /**
16
16
  * Compresses batches of ops. It generates a single compressed op that contains
@@ -9,9 +9,9 @@ import { assert } from "@fluidframework/core-utils";
9
9
  import { IsoBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
10
10
  import { createChildLogger } from "@fluidframework/telemetry-utils";
11
11
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
12
- import { CompressionAlgorithms } from "../containerRuntime";
13
- import { IBatchMetadata } from "../metadata";
14
- import { IMessageProcessingResult } from "./definitions";
12
+ import { CompressionAlgorithms } from "../containerRuntime.js";
13
+ import { IBatchMetadata } from "../metadata.js";
14
+ import { IMessageProcessingResult } from "./definitions.js";
15
15
 
16
16
  /**
17
17
  * Compression makes assumptions about the shape of message contents. This interface codifies those assumptions, but does not validate them.
@@ -7,8 +7,8 @@ import { assert } from "@fluidframework/core-utils";
7
7
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
8
8
  import { createChildLogger } from "@fluidframework/telemetry-utils";
9
9
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
10
- import { ContainerMessageType } from "../messageTypes";
11
- import { IBatch } from "./definitions";
10
+ import { ContainerMessageType } from "../messageTypes.js";
11
+ import { IBatch } from "./definitions.js";
12
12
 
13
13
  /**
14
14
  * Grouping makes assumptions about the shape of message contents. This interface codifies those assumptions, but does not validate them.
@@ -96,21 +96,12 @@ export class OpGroupingManager {
96
96
  }
97
97
 
98
98
  public ungroupOp(op: ISequencedDocumentMessage): ISequencedDocumentMessage[] {
99
- let fakeCsn = 1;
100
99
  if (!isGroupContents(op.contents)) {
101
- // Align the worlds of what clientSequenceNumber represents when grouped batching is enabled
102
- if (this.config.groupedBatchingEnabled) {
103
- return [
104
- {
105
- ...op,
106
- clientSequenceNumber: fakeCsn,
107
- },
108
- ];
109
- }
110
100
  return [op];
111
101
  }
112
102
 
113
103
  const messages = op.contents.contents;
104
+ let fakeCsn = 1;
114
105
  return messages.map((subMessage) => ({
115
106
  ...op,
116
107
  clientSequenceNumber: fakeCsn++,
@@ -12,9 +12,9 @@ import { assert } from "@fluidframework/core-utils";
12
12
  import { IBatchMessage } from "@fluidframework/container-definitions";
13
13
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
14
14
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
15
- import { ContainerMessageType, ContainerRuntimeChunkedOpMessage } from "../messageTypes";
16
- import { estimateSocketSize } from "./batchManager";
17
- import { BatchMessage, IBatch, IChunkedOp, IMessageProcessingResult } from "./definitions";
15
+ import { ContainerMessageType, ContainerRuntimeChunkedOpMessage } from "../messageTypes.js";
16
+ import { estimateSocketSize } from "./batchManager.js";
17
+ import { BatchMessage, IBatch, IChunkedOp, IMessageProcessingResult } from "./definitions.js";
18
18
 
19
19
  /**
20
20
  * Responsible for creating and reconstructing chunked messages.
@@ -12,18 +12,19 @@ import {
12
12
  import { assert } from "@fluidframework/core-utils";
13
13
  import { IBatchMessage, ICriticalContainerError } from "@fluidframework/container-definitions";
14
14
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
15
- import { ICompressionRuntimeOptions } from "../containerRuntime";
16
- import { IPendingBatchMessage, PendingStateManager } from "../pendingStateManager";
15
+ import { ICompressionRuntimeOptions } from "../containerRuntime.js";
16
+ import { IPendingBatchMessage, PendingStateManager } from "../pendingStateManager.js";
17
+ import { ContainerMessageType } from "../messageTypes.js";
17
18
  import {
18
19
  BatchManager,
19
20
  BatchSequenceNumbers,
20
21
  estimateSocketSize,
21
22
  sequenceNumbersMatch,
22
- } from "./batchManager";
23
- import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
24
- import { OpCompressor } from "./opCompressor";
25
- import { OpGroupingManager } from "./opGroupingManager";
26
- import { OpSplitter } from "./opSplitter";
23
+ } from "./batchManager.js";
24
+ import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions.js";
25
+ import { OpCompressor } from "./opCompressor.js";
26
+ import { OpGroupingManager } from "./opGroupingManager.js";
27
+ import { OpSplitter } from "./opSplitter.js";
27
28
 
28
29
  export interface IOutboxConfig {
29
30
  readonly compressionOptions: ICompressionRuntimeOptions;
@@ -136,10 +137,12 @@ export class Outbox {
136
137
  const mainBatchSeqNums = this.mainBatch.sequenceNumbers;
137
138
  const attachFlowBatchSeqNums = this.attachFlowBatch.sequenceNumbers;
138
139
  const blobAttachSeqNums = this.blobAttachBatch.sequenceNumbers;
140
+ const idAllocSeqNums = this.idAllocationBatch.sequenceNumbers;
139
141
  assert(
140
142
  this.params.config.disablePartialFlush ||
141
143
  (sequenceNumbersMatch(mainBatchSeqNums, attachFlowBatchSeqNums) &&
142
- sequenceNumbersMatch(mainBatchSeqNums, blobAttachSeqNums)),
144
+ sequenceNumbersMatch(mainBatchSeqNums, blobAttachSeqNums) &&
145
+ sequenceNumbersMatch(mainBatchSeqNums, idAllocSeqNums)),
143
146
  0x58d /* Reference sequence numbers from both batches must be in sync */,
144
147
  );
145
148
 
@@ -148,7 +151,8 @@ export class Outbox {
148
151
  if (
149
152
  sequenceNumbersMatch(mainBatchSeqNums, currentSequenceNumbers) &&
150
153
  sequenceNumbersMatch(attachFlowBatchSeqNums, currentSequenceNumbers) &&
151
- sequenceNumbersMatch(blobAttachSeqNums, currentSequenceNumbers)
154
+ sequenceNumbersMatch(blobAttachSeqNums, currentSequenceNumbers) &&
155
+ sequenceNumbersMatch(idAllocSeqNums, currentSequenceNumbers)
152
156
  ) {
153
157
  // The reference sequence numbers are stable, there is nothing to do
154
158
  return;
@@ -178,12 +182,20 @@ export class Outbox {
178
182
  }
179
183
 
180
184
  public submit(message: BatchMessage) {
185
+ assert(
186
+ message.type !== ContainerMessageType.IdAllocation,
187
+ 0x8f8 /* Allocation message submitted to mainBatch. */,
188
+ );
181
189
  this.maybeFlushPartialBatch();
182
190
 
183
191
  this.addMessageToBatchManager(this.mainBatch, message);
184
192
  }
185
193
 
186
194
  public submitAttach(message: BatchMessage) {
195
+ assert(
196
+ message.type === ContainerMessageType.Attach,
197
+ 0x8f9 /* Non attach message submitted to attachFlowBatch. */,
198
+ );
187
199
  this.maybeFlushPartialBatch();
188
200
 
189
201
  if (
@@ -215,6 +227,10 @@ export class Outbox {
215
227
  }
216
228
 
217
229
  public submitBlobAttach(message: BatchMessage) {
230
+ assert(
231
+ message.type === ContainerMessageType.BlobAttach,
232
+ 0x8fa /* Non blobAttach message submitted to blobAttachBatch. */,
233
+ );
218
234
  this.maybeFlushPartialBatch();
219
235
 
220
236
  this.addMessageToBatchManager(this.blobAttachBatch, message);
@@ -233,6 +249,10 @@ export class Outbox {
233
249
  }
234
250
 
235
251
  public submitIdAllocation(message: BatchMessage) {
252
+ assert(
253
+ message.type === ContainerMessageType.IdAllocation,
254
+ 0x8fb /* Non allocation message submitted to idAllocationBatch. */,
255
+ );
236
256
  this.maybeFlushPartialBatch();
237
257
 
238
258
  if (
@@ -10,10 +10,10 @@ import {
10
10
  type InboundSequencedContainerRuntimeMessage,
11
11
  type InboundSequencedContainerRuntimeMessageOrSystemMessage,
12
12
  type InboundSequencedRecentlyAddedContainerRuntimeMessage,
13
- } from "../messageTypes";
14
- import { OpDecompressor } from "./opDecompressor";
15
- import { OpGroupingManager } from "./opGroupingManager";
16
- import { OpSplitter } from "./opSplitter";
13
+ } from "../messageTypes.js";
14
+ import { OpDecompressor } from "./opDecompressor.js";
15
+ import { OpGroupingManager } from "./opGroupingManager.js";
16
+ import { OpSplitter } from "./opSplitter.js";
17
17
 
18
18
  /**
19
19
  * Stateful class for processing incoming remote messages as the virtualization measures are unwrapped,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.0.0-rc.1.0.3";
9
+ export const pkgVersion = "2.0.0-rc.2.0.0";
@@ -11,9 +11,9 @@ import { ICriticalContainerError } from "@fluidframework/container-definitions";
11
11
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
12
12
  import { DataProcessingError, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
13
13
 
14
- import { InboundSequencedContainerRuntimeMessage } from "./messageTypes";
15
- import { pkgVersion } from "./packageVersion";
16
- import { IBatchMetadata } from "./metadata";
14
+ import { InboundSequencedContainerRuntimeMessage } from "./messageTypes.js";
15
+ import { pkgVersion } from "./packageVersion.js";
16
+ import { IBatchMetadata } from "./metadata.js";
17
17
 
18
18
  /**
19
19
  * This represents a message that has been submitted and is added to the pending queue when `submit` is called on the
@@ -48,6 +48,7 @@ export interface IRuntimeStateHandler {
48
48
  reSubmit(message: IPendingBatchMessage): void;
49
49
  reSubmitBatch(batch: IPendingBatchMessage[]): void;
50
50
  isActiveConnection: () => boolean;
51
+ isAttached: () => boolean;
51
52
  }
52
53
 
53
54
  /** Union of keys of T */
@@ -182,28 +183,33 @@ export class PendingStateManager implements IDisposable {
182
183
  public async applyStashedOpsAt(seqNum?: number) {
183
184
  // apply stashed ops at sequence number
184
185
  while (!this.initialMessages.isEmpty()) {
185
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
186
- const nextMessage = this.initialMessages.peekFront()!;
187
186
  if (seqNum !== undefined) {
188
- if (nextMessage.referenceSequenceNumber > seqNum) {
187
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
188
+ const peekMessage = this.initialMessages.peekFront()!;
189
+ if (peekMessage.referenceSequenceNumber > seqNum) {
189
190
  break; // nothing left to do at this sequence number
190
191
  }
191
- if (nextMessage.referenceSequenceNumber < seqNum) {
192
+ if (peekMessage.referenceSequenceNumber < seqNum) {
192
193
  throw new Error("loaded from snapshot too recent to apply stashed ops");
193
194
  }
194
195
  }
195
-
196
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
197
+ const nextMessage = this.initialMessages.shift()!;
196
198
  try {
197
199
  // applyStashedOp will cause the DDS to behave as if it has sent the op but not actually send it
198
200
  const localOpMetadata = await this.stateHandler.applyStashedOp(nextMessage.content);
199
- nextMessage.localOpMetadata = localOpMetadata;
201
+ if (!this.stateHandler.isAttached()) {
202
+ if (localOpMetadata !== undefined) {
203
+ throw new Error("Local Op Metadata must be undefined when not attached");
204
+ }
205
+ } else {
206
+ nextMessage.localOpMetadata = localOpMetadata;
207
+ // then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
208
+ this.pendingMessages.push(nextMessage);
209
+ }
200
210
  } catch (error) {
201
211
  throw DataProcessingError.wrapIfUnrecognized(error, "applyStashedOp", nextMessage);
202
212
  }
203
-
204
- // then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
205
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
206
- this.pendingMessages.push(this.initialMessages.shift()!);
207
213
  }
208
214
  }
209
215