@fluidframework/container-runtime 2.0.0-internal.3.0.2 → 2.0.0-internal.3.2.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 (474) hide show
  1. package/.eslintrc.js +19 -19
  2. package/.mocharc.js +2 -2
  3. package/api-extractor.json +2 -2
  4. package/dist/batchTracker.d.ts.map +1 -1
  5. package/dist/batchTracker.js +2 -1
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager.d.ts +15 -2
  8. package/dist/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager.js +109 -37
  10. package/dist/blobManager.js.map +1 -1
  11. package/dist/connectionTelemetry.d.ts.map +1 -1
  12. package/dist/connectionTelemetry.js +11 -9
  13. package/dist/connectionTelemetry.js.map +1 -1
  14. package/dist/containerHandleContext.d.ts.map +1 -1
  15. package/dist/containerHandleContext.js +3 -1
  16. package/dist/containerHandleContext.js.map +1 -1
  17. package/dist/containerRuntime.d.ts +23 -11
  18. package/dist/containerRuntime.d.ts.map +1 -1
  19. package/dist/containerRuntime.js +225 -132
  20. package/dist/containerRuntime.js.map +1 -1
  21. package/dist/dataStore.d.ts.map +1 -1
  22. package/dist/dataStore.js +11 -9
  23. package/dist/dataStore.js.map +1 -1
  24. package/dist/dataStoreContext.d.ts +27 -13
  25. package/dist/dataStoreContext.d.ts.map +1 -1
  26. package/dist/dataStoreContext.js +95 -56
  27. package/dist/dataStoreContext.js.map +1 -1
  28. package/dist/dataStoreContexts.d.ts.map +1 -1
  29. package/dist/dataStoreContexts.js +7 -3
  30. package/dist/dataStoreContexts.js.map +1 -1
  31. package/dist/dataStoreRegistry.d.ts.map +1 -1
  32. package/dist/dataStoreRegistry.js +3 -1
  33. package/dist/dataStoreRegistry.js.map +1 -1
  34. package/dist/dataStores.d.ts +28 -4
  35. package/dist/dataStores.d.ts.map +1 -1
  36. package/dist/dataStores.js +122 -44
  37. package/dist/dataStores.js.map +1 -1
  38. package/dist/deltaScheduler.d.ts.map +1 -1
  39. package/dist/deltaScheduler.js +8 -3
  40. package/dist/deltaScheduler.js.map +1 -1
  41. package/dist/{garbageCollection.d.ts → gc/garbageCollection.d.ts} +27 -203
  42. package/dist/gc/garbageCollection.d.ts.map +1 -0
  43. package/dist/{garbageCollection.js → gc/garbageCollection.js} +210 -400
  44. package/dist/gc/garbageCollection.js.map +1 -0
  45. package/dist/gc/gcDefinitions.d.ts +189 -0
  46. package/dist/gc/gcDefinitions.d.ts.map +1 -0
  47. package/dist/{garbageCollectionConstants.js → gc/gcDefinitions.js} +27 -2
  48. package/dist/gc/gcDefinitions.js.map +1 -0
  49. package/dist/gc/gcHelpers.d.ts +30 -0
  50. package/dist/gc/gcHelpers.d.ts.map +1 -0
  51. package/dist/gc/gcHelpers.js +65 -0
  52. package/dist/gc/gcHelpers.js.map +1 -0
  53. package/dist/gc/gcSummaryStateTracker.d.ts +86 -0
  54. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -0
  55. package/dist/gc/gcSummaryStateTracker.js +246 -0
  56. package/dist/gc/gcSummaryStateTracker.js.map +1 -0
  57. package/{lib → dist/gc}/gcSweepReadyUsageDetection.d.ts +5 -5
  58. package/dist/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
  59. package/dist/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +15 -11
  60. package/dist/gc/gcSweepReadyUsageDetection.js.map +1 -0
  61. package/dist/gc/gcUnreferencedStateTracker.d.ts +34 -0
  62. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  63. package/dist/gc/gcUnreferencedStateTracker.js +94 -0
  64. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -0
  65. package/dist/gc/index.d.ts +11 -0
  66. package/dist/gc/index.d.ts.map +1 -0
  67. package/dist/gc/index.js +40 -0
  68. package/dist/gc/index.js.map +1 -0
  69. package/dist/index.d.ts +2 -5
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +6 -9
  72. package/dist/index.js.map +1 -1
  73. package/dist/opLifecycle/batchManager.d.ts +2 -13
  74. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  75. package/dist/opLifecycle/batchManager.js +19 -41
  76. package/dist/opLifecycle/batchManager.js.map +1 -1
  77. package/dist/opLifecycle/definitions.d.ts +4 -0
  78. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  79. package/dist/opLifecycle/definitions.js.map +1 -1
  80. package/dist/opLifecycle/index.d.ts.map +1 -1
  81. package/dist/opLifecycle/index.js.map +1 -1
  82. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  83. package/dist/opLifecycle/opCompressor.js +1 -0
  84. package/dist/opLifecycle/opCompressor.js.map +1 -1
  85. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  86. package/dist/opLifecycle/opDecompressor.js +5 -2
  87. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  88. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  89. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  90. package/dist/opLifecycle/opSplitter.js +24 -13
  91. package/dist/opLifecycle/opSplitter.js.map +1 -1
  92. package/dist/opLifecycle/outbox.d.ts +19 -3
  93. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  94. package/dist/opLifecycle/outbox.js +78 -45
  95. package/dist/opLifecycle/outbox.js.map +1 -1
  96. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  97. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  98. package/dist/opProperties.d.ts.map +1 -1
  99. package/dist/opProperties.js +1 -3
  100. package/dist/opProperties.js.map +1 -1
  101. package/dist/packageVersion.d.ts +1 -1
  102. package/dist/packageVersion.js +1 -1
  103. package/dist/packageVersion.js.map +1 -1
  104. package/dist/pendingStateManager.d.ts +8 -2
  105. package/dist/pendingStateManager.d.ts.map +1 -1
  106. package/dist/pendingStateManager.js +21 -13
  107. package/dist/pendingStateManager.js.map +1 -1
  108. package/dist/scheduleManager.d.ts.map +1 -1
  109. package/dist/scheduleManager.js +3 -2
  110. package/dist/scheduleManager.js.map +1 -1
  111. package/dist/serializedSnapshotStorage.d.ts +2 -2
  112. package/dist/serializedSnapshotStorage.d.ts.map +1 -1
  113. package/dist/serializedSnapshotStorage.js +5 -3
  114. package/dist/serializedSnapshotStorage.js.map +1 -1
  115. package/dist/summary/index.d.ts +17 -0
  116. package/dist/summary/index.d.ts.map +1 -0
  117. package/dist/summary/index.js +47 -0
  118. package/dist/summary/index.js.map +1 -0
  119. package/dist/summary/orderedClientElection.d.ts.map +1 -0
  120. package/dist/{orderedClientElection.js → summary/orderedClientElection.js} +10 -4
  121. package/dist/summary/orderedClientElection.js.map +1 -0
  122. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  123. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -0
  124. package/{lib → dist/summary}/runningSummarizer.d.ts +19 -18
  125. package/dist/summary/runningSummarizer.d.ts.map +1 -0
  126. package/dist/{runningSummarizer.js → summary/runningSummarizer.js} +191 -76
  127. package/dist/summary/runningSummarizer.js.map +1 -0
  128. package/dist/{summarizer.d.ts → summary/summarizer.d.ts} +4 -6
  129. package/dist/summary/summarizer.d.ts.map +1 -0
  130. package/dist/{summarizer.js → summary/summarizer.js} +31 -71
  131. package/dist/summary/summarizer.js.map +1 -0
  132. package/dist/summary/summarizerClientElection.d.ts.map +1 -0
  133. package/dist/summary/summarizerClientElection.js.map +1 -0
  134. package/dist/summary/summarizerHandle.d.ts.map +1 -0
  135. package/dist/summary/summarizerHandle.js.map +1 -0
  136. package/{lib → dist/summary}/summarizerHeuristics.d.ts +1 -1
  137. package/dist/summary/summarizerHeuristics.d.ts.map +1 -0
  138. package/dist/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +6 -9
  139. package/dist/summary/summarizerHeuristics.js.map +1 -0
  140. package/{lib → dist/summary}/summarizerTypes.d.ts +22 -22
  141. package/dist/summary/summarizerTypes.d.ts.map +1 -0
  142. package/dist/summary/summarizerTypes.js.map +1 -0
  143. package/dist/summary/summaryCollection.d.ts.map +1 -0
  144. package/dist/{summaryCollection.js → summary/summaryCollection.js} +18 -8
  145. package/dist/summary/summaryCollection.js.map +1 -0
  146. package/{lib → dist/summary}/summaryFormat.d.ts +1 -40
  147. package/dist/summary/summaryFormat.d.ts.map +1 -0
  148. package/dist/{summaryFormat.js → summary/summaryFormat.js} +19 -20
  149. package/dist/summary/summaryFormat.js.map +1 -0
  150. package/dist/summary/summaryGenerator.d.ts.map +1 -0
  151. package/dist/{summaryGenerator.js → summary/summaryGenerator.js} +33 -15
  152. package/dist/summary/summaryGenerator.js.map +1 -0
  153. package/dist/{summaryManager.d.ts → summary/summaryManager.d.ts} +1 -1
  154. package/dist/summary/summaryManager.d.ts.map +1 -0
  155. package/dist/{summaryManager.js → summary/summaryManager.js} +21 -9
  156. package/dist/summary/summaryManager.js.map +1 -0
  157. package/dist/throttler.d.ts +2 -2
  158. package/dist/throttler.d.ts.map +1 -1
  159. package/dist/throttler.js +4 -4
  160. package/dist/throttler.js.map +1 -1
  161. package/lib/batchTracker.d.ts.map +1 -1
  162. package/lib/batchTracker.js +2 -1
  163. package/lib/batchTracker.js.map +1 -1
  164. package/lib/blobManager.d.ts +15 -2
  165. package/lib/blobManager.d.ts.map +1 -1
  166. package/lib/blobManager.js +109 -37
  167. package/lib/blobManager.js.map +1 -1
  168. package/lib/connectionTelemetry.d.ts.map +1 -1
  169. package/lib/connectionTelemetry.js +11 -9
  170. package/lib/connectionTelemetry.js.map +1 -1
  171. package/lib/containerHandleContext.d.ts.map +1 -1
  172. package/lib/containerHandleContext.js +3 -1
  173. package/lib/containerHandleContext.js.map +1 -1
  174. package/lib/containerRuntime.d.ts +23 -11
  175. package/lib/containerRuntime.d.ts.map +1 -1
  176. package/lib/containerRuntime.js +201 -108
  177. package/lib/containerRuntime.js.map +1 -1
  178. package/lib/dataStore.d.ts.map +1 -1
  179. package/lib/dataStore.js +11 -9
  180. package/lib/dataStore.js.map +1 -1
  181. package/lib/dataStoreContext.d.ts +27 -13
  182. package/lib/dataStoreContext.d.ts.map +1 -1
  183. package/lib/dataStoreContext.js +84 -45
  184. package/lib/dataStoreContext.js.map +1 -1
  185. package/lib/dataStoreContexts.d.ts.map +1 -1
  186. package/lib/dataStoreContexts.js +7 -3
  187. package/lib/dataStoreContexts.js.map +1 -1
  188. package/lib/dataStoreRegistry.d.ts.map +1 -1
  189. package/lib/dataStoreRegistry.js +3 -1
  190. package/lib/dataStoreRegistry.js.map +1 -1
  191. package/lib/dataStores.d.ts +28 -4
  192. package/lib/dataStores.d.ts.map +1 -1
  193. package/lib/dataStores.js +120 -42
  194. package/lib/dataStores.js.map +1 -1
  195. package/lib/deltaScheduler.d.ts.map +1 -1
  196. package/lib/deltaScheduler.js +9 -4
  197. package/lib/deltaScheduler.js.map +1 -1
  198. package/lib/{garbageCollection.d.ts → gc/garbageCollection.d.ts} +27 -203
  199. package/lib/gc/garbageCollection.d.ts.map +1 -0
  200. package/lib/{garbageCollection.js → gc/garbageCollection.js} +190 -379
  201. package/lib/gc/garbageCollection.js.map +1 -0
  202. package/lib/gc/gcDefinitions.d.ts +189 -0
  203. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  204. package/lib/{garbageCollectionConstants.js → gc/gcDefinitions.js} +26 -1
  205. package/lib/gc/gcDefinitions.js.map +1 -0
  206. package/lib/gc/gcHelpers.d.ts +30 -0
  207. package/lib/gc/gcHelpers.d.ts.map +1 -0
  208. package/lib/gc/gcHelpers.js +58 -0
  209. package/lib/gc/gcHelpers.js.map +1 -0
  210. package/lib/gc/gcSummaryStateTracker.d.ts +86 -0
  211. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  212. package/lib/gc/gcSummaryStateTracker.js +242 -0
  213. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  214. package/{dist → lib/gc}/gcSweepReadyUsageDetection.d.ts +5 -5
  215. package/lib/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
  216. package/lib/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +15 -11
  217. package/lib/gc/gcSweepReadyUsageDetection.js.map +1 -0
  218. package/lib/gc/gcUnreferencedStateTracker.d.ts +34 -0
  219. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  220. package/lib/gc/gcUnreferencedStateTracker.js +90 -0
  221. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  222. package/lib/gc/index.d.ts +11 -0
  223. package/lib/gc/index.d.ts.map +1 -0
  224. package/lib/gc/index.js +11 -0
  225. package/lib/gc/index.js.map +1 -0
  226. package/lib/index.d.ts +2 -5
  227. package/lib/index.d.ts.map +1 -1
  228. package/lib/index.js +1 -4
  229. package/lib/index.js.map +1 -1
  230. package/lib/opLifecycle/batchManager.d.ts +2 -13
  231. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  232. package/lib/opLifecycle/batchManager.js +19 -41
  233. package/lib/opLifecycle/batchManager.js.map +1 -1
  234. package/lib/opLifecycle/definitions.d.ts +4 -0
  235. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  236. package/lib/opLifecycle/definitions.js.map +1 -1
  237. package/lib/opLifecycle/index.d.ts.map +1 -1
  238. package/lib/opLifecycle/index.js.map +1 -1
  239. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  240. package/lib/opLifecycle/opCompressor.js +1 -0
  241. package/lib/opLifecycle/opCompressor.js.map +1 -1
  242. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  243. package/lib/opLifecycle/opDecompressor.js +5 -2
  244. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  245. package/lib/opLifecycle/opSplitter.d.ts +1 -1
  246. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  247. package/lib/opLifecycle/opSplitter.js +25 -14
  248. package/lib/opLifecycle/opSplitter.js.map +1 -1
  249. package/lib/opLifecycle/outbox.d.ts +19 -3
  250. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  251. package/lib/opLifecycle/outbox.js +79 -46
  252. package/lib/opLifecycle/outbox.js.map +1 -1
  253. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  254. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  255. package/lib/opProperties.d.ts.map +1 -1
  256. package/lib/opProperties.js +1 -3
  257. package/lib/opProperties.js.map +1 -1
  258. package/lib/packageVersion.d.ts +1 -1
  259. package/lib/packageVersion.js +1 -1
  260. package/lib/packageVersion.js.map +1 -1
  261. package/lib/pendingStateManager.d.ts +8 -2
  262. package/lib/pendingStateManager.d.ts.map +1 -1
  263. package/lib/pendingStateManager.js +21 -13
  264. package/lib/pendingStateManager.js.map +1 -1
  265. package/lib/scheduleManager.d.ts.map +1 -1
  266. package/lib/scheduleManager.js +3 -2
  267. package/lib/scheduleManager.js.map +1 -1
  268. package/lib/serializedSnapshotStorage.d.ts +2 -2
  269. package/lib/serializedSnapshotStorage.d.ts.map +1 -1
  270. package/lib/serializedSnapshotStorage.js +5 -3
  271. package/lib/serializedSnapshotStorage.js.map +1 -1
  272. package/lib/summary/index.d.ts +17 -0
  273. package/lib/summary/index.d.ts.map +1 -0
  274. package/lib/summary/index.js +16 -0
  275. package/lib/summary/index.js.map +1 -0
  276. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  277. package/lib/{orderedClientElection.js → summary/orderedClientElection.js} +10 -4
  278. package/lib/summary/orderedClientElection.js.map +1 -0
  279. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  280. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  281. package/{dist → lib/summary}/runningSummarizer.d.ts +19 -18
  282. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  283. package/lib/{runningSummarizer.js → summary/runningSummarizer.js} +193 -78
  284. package/lib/summary/runningSummarizer.js.map +1 -0
  285. package/lib/{summarizer.d.ts → summary/summarizer.d.ts} +4 -6
  286. package/lib/summary/summarizer.d.ts.map +1 -0
  287. package/lib/{summarizer.js → summary/summarizer.js} +33 -73
  288. package/lib/summary/summarizer.js.map +1 -0
  289. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  290. package/lib/summary/summarizerClientElection.js.map +1 -0
  291. package/lib/summary/summarizerHandle.d.ts.map +1 -0
  292. package/lib/summary/summarizerHandle.js.map +1 -0
  293. package/{dist → lib/summary}/summarizerHeuristics.d.ts +1 -1
  294. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  295. package/lib/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +6 -9
  296. package/lib/summary/summarizerHeuristics.js.map +1 -0
  297. package/{dist → lib/summary}/summarizerTypes.d.ts +22 -22
  298. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  299. package/lib/summary/summarizerTypes.js.map +1 -0
  300. package/lib/summary/summaryCollection.d.ts.map +1 -0
  301. package/lib/{summaryCollection.js → summary/summaryCollection.js} +18 -8
  302. package/lib/summary/summaryCollection.js.map +1 -0
  303. package/{dist → lib/summary}/summaryFormat.d.ts +1 -40
  304. package/lib/summary/summaryFormat.d.ts.map +1 -0
  305. package/lib/{summaryFormat.js → summary/summaryFormat.js} +20 -20
  306. package/lib/summary/summaryFormat.js.map +1 -0
  307. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  308. package/lib/{summaryGenerator.js → summary/summaryGenerator.js} +33 -15
  309. package/lib/summary/summaryGenerator.js.map +1 -0
  310. package/lib/{summaryManager.d.ts → summary/summaryManager.d.ts} +1 -1
  311. package/lib/summary/summaryManager.d.ts.map +1 -0
  312. package/lib/{summaryManager.js → summary/summaryManager.js} +21 -9
  313. package/lib/summary/summaryManager.js.map +1 -0
  314. package/lib/throttler.d.ts +2 -2
  315. package/lib/throttler.d.ts.map +1 -1
  316. package/lib/throttler.js +4 -4
  317. package/lib/throttler.js.map +1 -1
  318. package/package.json +60 -51
  319. package/prettier.config.cjs +1 -1
  320. package/src/batchTracker.ts +54 -49
  321. package/src/blobManager.ts +825 -674
  322. package/src/connectionTelemetry.ts +280 -249
  323. package/src/containerHandleContext.ts +27 -29
  324. package/src/containerRuntime.ts +3249 -2978
  325. package/src/dataStore.ts +172 -159
  326. package/src/dataStoreContext.ts +1141 -1057
  327. package/src/dataStoreContexts.ts +178 -161
  328. package/src/dataStoreRegistry.ts +25 -20
  329. package/src/dataStores.ts +880 -731
  330. package/src/deltaScheduler.ts +158 -150
  331. package/{garbageCollection.md → src/gc/garbageCollection.md} +16 -3
  332. package/src/gc/garbageCollection.ts +1506 -0
  333. package/src/gc/gcDefinitions.ts +244 -0
  334. package/src/gc/gcHelpers.ts +86 -0
  335. package/src/gc/gcSummaryStateTracker.ts +339 -0
  336. package/src/gc/gcSweepReadyUsageDetection.ts +145 -0
  337. package/src/gc/gcUnreferencedStateTracker.ts +114 -0
  338. package/src/gc/index.ts +40 -0
  339. package/src/index.ts +67 -70
  340. package/src/opLifecycle/README.md +152 -0
  341. package/src/opLifecycle/batchManager.ts +101 -144
  342. package/src/opLifecycle/definitions.ts +33 -29
  343. package/src/opLifecycle/index.ts +5 -5
  344. package/src/opLifecycle/opCompressor.ts +55 -53
  345. package/src/opLifecycle/opDecompressor.ts +100 -81
  346. package/src/opLifecycle/opSplitter.ts +233 -188
  347. package/src/opLifecycle/outbox.ts +251 -195
  348. package/src/opLifecycle/remoteMessageProcessor.ts +62 -62
  349. package/src/opProperties.ts +11 -9
  350. package/src/packageVersion.ts +1 -1
  351. package/src/pendingStateManager.ts +396 -338
  352. package/src/scheduleManager.ts +299 -269
  353. package/src/serializedSnapshotStorage.ts +126 -112
  354. package/src/summary/index.ts +99 -0
  355. package/src/summary/orderedClientElection.ts +564 -0
  356. package/src/summary/runWhileConnectedCoordinator.ts +113 -0
  357. package/src/summary/runningSummarizer.ts +788 -0
  358. package/src/summary/summarizer.ts +386 -0
  359. package/src/summary/summarizerClientElection.ts +139 -0
  360. package/src/{summarizerHandle.ts → summary/summarizerHandle.ts} +11 -9
  361. package/src/summary/summarizerHeuristics.ts +219 -0
  362. package/src/summary/summarizerTypes.ts +521 -0
  363. package/src/summary/summaryCollection.ts +450 -0
  364. package/src/summary/summaryFormat.ts +226 -0
  365. package/src/summary/summaryGenerator.ts +505 -0
  366. package/src/summary/summaryManager.ts +423 -0
  367. package/src/throttler.ts +131 -122
  368. package/tsconfig.esnext.json +6 -6
  369. package/tsconfig.json +9 -13
  370. package/dist/garbageCollection.d.ts.map +0 -1
  371. package/dist/garbageCollection.js.map +0 -1
  372. package/dist/garbageCollectionConstants.d.ts +0 -25
  373. package/dist/garbageCollectionConstants.d.ts.map +0 -1
  374. package/dist/garbageCollectionConstants.js.map +0 -1
  375. package/dist/garbageCollectionTombstoneUtils.d.ts +0 -14
  376. package/dist/garbageCollectionTombstoneUtils.d.ts.map +0 -1
  377. package/dist/garbageCollectionTombstoneUtils.js +0 -23
  378. package/dist/garbageCollectionTombstoneUtils.js.map +0 -1
  379. package/dist/gcSweepReadyUsageDetection.d.ts.map +0 -1
  380. package/dist/gcSweepReadyUsageDetection.js.map +0 -1
  381. package/dist/orderedClientElection.d.ts.map +0 -1
  382. package/dist/orderedClientElection.js.map +0 -1
  383. package/dist/runWhileConnectedCoordinator.d.ts.map +0 -1
  384. package/dist/runWhileConnectedCoordinator.js.map +0 -1
  385. package/dist/runningSummarizer.d.ts.map +0 -1
  386. package/dist/runningSummarizer.js.map +0 -1
  387. package/dist/summarizer.d.ts.map +0 -1
  388. package/dist/summarizer.js.map +0 -1
  389. package/dist/summarizerClientElection.d.ts.map +0 -1
  390. package/dist/summarizerClientElection.js.map +0 -1
  391. package/dist/summarizerHandle.d.ts.map +0 -1
  392. package/dist/summarizerHandle.js.map +0 -1
  393. package/dist/summarizerHeuristics.d.ts.map +0 -1
  394. package/dist/summarizerHeuristics.js.map +0 -1
  395. package/dist/summarizerTypes.d.ts.map +0 -1
  396. package/dist/summarizerTypes.js.map +0 -1
  397. package/dist/summaryCollection.d.ts.map +0 -1
  398. package/dist/summaryCollection.js.map +0 -1
  399. package/dist/summaryFormat.d.ts.map +0 -1
  400. package/dist/summaryFormat.js.map +0 -1
  401. package/dist/summaryGenerator.d.ts.map +0 -1
  402. package/dist/summaryGenerator.js.map +0 -1
  403. package/dist/summaryManager.d.ts.map +0 -1
  404. package/dist/summaryManager.js.map +0 -1
  405. package/lib/garbageCollection.d.ts.map +0 -1
  406. package/lib/garbageCollection.js.map +0 -1
  407. package/lib/garbageCollectionConstants.d.ts +0 -25
  408. package/lib/garbageCollectionConstants.d.ts.map +0 -1
  409. package/lib/garbageCollectionConstants.js.map +0 -1
  410. package/lib/garbageCollectionTombstoneUtils.d.ts +0 -14
  411. package/lib/garbageCollectionTombstoneUtils.d.ts.map +0 -1
  412. package/lib/garbageCollectionTombstoneUtils.js +0 -19
  413. package/lib/garbageCollectionTombstoneUtils.js.map +0 -1
  414. package/lib/gcSweepReadyUsageDetection.d.ts.map +0 -1
  415. package/lib/gcSweepReadyUsageDetection.js.map +0 -1
  416. package/lib/orderedClientElection.d.ts.map +0 -1
  417. package/lib/orderedClientElection.js.map +0 -1
  418. package/lib/runWhileConnectedCoordinator.d.ts.map +0 -1
  419. package/lib/runWhileConnectedCoordinator.js.map +0 -1
  420. package/lib/runningSummarizer.d.ts.map +0 -1
  421. package/lib/runningSummarizer.js.map +0 -1
  422. package/lib/summarizer.d.ts.map +0 -1
  423. package/lib/summarizer.js.map +0 -1
  424. package/lib/summarizerClientElection.d.ts.map +0 -1
  425. package/lib/summarizerClientElection.js.map +0 -1
  426. package/lib/summarizerHandle.d.ts.map +0 -1
  427. package/lib/summarizerHandle.js.map +0 -1
  428. package/lib/summarizerHeuristics.d.ts.map +0 -1
  429. package/lib/summarizerHeuristics.js.map +0 -1
  430. package/lib/summarizerTypes.d.ts.map +0 -1
  431. package/lib/summarizerTypes.js.map +0 -1
  432. package/lib/summaryCollection.d.ts.map +0 -1
  433. package/lib/summaryCollection.js.map +0 -1
  434. package/lib/summaryFormat.d.ts.map +0 -1
  435. package/lib/summaryFormat.js.map +0 -1
  436. package/lib/summaryGenerator.d.ts.map +0 -1
  437. package/lib/summaryGenerator.js.map +0 -1
  438. package/lib/summaryManager.d.ts.map +0 -1
  439. package/lib/summaryManager.js.map +0 -1
  440. package/src/garbageCollection.ts +0 -1800
  441. package/src/garbageCollectionConstants.ts +0 -41
  442. package/src/garbageCollectionTombstoneUtils.ts +0 -28
  443. package/src/gcSweepReadyUsageDetection.ts +0 -139
  444. package/src/orderedClientElection.ts +0 -532
  445. package/src/runWhileConnectedCoordinator.ts +0 -106
  446. package/src/runningSummarizer.ts +0 -610
  447. package/src/summarizer.ts +0 -421
  448. package/src/summarizerClientElection.ts +0 -132
  449. package/src/summarizerHeuristics.ts +0 -222
  450. package/src/summarizerTypes.ts +0 -507
  451. package/src/summaryCollection.ts +0 -421
  452. package/src/summaryFormat.ts +0 -256
  453. package/src/summaryGenerator.ts +0 -450
  454. package/src/summaryManager.ts +0 -394
  455. /package/dist/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
  456. /package/dist/{runWhileConnectedCoordinator.d.ts → summary/runWhileConnectedCoordinator.d.ts} +0 -0
  457. /package/dist/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +0 -0
  458. /package/dist/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +0 -0
  459. /package/dist/{summarizerClientElection.js → summary/summarizerClientElection.js} +0 -0
  460. /package/dist/{summarizerHandle.d.ts → summary/summarizerHandle.d.ts} +0 -0
  461. /package/dist/{summarizerHandle.js → summary/summarizerHandle.js} +0 -0
  462. /package/dist/{summarizerTypes.js → summary/summarizerTypes.js} +0 -0
  463. /package/dist/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
  464. /package/dist/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +0 -0
  465. /package/lib/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
  466. /package/lib/{runWhileConnectedCoordinator.d.ts → summary/runWhileConnectedCoordinator.d.ts} +0 -0
  467. /package/lib/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +0 -0
  468. /package/lib/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +0 -0
  469. /package/lib/{summarizerClientElection.js → summary/summarizerClientElection.js} +0 -0
  470. /package/lib/{summarizerHandle.d.ts → summary/summarizerHandle.d.ts} +0 -0
  471. /package/lib/{summarizerHandle.js → summary/summarizerHandle.js} +0 -0
  472. /package/lib/{summarizerTypes.js → summary/summarizerTypes.js} +0 -0
  473. /package/lib/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
  474. /package/lib/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +0 -0
@@ -3,161 +3,118 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLogger } from "@fluidframework/common-definitions";
7
- import { UsageError } from "@fluidframework/driver-utils";
8
- import { ChildLogger } from "@fluidframework/telemetry-utils";
9
6
  import { ICompressionRuntimeOptions } from "../containerRuntime";
10
7
  import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
11
8
 
12
9
  export interface IBatchManagerOptions {
13
- readonly enableOpReentryCheck?: boolean;
14
- readonly hardLimit: number;
15
- readonly softLimit?: number;
16
- readonly compressionOptions?: ICompressionRuntimeOptions;
10
+ readonly hardLimit: number;
11
+ readonly softLimit?: number;
12
+ readonly compressionOptions?: ICompressionRuntimeOptions;
17
13
  }
18
14
 
19
15
  /**
20
16
  * Helper class that manages partial batch & rollback.
21
17
  */
22
18
  export class BatchManager {
23
- private readonly logger;
24
- private pendingBatch: BatchMessage[] = [];
25
- private batchContentSize = 0;
26
- /**
27
- * Track the number of ops which were detected to have a mismatched
28
- * reference sequence number, in order to self-throttle the telemetry events.
29
- *
30
- * This should be removed as part of ADO:2322
31
- */
32
- private readonly maxMismatchedOpsToReport = 5;
33
- private mismatchedOpsReported = 0;
34
-
35
-
36
- public get length() { return this.pendingBatch.length; }
37
- public get contentSizeInBytes() { return this.batchContentSize; }
38
-
39
- constructor(
40
- public readonly options: IBatchManagerOptions,
41
- logger: ITelemetryLogger,
42
- ) {
43
- this.logger = ChildLogger.create(logger, "BatchManager");
44
- }
45
-
46
- public push(message: BatchMessage): boolean {
47
- this.checkReferenceSequenceNumber(message);
48
-
49
- const contentSize = this.batchContentSize + (message.contents?.length ?? 0);
50
- const opCount = this.pendingBatch.length;
51
-
52
- // Attempt to estimate batch size, aka socket message size.
53
- // Each op has pretty large envelope, estimating to be 200 bytes.
54
- // Also content will be strigified, and that adds a lot of overhead due to a lot of escape characters.
55
- // Not taking it into account, as compression work should help there - compressed payload will be
56
- // initially stored as base64, and that requires only 2 extra escape characters.
57
- const socketMessageSize = contentSize + 200 * opCount;
58
-
59
- // If we were provided soft limit, check for exceeding it.
60
- // But only if we have any ops, as the intention here is to flush existing ops (on exceeding this limit)
61
- // and start over. That's not an option if we have no ops.
62
- // If compression is enabled, the soft and hard limit are ignored and the message will be pushed anyways.
63
- // Cases where the message is still too large will be handled by the maxConsecutiveReconnects path.
64
- if (this.options.softLimit !== undefined
65
- && this.length > 0
66
- && socketMessageSize >= this.options.softLimit) {
67
- return false;
68
- }
69
-
70
- if (socketMessageSize >= this.options.hardLimit) {
71
- return false;
72
- }
73
-
74
- this.batchContentSize = contentSize;
75
- this.pendingBatch.push(message);
76
- return true;
77
- }
78
-
79
- public get empty() { return this.pendingBatch.length === 0; }
80
-
81
- public popBatch(): IBatch {
82
- const batch: IBatch = {
83
- content: this.pendingBatch,
84
- contentSizeInBytes: this.batchContentSize,
85
- };
86
-
87
- this.pendingBatch = [];
88
- this.batchContentSize = 0;
89
-
90
- return addBatchMetadata(batch);
91
- }
92
-
93
- /**
94
- * Capture the pending state at this point
95
- */
96
- public checkpoint(): IBatchCheckpoint {
97
- const startPoint = this.pendingBatch.length;
98
- return {
99
- rollback: (process: (message: BatchMessage) => void) => {
100
- for (let i = this.pendingBatch.length; i > startPoint;) {
101
- i--;
102
- const message = this.pendingBatch[i];
103
- this.batchContentSize -= message.contents?.length ?? 0;
104
- process(message);
105
- }
106
-
107
- this.pendingBatch.length = startPoint;
108
- },
109
- };
110
- }
111
-
112
- private checkReferenceSequenceNumber(message: BatchMessage) {
113
- if (this.pendingBatch.length === 0 || message.referenceSequenceNumber === this.pendingBatch[0].referenceSequenceNumber) {
114
- // The reference sequence numbers are stable
115
- return;
116
- }
117
-
118
- const telemetryProperties = {
119
- referenceSequenceNumber: this.pendingBatch[0].referenceSequenceNumber,
120
- messageReferenceSequenceNumber: message.referenceSequenceNumber,
121
- type: message.deserializedContent.type,
122
- length: this.pendingBatch.length,
123
- enableOpReentryCheck: this.options.enableOpReentryCheck === true,
124
- };
125
- const error = new UsageError("Submission of an out of order message");
126
- const eventName = "ReferenceSequenceNumberMismatch";
127
-
128
- if (this.options.enableOpReentryCheck === true) {
129
- this.logger.sendErrorEvent(
130
- { eventName, ...telemetryProperties },
131
- error,
132
- );
133
- throw error;
134
- }
135
-
136
- if (++this.mismatchedOpsReported <= this.maxMismatchedOpsToReport) {
137
- this.logger.sendErrorEvent(
138
- {
139
- eventName,
140
- ...telemetryProperties,
141
- ops: this.mismatchedOpsReported,
142
- maxOps: this.maxMismatchedOpsToReport,
143
- },
144
- error,
145
- );
146
- }
147
- }
19
+ private pendingBatch: BatchMessage[] = [];
20
+ private batchContentSize = 0;
21
+
22
+ public get length() {
23
+ return this.pendingBatch.length;
24
+ }
25
+ public get contentSizeInBytes() {
26
+ return this.batchContentSize;
27
+ }
28
+
29
+ public get referenceSequenceNumber(): number | undefined {
30
+ return this.pendingBatch.length === 0
31
+ ? undefined
32
+ : this.pendingBatch[this.pendingBatch.length - 1].referenceSequenceNumber;
33
+ }
34
+
35
+ constructor(public readonly options: IBatchManagerOptions) {}
36
+
37
+ public push(message: BatchMessage): boolean {
38
+ const contentSize = this.batchContentSize + (message.contents?.length ?? 0);
39
+ const opCount = this.pendingBatch.length;
40
+
41
+ // Attempt to estimate batch size, aka socket message size.
42
+ // Each op has pretty large envelope, estimating to be 200 bytes.
43
+ // Also content will be strigified, and that adds a lot of overhead due to a lot of escape characters.
44
+ // Not taking it into account, as compression work should help there - compressed payload will be
45
+ // initially stored as base64, and that requires only 2 extra escape characters.
46
+ const socketMessageSize = contentSize + 200 * opCount;
47
+
48
+ // If we were provided soft limit, check for exceeding it.
49
+ // But only if we have any ops, as the intention here is to flush existing ops (on exceeding this limit)
50
+ // and start over. That's not an option if we have no ops.
51
+ // If compression is enabled, the soft and hard limit are ignored and the message will be pushed anyways.
52
+ // Cases where the message is still too large will be handled by the maxConsecutiveReconnects path.
53
+ if (
54
+ this.options.softLimit !== undefined &&
55
+ this.length > 0 &&
56
+ socketMessageSize >= this.options.softLimit
57
+ ) {
58
+ return false;
59
+ }
60
+
61
+ if (socketMessageSize >= this.options.hardLimit) {
62
+ return false;
63
+ }
64
+
65
+ this.batchContentSize = contentSize;
66
+ this.pendingBatch.push(message);
67
+ return true;
68
+ }
69
+
70
+ public get empty() {
71
+ return this.pendingBatch.length === 0;
72
+ }
73
+
74
+ public popBatch(): IBatch {
75
+ const batch: IBatch = {
76
+ content: this.pendingBatch,
77
+ contentSizeInBytes: this.batchContentSize,
78
+ referenceSequenceNumber: this.referenceSequenceNumber,
79
+ };
80
+
81
+ this.pendingBatch = [];
82
+ this.batchContentSize = 0;
83
+
84
+ return addBatchMetadata(batch);
85
+ }
86
+
87
+ /**
88
+ * Capture the pending state at this point
89
+ */
90
+ public checkpoint(): IBatchCheckpoint {
91
+ const startPoint = this.pendingBatch.length;
92
+ return {
93
+ rollback: (process: (message: BatchMessage) => void) => {
94
+ for (let i = this.pendingBatch.length; i > startPoint; ) {
95
+ i--;
96
+ const message = this.pendingBatch[i];
97
+ this.batchContentSize -= message.contents?.length ?? 0;
98
+ process(message);
99
+ }
100
+
101
+ this.pendingBatch.length = startPoint;
102
+ },
103
+ };
104
+ }
148
105
  }
149
106
 
150
107
  const addBatchMetadata = (batch: IBatch): IBatch => {
151
- if (batch.content.length > 1) {
152
- batch.content[0].metadata = {
153
- ...batch.content[0].metadata,
154
- batch: true
155
- };
156
- batch.content[batch.content.length - 1].metadata = {
157
- ...batch.content[batch.content.length - 1].metadata,
158
- batch: false
159
- };
160
- }
161
-
162
- return batch;
108
+ if (batch.content.length > 1) {
109
+ batch.content[0].metadata = {
110
+ ...batch.content[0].metadata,
111
+ batch: true,
112
+ };
113
+ batch.content[batch.content.length - 1].metadata = {
114
+ ...batch.content[batch.content.length - 1].metadata,
115
+ batch: false,
116
+ };
117
+ }
118
+
119
+ return batch;
163
120
  };
@@ -11,38 +11,42 @@ import { CompressionAlgorithms, ContainerMessageType, ContainerRuntimeMessage }
11
11
  * Batch message type used internally by the runtime
12
12
  */
13
13
  export type BatchMessage = IBatchMessage & {
14
- localOpMetadata: unknown;
15
- deserializedContent: ContainerRuntimeMessage;
16
- referenceSequenceNumber: number;
17
- compression?: CompressionAlgorithms;
14
+ localOpMetadata: unknown;
15
+ deserializedContent: ContainerRuntimeMessage;
16
+ referenceSequenceNumber: number;
17
+ compression?: CompressionAlgorithms;
18
18
  };
19
19
 
20
20
  /**
21
21
  * Batch interface used internally by the runtime.
22
22
  */
23
23
  export interface IBatch {
24
- /**
25
- * Sum of the in-memory content sizes of all messages in the batch.
26
- * If the batch is compressed, this number reflects the post-compression size.
27
- */
28
- readonly contentSizeInBytes: number;
29
- /**
30
- * All the messages in the batch
31
- */
32
- readonly content: BatchMessage[];
24
+ /**
25
+ * Sum of the in-memory content sizes of all messages in the batch.
26
+ * If the batch is compressed, this number reflects the post-compression size.
27
+ */
28
+ readonly contentSizeInBytes: number;
29
+ /**
30
+ * All the messages in the batch
31
+ */
32
+ readonly content: BatchMessage[];
33
+ /**
34
+ * The reference sequence number for the batch
35
+ */
36
+ readonly referenceSequenceNumber: number | undefined;
33
37
  }
34
38
 
35
39
  export interface IBatchCheckpoint {
36
- rollback: (action: (message: BatchMessage) => void) => void;
40
+ rollback: (action: (message: BatchMessage) => void) => void;
37
41
  }
38
42
 
39
43
  export interface IChunkedOp {
40
- chunkId: number;
41
- totalChunks: number;
42
- contents: string;
43
- originalType: MessageType | ContainerMessageType;
44
- originalMetadata?: Record<string, unknown>;
45
- originalCompression?: string;
44
+ chunkId: number;
45
+ totalChunks: number;
46
+ contents: string;
47
+ originalType: MessageType | ContainerMessageType;
48
+ originalMetadata?: Record<string, unknown>;
49
+ originalCompression?: string;
46
50
  }
47
51
 
48
52
  /**
@@ -58,13 +62,13 @@ export type ProcessingState = "Processed" | "Skipped" | "Accepted";
58
62
  * Return type for functions which process remote messages
59
63
  */
60
64
  export interface IMessageProcessingResult {
61
- /**
62
- * A shallow copy of the input message if processing happened, or
63
- * the original message otherwise
64
- */
65
- readonly message: ISequencedDocumentMessage;
66
- /**
67
- * Processing result of the input message.
68
- */
69
- readonly state: ProcessingState;
65
+ /**
66
+ * A shallow copy of the input message if processing happened, or
67
+ * the original message otherwise
68
+ */
69
+ readonly message: ISequencedDocumentMessage;
70
+ /**
71
+ * Processing result of the input message.
72
+ */
73
+ readonly state: ProcessingState;
70
74
  }
@@ -5,11 +5,11 @@
5
5
 
6
6
  export { BatchManager } from "./batchManager";
7
7
  export {
8
- BatchMessage,
9
- IBatch,
10
- IBatchCheckpoint,
11
- IChunkedOp,
12
- IMessageProcessingResult,
8
+ BatchMessage,
9
+ IBatch,
10
+ IBatchCheckpoint,
11
+ IChunkedOp,
12
+ IMessageProcessingResult,
13
13
  } from "./definitions";
14
14
  export { Outbox } from "./outbox";
15
15
  export { OpCompressor } from "./opCompressor";
@@ -17,65 +17,67 @@ import { IBatch, BatchMessage } from "./definitions";
17
17
  * op to reserve sequence numbers.
18
18
  */
19
19
  export class OpCompressor {
20
- private readonly logger;
20
+ private readonly logger;
21
21
 
22
- constructor(logger: ITelemetryLogger) {
23
- this.logger = ChildLogger.create(logger, "OpCompressor");
24
- }
22
+ constructor(logger: ITelemetryLogger) {
23
+ this.logger = ChildLogger.create(logger, "OpCompressor");
24
+ }
25
25
 
26
- public compressBatch(batch: IBatch): IBatch {
27
- const compressionStart = Date.now();
28
- const contentsAsBuffer = new TextEncoder().encode(this.serializeBatch(batch));
29
- const compressedContents = compress(contentsAsBuffer);
30
- const compressedContent = IsoBuffer.from(compressedContents).toString("base64");
31
- const duration = Date.now() - compressionStart;
26
+ public compressBatch(batch: IBatch): IBatch {
27
+ const compressionStart = Date.now();
28
+ const contentsAsBuffer = new TextEncoder().encode(this.serializeBatch(batch));
29
+ const compressedContents = compress(contentsAsBuffer);
30
+ const compressedContent = IsoBuffer.from(compressedContents).toString("base64");
31
+ const duration = Date.now() - compressionStart;
32
32
 
33
- if (batch.contentSizeInBytes > 200000) {
34
- this.logger.sendPerformanceEvent({
35
- eventName: "CompressedBatch",
36
- duration,
37
- sizeBeforeCompression: batch.contentSizeInBytes,
38
- sizeAfterCompression: compressedContent.length,
39
- });
40
- }
33
+ if (batch.contentSizeInBytes > 200000) {
34
+ this.logger.sendPerformanceEvent({
35
+ eventName: "CompressedBatch",
36
+ duration,
37
+ sizeBeforeCompression: batch.contentSizeInBytes,
38
+ sizeAfterCompression: compressedContent.length,
39
+ });
40
+ }
41
41
 
42
- const messages: BatchMessage[] = [];
43
- messages.push({
44
- ...batch.content[0], contents: JSON.stringify({ packedContents: compressedContent }),
45
- metadata: batch.content[0].metadata,
46
- compression: CompressionAlgorithms.lz4,
47
- });
42
+ const messages: BatchMessage[] = [];
43
+ messages.push({
44
+ ...batch.content[0],
45
+ contents: JSON.stringify({ packedContents: compressedContent }),
46
+ metadata: batch.content[0].metadata,
47
+ compression: CompressionAlgorithms.lz4,
48
+ });
48
49
 
49
- for (const message of batch.content.slice(1)) {
50
- messages.push({ ...message, contents: undefined });
51
- }
50
+ for (const message of batch.content.slice(1)) {
51
+ messages.push({ ...message, contents: undefined });
52
+ }
52
53
 
53
- return {
54
- contentSizeInBytes: compressedContent.length,
55
- content: messages,
56
- };
57
- }
54
+ return {
55
+ contentSizeInBytes: compressedContent.length,
56
+ content: messages,
57
+ referenceSequenceNumber: batch.referenceSequenceNumber,
58
+ };
59
+ }
58
60
 
59
- private serializeBatch(batch: IBatch): string {
60
- try {
61
- return JSON.stringify(batch.content.map((message) => message.deserializedContent))
62
- } catch (e: any) {
63
- if (e.message === "Invalid string length") {
64
- // This is how JSON.stringify signals that
65
- // the content size exceeds its capacity
66
- const error = new UsageError("Payload too large");
67
- this.logger.sendErrorEvent(
68
- {
69
- eventName: "BatchTooLarge",
70
- size: batch.contentSizeInBytes,
71
- length: batch.content.length,
72
- },
73
- error,
74
- );
75
- throw error;
76
- }
61
+ private serializeBatch(batch: IBatch): string {
62
+ try {
63
+ return JSON.stringify(batch.content.map((message) => message.deserializedContent));
64
+ } catch (e: any) {
65
+ if (e.message === "Invalid string length") {
66
+ // This is how JSON.stringify signals that
67
+ // the content size exceeds its capacity
68
+ const error = new UsageError("Payload too large");
69
+ this.logger.sendErrorEvent(
70
+ {
71
+ eventName: "BatchTooLarge",
72
+ size: batch.contentSizeInBytes,
73
+ length: batch.content.length,
74
+ },
75
+ error,
76
+ );
77
+ throw error;
78
+ }
77
79
 
78
- throw e;
79
- }
80
- }
80
+ throw e;
81
+ }
82
+ }
81
83
  }