@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,169 +3,186 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IDisposable, ITelemetryBaseLogger, ITelemetryLogger } from "@fluidframework/common-definitions";
6
+ import {
7
+ IDisposable,
8
+ ITelemetryBaseLogger,
9
+ ITelemetryLogger,
10
+ } from "@fluidframework/common-definitions";
7
11
  import { assert, Deferred, Lazy } from "@fluidframework/common-utils";
8
12
  import { ChildLogger } from "@fluidframework/telemetry-utils";
9
13
  import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext";
10
14
 
11
- export class DataStoreContexts implements Iterable<[string, FluidDataStoreContext]>, IDisposable {
12
- private readonly notBoundContexts = new Set<string>();
13
-
14
- /** Attached and loaded context proxies */
15
- private readonly _contexts = new Map<string, FluidDataStoreContext>();
16
-
17
- /**
18
- * List of pending context waiting either to be bound or to arrive from another client.
19
- * This covers the case where a local context has been created but not yet bound,
20
- * or the case where a client knows a store will exist and is waiting on its creation,
21
- * so that a caller may await the deferred's promise until such a time as the context is fully ready.
22
- * This is a superset of _contexts, since contexts remain here once the Deferred resolves.
23
- */
24
- private readonly deferredContexts = new Map<string, Deferred<FluidDataStoreContext>>();
25
-
26
- private readonly disposeOnce = new Lazy<void>(() => {
27
- // close/stop all store contexts
28
- for (const [fluidDataStoreId, contextD] of this.deferredContexts) {
29
- contextD.promise.then((context) => {
30
- context.dispose();
31
- }).catch((contextError) => {
32
- this._logger.sendErrorEvent({
33
- eventName: "FluidDataStoreContextDisposeError",
34
- fluidDataStoreId,
35
- },
36
- contextError);
37
- });
38
- }
39
- });
40
-
41
- private readonly _logger: ITelemetryLogger;
42
-
43
- constructor(baseLogger: ITelemetryBaseLogger) {
44
- this._logger = ChildLogger.create(baseLogger);
45
- }
46
-
47
- [Symbol.iterator](): Iterator<[string, FluidDataStoreContext]> {
48
- return this._contexts.entries();
49
- }
50
-
51
- public get size(): number {
52
- return this._contexts.size;
53
- }
54
-
55
- public get disposed() { return this.disposeOnce.evaluated; }
56
- public readonly dispose = () => this.disposeOnce.value;
57
-
58
- public notBoundLength() {
59
- return this.notBoundContexts.size;
60
- }
61
-
62
- public isNotBound(id: string) {
63
- return this.notBoundContexts.has(id);
64
- }
65
-
66
- public has(id: string) {
67
- return this._contexts.has(id);
68
- }
69
-
70
- public get(id: string): FluidDataStoreContext | undefined {
71
- return this._contexts.get(id);
72
- }
73
-
74
- public delete(id: string): boolean {
75
- this.deferredContexts.delete(id);
76
- this.notBoundContexts.delete(id);
77
- return this._contexts.delete(id);
78
- }
79
-
80
- /**
81
- * Return the unbound local context with the given id,
82
- * or undefined if it's not found or not unbound.
83
- */
84
- public getUnbound(id: string): LocalFluidDataStoreContext | undefined {
85
- const context = this._contexts.get(id);
86
- if (context === undefined || !this.notBoundContexts.has(id)) {
87
- return undefined;
88
- }
89
-
90
- return context as LocalFluidDataStoreContext;
91
- }
92
-
93
- /**
94
- * Add the given context, marking it as to-be-bound
95
- */
96
- public addUnbound(context: LocalFluidDataStoreContext) {
97
- const id = context.id;
98
- assert(!this._contexts.has(id), 0x158 /* "Creating store with existing ID" */);
99
-
100
- this._contexts.set(id, context);
101
-
102
- this.notBoundContexts.add(id);
103
- this.ensureDeferred(id);
104
- }
105
-
106
- /**
107
- * Get the context with the given id, once it exists locally and is attached.
108
- * e.g. If created locally, it must be bound, or if created remotely then it's fine as soon as it's sync'd in.
109
- * @param id - The id of the context to get
110
- * @param wait - If false, return undefined if the context isn't present and ready now. Otherwise, wait for it.
111
- */
112
- public async getBoundOrRemoted(id: string, wait: boolean): Promise<FluidDataStoreContext | undefined> {
113
- const deferredContext = this.ensureDeferred(id);
114
-
115
- if (!wait && !deferredContext.isCompleted) {
116
- return undefined;
117
- }
118
-
119
- return deferredContext.promise;
120
- }
121
-
122
- private ensureDeferred(id: string): Deferred<FluidDataStoreContext> {
123
- const deferred = this.deferredContexts.get(id);
124
- if (deferred) { return deferred; }
125
-
126
- const newDeferred = new Deferred<FluidDataStoreContext>();
127
- this.deferredContexts.set(id, newDeferred);
128
- return newDeferred;
129
- }
130
-
131
- /**
132
- * Update this context as bound
133
- */
134
- public bind(id: string) {
135
- const removed: boolean = this.notBoundContexts.delete(id);
136
- assert(removed, 0x159 /* "The given id was not found in notBoundContexts to delete" */);
137
-
138
- this.resolveDeferred(id);
139
- }
140
-
141
- /**
142
- * Triggers the deferred to resolve, indicating the context is not local-only
143
- * @param id - The id of the context to resolve to
144
- */
145
- private resolveDeferred(id: string) {
146
- const context = this._contexts.get(id);
147
- assert(!!context, 0x15a /* "Cannot find context to resolve to" */);
148
- assert(!this.notBoundContexts.has(id),
149
- 0x15b /* "Expected this id to already be removed from notBoundContexts" */);
150
-
151
- const deferred = this.deferredContexts.get(id);
152
- assert(!!deferred, 0x15c /* "Cannot find deferred to resolve" */);
153
- deferred.resolve(context);
154
- }
155
-
156
- /**
157
- * Add the given context, marking it as not local-only.
158
- * This could be because it's a local context that's been bound, or because it's a remote context.
159
- * @param context - The context to add
160
- */
161
- public addBoundOrRemoted(context: FluidDataStoreContext) {
162
- const id = context.id;
163
- assert(!this._contexts.has(id), 0x15d /* "Creating store with existing ID" */);
164
-
165
- this._contexts.set(id, context);
166
-
167
- // Resolve the deferred immediately since this context is not unbound
168
- this.ensureDeferred(id);
169
- this.resolveDeferred(id);
170
- }
15
+ export class DataStoreContexts implements Iterable<[string, FluidDataStoreContext]>, IDisposable {
16
+ private readonly notBoundContexts = new Set<string>();
17
+
18
+ /** Attached and loaded context proxies */
19
+ private readonly _contexts = new Map<string, FluidDataStoreContext>();
20
+
21
+ /**
22
+ * List of pending context waiting either to be bound or to arrive from another client.
23
+ * This covers the case where a local context has been created but not yet bound,
24
+ * or the case where a client knows a store will exist and is waiting on its creation,
25
+ * so that a caller may await the deferred's promise until such a time as the context is fully ready.
26
+ * This is a superset of _contexts, since contexts remain here once the Deferred resolves.
27
+ */
28
+ private readonly deferredContexts = new Map<string, Deferred<FluidDataStoreContext>>();
29
+
30
+ private readonly disposeOnce = new Lazy<void>(() => {
31
+ // close/stop all store contexts
32
+ for (const [fluidDataStoreId, contextD] of this.deferredContexts) {
33
+ contextD.promise
34
+ .then((context) => {
35
+ context.dispose();
36
+ })
37
+ .catch((contextError) => {
38
+ this._logger.sendErrorEvent(
39
+ {
40
+ eventName: "FluidDataStoreContextDisposeError",
41
+ fluidDataStoreId,
42
+ },
43
+ contextError,
44
+ );
45
+ });
46
+ }
47
+ });
48
+
49
+ private readonly _logger: ITelemetryLogger;
50
+
51
+ constructor(baseLogger: ITelemetryBaseLogger) {
52
+ this._logger = ChildLogger.create(baseLogger);
53
+ }
54
+
55
+ [Symbol.iterator](): Iterator<[string, FluidDataStoreContext]> {
56
+ return this._contexts.entries();
57
+ }
58
+
59
+ public get size(): number {
60
+ return this._contexts.size;
61
+ }
62
+
63
+ public get disposed() {
64
+ return this.disposeOnce.evaluated;
65
+ }
66
+ public readonly dispose = () => this.disposeOnce.value;
67
+
68
+ public notBoundLength() {
69
+ return this.notBoundContexts.size;
70
+ }
71
+
72
+ public isNotBound(id: string) {
73
+ return this.notBoundContexts.has(id);
74
+ }
75
+
76
+ public has(id: string) {
77
+ return this._contexts.has(id);
78
+ }
79
+
80
+ public get(id: string): FluidDataStoreContext | undefined {
81
+ return this._contexts.get(id);
82
+ }
83
+
84
+ public delete(id: string): boolean {
85
+ this.deferredContexts.delete(id);
86
+ this.notBoundContexts.delete(id);
87
+ return this._contexts.delete(id);
88
+ }
89
+
90
+ /**
91
+ * Return the unbound local context with the given id,
92
+ * or undefined if it's not found or not unbound.
93
+ */
94
+ public getUnbound(id: string): LocalFluidDataStoreContext | undefined {
95
+ const context = this._contexts.get(id);
96
+ if (context === undefined || !this.notBoundContexts.has(id)) {
97
+ return undefined;
98
+ }
99
+
100
+ return context as LocalFluidDataStoreContext;
101
+ }
102
+
103
+ /**
104
+ * Add the given context, marking it as to-be-bound
105
+ */
106
+ public addUnbound(context: LocalFluidDataStoreContext) {
107
+ const id = context.id;
108
+ assert(!this._contexts.has(id), 0x158 /* "Creating store with existing ID" */);
109
+
110
+ this._contexts.set(id, context);
111
+
112
+ this.notBoundContexts.add(id);
113
+ this.ensureDeferred(id);
114
+ }
115
+
116
+ /**
117
+ * Get the context with the given id, once it exists locally and is attached.
118
+ * e.g. If created locally, it must be bound, or if created remotely then it's fine as soon as it's sync'd in.
119
+ * @param id - The id of the context to get
120
+ * @param wait - If false, return undefined if the context isn't present and ready now. Otherwise, wait for it.
121
+ */
122
+ public async getBoundOrRemoted(
123
+ id: string,
124
+ wait: boolean,
125
+ ): Promise<FluidDataStoreContext | undefined> {
126
+ const deferredContext = this.ensureDeferred(id);
127
+
128
+ if (!wait && !deferredContext.isCompleted) {
129
+ return undefined;
130
+ }
131
+
132
+ return deferredContext.promise;
133
+ }
134
+
135
+ private ensureDeferred(id: string): Deferred<FluidDataStoreContext> {
136
+ const deferred = this.deferredContexts.get(id);
137
+ if (deferred) {
138
+ return deferred;
139
+ }
140
+
141
+ const newDeferred = new Deferred<FluidDataStoreContext>();
142
+ this.deferredContexts.set(id, newDeferred);
143
+ return newDeferred;
144
+ }
145
+
146
+ /**
147
+ * Update this context as bound
148
+ */
149
+ public bind(id: string) {
150
+ const removed: boolean = this.notBoundContexts.delete(id);
151
+ assert(removed, 0x159 /* "The given id was not found in notBoundContexts to delete" */);
152
+
153
+ this.resolveDeferred(id);
154
+ }
155
+
156
+ /**
157
+ * Triggers the deferred to resolve, indicating the context is not local-only
158
+ * @param id - The id of the context to resolve to
159
+ */
160
+ private resolveDeferred(id: string) {
161
+ const context = this._contexts.get(id);
162
+ assert(!!context, 0x15a /* "Cannot find context to resolve to" */);
163
+ assert(
164
+ !this.notBoundContexts.has(id),
165
+ 0x15b /* "Expected this id to already be removed from notBoundContexts" */,
166
+ );
167
+
168
+ const deferred = this.deferredContexts.get(id);
169
+ assert(!!deferred, 0x15c /* "Cannot find deferred to resolve" */);
170
+ deferred.resolve(context);
171
+ }
172
+
173
+ /**
174
+ * Add the given context, marking it as not local-only.
175
+ * This could be because it's a local context that's been bound, or because it's a remote context.
176
+ * @param context - The context to add
177
+ */
178
+ public addBoundOrRemoted(context: FluidDataStoreContext) {
179
+ const id = context.id;
180
+ assert(!this._contexts.has(id), 0x15d /* "Creating store with existing ID" */);
181
+
182
+ this._contexts.set(id, context);
183
+
184
+ // Resolve the deferred immediately since this context is not unbound
185
+ this.ensureDeferred(id);
186
+ this.resolveDeferred(id);
187
+ }
171
188
  }
@@ -4,31 +4,36 @@
4
4
  */
5
5
  import { UsageError } from "@fluidframework/container-utils";
6
6
  import {
7
- FluidDataStoreRegistryEntry,
8
- IFluidDataStoreRegistry,
9
- NamedFluidDataStoreRegistryEntries,
7
+ FluidDataStoreRegistryEntry,
8
+ IFluidDataStoreRegistry,
9
+ NamedFluidDataStoreRegistryEntries,
10
10
  } from "@fluidframework/runtime-definitions";
11
11
 
12
12
  export class FluidDataStoreRegistry implements IFluidDataStoreRegistry {
13
- private readonly map: Map<string, FluidDataStoreRegistryEntry | Promise<FluidDataStoreRegistryEntry>>;
13
+ private readonly map: Map<
14
+ string,
15
+ FluidDataStoreRegistryEntry | Promise<FluidDataStoreRegistryEntry>
16
+ >;
14
17
 
15
- public get IFluidDataStoreRegistry() { return this; }
18
+ public get IFluidDataStoreRegistry() {
19
+ return this;
20
+ }
16
21
 
17
- constructor(namedEntries: NamedFluidDataStoreRegistryEntries) {
18
- this.map = new Map();
19
- for (const entry of namedEntries) {
20
- if (this.map.has(entry[0])) {
21
- throw new UsageError("Duplicate entry names exist");
22
- }
23
- this.map.set(entry[0], entry[1]);
24
- }
25
- }
22
+ constructor(namedEntries: NamedFluidDataStoreRegistryEntries) {
23
+ this.map = new Map();
24
+ for (const entry of namedEntries) {
25
+ if (this.map.has(entry[0])) {
26
+ throw new UsageError("Duplicate entry names exist");
27
+ }
28
+ this.map.set(entry[0], entry[1]);
29
+ }
30
+ }
26
31
 
27
- public async get(name: string): Promise<FluidDataStoreRegistryEntry | undefined> {
28
- if (this.map.has(name)) {
29
- return this.map.get(name);
30
- }
32
+ public async get(name: string): Promise<FluidDataStoreRegistryEntry | undefined> {
33
+ if (this.map.has(name)) {
34
+ return this.map.get(name);
35
+ }
31
36
 
32
- return undefined;
33
- }
37
+ return undefined;
38
+ }
34
39
  }