@fluidframework/container-runtime 2.0.0-dev-rc.4.0.0.261659 → 2.0.0-dev-rc.5.0.0.265721

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 (322) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/api-report/container-runtime.api.md +60 -29
  3. package/dist/batchTracker.js.map +1 -1
  4. package/dist/blobManager.d.ts +9 -9
  5. package/dist/blobManager.d.ts.map +1 -1
  6. package/dist/blobManager.js +3 -5
  7. package/dist/blobManager.js.map +1 -1
  8. package/dist/channelCollection.d.ts +8 -6
  9. package/dist/channelCollection.d.ts.map +1 -1
  10. package/dist/channelCollection.js +22 -11
  11. package/dist/channelCollection.js.map +1 -1
  12. package/dist/connectionTelemetry.d.ts +1 -1
  13. package/dist/connectionTelemetry.d.ts.map +1 -1
  14. package/dist/connectionTelemetry.js.map +1 -1
  15. package/dist/containerHandleContext.d.ts +2 -1
  16. package/dist/containerHandleContext.d.ts.map +1 -1
  17. package/dist/containerHandleContext.js.map +1 -1
  18. package/dist/containerRuntime.d.ts +14 -24
  19. package/dist/containerRuntime.d.ts.map +1 -1
  20. package/dist/containerRuntime.js +125 -140
  21. package/dist/containerRuntime.js.map +1 -1
  22. package/dist/dataStore.d.ts.map +1 -1
  23. package/dist/dataStore.js.map +1 -1
  24. package/dist/dataStoreContext.d.ts +13 -10
  25. package/dist/dataStoreContext.d.ts.map +1 -1
  26. package/dist/dataStoreContext.js +21 -8
  27. package/dist/dataStoreContext.js.map +1 -1
  28. package/dist/dataStoreContexts.js.map +1 -1
  29. package/dist/dataStoreRegistry.js.map +1 -1
  30. package/dist/{deltaManagerSummarizerProxy.d.ts → deltaManagerProxies.d.ts} +28 -3
  31. package/dist/deltaManagerProxies.d.ts.map +1 -0
  32. package/dist/{deltaManagerSummarizerProxy.js → deltaManagerProxies.js} +38 -2
  33. package/dist/deltaManagerProxies.js.map +1 -0
  34. package/dist/deltaScheduler.d.ts +1 -1
  35. package/dist/deltaScheduler.d.ts.map +1 -1
  36. package/dist/deltaScheduler.js.map +1 -1
  37. package/dist/gc/garbageCollection.d.ts +1 -2
  38. package/dist/gc/garbageCollection.d.ts.map +1 -1
  39. package/dist/gc/garbageCollection.js +1 -1
  40. package/dist/gc/garbageCollection.js.map +1 -1
  41. package/dist/gc/gcConfigs.d.ts.map +1 -1
  42. package/dist/gc/gcConfigs.js +14 -19
  43. package/dist/gc/gcConfigs.js.map +1 -1
  44. package/dist/gc/gcDefinitions.d.ts +4 -22
  45. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  46. package/dist/gc/gcDefinitions.js +3 -3
  47. package/dist/gc/gcDefinitions.js.map +1 -1
  48. package/dist/gc/gcHelpers.d.ts +1 -2
  49. package/dist/gc/gcHelpers.d.ts.map +1 -1
  50. package/dist/gc/gcHelpers.js.map +1 -1
  51. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  52. package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
  53. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  54. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  55. package/dist/gc/gcSummaryStateTracker.d.ts +1 -1
  56. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  57. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  58. package/dist/gc/gcTelemetry.d.ts +1 -1
  59. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  60. package/dist/gc/gcTelemetry.js +2 -2
  61. package/dist/gc/gcTelemetry.js.map +1 -1
  62. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  63. package/dist/gc/index.d.ts +1 -1
  64. package/dist/gc/index.d.ts.map +1 -1
  65. package/dist/gc/index.js +2 -2
  66. package/dist/gc/index.js.map +1 -1
  67. package/dist/index.d.ts +1 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/legacy.d.ts +6 -1
  71. package/dist/messageTypes.d.ts +5 -2
  72. package/dist/messageTypes.d.ts.map +1 -1
  73. package/dist/messageTypes.js.map +1 -1
  74. package/dist/opLifecycle/batchManager.d.ts +4 -0
  75. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  76. package/dist/opLifecycle/batchManager.js.map +1 -1
  77. package/dist/opLifecycle/opCompressor.js.map +1 -1
  78. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  79. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  80. package/dist/opLifecycle/opSplitter.js.map +1 -1
  81. package/dist/opLifecycle/outbox.d.ts +1 -0
  82. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  83. package/dist/opLifecycle/outbox.js +7 -20
  84. package/dist/opLifecycle/outbox.js.map +1 -1
  85. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  86. package/dist/packageVersion.d.ts +1 -1
  87. package/dist/packageVersion.js +1 -1
  88. package/dist/packageVersion.js.map +1 -1
  89. package/dist/pendingStateManager.d.ts +6 -0
  90. package/dist/pendingStateManager.d.ts.map +1 -1
  91. package/dist/pendingStateManager.js +10 -1
  92. package/dist/pendingStateManager.js.map +1 -1
  93. package/dist/scheduleManager.d.ts +1 -1
  94. package/dist/scheduleManager.d.ts.map +1 -1
  95. package/dist/scheduleManager.js.map +1 -1
  96. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  97. package/dist/summary/documentSchema.js +2 -2
  98. package/dist/summary/documentSchema.js.map +1 -1
  99. package/dist/summary/index.d.ts +2 -2
  100. package/dist/summary/index.d.ts.map +1 -1
  101. package/dist/summary/index.js.map +1 -1
  102. package/dist/summary/orderedClientElection.d.ts +4 -2
  103. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  104. package/dist/summary/orderedClientElection.js +35 -13
  105. package/dist/summary/orderedClientElection.js.map +1 -1
  106. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  107. package/dist/summary/runningSummarizer.d.ts +0 -5
  108. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  109. package/dist/summary/runningSummarizer.js +28 -113
  110. package/dist/summary/runningSummarizer.js.map +1 -1
  111. package/dist/summary/summarizer.d.ts +1 -1
  112. package/dist/summary/summarizer.d.ts.map +1 -1
  113. package/dist/summary/summarizer.js +4 -1
  114. package/dist/summary/summarizer.js.map +1 -1
  115. package/dist/summary/summarizerClientElection.js.map +1 -1
  116. package/dist/summary/summarizerHeuristics.js.map +1 -1
  117. package/dist/summary/summarizerNode/summarizerNode.d.ts +1 -2
  118. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  119. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  120. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  121. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -2
  122. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  123. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  124. package/dist/summary/summarizerTypes.d.ts +16 -28
  125. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  126. package/dist/summary/summarizerTypes.js.map +1 -1
  127. package/dist/summary/summaryCollection.d.ts +1 -1
  128. package/dist/summary/summaryCollection.d.ts.map +1 -1
  129. package/dist/summary/summaryCollection.js +2 -2
  130. package/dist/summary/summaryCollection.js.map +1 -1
  131. package/dist/summary/summaryFormat.d.ts +26 -6
  132. package/dist/summary/summaryFormat.d.ts.map +1 -1
  133. package/dist/summary/summaryFormat.js.map +1 -1
  134. package/dist/summary/summaryGenerator.d.ts +7 -8
  135. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  136. package/dist/summary/summaryGenerator.js +30 -25
  137. package/dist/summary/summaryGenerator.js.map +1 -1
  138. package/dist/summary/summaryManager.js +5 -5
  139. package/dist/summary/summaryManager.js.map +1 -1
  140. package/dist/throttler.js.map +1 -1
  141. package/lib/batchTracker.js.map +1 -1
  142. package/lib/blobManager.d.ts +9 -9
  143. package/lib/blobManager.d.ts.map +1 -1
  144. package/lib/blobManager.js +4 -6
  145. package/lib/blobManager.js.map +1 -1
  146. package/lib/channelCollection.d.ts +8 -6
  147. package/lib/channelCollection.d.ts.map +1 -1
  148. package/lib/channelCollection.js +23 -12
  149. package/lib/channelCollection.js.map +1 -1
  150. package/lib/connectionTelemetry.d.ts +1 -1
  151. package/lib/connectionTelemetry.d.ts.map +1 -1
  152. package/lib/connectionTelemetry.js.map +1 -1
  153. package/lib/containerHandleContext.d.ts +2 -1
  154. package/lib/containerHandleContext.d.ts.map +1 -1
  155. package/lib/containerHandleContext.js.map +1 -1
  156. package/lib/containerRuntime.d.ts +14 -24
  157. package/lib/containerRuntime.d.ts.map +1 -1
  158. package/lib/containerRuntime.js +125 -140
  159. package/lib/containerRuntime.js.map +1 -1
  160. package/lib/dataStore.d.ts.map +1 -1
  161. package/lib/dataStore.js.map +1 -1
  162. package/lib/dataStoreContext.d.ts +13 -10
  163. package/lib/dataStoreContext.d.ts.map +1 -1
  164. package/lib/dataStoreContext.js +23 -10
  165. package/lib/dataStoreContext.js.map +1 -1
  166. package/lib/dataStoreContexts.js.map +1 -1
  167. package/lib/dataStoreRegistry.js.map +1 -1
  168. package/lib/{deltaManagerSummarizerProxy.d.ts → deltaManagerProxies.d.ts} +28 -3
  169. package/lib/deltaManagerProxies.d.ts.map +1 -0
  170. package/lib/{deltaManagerSummarizerProxy.js → deltaManagerProxies.js} +36 -1
  171. package/lib/deltaManagerProxies.js.map +1 -0
  172. package/lib/deltaScheduler.d.ts +1 -1
  173. package/lib/deltaScheduler.d.ts.map +1 -1
  174. package/lib/deltaScheduler.js.map +1 -1
  175. package/lib/gc/garbageCollection.d.ts +1 -2
  176. package/lib/gc/garbageCollection.d.ts.map +1 -1
  177. package/lib/gc/garbageCollection.js +1 -1
  178. package/lib/gc/garbageCollection.js.map +1 -1
  179. package/lib/gc/gcConfigs.d.ts.map +1 -1
  180. package/lib/gc/gcConfigs.js +15 -20
  181. package/lib/gc/gcConfigs.js.map +1 -1
  182. package/lib/gc/gcDefinitions.d.ts +4 -22
  183. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  184. package/lib/gc/gcDefinitions.js +2 -2
  185. package/lib/gc/gcDefinitions.js.map +1 -1
  186. package/lib/gc/gcHelpers.d.ts +1 -2
  187. package/lib/gc/gcHelpers.d.ts.map +1 -1
  188. package/lib/gc/gcHelpers.js.map +1 -1
  189. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  190. package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
  191. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  192. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  193. package/lib/gc/gcSummaryStateTracker.d.ts +1 -1
  194. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  195. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  196. package/lib/gc/gcTelemetry.d.ts +1 -1
  197. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  198. package/lib/gc/gcTelemetry.js +2 -2
  199. package/lib/gc/gcTelemetry.js.map +1 -1
  200. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  201. package/lib/gc/index.d.ts +1 -1
  202. package/lib/gc/index.d.ts.map +1 -1
  203. package/lib/gc/index.js +1 -1
  204. package/lib/gc/index.js.map +1 -1
  205. package/lib/index.d.ts +1 -1
  206. package/lib/index.d.ts.map +1 -1
  207. package/lib/index.js.map +1 -1
  208. package/lib/legacy.d.ts +6 -1
  209. package/lib/messageTypes.d.ts +5 -2
  210. package/lib/messageTypes.d.ts.map +1 -1
  211. package/lib/messageTypes.js.map +1 -1
  212. package/lib/opLifecycle/batchManager.d.ts +4 -0
  213. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  214. package/lib/opLifecycle/batchManager.js.map +1 -1
  215. package/lib/opLifecycle/opCompressor.js.map +1 -1
  216. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  217. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  218. package/lib/opLifecycle/opSplitter.js.map +1 -1
  219. package/lib/opLifecycle/outbox.d.ts +1 -0
  220. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  221. package/lib/opLifecycle/outbox.js +7 -20
  222. package/lib/opLifecycle/outbox.js.map +1 -1
  223. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  224. package/lib/packageVersion.d.ts +1 -1
  225. package/lib/packageVersion.js +1 -1
  226. package/lib/packageVersion.js.map +1 -1
  227. package/lib/pendingStateManager.d.ts +6 -0
  228. package/lib/pendingStateManager.d.ts.map +1 -1
  229. package/lib/pendingStateManager.js +10 -1
  230. package/lib/pendingStateManager.js.map +1 -1
  231. package/lib/scheduleManager.d.ts +1 -1
  232. package/lib/scheduleManager.d.ts.map +1 -1
  233. package/lib/scheduleManager.js.map +1 -1
  234. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  235. package/lib/summary/documentSchema.js +2 -2
  236. package/lib/summary/documentSchema.js.map +1 -1
  237. package/lib/summary/index.d.ts +2 -2
  238. package/lib/summary/index.d.ts.map +1 -1
  239. package/lib/summary/index.js.map +1 -1
  240. package/lib/summary/orderedClientElection.d.ts +4 -2
  241. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  242. package/lib/summary/orderedClientElection.js +35 -13
  243. package/lib/summary/orderedClientElection.js.map +1 -1
  244. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  245. package/lib/summary/runningSummarizer.d.ts +0 -5
  246. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  247. package/lib/summary/runningSummarizer.js +21 -106
  248. package/lib/summary/runningSummarizer.js.map +1 -1
  249. package/lib/summary/summarizer.d.ts +1 -1
  250. package/lib/summary/summarizer.d.ts.map +1 -1
  251. package/lib/summary/summarizer.js +4 -1
  252. package/lib/summary/summarizer.js.map +1 -1
  253. package/lib/summary/summarizerClientElection.js.map +1 -1
  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.map +1 -1
  258. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  259. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -2
  260. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  261. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  262. package/lib/summary/summarizerTypes.d.ts +16 -28
  263. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  264. package/lib/summary/summarizerTypes.js.map +1 -1
  265. package/lib/summary/summaryCollection.d.ts +1 -1
  266. package/lib/summary/summaryCollection.d.ts.map +1 -1
  267. package/lib/summary/summaryCollection.js +2 -2
  268. package/lib/summary/summaryCollection.js.map +1 -1
  269. package/lib/summary/summaryFormat.d.ts +26 -6
  270. package/lib/summary/summaryFormat.d.ts.map +1 -1
  271. package/lib/summary/summaryFormat.js +1 -1
  272. package/lib/summary/summaryFormat.js.map +1 -1
  273. package/lib/summary/summaryGenerator.d.ts +7 -8
  274. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  275. package/lib/summary/summaryGenerator.js +24 -19
  276. package/lib/summary/summaryGenerator.js.map +1 -1
  277. package/lib/summary/summaryManager.js +1 -1
  278. package/lib/summary/summaryManager.js.map +1 -1
  279. package/lib/throttler.js.map +1 -1
  280. package/lib/tsdoc-metadata.json +1 -1
  281. package/package.json +65 -26
  282. package/src/blobManager.ts +14 -13
  283. package/src/channelCollection.ts +34 -20
  284. package/src/connectionTelemetry.ts +1 -1
  285. package/src/containerHandleContext.ts +2 -1
  286. package/src/containerRuntime.ts +161 -170
  287. package/src/dataStore.ts +3 -2
  288. package/src/dataStoreContext.ts +62 -23
  289. package/src/{deltaManagerSummarizerProxy.ts → deltaManagerProxies.ts} +55 -3
  290. package/src/deltaScheduler.ts +1 -1
  291. package/src/gc/garbageCollection.md +0 -8
  292. package/src/gc/garbageCollection.ts +2 -1
  293. package/src/gc/gcConfigs.ts +12 -19
  294. package/src/gc/gcDefinitions.ts +5 -23
  295. package/src/gc/gcHelpers.ts +1 -1
  296. package/src/gc/gcSummaryDefinitions.ts +1 -1
  297. package/src/gc/gcSummaryStateTracker.ts +1 -1
  298. package/src/gc/gcTelemetry.ts +1 -1
  299. package/src/gc/index.ts +1 -1
  300. package/src/index.ts +6 -1
  301. package/src/messageTypes.ts +4 -2
  302. package/src/opLifecycle/batchManager.ts +5 -0
  303. package/src/opLifecycle/outbox.ts +7 -30
  304. package/src/packageVersion.ts +1 -1
  305. package/src/pendingStateManager.ts +11 -1
  306. package/src/scheduleManager.ts +1 -1
  307. package/src/summary/documentSchema.ts +1 -1
  308. package/src/summary/index.ts +5 -1
  309. package/src/summary/orderedClientElection.ts +83 -12
  310. package/src/summary/runningSummarizer.ts +30 -114
  311. package/src/summary/summarizer.ts +5 -2
  312. package/src/summary/summarizerNode/summarizerNode.ts +0 -2
  313. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +1 -3
  314. package/src/summary/summarizerTypes.ts +22 -29
  315. package/src/summary/summaryCollection.ts +1 -1
  316. package/src/summary/summaryFormat.ts +35 -6
  317. package/src/summary/summaryGenerator.ts +50 -27
  318. package/src/summary/summaryManager.ts +1 -1
  319. package/dist/deltaManagerSummarizerProxy.d.ts.map +0 -1
  320. package/dist/deltaManagerSummarizerProxy.js.map +0 -1
  321. package/lib/deltaManagerSummarizerProxy.d.ts.map +0 -1
  322. package/lib/deltaManagerSummarizerProxy.js.map +0 -1
@@ -3,15 +3,19 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IDeltaManager } from "@fluidframework/container-definitions";
7
- import { ContainerWarning } from "@fluidframework/container-definitions/internal";
8
- import { IEvent, IEventProvider, ITelemetryBaseProperties } from "@fluidframework/core-interfaces";
6
+ import { IDeltaManager, ContainerWarning } from "@fluidframework/container-definitions/internal";
7
+ import {
8
+ IEvent,
9
+ IEventProvider,
10
+ ITelemetryBaseProperties,
11
+ ITelemetryBaseLogger,
12
+ } from "@fluidframework/core-interfaces";
9
13
  import {
10
14
  IDocumentMessage,
11
15
  ISequencedDocumentMessage,
12
16
  ISummaryTree,
13
17
  } from "@fluidframework/protocol-definitions";
14
- import { ISummaryStats } from "@fluidframework/runtime-definitions";
18
+ import { ISummaryStats } from "@fluidframework/runtime-definitions/internal";
15
19
  import {
16
20
  ITelemetryLoggerExt,
17
21
  ITelemetryLoggerPropertyBag,
@@ -91,7 +95,7 @@ export interface IConnectableRuntime {
91
95
  * @alpha
92
96
  */
93
97
  export interface ISummarizerRuntime extends IConnectableRuntime {
94
- readonly logger: ITelemetryLoggerExt;
98
+ readonly baseLogger: ITelemetryBaseLogger;
95
99
  /** clientId of parent (non-summarizing) container that owns summarizer container */
96
100
  readonly summarizerClientId: string | undefined;
97
101
  readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
@@ -114,13 +118,6 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
114
118
  export interface ISummarizeOptions {
115
119
  /** True to generate the full tree with no handle reuse optimizations; defaults to false */
116
120
  readonly fullTree?: boolean;
117
- /**
118
- * True to ask the server what the latest summary is first; defaults to false
119
- *
120
- * @deprecated Summarize will not refresh latest snapshot state anymore. Instead it updates the cache and closes.
121
- * It's expected a new summarizer client will be created, likely by the same parent.
122
- */
123
- readonly refreshLatestAck?: boolean;
124
121
  }
125
122
 
126
123
  /**
@@ -184,14 +181,22 @@ export interface IGeneratedSummaryStats extends ISummaryStats {
184
181
  readonly summaryNumber: number;
185
182
  }
186
183
 
184
+ /**
185
+ * Type for summarization failures that are retriable.
186
+ * @alpha
187
+ */
188
+ export interface IRetriableFailureError extends Error {
189
+ readonly retryAfterSeconds?: number;
190
+ }
191
+
187
192
  /**
188
193
  * Base results for all submitSummary attempts.
189
194
  * @alpha
190
195
  */
191
196
  export interface IBaseSummarizeResult {
192
197
  readonly stage: "base";
193
- /** Error object related to failed summarize attempt. */
194
- readonly error: Error | undefined;
198
+ /** Retriable error object related to failed summarize attempt. */
199
+ readonly error: IRetriableFailureError | undefined;
195
200
  /** Reference sequence number as of the generate summary attempt. */
196
201
  readonly referenceSequenceNumber: number;
197
202
  readonly minimumSequenceNumber: number;
@@ -266,19 +271,11 @@ export type SubmitSummaryResult =
266
271
  */
267
272
  export type SummaryStage = SubmitSummaryResult["stage"] | "unknown";
268
273
 
269
- /**
270
- * Type for summarization failures that are retriable.
271
- * @alpha
272
- */
273
- export interface IRetriableFailureResult {
274
- readonly retryAfterSeconds?: number;
275
- }
276
-
277
274
  /**
278
275
  * The data in summarizer result when submit summary stage fails.
279
276
  * @alpha
280
277
  */
281
- export interface SubmitSummaryFailureData extends IRetriableFailureResult {
278
+ export interface SubmitSummaryFailureData {
282
279
  stage: SummaryStage;
283
280
  }
284
281
 
@@ -301,7 +298,7 @@ export interface IAckSummaryResult {
301
298
  /**
302
299
  * @alpha
303
300
  */
304
- export interface INackSummaryResult extends IRetriableFailureResult {
301
+ export interface INackSummaryResult {
305
302
  readonly summaryNackOp: ISummaryNackMessage;
306
303
  readonly ackNackDuration: number;
307
304
  }
@@ -318,7 +315,7 @@ export type SummarizeResultPart<TSuccess, TFailure = undefined> =
318
315
  success: false;
319
316
  data: TFailure | undefined;
320
317
  message: string;
321
- error: any;
318
+ error: IRetriableFailureError;
322
319
  };
323
320
 
324
321
  /**
@@ -536,10 +533,6 @@ type ISummarizeTelemetryRequiredProperties =
536
533
  type ISummarizeTelemetryOptionalProperties =
537
534
  /** Number of attempts within the last time window, used for calculating the throttle delay. */
538
535
  | "summaryAttempts"
539
- /** Number of attempts within the current phase (currently capped at 2 ) */
540
- | "summaryAttemptsPerPhase"
541
- /** One-based count of phases we've attempted (used to index into an array of ISummarizeOptions */
542
- | "summaryAttemptPhase"
543
536
  /** Summarization may be attempted multiple times. This tells whether this is the final summarization attempt */
544
537
  | "finalAttempt"
545
538
  | keyof ISummarizeOptions;
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
- import { IDeltaManager } from "@fluidframework/container-definitions";
7
+ import { IDeltaManager } from "@fluidframework/container-definitions/internal";
8
8
  import { IDisposable, IEvent } from "@fluidframework/core-interfaces";
9
9
  import { assert, Deferred } from "@fluidframework/core-utils/internal";
10
10
  import {
@@ -14,15 +14,27 @@ import {
14
14
  ISnapshotTree,
15
15
  SummaryType,
16
16
  } from "@fluidframework/protocol-definitions";
17
- import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
18
- import { channelsTreeName, gcTreeKey } from "@fluidframework/runtime-definitions/internal";
17
+ import {
18
+ ISummaryTreeWithStats,
19
+ channelsTreeName,
20
+ gcTreeKey,
21
+ } from "@fluidframework/runtime-definitions/internal";
19
22
 
20
23
  import { IGCMetadata } from "../gc/index.js";
21
24
 
22
25
  import { IDocumentSchema } from "./documentSchema.js";
23
26
 
24
- type OmitAttributesVersions<T> = Omit<T, "snapshotFormatVersion" | "summaryFormatVersion">;
25
- interface IFluidDataStoreAttributes0 {
27
+ /**
28
+ * @deprecated - This interface will no longer be exported in the future(AB#8004).
29
+ * @alpha
30
+ */
31
+ export type OmitAttributesVersions<T> = Omit<T, "snapshotFormatVersion" | "summaryFormatVersion">;
32
+
33
+ /**
34
+ * @deprecated - This interface will no longer be exported in the future(AB#8004).
35
+ * @alpha
36
+ */
37
+ export interface IFluidDataStoreAttributes0 {
26
38
  readonly snapshotFormatVersion?: undefined;
27
39
  readonly summaryFormatVersion?: undefined;
28
40
  pkg: string;
@@ -33,11 +45,23 @@ interface IFluidDataStoreAttributes0 {
33
45
  */
34
46
  readonly isRootDataStore?: boolean;
35
47
  }
36
- interface IFluidDataStoreAttributes1 extends OmitAttributesVersions<IFluidDataStoreAttributes0> {
48
+
49
+ /**
50
+ * @deprecated - This interface will no longer be exported in the future(AB#8004).
51
+ * @alpha
52
+ */
53
+ export interface IFluidDataStoreAttributes1
54
+ extends OmitAttributesVersions<IFluidDataStoreAttributes0> {
37
55
  readonly snapshotFormatVersion: "0.1";
38
56
  readonly summaryFormatVersion?: undefined;
39
57
  }
40
- interface IFluidDataStoreAttributes2 extends OmitAttributesVersions<IFluidDataStoreAttributes1> {
58
+
59
+ /**
60
+ * @deprecated - This interface will no longer be exported in the future(AB#8004).
61
+ * @alpha
62
+ */
63
+ export interface IFluidDataStoreAttributes2
64
+ extends OmitAttributesVersions<IFluidDataStoreAttributes1> {
41
65
  /** Switch from snapshotFormatVersion to summaryFormatVersion */
42
66
  readonly snapshotFormatVersion?: undefined;
43
67
  readonly summaryFormatVersion: 2;
@@ -53,6 +77,11 @@ interface IFluidDataStoreAttributes2 extends OmitAttributesVersions<IFluidDataSt
53
77
  * Added IFluidDataStoreAttributes similar to IChannelAttributes which will tell the attributes of a
54
78
  * store like the package, snapshotFormatVersion to take different decisions based on a particular
55
79
  * snapshotFormatVersion.
80
+ *
81
+ * @deprecated - This interface will no longer be exported in the future(AB#8004).
82
+ *
83
+ * @alpha
84
+ *
56
85
  */
57
86
  export type ReadFluidDataStoreAttributes =
58
87
  | IFluidDataStoreAttributes0
@@ -11,7 +11,7 @@ import {
11
11
  IPromiseTimerResult,
12
12
  Timer,
13
13
  } from "@fluidframework/core-utils/internal";
14
- import { DriverErrorTypes } from "@fluidframework/driver-definitions";
14
+ import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
15
15
  import { getRetryDelaySecondsFromError } from "@fluidframework/driver-utils/internal";
16
16
  import { MessageType } from "@fluidframework/protocol-definitions";
17
17
  import {
@@ -35,6 +35,7 @@ import {
35
35
  SubmitSummaryResult,
36
36
  SummarizeResultPart,
37
37
  SummaryGeneratorTelemetry,
38
+ type IRetriableFailureError,
38
39
  } from "./summarizerTypes.js";
39
40
  import { IClientSummaryWatcher } from "./summaryCollection.js";
40
41
 
@@ -127,8 +128,10 @@ const summarizeErrors = {
127
128
  disconnect: "Summary cancelled due to summarizer or main client disconnect",
128
129
  } as const;
129
130
 
131
+ export type SummarizeErrorCode = keyof typeof summarizeErrors;
132
+
130
133
  // Helper functions to report failures and return.
131
- export const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
134
+ export const getFailMessage = (errorCode: SummarizeErrorCode) =>
132
135
  `${errorCode}: ${summarizeErrors[errorCode]}`;
133
136
 
134
137
  export class SummarizeResultBuilder {
@@ -150,7 +153,7 @@ export class SummarizeResultBuilder {
150
153
  */
151
154
  public fail(
152
155
  message: string,
153
- error: any,
156
+ error: IRetriableFailureError,
154
157
  submitFailureResult?: SubmitSummaryFailureData,
155
158
  nackSummaryResult?: INackSummaryResult,
156
159
  ) {
@@ -184,8 +187,7 @@ export class SummarizeResultBuilder {
184
187
  /**
185
188
  * Errors type for errors hit during summary that may be retriable.
186
189
  */
187
- export class RetriableSummaryError extends LoggingError {
188
- public readonly canRetry = this.retryAfterSeconds !== undefined;
190
+ export class RetriableSummaryError extends LoggingError implements IRetriableFailureError {
189
191
  constructor(
190
192
  message: string,
191
193
  public readonly retryAfterSeconds?: number,
@@ -221,9 +223,8 @@ export class SummaryGenerator {
221
223
  /**
222
224
  * Generates summary and listens for broadcast and ack/nack.
223
225
  * Returns true for ack, false for nack, and undefined for failure or timeout.
224
- * @param reason - reason for summarizing
225
- * @param options - refreshLatestAck to fetch summary ack info from server,
226
- * fullTree to generate tree without any summary handles even if unchanged
226
+ * @param summaryOptions - options controlling how the summary is generated or submitted.
227
+ * @param resultsBuilder - optional, result builder to use to build pass or fail result.
227
228
  */
228
229
  public summarize(
229
230
  summaryOptions: ISubmitSummaryOptions,
@@ -273,8 +274,8 @@ export class SummaryGenerator {
273
274
  * be provided. For op broadcast failures, only errors / properties should be provided.
274
275
  */
275
276
  const fail = (
276
- errorCode: keyof typeof summarizeErrors,
277
- error?: Error,
277
+ errorCode: SummarizeErrorCode,
278
+ error: IRetriableFailureError,
278
279
  properties?: SummaryGeneratorTelemetry,
279
280
  submitFailureResult?: SubmitSummaryFailureData,
280
281
  nackSummaryResult?: INackSummaryResult,
@@ -294,11 +295,9 @@ export class SummaryGenerator {
294
295
  ...properties,
295
296
  reason,
296
297
  category,
297
- retryAfterSeconds:
298
- submitFailureResult?.retryAfterSeconds ??
299
- nackSummaryResult?.retryAfterSeconds,
298
+ retryAfterSeconds: error.retryAfterSeconds,
300
299
  },
301
- error ?? reason,
300
+ error,
302
301
  ); // disconnect & summaryAckTimeout do not have proper error.
303
302
 
304
303
  resultsBuilder.fail(reason, error, submitFailureResult, nackSummaryResult);
@@ -330,9 +329,11 @@ export class SummaryGenerator {
330
329
  );
331
330
 
332
331
  if (summaryData.stage !== "submit") {
333
- return fail("submitSummaryFailure", summaryData.error, summarizeTelemetryProps, {
332
+ const errorCode: SummarizeErrorCode = "submitSummaryFailure";
333
+ const retriableError =
334
+ summaryData.error ?? new RetriableSummaryError(getFailMessage(errorCode));
335
+ return fail(errorCode, retriableError, summarizeTelemetryProps, {
334
336
  stage: summaryData.stage,
335
- retryAfterSeconds: getRetryDelaySecondsFromError(summaryData.error),
336
337
  });
337
338
  }
338
339
 
@@ -368,11 +369,14 @@ export class SummaryGenerator {
368
369
  } catch (error) {
369
370
  return fail(
370
371
  "submitSummaryFailure",
371
- wrapError(error, (message) => new LoggingError(message)),
372
+ wrapError(
373
+ error,
374
+ (message) =>
375
+ new RetriableSummaryError(message, getRetryDelaySecondsFromError(error)),
376
+ ),
372
377
  undefined /* properties */,
373
378
  {
374
379
  stage: "unknown",
375
- retryAfterSeconds: getRetryDelaySecondsFromError(error),
376
380
  },
377
381
  );
378
382
  } finally {
@@ -393,10 +397,17 @@ export class SummaryGenerator {
393
397
  cancellationToken,
394
398
  );
395
399
  if (waitBroadcastResult.result === "cancelled") {
396
- return fail("disconnect");
400
+ const errorCode: SummarizeErrorCode = "disconnect";
401
+ return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));
397
402
  }
398
403
  if (waitBroadcastResult.result !== "done") {
399
- return fail("summaryOpWaitTimeout");
404
+ // The summary op may not have been received within the timeout due to a transient error. So,
405
+ // fail with a retriable error to re-attempt the summary if possible.
406
+ const errorCode: SummarizeErrorCode = "summaryOpWaitTimeout";
407
+ return fail(
408
+ errorCode,
409
+ new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */),
410
+ );
400
411
  }
401
412
  const summarizeOp = waitBroadcastResult.value;
402
413
 
@@ -422,10 +433,17 @@ export class SummaryGenerator {
422
433
  cancellationToken,
423
434
  );
424
435
  if (waitAckNackResult.result === "cancelled") {
425
- return fail("disconnect");
436
+ const errorCode: SummarizeErrorCode = "disconnect";
437
+ return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));
426
438
  }
427
439
  if (waitAckNackResult.result !== "done") {
428
- return fail("summaryAckWaitTimeout");
440
+ const errorCode: SummarizeErrorCode = "summaryAckWaitTimeout";
441
+ // The summary ack may not have been received within the timeout due to a transient error. So,
442
+ // fail with a retriable error to re-attempt the summary if possible.
443
+ return fail(
444
+ errorCode,
445
+ new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */),
446
+ );
429
447
  }
430
448
  const ackNackOp = waitAckNackResult.value;
431
449
  this.pendingAckTimer.clear();
@@ -469,11 +487,16 @@ export class SummaryGenerator {
469
487
  const errorMessage = summaryNack?.message;
470
488
  const retryAfterSeconds = summaryNack?.retryAfter;
471
489
 
490
+ const errorCode: SummarizeErrorCode = "summaryNack";
491
+
472
492
  // pre-0.58 error message prefix: summaryNack
473
- const error = new LoggingError(`Received summaryNack`, {
493
+ const error = new RetriableSummaryError(
494
+ getFailMessage(errorCode),
474
495
  retryAfterSeconds,
475
- errorMessage,
476
- });
496
+ {
497
+ errorMessage,
498
+ },
499
+ );
477
500
 
478
501
  assert(
479
502
  getRetryDelaySecondsFromError(error) === retryAfterSeconds,
@@ -481,11 +504,11 @@ export class SummaryGenerator {
481
504
  );
482
505
  // This will only set resultsBuilder.receivedSummaryAckOrNack, as other promises are already set.
483
506
  return fail(
484
- "summaryNack",
507
+ errorCode,
485
508
  error,
486
509
  { ...summarizeTelemetryProps, nackRetryAfter: retryAfterSeconds },
487
510
  undefined /* submitFailureResult */,
488
- { summaryNackOp: ackNackOp, ackNackDuration, retryAfterSeconds },
511
+ { summaryNackOp: ackNackOp, ackNackDuration },
489
512
  );
490
513
  }
491
514
  } finally {
@@ -11,7 +11,7 @@ import {
11
11
  ITelemetryBaseLogger,
12
12
  } from "@fluidframework/core-interfaces";
13
13
  import { assert } from "@fluidframework/core-utils/internal";
14
- import { DriverErrorTypes } from "@fluidframework/driver-definitions";
14
+ import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
15
15
  import {
16
16
  ITelemetryLoggerExt,
17
17
  PerformanceEvent,
@@ -1 +0,0 @@
1
- {"version":3,"file":"deltaManagerSummarizerProxy.d.ts","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAEX,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,MAAM,sCAAsC,CAAC;AAI9C;;;;;GAKG;AACH,8BAAsB,qBACrB,SAAQ,iBAAiB,CAAC,mBAAmB,CAC7C,YAAW,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAmEpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAjE5F,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,OAAO,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAE3D;IAED,IAAW,QAAQ,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAErD;IAED,IAAW,aAAa,IAAI,WAAW,CAAC,cAAc,CAAC,CAEtD;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED,IAAW,WAAW,0CAErB;IAED,IAAW,kBAAkB,WAE5B;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,2BAA2B,YAErC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAElE;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;gBAGmB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAgBrF,OAAO,IAAI,IAAI;IAUf,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAEzB;IACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAEnB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAE3B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;CACF;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;IAwBpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAvB5F,IAAW,MAAM,IAAI,OAAO,CAI3B;IAED,IAAW,YAAY,IAAI,YAAY,CAYtC;IAED,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBAGzB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;CAK5F"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deltaManagerSummarizerProxy.js","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.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 { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport type {\n\tIConnectionDetails,\n\tIDeltaManager,\n\tIDeltaManagerEvents,\n\tIDeltaQueue,\n\tIDeltaSender,\n\tReadOnlyInfo,\n} from \"@fluidframework/container-definitions\";\nimport type { IErrorBase } from \"@fluidframework/core-interfaces\";\nimport type { IAnyDriverError } from \"@fluidframework/driver-definitions\";\nimport {\n\tIClientConfiguration,\n\tIClientDetails,\n\tIDocumentMessage,\n\tISequencedDocumentMessage,\n\tISignalMessage,\n} from \"@fluidframework/protocol-definitions\";\n\nimport { summarizerClientType } from \"./summary/index.js\";\n\n/**\n * Base class for DeltaManager proxy that proxy's access to the real DeltaManager.\n *\n * This class allows us to build proxy functionality without actually having to implement all the methods\n * of the DeltaManager.\n */\nexport abstract class BaseDeltaManagerProxy\n\textends TypedEventEmitter<IDeltaManagerEvents>\n\timplements IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>\n{\n\tpublic get IDeltaSender(): IDeltaSender {\n\t\treturn this;\n\t}\n\n\tpublic get inbound(): IDeltaQueue<ISequencedDocumentMessage> {\n\t\treturn this.deltaManager.inbound;\n\t}\n\n\tpublic get outbound(): IDeltaQueue<IDocumentMessage[]> {\n\t\treturn this.deltaManager.outbound;\n\t}\n\n\tpublic get inboundSignal(): IDeltaQueue<ISignalMessage> {\n\t\treturn this.deltaManager.inboundSignal;\n\t}\n\n\tpublic get minimumSequenceNumber(): number {\n\t\treturn this.deltaManager.minimumSequenceNumber;\n\t}\n\n\tpublic get lastSequenceNumber(): number {\n\t\treturn this.deltaManager.lastSequenceNumber;\n\t}\n\n\tpublic get lastMessage() {\n\t\treturn this.deltaManager.lastMessage;\n\t}\n\n\tpublic get lastKnownSeqNumber() {\n\t\treturn this.deltaManager.lastKnownSeqNumber;\n\t}\n\n\tpublic get initialSequenceNumber(): number {\n\t\treturn this.deltaManager.initialSequenceNumber;\n\t}\n\n\tpublic get hasCheckpointSequenceNumber() {\n\t\treturn this.deltaManager.hasCheckpointSequenceNumber;\n\t}\n\n\tpublic get clientDetails(): IClientDetails {\n\t\treturn this.deltaManager.clientDetails;\n\t}\n\n\tpublic get version(): string {\n\t\treturn this.deltaManager.version;\n\t}\n\n\tpublic get maxMessageSize(): number {\n\t\treturn this.deltaManager.maxMessageSize;\n\t}\n\n\tpublic get serviceConfiguration(): IClientConfiguration | undefined {\n\t\treturn this.deltaManager.serviceConfiguration;\n\t}\n\n\tpublic get active(): boolean {\n\t\treturn this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper();\n\n\t\t// We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n\t\tsuper.setMaxListeners(0);\n\n\t\tthis.deltaManager.on(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.on(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.on(\"op\", this.onOp);\n\t\tthis.deltaManager.on(\"pong\", this.onPong);\n\t\tthis.deltaManager.on(\"connect\", this.onConnect);\n\t\tthis.deltaManager.on(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.on(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.deltaManager.off(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.off(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.off(\"op\", this.onOp);\n\t\tthis.deltaManager.off(\"pong\", this.onPong);\n\t\tthis.deltaManager.off(\"connect\", this.onConnect);\n\t\tthis.deltaManager.off(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.off(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic submitSignal(content: string, targetClientId?: string): void {\n\t\treturn this.deltaManager.submitSignal(content, targetClientId);\n\t}\n\n\tpublic flush(): void {\n\t\treturn this.deltaManager.flush();\n\t}\n\n\tprivate readonly onPrepareSend = (messageBuffer: any[]): void => {\n\t\tthis.emit(\"prepareSend\", messageBuffer);\n\t};\n\tprivate readonly onSubmitOp = (message: IDocumentMessage): void => {\n\t\tthis.emit(\"submitOp\", message);\n\t};\n\tprivate readonly onOp = (message: ISequencedDocumentMessage, processingTime: number): void => {\n\t\tthis.emit(\"op\", message, processingTime);\n\t};\n\tprivate readonly onPong = (latency: number): void => {\n\t\tthis.emit(\"pong\", latency);\n\t};\n\tprivate readonly onConnect = (details: IConnectionDetails, opsBehind?: number): void => {\n\t\tthis.emit(\"connect\", details, opsBehind);\n\t};\n\tprivate readonly onDisconnect = (reason: string, error?: IAnyDriverError): void => {\n\t\tthis.emit(\"disconnect\", reason, error);\n\t};\n\tprivate readonly onReadonly = (\n\t\treadonly: boolean,\n\t\treadonlyConnectionReason?: { reason: string; error?: IErrorBase },\n\t): void => {\n\t\tthis.emit(\"readonly\", readonly, readonlyConnectionReason);\n\t};\n}\n\n/**\n * Proxy to the real IDeltaManager for restricting certain access to layers below container runtime in summarizer clients:\n * - Summarizer client should be read-only to layers below the container runtime to restrict local changes.\n * - Summarizer client should not be active to layers below the container runtime to restrict local changes.\n */\nexport class DeltaManagerSummarizerProxy extends BaseDeltaManagerProxy {\n\tpublic get active(): boolean {\n\t\t// Summarize clients should not be active. There shouldn't be any local changes (writes) in the summarizer\n\t\t// except for the SummarizeOp which is generated by the runtime.\n\t\treturn !this.isSummarizerClient && this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\t// Summarizer clients should be read-only as far as the runtime and layers below are concerned. There shouldn't\n\t\t// be any local changes (writes) in the summarizer except for the summarize op which is generated by the runtime.\n\t\tif (this.isSummarizerClient) {\n\t\t\treturn {\n\t\t\t\treadonly: true,\n\t\t\t\tforced: false,\n\t\t\t\tpermissions: undefined,\n\t\t\t\tstorageOnly: false,\n\t\t\t};\n\t\t}\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tprivate readonly isSummarizerClient: boolean;\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper(deltaManager);\n\t\tthis.isSummarizerClient = this.deltaManager.clientDetails.type === summarizerClientType;\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deltaManagerSummarizerProxy.d.ts","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAEX,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,MAAM,sCAAsC,CAAC;AAI9C;;;;;GAKG;AACH,8BAAsB,qBACrB,SAAQ,iBAAiB,CAAC,mBAAmB,CAC7C,YAAW,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAmEpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAjE5F,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,OAAO,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAE3D;IAED,IAAW,QAAQ,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAErD;IAED,IAAW,aAAa,IAAI,WAAW,CAAC,cAAc,CAAC,CAEtD;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED,IAAW,WAAW,0CAErB;IAED,IAAW,kBAAkB,WAE5B;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,2BAA2B,YAErC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAElE;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;gBAGmB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAgBrF,OAAO,IAAI,IAAI;IAUf,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAEzB;IACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAEnB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAE3B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;CACF;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;IAwBpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAvB5F,IAAW,MAAM,IAAI,OAAO,CAI3B;IAED,IAAW,YAAY,IAAI,YAAY,CAYtC;IAED,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBAGzB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;CAK5F"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deltaManagerSummarizerProxy.js","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.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 { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport type {\n\tIConnectionDetails,\n\tIDeltaManager,\n\tIDeltaManagerEvents,\n\tIDeltaQueue,\n\tIDeltaSender,\n\tReadOnlyInfo,\n} from \"@fluidframework/container-definitions\";\nimport type { IErrorBase } from \"@fluidframework/core-interfaces\";\nimport type { IAnyDriverError } from \"@fluidframework/driver-definitions\";\nimport {\n\tIClientConfiguration,\n\tIClientDetails,\n\tIDocumentMessage,\n\tISequencedDocumentMessage,\n\tISignalMessage,\n} from \"@fluidframework/protocol-definitions\";\n\nimport { summarizerClientType } from \"./summary/index.js\";\n\n/**\n * Base class for DeltaManager proxy that proxy's access to the real DeltaManager.\n *\n * This class allows us to build proxy functionality without actually having to implement all the methods\n * of the DeltaManager.\n */\nexport abstract class BaseDeltaManagerProxy\n\textends TypedEventEmitter<IDeltaManagerEvents>\n\timplements IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>\n{\n\tpublic get IDeltaSender(): IDeltaSender {\n\t\treturn this;\n\t}\n\n\tpublic get inbound(): IDeltaQueue<ISequencedDocumentMessage> {\n\t\treturn this.deltaManager.inbound;\n\t}\n\n\tpublic get outbound(): IDeltaQueue<IDocumentMessage[]> {\n\t\treturn this.deltaManager.outbound;\n\t}\n\n\tpublic get inboundSignal(): IDeltaQueue<ISignalMessage> {\n\t\treturn this.deltaManager.inboundSignal;\n\t}\n\n\tpublic get minimumSequenceNumber(): number {\n\t\treturn this.deltaManager.minimumSequenceNumber;\n\t}\n\n\tpublic get lastSequenceNumber(): number {\n\t\treturn this.deltaManager.lastSequenceNumber;\n\t}\n\n\tpublic get lastMessage() {\n\t\treturn this.deltaManager.lastMessage;\n\t}\n\n\tpublic get lastKnownSeqNumber() {\n\t\treturn this.deltaManager.lastKnownSeqNumber;\n\t}\n\n\tpublic get initialSequenceNumber(): number {\n\t\treturn this.deltaManager.initialSequenceNumber;\n\t}\n\n\tpublic get hasCheckpointSequenceNumber() {\n\t\treturn this.deltaManager.hasCheckpointSequenceNumber;\n\t}\n\n\tpublic get clientDetails(): IClientDetails {\n\t\treturn this.deltaManager.clientDetails;\n\t}\n\n\tpublic get version(): string {\n\t\treturn this.deltaManager.version;\n\t}\n\n\tpublic get maxMessageSize(): number {\n\t\treturn this.deltaManager.maxMessageSize;\n\t}\n\n\tpublic get serviceConfiguration(): IClientConfiguration | undefined {\n\t\treturn this.deltaManager.serviceConfiguration;\n\t}\n\n\tpublic get active(): boolean {\n\t\treturn this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper();\n\n\t\t// We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n\t\tsuper.setMaxListeners(0);\n\n\t\tthis.deltaManager.on(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.on(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.on(\"op\", this.onOp);\n\t\tthis.deltaManager.on(\"pong\", this.onPong);\n\t\tthis.deltaManager.on(\"connect\", this.onConnect);\n\t\tthis.deltaManager.on(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.on(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.deltaManager.off(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.off(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.off(\"op\", this.onOp);\n\t\tthis.deltaManager.off(\"pong\", this.onPong);\n\t\tthis.deltaManager.off(\"connect\", this.onConnect);\n\t\tthis.deltaManager.off(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.off(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic submitSignal(content: string, targetClientId?: string): void {\n\t\treturn this.deltaManager.submitSignal(content, targetClientId);\n\t}\n\n\tpublic flush(): void {\n\t\treturn this.deltaManager.flush();\n\t}\n\n\tprivate readonly onPrepareSend = (messageBuffer: any[]): void => {\n\t\tthis.emit(\"prepareSend\", messageBuffer);\n\t};\n\tprivate readonly onSubmitOp = (message: IDocumentMessage): void => {\n\t\tthis.emit(\"submitOp\", message);\n\t};\n\tprivate readonly onOp = (message: ISequencedDocumentMessage, processingTime: number): void => {\n\t\tthis.emit(\"op\", message, processingTime);\n\t};\n\tprivate readonly onPong = (latency: number): void => {\n\t\tthis.emit(\"pong\", latency);\n\t};\n\tprivate readonly onConnect = (details: IConnectionDetails, opsBehind?: number): void => {\n\t\tthis.emit(\"connect\", details, opsBehind);\n\t};\n\tprivate readonly onDisconnect = (reason: string, error?: IAnyDriverError): void => {\n\t\tthis.emit(\"disconnect\", reason, error);\n\t};\n\tprivate readonly onReadonly = (\n\t\treadonly: boolean,\n\t\treadonlyConnectionReason?: { reason: string; error?: IErrorBase },\n\t): void => {\n\t\tthis.emit(\"readonly\", readonly, readonlyConnectionReason);\n\t};\n}\n\n/**\n * Proxy to the real IDeltaManager for restricting certain access to layers below container runtime in summarizer clients:\n * - Summarizer client should be read-only to layers below the container runtime to restrict local changes.\n * - Summarizer client should not be active to layers below the container runtime to restrict local changes.\n */\nexport class DeltaManagerSummarizerProxy extends BaseDeltaManagerProxy {\n\tpublic get active(): boolean {\n\t\t// Summarize clients should not be active. There shouldn't be any local changes (writes) in the summarizer\n\t\t// except for the SummarizeOp which is generated by the runtime.\n\t\treturn !this.isSummarizerClient && this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\t// Summarizer clients should be read-only as far as the runtime and layers below are concerned. There shouldn't\n\t\t// be any local changes (writes) in the summarizer except for the summarize op which is generated by the runtime.\n\t\tif (this.isSummarizerClient) {\n\t\t\treturn {\n\t\t\t\treadonly: true,\n\t\t\t\tforced: false,\n\t\t\t\tpermissions: undefined,\n\t\t\t\tstorageOnly: false,\n\t\t\t};\n\t\t}\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tprivate readonly isSummarizerClient: boolean;\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper(deltaManager);\n\t\tthis.isSummarizerClient = this.deltaManager.clientDetails.type === summarizerClientType;\n\t}\n}\n"]}