@fluidframework/container-runtime 2.13.0 → 2.21.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 (489) hide show
  1. package/.eslintrc.cjs +71 -5
  2. package/CHANGELOG.md +84 -0
  3. package/api-report/container-runtime.legacy.alpha.api.md +38 -232
  4. package/dist/batchTracker.d.ts +1 -2
  5. package/dist/batchTracker.d.ts.map +1 -1
  6. package/dist/batchTracker.js +1 -1
  7. package/dist/batchTracker.js.map +1 -1
  8. package/dist/blobManager/blobManager.d.ts +5 -1
  9. package/dist/blobManager/blobManager.d.ts.map +1 -1
  10. package/dist/blobManager/blobManager.js +30 -13
  11. package/dist/blobManager/blobManager.js.map +1 -1
  12. package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
  13. package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  14. package/dist/blobManager/blobManagerSnapSum.js +7 -5
  15. package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
  16. package/dist/channelCollection.d.ts +23 -12
  17. package/dist/channelCollection.d.ts.map +1 -1
  18. package/dist/channelCollection.js +85 -53
  19. package/dist/channelCollection.js.map +1 -1
  20. package/dist/connectionTelemetry.d.ts +2 -2
  21. package/dist/connectionTelemetry.d.ts.map +1 -1
  22. package/dist/connectionTelemetry.js +10 -6
  23. package/dist/connectionTelemetry.js.map +1 -1
  24. package/dist/containerHandleContext.d.ts +1 -1
  25. package/dist/containerHandleContext.d.ts.map +1 -1
  26. package/dist/containerHandleContext.js.map +1 -1
  27. package/dist/containerRuntime.d.ts +87 -94
  28. package/dist/containerRuntime.d.ts.map +1 -1
  29. package/dist/containerRuntime.js +312 -226
  30. package/dist/containerRuntime.js.map +1 -1
  31. package/dist/dataStore.d.ts +7 -3
  32. package/dist/dataStore.d.ts.map +1 -1
  33. package/dist/dataStore.js +8 -4
  34. package/dist/dataStore.js.map +1 -1
  35. package/dist/dataStoreContext.d.ts +41 -25
  36. package/dist/dataStoreContext.d.ts.map +1 -1
  37. package/dist/dataStoreContext.js +47 -29
  38. package/dist/dataStoreContext.js.map +1 -1
  39. package/dist/dataStoreContexts.d.ts +6 -2
  40. package/dist/dataStoreContexts.d.ts.map +1 -1
  41. package/dist/dataStoreContexts.js +7 -2
  42. package/dist/dataStoreContexts.js.map +1 -1
  43. package/dist/dataStoreRegistry.d.ts +1 -1
  44. package/dist/dataStoreRegistry.d.ts.map +1 -1
  45. package/dist/dataStoreRegistry.js.map +1 -1
  46. package/dist/deltaManagerProxies.d.ts +1 -17
  47. package/dist/deltaManagerProxies.d.ts.map +1 -1
  48. package/dist/deltaManagerProxies.js.map +1 -1
  49. package/dist/deltaScheduler.d.ts +9 -6
  50. package/dist/deltaScheduler.d.ts.map +1 -1
  51. package/dist/deltaScheduler.js +95 -89
  52. package/dist/deltaScheduler.js.map +1 -1
  53. package/dist/gc/garbageCollection.d.ts +21 -7
  54. package/dist/gc/garbageCollection.d.ts.map +1 -1
  55. package/dist/gc/garbageCollection.js +48 -19
  56. package/dist/gc/garbageCollection.js.map +1 -1
  57. package/dist/gc/gcConfigs.d.ts +11 -0
  58. package/dist/gc/gcConfigs.d.ts.map +1 -1
  59. package/dist/gc/gcConfigs.js +5 -2
  60. package/dist/gc/gcConfigs.js.map +1 -1
  61. package/dist/gc/gcDefinitions.d.ts +218 -70
  62. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  63. package/dist/gc/gcDefinitions.js +40 -13
  64. package/dist/gc/gcDefinitions.js.map +1 -1
  65. package/dist/gc/gcHelpers.d.ts +6 -2
  66. package/dist/gc/gcHelpers.d.ts.map +1 -1
  67. package/dist/gc/gcHelpers.js +14 -7
  68. package/dist/gc/gcHelpers.js.map +1 -1
  69. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  70. package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
  71. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  72. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  73. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  74. package/dist/gc/gcSummaryStateTracker.js +2 -1
  75. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  76. package/dist/gc/gcTelemetry.d.ts +33 -11
  77. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  78. package/dist/gc/gcTelemetry.js +35 -17
  79. package/dist/gc/gcTelemetry.js.map +1 -1
  80. package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
  81. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  82. package/dist/gc/gcUnreferencedStateTracker.js +27 -9
  83. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  84. package/dist/gc/index.d.ts +1 -0
  85. package/dist/gc/index.d.ts.map +1 -1
  86. package/dist/gc/index.js +3 -1
  87. package/dist/gc/index.js.map +1 -1
  88. package/dist/inboundBatchAggregator.d.ts +34 -0
  89. package/dist/inboundBatchAggregator.d.ts.map +1 -0
  90. package/dist/inboundBatchAggregator.js +185 -0
  91. package/dist/inboundBatchAggregator.js.map +1 -0
  92. package/dist/index.d.ts +1 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/layerCompatState.d.ts +19 -0
  96. package/dist/layerCompatState.d.ts.map +1 -0
  97. package/dist/layerCompatState.js +64 -0
  98. package/dist/layerCompatState.js.map +1 -0
  99. package/dist/legacy.d.ts +0 -4
  100. package/dist/messageTypes.d.ts +14 -5
  101. package/dist/messageTypes.d.ts.map +1 -1
  102. package/dist/messageTypes.js.map +1 -1
  103. package/dist/metadata.d.ts +12 -4
  104. package/dist/metadata.d.ts.map +1 -1
  105. package/dist/metadata.js +6 -2
  106. package/dist/metadata.js.map +1 -1
  107. package/dist/opLifecycle/batchManager.d.ts +9 -3
  108. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  109. package/dist/opLifecycle/batchManager.js +3 -1
  110. package/dist/opLifecycle/batchManager.js.map +1 -1
  111. package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  112. package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  113. package/dist/opLifecycle/duplicateBatchDetector.js +11 -5
  114. package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
  115. package/dist/opLifecycle/opCompressor.d.ts +3 -2
  116. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  117. package/dist/opLifecycle/opCompressor.js +13 -19
  118. package/dist/opLifecycle/opCompressor.js.map +1 -1
  119. package/dist/opLifecycle/opDecompressor.d.ts +6 -1
  120. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  121. package/dist/opLifecycle/opDecompressor.js +16 -8
  122. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  123. package/dist/opLifecycle/opGroupingManager.d.ts +1 -2
  124. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  125. package/dist/opLifecycle/opGroupingManager.js +9 -6
  126. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  127. package/dist/opLifecycle/opSplitter.d.ts +13 -10
  128. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  129. package/dist/opLifecycle/opSplitter.js +16 -11
  130. package/dist/opLifecycle/opSplitter.js.map +1 -1
  131. package/dist/opLifecycle/outbox.d.ts +4 -4
  132. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  133. package/dist/opLifecycle/outbox.js +17 -16
  134. package/dist/opLifecycle/outbox.js.map +1 -1
  135. package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  136. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  137. package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
  138. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  139. package/dist/package.json +2 -1
  140. package/dist/packageVersion.d.ts +1 -1
  141. package/dist/packageVersion.js +1 -1
  142. package/dist/packageVersion.js.map +1 -1
  143. package/dist/pendingStateManager.d.ts +22 -11
  144. package/dist/pendingStateManager.d.ts.map +1 -1
  145. package/dist/pendingStateManager.js +24 -15
  146. package/dist/pendingStateManager.js.map +1 -1
  147. package/dist/summary/documentSchema.d.ts +7 -0
  148. package/dist/summary/documentSchema.d.ts.map +1 -1
  149. package/dist/summary/documentSchema.js +8 -4
  150. package/dist/summary/documentSchema.js.map +1 -1
  151. package/dist/summary/index.d.ts +1 -1
  152. package/dist/summary/index.d.ts.map +1 -1
  153. package/dist/summary/index.js.map +1 -1
  154. package/dist/summary/orderedClientElection.d.ts +94 -31
  155. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  156. package/dist/summary/orderedClientElection.js +28 -16
  157. package/dist/summary/orderedClientElection.js.map +1 -1
  158. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
  159. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  160. package/dist/summary/runWhileConnectedCoordinator.js +7 -2
  161. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  162. package/dist/summary/runningSummarizer.d.ts +17 -6
  163. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  164. package/dist/summary/runningSummarizer.js +48 -19
  165. package/dist/summary/runningSummarizer.js.map +1 -1
  166. package/dist/summary/summarizer.d.ts +10 -5
  167. package/dist/summary/summarizer.d.ts.map +1 -1
  168. package/dist/summary/summarizer.js +26 -11
  169. package/dist/summary/summarizer.js.map +1 -1
  170. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  171. package/dist/summary/summarizerClientElection.js +1 -0
  172. package/dist/summary/summarizerClientElection.js.map +1 -1
  173. package/dist/summary/summarizerHeuristics.d.ts +6 -2
  174. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  175. package/dist/summary/summarizerHeuristics.js +13 -5
  176. package/dist/summary/summarizerHeuristics.js.map +1 -1
  177. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  178. package/dist/summary/summarizerNode/index.js.map +1 -1
  179. package/dist/summary/summarizerNode/summarizerNode.d.ts +24 -8
  180. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  181. package/dist/summary/summarizerNode/summarizerNode.js +45 -36
  182. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  183. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  184. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  185. package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  186. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  187. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
  188. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  189. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
  190. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  191. package/dist/summary/summarizerTypes.d.ts +253 -135
  192. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  193. package/dist/summary/summarizerTypes.js.map +1 -1
  194. package/dist/summary/summaryCollection.d.ts +3 -4
  195. package/dist/summary/summaryCollection.d.ts.map +1 -1
  196. package/dist/summary/summaryCollection.js +10 -8
  197. package/dist/summary/summaryCollection.js.map +1 -1
  198. package/dist/summary/summaryFormat.d.ts +28 -9
  199. package/dist/summary/summaryFormat.d.ts.map +1 -1
  200. package/dist/summary/summaryFormat.js +3 -2
  201. package/dist/summary/summaryFormat.js.map +1 -1
  202. package/dist/summary/summaryGenerator.d.ts +9 -3
  203. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  204. package/dist/summary/summaryGenerator.js +22 -9
  205. package/dist/summary/summaryGenerator.js.map +1 -1
  206. package/dist/summary/summaryManager.d.ts +8 -4
  207. package/dist/summary/summaryManager.d.ts.map +1 -1
  208. package/dist/summary/summaryManager.js +20 -9
  209. package/dist/summary/summaryManager.js.map +1 -1
  210. package/dist/throttler.d.ts +26 -10
  211. package/dist/throttler.d.ts.map +1 -1
  212. package/dist/throttler.js +12 -4
  213. package/dist/throttler.js.map +1 -1
  214. package/lib/batchTracker.d.ts +1 -2
  215. package/lib/batchTracker.d.ts.map +1 -1
  216. package/lib/batchTracker.js +2 -2
  217. package/lib/batchTracker.js.map +1 -1
  218. package/lib/blobManager/blobManager.d.ts +5 -1
  219. package/lib/blobManager/blobManager.d.ts.map +1 -1
  220. package/lib/blobManager/blobManager.js +30 -13
  221. package/lib/blobManager/blobManager.js.map +1 -1
  222. package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
  223. package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  224. package/lib/blobManager/blobManagerSnapSum.js +7 -5
  225. package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
  226. package/lib/channelCollection.d.ts +23 -12
  227. package/lib/channelCollection.d.ts.map +1 -1
  228. package/lib/channelCollection.js +88 -54
  229. package/lib/channelCollection.js.map +1 -1
  230. package/lib/connectionTelemetry.d.ts +2 -2
  231. package/lib/connectionTelemetry.d.ts.map +1 -1
  232. package/lib/connectionTelemetry.js +11 -7
  233. package/lib/connectionTelemetry.js.map +1 -1
  234. package/lib/containerHandleContext.d.ts +1 -1
  235. package/lib/containerHandleContext.d.ts.map +1 -1
  236. package/lib/containerHandleContext.js.map +1 -1
  237. package/lib/containerRuntime.d.ts +87 -94
  238. package/lib/containerRuntime.d.ts.map +1 -1
  239. package/lib/containerRuntime.js +319 -228
  240. package/lib/containerRuntime.js.map +1 -1
  241. package/lib/dataStore.d.ts +7 -3
  242. package/lib/dataStore.d.ts.map +1 -1
  243. package/lib/dataStore.js +8 -4
  244. package/lib/dataStore.js.map +1 -1
  245. package/lib/dataStoreContext.d.ts +41 -25
  246. package/lib/dataStoreContext.d.ts.map +1 -1
  247. package/lib/dataStoreContext.js +47 -29
  248. package/lib/dataStoreContext.js.map +1 -1
  249. package/lib/dataStoreContexts.d.ts +6 -2
  250. package/lib/dataStoreContexts.d.ts.map +1 -1
  251. package/lib/dataStoreContexts.js +7 -2
  252. package/lib/dataStoreContexts.js.map +1 -1
  253. package/lib/dataStoreRegistry.d.ts +1 -1
  254. package/lib/dataStoreRegistry.d.ts.map +1 -1
  255. package/lib/dataStoreRegistry.js.map +1 -1
  256. package/lib/deltaManagerProxies.d.ts +1 -17
  257. package/lib/deltaManagerProxies.d.ts.map +1 -1
  258. package/lib/deltaManagerProxies.js.map +1 -1
  259. package/lib/deltaScheduler.d.ts +9 -6
  260. package/lib/deltaScheduler.d.ts.map +1 -1
  261. package/lib/deltaScheduler.js +96 -90
  262. package/lib/deltaScheduler.js.map +1 -1
  263. package/lib/gc/garbageCollection.d.ts +21 -7
  264. package/lib/gc/garbageCollection.d.ts.map +1 -1
  265. package/lib/gc/garbageCollection.js +51 -20
  266. package/lib/gc/garbageCollection.js.map +1 -1
  267. package/lib/gc/gcConfigs.d.ts +11 -0
  268. package/lib/gc/gcConfigs.d.ts.map +1 -1
  269. package/lib/gc/gcConfigs.js +4 -2
  270. package/lib/gc/gcConfigs.js.map +1 -1
  271. package/lib/gc/gcDefinitions.d.ts +218 -70
  272. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  273. package/lib/gc/gcDefinitions.js +40 -13
  274. package/lib/gc/gcDefinitions.js.map +1 -1
  275. package/lib/gc/gcHelpers.d.ts +6 -2
  276. package/lib/gc/gcHelpers.d.ts.map +1 -1
  277. package/lib/gc/gcHelpers.js +14 -7
  278. package/lib/gc/gcHelpers.js.map +1 -1
  279. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  280. package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
  281. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  282. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  283. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  284. package/lib/gc/gcSummaryStateTracker.js +2 -1
  285. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  286. package/lib/gc/gcTelemetry.d.ts +33 -11
  287. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  288. package/lib/gc/gcTelemetry.js +38 -18
  289. package/lib/gc/gcTelemetry.js.map +1 -1
  290. package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
  291. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  292. package/lib/gc/gcUnreferencedStateTracker.js +27 -9
  293. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  294. package/lib/gc/index.d.ts +1 -0
  295. package/lib/gc/index.d.ts.map +1 -1
  296. package/lib/gc/index.js +1 -0
  297. package/lib/gc/index.js.map +1 -1
  298. package/lib/inboundBatchAggregator.d.ts +34 -0
  299. package/lib/inboundBatchAggregator.d.ts.map +1 -0
  300. package/lib/inboundBatchAggregator.js +181 -0
  301. package/lib/inboundBatchAggregator.js.map +1 -0
  302. package/lib/index.d.ts +1 -1
  303. package/lib/index.d.ts.map +1 -1
  304. package/lib/index.js.map +1 -1
  305. package/lib/layerCompatState.d.ts +19 -0
  306. package/lib/layerCompatState.d.ts.map +1 -0
  307. package/lib/layerCompatState.js +60 -0
  308. package/lib/layerCompatState.js.map +1 -0
  309. package/lib/legacy.d.ts +0 -4
  310. package/lib/messageTypes.d.ts +14 -5
  311. package/lib/messageTypes.d.ts.map +1 -1
  312. package/lib/messageTypes.js.map +1 -1
  313. package/lib/metadata.d.ts +12 -4
  314. package/lib/metadata.d.ts.map +1 -1
  315. package/lib/metadata.js +6 -2
  316. package/lib/metadata.js.map +1 -1
  317. package/lib/opLifecycle/batchManager.d.ts +9 -3
  318. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  319. package/lib/opLifecycle/batchManager.js +3 -1
  320. package/lib/opLifecycle/batchManager.js.map +1 -1
  321. package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
  322. package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
  323. package/lib/opLifecycle/duplicateBatchDetector.js +11 -5
  324. package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
  325. package/lib/opLifecycle/opCompressor.d.ts +3 -2
  326. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  327. package/lib/opLifecycle/opCompressor.js +14 -20
  328. package/lib/opLifecycle/opCompressor.js.map +1 -1
  329. package/lib/opLifecycle/opDecompressor.d.ts +6 -1
  330. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  331. package/lib/opLifecycle/opDecompressor.js +17 -9
  332. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  333. package/lib/opLifecycle/opGroupingManager.d.ts +1 -2
  334. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  335. package/lib/opLifecycle/opGroupingManager.js +10 -7
  336. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  337. package/lib/opLifecycle/opSplitter.d.ts +13 -10
  338. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  339. package/lib/opLifecycle/opSplitter.js +16 -11
  340. package/lib/opLifecycle/opSplitter.js.map +1 -1
  341. package/lib/opLifecycle/outbox.d.ts +4 -4
  342. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  343. package/lib/opLifecycle/outbox.js +17 -16
  344. package/lib/opLifecycle/outbox.js.map +1 -1
  345. package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
  346. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  347. package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
  348. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  349. package/lib/packageVersion.d.ts +1 -1
  350. package/lib/packageVersion.js +1 -1
  351. package/lib/packageVersion.js.map +1 -1
  352. package/lib/pendingStateManager.d.ts +22 -11
  353. package/lib/pendingStateManager.d.ts.map +1 -1
  354. package/lib/pendingStateManager.js +25 -16
  355. package/lib/pendingStateManager.js.map +1 -1
  356. package/lib/summary/documentSchema.d.ts +7 -0
  357. package/lib/summary/documentSchema.d.ts.map +1 -1
  358. package/lib/summary/documentSchema.js +8 -4
  359. package/lib/summary/documentSchema.js.map +1 -1
  360. package/lib/summary/index.d.ts +1 -1
  361. package/lib/summary/index.d.ts.map +1 -1
  362. package/lib/summary/index.js.map +1 -1
  363. package/lib/summary/orderedClientElection.d.ts +94 -31
  364. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  365. package/lib/summary/orderedClientElection.js +28 -16
  366. package/lib/summary/orderedClientElection.js.map +1 -1
  367. package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
  368. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  369. package/lib/summary/runWhileConnectedCoordinator.js +7 -2
  370. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  371. package/lib/summary/runningSummarizer.d.ts +17 -6
  372. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  373. package/lib/summary/runningSummarizer.js +48 -19
  374. package/lib/summary/runningSummarizer.js.map +1 -1
  375. package/lib/summary/summarizer.d.ts +10 -5
  376. package/lib/summary/summarizer.d.ts.map +1 -1
  377. package/lib/summary/summarizer.js +26 -11
  378. package/lib/summary/summarizer.js.map +1 -1
  379. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  380. package/lib/summary/summarizerClientElection.js +1 -0
  381. package/lib/summary/summarizerClientElection.js.map +1 -1
  382. package/lib/summary/summarizerHeuristics.d.ts +6 -2
  383. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  384. package/lib/summary/summarizerHeuristics.js +13 -5
  385. package/lib/summary/summarizerHeuristics.js.map +1 -1
  386. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  387. package/lib/summary/summarizerNode/index.js.map +1 -1
  388. package/lib/summary/summarizerNode/summarizerNode.d.ts +24 -8
  389. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  390. package/lib/summary/summarizerNode/summarizerNode.js +45 -36
  391. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  392. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
  393. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  394. package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
  395. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  396. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
  397. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  398. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
  399. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  400. package/lib/summary/summarizerTypes.d.ts +253 -135
  401. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  402. package/lib/summary/summarizerTypes.js.map +1 -1
  403. package/lib/summary/summaryCollection.d.ts +3 -4
  404. package/lib/summary/summaryCollection.d.ts.map +1 -1
  405. package/lib/summary/summaryCollection.js +10 -8
  406. package/lib/summary/summaryCollection.js.map +1 -1
  407. package/lib/summary/summaryFormat.d.ts +28 -9
  408. package/lib/summary/summaryFormat.d.ts.map +1 -1
  409. package/lib/summary/summaryFormat.js +2 -2
  410. package/lib/summary/summaryFormat.js.map +1 -1
  411. package/lib/summary/summaryGenerator.d.ts +9 -3
  412. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  413. package/lib/summary/summaryGenerator.js +22 -9
  414. package/lib/summary/summaryGenerator.js.map +1 -1
  415. package/lib/summary/summaryManager.d.ts +8 -4
  416. package/lib/summary/summaryManager.d.ts.map +1 -1
  417. package/lib/summary/summaryManager.js +20 -9
  418. package/lib/summary/summaryManager.js.map +1 -1
  419. package/lib/throttler.d.ts +26 -10
  420. package/lib/throttler.d.ts.map +1 -1
  421. package/lib/throttler.js +12 -4
  422. package/lib/throttler.js.map +1 -1
  423. package/package.json +22 -31
  424. package/src/batchTracker.ts +34 -36
  425. package/src/blobManager/blobManager.ts +54 -33
  426. package/src/blobManager/blobManagerSnapSum.ts +10 -10
  427. package/src/channelCollection.ts +108 -82
  428. package/src/connectionTelemetry.ts +43 -19
  429. package/src/containerHandleContext.ts +2 -2
  430. package/src/containerRuntime.ts +492 -364
  431. package/src/dataStore.ts +17 -9
  432. package/src/dataStoreContext.ts +94 -73
  433. package/src/dataStoreContexts.ts +17 -12
  434. package/src/dataStoreRegistry.ts +1 -1
  435. package/src/deltaManagerProxies.ts +5 -5
  436. package/src/deltaScheduler.ts +24 -18
  437. package/src/gc/garbageCollection.ts +89 -40
  438. package/src/gc/gcConfigs.ts +13 -5
  439. package/src/gc/gcDefinitions.ts +224 -70
  440. package/src/gc/gcHelpers.ts +22 -11
  441. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  442. package/src/gc/gcSummaryDefinitions.ts +18 -6
  443. package/src/gc/gcSummaryStateTracker.ts +7 -3
  444. package/src/gc/gcTelemetry.ts +73 -30
  445. package/src/gc/gcUnreferencedStateTracker.ts +40 -16
  446. package/src/gc/index.ts +1 -0
  447. package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +55 -122
  448. package/src/index.ts +0 -3
  449. package/src/layerCompatState.ts +75 -0
  450. package/src/messageTypes.ts +16 -5
  451. package/src/metadata.ts +12 -4
  452. package/src/opLifecycle/README.md +43 -34
  453. package/src/opLifecycle/batchManager.ts +12 -6
  454. package/src/opLifecycle/duplicateBatchDetector.ts +12 -6
  455. package/src/opLifecycle/opCompressor.ts +22 -25
  456. package/src/opLifecycle/opDecompressor.ts +23 -11
  457. package/src/opLifecycle/opGroupingManager.ts +16 -11
  458. package/src/opLifecycle/opSplitter.ts +24 -18
  459. package/src/opLifecycle/outbox.ts +35 -33
  460. package/src/opLifecycle/remoteMessageProcessor.ts +13 -5
  461. package/src/packageVersion.ts +1 -1
  462. package/src/pendingStateManager.ts +49 -26
  463. package/src/summary/documentSchema.ts +41 -22
  464. package/src/summary/index.ts +0 -3
  465. package/src/summary/orderedClientElection.ts +114 -49
  466. package/src/summary/runWhileConnectedCoordinator.ts +12 -3
  467. package/src/summary/runningSummarizer.ts +79 -36
  468. package/src/summary/summarizer.ts +51 -25
  469. package/src/summary/summarizerClientElection.ts +4 -2
  470. package/src/summary/summarizerHeuristics.ts +23 -12
  471. package/src/summary/summarizerNode/index.ts +1 -0
  472. package/src/summary/summarizerNode/summarizerNode.ts +54 -43
  473. package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
  474. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +25 -15
  475. package/src/summary/summarizerTypes.ts +253 -139
  476. package/src/summary/summaryCollection.ts +41 -31
  477. package/src/summary/summaryFormat.ts +34 -13
  478. package/src/summary/summaryGenerator.ts +39 -18
  479. package/src/summary/summaryManager.ts +36 -24
  480. package/src/throttler.ts +23 -11
  481. package/container-runtime.test-files.tar +0 -0
  482. package/dist/scheduleManager.d.ts +0 -28
  483. package/dist/scheduleManager.d.ts.map +0 -1
  484. package/dist/scheduleManager.js +0 -233
  485. package/dist/scheduleManager.js.map +0 -1
  486. package/lib/scheduleManager.d.ts +0 -28
  487. package/lib/scheduleManager.d.ts.map +0 -1
  488. package/lib/scheduleManager.js +0 -229
  489. package/lib/scheduleManager.js.map +0 -1
@@ -3,13 +3,14 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IDisposable } from "@fluidframework/core-interfaces";
6
+ import { IDisposable, type ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
7
  import { assert, Lazy } from "@fluidframework/core-utils/internal";
8
8
  import {
9
9
  ITelemetryLoggerExt,
10
10
  DataProcessingError,
11
11
  LoggingError,
12
12
  extractSafePropertiesFromMessage,
13
+ createChildLogger,
13
14
  } from "@fluidframework/telemetry-utils/internal";
14
15
  import Deque from "double-ended-queue";
15
16
  import { v4 as uuid } from "uuid";
@@ -56,16 +57,22 @@ export interface IPendingMessage {
56
57
  * Or, -1 if it was never submitted (and clientId will be a random uuid)
57
58
  */
58
59
  batchStartCsn: number;
59
- /** length of the batch (how many runtime messages here) */
60
+ /**
61
+ * length of the batch (how many runtime messages here)
62
+ */
60
63
  length: number;
61
- /** If true, don't compare batchID of incoming batches to this. e.g. ID Allocation Batch IDs should be ignored */
64
+ /**
65
+ * If true, don't compare batchID of incoming batches to this. e.g. ID Allocation Batch IDs should be ignored
66
+ */
62
67
  ignoreBatchId?: boolean;
63
68
  };
64
69
  }
65
70
 
66
71
  type Patch<T, U> = U & Omit<T, keyof U>;
67
72
 
68
- /** First version of the type (pre-dates batchInfo) */
73
+ /**
74
+ * First version of the type (pre-dates batchInfo)
75
+ */
69
76
  type IPendingMessageV0 = Patch<IPendingMessage, { batchInfo?: undefined }>;
70
77
 
71
78
  /**
@@ -82,7 +89,9 @@ export interface IPendingLocalState {
82
89
  pendingStates: IPendingMessage[];
83
90
  }
84
91
 
85
- /** Info needed to replay/resubmit a pending message */
92
+ /**
93
+ * Info needed to replay/resubmit a pending message
94
+ */
86
95
  export type PendingMessageResubmitData = Pick<
87
96
  IPendingMessage,
88
97
  "content" | "localOpMetadata" | "opMetadata"
@@ -98,7 +107,9 @@ export interface IRuntimeStateHandler {
98
107
  }
99
108
 
100
109
  function isEmptyBatchPendingMessage(message: IPendingMessageFromStash): boolean {
110
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
101
111
  const content = JSON.parse(message.content);
112
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
102
113
  return content.type === "groupedBatch" && content.contents?.length === 0;
103
114
  }
104
115
 
@@ -132,7 +143,7 @@ function scrubAndStringify(
132
143
  }
133
144
 
134
145
  /**
135
- * @returns The index where the strings diverge, and the character at that index in each string (or undefined if not applicable)
146
+ * Finds and returns the index where the strings diverge, and the character at that index in each string (or undefined if not applicable)
136
147
  */
137
148
  export function findFirstCharacterMismatched(
138
149
  a: string,
@@ -170,9 +181,13 @@ function withoutLocalOpMetadata(message: IPendingMessage): IPendingMessage {
170
181
  * It verifies that all the ops are acked, are received in the right order and batch information is correct.
171
182
  */
172
183
  export class PendingStateManager implements IDisposable {
173
- /** Messages that will need to be resubmitted if not ack'd before the next reconnection */
184
+ /**
185
+ * Messages that will need to be resubmitted if not ack'd before the next reconnection
186
+ */
174
187
  private readonly pendingMessages = new Deque<IPendingMessage>();
175
- /** Messages stashed from a previous container, now being rehydrated. Need to be resubmitted. */
188
+ /**
189
+ * Messages stashed from a previous container, now being rehydrated. Need to be resubmitted.
190
+ */
176
191
  private readonly initialMessages = new Deque<IPendingMessageFromStash>();
177
192
 
178
193
  /**
@@ -180,12 +195,15 @@ export class PendingStateManager implements IDisposable {
180
195
  */
181
196
  private savedOps: IPendingMessage[] = [];
182
197
 
198
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
183
199
  private readonly disposeOnce = new Lazy<void>(() => {
184
200
  this.initialMessages.clear();
185
201
  this.pendingMessages.clear();
186
202
  });
187
203
 
188
- /** Used to ensure we don't replay ops on the same connection twice */
204
+ /**
205
+ * Used to ensure we don't replay ops on the same connection twice
206
+ */
189
207
  private clientIdFromLastReplay: string | undefined;
190
208
 
191
209
  /**
@@ -228,36 +246,39 @@ export class PendingStateManager implements IDisposable {
228
246
  );
229
247
  return message.sequenceNumber > (snapshotSequenceNumber ?? 0);
230
248
  });
231
- this.pendingMessages.toArray().forEach((message) => {
249
+ for (const message of this.pendingMessages.toArray()) {
232
250
  if (
233
251
  snapshotSequenceNumber !== undefined &&
234
252
  message.referenceSequenceNumber < snapshotSequenceNumber
235
253
  ) {
236
254
  throw new LoggingError("trying to stash ops older than our latest snapshot");
237
255
  }
238
- });
256
+ }
239
257
  return {
240
258
  pendingStates: [
241
259
  ...newSavedOps,
242
- ...this.pendingMessages.toArray().map(withoutLocalOpMetadata),
260
+ ...this.pendingMessages.toArray().map((message) => withoutLocalOpMetadata(message)),
243
261
  ],
244
262
  };
245
263
  }
246
264
 
265
+ private readonly logger: ITelemetryLoggerExt;
266
+
247
267
  constructor(
248
268
  private readonly stateHandler: IRuntimeStateHandler,
249
269
  stashedLocalState: IPendingLocalState | undefined,
250
- private readonly logger: ITelemetryLoggerExt,
270
+ logger: ITelemetryBaseLogger,
251
271
  ) {
272
+ this.logger = createChildLogger({ logger });
252
273
  if (stashedLocalState?.pendingStates) {
253
274
  this.initialMessages.push(...stashedLocalState.pendingStates);
254
275
  }
255
276
  }
256
277
 
257
- public get disposed() {
278
+ public get disposed(): boolean {
258
279
  return this.disposeOnce.evaluated;
259
280
  }
260
- public readonly dispose = () => this.disposeOnce.value;
281
+ public readonly dispose = (): void => this.disposeOnce.value;
261
282
 
262
283
  /**
263
284
  * The given batch has been flushed, and needs to be tracked locally until the corresponding
@@ -271,7 +292,7 @@ export class PendingStateManager implements IDisposable {
271
292
  batch: BatchMessage[],
272
293
  clientSequenceNumber: number | undefined,
273
294
  ignoreBatchId?: boolean,
274
- ) {
295
+ ): void {
275
296
  // clientId and batchStartCsn are used for generating the batchId so we can detect container forks
276
297
  // where this batch was submitted by two different clients rehydrating from the same local state.
277
298
  // In the typical case where the batch was actually sent, use the clientId and clientSequenceNumber.
@@ -310,7 +331,7 @@ export class PendingStateManager implements IDisposable {
310
331
  * Applies stashed ops at their reference sequence number so they are ready to be ACKed or resubmitted
311
332
  * @param seqNum - Sequence number at which to apply ops. Will apply all ops if seqNum is undefined.
312
333
  */
313
- public async applyStashedOpsAt(seqNum?: number) {
334
+ public async applyStashedOpsAt(seqNum?: number): Promise<void> {
314
335
  // apply stashed ops at sequence number
315
336
  while (!this.initialMessages.isEmpty()) {
316
337
  if (seqNum !== undefined) {
@@ -336,15 +357,15 @@ export class PendingStateManager implements IDisposable {
336
357
  }
337
358
  // applyStashedOp will cause the DDS to behave as if it has sent the op but not actually send it
338
359
  const localOpMetadata = await this.stateHandler.applyStashedOp(nextMessage.content);
339
- if (!this.stateHandler.isAttached()) {
340
- if (localOpMetadata !== undefined) {
341
- throw new Error("Local Op Metadata must be undefined when not attached");
342
- }
343
- } else {
360
+ if (this.stateHandler.isAttached()) {
344
361
  nextMessage.localOpMetadata = localOpMetadata;
345
362
  // then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
346
363
  patchbatchInfo(nextMessage); // Back compat
347
364
  this.pendingMessages.push(nextMessage);
365
+ } else {
366
+ if (localOpMetadata !== undefined) {
367
+ throw new Error("Local Op Metadata must be undefined when not attached");
368
+ }
348
369
  }
349
370
  } catch (error) {
350
371
  throw DataProcessingError.wrapIfUnrecognized(error, "applyStashedOp", nextMessage);
@@ -535,7 +556,7 @@ export class PendingStateManager implements IDisposable {
535
556
  /**
536
557
  * Check if the incoming batch matches the batch info for the next pending message.
537
558
  */
538
- private onLocalBatchBegin(batchStart: BatchStartInfo, batchLength?: number) {
559
+ private onLocalBatchBegin(batchStart: BatchStartInfo, batchLength?: number): void {
539
560
  // Get the next message from the pending queue. Verify a message exists.
540
561
  const pendingMessage = this.pendingMessages.peekFront();
541
562
  assert(
@@ -594,7 +615,7 @@ export class PendingStateManager implements IDisposable {
594
615
  * states in its queue. This includes triggering resubmission of unacked ops.
595
616
  * ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)
596
617
  */
597
- public replayPendingStates() {
618
+ public replayPendingStates(): void {
598
619
  assert(
599
620
  this.stateHandler.connected(),
600
621
  0x172 /* "The connection state is not consistent with the runtime" */,
@@ -638,7 +659,7 @@ export class PendingStateManager implements IDisposable {
638
659
  /**
639
660
  * We must preserve the distinct batches on resubmit.
640
661
  * Note: It is not possible for the PendingStateManager to receive a partially acked batch. It will
641
- * either receive the whole batch ack or nothing at all. @see ScheduleManager for how this works.
662
+ * either receive the whole batch ack or nothing at all. See {@link InboundBatchAggregator} for how this works.
642
663
  */
643
664
  if (batchMetadataFlag === undefined) {
644
665
  // Single-message batch
@@ -705,7 +726,9 @@ export class PendingStateManager implements IDisposable {
705
726
  }
706
727
  }
707
728
 
708
- /** For back-compat if trying to apply stashed ops that pre-date batchInfo */
729
+ /**
730
+ * For back-compat if trying to apply stashed ops that pre-date batchInfo
731
+ */
709
732
  function patchbatchInfo(
710
733
  message: IPendingMessageFromStash,
711
734
  ): asserts message is IPendingMessage {
@@ -15,6 +15,7 @@ import { pkgVersion } from "../packageVersion.js";
15
15
  * we want them to continue to collaborate alongside clients who support that capability, but such capability is shipping dark for now.
16
16
  * @legacy
17
17
  * @alpha
18
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
18
19
  */
19
20
  export type DocumentSchemaValueType = string | string[] | true | number | undefined;
20
21
 
@@ -59,6 +60,7 @@ export type IdCompressorMode = "on" | "delayed" | undefined;
59
60
  *
60
61
  * @legacy
61
62
  * @alpha
63
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
62
64
  */
63
65
  export interface IDocumentSchema {
64
66
  // version that describes how data is stored in this structure.
@@ -80,6 +82,7 @@ export interface IDocumentSchema {
80
82
  * @see ContainerRuntimeDocumentSchemaMessage
81
83
  * @legacy
82
84
  * @alpha
85
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
83
86
  */
84
87
  export type IDocumentSchemaChangeMessage = IDocumentSchema;
85
88
 
@@ -91,6 +94,7 @@ export type IDocumentSchemaChangeMessage = IDocumentSchema;
91
94
  *
92
95
  * @legacy
93
96
  * @alpha
97
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
94
98
  */
95
99
  export interface IDocumentSchemaFeatures {
96
100
  // Tells if client uses legacy behavior of changing schema.
@@ -121,6 +125,7 @@ export interface IDocumentSchemaFeatures {
121
125
  * Ex: Changing the 'document schema acceptance' mechanism from convert-and-swap to one requiring consensus does require changing this version.
122
126
  * @legacy
123
127
  * @alpha
128
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
124
129
  */
125
130
  export const currentDocumentVersionSchema = 1;
126
131
 
@@ -128,6 +133,7 @@ export const currentDocumentVersionSchema = 1;
128
133
  * Current document schema.
129
134
  * @legacy
130
135
  * @alpha
136
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
131
137
  */
132
138
  // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
133
139
  export type IDocumentSchemaCurrent = {
@@ -148,21 +154,21 @@ interface IProperty<T = unknown> {
148
154
  }
149
155
 
150
156
  class TrueOrUndefined implements IProperty<true | undefined> {
151
- public and(currentDocSchema?: true, desiredDocSchema?: true) {
157
+ public and(currentDocSchema?: true, desiredDocSchema?: true): true | undefined {
152
158
  return currentDocSchema === true && desiredDocSchema === true ? true : undefined;
153
159
  }
154
160
 
155
- public or(currentDocSchema?: true, desiredDocSchema?: true) {
161
+ public or(currentDocSchema?: true, desiredDocSchema?: true): true | undefined {
156
162
  return currentDocSchema === true || desiredDocSchema === true ? true : undefined;
157
163
  }
158
164
 
159
- public validate(t: unknown) {
165
+ public validate(t: unknown): t is true | undefined {
160
166
  return t === undefined || t === true;
161
167
  }
162
168
  }
163
169
 
164
170
  class TrueOrUndefinedMax extends TrueOrUndefined {
165
- public and(currentDocSchema?: true, desiredDocSchema?: true) {
171
+ public and(currentDocSchema?: true, desiredDocSchema?: true): true | undefined {
166
172
  return this.or(currentDocSchema, desiredDocSchema);
167
173
  }
168
174
  }
@@ -170,7 +176,7 @@ class TrueOrUndefinedMax extends TrueOrUndefined {
170
176
  class MultiChoice implements IProperty<string | undefined> {
171
177
  constructor(private readonly choices: string[]) {}
172
178
 
173
- public and(currentDocSchema?: string, desiredDocSchema?: string) {
179
+ public and(currentDocSchema?: string, desiredDocSchema?: string): string | undefined {
174
180
  if (currentDocSchema === undefined || desiredDocSchema === undefined) {
175
181
  return undefined;
176
182
  }
@@ -179,7 +185,7 @@ class MultiChoice implements IProperty<string | undefined> {
179
185
  ];
180
186
  }
181
187
 
182
- public or(currentDocSchema?: string, desiredDocSchema?: string) {
188
+ public or(currentDocSchema?: string, desiredDocSchema?: string): string | undefined {
183
189
  if (currentDocSchema === undefined) {
184
190
  return desiredDocSchema;
185
191
  }
@@ -191,30 +197,36 @@ class MultiChoice implements IProperty<string | undefined> {
191
197
  ];
192
198
  }
193
199
 
194
- public validate(t: unknown) {
200
+ public validate(t: unknown): boolean {
195
201
  return t === undefined || (typeof t === "string" && this.choices.includes(t));
196
202
  }
197
203
  }
198
204
 
199
205
  class IdCompressorProperty extends MultiChoice {
200
206
  // document schema always wins!
201
- public and(currentDocSchema?: string, desiredDocSchema?: string) {
207
+ public and(currentDocSchema?: string, desiredDocSchema?: string): string | undefined {
202
208
  return currentDocSchema;
203
209
  }
204
210
  }
205
211
 
206
212
  class CheckVersions implements IProperty<string[] | undefined> {
207
- public or(currentDocSchema: string[] = [], desiredDocSchema: string[] = []) {
213
+ public or(
214
+ currentDocSchema: string[] = [],
215
+ desiredDocSchema: string[] = [],
216
+ ): string[] | undefined {
208
217
  const set = new Set<string>([...currentDocSchema, ...desiredDocSchema]);
209
218
  return arrayToProp([...set.values()]);
210
219
  }
211
220
 
212
221
  // Once version is there, it stays there forever.
213
- public and(currentDocSchema: string[] = [], desiredDocSchema: string[] = []) {
222
+ public and(
223
+ currentDocSchema: string[] = [],
224
+ desiredDocSchema: string[] = [],
225
+ ): string[] | undefined {
214
226
  return this.or(currentDocSchema, desiredDocSchema);
215
227
  }
216
228
 
217
- public validate(t: unknown) {
229
+ public validate(t: unknown): boolean {
218
230
  return t === undefined || (Array.isArray(t) && !t.includes(pkgVersion));
219
231
  }
220
232
  }
@@ -238,7 +250,7 @@ const documentSchemaSupportedConfigs = {
238
250
  function checkRuntimeCompatibility(
239
251
  documentSchema: IDocumentSchema | undefined,
240
252
  schemaName: string,
241
- ) {
253
+ ): void {
242
254
  // Back-compat - we can't do anything about legacy documents.
243
255
  // There is no way to validate them, so we are taking a guess that safe deployment processes used by a given app
244
256
  // do not run into compat problems.
@@ -278,6 +290,7 @@ function checkRuntimeCompatibility(
278
290
  }
279
291
 
280
292
  if (unknownProperty !== undefined) {
293
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
281
294
  const value = documentSchema[unknownProperty];
282
295
  throw DataProcessingError.create(
283
296
  msg,
@@ -286,6 +299,7 @@ function checkRuntimeCompatibility(
286
299
  {
287
300
  codeVersion: currentDocumentVersionSchema,
288
301
  property: unknownProperty,
302
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
289
303
  value,
290
304
  schemaName,
291
305
  },
@@ -354,11 +368,11 @@ function same(
354
368
  return true;
355
369
  }
356
370
 
357
- function boolToProp(b: boolean) {
371
+ function boolToProp(b: boolean): true | undefined {
358
372
  return b ? true : undefined;
359
373
  }
360
374
 
361
- function arrayToProp(arr: string[]) {
375
+ function arrayToProp(arr: string[]): string[] | undefined {
362
376
  return arr.length === 0 ? undefined : arr;
363
377
  }
364
378
 
@@ -429,6 +443,7 @@ function arrayToProp(arr: string[]) {
429
443
  *
430
444
  * @legacy
431
445
  * @alpha
446
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
432
447
  * @sealed
433
448
  */
434
449
  export class DocumentsSchemaController {
@@ -488,9 +503,8 @@ export class DocumentsSchemaController {
488
503
  // Schema coming from document metadata (snapshot we loaded from), or if no document exists
489
504
  // (this is a new document) then this is the same as desiredSchema (same as session schema in such case).
490
505
  // Latter is importnat sure that's what will go into summary.
491
- this.documentSchema = !existing
492
- ? this.desiredSchema
493
- : ((documentMetadataSchema as IDocumentSchemaCurrent) ??
506
+ this.documentSchema = existing
507
+ ? ((documentMetadataSchema as IDocumentSchemaCurrent) ??
494
508
  ({
495
509
  version: currentDocumentVersionSchema,
496
510
  // see comment in summarizeDocumentSchema() on why it has to stay zero
@@ -500,7 +514,8 @@ export class DocumentsSchemaController {
500
514
  runtime: {
501
515
  explicitSchemaControl: boolToProp(!existing && features.explicitSchemaControl),
502
516
  },
503
- } satisfies IDocumentSchemaCurrent));
517
+ } satisfies IDocumentSchemaCurrent))
518
+ : this.desiredSchema;
504
519
 
505
520
  checkRuntimeCompatibility(this.documentSchema, "document");
506
521
  this.validateSeqNumber(this.documentSchema.refSeq, snapshotSequenceNumber, "summary");
@@ -580,7 +595,11 @@ export class DocumentsSchemaController {
580
595
  }
581
596
  }
582
597
 
583
- private validateSeqNumber(schemaSeqNumber: number, lastKnowSeqNumber, message: string) {
598
+ private validateSeqNumber(
599
+ schemaSeqNumber: number,
600
+ lastKnowSeqNumber: number,
601
+ message: string,
602
+ ): void {
584
603
  if (!Number.isInteger(schemaSeqNumber) || !(schemaSeqNumber <= lastKnowSeqNumber)) {
585
604
  throw DataProcessingError.create(
586
605
  "DocSchema: Incorrect sequence number",
@@ -608,7 +627,7 @@ export class DocumentsSchemaController {
608
627
  content: IDocumentSchemaChangeMessage,
609
628
  local: boolean,
610
629
  sequenceNumber: number,
611
- ) {
630
+ ): boolean {
612
631
  return this.processDocumentSchemaMessages([content], local, sequenceNumber);
613
632
  }
614
633
 
@@ -624,7 +643,7 @@ export class DocumentsSchemaController {
624
643
  contents: IDocumentSchemaChangeMessage[],
625
644
  local: boolean,
626
645
  sequenceNumber: number,
627
- ) {
646
+ ): boolean {
628
647
  for (const content of contents) {
629
648
  this.validateSeqNumber(content.refSeq, this.documentSchema.refSeq, "content.refSeq");
630
649
  this.validateSeqNumber(this.documentSchema.refSeq, sequenceNumber, "refSeq");
@@ -672,7 +691,7 @@ export class DocumentsSchemaController {
672
691
  return true;
673
692
  }
674
693
 
675
- public onDisconnect() {
694
+ public onDisconnect(): void {
676
695
  this.sendOp = true;
677
696
  }
678
697
  }
@@ -44,12 +44,10 @@ export {
44
44
  ISummarizeHeuristicData,
45
45
  ISummarizer,
46
46
  ISummarizeResults,
47
- ISummarizerEvents,
48
47
  ISummarizerInternalsProvider,
49
48
  ISummarizerRuntime,
50
49
  ISummaryCancellationToken,
51
50
  SubmitSummaryResult,
52
- SummarizerStopReason,
53
51
  EnqueueSummarizeResult,
54
52
  IAckSummaryResult,
55
53
  IBaseSummarizeResult,
@@ -67,7 +65,6 @@ export {
67
65
  SubmitSummaryFailureData,
68
66
  SummaryStage,
69
67
  IRetriableFailureError,
70
- ISummarizeEventProps,
71
68
  } from "./summarizerTypes.js";
72
69
  export {
73
70
  IAckedSummary,