@fluidframework/container-runtime 2.0.0-dev.5.2.0.169897 → 2.0.0-dev.6.4.0.191258

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 (561) hide show
  1. package/CHANGELOG.md +147 -0
  2. package/README.md +4 -3
  3. package/dist/batchTracker.d.ts +3 -2
  4. package/dist/batchTracker.d.ts.map +1 -1
  5. package/dist/batchTracker.js +6 -5
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager.d.ts +15 -18
  8. package/dist/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager.js +212 -171
  10. package/dist/blobManager.js.map +1 -1
  11. package/dist/connectionTelemetry.d.ts.map +1 -1
  12. package/dist/connectionTelemetry.js +33 -17
  13. package/dist/connectionTelemetry.js.map +1 -1
  14. package/dist/containerRuntime.d.ts +172 -35
  15. package/dist/containerRuntime.d.ts.map +1 -1
  16. package/dist/containerRuntime.js +722 -425
  17. package/dist/containerRuntime.js.map +1 -1
  18. package/dist/dataStore.d.ts.map +1 -1
  19. package/dist/dataStore.js +15 -7
  20. package/dist/dataStore.js.map +1 -1
  21. package/dist/dataStoreContext.d.ts +4 -4
  22. package/dist/dataStoreContext.d.ts.map +1 -1
  23. package/dist/dataStoreContext.js +87 -90
  24. package/dist/dataStoreContext.js.map +1 -1
  25. package/dist/dataStoreContexts.d.ts +1 -1
  26. package/dist/dataStoreContexts.d.ts.map +1 -1
  27. package/dist/dataStoreContexts.js +10 -10
  28. package/dist/dataStoreContexts.js.map +1 -1
  29. package/dist/dataStoreRegistry.js +2 -2
  30. package/dist/dataStoreRegistry.js.map +1 -1
  31. package/dist/dataStores.d.ts +23 -7
  32. package/dist/dataStores.d.ts.map +1 -1
  33. package/dist/dataStores.js +125 -82
  34. package/dist/dataStores.js.map +1 -1
  35. package/dist/deltaManagerProxyBase.d.ts +35 -0
  36. package/dist/deltaManagerProxyBase.d.ts.map +1 -0
  37. package/dist/deltaManagerProxyBase.js +77 -0
  38. package/dist/deltaManagerProxyBase.js.map +1 -0
  39. package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
  40. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  41. package/dist/deltaManagerSummarizerProxy.js +4 -2
  42. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  43. package/dist/deltaScheduler.d.ts.map +1 -1
  44. package/dist/deltaScheduler.js +10 -10
  45. package/dist/deltaScheduler.js.map +1 -1
  46. package/dist/error.d.ts +14 -0
  47. package/dist/error.d.ts.map +1 -0
  48. package/dist/error.js +21 -0
  49. package/dist/error.js.map +1 -0
  50. package/dist/gc/garbageCollection.d.ts +10 -9
  51. package/dist/gc/garbageCollection.d.ts.map +1 -1
  52. package/dist/gc/garbageCollection.js +65 -56
  53. package/dist/gc/garbageCollection.js.map +1 -1
  54. package/dist/gc/gcConfigs.d.ts.map +1 -1
  55. package/dist/gc/gcConfigs.js +18 -14
  56. package/dist/gc/gcConfigs.js.map +1 -1
  57. package/dist/gc/gcDefinitions.d.ts +17 -5
  58. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  59. package/dist/gc/gcDefinitions.js +14 -15
  60. package/dist/gc/gcDefinitions.js.map +1 -1
  61. package/dist/gc/gcHelpers.d.ts +0 -8
  62. package/dist/gc/gcHelpers.d.ts.map +1 -1
  63. package/dist/gc/gcHelpers.js +11 -24
  64. package/dist/gc/gcHelpers.js.map +1 -1
  65. package/dist/gc/gcSummaryStateTracker.d.ts +4 -7
  66. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryStateTracker.js +19 -58
  68. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  69. package/dist/gc/gcTelemetry.d.ts +1 -1
  70. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  71. package/dist/gc/gcTelemetry.js +45 -35
  72. package/dist/gc/gcTelemetry.js.map +1 -1
  73. package/dist/gc/gcUnreferencedStateTracker.js +4 -4
  74. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  75. package/dist/gc/index.d.ts +2 -2
  76. package/dist/gc/index.d.ts.map +1 -1
  77. package/dist/gc/index.js +3 -5
  78. package/dist/gc/index.js.map +1 -1
  79. package/dist/id-compressor/appendOnlySortedMap.d.ts +8 -30
  80. package/dist/id-compressor/appendOnlySortedMap.d.ts.map +1 -1
  81. package/dist/id-compressor/appendOnlySortedMap.js +26 -68
  82. package/dist/id-compressor/appendOnlySortedMap.js.map +1 -1
  83. package/dist/id-compressor/finalSpace.d.ts +29 -0
  84. package/dist/id-compressor/finalSpace.d.ts.map +1 -0
  85. package/dist/id-compressor/finalSpace.js +62 -0
  86. package/dist/id-compressor/finalSpace.js.map +1 -0
  87. package/dist/id-compressor/idCompressor.d.ts +25 -250
  88. package/dist/id-compressor/idCompressor.d.ts.map +1 -1
  89. package/dist/id-compressor/idCompressor.js +390 -1153
  90. package/dist/id-compressor/idCompressor.js.map +1 -1
  91. package/dist/id-compressor/identifiers.d.ts +32 -0
  92. package/dist/id-compressor/identifiers.d.ts.map +1 -0
  93. package/dist/id-compressor/identifiers.js +15 -0
  94. package/dist/id-compressor/identifiers.js.map +1 -0
  95. package/dist/id-compressor/index.d.ts +5 -6
  96. package/dist/id-compressor/index.d.ts.map +1 -1
  97. package/dist/id-compressor/index.js +20 -26
  98. package/dist/id-compressor/index.js.map +1 -1
  99. package/dist/id-compressor/persistanceUtilities.d.ts +22 -0
  100. package/dist/id-compressor/persistanceUtilities.d.ts.map +1 -0
  101. package/dist/id-compressor/persistanceUtilities.js +43 -0
  102. package/dist/id-compressor/persistanceUtilities.js.map +1 -0
  103. package/dist/id-compressor/sessionSpaceNormalizer.d.ts +46 -0
  104. package/dist/id-compressor/sessionSpaceNormalizer.d.ts.map +1 -0
  105. package/dist/id-compressor/sessionSpaceNormalizer.js +80 -0
  106. package/dist/id-compressor/sessionSpaceNormalizer.js.map +1 -0
  107. package/dist/id-compressor/sessions.d.ts +115 -0
  108. package/dist/id-compressor/sessions.d.ts.map +1 -0
  109. package/dist/id-compressor/sessions.js +305 -0
  110. package/dist/id-compressor/sessions.js.map +1 -0
  111. package/dist/id-compressor/utilities.d.ts +49 -0
  112. package/dist/id-compressor/utilities.d.ts.map +1 -0
  113. package/dist/id-compressor/utilities.js +166 -0
  114. package/dist/id-compressor/utilities.js.map +1 -0
  115. package/dist/index.d.ts +3 -3
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +6 -4
  118. package/dist/index.js.map +1 -1
  119. package/dist/metadata.d.ts +18 -0
  120. package/dist/metadata.d.ts.map +1 -0
  121. package/dist/metadata.js +7 -0
  122. package/dist/metadata.js.map +1 -0
  123. package/dist/opLifecycle/batchManager.d.ts +2 -1
  124. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  125. package/dist/opLifecycle/batchManager.js +15 -7
  126. package/dist/opLifecycle/batchManager.js.map +1 -1
  127. package/dist/opLifecycle/definitions.d.ts +11 -0
  128. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  129. package/dist/opLifecycle/definitions.js.map +1 -1
  130. package/dist/opLifecycle/index.d.ts +1 -1
  131. package/dist/opLifecycle/index.d.ts.map +1 -1
  132. package/dist/opLifecycle/index.js +2 -1
  133. package/dist/opLifecycle/index.js.map +1 -1
  134. package/dist/opLifecycle/opCompressor.d.ts +2 -2
  135. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  136. package/dist/opLifecycle/opCompressor.js +12 -7
  137. package/dist/opLifecycle/opCompressor.js.map +1 -1
  138. package/dist/opLifecycle/opDecompressor.d.ts +2 -2
  139. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  140. package/dist/opLifecycle/opDecompressor.js +30 -21
  141. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  142. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  143. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  144. package/dist/opLifecycle/opGroupingManager.js +19 -13
  145. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  146. package/dist/opLifecycle/opSplitter.d.ts +2 -2
  147. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  148. package/dist/opLifecycle/opSplitter.js +24 -19
  149. package/dist/opLifecycle/opSplitter.js.map +1 -1
  150. package/dist/opLifecycle/outbox.d.ts +39 -6
  151. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  152. package/dist/opLifecycle/outbox.js +138 -61
  153. package/dist/opLifecycle/outbox.js.map +1 -1
  154. package/dist/opLifecycle/remoteMessageProcessor.d.ts +6 -1
  155. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  156. package/dist/opLifecycle/remoteMessageProcessor.js +22 -8
  157. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  158. package/dist/opProperties.js +1 -2
  159. package/dist/opProperties.js.map +1 -1
  160. package/dist/packageVersion.d.ts +1 -1
  161. package/dist/packageVersion.js +1 -1
  162. package/dist/packageVersion.js.map +1 -1
  163. package/dist/pendingStateManager.d.ts +25 -10
  164. package/dist/pendingStateManager.d.ts.map +1 -1
  165. package/dist/pendingStateManager.js +101 -64
  166. package/dist/pendingStateManager.js.map +1 -1
  167. package/dist/scheduleManager.d.ts.map +1 -1
  168. package/dist/scheduleManager.js +43 -33
  169. package/dist/scheduleManager.js.map +1 -1
  170. package/dist/summary/index.d.ts +4 -4
  171. package/dist/summary/index.d.ts.map +1 -1
  172. package/dist/summary/index.js +3 -1
  173. package/dist/summary/index.js.map +1 -1
  174. package/dist/summary/orderedClientElection.d.ts +3 -3
  175. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  176. package/dist/summary/orderedClientElection.js +26 -27
  177. package/dist/summary/orderedClientElection.js.map +1 -1
  178. package/dist/summary/runWhileConnectedCoordinator.js +3 -3
  179. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  180. package/dist/summary/runningSummarizer.d.ts +31 -10
  181. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  182. package/dist/summary/runningSummarizer.js +271 -139
  183. package/dist/summary/runningSummarizer.js.map +1 -1
  184. package/dist/summary/summarizer.d.ts +8 -7
  185. package/dist/summary/summarizer.d.ts.map +1 -1
  186. package/dist/summary/summarizer.js +79 -78
  187. package/dist/summary/summarizer.js.map +1 -1
  188. package/dist/summary/summarizerClientElection.d.ts +2 -2
  189. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  190. package/dist/summary/summarizerClientElection.js +7 -11
  191. package/dist/summary/summarizerClientElection.js.map +1 -1
  192. package/dist/summary/summarizerHeuristics.js +10 -14
  193. package/dist/summary/summarizerHeuristics.js.map +1 -1
  194. package/dist/summary/summarizerNode/index.d.ts +1 -1
  195. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  196. package/dist/summary/summarizerNode/index.js.map +1 -1
  197. package/dist/summary/summarizerNode/summarizerNode.d.ts +40 -23
  198. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  199. package/dist/summary/summarizerNode/summarizerNode.js +144 -149
  200. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  201. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +25 -29
  202. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  203. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -4
  204. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  205. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +21 -16
  206. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  207. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +74 -123
  208. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  209. package/dist/summary/summarizerTypes.d.ts +44 -24
  210. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  211. package/dist/summary/summarizerTypes.js.map +1 -1
  212. package/dist/summary/summaryCollection.d.ts +2 -2
  213. package/dist/summary/summaryCollection.d.ts.map +1 -1
  214. package/dist/summary/summaryCollection.js +16 -13
  215. package/dist/summary/summaryCollection.js.map +1 -1
  216. package/dist/summary/summaryFormat.d.ts +4 -0
  217. package/dist/summary/summaryFormat.d.ts.map +1 -1
  218. package/dist/summary/summaryFormat.js +8 -5
  219. package/dist/summary/summaryFormat.js.map +1 -1
  220. package/dist/summary/summaryGenerator.d.ts +21 -6
  221. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  222. package/dist/summary/summaryGenerator.js +117 -54
  223. package/dist/summary/summaryGenerator.js.map +1 -1
  224. package/dist/summary/summaryManager.d.ts +8 -7
  225. package/dist/summary/summaryManager.d.ts.map +1 -1
  226. package/dist/summary/summaryManager.js +38 -28
  227. package/dist/summary/summaryManager.js.map +1 -1
  228. package/lib/batchTracker.d.ts +3 -2
  229. package/lib/batchTracker.d.ts.map +1 -1
  230. package/lib/batchTracker.js +5 -4
  231. package/lib/batchTracker.js.map +1 -1
  232. package/lib/blobManager.d.ts +15 -18
  233. package/lib/blobManager.d.ts.map +1 -1
  234. package/lib/blobManager.js +187 -146
  235. package/lib/blobManager.js.map +1 -1
  236. package/lib/connectionTelemetry.d.ts.map +1 -1
  237. package/lib/connectionTelemetry.js +23 -7
  238. package/lib/connectionTelemetry.js.map +1 -1
  239. package/lib/containerRuntime.d.ts +172 -35
  240. package/lib/containerRuntime.d.ts.map +1 -1
  241. package/lib/containerRuntime.js +678 -380
  242. package/lib/containerRuntime.js.map +1 -1
  243. package/lib/dataStore.d.ts.map +1 -1
  244. package/lib/dataStore.js +13 -5
  245. package/lib/dataStore.js.map +1 -1
  246. package/lib/dataStoreContext.d.ts +4 -4
  247. package/lib/dataStoreContext.d.ts.map +1 -1
  248. package/lib/dataStoreContext.js +49 -52
  249. package/lib/dataStoreContext.js.map +1 -1
  250. package/lib/dataStoreContexts.d.ts +1 -1
  251. package/lib/dataStoreContexts.d.ts.map +1 -1
  252. package/lib/dataStoreContexts.js +3 -3
  253. package/lib/dataStoreContexts.js.map +1 -1
  254. package/lib/dataStoreRegistry.js +1 -1
  255. package/lib/dataStoreRegistry.js.map +1 -1
  256. package/lib/dataStores.d.ts +23 -7
  257. package/lib/dataStores.d.ts.map +1 -1
  258. package/lib/dataStores.js +107 -64
  259. package/lib/dataStores.js.map +1 -1
  260. package/lib/deltaManagerProxyBase.d.ts +35 -0
  261. package/lib/deltaManagerProxyBase.d.ts.map +1 -0
  262. package/lib/deltaManagerProxyBase.js +73 -0
  263. package/lib/deltaManagerProxyBase.js.map +1 -0
  264. package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
  265. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
  266. package/lib/deltaManagerSummarizerProxy.js +3 -1
  267. package/lib/deltaManagerSummarizerProxy.js.map +1 -1
  268. package/lib/deltaScheduler.d.ts.map +1 -1
  269. package/lib/deltaScheduler.js +7 -7
  270. package/lib/deltaScheduler.js.map +1 -1
  271. package/lib/error.d.ts +14 -0
  272. package/lib/error.d.ts.map +1 -0
  273. package/lib/error.js +17 -0
  274. package/lib/error.js.map +1 -0
  275. package/lib/gc/garbageCollection.d.ts +10 -9
  276. package/lib/gc/garbageCollection.d.ts.map +1 -1
  277. package/lib/gc/garbageCollection.js +61 -52
  278. package/lib/gc/garbageCollection.js.map +1 -1
  279. package/lib/gc/gcConfigs.d.ts.map +1 -1
  280. package/lib/gc/gcConfigs.js +16 -12
  281. package/lib/gc/gcConfigs.js.map +1 -1
  282. package/lib/gc/gcDefinitions.d.ts +17 -5
  283. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  284. package/lib/gc/gcDefinitions.js +13 -14
  285. package/lib/gc/gcDefinitions.js.map +1 -1
  286. package/lib/gc/gcHelpers.d.ts +0 -8
  287. package/lib/gc/gcHelpers.d.ts.map +1 -1
  288. package/lib/gc/gcHelpers.js +5 -17
  289. package/lib/gc/gcHelpers.js.map +1 -1
  290. package/lib/gc/gcSummaryStateTracker.d.ts +4 -7
  291. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  292. package/lib/gc/gcSummaryStateTracker.js +20 -59
  293. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  294. package/lib/gc/gcTelemetry.d.ts +1 -1
  295. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  296. package/lib/gc/gcTelemetry.js +46 -36
  297. package/lib/gc/gcTelemetry.js.map +1 -1
  298. package/lib/gc/gcUnreferencedStateTracker.js +1 -1
  299. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  300. package/lib/gc/index.d.ts +2 -2
  301. package/lib/gc/index.d.ts.map +1 -1
  302. package/lib/gc/index.js +2 -2
  303. package/lib/gc/index.js.map +1 -1
  304. package/lib/id-compressor/appendOnlySortedMap.d.ts +8 -30
  305. package/lib/id-compressor/appendOnlySortedMap.d.ts.map +1 -1
  306. package/lib/id-compressor/appendOnlySortedMap.js +25 -66
  307. package/lib/id-compressor/appendOnlySortedMap.js.map +1 -1
  308. package/lib/id-compressor/finalSpace.d.ts +29 -0
  309. package/lib/id-compressor/finalSpace.d.ts.map +1 -0
  310. package/lib/id-compressor/finalSpace.js +58 -0
  311. package/lib/id-compressor/finalSpace.js.map +1 -0
  312. package/lib/id-compressor/idCompressor.d.ts +25 -250
  313. package/lib/id-compressor/idCompressor.d.ts.map +1 -1
  314. package/lib/id-compressor/idCompressor.js +385 -1142
  315. package/lib/id-compressor/idCompressor.js.map +1 -1
  316. package/lib/id-compressor/identifiers.d.ts +32 -0
  317. package/lib/id-compressor/identifiers.d.ts.map +1 -0
  318. package/lib/id-compressor/identifiers.js +11 -0
  319. package/lib/id-compressor/identifiers.js.map +1 -0
  320. package/lib/id-compressor/index.d.ts +5 -6
  321. package/lib/id-compressor/index.d.ts.map +1 -1
  322. package/lib/id-compressor/index.js +5 -6
  323. package/lib/id-compressor/index.js.map +1 -1
  324. package/lib/id-compressor/persistanceUtilities.d.ts +22 -0
  325. package/lib/id-compressor/persistanceUtilities.d.ts.map +1 -0
  326. package/lib/id-compressor/persistanceUtilities.js +34 -0
  327. package/lib/id-compressor/persistanceUtilities.js.map +1 -0
  328. package/lib/id-compressor/sessionSpaceNormalizer.d.ts +46 -0
  329. package/lib/id-compressor/sessionSpaceNormalizer.d.ts.map +1 -0
  330. package/lib/id-compressor/sessionSpaceNormalizer.js +76 -0
  331. package/lib/id-compressor/sessionSpaceNormalizer.js.map +1 -0
  332. package/lib/id-compressor/sessions.d.ts +115 -0
  333. package/lib/id-compressor/sessions.d.ts.map +1 -0
  334. package/lib/id-compressor/sessions.js +290 -0
  335. package/lib/id-compressor/sessions.js.map +1 -0
  336. package/lib/id-compressor/utilities.d.ts +49 -0
  337. package/lib/id-compressor/utilities.d.ts.map +1 -0
  338. package/lib/id-compressor/utilities.js +148 -0
  339. package/lib/id-compressor/utilities.js.map +1 -0
  340. package/lib/index.d.ts +3 -3
  341. package/lib/index.d.ts.map +1 -1
  342. package/lib/index.js +2 -2
  343. package/lib/index.js.map +1 -1
  344. package/lib/metadata.d.ts +18 -0
  345. package/lib/metadata.d.ts.map +1 -0
  346. package/lib/metadata.js +6 -0
  347. package/lib/metadata.js.map +1 -0
  348. package/lib/opLifecycle/batchManager.d.ts +2 -1
  349. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  350. package/lib/opLifecycle/batchManager.js +15 -7
  351. package/lib/opLifecycle/batchManager.js.map +1 -1
  352. package/lib/opLifecycle/definitions.d.ts +11 -0
  353. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  354. package/lib/opLifecycle/definitions.js.map +1 -1
  355. package/lib/opLifecycle/index.d.ts +1 -1
  356. package/lib/opLifecycle/index.d.ts.map +1 -1
  357. package/lib/opLifecycle/index.js +1 -1
  358. package/lib/opLifecycle/index.js.map +1 -1
  359. package/lib/opLifecycle/opCompressor.d.ts +2 -2
  360. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  361. package/lib/opLifecycle/opCompressor.js +10 -5
  362. package/lib/opLifecycle/opCompressor.js.map +1 -1
  363. package/lib/opLifecycle/opDecompressor.d.ts +2 -2
  364. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  365. package/lib/opLifecycle/opDecompressor.js +22 -13
  366. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  367. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  368. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  369. package/lib/opLifecycle/opGroupingManager.js +17 -11
  370. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  371. package/lib/opLifecycle/opSplitter.d.ts +2 -2
  372. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  373. package/lib/opLifecycle/opSplitter.js +15 -10
  374. package/lib/opLifecycle/opSplitter.js.map +1 -1
  375. package/lib/opLifecycle/outbox.d.ts +39 -6
  376. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  377. package/lib/opLifecycle/outbox.js +132 -56
  378. package/lib/opLifecycle/outbox.js.map +1 -1
  379. package/lib/opLifecycle/remoteMessageProcessor.d.ts +6 -1
  380. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  381. package/lib/opLifecycle/remoteMessageProcessor.js +23 -9
  382. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  383. package/lib/opProperties.js +1 -2
  384. package/lib/opProperties.js.map +1 -1
  385. package/lib/packageVersion.d.ts +1 -1
  386. package/lib/packageVersion.js +1 -1
  387. package/lib/packageVersion.js.map +1 -1
  388. package/lib/pendingStateManager.d.ts +25 -10
  389. package/lib/pendingStateManager.d.ts.map +1 -1
  390. package/lib/pendingStateManager.js +90 -53
  391. package/lib/pendingStateManager.js.map +1 -1
  392. package/lib/scheduleManager.d.ts.map +1 -1
  393. package/lib/scheduleManager.js +25 -15
  394. package/lib/scheduleManager.js.map +1 -1
  395. package/lib/summary/index.d.ts +4 -4
  396. package/lib/summary/index.d.ts.map +1 -1
  397. package/lib/summary/index.js +2 -2
  398. package/lib/summary/index.js.map +1 -1
  399. package/lib/summary/orderedClientElection.d.ts +3 -3
  400. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  401. package/lib/summary/orderedClientElection.js +21 -22
  402. package/lib/summary/orderedClientElection.js.map +1 -1
  403. package/lib/summary/runWhileConnectedCoordinator.js +1 -1
  404. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  405. package/lib/summary/runningSummarizer.d.ts +31 -10
  406. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  407. package/lib/summary/runningSummarizer.js +265 -133
  408. package/lib/summary/runningSummarizer.js.map +1 -1
  409. package/lib/summary/summarizer.d.ts +8 -7
  410. package/lib/summary/summarizer.d.ts.map +1 -1
  411. package/lib/summary/summarizer.js +75 -74
  412. package/lib/summary/summarizer.js.map +1 -1
  413. package/lib/summary/summarizerClientElection.d.ts +2 -2
  414. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  415. package/lib/summary/summarizerClientElection.js +6 -10
  416. package/lib/summary/summarizerClientElection.js.map +1 -1
  417. package/lib/summary/summarizerHeuristics.js +9 -13
  418. package/lib/summary/summarizerHeuristics.js.map +1 -1
  419. package/lib/summary/summarizerNode/index.d.ts +1 -1
  420. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  421. package/lib/summary/summarizerNode/index.js.map +1 -1
  422. package/lib/summary/summarizerNode/summarizerNode.d.ts +40 -23
  423. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  424. package/lib/summary/summarizerNode/summarizerNode.js +132 -137
  425. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  426. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +25 -29
  427. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  428. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -4
  429. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  430. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +21 -16
  431. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  432. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +70 -119
  433. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  434. package/lib/summary/summarizerTypes.d.ts +44 -24
  435. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  436. package/lib/summary/summarizerTypes.js.map +1 -1
  437. package/lib/summary/summaryCollection.d.ts +2 -2
  438. package/lib/summary/summaryCollection.d.ts.map +1 -1
  439. package/lib/summary/summaryCollection.js +9 -6
  440. package/lib/summary/summaryCollection.js.map +1 -1
  441. package/lib/summary/summaryFormat.d.ts +4 -0
  442. package/lib/summary/summaryFormat.d.ts.map +1 -1
  443. package/lib/summary/summaryFormat.js +7 -4
  444. package/lib/summary/summaryFormat.js.map +1 -1
  445. package/lib/summary/summaryGenerator.d.ts +21 -6
  446. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  447. package/lib/summary/summaryGenerator.js +109 -47
  448. package/lib/summary/summaryGenerator.js.map +1 -1
  449. package/lib/summary/summaryManager.d.ts +8 -7
  450. package/lib/summary/summaryManager.d.ts.map +1 -1
  451. package/lib/summary/summaryManager.js +35 -25
  452. package/lib/summary/summaryManager.js.map +1 -1
  453. package/package.json +30 -32
  454. package/src/batchTracker.ts +7 -5
  455. package/src/blobManager.ts +235 -172
  456. package/src/connectionTelemetry.ts +19 -5
  457. package/src/containerRuntime.ts +853 -431
  458. package/src/dataStore.ts +12 -4
  459. package/src/dataStoreContext.ts +49 -46
  460. package/src/dataStoreContexts.ts +4 -4
  461. package/src/dataStoreRegistry.ts +1 -1
  462. package/src/dataStores.ts +119 -80
  463. package/src/deltaManagerProxyBase.ts +111 -0
  464. package/src/deltaManagerSummarizerProxy.ts +4 -1
  465. package/src/deltaScheduler.ts +7 -11
  466. package/src/error.ts +18 -0
  467. package/src/gc/garbageCollection.md +53 -5
  468. package/src/gc/garbageCollection.ts +58 -51
  469. package/src/gc/gcConfigs.ts +4 -2
  470. package/src/gc/gcDefinitions.ts +17 -21
  471. package/src/gc/gcEarlyAdoption.md +145 -0
  472. package/src/gc/gcHelpers.ts +1 -12
  473. package/src/gc/gcSummaryStateTracker.ts +19 -65
  474. package/src/gc/gcTelemetry.ts +15 -13
  475. package/src/gc/gcUnreferencedStateTracker.ts +1 -1
  476. package/src/gc/index.ts +2 -4
  477. package/src/id-compressor/appendOnlySortedMap.ts +26 -87
  478. package/src/id-compressor/finalSpace.ts +67 -0
  479. package/src/id-compressor/idCompressor.ts +458 -1682
  480. package/src/id-compressor/identifiers.ts +42 -0
  481. package/src/id-compressor/index.ts +11 -20
  482. package/src/id-compressor/persistanceUtilities.ts +58 -0
  483. package/src/id-compressor/sessionSpaceNormalizer.ts +83 -0
  484. package/src/id-compressor/sessions.ts +405 -0
  485. package/src/id-compressor/utilities.ts +187 -0
  486. package/src/index.ts +9 -2
  487. package/src/metadata.ts +19 -0
  488. package/src/opLifecycle/README.md +20 -0
  489. package/src/opLifecycle/batchManager.ts +9 -1
  490. package/src/opLifecycle/definitions.ts +11 -0
  491. package/src/opLifecycle/index.ts +1 -1
  492. package/src/opLifecycle/opCompressor.ts +6 -5
  493. package/src/opLifecycle/opDecompressor.ts +47 -17
  494. package/src/opLifecycle/opGroupingManager.ts +18 -8
  495. package/src/opLifecycle/opSplitter.ts +10 -7
  496. package/src/opLifecycle/outbox.ts +177 -72
  497. package/src/opLifecycle/remoteMessageProcessor.ts +32 -9
  498. package/src/packageVersion.ts +1 -1
  499. package/src/pendingStateManager.ts +123 -78
  500. package/src/scheduleManager.ts +22 -11
  501. package/src/summary/index.ts +7 -4
  502. package/src/summary/orderedClientElection.ts +10 -6
  503. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  504. package/src/summary/runningSummarizer.ts +291 -163
  505. package/src/summary/summarizer.ts +27 -16
  506. package/src/summary/summarizerClientElection.ts +2 -2
  507. package/src/summary/summarizerHeuristics.ts +1 -1
  508. package/src/summary/summarizerNode/index.ts +2 -2
  509. package/src/summary/summarizerNode/summarizerNode.ts +142 -184
  510. package/src/summary/summarizerNode/summarizerNodeUtils.ts +27 -35
  511. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +72 -148
  512. package/src/summary/summarizerTypes.ts +49 -24
  513. package/src/summary/summaryCollection.ts +9 -4
  514. package/src/summary/summaryFormat.ts +9 -2
  515. package/src/summary/summaryGenerator.ts +72 -49
  516. package/src/summary/summaryManager.ts +44 -16
  517. package/dist/id-compressor/idRange.d.ts +0 -11
  518. package/dist/id-compressor/idRange.d.ts.map +0 -1
  519. package/dist/id-compressor/idRange.js +0 -29
  520. package/dist/id-compressor/idRange.js.map +0 -1
  521. package/dist/id-compressor/numericUuid.d.ts +0 -59
  522. package/dist/id-compressor/numericUuid.d.ts.map +0 -1
  523. package/dist/id-compressor/numericUuid.js +0 -325
  524. package/dist/id-compressor/numericUuid.js.map +0 -1
  525. package/dist/id-compressor/sessionIdNormalizer.d.ts +0 -138
  526. package/dist/id-compressor/sessionIdNormalizer.d.ts.map +0 -1
  527. package/dist/id-compressor/sessionIdNormalizer.js +0 -488
  528. package/dist/id-compressor/sessionIdNormalizer.js.map +0 -1
  529. package/dist/id-compressor/utils.d.ts +0 -57
  530. package/dist/id-compressor/utils.d.ts.map +0 -1
  531. package/dist/id-compressor/utils.js +0 -90
  532. package/dist/id-compressor/utils.js.map +0 -1
  533. package/dist/id-compressor/uuidUtilities.d.ts +0 -30
  534. package/dist/id-compressor/uuidUtilities.d.ts.map +0 -1
  535. package/dist/id-compressor/uuidUtilities.js +0 -106
  536. package/dist/id-compressor/uuidUtilities.js.map +0 -1
  537. package/lib/id-compressor/idRange.d.ts +0 -11
  538. package/lib/id-compressor/idRange.d.ts.map +0 -1
  539. package/lib/id-compressor/idRange.js +0 -25
  540. package/lib/id-compressor/idRange.js.map +0 -1
  541. package/lib/id-compressor/numericUuid.d.ts +0 -59
  542. package/lib/id-compressor/numericUuid.d.ts.map +0 -1
  543. package/lib/id-compressor/numericUuid.js +0 -315
  544. package/lib/id-compressor/numericUuid.js.map +0 -1
  545. package/lib/id-compressor/sessionIdNormalizer.d.ts +0 -138
  546. package/lib/id-compressor/sessionIdNormalizer.d.ts.map +0 -1
  547. package/lib/id-compressor/sessionIdNormalizer.js +0 -484
  548. package/lib/id-compressor/sessionIdNormalizer.js.map +0 -1
  549. package/lib/id-compressor/utils.d.ts +0 -57
  550. package/lib/id-compressor/utils.d.ts.map +0 -1
  551. package/lib/id-compressor/utils.js +0 -79
  552. package/lib/id-compressor/utils.js.map +0 -1
  553. package/lib/id-compressor/uuidUtilities.d.ts +0 -30
  554. package/lib/id-compressor/uuidUtilities.d.ts.map +0 -1
  555. package/lib/id-compressor/uuidUtilities.js +0 -98
  556. package/lib/id-compressor/uuidUtilities.js.map +0 -1
  557. package/src/id-compressor/idRange.ts +0 -35
  558. package/src/id-compressor/numericUuid.ts +0 -383
  559. package/src/id-compressor/sessionIdNormalizer.ts +0 -609
  560. package/src/id-compressor/utils.ts +0 -114
  561. package/src/id-compressor/uuidUtilities.ts +0 -123
@@ -5,14 +5,13 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.getSummaryForDatastores = exports.DataStores = void 0;
8
- const container_utils_1 = require("@fluidframework/container-utils");
9
8
  const datastore_1 = require("@fluidframework/datastore");
10
9
  const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
11
10
  const runtime_utils_1 = require("@fluidframework/runtime-utils");
12
11
  const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
13
12
  const container_definitions_1 = require("@fluidframework/container-definitions");
14
13
  const driver_utils_1 = require("@fluidframework/driver-utils");
15
- const common_utils_1 = require("@fluidframework/common-utils");
14
+ const core_utils_1 = require("@fluidframework/core-utils");
16
15
  const uuid_1 = require("uuid");
17
16
  const dataStoreContexts_1 = require("./dataStoreContexts");
18
17
  const containerRuntime_1 = require("./containerRuntime");
@@ -40,13 +39,13 @@ class DataStores {
40
39
  this.pendingAttach = new Map();
41
40
  // 0.24 back-compat attachingBeforeSummary
42
41
  this.attachOpFiredForDataStore = new Set();
43
- this.disposeOnce = new common_utils_1.Lazy(() => this.contexts.dispose());
42
+ this.disposeOnce = new core_utils_1.Lazy(() => this.contexts.dispose());
44
43
  // Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
45
44
  // root data stores that are added.
46
45
  this.dataStoresSinceLastGC = [];
47
46
  this.pendingAliasMap = new Map();
48
47
  this.dispose = () => this.disposeOnce.value;
49
- this.mc = (0, telemetry_utils_1.loggerToMonitoringContext)(telemetry_utils_1.ChildLogger.create(baseLogger));
48
+ this.mc = (0, telemetry_utils_1.createChildMonitoringContext)({ logger: baseLogger });
50
49
  this.containerRuntimeHandle = new datastore_1.FluidObjectHandle(this.runtime, "/", this.runtime.IFluidHandleContext);
51
50
  // Tombstone should only throw when the feature flag is enabled and the client isn't a summarizer
52
51
  this.throwOnTombstoneLoad =
@@ -118,25 +117,24 @@ class DataStores {
118
117
  return pendingAliasPromise === undefined ? "Success" : pendingAliasPromise;
119
118
  }
120
119
  processAttachMessage(message, local) {
121
- var _a, _b;
122
120
  const attachMessage = message.contents;
123
121
  this.dataStoresSinceLastGC.push(attachMessage.id);
124
122
  // The local object has already been attached
125
123
  if (local) {
126
- (0, common_utils_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
127
- (_a = this.contexts.get(attachMessage.id)) === null || _a === void 0 ? void 0 : _a.emit("attached");
124
+ (0, core_utils_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
125
+ this.contexts.get(attachMessage.id)?.emit("attached");
128
126
  this.pendingAttach.delete(attachMessage.id);
129
127
  return;
130
128
  }
131
129
  // If a non-local operation then go and create the object, otherwise mark it as officially attached.
132
130
  if (this.alreadyProcessed(attachMessage.id)) {
133
131
  // TODO: dataStoreId may require a different tag from PackageData #7488
134
- const error = new container_utils_1.DataCorruptionError(
132
+ const error = new telemetry_utils_1.DataCorruptionError(
135
133
  // pre-0.58 error message: duplicateDataStoreCreatedWithExistingId
136
- "Duplicate DataStore created with existing id", Object.assign(Object.assign({}, (0, container_utils_1.extractSafePropertiesFromMessage)(message)), { dataStoreId: {
137
- value: attachMessage.id,
138
- tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
139
- } }));
134
+ "Duplicate DataStore created with existing id", {
135
+ ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
136
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({ dataStoreId: attachMessage.id }),
137
+ });
140
138
  throw error;
141
139
  }
142
140
  const flatAttachBlobs = new Map();
@@ -156,7 +154,7 @@ class DataStores {
156
154
  createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(attachMessage.id, {
157
155
  type: runtime_definitions_1.CreateSummarizerNodeSource.FromAttach,
158
156
  sequenceNumber: message.sequenceNumber,
159
- snapshot: (_b = attachMessage.snapshot) !== null && _b !== void 0 ? _b : {
157
+ snapshot: attachMessage.snapshot ?? {
160
158
  entries: [(0, dataStoreContext_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
161
159
  },
162
160
  }),
@@ -167,7 +165,9 @@ class DataStores {
167
165
  processAliasMessage(message, localOpMetadata, local) {
168
166
  const aliasMessage = message.contents;
169
167
  if (!(0, dataStore_1.isDataStoreAliasMessage)(aliasMessage)) {
170
- throw new container_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", Object.assign({}, (0, container_utils_1.extractSafePropertiesFromMessage)(message)));
168
+ throw new telemetry_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", {
169
+ ...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
170
+ });
171
171
  }
172
172
  const resolve = localOpMetadata;
173
173
  const aliasResult = this.processAliasMessageCore(aliasMessage);
@@ -203,7 +203,7 @@ class DataStores {
203
203
  */
204
204
  makeDataStoreLocallyVisible(id) {
205
205
  const localContext = this.contexts.getUnbound(id);
206
- (0, common_utils_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
206
+ (0, core_utils_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
207
207
  /**
208
208
  * If the container is not detached, it is globally visible to all clients. This data store should also be
209
209
  * globally visible. Move it to attaching state and send an "attach" op for it.
@@ -219,7 +219,7 @@ class DataStores {
219
219
  this.contexts.bind(id);
220
220
  }
221
221
  createDetachedDataStoreCore(pkg, isRoot, id = (0, uuid_1.v4)()) {
222
- (0, common_utils_1.assert)(!id.includes("/"), 0x30c /* Id cannot contain slashes */);
222
+ (0, core_utils_1.assert)(!id.includes("/"), 0x30c /* Id cannot contain slashes */);
223
223
  const context = new dataStoreContext_1.LocalDetachedFluidDataStoreContext({
224
224
  id,
225
225
  pkg,
@@ -237,7 +237,7 @@ class DataStores {
237
237
  return context;
238
238
  }
239
239
  _createFluidDataStoreContext(pkg, id, props) {
240
- (0, common_utils_1.assert)(!id.includes("/"), 0x30d /* Id cannot contain slashes */);
240
+ (0, core_utils_1.assert)(!id.includes("/"), 0x30d /* Id cannot contain slashes */);
241
241
  const context = new dataStoreContext_1.LocalFluidDataStoreContext({
242
242
  id,
243
243
  pkg,
@@ -260,17 +260,17 @@ class DataStores {
260
260
  }
261
261
  resubmitDataStoreOp(envelope, localOpMetadata) {
262
262
  const context = this.contexts.get(envelope.address);
263
- (0, common_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
263
+ (0, core_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
264
264
  context.reSubmit(envelope.contents, localOpMetadata);
265
265
  }
266
266
  rollbackDataStoreOp(envelope, localOpMetadata) {
267
267
  const context = this.contexts.get(envelope.address);
268
- (0, common_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
268
+ (0, core_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
269
269
  context.rollback(envelope.contents, localOpMetadata);
270
270
  }
271
271
  async applyStashedOp(envelope) {
272
272
  const context = this.contexts.get(envelope.address);
273
- (0, common_utils_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
273
+ (0, core_utils_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
274
274
  return context.applyStashedOp(envelope.contents);
275
275
  }
276
276
  async applyStashedAttachOp(message) {
@@ -280,97 +280,137 @@ class DataStores {
280
280
  }
281
281
  processFluidDataStoreOp(message, local, localMessageMetadata) {
282
282
  const envelope = message.contents;
283
- const transformed = Object.assign(Object.assign({}, message), { contents: envelope.contents });
284
- const request = { url: envelope.address };
285
- this.validateNotDeleted(envelope.address, request);
283
+ const transformed = { ...message, contents: envelope.contents };
284
+ this.validateNotDeleted(envelope.address);
286
285
  const context = this.contexts.get(envelope.address);
287
- (0, common_utils_1.assert)(!!context, 0x162 /* "There should be a store context for the op" */);
286
+ (0, core_utils_1.assert)(!!context, 0x162 /* "There should be a store context for the op" */);
288
287
  context.process(transformed, local, localMessageMetadata);
289
288
  // Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
290
289
  // being used.
291
290
  this.gcNodeUpdated(`/${envelope.address}`, message.timestamp, context.isLoaded ? context.packagePath : undefined);
292
291
  }
293
292
  async getDataStore(id, requestHeaderData) {
294
- const headerData = Object.assign(Object.assign({}, containerRuntime_1.defaultRuntimeHeaderData), requestHeaderData);
295
- const request = { url: id };
296
- this.validateNotDeleted(id, request, headerData);
293
+ const headerData = { ...containerRuntime_1.defaultRuntimeHeaderData, ...requestHeaderData };
294
+ this.validateNotDeleted(id, headerData);
297
295
  const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
298
296
  if (context === undefined) {
299
297
  // The requested data store does not exits. Throw a 404 response exception.
298
+ const request = { url: id };
300
299
  throw (0, runtime_utils_1.responseToException)((0, runtime_utils_1.create404Response)(request), request);
301
300
  }
302
- this.validateNotTombstoned(context, request, requestHeaderData);
301
+ this.validateNotTombstoned(context, requestHeaderData);
303
302
  return context;
304
303
  }
305
304
  /**
306
- * Validate that the data store had not been deleted by GC.
307
- *
305
+ * Returns the data store requested with the given id if available. Otherwise, returns undefined.
306
+ */
307
+ async getDataStoreIfAvailable(id, requestHeaderData) {
308
+ // If the data store has been deleted, return undefined.
309
+ if (this.checkIfDeleted(id, requestHeaderData)) {
310
+ return undefined;
311
+ }
312
+ const headerData = { ...containerRuntime_1.defaultRuntimeHeaderData, ...requestHeaderData };
313
+ const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
314
+ if (context === undefined) {
315
+ return undefined;
316
+ }
317
+ // Check if the data store is tombstoned. If so, we want to log a telemetry event.
318
+ this.checkIfTombstoned(context, requestHeaderData);
319
+ return context;
320
+ }
321
+ /**
322
+ * Checks if the data store has been deleted by GC.
308
323
  * @param id - data store id
309
324
  * @param request - the request information to log if the validation detects the data store has been deleted
310
325
  * @param requestHeaderData - the request header information to log if the validation detects the data store has been deleted
326
+ * @returns true if the data store is deleted. Otherwise, returns false.
311
327
  */
312
- validateNotDeleted(id, request, requestHeaderData) {
328
+ checkIfDeleted(id, requestHeaderData) {
313
329
  const dataStoreNodePath = `/${id}`;
314
- if (this.isDataStoreDeleted(dataStoreNodePath)) {
315
- (0, common_utils_1.assert)(!this.contexts.has(id), 0x570 /* Inconsistent state! GC says the data store is deleted, but the data store is not deleted from the runtime. */);
330
+ if (!this.isDataStoreDeleted(dataStoreNodePath)) {
331
+ return false;
332
+ }
333
+ (0, core_utils_1.assert)(!this.contexts.has(id), 0x570 /* Inconsistent state! GC says the data store is deleted, but the data store is not deleted from the runtime. */);
334
+ (0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
335
+ eventName: "GC_Deleted_DataStore_Requested",
336
+ category: "error",
337
+ isSummarizerClient: this.runtime.clientDetails.type === summary_1.summarizerClientType,
338
+ id,
339
+ headers: JSON.stringify(requestHeaderData),
340
+ gcTombstoneEnforcementAllowed: this.runtime.gcTombstoneEnforcementAllowed,
341
+ }, undefined /* packagePath */);
342
+ return true;
343
+ }
344
+ /**
345
+ * Validate that the data store had not been deleted by GC.
346
+ * @param id - data store id
347
+ * @param requestHeaderData - the request header information to log if the validation detects the data store has been deleted
348
+ */
349
+ validateNotDeleted(id, requestHeaderData) {
350
+ if (this.checkIfDeleted(id, requestHeaderData)) {
316
351
  // The requested data store is removed by gc. Create a 404 gc response exception.
317
- const error = (0, runtime_utils_1.responseToException)((0, runtime_utils_1.createResponseError)(404, "DataStore was deleted", request), request);
318
- (0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
319
- eventName: "GC_Deleted_DataStore_Requested",
320
- category: "error",
321
- isSummarizerClient: this.runtime.clientDetails.type === summary_1.summarizerClientType,
322
- headers: JSON.stringify(requestHeaderData),
323
- gcTombstoneEnforcementAllowed: this.runtime.gcTombstoneEnforcementAllowed,
324
- }, undefined /** packagePath */, error);
325
- throw error;
352
+ const request = { url: id };
353
+ throw (0, runtime_utils_1.responseToException)((0, runtime_utils_1.createResponseError)(404, "DataStore was deleted", request), request);
354
+ }
355
+ }
356
+ /**
357
+ * Checks if the data store has not been marked as tombstone by GC or not.
358
+ * @param context - the data store context in question
359
+ * @param requestHeaderData - the request header information to log if the validation detects the data store has been tombstoned
360
+ * @returns true if the data store is tombstoned. Otherwise, returns false.
361
+ */
362
+ checkIfTombstoned(context, requestHeaderData) {
363
+ if (!context.tombstoned) {
364
+ return false;
326
365
  }
366
+ const logErrorEvent = this.throwOnTombstoneLoad && !requestHeaderData.allowTombstone;
367
+ (0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
368
+ eventName: "GC_Tombstone_DataStore_Requested",
369
+ category: logErrorEvent ? "error" : "generic",
370
+ isSummarizerClient: this.runtime.clientDetails.type === summary_1.summarizerClientType,
371
+ id: context.id,
372
+ headers: JSON.stringify(requestHeaderData),
373
+ gcTombstoneEnforcementAllowed: this.runtime.gcTombstoneEnforcementAllowed,
374
+ }, context.isLoaded ? context.packagePath : undefined);
375
+ return true;
327
376
  }
328
377
  /**
329
378
  * Validates that the data store context requested has not been marked as tombstone by GC.
330
- *
331
379
  * @param context - the data store context in question
332
380
  * @param request - the request information to log if the validation detects the data store has been tombstoned
333
- * @param headerData - the request header information to log if the validation detects the data store has been tombstoned
381
+ * @param requestHeaderData - the request header information to log if the validation detects the data store has been tombstoned
334
382
  */
335
- validateNotTombstoned(context, request, headerData) {
336
- if (context.tombstoned) {
337
- const shouldFail = this.throwOnTombstoneLoad && !headerData.allowTombstone;
383
+ validateNotTombstoned(context, requestHeaderData) {
384
+ if (this.checkIfTombstoned(context, requestHeaderData)) {
338
385
  // The requested data store is removed by gc. Create a 404 gc response exception.
386
+ const request = { url: context.id };
339
387
  const error = (0, runtime_utils_1.responseToException)((0, runtime_utils_1.createResponseError)(404, "DataStore was deleted", request, {
340
388
  [containerRuntime_1.TombstoneResponseHeaderKey]: true,
341
389
  }), request);
342
- (0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
343
- eventName: "GC_Tombstone_DataStore_Requested",
344
- category: shouldFail ? "error" : "generic",
345
- isSummarizerClient: this.runtime.clientDetails.type === summary_1.summarizerClientType,
346
- headers: JSON.stringify(headerData),
347
- gcTombstoneEnforcementAllowed: this.runtime.gcTombstoneEnforcementAllowed,
348
- }, context.isLoaded ? context.packagePath : undefined, error);
349
- if (shouldFail) {
390
+ // Throw an error if configured via options and via request headers.
391
+ if (this.throwOnTombstoneLoad && !requestHeaderData.allowTombstone) {
350
392
  throw error;
351
393
  }
352
394
  }
353
395
  }
354
- processSignal(address, message, local) {
355
- const request = { url: address };
356
- this.validateNotDeleted(address, request);
357
- const context = this.contexts.get(address);
396
+ processSignal(fluidDataStoreId, message, local) {
397
+ this.validateNotDeleted(fluidDataStoreId);
398
+ const context = this.contexts.get(fluidDataStoreId);
358
399
  if (!context) {
359
400
  // Attach message may not have been processed yet
360
- (0, common_utils_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
401
+ (0, core_utils_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
361
402
  this.mc.logger.sendTelemetryEvent({
362
403
  eventName: "SignalFluidDataStoreNotFound",
363
- fluidDataStoreId: {
364
- value: address,
365
- tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
366
- },
404
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({
405
+ fluidDataStoreId,
406
+ }),
367
407
  });
368
408
  return;
369
409
  }
370
410
  context.processSignal(message, local);
371
411
  }
372
412
  setConnectionState(connected, clientId) {
373
- for (const [fluidDataStore, context] of this.contexts) {
413
+ for (const [fluidDataStoreId, context] of this.contexts) {
374
414
  try {
375
415
  context.setConnectionState(connected, clientId);
376
416
  }
@@ -378,7 +418,9 @@ class DataStores {
378
418
  this.mc.logger.sendErrorEvent({
379
419
  eventName: "SetConnectionStateError",
380
420
  clientId,
381
- fluidDataStore,
421
+ ...(0, telemetry_utils_1.tagCodeArtifacts)({
422
+ fluidDataStoreId,
423
+ }),
382
424
  details: JSON.stringify({
383
425
  runtimeConnected: this.runtime.connected,
384
426
  connected,
@@ -406,7 +448,7 @@ class DataStores {
406
448
  .filter(([_, context]) => {
407
449
  // Summarizer works only with clients with no local changes. A data store in attaching
408
450
  // state indicates an op was sent to attach a local data store.
409
- (0, common_utils_1.assert)(context.attachState !== container_definitions_1.AttachState.Attaching, 0x588 /* Local data store detected in attaching state during summarize */);
451
+ (0, core_utils_1.assert)(context.attachState !== container_definitions_1.AttachState.Attaching, 0x588 /* Local data store detected in attaching state during summarize */);
410
452
  return context.attachState === container_definitions_1.AttachState.Attached;
411
453
  })
412
454
  .map(async ([contextId, context]) => {
@@ -441,7 +483,7 @@ class DataStores {
441
483
  else {
442
484
  // If this data store is not yet loaded, then there should be no changes in the snapshot from
443
485
  // which it was created as it is detached container. So just use the previous snapshot.
444
- (0, common_utils_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
486
+ (0, core_utils_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
445
487
  dataStoreSummary = (0, runtime_utils_1.convertSnapshotTreeToSummaryTree)(this.baseSnapshot.trees[key]);
446
488
  }
447
489
  builder.addWithStats(key, dataStoreSummary);
@@ -457,7 +499,7 @@ class DataStores {
457
499
  async updateStateBeforeGC() {
458
500
  for (const id of this.dataStoresSinceLastGC) {
459
501
  const context = this.contexts.get(id);
460
- (0, common_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
502
+ (0, core_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
461
503
  if (await context.isRoot()) {
462
504
  // A root data store is basically a reference from the container runtime to the data store.
463
505
  const handle = new datastore_1.FluidObjectHandle(context, id, this.runtime.IFluidHandleContext);
@@ -486,7 +528,7 @@ class DataStores {
486
528
  .filter(([_, context]) => {
487
529
  // Summarizer client and hence GC works only with clients with no local changes. A data store in
488
530
  // attaching state indicates an op was sent to attach a local data store.
489
- (0, common_utils_1.assert)(context.attachState !== container_definitions_1.AttachState.Attaching, 0x589 /* Local data store detected in attaching state while running GC */);
531
+ (0, core_utils_1.assert)(context.attachState !== container_definitions_1.AttachState.Attaching, 0x589 /* Local data store detected in attaching state while running GC */);
490
532
  return context.attachState === container_definitions_1.AttachState.Attached;
491
533
  })
492
534
  .map(async ([contextId, context]) => {
@@ -504,16 +546,15 @@ class DataStores {
504
546
  * @param usedRoutes - The routes that are used in all data stores in this Container.
505
547
  */
506
548
  updateUsedRoutes(usedRoutes) {
507
- var _a;
508
549
  // Get a map of data store ids to routes used in it.
509
550
  const usedDataStoreRoutes = (0, runtime_utils_1.unpackChildNodesUsedRoutes)(usedRoutes);
510
551
  // Verify that the used routes are correct.
511
552
  for (const [id] of usedDataStoreRoutes) {
512
- (0, common_utils_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
553
+ (0, core_utils_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
513
554
  }
514
555
  // Update the used routes in each data store. Used routes is empty for unused data stores.
515
556
  for (const [contextId, context] of this.contexts) {
516
- context.updateUsedRoutes((_a = usedDataStoreRoutes.get(contextId)) !== null && _a !== void 0 ? _a : []);
557
+ context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);
517
558
  }
518
559
  }
519
560
  /**
@@ -529,7 +570,7 @@ class DataStores {
529
570
  continue;
530
571
  }
531
572
  const dataStoreId = pathParts[1];
532
- (0, common_utils_1.assert)(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
573
+ (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
533
574
  // Delete the contexts of unused data stores.
534
575
  this.contexts.delete(dataStoreId);
535
576
  // Delete the summarizer node of the unused data stores.
@@ -540,11 +581,11 @@ class DataStores {
540
581
  * Delete data stores and its objects that are sweep ready.
541
582
  * @param sweepReadyDataStoreRoutes - The routes of data stores and its objects that are sweep ready and should
542
583
  * be deleted.
543
- * @returns - The routes of data stores and its objects that were deleted.
584
+ * @returns The routes of data stores and its objects that were deleted.
544
585
  */
545
586
  deleteSweepReadyNodes(sweepReadyDataStoreRoutes) {
546
587
  // If sweep for data stores is not enabled, return empty list indicating nothing is deleted.
547
- if (this.mc.config.getBoolean(gc_1.sweepDatastoresKey) !== true) {
588
+ if (this.mc.config.getBoolean(gc_1.disableDatastoreSweepKey) === true) {
548
589
  return [];
549
590
  }
550
591
  for (const route of sweepReadyDataStoreRoutes) {
@@ -563,7 +604,7 @@ class DataStores {
563
604
  });
564
605
  }
565
606
  const dataStore = this.contexts.get(dataStoreId);
566
- (0, common_utils_1.assert)(dataStore !== undefined, 0x571 /* Attempting to delete unknown dataStore */);
607
+ (0, core_utils_1.assert)(dataStore !== undefined, 0x571 /* Attempting to delete unknown dataStore */);
567
608
  dataStore.delete();
568
609
  // Delete the contexts of sweep ready data stores.
569
610
  this.contexts.delete(dataStoreId);
@@ -586,7 +627,7 @@ class DataStores {
586
627
  continue;
587
628
  }
588
629
  const dataStoreId = pathParts[1];
589
- (0, common_utils_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
630
+ (0, core_utils_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
590
631
  tombstonedDataStoresSet.add(dataStoreId);
591
632
  }
592
633
  // Update the used routes in each data store. Used routes is empty for unused data stores.
@@ -612,11 +653,10 @@ class DataStores {
612
653
  * Called by GC to retrieve the package path of a data store node with the given path.
613
654
  */
614
655
  async getDataStorePackagePath(nodePath) {
615
- var _a;
616
656
  // If the node belongs to a data store, return its package path. For DDSes, we return the package path of the
617
657
  // data store that contains it.
618
658
  const context = this.contexts.get(nodePath.split("/")[1]);
619
- return (_a = (await (context === null || context === void 0 ? void 0 : context.getInitialSnapshotDetails()))) === null || _a === void 0 ? void 0 : _a.pkg;
659
+ return (await context?.getInitialSnapshotDetails())?.pkg;
620
660
  }
621
661
  /**
622
662
  * Called by GC to determine if a node is for a data store or for an object within a data store (for e.g. DDS).
@@ -642,7 +682,7 @@ function getSummaryForDatastores(snapshot, metadata) {
642
682
  }
643
683
  if ((0, summary_1.rootHasIsolatedChannels)(metadata)) {
644
684
  const datastoresSnapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
645
- (0, common_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
685
+ (0, core_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
646
686
  return datastoresSnapshot;
647
687
  }
648
688
  else {
@@ -653,7 +693,10 @@ function getSummaryForDatastores(snapshot, metadata) {
653
693
  datastoresTrees[key] = value;
654
694
  }
655
695
  }
656
- return Object.assign(Object.assign({}, snapshot), { trees: datastoresTrees });
696
+ return {
697
+ ...snapshot,
698
+ trees: datastoresTrees,
699
+ };
657
700
  }
658
701
  }
659
702
  exports.getSummaryForDatastores = getSummaryForDatastores;