@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.267932 → 2.0.0-dev-rc.5.0.0.270401

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 (309) hide show
  1. package/api-report/{container-runtime.api.md → container-runtime.alpha.api.md} +4 -477
  2. package/api-report/container-runtime.beta.api.md +73 -0
  3. package/api-report/container-runtime.public.api.md +73 -0
  4. package/container-runtime.test-files.tar +0 -0
  5. package/dist/batchTracker.js +5 -1
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager.d.ts +1 -18
  8. package/dist/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager.js +39 -48
  10. package/dist/blobManager.js.map +1 -1
  11. package/dist/channelCollection.d.ts +2 -11
  12. package/dist/channelCollection.d.ts.map +1 -1
  13. package/dist/channelCollection.js +33 -48
  14. package/dist/channelCollection.js.map +1 -1
  15. package/dist/connectionTelemetry.d.ts +1 -2
  16. package/dist/connectionTelemetry.d.ts.map +1 -1
  17. package/dist/connectionTelemetry.js +32 -14
  18. package/dist/connectionTelemetry.js.map +1 -1
  19. package/dist/containerHandleContext.js +4 -0
  20. package/dist/containerHandleContext.js.map +1 -1
  21. package/dist/containerRuntime.d.ts +7 -18
  22. package/dist/containerRuntime.d.ts.map +1 -1
  23. package/dist/containerRuntime.js +145 -43
  24. package/dist/containerRuntime.js.map +1 -1
  25. package/dist/dataStore.js +9 -1
  26. package/dist/dataStore.js.map +1 -1
  27. package/dist/dataStoreContext.d.ts +2 -16
  28. package/dist/dataStoreContext.d.ts.map +1 -1
  29. package/dist/dataStoreContext.js +142 -120
  30. package/dist/dataStoreContext.js.map +1 -1
  31. package/dist/dataStoreContexts.js +29 -28
  32. package/dist/dataStoreContexts.js.map +1 -1
  33. package/dist/dataStoreRegistry.js +1 -0
  34. package/dist/dataStoreRegistry.js.map +1 -1
  35. package/dist/deltaManagerProxies.d.ts +4 -4
  36. package/dist/deltaManagerProxies.d.ts.map +1 -1
  37. package/dist/deltaManagerProxies.js +33 -28
  38. package/dist/deltaManagerProxies.js.map +1 -1
  39. package/dist/deltaScheduler.d.ts +1 -2
  40. package/dist/deltaScheduler.d.ts.map +1 -1
  41. package/dist/deltaScheduler.js +13 -9
  42. package/dist/deltaScheduler.js.map +1 -1
  43. package/dist/error.js +2 -1
  44. package/dist/error.js.map +1 -1
  45. package/dist/gc/garbageCollection.d.ts.map +1 -1
  46. package/dist/gc/garbageCollection.js +37 -17
  47. package/dist/gc/garbageCollection.js.map +1 -1
  48. package/dist/gc/gcDefinitions.d.ts +0 -4
  49. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  50. package/dist/gc/gcDefinitions.js +1 -3
  51. package/dist/gc/gcDefinitions.js.map +1 -1
  52. package/dist/gc/gcSummaryStateTracker.js +19 -14
  53. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  54. package/dist/gc/gcTelemetry.js +12 -5
  55. package/dist/gc/gcTelemetry.js.map +1 -1
  56. package/dist/gc/gcUnreferencedStateTracker.js +12 -1
  57. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  58. package/dist/gc/index.d.ts +1 -1
  59. package/dist/gc/index.d.ts.map +1 -1
  60. package/dist/gc/index.js +1 -2
  61. package/dist/gc/index.js.map +1 -1
  62. package/dist/messageTypes.d.ts +1 -1
  63. package/dist/messageTypes.d.ts.map +1 -1
  64. package/dist/messageTypes.js.map +1 -1
  65. package/dist/opLifecycle/batchManager.js +5 -3
  66. package/dist/opLifecycle/batchManager.js.map +1 -1
  67. package/dist/opLifecycle/opCompressor.js +1 -0
  68. package/dist/opLifecycle/opCompressor.js.map +1 -1
  69. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  70. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  71. package/dist/opLifecycle/opDecompressor.js +6 -4
  72. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  73. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  74. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  75. package/dist/opLifecycle/opGroupingManager.js +3 -1
  76. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  77. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  78. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  79. package/dist/opLifecycle/opSplitter.js +6 -0
  80. package/dist/opLifecycle/opSplitter.js.map +1 -1
  81. package/dist/opLifecycle/outbox.js +15 -10
  82. package/dist/opLifecycle/outbox.js.map +1 -1
  83. package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  84. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  85. package/dist/opLifecycle/remoteMessageProcessor.js +3 -0
  86. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  87. package/dist/opProperties.d.ts +1 -1
  88. package/dist/opProperties.d.ts.map +1 -1
  89. package/dist/opProperties.js.map +1 -1
  90. package/dist/packageVersion.d.ts +1 -1
  91. package/dist/packageVersion.js +1 -1
  92. package/dist/packageVersion.js.map +1 -1
  93. package/dist/pendingStateManager.d.ts.map +1 -1
  94. package/dist/pendingStateManager.js +34 -18
  95. package/dist/pendingStateManager.js.map +1 -1
  96. package/dist/scheduleManager.d.ts +1 -2
  97. package/dist/scheduleManager.d.ts.map +1 -1
  98. package/dist/scheduleManager.js +15 -4
  99. package/dist/scheduleManager.js.map +1 -1
  100. package/dist/storageServiceWithAttachBlobs.js +1 -0
  101. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  102. package/dist/summary/documentSchema.js +17 -1
  103. package/dist/summary/documentSchema.js.map +1 -1
  104. package/dist/summary/orderedClientElection.js +19 -11
  105. package/dist/summary/orderedClientElection.js.map +1 -1
  106. package/dist/summary/runWhileConnectedCoordinator.js +4 -2
  107. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  108. package/dist/summary/runningSummarizer.d.ts +1 -1
  109. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  110. package/dist/summary/runningSummarizer.js +56 -38
  111. package/dist/summary/runningSummarizer.js.map +1 -1
  112. package/dist/summary/summarizer.js +17 -8
  113. package/dist/summary/summarizer.js.map +1 -1
  114. package/dist/summary/summarizerClientElection.js +18 -7
  115. package/dist/summary/summarizerClientElection.js.map +1 -1
  116. package/dist/summary/summarizerHeuristics.js +30 -25
  117. package/dist/summary/summarizerHeuristics.js.map +1 -1
  118. package/dist/summary/summarizerNode/summarizerNode.d.ts +1 -2
  119. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  120. package/dist/summary/summarizerNode/summarizerNode.js +12 -3
  121. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  122. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  123. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  124. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
  125. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  126. package/dist/summary/summarizerTypes.d.ts +2 -2
  127. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  128. package/dist/summary/summarizerTypes.js.map +1 -1
  129. package/dist/summary/summaryCollection.d.ts +1 -2
  130. package/dist/summary/summaryCollection.d.ts.map +1 -1
  131. package/dist/summary/summaryCollection.js +23 -11
  132. package/dist/summary/summaryCollection.js.map +1 -1
  133. package/dist/summary/summaryFormat.d.ts +1 -2
  134. package/dist/summary/summaryFormat.d.ts.map +1 -1
  135. package/dist/summary/summaryFormat.js.map +1 -1
  136. package/dist/summary/summaryGenerator.js +12 -5
  137. package/dist/summary/summaryGenerator.js.map +1 -1
  138. package/dist/summary/summaryManager.js +58 -48
  139. package/dist/summary/summaryManager.js.map +1 -1
  140. package/dist/throttler.js +4 -1
  141. package/dist/throttler.js.map +1 -1
  142. package/lib/batchTracker.js +5 -1
  143. package/lib/batchTracker.js.map +1 -1
  144. package/lib/blobManager.d.ts +1 -18
  145. package/lib/blobManager.d.ts.map +1 -1
  146. package/lib/blobManager.js +39 -48
  147. package/lib/blobManager.js.map +1 -1
  148. package/lib/channelCollection.d.ts +2 -11
  149. package/lib/channelCollection.d.ts.map +1 -1
  150. package/lib/channelCollection.js +34 -49
  151. package/lib/channelCollection.js.map +1 -1
  152. package/lib/connectionTelemetry.d.ts +1 -2
  153. package/lib/connectionTelemetry.d.ts.map +1 -1
  154. package/lib/connectionTelemetry.js +33 -15
  155. package/lib/connectionTelemetry.js.map +1 -1
  156. package/lib/containerHandleContext.js +4 -0
  157. package/lib/containerHandleContext.js.map +1 -1
  158. package/lib/containerRuntime.d.ts +7 -18
  159. package/lib/containerRuntime.d.ts.map +1 -1
  160. package/lib/containerRuntime.js +145 -43
  161. package/lib/containerRuntime.js.map +1 -1
  162. package/lib/dataStore.js +9 -1
  163. package/lib/dataStore.js.map +1 -1
  164. package/lib/dataStoreContext.d.ts +2 -16
  165. package/lib/dataStoreContext.d.ts.map +1 -1
  166. package/lib/dataStoreContext.js +144 -122
  167. package/lib/dataStoreContext.js.map +1 -1
  168. package/lib/dataStoreContexts.js +29 -28
  169. package/lib/dataStoreContexts.js.map +1 -1
  170. package/lib/dataStoreRegistry.js +1 -0
  171. package/lib/dataStoreRegistry.js.map +1 -1
  172. package/lib/deltaManagerProxies.d.ts +4 -4
  173. package/lib/deltaManagerProxies.d.ts.map +1 -1
  174. package/lib/deltaManagerProxies.js +33 -28
  175. package/lib/deltaManagerProxies.js.map +1 -1
  176. package/lib/deltaScheduler.d.ts +1 -2
  177. package/lib/deltaScheduler.d.ts.map +1 -1
  178. package/lib/deltaScheduler.js +13 -9
  179. package/lib/deltaScheduler.js.map +1 -1
  180. package/lib/error.js +2 -1
  181. package/lib/error.js.map +1 -1
  182. package/lib/gc/garbageCollection.d.ts.map +1 -1
  183. package/lib/gc/garbageCollection.js +37 -17
  184. package/lib/gc/garbageCollection.js.map +1 -1
  185. package/lib/gc/gcDefinitions.d.ts +0 -4
  186. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  187. package/lib/gc/gcDefinitions.js +0 -2
  188. package/lib/gc/gcDefinitions.js.map +1 -1
  189. package/lib/gc/gcSummaryStateTracker.js +19 -14
  190. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  191. package/lib/gc/gcTelemetry.js +12 -5
  192. package/lib/gc/gcTelemetry.js.map +1 -1
  193. package/lib/gc/gcUnreferencedStateTracker.js +12 -1
  194. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  195. package/lib/gc/index.d.ts +1 -1
  196. package/lib/gc/index.d.ts.map +1 -1
  197. package/lib/gc/index.js +1 -1
  198. package/lib/gc/index.js.map +1 -1
  199. package/lib/messageTypes.d.ts +1 -1
  200. package/lib/messageTypes.d.ts.map +1 -1
  201. package/lib/messageTypes.js.map +1 -1
  202. package/lib/opLifecycle/batchManager.js +5 -3
  203. package/lib/opLifecycle/batchManager.js.map +1 -1
  204. package/lib/opLifecycle/opCompressor.js +1 -0
  205. package/lib/opLifecycle/opCompressor.js.map +1 -1
  206. package/lib/opLifecycle/opDecompressor.d.ts +1 -1
  207. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  208. package/lib/opLifecycle/opDecompressor.js +6 -4
  209. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  210. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  211. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  212. package/lib/opLifecycle/opGroupingManager.js +3 -1
  213. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  214. package/lib/opLifecycle/opSplitter.d.ts +1 -1
  215. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  216. package/lib/opLifecycle/opSplitter.js +6 -0
  217. package/lib/opLifecycle/opSplitter.js.map +1 -1
  218. package/lib/opLifecycle/outbox.js +15 -10
  219. package/lib/opLifecycle/outbox.js.map +1 -1
  220. package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  221. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  222. package/lib/opLifecycle/remoteMessageProcessor.js +4 -1
  223. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  224. package/lib/opProperties.d.ts +1 -1
  225. package/lib/opProperties.d.ts.map +1 -1
  226. package/lib/opProperties.js.map +1 -1
  227. package/lib/packageVersion.d.ts +1 -1
  228. package/lib/packageVersion.js +1 -1
  229. package/lib/packageVersion.js.map +1 -1
  230. package/lib/pendingStateManager.d.ts.map +1 -1
  231. package/lib/pendingStateManager.js +34 -18
  232. package/lib/pendingStateManager.js.map +1 -1
  233. package/lib/scheduleManager.d.ts +1 -2
  234. package/lib/scheduleManager.d.ts.map +1 -1
  235. package/lib/scheduleManager.js +15 -4
  236. package/lib/scheduleManager.js.map +1 -1
  237. package/lib/storageServiceWithAttachBlobs.js +1 -0
  238. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  239. package/lib/summary/documentSchema.js +17 -1
  240. package/lib/summary/documentSchema.js.map +1 -1
  241. package/lib/summary/orderedClientElection.js +19 -11
  242. package/lib/summary/orderedClientElection.js.map +1 -1
  243. package/lib/summary/runWhileConnectedCoordinator.js +4 -2
  244. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  245. package/lib/summary/runningSummarizer.d.ts +1 -1
  246. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  247. package/lib/summary/runningSummarizer.js +57 -39
  248. package/lib/summary/runningSummarizer.js.map +1 -1
  249. package/lib/summary/summarizer.js +17 -8
  250. package/lib/summary/summarizer.js.map +1 -1
  251. package/lib/summary/summarizerClientElection.js +18 -7
  252. package/lib/summary/summarizerClientElection.js.map +1 -1
  253. package/lib/summary/summarizerHeuristics.js +30 -25
  254. package/lib/summary/summarizerHeuristics.js.map +1 -1
  255. package/lib/summary/summarizerNode/summarizerNode.d.ts +1 -2
  256. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  257. package/lib/summary/summarizerNode/summarizerNode.js +12 -3
  258. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  259. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  260. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  261. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
  262. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  263. package/lib/summary/summarizerTypes.d.ts +2 -2
  264. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  265. package/lib/summary/summarizerTypes.js.map +1 -1
  266. package/lib/summary/summaryCollection.d.ts +1 -2
  267. package/lib/summary/summaryCollection.d.ts.map +1 -1
  268. package/lib/summary/summaryCollection.js +23 -11
  269. package/lib/summary/summaryCollection.js.map +1 -1
  270. package/lib/summary/summaryFormat.d.ts +1 -2
  271. package/lib/summary/summaryFormat.d.ts.map +1 -1
  272. package/lib/summary/summaryFormat.js.map +1 -1
  273. package/lib/summary/summaryGenerator.js +12 -5
  274. package/lib/summary/summaryGenerator.js.map +1 -1
  275. package/lib/summary/summaryManager.js +58 -48
  276. package/lib/summary/summaryManager.js.map +1 -1
  277. package/lib/throttler.js +4 -1
  278. package/lib/throttler.js.map +1 -1
  279. package/package.json +19 -19
  280. package/src/batchTracker.ts +1 -1
  281. package/src/blobManager.ts +1 -39
  282. package/src/channelCollection.ts +19 -72
  283. package/src/connectionTelemetry.ts +5 -2
  284. package/src/containerRuntime.ts +9 -32
  285. package/src/dataStoreContext.ts +4 -38
  286. package/src/deltaManagerProxies.ts +3 -5
  287. package/src/deltaScheduler.ts +4 -2
  288. package/src/gc/garbageCollection.ts +0 -2
  289. package/src/gc/gcDefinitions.ts +0 -4
  290. package/src/gc/index.ts +0 -1
  291. package/src/messageTypes.ts +1 -1
  292. package/src/opLifecycle/opDecompressor.ts +1 -1
  293. package/src/opLifecycle/opGroupingManager.ts +1 -1
  294. package/src/opLifecycle/opSplitter.ts +1 -1
  295. package/src/opLifecycle/remoteMessageProcessor.ts +4 -2
  296. package/src/opProperties.ts +4 -2
  297. package/src/packageVersion.ts +1 -1
  298. package/src/pendingStateManager.ts +16 -5
  299. package/src/scheduleManager.ts +4 -2
  300. package/src/summary/images/appTree.png +0 -0
  301. package/src/summary/images/protocolAndAppTree.png +0 -0
  302. package/src/summary/images/summaryTree.png +0 -0
  303. package/src/summary/runningSummarizer.ts +5 -2
  304. package/src/summary/summarizerNode/summarizerNode.ts +5 -2
  305. package/src/summary/summarizerTypes.ts +5 -2
  306. package/src/summary/summaryCollection.ts +1 -1
  307. package/src/summary/summaryFormat.ts +2 -1
  308. package/src/summary/summaryFormats.md +160 -0
  309. package/tsconfig.json +2 -0
package/dist/dataStore.js CHANGED
@@ -29,6 +29,15 @@ var AliasState;
29
29
  AliasState["None"] = "None";
30
30
  })(AliasState || (AliasState = {}));
31
31
  class DataStore {
32
+ fluidDataStoreChannel;
33
+ internalId;
34
+ channelCollection;
35
+ logger;
36
+ parentContext;
37
+ aliasState = AliasState.None;
38
+ alias;
39
+ pendingAliases;
40
+ aliasResult;
32
41
  /**
33
42
  * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}
34
43
  */
@@ -120,7 +129,6 @@ class DataStore {
120
129
  this.channelCollection = channelCollection;
121
130
  this.logger = logger;
122
131
  this.parentContext = parentContext;
123
- this.aliasState = AliasState.None;
124
132
  this.pendingAliases = channelCollection.pendingAliases;
125
133
  }
126
134
  async ackBasedPromise(executor) {
@@ -1 +1 @@
1
- {"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { FluidObject } from \"@fluidframework/core-interfaces\";\nimport { type IFluidHandleInternal } from \"@fluidframework/core-interfaces/internal\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport {\n\tAliasResult,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport {\n\tITelemetryLoggerExt,\n\tTelemetryDataTag,\n\tUsageError,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport { ChannelCollection } from \"./channelCollection.js\";\nimport { ContainerMessageType } from \"./messageTypes.js\";\n\n/**\n * Interface for an op to be used for assigning an\n * alias to a datastore\n */\nexport interface IDataStoreAliasMessage {\n\t/** The internal id of the datastore */\n\treadonly internalId: string;\n\t/** The alias name to be assigned to the datastore */\n\treadonly alias: string;\n}\n\n/**\n * Type guard that returns true if the given alias message is actually an instance of\n * a class which implements {@link IDataStoreAliasMessage}\n * @param maybeDataStoreAliasMessage - message object to be validated\n * @returns True if the {@link IDataStoreAliasMessage} is fully implemented, false otherwise\n */\nexport const isDataStoreAliasMessage = (\n\tmaybeDataStoreAliasMessage: any,\n): maybeDataStoreAliasMessage is IDataStoreAliasMessage => {\n\treturn (\n\t\ttypeof maybeDataStoreAliasMessage?.internalId === \"string\" &&\n\t\ttypeof maybeDataStoreAliasMessage?.alias === \"string\"\n\t);\n};\n\nexport const channelToDataStore = (\n\tfluidDataStoreChannel: IFluidDataStoreChannel,\n\tinternalId: string,\n\tchannelCollection: ChannelCollection,\n\tlogger: ITelemetryLoggerExt,\n): IDataStore => new DataStore(fluidDataStoreChannel, internalId, channelCollection, logger);\n\nenum AliasState {\n\tAliased = \"Aliased\",\n\tAliasing = \"Aliasing\",\n\tNone = \"None\",\n}\n\nclass DataStore implements IDataStore {\n\tprivate aliasState: AliasState = AliasState.None;\n\tprivate alias: string | undefined;\n\tprivate readonly pendingAliases: Map<string, Promise<AliasResult>>;\n\tprivate aliasResult: Promise<AliasResult> | undefined;\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}\n\t */\n\tasync trySetAlias(alias: string): Promise<AliasResult> {\n\t\tif (alias.includes(\"/\")) {\n\t\t\tthrow new UsageError(`The alias cannot contain slashes: '${alias}'`);\n\t\t}\n\n\t\tswitch (this.aliasState) {\n\t\t\t// If we're already aliasing, check if it's for the same value and return\n\t\t\t// the stored promise, otherwise return 'AlreadyAliased'\n\t\t\tcase AliasState.Aliasing:\n\t\t\t\tassert(\n\t\t\t\t\tthis.aliasResult !== undefined,\n\t\t\t\t\t0x316 /* There should be a cached promise of in-progress aliasing */,\n\t\t\t\t);\n\t\t\t\tawait this.aliasResult;\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\n\t\t\t// If this datastore is already aliased, return true only if this\n\t\t\t// is a repeated call for the same alias\n\t\t\tcase AliasState.Aliased:\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\n\t\t\tcase AliasState.None: {\n\t\t\t\tconst existingAlias = this.pendingAliases.get(alias);\n\t\t\t\tif (existingAlias !== undefined) {\n\t\t\t\t\t// There is already another datastore which will be aliased\n\t\t\t\t\t// to the same name\n\t\t\t\t\treturn \"Conflict\";\n\t\t\t\t}\n\n\t\t\t\t// There is no current or past alias operation for this datastore,\n\t\t\t\t// or for this alias, so it is safe to continue execution\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tunreachableCase(this.aliasState);\n\t\t}\n\n\t\tthis.aliasState = AliasState.Aliasing;\n\t\tthis.aliasResult = this.trySetAliasInternal(alias);\n\t\tthis.pendingAliases.set(alias, this.aliasResult);\n\t\treturn this.aliasResult;\n\t}\n\n\tasync trySetAliasInternal(alias: string): Promise<AliasResult> {\n\t\tconst message: IDataStoreAliasMessage = {\n\t\t\tinternalId: this.internalId,\n\t\t\talias,\n\t\t};\n\t\tthis.fluidDataStoreChannel.makeVisibleAndAttachGraph();\n\n\t\tif (this.parentContext.attachState === AttachState.Detached) {\n\t\t\tconst localResult = this.channelCollection.processAliasMessageCore(\n\t\t\t\tthis.internalId,\n\t\t\t\talias,\n\t\t\t);\n\t\t\t// Explicitly lock-out future attempts of aliasing,\n\t\t\t// regardless of result\n\t\t\tthis.aliasState = AliasState.Aliased;\n\t\t\treturn localResult ? \"Success\" : \"Conflict\";\n\t\t}\n\n\t\tconst aliased = await this.ackBasedPromise<boolean>((resolve) => {\n\t\t\tthis.parentContext.submitMessage(ContainerMessageType.Alias, message, resolve);\n\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.logger.sendErrorEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"AliasingException\",\n\t\t\t\t\t\talias: {\n\t\t\t\t\t\t\tvalue: alias,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.UserData,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinternalId: {\n\t\t\t\t\t\t\tvalue: this.internalId,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.pendingAliases.delete(alias);\n\t\t\t});\n\n\t\tif (!aliased) {\n\t\t\tthis.aliasState = AliasState.None;\n\t\t\tthis.aliasResult = undefined;\n\t\t\treturn \"Conflict\";\n\t\t}\n\n\t\tthis.alias = alias;\n\t\tthis.aliasState = AliasState.Aliased;\n\t\treturn \"Success\";\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.entryPoint}\n\t */\n\tget entryPoint(): IFluidHandleInternal<FluidObject> {\n\t\treturn this.fluidDataStoreChannel.entryPoint;\n\t}\n\n\tconstructor(\n\t\tprivate readonly fluidDataStoreChannel: IFluidDataStoreChannel,\n\t\tprivate readonly internalId: string,\n\t\tprivate readonly channelCollection: ChannelCollection,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprivate readonly parentContext = channelCollection.parentContext,\n\t) {\n\t\tthis.pendingAliases = channelCollection.pendingAliases;\n\t}\n\n\tprivate async ackBasedPromise<T>(\n\t\texecutor: (\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\n\t\t\treject: (reason?: any) => void,\n\t\t) => void,\n\t): Promise<T> {\n\t\tlet rejectBecauseDispose: () => void;\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\trejectBecauseDispose = () =>\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\"ContainerRuntime disposed while this ack-based Promise was pending\"),\n\t\t\t\t);\n\n\t\t\tif (this.parentContext.containerRuntime.disposed) {\n\t\t\t\trejectBecauseDispose();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.parentContext.containerRuntime.on(\"dispose\", rejectBecauseDispose);\n\t\t\texecutor(resolve, reject);\n\t\t}).finally(() => {\n\t\t\tthis.parentContext.containerRuntime.off(\"dispose\", rejectBecauseDispose);\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { FluidObject } from \"@fluidframework/core-interfaces\";\nimport { type IFluidHandleInternal } from \"@fluidframework/core-interfaces/internal\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport {\n\tAliasResult,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport {\n\tITelemetryLoggerExt,\n\tTelemetryDataTag,\n\tUsageError,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport { ChannelCollection } from \"./channelCollection.js\";\nimport { ContainerMessageType } from \"./messageTypes.js\";\n\n/**\n * Interface for an op to be used for assigning an\n * alias to a datastore\n */\nexport interface IDataStoreAliasMessage {\n\t/** The internal id of the datastore */\n\treadonly internalId: string;\n\t/** The alias name to be assigned to the datastore */\n\treadonly alias: string;\n}\n\n/**\n * Type guard that returns true if the given alias message is actually an instance of\n * a class which implements {@link IDataStoreAliasMessage}\n * @param maybeDataStoreAliasMessage - message object to be validated\n * @returns True if the {@link IDataStoreAliasMessage} is fully implemented, false otherwise\n */\nexport const isDataStoreAliasMessage = (\n\tmaybeDataStoreAliasMessage: any,\n): maybeDataStoreAliasMessage is IDataStoreAliasMessage => {\n\treturn (\n\t\ttypeof maybeDataStoreAliasMessage?.internalId === \"string\" &&\n\t\ttypeof maybeDataStoreAliasMessage?.alias === \"string\"\n\t);\n};\n\nexport const channelToDataStore = (\n\tfluidDataStoreChannel: IFluidDataStoreChannel,\n\tinternalId: string,\n\tchannelCollection: ChannelCollection,\n\tlogger: ITelemetryLoggerExt,\n): IDataStore => new DataStore(fluidDataStoreChannel, internalId, channelCollection, logger);\n\nenum AliasState {\n\tAliased = \"Aliased\",\n\tAliasing = \"Aliasing\",\n\tNone = \"None\",\n}\n\nclass DataStore implements IDataStore {\n\tprivate aliasState: AliasState = AliasState.None;\n\tprivate alias: string | undefined;\n\tprivate readonly pendingAliases: Map<string, Promise<AliasResult>>;\n\tprivate aliasResult: Promise<AliasResult> | undefined;\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}\n\t */\n\tasync trySetAlias(alias: string): Promise<AliasResult> {\n\t\tif (alias.includes(\"/\")) {\n\t\t\tthrow new UsageError(`The alias cannot contain slashes: '${alias}'`);\n\t\t}\n\n\t\tswitch (this.aliasState) {\n\t\t\t// If we're already aliasing, check if it's for the same value and return\n\t\t\t// the stored promise, otherwise return 'AlreadyAliased'\n\t\t\tcase AliasState.Aliasing:\n\t\t\t\tassert(\n\t\t\t\t\tthis.aliasResult !== undefined,\n\t\t\t\t\t0x316 /* There should be a cached promise of in-progress aliasing */,\n\t\t\t\t);\n\t\t\t\tawait this.aliasResult;\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\n\t\t\t// If this datastore is already aliased, return true only if this\n\t\t\t// is a repeated call for the same alias\n\t\t\tcase AliasState.Aliased:\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\n\t\t\tcase AliasState.None: {\n\t\t\t\tconst existingAlias = this.pendingAliases.get(alias);\n\t\t\t\tif (existingAlias !== undefined) {\n\t\t\t\t\t// There is already another datastore which will be aliased\n\t\t\t\t\t// to the same name\n\t\t\t\t\treturn \"Conflict\";\n\t\t\t\t}\n\n\t\t\t\t// There is no current or past alias operation for this datastore,\n\t\t\t\t// or for this alias, so it is safe to continue execution\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tunreachableCase(this.aliasState);\n\t\t}\n\n\t\tthis.aliasState = AliasState.Aliasing;\n\t\tthis.aliasResult = this.trySetAliasInternal(alias);\n\t\tthis.pendingAliases.set(alias, this.aliasResult);\n\t\treturn this.aliasResult;\n\t}\n\n\tasync trySetAliasInternal(alias: string): Promise<AliasResult> {\n\t\tconst message: IDataStoreAliasMessage = {\n\t\t\tinternalId: this.internalId,\n\t\t\talias,\n\t\t};\n\t\tthis.fluidDataStoreChannel.makeVisibleAndAttachGraph();\n\n\t\tif (this.parentContext.attachState === AttachState.Detached) {\n\t\t\tconst localResult = this.channelCollection.processAliasMessageCore(\n\t\t\t\tthis.internalId,\n\t\t\t\talias,\n\t\t\t);\n\t\t\t// Explicitly lock-out future attempts of aliasing,\n\t\t\t// regardless of result\n\t\t\tthis.aliasState = AliasState.Aliased;\n\t\t\treturn localResult ? \"Success\" : \"Conflict\";\n\t\t}\n\n\t\tconst aliased = await this.ackBasedPromise<boolean>((resolve) => {\n\t\t\tthis.parentContext.submitMessage(ContainerMessageType.Alias, message, resolve);\n\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.logger.sendErrorEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"AliasingException\",\n\t\t\t\t\t\talias: {\n\t\t\t\t\t\t\tvalue: alias,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.UserData,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinternalId: {\n\t\t\t\t\t\t\tvalue: this.internalId,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.pendingAliases.delete(alias);\n\t\t\t});\n\n\t\tif (!aliased) {\n\t\t\tthis.aliasState = AliasState.None;\n\t\t\tthis.aliasResult = undefined;\n\t\t\treturn \"Conflict\";\n\t\t}\n\n\t\tthis.alias = alias;\n\t\tthis.aliasState = AliasState.Aliased;\n\t\treturn \"Success\";\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.entryPoint}\n\t */\n\tget entryPoint(): IFluidHandleInternal<FluidObject> {\n\t\treturn this.fluidDataStoreChannel.entryPoint;\n\t}\n\n\tconstructor(\n\t\tprivate readonly fluidDataStoreChannel: IFluidDataStoreChannel,\n\t\tprivate readonly internalId: string,\n\t\tprivate readonly channelCollection: ChannelCollection,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprivate readonly parentContext = channelCollection.parentContext,\n\t) {\n\t\tthis.pendingAliases = channelCollection.pendingAliases;\n\t}\n\n\tprivate async ackBasedPromise<T>(\n\t\texecutor: (\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\n\t\t\treject: (reason?: any) => void,\n\t\t) => void,\n\t): Promise<T> {\n\t\tlet rejectBecauseDispose: () => void;\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\trejectBecauseDispose = () =>\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\"ContainerRuntime disposed while this ack-based Promise was pending\"),\n\t\t\t\t);\n\n\t\t\tif (this.parentContext.containerRuntime.disposed) {\n\t\t\t\trejectBecauseDispose();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.parentContext.containerRuntime.on(\"dispose\", rejectBecauseDispose);\n\t\t\texecutor(resolve, reject);\n\t\t}).finally(() => {\n\t\t\tthis.parentContext.containerRuntime.off(\"dispose\", rejectBecauseDispose);\n\t\t});\n\t}\n}\n"]}
@@ -7,8 +7,8 @@ import { AttachState, IAudience } from "@fluidframework/container-definitions";
7
7
  import { IDeltaManager } from "@fluidframework/container-definitions/internal";
8
8
  import { FluidObject, IDisposable, IRequest, IResponse, type IEvent } from "@fluidframework/core-interfaces";
9
9
  import { type IFluidHandleInternal } from "@fluidframework/core-interfaces/internal";
10
- import { IClientDetails, IQuorumClients, ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
11
- import { IDocumentStorageService, type ISnapshot, IDocumentMessage, ISnapshotTree, ITreeEntry } from "@fluidframework/driver-definitions/internal";
10
+ import { IClientDetails, IQuorumClients } from "@fluidframework/driver-definitions";
11
+ import { IDocumentStorageService, type ISnapshot, IDocumentMessage, ISnapshotTree, ITreeEntry, ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
12
12
  import type { IIdCompressor } from "@fluidframework/id-compressor";
13
13
  import { ISummaryTreeWithStats, ITelemetryContext, IGarbageCollectionData, CreateChildSummarizerNodeFn, CreateChildSummarizerNodeParam, IContainerRuntimeBase, IDataStore, IFluidDataStoreChannel, IFluidDataStoreContext, IFluidDataStoreContextDetached, IFluidDataStoreRegistry, IFluidParentContext, IGarbageCollectionDetailsBase, IProvideFluidDataStoreFactory, ISummarizeResult, ISummarizerNodeWithGC, SummarizeInternalFn, IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal";
14
14
  import { MonitoringContext } from "@fluidframework/telemetry-utils/internal";
@@ -224,20 +224,6 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
224
224
  */
225
225
  updateUsedRoutes(usedRoutes: string[]): void;
226
226
  /**
227
- * @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
228
- * It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
229
- *
230
- * Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
231
- *
232
- * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
233
- * all references added in the system.
234
- * @param srcHandle - The handle of the node that added the reference.
235
- * @param outboundHandle - The handle of the outbound node that is referenced.
236
- */
237
- addedGCOutboundReference(srcHandle: IFluidHandleInternal, outboundHandle: IFluidHandleInternal): void;
238
- /**
239
- * (Same as @see addedGCOutboundReference, but with string paths instead of handles)
240
- *
241
227
  * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
242
228
  * all references added in the system.
243
229
  *
@@ -1 +1 @@
1
- {"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EACN,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EAET,KAAK,MAAM,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EACN,uBAAuB,EACvB,KAAK,SAAS,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,yBAAyB,EACzB,MAAM,6CAA6C,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,8BAA8B,EAE9B,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAE7B,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EAGnB,qBAAqB,EACrB,MAAM,8CAA8C,CAAC;AAKtD,OAAO,EAIN,iBAAiB,EAMjB,MAAM,0CAA0C,CAAC;AA0BlD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,GAAG,UAAU,CAGjG;AAED,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAChC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,8BAA+B,SAAQ,sBAAsB;IAC7E,aAAa,CACZ,aAAa,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC;QACF,aAAa,EAAE,qBAAqB,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;IAEF,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEvD,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAiC,SAAQ,2BAA2B;IACpF,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAC1C;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,wCAAyC,SAAQ,gCAAgC;IACjG,QAAQ,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,UAAU,CAAC;CAC/E;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAkC,SAAQ,2BAA2B;IACrF,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;CACzD;AAID,gBAAgB;AAChB,MAAM,WAAW,4BAA6B,SAAQ,MAAM;IAC3D,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,OAAE;CACxD;AAED;;;GAGG;AACH,8BAAsB,qBACrB,SAAQ,iBAAiB,CAAC,4BAA4B,CACtD,YAAW,8BAA8B,EAAE,mBAAmB,EAAE,WAAW;IA4J1E,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,gBAAgB,EAAE,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IA5JtC,IAAW,WAAW,IAAI,SAAS,MAAM,EAAE,CAG1C;IAED,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAEjD;IAED,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,UAAU,mEAEpB;IAED,IAAW,YAAY,IAAI,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAEpF;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,mBAAmB,2EAE7B;IAED,IAAW,gBAAgB,IAAI,qBAAqB,CAEnD;IAGM,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAIxD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,YAAY,IAAI,aAAa,GAAG,SAAS,CAEnD;IAED,IAAW,YAAY,IAAI,aAAa,GAAG,SAAS,CAEnD;IAED,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,YAElB;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAS;IAC5B,IAAW,UAAU,YAEpB;IACD,mEAAmE;IACnE,SAAgB,uBAAuB,EAAE,OAAO,CAAC;IACjD,SAAgB,6BAA6B,EAAE,OAAO,CAAC;IAEvD,2GAA2G;IAC3G,SAAS,CAAC,OAAO,EAAE,OAAO,CAAS;IAEnC,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED,IAAW,uBAAuB,IAAI,uBAAuB,GAAG,SAAS,CAExE;IAED,OAAO,CAAC,0BAA0B,CAAqB;IAEvD;;;;;OAKG;IACU,MAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBtE;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,IAAI,OAAO;IAInC,SAAS,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAExD,SAAS,CAAC,uBAAuB,UAAS;IAC1C,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,SAAS,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,SAAS,CAAM;IAChE,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;IAChE,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACnD,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,OAAO,CAAC,eAAe,CAAkB;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAQ;IAExD;;;;OAIG;IACH,OAAO,CAAC,0BAA0B,CAAS;IAI3C,OAAO,CAAC,cAAc,CAAuB;IAE7C,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwB;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,SAAgB,OAAO,EAAE,uBAAuB,CAAC;IACjD,SAAgB,KAAK,EAAE,WAAW,CAAC;IAEnC,SAAgB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;gBAGjC,KAAK,EAAE,2BAA2B,EACjB,QAAQ,EAAE,OAAO,EAClB,gBAAgB,EAAE,OAAO,EACxB,oBAAoB,EAAE,MAAM,IAAI;IAyD3C,OAAO,IAAI,IAAI;IAiBtB;;;;OAIG;IACI,MAAM;IAIN,YAAY,CAAC,SAAS,EAAE,OAAO;aAQtB,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,GAAG,IAAI;IAE/F,OAAO,CAAC,qBAAqB;IAchB,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC;cAqBvC,sBAAsB;YAoCxB,WAAW;IAuBzB;;;;;OAKG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;IAexD,OAAO,CACb,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,GACtB,IAAI;IAwBA,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAWnE,SAAS,IAAI,cAAc;IAI3B,WAAW,IAAI,SAAS;IAI/B;;;;;OAKG;IACU,SAAS,CACrB,QAAQ,GAAE,OAAe,EACzB,UAAU,GAAE,OAAc,EAC1B,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,gBAAgB,CAAC;YAId,iBAAiB;IA2C/B;;;;;;;OAOG;IACU,SAAS,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIhF;;;;OAIG;YACW,iBAAiB;IAU/B;;;;;;;;;;;;;;;OAeG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE;IAkB5C;;;;;;OAMG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAI5D;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAKpD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAShF;;;;;;;;OAQG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAe7C;;;;;OAKG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM;IAO3E;;;OAGG;IACI,kBAAkB;IAKzB,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,sBAAsB;IAiB3D,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB;cAyBhD,WAAW,CAAC,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO;IA0BjE,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO7E;;;;;OAKG;aACa,aAAa,CAC5B,aAAa,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC;QACF,aAAa,EAAE,qBAAqB,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACb;aAEe,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAEtE;;;;OAIG;IACI,eAAe,IAAI,IAAI;IAI9B;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,6BAA6B,CAAC;IAIhE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAK9D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAUxD,cAAc,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5D,OAAO,CAAC,eAAe;IA4CvB;;;;OAIG;IACH,SAAS,CAAC,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAoBnE,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B,uBAExE,mBAAmB,eACzB,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,QAAQ,sBAAsB,CAAC;IAW7D,yBAAyB,CAAC,EAAE,EAAE,MAAM;IAI9B,UAAU,CACtB,IAAI,EAAE,eAAe,EACrB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;CAGjD;AAED,gBAAgB;AAChB,qBAAa,2BAA4B,SAAQ,qBAAqB;IAErE,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;gBAExD,KAAK,EAAE,iCAAiC;IA2B7C,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ;IAE/E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CA+ErC;IAEU,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAInE;;OAEG;IACI,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG;QAC7C,aAAa,EAAE,qBAAqB,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACb;CAGD;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,qBAAqB;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD;;OAEG;IACH,SAAgB,WAAW,CAAC,EAAE,GAAG,CAAC;gBAEtB,KAAK,EAAE,gCAAgC;IAe5C,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,GAAG,IAAI;IA4CtF;;OAEG;IACI,aAAa,CACnB,aAAa,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC;QACF,aAAa,EAAE,qBAAqB,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACb;IAoCD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAkCrC;IAEU,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAInE;;;;;;OAMG;IACI,MAAM;CAcb;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,8BAA8B;gBACjE,KAAK,EAAE,gCAAgC;CAGnD;AAED;;;;;GAKG;AACH,qBAAa,kCACZ,SAAQ,8BACR,YAAW,8BAA8B;gBAE7B,KAAK,EAAE,wCAAwC;IAK3D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkD;IAE1E,aAAa,CACzB,QAAQ,EAAE,6BAA6B,EACvC,gBAAgB,EAAE,sBAAsB,GACtC,OAAO,CAAC,UAAU,CAAC;IAiCT,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAQnE"}
@@ -32,6 +32,9 @@ exports.createAttributesBlob = createAttributesBlob;
32
32
  * @internal
33
33
  */
34
34
  class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
35
+ existing;
36
+ isLocalDataStore;
37
+ makeLocallyVisibleFn;
35
38
  get packagePath() {
36
39
  (0, internal_1.assert)(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
37
40
  return this.pkg;
@@ -73,18 +76,30 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
73
76
  get idCompressor() {
74
77
  return this.parentContext.idCompressor;
75
78
  }
79
+ _disposed = false;
76
80
  get disposed() {
77
81
  return this._disposed;
78
82
  }
83
+ /**
84
+ * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
85
+ * Tombstoned objects are eventually deleted by GC.
86
+ */
87
+ _tombstoned = false;
79
88
  get tombstoned() {
80
89
  return this._tombstoned;
81
90
  }
91
+ /** If true, throw an error when a tombstone data store is used. */
92
+ gcThrowOnTombstoneUsage;
93
+ gcTombstoneEnforcementAllowed;
94
+ /** If true, this means that this data store context and its children have been removed from the runtime */
95
+ deleted = false;
82
96
  get attachState() {
83
97
  return this._attachState;
84
98
  }
85
99
  get IFluidDataStoreRegistry() {
86
100
  return this.registry;
87
101
  }
102
+ baseSnapshotSequenceNumber;
88
103
  /**
89
104
  * A datastore is considered as root if it
90
105
  * 1. is root in memory - see isInMemoryRoot
@@ -114,23 +129,41 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
114
129
  isInMemoryRoot() {
115
130
  return this._isInMemoryRoot;
116
131
  }
132
+ registry;
133
+ detachedRuntimeCreation = false;
134
+ channel;
135
+ loaded = false;
136
+ pending = [];
137
+ channelP;
138
+ _baseSnapshot;
139
+ _attachState;
140
+ _isInMemoryRoot = false;
141
+ summarizerNode;
142
+ mc;
143
+ thresholdOpsCounter;
144
+ static pendingOpsCountThreshold = 1000;
145
+ /**
146
+ * If the summarizer makes local changes, a telemetry event is logged. This has the potential to be very noisy.
147
+ * So, adding a count of how many telemetry events are logged per data store context. This can be
148
+ * controlled via feature flags.
149
+ */
150
+ localChangesTelemetryCount;
151
+ // The used routes of this node as per the last GC run. This is used to update the used routes of the channel
152
+ // if it realizes after GC is run.
153
+ lastUsedRoutes;
154
+ id;
155
+ _containerRuntime;
156
+ parentContext;
157
+ storage;
158
+ scope;
159
+ // Represents the group to which the data store belongs too.
160
+ loadingGroupId;
161
+ pkg;
117
162
  constructor(props, existing, isLocalDataStore, makeLocallyVisibleFn) {
118
163
  super();
119
164
  this.existing = existing;
120
165
  this.isLocalDataStore = isLocalDataStore;
121
166
  this.makeLocallyVisibleFn = makeLocallyVisibleFn;
122
- this._disposed = false;
123
- /**
124
- * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
125
- * Tombstoned objects are eventually deleted by GC.
126
- */
127
- this._tombstoned = false;
128
- /** If true, this means that this data store context and its children have been removed from the runtime */
129
- this.deleted = false;
130
- this.detachedRuntimeCreation = false;
131
- this.loaded = false;
132
- this.pending = [];
133
- this._isInMemoryRoot = false;
134
167
  this._containerRuntime = props.parentContext.containerRuntime;
135
168
  this.parentContext = props.parentContext;
136
169
  this.id = props.id;
@@ -402,26 +435,6 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
402
435
  }
403
436
  }
404
437
  /**
405
- * @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
406
- * It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
407
- *
408
- * Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
409
- *
410
- * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
411
- * all references added in the system.
412
- * @param srcHandle - The handle of the node that added the reference.
413
- * @param outboundHandle - The handle of the outbound node that is referenced.
414
- */
415
- addedGCOutboundReference(srcHandle, outboundHandle) {
416
- // By default, skip this call since the ContainerRuntime will detect the outbound route directly.
417
- if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) === true) {
418
- // Note: The ContainerRuntime code will check this same setting to avoid double counting.
419
- this.parentContext.addedGCOutboundReference?.((0, internal_4.toFluidHandleInternal)(srcHandle), (0, internal_4.toFluidHandleInternal)(outboundHandle));
420
- }
421
- }
422
- /**
423
- * (Same as @see addedGCOutboundReference, but with string paths instead of handles)
424
- *
425
438
  * Called when a new outbound reference is added to another node. This is used by garbage collection to identify
426
439
  * all references added in the system.
427
440
  *
@@ -429,7 +442,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
429
442
  * @param toPath - The absolute path of the outbound node that is referenced.
430
443
  */
431
444
  addedGCOutboundRoute(fromPath, toPath) {
432
- this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
445
+ this.parentContext.addedGCOutboundRoute(fromPath, toPath);
433
446
  }
434
447
  /**
435
448
  * Updates the used routes of the channel and its child contexts. The channel must be loaded before calling this.
@@ -655,68 +668,16 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
655
668
  }
656
669
  }
657
670
  exports.FluidDataStoreContext = FluidDataStoreContext;
658
- FluidDataStoreContext.pendingOpsCountThreshold = 1000;
659
671
  /** @internal */
660
672
  class RemoteFluidDataStoreContext extends FluidDataStoreContext {
673
+ // Tells whether we need to fetch the snapshot before use. This is to support Data Virtualization.
674
+ snapshotFetchRequired;
675
+ runtime;
676
+ blobContents;
661
677
  constructor(props) {
662
678
  super(props, true /* existing */, false /* isLocalDataStore */, () => {
663
679
  throw new Error("Already attached");
664
680
  });
665
- this.initialSnapshotDetailsP = new internal_1.LazyPromise(async () => {
666
- // Sequence number of the snapshot.
667
- let sequenceNumber;
668
- // Check whether we need to fetch the snapshot first to load.
669
- if (this.snapshotFetchRequired === undefined && this._baseSnapshot?.groupId !== undefined) {
670
- (0, internal_1.assert)(this.blobContents !== undefined, 0x97a /* Blob contents should be present to evaluate */);
671
- (0, internal_1.assert)(this._baseSnapshot !== undefined, 0x97b /* snapshotTree should be present to evaluate */);
672
- this.snapshotFetchRequired = (0, internal_4.isSnapshotFetchRequiredForLoadingGroupId)(this._baseSnapshot, this.blobContents);
673
- }
674
- if (this.snapshotFetchRequired) {
675
- (0, internal_1.assert)(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
676
- const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
677
- this._baseSnapshot = snapshot.snapshotTree;
678
- sequenceNumber = snapshot.sequenceNumber;
679
- this.snapshotFetchRequired = false;
680
- }
681
- let tree = this.baseSnapshot;
682
- let isRootDataStore = true;
683
- if (!!tree && tree.blobs[index_js_2.dataStoreAttributesBlobName] !== undefined) {
684
- // Need to get through snapshot and use that to populate extraBlobs
685
- // eslint-disable-next-line import/no-deprecated
686
- const attributes = await (0, internal_2.readAndParse)(this.storage, tree.blobs[index_js_2.dataStoreAttributesBlobName]);
687
- let pkgFromSnapshot;
688
- // Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
689
- // For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
690
- const formatVersion = (0, index_js_2.getAttributesFormatVersion)(attributes);
691
- if (formatVersion < 1) {
692
- pkgFromSnapshot =
693
- attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
694
- ? JSON.parse(attributes.pkg)
695
- : [attributes.pkg];
696
- }
697
- else {
698
- pkgFromSnapshot = JSON.parse(attributes.pkg);
699
- }
700
- this.pkg = pkgFromSnapshot;
701
- /**
702
- * If there is no isRootDataStore in the attributes blob, set it to true. This will ensure that
703
- * data stores in older documents are not garbage collected incorrectly. This may lead to additional
704
- * roots in the document but they won't break.
705
- */
706
- isRootDataStore = attributes.isRootDataStore ?? true;
707
- if ((0, index_js_2.hasIsolatedChannels)(attributes)) {
708
- tree = tree.trees[internal_3.channelsTreeName];
709
- (0, internal_1.assert)(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
710
- }
711
- }
712
- (0, internal_1.assert)(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
713
- return {
714
- pkg: this.pkg,
715
- isRootDataStore,
716
- snapshot: tree,
717
- sequenceNumber,
718
- };
719
- });
720
681
  this.runtime = props.parentContext.containerRuntime;
721
682
  if ((0, internal_2.isInstanceOfISnapshot)(props.snapshot)) {
722
683
  this.blobContents = props.snapshot.blobContents;
@@ -740,6 +701,61 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
740
701
  4. attach op for this data store is processed - setAttachState() is called.
741
702
  */
742
703
  setAttachState(attachState) { }
704
+ initialSnapshotDetailsP = new internal_1.LazyPromise(async () => {
705
+ // Sequence number of the snapshot.
706
+ let sequenceNumber;
707
+ // Check whether we need to fetch the snapshot first to load.
708
+ if (this.snapshotFetchRequired === undefined && this._baseSnapshot?.groupId !== undefined) {
709
+ (0, internal_1.assert)(this.blobContents !== undefined, 0x97a /* Blob contents should be present to evaluate */);
710
+ (0, internal_1.assert)(this._baseSnapshot !== undefined, 0x97b /* snapshotTree should be present to evaluate */);
711
+ this.snapshotFetchRequired = (0, internal_4.isSnapshotFetchRequiredForLoadingGroupId)(this._baseSnapshot, this.blobContents);
712
+ }
713
+ if (this.snapshotFetchRequired) {
714
+ (0, internal_1.assert)(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
715
+ const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
716
+ this._baseSnapshot = snapshot.snapshotTree;
717
+ sequenceNumber = snapshot.sequenceNumber;
718
+ this.snapshotFetchRequired = false;
719
+ }
720
+ let tree = this.baseSnapshot;
721
+ let isRootDataStore = true;
722
+ if (!!tree && tree.blobs[index_js_2.dataStoreAttributesBlobName] !== undefined) {
723
+ // Need to get through snapshot and use that to populate extraBlobs
724
+ // eslint-disable-next-line import/no-deprecated
725
+ const attributes = await (0, internal_2.readAndParse)(this.storage, tree.blobs[index_js_2.dataStoreAttributesBlobName]);
726
+ let pkgFromSnapshot;
727
+ // Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
728
+ // For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
729
+ const formatVersion = (0, index_js_2.getAttributesFormatVersion)(attributes);
730
+ if (formatVersion < 1) {
731
+ pkgFromSnapshot =
732
+ attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
733
+ ? JSON.parse(attributes.pkg)
734
+ : [attributes.pkg];
735
+ }
736
+ else {
737
+ pkgFromSnapshot = JSON.parse(attributes.pkg);
738
+ }
739
+ this.pkg = pkgFromSnapshot;
740
+ /**
741
+ * If there is no isRootDataStore in the attributes blob, set it to true. This will ensure that
742
+ * data stores in older documents are not garbage collected incorrectly. This may lead to additional
743
+ * roots in the document but they won't break.
744
+ */
745
+ isRootDataStore = attributes.isRootDataStore ?? true;
746
+ if ((0, index_js_2.hasIsolatedChannels)(attributes)) {
747
+ tree = tree.trees[internal_3.channelsTreeName];
748
+ (0, internal_1.assert)(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
749
+ }
750
+ }
751
+ (0, internal_1.assert)(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
752
+ return {
753
+ pkg: this.pkg,
754
+ isRootDataStore,
755
+ snapshot: tree,
756
+ sequenceNumber,
757
+ };
758
+ });
743
759
  async getInitialSnapshotDetails() {
744
760
  return this.initialSnapshotDetailsP;
745
761
  }
@@ -756,39 +772,13 @@ exports.RemoteFluidDataStoreContext = RemoteFluidDataStoreContext;
756
772
  * @internal
757
773
  */
758
774
  class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
775
+ snapshotTree;
776
+ /**
777
+ * @deprecated 0.16 Issue #1635, #3631
778
+ */
779
+ createProps;
759
780
  constructor(props) {
760
781
  super(props, props.snapshotTree !== undefined /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
761
- this.initialSnapshotDetailsP = new internal_1.LazyPromise(async () => {
762
- let snapshot = this.snapshotTree;
763
- // eslint-disable-next-line import/no-deprecated
764
- let attributes;
765
- let isRootDataStore = false;
766
- if (snapshot !== undefined) {
767
- // Get the dataStore attributes.
768
- // Note: storage can be undefined in special case while detached.
769
- attributes = await (0, index_js_2.getFluidDataStoreAttributes)(this.storage, snapshot);
770
- if ((0, index_js_2.hasIsolatedChannels)(attributes)) {
771
- snapshot = snapshot.trees[internal_3.channelsTreeName];
772
- (0, internal_1.assert)(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
773
- }
774
- if (this.pkg === undefined) {
775
- this.pkg = JSON.parse(attributes.pkg);
776
- // If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data
777
- // stores in older documents are not garbage collected incorrectly. This may lead to additional
778
- // roots in the document but they won't break.
779
- if (attributes.isRootDataStore ?? true) {
780
- isRootDataStore = true;
781
- this.setInMemoryRoot();
782
- }
783
- }
784
- }
785
- (0, internal_1.assert)(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
786
- return {
787
- pkg: this.pkg,
788
- isRootDataStore,
789
- snapshot,
790
- };
791
- });
792
782
  // Summarizer client should not create local data stores.
793
783
  this.identifyLocalChangeInSummarizer("DataStoreCreatedInSummarizer");
794
784
  this.snapshotTree = props.snapshotTree;
@@ -860,6 +850,37 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
860
850
  type: this.pkg[this.pkg.length - 1],
861
851
  };
862
852
  }
853
+ initialSnapshotDetailsP = new internal_1.LazyPromise(async () => {
854
+ let snapshot = this.snapshotTree;
855
+ // eslint-disable-next-line import/no-deprecated
856
+ let attributes;
857
+ let isRootDataStore = false;
858
+ if (snapshot !== undefined) {
859
+ // Get the dataStore attributes.
860
+ // Note: storage can be undefined in special case while detached.
861
+ attributes = await (0, index_js_2.getFluidDataStoreAttributes)(this.storage, snapshot);
862
+ if ((0, index_js_2.hasIsolatedChannels)(attributes)) {
863
+ snapshot = snapshot.trees[internal_3.channelsTreeName];
864
+ (0, internal_1.assert)(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
865
+ }
866
+ if (this.pkg === undefined) {
867
+ this.pkg = JSON.parse(attributes.pkg);
868
+ // If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data
869
+ // stores in older documents are not garbage collected incorrectly. This may lead to additional
870
+ // roots in the document but they won't break.
871
+ if (attributes.isRootDataStore ?? true) {
872
+ isRootDataStore = true;
873
+ this.setInMemoryRoot();
874
+ }
875
+ }
876
+ }
877
+ (0, internal_1.assert)(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
878
+ return {
879
+ pkg: this.pkg,
880
+ isRootDataStore,
881
+ snapshot,
882
+ };
883
+ });
863
884
  async getInitialSnapshotDetails() {
864
885
  return this.initialSnapshotDetailsP;
865
886
  }
@@ -907,6 +928,7 @@ class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreContextBase
907
928
  this.detachedRuntimeCreation = true;
908
929
  this.channelToDataStoreFn = props.channelToDataStoreFn;
909
930
  }
931
+ channelToDataStoreFn;
910
932
  async attachRuntime(registry, dataStoreChannel) {
911
933
  (0, internal_1.assert)(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
912
934
  this.detachedRuntimeCreation = false;