@fluidframework/container-runtime 2.0.0-dev.4.4.0.162574 → 2.0.0-dev.5.3.2.178189

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 (367) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/batchTracker.d.ts +4 -4
  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 +5 -2
  7. package/dist/blobManager.d.ts.map +1 -1
  8. package/dist/blobManager.js +53 -24
  9. package/dist/blobManager.js.map +1 -1
  10. package/dist/connectionTelemetry.d.ts +2 -2
  11. package/dist/connectionTelemetry.d.ts.map +1 -1
  12. package/dist/connectionTelemetry.js +8 -1
  13. package/dist/connectionTelemetry.js.map +1 -1
  14. package/dist/containerRuntime.d.ts +19 -7
  15. package/dist/containerRuntime.d.ts.map +1 -1
  16. package/dist/containerRuntime.js +98 -22
  17. package/dist/containerRuntime.js.map +1 -1
  18. package/dist/dataStore.d.ts +2 -2
  19. package/dist/dataStore.d.ts.map +1 -1
  20. package/dist/dataStore.js +1 -1
  21. package/dist/dataStore.js.map +1 -1
  22. package/dist/dataStoreContext.d.ts +3 -4
  23. package/dist/dataStoreContext.d.ts.map +1 -1
  24. package/dist/dataStoreContext.js +5 -5
  25. package/dist/dataStoreContext.js.map +1 -1
  26. package/dist/dataStoreContexts.d.ts +2 -1
  27. package/dist/dataStoreContexts.d.ts.map +1 -1
  28. package/dist/dataStoreContexts.js +2 -1
  29. package/dist/dataStoreContexts.js.map +1 -1
  30. package/dist/dataStores.d.ts +1 -1
  31. package/dist/dataStores.d.ts.map +1 -1
  32. package/dist/dataStores.js +2 -1
  33. package/dist/dataStores.js.map +1 -1
  34. package/dist/deltaScheduler.d.ts +2 -2
  35. package/dist/deltaScheduler.d.ts.map +1 -1
  36. package/dist/deltaScheduler.js +1 -1
  37. package/dist/deltaScheduler.js.map +1 -1
  38. package/dist/gc/garbageCollection.d.ts +2 -2
  39. package/dist/gc/garbageCollection.d.ts.map +1 -1
  40. package/dist/gc/garbageCollection.js +4 -3
  41. package/dist/gc/garbageCollection.js.map +1 -1
  42. package/dist/gc/gcDefinitions.d.ts +3 -4
  43. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  44. package/dist/gc/gcDefinitions.js.map +1 -1
  45. package/dist/gc/gcTelemetry.d.ts +5 -5
  46. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  47. package/dist/gc/gcTelemetry.js.map +1 -1
  48. package/dist/id-compressor/idCompressor.d.ts +2 -2
  49. package/dist/id-compressor/idCompressor.d.ts.map +1 -1
  50. package/dist/id-compressor/idCompressor.js.map +1 -1
  51. package/dist/id-compressor/uuidUtilities.d.ts +0 -2
  52. package/dist/id-compressor/uuidUtilities.d.ts.map +1 -1
  53. package/dist/id-compressor/uuidUtilities.js +1 -3
  54. package/dist/id-compressor/uuidUtilities.js.map +1 -1
  55. package/dist/index.d.ts +1 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/metadata.d.ts +18 -0
  59. package/dist/metadata.d.ts.map +1 -0
  60. package/dist/metadata.js +7 -0
  61. package/dist/metadata.js.map +1 -0
  62. package/dist/opLifecycle/batchManager.d.ts +2 -1
  63. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  64. package/dist/opLifecycle/batchManager.js +5 -1
  65. package/dist/opLifecycle/batchManager.js.map +1 -1
  66. package/dist/opLifecycle/definitions.d.ts +13 -2
  67. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  68. package/dist/opLifecycle/definitions.js.map +1 -1
  69. package/dist/opLifecycle/index.d.ts +1 -1
  70. package/dist/opLifecycle/index.d.ts.map +1 -1
  71. package/dist/opLifecycle/index.js +2 -1
  72. package/dist/opLifecycle/index.js.map +1 -1
  73. package/dist/opLifecycle/opCompressor.d.ts +2 -2
  74. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  75. package/dist/opLifecycle/opCompressor.js +3 -6
  76. package/dist/opLifecycle/opCompressor.js.map +1 -1
  77. package/dist/opLifecycle/opDecompressor.d.ts +2 -2
  78. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  79. package/dist/opLifecycle/opDecompressor.js +14 -8
  80. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  81. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  82. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  83. package/dist/opLifecycle/opGroupingManager.js +6 -11
  84. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  85. package/dist/opLifecycle/opSplitter.d.ts +2 -2
  86. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  87. package/dist/opLifecycle/opSplitter.js +5 -3
  88. package/dist/opLifecycle/opSplitter.js.map +1 -1
  89. package/dist/opLifecycle/outbox.d.ts +35 -4
  90. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  91. package/dist/opLifecycle/outbox.js +135 -45
  92. package/dist/opLifecycle/outbox.js.map +1 -1
  93. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  94. package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
  95. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  96. package/dist/packageVersion.d.ts +1 -1
  97. package/dist/packageVersion.js +1 -1
  98. package/dist/packageVersion.js.map +1 -1
  99. package/dist/pendingStateManager.d.ts +24 -15
  100. package/dist/pendingStateManager.d.ts.map +1 -1
  101. package/dist/pendingStateManager.js +67 -72
  102. package/dist/pendingStateManager.js.map +1 -1
  103. package/dist/scheduleManager.d.ts +2 -2
  104. package/dist/scheduleManager.d.ts.map +1 -1
  105. package/dist/scheduleManager.js +8 -2
  106. package/dist/scheduleManager.js.map +1 -1
  107. package/dist/summary/index.d.ts +2 -2
  108. package/dist/summary/index.d.ts.map +1 -1
  109. package/dist/summary/index.js +2 -1
  110. package/dist/summary/index.js.map +1 -1
  111. package/dist/summary/orderedClientElection.d.ts +4 -3
  112. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  113. package/dist/summary/orderedClientElection.js +3 -18
  114. package/dist/summary/orderedClientElection.js.map +1 -1
  115. package/dist/summary/runningSummarizer.d.ts +4 -3
  116. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  117. package/dist/summary/runningSummarizer.js +5 -6
  118. package/dist/summary/runningSummarizer.js.map +1 -1
  119. package/dist/summary/summarizer.d.ts +2 -3
  120. package/dist/summary/summarizer.d.ts.map +1 -1
  121. package/dist/summary/summarizer.js +2 -3
  122. package/dist/summary/summarizer.js.map +1 -1
  123. package/dist/summary/summarizerClientElection.d.ts +3 -2
  124. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  125. package/dist/summary/summarizerClientElection.js.map +1 -1
  126. package/dist/summary/summarizerHeuristics.d.ts +2 -2
  127. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  128. package/dist/summary/summarizerHeuristics.js.map +1 -1
  129. package/dist/summary/summarizerNode/index.d.ts +1 -1
  130. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  131. package/dist/summary/summarizerNode/index.js.map +1 -1
  132. package/dist/summary/summarizerNode/summarizerNode.d.ts +41 -14
  133. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  134. package/dist/summary/summarizerNode/summarizerNode.js +91 -23
  135. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  136. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +24 -4
  137. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  138. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  139. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +23 -8
  140. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  141. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +60 -23
  142. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  143. package/dist/summary/summarizerTypes.d.ts +16 -9
  144. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  145. package/dist/summary/summarizerTypes.js.map +1 -1
  146. package/dist/summary/summaryCollection.d.ts +4 -2
  147. package/dist/summary/summaryCollection.d.ts.map +1 -1
  148. package/dist/summary/summaryCollection.js +4 -0
  149. package/dist/summary/summaryCollection.js.map +1 -1
  150. package/dist/summary/summaryFormat.d.ts +1 -0
  151. package/dist/summary/summaryFormat.d.ts.map +1 -1
  152. package/dist/summary/summaryFormat.js +2 -1
  153. package/dist/summary/summaryFormat.js.map +1 -1
  154. package/dist/summary/summaryGenerator.d.ts +14 -5
  155. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  156. package/dist/summary/summaryGenerator.js +23 -9
  157. package/dist/summary/summaryGenerator.js.map +1 -1
  158. package/dist/summary/summaryManager.d.ts +4 -2
  159. package/dist/summary/summaryManager.d.ts.map +1 -1
  160. package/dist/summary/summaryManager.js.map +1 -1
  161. package/dist/tsdoc-metadata.json +11 -0
  162. package/lib/batchTracker.d.ts +4 -4
  163. package/lib/batchTracker.d.ts.map +1 -1
  164. package/lib/batchTracker.js +2 -2
  165. package/lib/batchTracker.js.map +1 -1
  166. package/lib/blobManager.d.ts +5 -2
  167. package/lib/blobManager.d.ts.map +1 -1
  168. package/lib/blobManager.js +53 -24
  169. package/lib/blobManager.js.map +1 -1
  170. package/lib/connectionTelemetry.d.ts +2 -2
  171. package/lib/connectionTelemetry.d.ts.map +1 -1
  172. package/lib/connectionTelemetry.js +8 -1
  173. package/lib/connectionTelemetry.js.map +1 -1
  174. package/lib/containerRuntime.d.ts +19 -7
  175. package/lib/containerRuntime.d.ts.map +1 -1
  176. package/lib/containerRuntime.js +101 -25
  177. package/lib/containerRuntime.js.map +1 -1
  178. package/lib/dataStore.d.ts +2 -2
  179. package/lib/dataStore.d.ts.map +1 -1
  180. package/lib/dataStore.js +1 -1
  181. package/lib/dataStore.js.map +1 -1
  182. package/lib/dataStoreContext.d.ts +3 -4
  183. package/lib/dataStoreContext.d.ts.map +1 -1
  184. package/lib/dataStoreContext.js +5 -5
  185. package/lib/dataStoreContext.js.map +1 -1
  186. package/lib/dataStoreContexts.d.ts +2 -1
  187. package/lib/dataStoreContexts.d.ts.map +1 -1
  188. package/lib/dataStoreContexts.js +2 -1
  189. package/lib/dataStoreContexts.js.map +1 -1
  190. package/lib/dataStores.d.ts +1 -1
  191. package/lib/dataStores.d.ts.map +1 -1
  192. package/lib/dataStores.js +2 -1
  193. package/lib/dataStores.js.map +1 -1
  194. package/lib/deltaScheduler.d.ts +2 -2
  195. package/lib/deltaScheduler.d.ts.map +1 -1
  196. package/lib/deltaScheduler.js +1 -1
  197. package/lib/deltaScheduler.js.map +1 -1
  198. package/lib/gc/garbageCollection.d.ts +2 -2
  199. package/lib/gc/garbageCollection.d.ts.map +1 -1
  200. package/lib/gc/garbageCollection.js +2 -1
  201. package/lib/gc/garbageCollection.js.map +1 -1
  202. package/lib/gc/gcDefinitions.d.ts +3 -4
  203. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  204. package/lib/gc/gcDefinitions.js.map +1 -1
  205. package/lib/gc/gcTelemetry.d.ts +5 -5
  206. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  207. package/lib/gc/gcTelemetry.js +1 -1
  208. package/lib/gc/gcTelemetry.js.map +1 -1
  209. package/lib/id-compressor/idCompressor.d.ts +2 -2
  210. package/lib/id-compressor/idCompressor.d.ts.map +1 -1
  211. package/lib/id-compressor/idCompressor.js.map +1 -1
  212. package/lib/id-compressor/uuidUtilities.d.ts +0 -2
  213. package/lib/id-compressor/uuidUtilities.d.ts.map +1 -1
  214. package/lib/id-compressor/uuidUtilities.js +1 -3
  215. package/lib/id-compressor/uuidUtilities.js.map +1 -1
  216. package/lib/index.d.ts +1 -1
  217. package/lib/index.d.ts.map +1 -1
  218. package/lib/index.js.map +1 -1
  219. package/lib/metadata.d.ts +18 -0
  220. package/lib/metadata.d.ts.map +1 -0
  221. package/lib/metadata.js +6 -0
  222. package/lib/metadata.js.map +1 -0
  223. package/lib/opLifecycle/batchManager.d.ts +2 -1
  224. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  225. package/lib/opLifecycle/batchManager.js +5 -1
  226. package/lib/opLifecycle/batchManager.js.map +1 -1
  227. package/lib/opLifecycle/definitions.d.ts +13 -2
  228. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  229. package/lib/opLifecycle/definitions.js.map +1 -1
  230. package/lib/opLifecycle/index.d.ts +1 -1
  231. package/lib/opLifecycle/index.d.ts.map +1 -1
  232. package/lib/opLifecycle/index.js +1 -1
  233. package/lib/opLifecycle/index.js.map +1 -1
  234. package/lib/opLifecycle/opCompressor.d.ts +2 -2
  235. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  236. package/lib/opLifecycle/opCompressor.js +3 -6
  237. package/lib/opLifecycle/opCompressor.js.map +1 -1
  238. package/lib/opLifecycle/opDecompressor.d.ts +2 -2
  239. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  240. package/lib/opLifecycle/opDecompressor.js +14 -8
  241. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  242. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  243. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  244. package/lib/opLifecycle/opGroupingManager.js +6 -11
  245. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  246. package/lib/opLifecycle/opSplitter.d.ts +2 -2
  247. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  248. package/lib/opLifecycle/opSplitter.js +5 -3
  249. package/lib/opLifecycle/opSplitter.js.map +1 -1
  250. package/lib/opLifecycle/outbox.d.ts +35 -4
  251. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  252. package/lib/opLifecycle/outbox.js +133 -44
  253. package/lib/opLifecycle/outbox.js.map +1 -1
  254. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  255. package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
  256. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  257. package/lib/packageVersion.d.ts +1 -1
  258. package/lib/packageVersion.js +1 -1
  259. package/lib/packageVersion.js.map +1 -1
  260. package/lib/pendingStateManager.d.ts +24 -15
  261. package/lib/pendingStateManager.d.ts.map +1 -1
  262. package/lib/pendingStateManager.js +67 -72
  263. package/lib/pendingStateManager.js.map +1 -1
  264. package/lib/scheduleManager.d.ts +2 -2
  265. package/lib/scheduleManager.d.ts.map +1 -1
  266. package/lib/scheduleManager.js +8 -2
  267. package/lib/scheduleManager.js.map +1 -1
  268. package/lib/summary/index.d.ts +2 -2
  269. package/lib/summary/index.d.ts.map +1 -1
  270. package/lib/summary/index.js +1 -1
  271. package/lib/summary/index.js.map +1 -1
  272. package/lib/summary/orderedClientElection.d.ts +4 -3
  273. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  274. package/lib/summary/orderedClientElection.js +3 -18
  275. package/lib/summary/orderedClientElection.js.map +1 -1
  276. package/lib/summary/runningSummarizer.d.ts +4 -3
  277. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  278. package/lib/summary/runningSummarizer.js +5 -6
  279. package/lib/summary/runningSummarizer.js.map +1 -1
  280. package/lib/summary/summarizer.d.ts +2 -3
  281. package/lib/summary/summarizer.d.ts.map +1 -1
  282. package/lib/summary/summarizer.js +2 -3
  283. package/lib/summary/summarizer.js.map +1 -1
  284. package/lib/summary/summarizerClientElection.d.ts +3 -2
  285. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  286. package/lib/summary/summarizerClientElection.js.map +1 -1
  287. package/lib/summary/summarizerHeuristics.d.ts +2 -2
  288. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  289. package/lib/summary/summarizerHeuristics.js.map +1 -1
  290. package/lib/summary/summarizerNode/index.d.ts +1 -1
  291. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  292. package/lib/summary/summarizerNode/index.js.map +1 -1
  293. package/lib/summary/summarizerNode/summarizerNode.d.ts +41 -14
  294. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  295. package/lib/summary/summarizerNode/summarizerNode.js +91 -23
  296. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  297. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +24 -4
  298. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  299. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  300. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +23 -8
  301. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  302. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +59 -22
  303. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  304. package/lib/summary/summarizerTypes.d.ts +16 -9
  305. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  306. package/lib/summary/summarizerTypes.js.map +1 -1
  307. package/lib/summary/summaryCollection.d.ts +4 -2
  308. package/lib/summary/summaryCollection.d.ts.map +1 -1
  309. package/lib/summary/summaryCollection.js +4 -0
  310. package/lib/summary/summaryCollection.js.map +1 -1
  311. package/lib/summary/summaryFormat.d.ts +1 -0
  312. package/lib/summary/summaryFormat.d.ts.map +1 -1
  313. package/lib/summary/summaryFormat.js +2 -1
  314. package/lib/summary/summaryFormat.js.map +1 -1
  315. package/lib/summary/summaryGenerator.d.ts +14 -5
  316. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  317. package/lib/summary/summaryGenerator.js +21 -8
  318. package/lib/summary/summaryGenerator.js.map +1 -1
  319. package/lib/summary/summaryManager.d.ts +4 -2
  320. package/lib/summary/summaryManager.d.ts.map +1 -1
  321. package/lib/summary/summaryManager.js +1 -1
  322. package/lib/summary/summaryManager.js.map +1 -1
  323. package/package.json +25 -41
  324. package/src/batchTracker.ts +5 -6
  325. package/src/blobManager.ts +70 -29
  326. package/src/connectionTelemetry.ts +14 -6
  327. package/src/containerRuntime.ts +124 -38
  328. package/src/dataStore.ts +3 -4
  329. package/src/dataStoreContext.ts +12 -9
  330. package/src/dataStoreContexts.ts +6 -8
  331. package/src/dataStores.ts +8 -3
  332. package/src/deltaScheduler.ts +2 -3
  333. package/src/gc/garbageCollection.ts +7 -6
  334. package/src/gc/gcDefinitions.ts +3 -4
  335. package/src/gc/gcTelemetry.ts +9 -5
  336. package/src/id-compressor/idCompressor.ts +2 -2
  337. package/src/id-compressor/uuidUtilities.ts +1 -4
  338. package/src/index.ts +2 -0
  339. package/src/metadata.ts +19 -0
  340. package/src/opLifecycle/README.md +20 -0
  341. package/src/opLifecycle/batchManager.ts +9 -1
  342. package/src/opLifecycle/definitions.ts +13 -2
  343. package/src/opLifecycle/index.ts +1 -1
  344. package/src/opLifecycle/opCompressor.ts +4 -8
  345. package/src/opLifecycle/opDecompressor.ts +43 -16
  346. package/src/opLifecycle/opGroupingManager.ts +19 -13
  347. package/src/opLifecycle/opSplitter.ts +7 -6
  348. package/src/opLifecycle/outbox.ts +172 -57
  349. package/src/opLifecycle/remoteMessageProcessor.ts +5 -1
  350. package/src/packageVersion.ts +1 -1
  351. package/src/pendingStateManager.ts +113 -129
  352. package/src/scheduleManager.ts +18 -10
  353. package/src/summary/index.ts +3 -1
  354. package/src/summary/orderedClientElection.ts +7 -20
  355. package/src/summary/runningSummarizer.ts +11 -10
  356. package/src/summary/summarizer.ts +8 -8
  357. package/src/summary/summarizerClientElection.ts +3 -2
  358. package/src/summary/summarizerHeuristics.ts +2 -2
  359. package/src/summary/summarizerNode/index.ts +1 -0
  360. package/src/summary/summarizerNode/summarizerNode.ts +121 -38
  361. package/src/summary/summarizerNode/summarizerNodeUtils.ts +27 -4
  362. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +73 -27
  363. package/src/summary/summarizerTypes.ts +19 -14
  364. package/src/summary/summaryCollection.ts +10 -4
  365. package/src/summary/summaryFormat.ts +5 -1
  366. package/src/summary/summaryGenerator.ts +38 -11
  367. package/src/summary/summaryManager.ts +9 -9
@@ -18,10 +18,22 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
+ var __rest = (this && this.__rest) || function (s, e) {
22
+ var t = {};
23
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
24
+ t[p] = s[p];
25
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
26
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
27
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
28
+ t[p[i]] = s[p[i]];
29
+ }
30
+ return t;
31
+ };
21
32
  Object.defineProperty(exports, "__esModule", { value: true });
22
33
  exports.ContainerRuntime = exports.getDeviceSpec = exports.agentSchedulerId = exports.isRuntimeMessage = exports.RuntimeMessage = exports.CompressionAlgorithms = exports.defaultRuntimeHeaderData = exports.TombstoneResponseHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = exports.DefaultSummaryConfiguration = exports.ContainerMessageType = void 0;
23
34
  const container_definitions_1 = require("@fluidframework/container-definitions");
24
35
  const common_utils_1 = require("@fluidframework/common-utils");
36
+ const core_utils_1 = require("@fluidframework/core-utils");
25
37
  const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
26
38
  const driver_definitions_1 = require("@fluidframework/driver-definitions");
27
39
  const driver_utils_1 = require("@fluidframework/driver-utils");
@@ -175,7 +187,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
175
187
  * @internal
176
188
  */
177
189
  constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope, logger, existing, blobManagerSnapshot, _storage, idCompressor, requestHandler, summaryConfiguration, initializeEntryPoint) {
178
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
190
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
179
191
  if (summaryConfiguration === void 0) { summaryConfiguration = Object.assign(Object.assign({}, exports.DefaultSummaryConfiguration), (_a = runtimeOptions.summaryOptions) === null || _a === void 0 ? void 0 : _a.summaryConfigOverrides); }
180
192
  super();
181
193
  this.context = context;
@@ -327,7 +339,6 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
327
339
  getNodePackagePath: async (nodePath) => this.getGCNodePackagePath(nodePath),
328
340
  getLastSummaryTimestampMs: () => { var _a; return (_a = this.messageAtLastSummary) === null || _a === void 0 ? void 0 : _a.timestamp; },
329
341
  readAndParseBlob: async (id) => (0, driver_utils_1.readAndParse)(this.storage, id),
330
- getContainerDiagnosticId: () => this.context.id,
331
342
  // GC runs in summarizer client and needs access to the real (non-proxy) active information. The proxy
332
343
  // delta manager would always return false for summarizer client.
333
344
  activeConnection: () => this.innerDeltaManager.active,
@@ -372,8 +383,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
372
383
  close: this.closeFn,
373
384
  connected: () => this.connected,
374
385
  reSubmit: this.reSubmit.bind(this),
375
- rollback: this.rollback.bind(this),
376
- orderSequentially: this.orderSequentially.bind(this),
386
+ reSubmitBatch: this.reSubmitBatch.bind(this),
377
387
  }, pendingRuntimeState === null || pendingRuntimeState === void 0 ? void 0 : pendingRuntimeState.pending);
378
388
  const disableCompression = this.mc.config.getBoolean("Fluid.ContainerRuntime.CompressionDisabled");
379
389
  const compressionOptions = disableCompression === true
@@ -393,6 +403,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
393
403
  compressionOptions,
394
404
  maxBatchSizeInBytes: runtimeOptions.maxBatchSizeInBytes,
395
405
  disablePartialFlush: disablePartialFlush === true,
406
+ enableGroupedBatching: this.groupedBatchingEnabled,
396
407
  },
397
408
  logger: this.mc.logger,
398
409
  groupingManager: opGroupingManager,
@@ -400,13 +411,18 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
400
411
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
401
412
  clientSequenceNumber: this._processedClientSequenceNumber,
402
413
  }),
414
+ reSubmit: this.reSubmit.bind(this),
415
+ opReentrancy: () => this.ensureNoDataModelChangesCalls > 0,
416
+ closeContainer: this.closeFn,
403
417
  });
404
418
  this.context.quorum.on("removeMember", (clientId) => {
405
419
  this.remoteMessageProcessor.clearPartialMessagesFor(clientId);
406
420
  });
407
- this.summaryStateUpdateMethod = this.mc.config.getString("Fluid.ContainerRuntime.Test.SummaryStateUpdateMethod");
421
+ this.summaryStateUpdateMethod = this.mc.config.getString("Fluid.ContainerRuntime.Test.SummaryStateUpdateMethodV2");
408
422
  const closeSummarizerDelayOverride = this.mc.config.getNumber("Fluid.ContainerRuntime.Test.CloseSummarizerDelayOverrideMs");
409
423
  this.closeSummarizerDelayMs = closeSummarizerDelayOverride !== null && closeSummarizerDelayOverride !== void 0 ? closeSummarizerDelayOverride : defaultCloseSummarizerDelayMs;
424
+ this.validateSummaryBeforeUpload =
425
+ (_l = this.mc.config.getBoolean("Fluid.ContainerRuntime.Test.ValidateSummaryBeforeUpload")) !== null && _l !== void 0 ? _l : false;
410
426
  this.summaryCollection = new summary_1.SummaryCollection(this.deltaManager, this.logger);
411
427
  this.dirtyContainer =
412
428
  this.context.attachState !== container_definitions_1.AttachState.Attached ||
@@ -490,7 +506,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
490
506
  }), telemetryDocumentId: this.telemetryDocumentId, groupedBatchingEnabled: this.groupedBatchingEnabled }));
491
507
  (0, connectionTelemetry_1.ReportOpPerfTelemetry)(this.context.clientId, this.deltaManager, this.logger);
492
508
  (0, batchTracker_1.BindBatchTracker)(this, this.logger);
493
- this.entryPoint = new common_utils_1.LazyPromise(async () => {
509
+ this.entryPoint = new core_utils_1.LazyPromise(async () => {
494
510
  if (this.context.clientDetails.type === summary_1.summarizerClientType) {
495
511
  (0, common_utils_1.assert)(this._summarizer !== undefined, 0x5bf /* Summarizer object is undefined in a summarizer client */);
496
512
  return this._summarizer;
@@ -498,9 +514,6 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
498
514
  return initializeEntryPoint === null || initializeEntryPoint === void 0 ? void 0 : initializeEntryPoint(this);
499
515
  });
500
516
  }
501
- get IContainerRuntime() {
502
- return this;
503
- }
504
517
  get IFluidRouter() {
505
518
  return this;
506
519
  }
@@ -649,7 +662,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
649
662
  }
650
663
  get reSubmitFn() {
651
664
  // eslint-disable-next-line @typescript-eslint/unbound-method
652
- return this.reSubmit;
665
+ return this.reSubmitCore;
653
666
  }
654
667
  get disposeFn() {
655
668
  var _a;
@@ -657,6 +670,10 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
657
670
  return (_a = this.context.disposeFn) !== null && _a !== void 0 ? _a : this.context.closeFn;
658
671
  }
659
672
  get closeFn() {
673
+ if (this._summarizer !== undefined) {
674
+ // In cases of summarizer, we want to dispose instead since consumer doesn't interact with this container
675
+ return this.disposeFn;
676
+ }
660
677
  // Also call disposeFn to retain functionality of runtime being disposed on close
661
678
  return (error) => {
662
679
  var _a, _b;
@@ -924,8 +941,14 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
924
941
  }
925
942
  return this.consecutiveReconnects < this.maxConsecutiveReconnects;
926
943
  }
927
- resetReconnectCount() {
928
- this.consecutiveReconnects = 0;
944
+ resetReconnectCount(message) {
945
+ // Chunked ops don't count towards making progress as they are sent
946
+ // in their own batches before the originating batch is sent.
947
+ // Therefore, receiving them while attempting to send the originating batch
948
+ // does not mean that the container is making any progress.
949
+ if ((message === null || message === void 0 ? void 0 : message.type) !== ContainerMessageType.ChunkedOp) {
950
+ this.consecutiveReconnects = 0;
951
+ }
929
952
  }
930
953
  replayPendingStates() {
931
954
  // We need to be able to send ops to replay states
@@ -967,7 +990,19 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
967
990
  const { IdCompressor } = await Promise.resolve().then(() => __importStar(require("./id-compressor")));
968
991
  this.idCompressor = IdCompressor.deserialize(op.stashedState);
969
992
  }
970
- async applyStashedOp(type, contents) {
993
+ /**
994
+ * Parse an op's type and actual content from given serialized content
995
+ * ! Note: this format needs to be in-line with what is set in the "ContainerRuntime.submit(...)" method
996
+ */
997
+ parseOpContent(serializedContent) {
998
+ (0, common_utils_1.assert)(serializedContent !== undefined, 0x6d5 /* content must be defined */);
999
+ const parsed = JSON.parse(serializedContent);
1000
+ (0, common_utils_1.assert)(parsed.type !== undefined, 0x6d6 /* incorrect op content format */);
1001
+ return { type: parsed.type, contents: parsed.contents };
1002
+ }
1003
+ async applyStashedOp(op) {
1004
+ // Need to parse from string for back-compat
1005
+ const { type, contents } = this.parseOpContent(op);
971
1006
  switch (type) {
972
1007
  case ContainerMessageType.FluidDataStoreOp:
973
1008
  return this.dataStores.applyStashedOp(contents);
@@ -1126,7 +1161,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1126
1161
  // If we have processed a local op, this means that the container is
1127
1162
  // making progress and we can reset the counter for how many times
1128
1163
  // we have consecutively replayed the pending states
1129
- this.resetReconnectCount();
1164
+ this.resetReconnectCount(message);
1130
1165
  }
1131
1166
  }
1132
1167
  catch (e) {
@@ -1226,7 +1261,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1226
1261
  if (checkpoint) {
1227
1262
  // This will throw and close the container if rollback fails
1228
1263
  try {
1229
- checkpoint.rollback((message) => this.rollback(message.deserializedContent.type, message.deserializedContent.contents, message.localOpMetadata));
1264
+ checkpoint.rollback((message) => this.rollback(message.contents, message.localOpMetadata));
1230
1265
  }
1231
1266
  catch (err) {
1232
1267
  const error2 = (0, telemetry_utils_1.wrapError)(err, (message) => {
@@ -1700,6 +1735,16 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1700
1735
  generateDuration: trace.trace().duration,
1701
1736
  forcedFullTree,
1702
1737
  };
1738
+ // If validateSummaryBeforeUpload is true, validate that the summary generated by the summarizer nodes is
1739
+ // correct before this summary is uploaded.
1740
+ if (this.validateSummaryBeforeUpload) {
1741
+ const validateResult = this.summarizerNode.validateSummary();
1742
+ if (!validateResult.success) {
1743
+ const { success } = validateResult, loggingProps = __rest(validateResult, ["success"]);
1744
+ const error = new summary_1.RetriableSummaryError(validateResult.reason, validateResult.retryAfterSeconds, Object.assign({}, loggingProps));
1745
+ return Object.assign(Object.assign({ stage: "base" }, generateSummaryData), { error });
1746
+ }
1747
+ }
1703
1748
  continueResult = checkContinue();
1704
1749
  if (!continueResult.continue) {
1705
1750
  return Object.assign(Object.assign({ stage: "generate" }, generateSummaryData), { error: continueResult.error });
@@ -1760,7 +1805,13 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1760
1805
  return Object.assign(Object.assign({ stage: "upload" }, uploadData), { error });
1761
1806
  }
1762
1807
  const submitData = Object.assign(Object.assign({ stage: "submit" }, uploadData), { clientSequenceNumber, submitOpDuration: trace.trace().duration });
1763
- this.summarizerNode.completeSummary(handle);
1808
+ try {
1809
+ // If validateSummaryBeforeUpload is false, the summary should be validated in this step.
1810
+ this.summarizerNode.completeSummary(handle, !this.validateSummaryBeforeUpload /* validate */);
1811
+ }
1812
+ catch (error) {
1813
+ return Object.assign(Object.assign({ stage: "upload" }, uploadData), { error });
1814
+ }
1764
1815
  return submitData;
1765
1816
  }
1766
1817
  finally {
@@ -1831,10 +1882,10 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1831
1882
  };
1832
1883
  idAllocationBatchMessage = {
1833
1884
  contents: JSON.stringify(idAllocationMessage),
1834
- deserializedContent: idAllocationMessage,
1835
1885
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
1836
1886
  metadata: undefined,
1837
1887
  localOpMetadata: (_b = this.idCompressor) === null || _b === void 0 ? void 0 : _b.serialize(true),
1888
+ type: ContainerMessageType.IdAllocation,
1838
1889
  };
1839
1890
  }
1840
1891
  if (idAllocationBatchMessage !== undefined) {
@@ -1858,7 +1909,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1858
1909
  }
1859
1910
  const message = {
1860
1911
  contents: serializedContent,
1861
- deserializedContent: JSON.parse(serializedContent),
1912
+ type,
1862
1913
  metadata,
1863
1914
  localOpMetadata,
1864
1915
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
@@ -1894,6 +1945,10 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1894
1945
  this.disableAttachReorder !== true) {
1895
1946
  this.outbox.submitAttach(message);
1896
1947
  }
1948
+ else if (type === ContainerMessageType.BlobAttach) {
1949
+ // BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)
1950
+ this.outbox.submitBlobAttach(message);
1951
+ }
1897
1952
  else {
1898
1953
  this.outbox.submit(message);
1899
1954
  }
@@ -1970,7 +2025,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1970
2025
  if (this.opReentryCallsToReport > 0) {
1971
2026
  this.mc.logger.sendTelemetryEvent({ eventName: "OpReentry" },
1972
2027
  // We need to capture the call stack in order to inspect the source of this usage pattern
1973
- new container_utils_1.UsageError(errorMessage));
2028
+ (0, opLifecycle_1.getLongStack)(() => new container_utils_1.UsageError(errorMessage)));
1974
2029
  this.opReentryCallsToReport--;
1975
2030
  }
1976
2031
  // Creating ops while processing ops can lead
@@ -1990,13 +2045,26 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1990
2045
  }
1991
2046
  }
1992
2047
  }
2048
+ reSubmitBatch(batch) {
2049
+ this.orderSequentially(() => {
2050
+ for (const message of batch) {
2051
+ this.reSubmit(message);
2052
+ }
2053
+ });
2054
+ this.flush();
2055
+ }
2056
+ reSubmit(message) {
2057
+ // Need to parse from string for back-compat
2058
+ const { contents, type } = this.parseOpContent(message.content);
2059
+ this.reSubmitCore(type, contents, message.localOpMetadata, message.opMetadata);
2060
+ }
1993
2061
  /**
1994
2062
  * Finds the right store and asks it to resubmit the message. This typically happens when we
1995
2063
  * reconnect and there are pending messages.
1996
2064
  * @param content - The content of the original message.
1997
2065
  * @param localOpMetadata - The local metadata associated with the original message.
1998
2066
  */
1999
- reSubmit(type, content, localOpMetadata, opMetadata) {
2067
+ reSubmitCore(type, content, localOpMetadata, opMetadata) {
2000
2068
  switch (type) {
2001
2069
  case ContainerMessageType.FluidDataStoreOp:
2002
2070
  // For Operations, call resubmitDataStoreOp which will find the right store
@@ -2005,7 +2073,13 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
2005
2073
  break;
2006
2074
  case ContainerMessageType.Attach:
2007
2075
  case ContainerMessageType.Alias:
2076
+ this.submit(type, content, localOpMetadata);
2077
+ break;
2008
2078
  case ContainerMessageType.IdAllocation:
2079
+ // Remove the stashedState from the op if it's a stashed op
2080
+ if (content.stashedState !== undefined) {
2081
+ delete content.stashedState;
2082
+ }
2009
2083
  this.submit(type, content, localOpMetadata);
2010
2084
  break;
2011
2085
  case ContainerMessageType.ChunkedOp:
@@ -2020,12 +2094,14 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
2020
2094
  (0, common_utils_1.unreachableCase)(type, `Unknown ContainerMessageType: ${type}`);
2021
2095
  }
2022
2096
  }
2023
- rollback(type, content, localOpMetadata) {
2097
+ rollback(content, localOpMetadata) {
2098
+ // Need to parse from string for back-compat
2099
+ const { type, contents } = this.parseOpContent(content);
2024
2100
  switch (type) {
2025
2101
  case ContainerMessageType.FluidDataStoreOp:
2026
2102
  // For operations, call rollbackDataStoreOp which will find the right store
2027
2103
  // and trigger rollback on it.
2028
- this.dataStores.rollbackDataStoreOp(content, localOpMetadata);
2104
+ this.dataStores.rollbackDataStoreOp(contents, localOpMetadata);
2029
2105
  break;
2030
2106
  default:
2031
2107
  throw new Error(`Can't rollback ${type}`);