@fluidframework/container-loader 2.0.0-dev-rc.5.0.0.268409 → 2.0.0-dev-rc.5.0.0.270987

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 (166) hide show
  1. package/api-report/container-loader.alpha.api.md +59 -4
  2. package/api-report/container-loader.beta.api.md +7 -3
  3. package/api-report/container-loader.public.api.md +7 -3
  4. package/biome.jsonc +4 -0
  5. package/dist/audience.js +2 -1
  6. package/dist/audience.js.map +1 -1
  7. package/dist/catchUpMonitor.js +11 -8
  8. package/dist/catchUpMonitor.js.map +1 -1
  9. package/dist/connectionManager.d.ts +2 -2
  10. package/dist/connectionManager.d.ts.map +1 -1
  11. package/dist/connectionManager.js +91 -63
  12. package/dist/connectionManager.js.map +1 -1
  13. package/dist/connectionStateHandler.js +35 -11
  14. package/dist/connectionStateHandler.js.map +1 -1
  15. package/dist/container.d.ts +3 -2
  16. package/dist/container.d.ts.map +1 -1
  17. package/dist/container.js +162 -126
  18. package/dist/container.js.map +1 -1
  19. package/dist/containerContext.d.ts +2 -2
  20. package/dist/containerContext.d.ts.map +1 -1
  21. package/dist/containerContext.js +34 -8
  22. package/dist/containerContext.js.map +1 -1
  23. package/dist/containerStorageAdapter.js +17 -9
  24. package/dist/containerStorageAdapter.js.map +1 -1
  25. package/dist/contracts.d.ts +2 -2
  26. package/dist/contracts.d.ts.map +1 -1
  27. package/dist/contracts.js.map +1 -1
  28. package/dist/debugLogger.js +2 -0
  29. package/dist/debugLogger.js.map +1 -1
  30. package/dist/deltaManager.d.ts +2 -2
  31. package/dist/deltaManager.d.ts.map +1 -1
  32. package/dist/deltaManager.js +48 -35
  33. package/dist/deltaManager.js.map +1 -1
  34. package/dist/deltaQueue.js +14 -7
  35. package/dist/deltaQueue.js.map +1 -1
  36. package/dist/error.js +5 -4
  37. package/dist/error.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/legacy.d.ts +5 -0
  42. package/dist/loader.js +5 -1
  43. package/dist/loader.js.map +1 -1
  44. package/dist/noopHeuristic.d.ts +1 -1
  45. package/dist/noopHeuristic.d.ts.map +1 -1
  46. package/dist/noopHeuristic.js +3 -1
  47. package/dist/noopHeuristic.js.map +1 -1
  48. package/dist/packageVersion.d.ts +1 -1
  49. package/dist/packageVersion.js +1 -1
  50. package/dist/packageVersion.js.map +1 -1
  51. package/dist/protocol/index.d.ts +7 -0
  52. package/dist/protocol/index.d.ts.map +1 -0
  53. package/dist/protocol/index.js +12 -0
  54. package/dist/protocol/index.js.map +1 -0
  55. package/dist/protocol/protocol.d.ts +52 -0
  56. package/dist/protocol/protocol.d.ts.map +1 -0
  57. package/dist/protocol/protocol.js +115 -0
  58. package/dist/protocol/protocol.js.map +1 -0
  59. package/dist/protocol/quorum.d.ts +185 -0
  60. package/dist/protocol/quorum.d.ts.map +1 -0
  61. package/dist/protocol/quorum.js +440 -0
  62. package/dist/protocol/quorum.js.map +1 -0
  63. package/dist/protocol.d.ts +2 -3
  64. package/dist/protocol.d.ts.map +1 -1
  65. package/dist/protocol.js +4 -2
  66. package/dist/protocol.js.map +1 -1
  67. package/dist/protocolTreeDocumentStorageService.d.ts +7 -7
  68. package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
  69. package/dist/protocolTreeDocumentStorageService.js +16 -7
  70. package/dist/protocolTreeDocumentStorageService.js.map +1 -1
  71. package/dist/retriableDocumentStorageService.js +4 -1
  72. package/dist/retriableDocumentStorageService.js.map +1 -1
  73. package/dist/serializedStateManager.d.ts +5 -3
  74. package/dist/serializedStateManager.d.ts.map +1 -1
  75. package/dist/serializedStateManager.js +26 -5
  76. package/dist/serializedStateManager.js.map +1 -1
  77. package/lib/audience.js +2 -1
  78. package/lib/audience.js.map +1 -1
  79. package/lib/catchUpMonitor.js +11 -8
  80. package/lib/catchUpMonitor.js.map +1 -1
  81. package/lib/connectionManager.d.ts +2 -2
  82. package/lib/connectionManager.d.ts.map +1 -1
  83. package/lib/connectionManager.js +91 -63
  84. package/lib/connectionManager.js.map +1 -1
  85. package/lib/connectionStateHandler.js +35 -11
  86. package/lib/connectionStateHandler.js.map +1 -1
  87. package/lib/container.d.ts +3 -2
  88. package/lib/container.d.ts.map +1 -1
  89. package/lib/container.js +162 -126
  90. package/lib/container.js.map +1 -1
  91. package/lib/containerContext.d.ts +2 -2
  92. package/lib/containerContext.d.ts.map +1 -1
  93. package/lib/containerContext.js +34 -8
  94. package/lib/containerContext.js.map +1 -1
  95. package/lib/containerStorageAdapter.js +17 -9
  96. package/lib/containerStorageAdapter.js.map +1 -1
  97. package/lib/contracts.d.ts +2 -2
  98. package/lib/contracts.d.ts.map +1 -1
  99. package/lib/contracts.js.map +1 -1
  100. package/lib/debugLogger.js +2 -0
  101. package/lib/debugLogger.js.map +1 -1
  102. package/lib/deltaManager.d.ts +2 -2
  103. package/lib/deltaManager.d.ts.map +1 -1
  104. package/lib/deltaManager.js +48 -35
  105. package/lib/deltaManager.js.map +1 -1
  106. package/lib/deltaQueue.js +14 -7
  107. package/lib/deltaQueue.js.map +1 -1
  108. package/lib/error.js +5 -4
  109. package/lib/error.js.map +1 -1
  110. package/lib/index.d.ts +1 -0
  111. package/lib/index.d.ts.map +1 -1
  112. package/lib/index.js.map +1 -1
  113. package/lib/legacy.d.ts +5 -0
  114. package/lib/loader.js +5 -1
  115. package/lib/loader.js.map +1 -1
  116. package/lib/noopHeuristic.d.ts +1 -1
  117. package/lib/noopHeuristic.d.ts.map +1 -1
  118. package/lib/noopHeuristic.js +3 -1
  119. package/lib/noopHeuristic.js.map +1 -1
  120. package/lib/packageVersion.d.ts +1 -1
  121. package/lib/packageVersion.js +1 -1
  122. package/lib/packageVersion.js.map +1 -1
  123. package/lib/protocol/index.d.ts +7 -0
  124. package/lib/protocol/index.d.ts.map +1 -0
  125. package/lib/protocol/index.js +7 -0
  126. package/lib/protocol/index.js.map +1 -0
  127. package/lib/protocol/protocol.d.ts +52 -0
  128. package/lib/protocol/protocol.d.ts.map +1 -0
  129. package/lib/protocol/protocol.js +111 -0
  130. package/lib/protocol/protocol.js.map +1 -0
  131. package/lib/protocol/quorum.d.ts +185 -0
  132. package/lib/protocol/quorum.d.ts.map +1 -0
  133. package/lib/protocol/quorum.js +431 -0
  134. package/lib/protocol/quorum.js.map +1 -0
  135. package/lib/protocol.d.ts +2 -3
  136. package/lib/protocol.d.ts.map +1 -1
  137. package/lib/protocol.js +3 -1
  138. package/lib/protocol.js.map +1 -1
  139. package/lib/protocolTreeDocumentStorageService.d.ts +7 -7
  140. package/lib/protocolTreeDocumentStorageService.d.ts.map +1 -1
  141. package/lib/protocolTreeDocumentStorageService.js +16 -7
  142. package/lib/protocolTreeDocumentStorageService.js.map +1 -1
  143. package/lib/retriableDocumentStorageService.js +4 -1
  144. package/lib/retriableDocumentStorageService.js.map +1 -1
  145. package/lib/serializedStateManager.d.ts +5 -3
  146. package/lib/serializedStateManager.d.ts.map +1 -1
  147. package/lib/serializedStateManager.js +26 -5
  148. package/lib/serializedStateManager.js.map +1 -1
  149. package/package.json +19 -14
  150. package/src/catchUpMonitor.ts +1 -1
  151. package/src/connectionManager.ts +3 -7
  152. package/src/container.ts +16 -9
  153. package/src/containerContext.ts +2 -5
  154. package/src/contracts.ts +3 -6
  155. package/src/deltaManager.ts +3 -5
  156. package/src/index.ts +7 -0
  157. package/src/noopHeuristic.ts +1 -1
  158. package/src/packageVersion.ts +1 -1
  159. package/src/protocol/README.md +10 -0
  160. package/src/protocol/index.ts +16 -0
  161. package/src/protocol/protocol.ts +185 -0
  162. package/src/protocol/quorum.ts +584 -0
  163. package/src/protocol.ts +4 -6
  164. package/src/protocolTreeDocumentStorageService.ts +16 -8
  165. package/src/serializedStateManager.ts +25 -4
  166. package/tsconfig.json +2 -0
@@ -10,7 +10,6 @@ import {
10
10
  } from "@fluidframework/container-definitions/internal";
11
11
  import type { IEventProvider, IEvent, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
12
12
  import { assert } from "@fluidframework/core-utils/internal";
13
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
14
13
  import {
15
14
  FetchSource,
16
15
  IDocumentStorageService,
@@ -19,6 +18,7 @@ import {
19
18
  type IDocumentAttributes,
20
19
  ISnapshotTree,
21
20
  IVersion,
21
+ ISequencedDocumentMessage,
22
22
  } from "@fluidframework/driver-definitions/internal";
23
23
  import { getSnapshotTree } from "@fluidframework/driver-utils/internal";
24
24
  import {
@@ -131,6 +131,19 @@ export class SerializedStateManager {
131
131
  private latestSnapshot: ISnapshotInfo | undefined;
132
132
  private refreshSnapshotP: Promise<void> | undefined;
133
133
  private readonly lastSavedOpSequenceNumber: number = 0;
134
+ private _supportGetSnapshotApi: boolean | undefined;
135
+
136
+ private set supportGetSnapshotApi(value: boolean | undefined) {
137
+ assert(
138
+ this._supportGetSnapshotApi === undefined,
139
+ "supportGetSnapshotApi should be declared just once",
140
+ );
141
+ this._supportGetSnapshotApi = value;
142
+ }
143
+
144
+ private get supportGetSnapshotApi(): boolean | undefined {
145
+ return this._supportGetSnapshotApi;
146
+ }
134
147
 
135
148
  /**
136
149
  * @param pendingLocalState - The pendingLocalState being rehydrated, if any (undefined when loading directly from storage)
@@ -153,6 +166,9 @@ export class SerializedStateManager {
153
166
  namespace: "serializedStateManager",
154
167
  });
155
168
 
169
+ // special case handle. Obtaining the last saved op seq num to avoid
170
+ // refreshing the snapshot before we have processed it. It could cause
171
+ // a subsequent stashing to have a newer snapshot than allowed.
156
172
  if (pendingLocalState && pendingLocalState.savedOps.length > 0) {
157
173
  const savedOpsSize = pendingLocalState.savedOps.length;
158
174
  this.lastSavedOpSequenceNumber =
@@ -196,11 +212,12 @@ export class SerializedStateManager {
196
212
  specifiedVersion: string | undefined,
197
213
  supportGetSnapshotApi: boolean,
198
214
  ) {
215
+ this.supportGetSnapshotApi = supportGetSnapshotApi;
199
216
  if (this.pendingLocalState === undefined) {
200
217
  const { baseSnapshot, version } = await getSnapshot(
201
218
  this.mc,
202
219
  this.storageAdapter,
203
- supportGetSnapshotApi,
220
+ this.supportGetSnapshotApi,
204
221
  specifiedVersion,
205
222
  );
206
223
  const baseSnapshotTree: ISnapshotTree | undefined = getSnapshotTree(baseSnapshot);
@@ -235,7 +252,7 @@ export class SerializedStateManager {
235
252
  this.mc.config.getBoolean("Fluid.Container.enableOfflineSnapshotRefresh") === true
236
253
  ) {
237
254
  // Don't block on the refresh snapshot call - it is for the next time we serialize, not booting this incarnation
238
- this.refreshSnapshotP = this.refreshLatestSnapshot(supportGetSnapshotApi);
255
+ this.refreshSnapshotP = this.refreshLatestSnapshot(this.supportGetSnapshotApi);
239
256
  this.refreshSnapshotP.catch((e) => {
240
257
  this.mc.logger.sendErrorEvent({
241
258
  eventName: "RefreshLatestSnapshotFailed",
@@ -353,7 +370,11 @@ export class SerializedStateManager {
353
370
  * base snapshot when attaching.
354
371
  * @param snapshot - snapshot and blobs collected while attaching (a form of the attach summary)
355
372
  */
356
- public setInitialSnapshot(snapshot: SnapshotWithBlobs | undefined) {
373
+ public setInitialSnapshot(
374
+ snapshot: SnapshotWithBlobs | undefined,
375
+ supportGetSnapshotApi: boolean,
376
+ ) {
377
+ this.supportGetSnapshotApi = supportGetSnapshotApi;
357
378
  if (this.offlineLoadEnabled) {
358
379
  assert(
359
380
  this.snapshot === undefined,
package/tsconfig.json CHANGED
@@ -5,5 +5,7 @@
5
5
  "compilerOptions": {
6
6
  "rootDir": "./src",
7
7
  "outDir": "./lib",
8
+ "noUncheckedIndexedAccess": false,
9
+ "exactOptionalPropertyTypes": false,
8
10
  },
9
11
  }