@fluidframework/container-runtime 2.0.0-dev-rc.2.0.0.246488 → 2.0.0-dev-rc.3.0.0.250606

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 (456) hide show
  1. package/api-report/container-runtime.api.md +78 -25
  2. package/dist/batchTracker.d.ts +1 -1
  3. package/dist/batchTracker.d.ts.map +1 -1
  4. package/dist/batchTracker.js +2 -2
  5. package/dist/batchTracker.js.map +1 -1
  6. package/dist/blobManager.d.ts +3 -3
  7. package/dist/blobManager.d.ts.map +1 -1
  8. package/dist/blobManager.js +3 -3
  9. package/dist/blobManager.js.map +1 -1
  10. package/dist/channelCollection.d.ts +5 -5
  11. package/dist/channelCollection.d.ts.map +1 -1
  12. package/dist/channelCollection.js +44 -11
  13. package/dist/channelCollection.js.map +1 -1
  14. package/dist/connectionTelemetry.d.ts +2 -2
  15. package/dist/connectionTelemetry.d.ts.map +1 -1
  16. package/dist/connectionTelemetry.js +3 -3
  17. package/dist/connectionTelemetry.js.map +1 -1
  18. package/dist/container-runtime-alpha.d.ts +205 -11
  19. package/dist/container-runtime-beta.d.ts +16 -2
  20. package/dist/container-runtime-public.d.ts +16 -2
  21. package/dist/container-runtime-untrimmed.d.ts +205 -24
  22. package/dist/containerHandleContext.d.ts.map +1 -1
  23. package/dist/containerHandleContext.js.map +1 -1
  24. package/dist/containerRuntime.d.ts +32 -26
  25. package/dist/containerRuntime.d.ts.map +1 -1
  26. package/dist/containerRuntime.js +213 -119
  27. package/dist/containerRuntime.js.map +1 -1
  28. package/dist/dataStore.d.ts +1 -1
  29. package/dist/dataStore.d.ts.map +1 -1
  30. package/dist/dataStore.js +2 -2
  31. package/dist/dataStore.js.map +1 -1
  32. package/dist/dataStoreContext.d.ts +4 -4
  33. package/dist/dataStoreContext.d.ts.map +1 -1
  34. package/dist/dataStoreContext.js +18 -18
  35. package/dist/dataStoreContext.js.map +1 -1
  36. package/dist/dataStoreContexts.d.ts.map +1 -1
  37. package/dist/dataStoreContexts.js.map +1 -1
  38. package/dist/dataStoreRegistry.d.ts.map +1 -1
  39. package/dist/dataStoreRegistry.js.map +1 -1
  40. package/dist/deltaScheduler.d.ts +1 -1
  41. package/dist/deltaScheduler.d.ts.map +1 -1
  42. package/dist/deltaScheduler.js +1 -1
  43. package/dist/deltaScheduler.js.map +1 -1
  44. package/dist/gc/garbageCollection.d.ts +1 -1
  45. package/dist/gc/garbageCollection.d.ts.map +1 -1
  46. package/dist/gc/garbageCollection.js +1 -1
  47. package/dist/gc/garbageCollection.js.map +1 -1
  48. package/dist/gc/gcConfigs.d.ts +1 -1
  49. package/dist/gc/gcConfigs.d.ts.map +1 -1
  50. package/dist/gc/gcConfigs.js.map +1 -1
  51. package/dist/gc/gcDefinitions.d.ts +1 -1
  52. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  53. package/dist/gc/gcDefinitions.js.map +1 -1
  54. package/dist/gc/gcHelpers.d.ts.map +1 -1
  55. package/dist/gc/gcHelpers.js.map +1 -1
  56. package/dist/gc/gcSummaryStateTracker.d.ts +1 -1
  57. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  58. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  59. package/dist/gc/gcTelemetry.d.ts +1 -1
  60. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  61. package/dist/gc/gcTelemetry.js.map +1 -1
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +4 -2
  65. package/dist/index.js.map +1 -1
  66. package/dist/messageTypes.d.ts +11 -5
  67. package/dist/messageTypes.d.ts.map +1 -1
  68. package/dist/messageTypes.js +4 -0
  69. package/dist/messageTypes.js.map +1 -1
  70. package/dist/opLifecycle/definitions.d.ts +1 -19
  71. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  72. package/dist/opLifecycle/definitions.js.map +1 -1
  73. package/dist/opLifecycle/index.d.ts +3 -3
  74. package/dist/opLifecycle/index.d.ts.map +1 -1
  75. package/dist/opLifecycle/index.js +3 -1
  76. package/dist/opLifecycle/index.js.map +1 -1
  77. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  78. package/dist/opLifecycle/opCompressor.js +2 -3
  79. package/dist/opLifecycle/opCompressor.js.map +1 -1
  80. package/dist/opLifecycle/opDecompressor.d.ts +15 -4
  81. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  82. package/dist/opLifecycle/opDecompressor.js +60 -61
  83. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  84. package/dist/opLifecycle/opGroupingManager.d.ts +2 -1
  85. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  86. package/dist/opLifecycle/opGroupingManager.js +9 -11
  87. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  88. package/dist/opLifecycle/opSplitter.d.ts +11 -3
  89. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  90. package/dist/opLifecycle/opSplitter.js +48 -38
  91. package/dist/opLifecycle/opSplitter.js.map +1 -1
  92. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  93. package/dist/opLifecycle/outbox.js +7 -12
  94. package/dist/opLifecycle/outbox.js.map +1 -1
  95. package/dist/opLifecycle/remoteMessageProcessor.d.ts +8 -0
  96. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  97. package/dist/opLifecycle/remoteMessageProcessor.js +36 -35
  98. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  99. package/dist/packageVersion.d.ts +1 -1
  100. package/dist/packageVersion.js +1 -1
  101. package/dist/packageVersion.js.map +1 -1
  102. package/dist/pendingStateManager.d.ts +1 -1
  103. package/dist/pendingStateManager.d.ts.map +1 -1
  104. package/dist/pendingStateManager.js.map +1 -1
  105. package/dist/scheduleManager.d.ts +1 -1
  106. package/dist/scheduleManager.d.ts.map +1 -1
  107. package/dist/scheduleManager.js +2 -2
  108. package/dist/scheduleManager.js.map +1 -1
  109. package/dist/summary/documentSchema.d.ts +178 -0
  110. package/dist/summary/documentSchema.d.ts.map +1 -0
  111. package/dist/summary/documentSchema.js +345 -0
  112. package/dist/summary/documentSchema.js.map +1 -0
  113. package/dist/summary/index.d.ts +2 -1
  114. package/dist/summary/index.d.ts.map +1 -1
  115. package/dist/summary/index.js +4 -1
  116. package/dist/summary/index.js.map +1 -1
  117. package/dist/summary/orderedClientElection.d.ts +2 -2
  118. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  119. package/dist/summary/orderedClientElection.js +3 -2
  120. package/dist/summary/orderedClientElection.js.map +1 -1
  121. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  122. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  123. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  124. package/dist/summary/runningSummarizer.d.ts +2 -2
  125. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  126. package/dist/summary/runningSummarizer.js +2 -2
  127. package/dist/summary/runningSummarizer.js.map +1 -1
  128. package/dist/summary/summarizer.d.ts +2 -2
  129. package/dist/summary/summarizer.d.ts.map +1 -1
  130. package/dist/summary/summarizer.js +2 -2
  131. package/dist/summary/summarizer.js.map +1 -1
  132. package/dist/summary/summarizerClientElection.d.ts +2 -2
  133. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  134. package/dist/summary/summarizerClientElection.js.map +1 -1
  135. package/dist/summary/summarizerHeuristics.d.ts +1 -1
  136. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  137. package/dist/summary/summarizerHeuristics.js.map +1 -1
  138. package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -2
  139. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  140. package/dist/summary/summarizerNode/summarizerNode.js +3 -3
  141. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  142. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +1 -1
  143. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  144. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  145. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
  146. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  147. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
  148. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  149. package/dist/summary/summarizerTypes.d.ts +3 -3
  150. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  151. package/dist/summary/summarizerTypes.js.map +1 -1
  152. package/dist/summary/summaryCollection.d.ts +2 -2
  153. package/dist/summary/summaryCollection.d.ts.map +1 -1
  154. package/dist/summary/summaryCollection.js +1 -1
  155. package/dist/summary/summaryCollection.js.map +1 -1
  156. package/dist/summary/summaryFormat.d.ts +5 -16
  157. package/dist/summary/summaryFormat.d.ts.map +1 -1
  158. package/dist/summary/summaryFormat.js.map +1 -1
  159. package/dist/summary/summaryGenerator.d.ts +2 -2
  160. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  161. package/dist/summary/summaryGenerator.js +2 -2
  162. package/dist/summary/summaryGenerator.js.map +1 -1
  163. package/dist/summary/summaryManager.d.ts +1 -1
  164. package/dist/summary/summaryManager.d.ts.map +1 -1
  165. package/dist/summary/summaryManager.js +2 -2
  166. package/dist/summary/summaryManager.js.map +1 -1
  167. package/lib/batchTracker.d.ts +1 -1
  168. package/lib/batchTracker.d.ts.map +1 -1
  169. package/lib/batchTracker.js +2 -2
  170. package/lib/batchTracker.js.map +1 -1
  171. package/lib/blobManager.d.ts +3 -3
  172. package/lib/blobManager.d.ts.map +1 -1
  173. package/lib/blobManager.js +5 -5
  174. package/lib/blobManager.js.map +1 -1
  175. package/lib/channelCollection.d.ts +5 -5
  176. package/lib/channelCollection.d.ts.map +1 -1
  177. package/lib/channelCollection.js +46 -13
  178. package/lib/channelCollection.js.map +1 -1
  179. package/lib/connectionTelemetry.d.ts +2 -2
  180. package/lib/connectionTelemetry.d.ts.map +1 -1
  181. package/lib/connectionTelemetry.js +3 -3
  182. package/lib/connectionTelemetry.js.map +1 -1
  183. package/lib/container-runtime-alpha.d.ts +205 -11
  184. package/lib/container-runtime-beta.d.ts +16 -2
  185. package/lib/container-runtime-public.d.ts +16 -2
  186. package/lib/container-runtime-untrimmed.d.ts +205 -24
  187. package/lib/containerHandleContext.d.ts.map +1 -1
  188. package/lib/containerHandleContext.js.map +1 -1
  189. package/lib/containerRuntime.d.ts +32 -26
  190. package/lib/containerRuntime.d.ts.map +1 -1
  191. package/lib/containerRuntime.js +175 -81
  192. package/lib/containerRuntime.js.map +1 -1
  193. package/lib/dataStore.d.ts +1 -1
  194. package/lib/dataStore.d.ts.map +1 -1
  195. package/lib/dataStore.js +2 -2
  196. package/lib/dataStore.js.map +1 -1
  197. package/lib/dataStoreContext.d.ts +4 -4
  198. package/lib/dataStoreContext.d.ts.map +1 -1
  199. package/lib/dataStoreContext.js +3 -3
  200. package/lib/dataStoreContext.js.map +1 -1
  201. package/lib/dataStoreContexts.d.ts.map +1 -1
  202. package/lib/dataStoreContexts.js.map +1 -1
  203. package/lib/dataStoreRegistry.d.ts.map +1 -1
  204. package/lib/dataStoreRegistry.js.map +1 -1
  205. package/lib/deltaScheduler.d.ts +1 -1
  206. package/lib/deltaScheduler.d.ts.map +1 -1
  207. package/lib/deltaScheduler.js +1 -1
  208. package/lib/deltaScheduler.js.map +1 -1
  209. package/lib/gc/garbageCollection.d.ts +1 -1
  210. package/lib/gc/garbageCollection.d.ts.map +1 -1
  211. package/lib/gc/garbageCollection.js +3 -3
  212. package/lib/gc/garbageCollection.js.map +1 -1
  213. package/lib/gc/gcConfigs.d.ts +1 -1
  214. package/lib/gc/gcConfigs.d.ts.map +1 -1
  215. package/lib/gc/gcConfigs.js +1 -1
  216. package/lib/gc/gcConfigs.js.map +1 -1
  217. package/lib/gc/gcDefinitions.d.ts +1 -1
  218. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  219. package/lib/gc/gcDefinitions.js.map +1 -1
  220. package/lib/gc/gcHelpers.d.ts.map +1 -1
  221. package/lib/gc/gcHelpers.js.map +1 -1
  222. package/lib/gc/gcSummaryStateTracker.d.ts +1 -1
  223. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  224. package/lib/gc/gcSummaryStateTracker.js +1 -1
  225. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  226. package/lib/gc/gcTelemetry.d.ts +1 -1
  227. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  228. package/lib/gc/gcTelemetry.js +1 -1
  229. package/lib/gc/gcTelemetry.js.map +1 -1
  230. package/lib/index.d.ts +2 -2
  231. package/lib/index.d.ts.map +1 -1
  232. package/lib/index.js +2 -2
  233. package/lib/index.js.map +1 -1
  234. package/lib/messageTypes.d.ts +11 -5
  235. package/lib/messageTypes.d.ts.map +1 -1
  236. package/lib/messageTypes.js +4 -0
  237. package/lib/messageTypes.js.map +1 -1
  238. package/lib/opLifecycle/definitions.d.ts +1 -19
  239. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  240. package/lib/opLifecycle/definitions.js.map +1 -1
  241. package/lib/opLifecycle/index.d.ts +3 -3
  242. package/lib/opLifecycle/index.d.ts.map +1 -1
  243. package/lib/opLifecycle/index.js +2 -2
  244. package/lib/opLifecycle/index.js.map +1 -1
  245. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  246. package/lib/opLifecycle/opCompressor.js +2 -3
  247. package/lib/opLifecycle/opCompressor.js.map +1 -1
  248. package/lib/opLifecycle/opDecompressor.d.ts +15 -4
  249. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  250. package/lib/opLifecycle/opDecompressor.js +60 -61
  251. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  252. package/lib/opLifecycle/opGroupingManager.d.ts +2 -1
  253. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  254. package/lib/opLifecycle/opGroupingManager.js +7 -10
  255. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  256. package/lib/opLifecycle/opSplitter.d.ts +11 -3
  257. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  258. package/lib/opLifecycle/opSplitter.js +46 -37
  259. package/lib/opLifecycle/opSplitter.js.map +1 -1
  260. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  261. package/lib/opLifecycle/outbox.js +7 -12
  262. package/lib/opLifecycle/outbox.js.map +1 -1
  263. package/lib/opLifecycle/remoteMessageProcessor.d.ts +8 -0
  264. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  265. package/lib/opLifecycle/remoteMessageProcessor.js +36 -35
  266. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  267. package/lib/packageVersion.d.ts +1 -1
  268. package/lib/packageVersion.js +1 -1
  269. package/lib/packageVersion.js.map +1 -1
  270. package/lib/pendingStateManager.d.ts +1 -1
  271. package/lib/pendingStateManager.d.ts.map +1 -1
  272. package/lib/pendingStateManager.js.map +1 -1
  273. package/lib/scheduleManager.d.ts +1 -1
  274. package/lib/scheduleManager.d.ts.map +1 -1
  275. package/lib/scheduleManager.js +2 -2
  276. package/lib/scheduleManager.js.map +1 -1
  277. package/lib/summary/documentSchema.d.ts +178 -0
  278. package/lib/summary/documentSchema.d.ts.map +1 -0
  279. package/lib/summary/documentSchema.js +341 -0
  280. package/lib/summary/documentSchema.js.map +1 -0
  281. package/lib/summary/index.d.ts +2 -1
  282. package/lib/summary/index.d.ts.map +1 -1
  283. package/lib/summary/index.js +1 -0
  284. package/lib/summary/index.js.map +1 -1
  285. package/lib/summary/orderedClientElection.d.ts +2 -2
  286. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  287. package/lib/summary/orderedClientElection.js +3 -2
  288. package/lib/summary/orderedClientElection.js.map +1 -1
  289. package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -1
  290. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  291. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  292. package/lib/summary/runningSummarizer.d.ts +2 -2
  293. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  294. package/lib/summary/runningSummarizer.js +3 -3
  295. package/lib/summary/runningSummarizer.js.map +1 -1
  296. package/lib/summary/summarizer.d.ts +2 -2
  297. package/lib/summary/summarizer.d.ts.map +1 -1
  298. package/lib/summary/summarizer.js +3 -3
  299. package/lib/summary/summarizer.js.map +1 -1
  300. package/lib/summary/summarizerClientElection.d.ts +2 -2
  301. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  302. package/lib/summary/summarizerClientElection.js.map +1 -1
  303. package/lib/summary/summarizerHeuristics.d.ts +1 -1
  304. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  305. package/lib/summary/summarizerHeuristics.js.map +1 -1
  306. package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -2
  307. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  308. package/lib/summary/summarizerNode/summarizerNode.js +4 -4
  309. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  310. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +1 -1
  311. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  312. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  313. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
  314. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  315. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
  316. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  317. package/lib/summary/summarizerTypes.d.ts +3 -3
  318. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  319. package/lib/summary/summarizerTypes.js.map +1 -1
  320. package/lib/summary/summaryCollection.d.ts +2 -2
  321. package/lib/summary/summaryCollection.d.ts.map +1 -1
  322. package/lib/summary/summaryCollection.js +1 -1
  323. package/lib/summary/summaryCollection.js.map +1 -1
  324. package/lib/summary/summaryFormat.d.ts +5 -16
  325. package/lib/summary/summaryFormat.d.ts.map +1 -1
  326. package/lib/summary/summaryFormat.js +1 -1
  327. package/lib/summary/summaryFormat.js.map +1 -1
  328. package/lib/summary/summaryGenerator.d.ts +2 -2
  329. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  330. package/lib/summary/summaryGenerator.js +3 -3
  331. package/lib/summary/summaryGenerator.js.map +1 -1
  332. package/lib/summary/summaryManager.d.ts +1 -1
  333. package/lib/summary/summaryManager.d.ts.map +1 -1
  334. package/lib/summary/summaryManager.js +2 -2
  335. package/lib/summary/summaryManager.js.map +1 -1
  336. package/lib/test/blobManager.spec.js +3 -3
  337. package/lib/test/blobManager.spec.js.map +1 -1
  338. package/lib/test/containerRuntime.spec.js +6 -4
  339. package/lib/test/containerRuntime.spec.js.map +1 -1
  340. package/lib/test/dataStoreContext.spec.js +4 -4
  341. package/lib/test/dataStoreContext.spec.js.map +1 -1
  342. package/lib/test/dataStoreCreation.spec.js +1 -1
  343. package/lib/test/dataStoreCreation.spec.js.map +1 -1
  344. package/lib/test/dataStoreRegistry.spec.js.map +1 -1
  345. package/lib/test/documentSchema.spec.js +282 -0
  346. package/lib/test/documentSchema.spec.js.map +1 -0
  347. package/lib/test/fuzz/fuzzUtils.js +11 -7
  348. package/lib/test/fuzz/fuzzUtils.js.map +1 -1
  349. package/lib/test/fuzz/summarizer.fuzz.spec.js +9 -7
  350. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -1
  351. package/lib/test/fuzz/summarizerFuzzMocks.js +43 -25
  352. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -1
  353. package/lib/test/fuzz/summarizerFuzzSuite.js +7 -4
  354. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -1
  355. package/lib/test/gc/garbageCollection.spec.js +5 -5
  356. package/lib/test/gc/garbageCollection.spec.js.map +1 -1
  357. package/lib/test/gc/gcConfigs.spec.js +2 -2
  358. package/lib/test/gc/gcConfigs.spec.js.map +1 -1
  359. package/lib/test/gc/gcHelpers.spec.js.map +1 -1
  360. package/lib/test/gc/gcStats.spec.js +2 -2
  361. package/lib/test/gc/gcStats.spec.js.map +1 -1
  362. package/lib/test/gc/gcSummaryStateTracker.spec.js +1 -1
  363. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -1
  364. package/lib/test/gc/gcTelemetry.spec.js +3 -3
  365. package/lib/test/gc/gcTelemetry.spec.js.map +1 -1
  366. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +1 -1
  367. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -1
  368. package/lib/test/getPendingBlobs.spec.js +1 -1
  369. package/lib/test/getPendingBlobs.spec.js.map +1 -1
  370. package/lib/test/hardwareStats.spec.js +1 -1
  371. package/lib/test/hardwareStats.spec.js.map +1 -1
  372. package/lib/test/opLifecycle/OpGroupingManager.spec.js +95 -118
  373. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -1
  374. package/lib/test/opLifecycle/batchManager.spec.js +1 -1
  375. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -1
  376. package/lib/test/opLifecycle/opCompressor.spec.js +0 -1
  377. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -1
  378. package/lib/test/opLifecycle/opDecompressor.spec.js +60 -55
  379. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -1
  380. package/lib/test/opLifecycle/opSplitter.spec.js +56 -41
  381. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -1
  382. package/lib/test/opLifecycle/outbox.spec.js +118 -10
  383. package/lib/test/opLifecycle/outbox.spec.js.map +1 -1
  384. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +115 -91
  385. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -1
  386. package/lib/test/pendingStateManager.spec.js +1 -1
  387. package/lib/test/pendingStateManager.spec.js.map +1 -1
  388. package/lib/test/scheduleManager.spec.js +1 -1
  389. package/lib/test/scheduleManager.spec.js.map +1 -1
  390. package/lib/test/summarizerNode.spec.js +1 -1
  391. package/lib/test/summarizerNode.spec.js.map +1 -1
  392. package/lib/test/summarizerNodeWithGc.spec.js +1 -1
  393. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -1
  394. package/lib/test/summary/runningSummarizer.spec.js +4 -4
  395. package/lib/test/summary/runningSummarizer.spec.js.map +1 -1
  396. package/lib/test/summary/summarizer.spec.js.map +1 -1
  397. package/lib/test/summary/summarizerClientElection.spec.js +2 -2
  398. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -1
  399. package/lib/test/summary/summarizerHeuristics.spec.js +1 -1
  400. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -1
  401. package/lib/test/summary/summaryCollection.spec.js +1 -1
  402. package/lib/test/summary/summaryCollection.spec.js.map +1 -1
  403. package/lib/test/summary/summaryManager.spec.js +3 -3
  404. package/lib/test/summary/summaryManager.spec.js.map +1 -1
  405. package/lib/test/throttler.spec.js +1 -1
  406. package/lib/test/throttler.spec.js.map +1 -1
  407. package/lib/test/types/validateContainerRuntimePrevious.generated.js +6 -4
  408. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -1
  409. package/package.json +35 -21
  410. package/src/batchTracker.ts +3 -3
  411. package/src/blobManager.ts +15 -15
  412. package/src/channelCollection.ts +75 -35
  413. package/src/connectionTelemetry.ts +10 -10
  414. package/src/containerHandleContext.ts +1 -1
  415. package/src/containerRuntime.ts +352 -197
  416. package/src/dataStore.ts +2 -2
  417. package/src/dataStoreContext.ts +19 -19
  418. package/src/dataStoreContexts.ts +2 -2
  419. package/src/dataStoreRegistry.ts +1 -1
  420. package/src/deltaScheduler.ts +1 -1
  421. package/src/gc/garbageCollection.ts +12 -12
  422. package/src/gc/gcConfigs.ts +11 -11
  423. package/src/gc/gcDefinitions.ts +2 -2
  424. package/src/gc/gcHelpers.ts +2 -2
  425. package/src/gc/gcSummaryStateTracker.ts +4 -4
  426. package/src/gc/gcTelemetry.ts +6 -6
  427. package/src/index.ts +8 -1
  428. package/src/messageTypes.ts +18 -5
  429. package/src/opLifecycle/README.md +89 -0
  430. package/src/opLifecycle/definitions.ts +1 -20
  431. package/src/opLifecycle/index.ts +3 -9
  432. package/src/opLifecycle/opCompressor.ts +4 -5
  433. package/src/opLifecycle/opDecompressor.ts +83 -100
  434. package/src/opLifecycle/opGroupingManager.ts +9 -12
  435. package/src/opLifecycle/opSplitter.ts +73 -47
  436. package/src/opLifecycle/outbox.ts +13 -31
  437. package/src/opLifecycle/remoteMessageProcessor.ts +41 -59
  438. package/src/packageVersion.ts +1 -1
  439. package/src/pendingStateManager.ts +2 -2
  440. package/src/scheduleManager.ts +7 -7
  441. package/src/summary/documentSchema.ts +553 -0
  442. package/src/summary/index.ts +10 -1
  443. package/src/summary/orderedClientElection.ts +6 -5
  444. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  445. package/src/summary/runningSummarizer.ts +19 -19
  446. package/src/summary/summarizer.ts +14 -14
  447. package/src/summary/summarizerClientElection.ts +2 -2
  448. package/src/summary/summarizerHeuristics.ts +2 -2
  449. package/src/summary/summarizerNode/summarizerNode.ts +15 -15
  450. package/src/summary/summarizerNode/summarizerNodeUtils.ts +1 -1
  451. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -4
  452. package/src/summary/summarizerTypes.ts +3 -3
  453. package/src/summary/summaryCollection.ts +3 -3
  454. package/src/summary/summaryFormat.ts +8 -19
  455. package/src/summary/summaryGenerator.ts +10 -10
  456. package/src/summary/summaryManager.ts +4 -4
package/src/dataStore.ts CHANGED
@@ -3,15 +3,15 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLoggerExt, TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils";
7
- import { assert, unreachableCase } from "@fluidframework/core-utils";
8
6
  import { AttachState } from "@fluidframework/container-definitions";
9
7
  import { FluidObject, IFluidHandle } from "@fluidframework/core-interfaces";
8
+ import { assert, unreachableCase } from "@fluidframework/core-utils";
10
9
  import {
11
10
  AliasResult,
12
11
  IDataStore,
13
12
  IFluidDataStoreChannel,
14
13
  } from "@fluidframework/runtime-definitions";
14
+ import { ITelemetryLoggerExt, TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils";
15
15
  import { ChannelCollection } from "./channelCollection.js";
16
16
  import { ContainerMessageType } from "./messageTypes.js";
17
17
 
@@ -3,21 +3,21 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
+ import { AttachState, IAudience, IDeltaManager } from "@fluidframework/container-definitions";
6
8
  import {
7
- IDisposable,
8
9
  FluidObject,
10
+ IDisposable,
11
+ IFluidHandle,
9
12
  IRequest,
10
13
  IResponse,
11
- IFluidHandle,
12
14
  ITelemetryBaseProperties,
13
15
  } from "@fluidframework/core-interfaces";
14
- import { IAudience, IDeltaManager, AttachState } from "@fluidframework/container-definitions";
15
- import { TypedEventEmitter } from "@fluid-internal/client-utils";
16
+ import { IEvent } from "@fluidframework/core-interfaces";
16
17
  import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils";
17
18
  import { IDocumentStorageService } from "@fluidframework/driver-definitions";
18
19
  import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
19
20
  import type { IIdCompressor } from "@fluidframework/id-compressor";
20
- import { IEvent } from "@fluidframework/core-interfaces";
21
21
  import {
22
22
  IClientDetails,
23
23
  IDocumentMessage,
@@ -27,16 +27,16 @@ import {
27
27
  ITreeEntry,
28
28
  } from "@fluidframework/protocol-definitions";
29
29
  import {
30
- channelsTreeName,
31
30
  CreateChildSummarizerNodeFn,
32
31
  CreateChildSummarizerNodeParam,
33
32
  FluidDataStoreRegistryEntry,
33
+ IContainerRuntimeBase,
34
+ IDataStore,
34
35
  IFluidDataStoreChannel,
35
36
  IFluidDataStoreContext,
36
- IFluidParentContext,
37
- IContainerRuntimeBase,
38
37
  IFluidDataStoreContextDetached,
39
38
  IFluidDataStoreRegistry,
39
+ IFluidParentContext,
40
40
  IGarbageCollectionData,
41
41
  IGarbageCollectionDetailsBase,
42
42
  IInboundSignalMessage,
@@ -44,35 +44,35 @@ import {
44
44
  ISummarizeInternalResult,
45
45
  ISummarizeResult,
46
46
  ISummarizerNodeWithGC,
47
- SummarizeInternalFn,
48
- ITelemetryContext,
49
47
  ISummaryTreeWithStats,
50
- IDataStore,
48
+ ITelemetryContext,
49
+ SummarizeInternalFn,
50
+ channelsTreeName,
51
51
  gcDataBlobKey,
52
52
  } from "@fluidframework/runtime-definitions";
53
53
  import { addBlobToSummary } from "@fluidframework/runtime-utils";
54
54
  import {
55
- createChildMonitoringContext,
56
55
  DataCorruptionError,
57
56
  DataProcessingError,
58
- extractSafePropertiesFromMessage,
59
- generateStack,
60
57
  LoggingError,
61
58
  MonitoringContext,
62
- tagCodeArtifacts,
63
59
  ThresholdCounter,
60
+ createChildMonitoringContext,
61
+ extractSafePropertiesFromMessage,
62
+ generateStack,
63
+ tagCodeArtifacts,
64
64
  } from "@fluidframework/telemetry-utils";
65
+ import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
65
66
  import {
66
- dataStoreAttributesBlobName,
67
- hasIsolatedChannels,
68
- wrapSummaryInChannelsTree,
69
67
  ReadFluidDataStoreAttributes,
70
68
  WriteFluidDataStoreAttributes,
69
+ dataStoreAttributesBlobName,
71
70
  getAttributesFormatVersion,
72
71
  getFluidDataStoreAttributes,
72
+ hasIsolatedChannels,
73
73
  summarizerClientType,
74
+ wrapSummaryInChannelsTree,
74
75
  } from "./summary/index.js";
75
- import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
76
76
 
77
77
  function createAttributes(
78
78
  pkg: readonly string[],
@@ -3,9 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
7
6
  import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { createChildLogger, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
+ import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
8
+ import { ITelemetryLoggerExt, createChildLogger } from "@fluidframework/telemetry-utils";
9
9
  import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext.js";
10
10
 
11
11
  /** @internal */
@@ -3,12 +3,12 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { UsageError } from "@fluidframework/telemetry-utils";
7
6
  import {
8
7
  FluidDataStoreRegistryEntry,
9
8
  IFluidDataStoreRegistry,
10
9
  NamedFluidDataStoreRegistryEntries,
11
10
  } from "@fluidframework/runtime-definitions";
11
+ import { UsageError } from "@fluidframework/telemetry-utils";
12
12
 
13
13
  /**
14
14
  * @internal
@@ -3,10 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils";
7
6
  import { performance } from "@fluid-internal/client-utils";
8
7
  import { IDeltaManager } from "@fluidframework/container-definitions";
9
8
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
9
+ import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils";
10
10
 
11
11
  /**
12
12
  * DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there
@@ -3,23 +3,23 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
7
6
  import { IRequest } from "@fluidframework/core-interfaces";
7
+ import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
8
8
  import {
9
- gcTreeKey,
10
9
  IGarbageCollectionData,
11
10
  IGarbageCollectionDetailsBase,
12
11
  ISummarizeResult,
13
12
  ITelemetryContext,
13
+ gcTreeKey,
14
14
  } from "@fluidframework/runtime-definitions";
15
15
  import { createResponseError, responseToException } from "@fluidframework/runtime-utils";
16
16
  import {
17
- createChildLogger,
18
- createChildMonitoringContext,
19
17
  DataProcessingError,
20
18
  ITelemetryLoggerExt,
21
19
  MonitoringContext,
22
20
  PerformanceEvent,
21
+ createChildLogger,
22
+ createChildMonitoringContext,
23
23
  tagCodeArtifacts,
24
24
  } from "@fluidframework/telemetry-utils";
25
25
  import { BlobManager } from "../blobManager.js";
@@ -34,18 +34,18 @@ import { IRefreshSummaryResult } from "../summary/index.js";
34
34
  import { generateGCConfigs } from "./gcConfigs.js";
35
35
  import {
36
36
  GCNodeType,
37
- IGarbageCollector,
38
- IGarbageCollectorCreateParams,
39
- IGarbageCollectionRuntime,
37
+ GarbageCollectionMessage,
38
+ GarbageCollectionMessageType,
39
+ IGCMetadata,
40
40
  IGCResult,
41
41
  IGCStats,
42
- UnreferencedState,
43
- IGCMetadata,
42
+ IGarbageCollectionRuntime,
43
+ IGarbageCollector,
44
44
  IGarbageCollectorConfigs,
45
+ IGarbageCollectorCreateParams,
45
46
  IMarkPhaseStats,
46
47
  ISweepPhaseStats,
47
- GarbageCollectionMessage,
48
- GarbageCollectionMessageType,
48
+ UnreferencedState,
49
49
  disableAutoRecoveryKey,
50
50
  } from "./gcDefinitions.js";
51
51
  import {
@@ -57,11 +57,11 @@ import {
57
57
  import { runGarbageCollection } from "./gcReferenceGraphAlgorithm.js";
58
58
  import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
59
59
  import { GCSummaryStateTracker } from "./gcSummaryStateTracker.js";
60
+ import { GCTelemetryTracker } from "./gcTelemetry.js";
60
61
  import {
61
62
  UnreferencedStateTracker,
62
63
  UnreferencedStateTrackerMap,
63
64
  } from "./gcUnreferencedStateTracker.js";
64
- import { GCTelemetryTracker } from "./gcTelemetry.js";
65
65
 
66
66
  /**
67
67
  * The garbage collector for the container runtime. It consolidates the garbage collection functionality and maintains
@@ -10,17 +10,23 @@ import {
10
10
  } from "@fluidframework/telemetry-utils";
11
11
  import { IContainerRuntimeMetadata } from "../summary/index.js";
12
12
  import {
13
- nextGCVersion,
13
+ GCFeatureMatrix,
14
+ GCVersion,
15
+ IGCMetadata_Deprecated,
16
+ IGCRuntimeOptions,
17
+ IGarbageCollectorConfigs,
14
18
  defaultInactiveTimeoutMs,
15
19
  defaultSessionExpiryDurationMs,
20
+ defaultSweepGracePeriodMs,
21
+ disableDatastoreSweepKey,
16
22
  disableTombstoneKey,
17
- GCFeatureMatrix,
23
+ gcDisableDataStoreSweepOptionName,
24
+ gcDisableThrowOnTombstoneLoadOptionName,
25
+ gcGenerationOptionName,
18
26
  gcTestModeKey,
19
- GCVersion,
20
27
  gcVersionUpgradeToV4Key,
21
- IGarbageCollectorConfigs,
22
- IGCRuntimeOptions,
23
28
  maxSnapshotCacheExpiryMs,
29
+ nextGCVersion,
24
30
  oneDayMs,
25
31
  runGCKey,
26
32
  runSessionExpiryKey,
@@ -28,12 +34,6 @@ import {
28
34
  stableGCVersion,
29
35
  throwOnTombstoneLoadOverrideKey,
30
36
  throwOnTombstoneUsageKey,
31
- gcDisableThrowOnTombstoneLoadOptionName,
32
- defaultSweepGracePeriodMs,
33
- gcGenerationOptionName,
34
- IGCMetadata_Deprecated,
35
- disableDatastoreSweepKey,
36
- gcDisableDataStoreSweepOptionName,
37
37
  } from "./gcDefinitions.js";
38
38
  import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers.js";
39
39
 
@@ -14,13 +14,13 @@ import {
14
14
  } from "@fluidframework/runtime-definitions";
15
15
  import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
16
16
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
17
+ import { RuntimeHeaderData } from "../containerRuntime.js";
18
+ import { ContainerRuntimeGCMessage } from "../messageTypes.js";
17
19
  import {
18
20
  IContainerRuntimeMetadata,
19
21
  ICreateContainerMetadata,
20
22
  IRefreshSummaryResult,
21
23
  } from "../summary/index.js";
22
- import { RuntimeHeaderData } from "../containerRuntime.js";
23
- import { ContainerRuntimeGCMessage } from "../messageTypes.js";
24
24
 
25
25
  /**
26
26
  * @alpha
@@ -6,11 +6,11 @@
6
6
  import { assert } from "@fluidframework/core-utils";
7
7
  import { ISnapshotTree } from "@fluidframework/protocol-definitions";
8
8
  import {
9
+ IGarbageCollectionData,
10
+ IGarbageCollectionDetailsBase,
9
11
  gcBlobPrefix,
10
12
  gcDeletedBlobKey,
11
13
  gcTombstoneBlobKey,
12
- IGarbageCollectionData,
13
- IGarbageCollectionDetailsBase,
14
14
  } from "@fluidframework/runtime-definitions";
15
15
  import { GCFeatureMatrix, GCVersion, IGCMetadata } from "./gcDefinitions.js";
16
16
  import {
@@ -5,16 +5,16 @@
5
5
 
6
6
  import { SummaryType } from "@fluidframework/protocol-definitions";
7
7
  import {
8
+ ISummarizeResult,
9
+ ISummaryTreeWithStats,
8
10
  gcBlobPrefix,
9
11
  gcDeletedBlobKey,
10
12
  gcTombstoneBlobKey,
11
13
  gcTreeKey,
12
- ISummarizeResult,
13
- ISummaryTreeWithStats,
14
14
  } from "@fluidframework/runtime-definitions";
15
- import { mergeStats, SummaryTreeBuilder } from "@fluidframework/runtime-utils";
15
+ import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils";
16
16
  import { IRefreshSummaryResult } from "../summary/index.js";
17
- import { GCVersion, IGarbageCollectorConfigs, IGCStats } from "./gcDefinitions.js";
17
+ import { GCVersion, IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
18
18
  import { generateSortedGCState } from "./gcHelpers.js";
19
19
  import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
20
20
 
@@ -5,23 +5,23 @@
5
5
 
6
6
  import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
7
7
  import {
8
- generateStack,
8
+ type ITelemetryGenericEventExt,
9
9
  ITelemetryLoggerExt,
10
10
  MonitoringContext,
11
+ generateStack,
11
12
  tagCodeArtifacts,
12
- type ITelemetryGenericEventExt,
13
13
  } from "@fluidframework/telemetry-utils";
14
14
  import { RuntimeHeaderData } from "../containerRuntime.js";
15
15
  import { ICreateContainerMetadata } from "../summary/index.js";
16
16
  import {
17
+ GCFeatureMatrix,
17
18
  GCNodeType,
18
- UnreferencedState,
19
19
  IGarbageCollectorConfigs,
20
+ UnreferencedState,
20
21
  disableTombstoneKey,
21
- throwOnTombstoneUsageKey,
22
- throwOnTombstoneLoadOverrideKey,
23
22
  runSweepKey,
24
- GCFeatureMatrix,
23
+ throwOnTombstoneLoadOverrideKey,
24
+ throwOnTombstoneUsageKey,
25
25
  } from "./gcDefinitions.js";
26
26
  import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
27
27
 
package/src/index.ts CHANGED
@@ -11,7 +11,6 @@ export {
11
11
  ISummaryConfigurationDisableHeuristics,
12
12
  IContainerRuntimeOptions,
13
13
  isRuntimeMessage,
14
- RuntimeMessage,
15
14
  agentSchedulerId,
16
15
  ContainerRuntime,
17
16
  TombstoneResponseHeaderKey,
@@ -21,6 +20,7 @@ export {
21
20
  ICompressionRuntimeOptions,
22
21
  CompressionAlgorithms,
23
22
  RuntimeHeaderData,
23
+ disabledCompressionConfig,
24
24
  } from "./containerRuntime.js";
25
25
  export {
26
26
  ContainerMessageType,
@@ -98,6 +98,13 @@ export {
98
98
  IRetriableFailureResult,
99
99
  ISummarizeEventProps,
100
100
  IdCompressorMode,
101
+ IDocumentSchema,
102
+ DocumentSchemaValueType,
103
+ IDocumentSchemaCurrent,
104
+ currentDocumentVersionSchema,
105
+ DocumentsSchemaController,
106
+ IDocumentSchemaChangeMessage,
107
+ IDocumentSchemaFeatures,
101
108
  } from "./summary/index.js";
102
109
  export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle/index.js";
103
110
  export { ChannelCollection } from "./channelCollection.js";
@@ -3,16 +3,17 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import type { IdCreationRange } from "@fluidframework/id-compressor";
6
7
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
8
  import {
9
+ IAttachMessage,
8
10
  IEnvelope,
9
11
  InboundAttachMessage,
10
- IAttachMessage,
11
12
  } from "@fluidframework/runtime-definitions";
12
- import type { IdCreationRange } from "@fluidframework/id-compressor";
13
13
  import { IDataStoreAliasMessage } from "./dataStore.js";
14
14
  import { GarbageCollectionMessage } from "./gc/index.js";
15
15
  import { IChunkedOp } from "./opLifecycle/index.js";
16
+ import { IDocumentSchemaChangeMessage } from "./summary/index.js";
16
17
 
17
18
  /**
18
19
  * @alpha
@@ -43,6 +44,11 @@ export enum ContainerMessageType {
43
44
  */
44
45
  IdAllocation = "idAllocation",
45
46
 
47
+ /**
48
+ * An op that changes document schema
49
+ */
50
+ DocumentSchemaChange = "schema",
51
+
46
52
  /**
47
53
  * Garbage collection specific op. This is sent by the summarizer client when GC runs. It's used to synchronize GC
48
54
  * state across all clients.
@@ -131,6 +137,10 @@ export type ContainerRuntimeGCMessage = TypedContainerRuntimeMessage<
131
137
  ContainerMessageType.GC,
132
138
  GarbageCollectionMessage
133
139
  >;
140
+ export type ContainerRuntimeDocumentSchemaMessage = TypedContainerRuntimeMessage<
141
+ ContainerMessageType.DocumentSchemaChange,
142
+ IDocumentSchemaChangeMessage
143
+ >;
134
144
 
135
145
  /**
136
146
  * Represents an unrecognized TypedContainerRuntimeMessage, e.g. a message from a future version of the container runtime.
@@ -161,7 +171,8 @@ export type InboundContainerRuntimeMessage =
161
171
  | ContainerRuntimeIdAllocationMessage
162
172
  | ContainerRuntimeGCMessage
163
173
  // Inbound messages may include unknown types from other clients, so we include that as a special case here
164
- | UnknownContainerRuntimeMessage;
174
+ | UnknownContainerRuntimeMessage
175
+ | ContainerRuntimeDocumentSchemaMessage;
165
176
 
166
177
  /** A {@link TypedContainerRuntimeMessage} that has been generated by the container runtime but is not yet being sent to the server. */
167
178
  export type LocalContainerRuntimeMessage =
@@ -174,7 +185,8 @@ export type LocalContainerRuntimeMessage =
174
185
  | ContainerRuntimeIdAllocationMessage
175
186
  | ContainerRuntimeGCMessage
176
187
  // In rare cases (e.g. related to stashed ops) we could have a local message of an unknown type
177
- | UnknownContainerRuntimeMessage;
188
+ | UnknownContainerRuntimeMessage
189
+ | ContainerRuntimeDocumentSchemaMessage;
178
190
 
179
191
  /** A {@link TypedContainerRuntimeMessage} that is being sent to the server from the container runtime. */
180
192
  export type OutboundContainerRuntimeMessage =
@@ -185,7 +197,8 @@ export type OutboundContainerRuntimeMessage =
185
197
  | ContainerRuntimeRejoinMessage
186
198
  | ContainerRuntimeAliasMessage
187
199
  | ContainerRuntimeIdAllocationMessage
188
- | ContainerRuntimeGCMessage;
200
+ | ContainerRuntimeGCMessage
201
+ | ContainerRuntimeDocumentSchemaMessage;
189
202
 
190
203
  /**
191
204
  * An unpacked ISequencedDocumentMessage with the inner TypedContainerRuntimeMessage type/contents/etc
@@ -13,6 +13,9 @@
13
13
  - [Note about performance and latency](#note-about-performance-and-latency)
14
14
  - [How it works](#how-it-works)
15
15
  - [How grouped batching works](#how-grouped-batching-works)
16
+ - [How the overall op flow works](#How-the-overall-op-flow-works)
17
+ - [Outbound](#outbound)
18
+ - [Inbound](#inbound)
16
19
 
17
20
  ## Introduction
18
21
 
@@ -317,3 +320,89 @@ Ungrouped batch:
317
320
  | ClientSeqNum: 1 | ClientSeqNum: 2 | ClientSeqNum: 3 | ClientSeqNum: 4 | ClientSeqNum: 5 |
318
321
  +-----------------+-----------------+-----------------+-----------------+-----------------+
319
322
  ```
323
+
324
+ ## How the overall op flow works
325
+
326
+ ### Outbound
327
+
328
+ The outbound view is how ops are accumulated and sent by the runtime with `FlushMode.TurnBased` (default).
329
+
330
+ ```mermaid
331
+ stateDiagram-v2
332
+ state "* End of JS turn *" as jsTurn
333
+ state "opGroupingManager.groupBatch" as groupBatch
334
+ state "opCompressor.compress" as compress
335
+ state "outbox.flush" as flush
336
+ state "outbox.flushInternal" as flushInternal
337
+ state "Send batch over the wire" as post
338
+ state "Send chunks (partial ops) over the wire" as postChunks
339
+ state "Store original (uncompressed, unchunked, ungrouped) batch locally" as store
340
+ state if_compression <<choice>>
341
+ [*] --> ContainerRuntime.submit
342
+ ContainerRuntime.submit --> outbox.submitAttach
343
+ ContainerRuntime.submit --> outbox.submitBlobAttach
344
+ ContainerRuntime.submit --> outbox.submit
345
+ outbox.submit --> scheduleFlush
346
+ outbox.submitAttach --> scheduleFlush
347
+ outbox.submitBlobAttach --> scheduleFlush
348
+ scheduleFlush --> jsTurn
349
+ jsTurn --> flush
350
+ flush --> outbox.flushInternalMain
351
+ flush --> outbox.flushInternalAttach
352
+ flush --> outbox.flushInternalBlobAttach
353
+ outbox.flushInternalMain --> flushInternal
354
+ outbox.flushInternalAttach --> flushInternal
355
+ outbox.flushInternalBlobAttach --> flushInternal
356
+ flushInternal --> ContainerRuntime.reSubmit: if batch has reentrant ops and should group
357
+ ContainerRuntime.reSubmit --> flushInternal
358
+ flushInternal --> groupBatch: if should group
359
+ groupBatch --> if_compression
360
+ flushInternal --> if_compression
361
+ if_compression --> post
362
+ if_compression --> compress: if compression is enabled
363
+ compress --> post
364
+ compress --> opSplitter.split: if the compressed payload is larger than the chunk size
365
+ opSplitter.split --> post
366
+ opSplitter.split --> postChunks
367
+ post --> store
368
+ ```
369
+
370
+ With `FlushMode.Immediate`(deprecated) the difference is that ops are no longer accumulated in batches, but flushed as they are submitted, instead of waiting for the end of the JS turn. All the other components work in the exact same manner with the difference that they operate on batches with length 1.
371
+
372
+ ### Inbound
373
+
374
+ There is no concept of batch in the inbound view when we receive the ops. Ops are being received and processed one-by-one and the batch is reconstructed in the runtime layer. This requires individual components to maintain their own internal state in order to keep track of the batch.
375
+
376
+ ```mermaid
377
+ stateDiagram-v2
378
+ [*] --> ContainerRuntime.process
379
+ ContainerRuntime.process --> remoteMessageProcessor
380
+ state remoteMessageProcessor {
381
+ state "process chunk" as processChunk
382
+ state "return nothing" as returnNothing
383
+ state "decompress and store" as decompress
384
+ state if_chunk <<choice>>
385
+ state if_compressed <<choice>>
386
+ state if_unrolling <<choice>>
387
+ state if_grouped <<choice>>
388
+ [*] --> if_chunk
389
+ if_chunk --> if_compressed
390
+ if_chunk --> processChunk: is chunk
391
+ processChunk --> returnNothing
392
+ processChunk --> if_compressed: is final chunk
393
+ if_compressed --> if_unrolling
394
+ if_compressed --> decompress: is compressed
395
+ decompress --> if_unrolling
396
+ if_unrolling --> if_grouped
397
+ if_unrolling --> unroll: if currently unrolling
398
+ unroll --> if_grouped
399
+ if_grouped --> return
400
+ if_grouped --> ungroup: is grouped batch
401
+ ungroup --> return
402
+ return --> [*]
403
+ returnNothing --> [*]
404
+ }
405
+ remoteMessageProcessor --> ContainerRuntime.procesCore
406
+ ```
407
+
408
+ Note that a "system op" originating outside the ContainerRuntime will pass through this flow entirely.
@@ -4,16 +4,13 @@
4
4
  */
5
5
 
6
6
  import { IBatchMessage } from "@fluidframework/container-definitions";
7
- import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
8
7
  import { CompressionAlgorithms } from "../containerRuntime.js";
9
- import { ContainerMessageType } from "../messageTypes.js";
10
8
 
11
9
  /**
12
10
  * Batch message type used internally by the runtime
13
11
  */
14
12
  export type BatchMessage = IBatchMessage & {
15
- localOpMetadata: unknown;
16
- type: ContainerMessageType;
13
+ localOpMetadata?: unknown;
17
14
  referenceSequenceNumber: number;
18
15
  compression?: CompressionAlgorithms;
19
16
  };
@@ -59,7 +56,6 @@ export interface IChunkedOp {
59
56
  chunkId: number;
60
57
  totalChunks: number;
61
58
  contents: string;
62
- originalType: MessageType | ContainerMessageType;
63
59
  originalMetadata?: Record<string, unknown>;
64
60
  originalCompression?: string;
65
61
  }
@@ -72,18 +68,3 @@ export interface IChunkedOp {
72
68
  * will make the processor return `Processed`.
73
69
  */
74
70
  export type ProcessingState = "Processed" | "Skipped" | "Accepted";
75
-
76
- /**
77
- * Return type for functions which process remote messages
78
- */
79
- export interface IMessageProcessingResult {
80
- /**
81
- * A shallow copy of the input message if processing happened, or
82
- * the original message otherwise
83
- */
84
- readonly message: ISequencedDocumentMessage;
85
- /**
86
- * Processing result of the input message.
87
- */
88
- readonly state: ProcessingState;
89
- }
@@ -4,16 +4,10 @@
4
4
  */
5
5
 
6
6
  export { BatchManager, estimateSocketSize, BatchSequenceNumbers } from "./batchManager.js";
7
- export {
8
- BatchMessage,
9
- IBatch,
10
- IBatchCheckpoint,
11
- IChunkedOp,
12
- IMessageProcessingResult,
13
- } from "./definitions.js";
7
+ export { BatchMessage, IBatch, IBatchCheckpoint, IChunkedOp } from "./definitions.js";
14
8
  export { Outbox, getLongStack } from "./outbox.js";
15
9
  export { OpCompressor } from "./opCompressor.js";
16
10
  export { OpDecompressor } from "./opDecompressor.js";
17
- export { OpSplitter, splitOp } from "./opSplitter.js";
11
+ export { OpSplitter, splitOp, isChunkedMessage } from "./opSplitter.js";
18
12
  export { RemoteMessageProcessor, unpackRuntimeMessage } from "./remoteMessageProcessor.js";
19
- export { OpGroupingManager } from "./opGroupingManager.js";
13
+ export { OpGroupingManager, OpGroupingManagerConfig, isGroupedBatch } from "./opGroupingManager.js";
@@ -3,14 +3,14 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { createChildLogger, UsageError } from "@fluidframework/telemetry-utils";
7
- import { assert } from "@fluidframework/core-utils";
8
6
  import { IsoBuffer } from "@fluid-internal/client-utils";
9
- import { compress } from "lz4js";
10
7
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
+ import { assert } from "@fluidframework/core-utils";
9
+ import { UsageError, createChildLogger } from "@fluidframework/telemetry-utils";
10
+ import { compress } from "lz4js";
11
11
  import { CompressionAlgorithms } from "../containerRuntime.js";
12
12
  import { estimateSocketSize } from "./batchManager.js";
13
- import { IBatch, BatchMessage } from "./definitions.js";
13
+ import { BatchMessage, IBatch } from "./definitions.js";
14
14
 
15
15
  /**
16
16
  * Compresses batches of ops. It generates a single compressed op that contains
@@ -47,7 +47,6 @@ export class OpCompressor {
47
47
  // Add empty placeholder messages to reserve the sequence numbers
48
48
  for (const message of batch.content.slice(1)) {
49
49
  messages.push({
50
- type: message.type,
51
50
  localOpMetadata: message.localOpMetadata,
52
51
  metadata: message.metadata,
53
52
  referenceSequenceNumber: message.referenceSequenceNumber,