@fluidframework/container-loader 0.59.4000 → 1.0.1

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 (100) hide show
  1. package/.eslintrc.js +1 -1
  2. package/README.md +1 -1
  3. package/dist/connectionState.d.ts +15 -3
  4. package/dist/connectionState.d.ts.map +1 -1
  5. package/dist/connectionState.js +15 -3
  6. package/dist/connectionState.js.map +1 -1
  7. package/dist/connectionStateHandler.d.ts +6 -4
  8. package/dist/connectionStateHandler.d.ts.map +1 -1
  9. package/dist/connectionStateHandler.js +21 -6
  10. package/dist/connectionStateHandler.js.map +1 -1
  11. package/dist/container.d.ts +18 -26
  12. package/dist/container.d.ts.map +1 -1
  13. package/dist/container.js +54 -88
  14. package/dist/container.js.map +1 -1
  15. package/dist/containerContext.d.ts +6 -4
  16. package/dist/containerContext.d.ts.map +1 -1
  17. package/dist/containerContext.js +8 -7
  18. package/dist/containerContext.js.map +1 -1
  19. package/dist/containerStorageAdapter.d.ts +2 -3
  20. package/dist/containerStorageAdapter.d.ts.map +1 -1
  21. package/dist/containerStorageAdapter.js +0 -3
  22. package/dist/containerStorageAdapter.js.map +1 -1
  23. package/dist/deltaManagerProxy.d.ts +0 -1
  24. package/dist/deltaManagerProxy.d.ts.map +1 -1
  25. package/dist/deltaManagerProxy.js +0 -3
  26. package/dist/deltaManagerProxy.js.map +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/loader.d.ts +1 -13
  31. package/dist/loader.d.ts.map +1 -1
  32. package/dist/loader.js +2 -3
  33. package/dist/loader.js.map +1 -1
  34. package/dist/packageVersion.d.ts +1 -1
  35. package/dist/packageVersion.d.ts.map +1 -1
  36. package/dist/packageVersion.js +1 -1
  37. package/dist/packageVersion.js.map +1 -1
  38. package/dist/protocolTreeDocumentStorageService.d.ts +0 -1
  39. package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
  40. package/dist/protocolTreeDocumentStorageService.js +0 -1
  41. package/dist/protocolTreeDocumentStorageService.js.map +1 -1
  42. package/dist/retriableDocumentStorageService.d.ts +1 -2
  43. package/dist/retriableDocumentStorageService.d.ts.map +1 -1
  44. package/dist/retriableDocumentStorageService.js +0 -3
  45. package/dist/retriableDocumentStorageService.js.map +1 -1
  46. package/lib/connectionState.d.ts +15 -3
  47. package/lib/connectionState.d.ts.map +1 -1
  48. package/lib/connectionState.js +15 -3
  49. package/lib/connectionState.js.map +1 -1
  50. package/lib/connectionStateHandler.d.ts +6 -4
  51. package/lib/connectionStateHandler.d.ts.map +1 -1
  52. package/lib/connectionStateHandler.js +21 -6
  53. package/lib/connectionStateHandler.js.map +1 -1
  54. package/lib/container.d.ts +18 -26
  55. package/lib/container.d.ts.map +1 -1
  56. package/lib/container.js +54 -88
  57. package/lib/container.js.map +1 -1
  58. package/lib/containerContext.d.ts +6 -4
  59. package/lib/containerContext.d.ts.map +1 -1
  60. package/lib/containerContext.js +8 -7
  61. package/lib/containerContext.js.map +1 -1
  62. package/lib/containerStorageAdapter.d.ts +2 -3
  63. package/lib/containerStorageAdapter.d.ts.map +1 -1
  64. package/lib/containerStorageAdapter.js +0 -3
  65. package/lib/containerStorageAdapter.js.map +1 -1
  66. package/lib/deltaManagerProxy.d.ts +0 -1
  67. package/lib/deltaManagerProxy.d.ts.map +1 -1
  68. package/lib/deltaManagerProxy.js +0 -3
  69. package/lib/deltaManagerProxy.js.map +1 -1
  70. package/lib/index.d.ts +1 -1
  71. package/lib/index.d.ts.map +1 -1
  72. package/lib/index.js.map +1 -1
  73. package/lib/loader.d.ts +1 -13
  74. package/lib/loader.d.ts.map +1 -1
  75. package/lib/loader.js +2 -3
  76. package/lib/loader.js.map +1 -1
  77. package/lib/packageVersion.d.ts +1 -1
  78. package/lib/packageVersion.d.ts.map +1 -1
  79. package/lib/packageVersion.js +1 -1
  80. package/lib/packageVersion.js.map +1 -1
  81. package/lib/protocolTreeDocumentStorageService.d.ts +0 -1
  82. package/lib/protocolTreeDocumentStorageService.d.ts.map +1 -1
  83. package/lib/protocolTreeDocumentStorageService.js +0 -1
  84. package/lib/protocolTreeDocumentStorageService.js.map +1 -1
  85. package/lib/retriableDocumentStorageService.d.ts +1 -2
  86. package/lib/retriableDocumentStorageService.d.ts.map +1 -1
  87. package/lib/retriableDocumentStorageService.js +0 -3
  88. package/lib/retriableDocumentStorageService.js.map +1 -1
  89. package/package.json +25 -25
  90. package/src/connectionState.ts +20 -6
  91. package/src/connectionStateHandler.ts +29 -8
  92. package/src/container.ts +77 -100
  93. package/src/containerContext.ts +10 -10
  94. package/src/containerStorageAdapter.ts +1 -6
  95. package/src/deltaManagerProxy.ts +0 -4
  96. package/src/index.ts +1 -0
  97. package/src/loader.ts +4 -21
  98. package/src/packageVersion.ts +1 -1
  99. package/src/protocolTreeDocumentStorageService.ts +0 -1
  100. package/src/retriableDocumentStorageService.ts +0 -8
package/lib/container.js CHANGED
@@ -36,7 +36,7 @@ const savedContainerEvent = "saved";
36
36
  * Useful when resolving URIs and hitting 404, due to container being loaded from (stale) snapshot and not being
37
37
  * up to date. Host may chose to wait in such case and retry resolving URI.
38
38
  * Warning: Will wait infinitely for connection to establish if there is no connection.
39
- * May result in deadlock if Container.setAutoReconnect(false) is called and never switched back to auto-reconnect.
39
+ * May result in deadlock if Container.disconnect() is called and never followed by a call to Container.connect().
40
40
  * @returns true: container is up to date, it processed all the ops that were know at the time of first connection
41
41
  * false: storage does not provide indication of how far the client is. Container processed
42
42
  * all the ops known to it, but it maybe still behind.
@@ -58,7 +58,8 @@ export async function waitContainerToCatchUp(container) {
58
58
  };
59
59
  container.on("closed", closedCallback);
60
60
  const waitForOps = () => {
61
- assert(container.connectionState !== ConnectionState.Disconnected, 0x0cd /* "Container disconnected while waiting for ops!" */);
61
+ assert(container.connectionState === ConnectionState.CatchingUp
62
+ || container.connectionState === ConnectionState.Connected, 0x0cd /* "Container disconnected while waiting for ops!" */);
62
63
  const hasCheckpointSequenceNumber = deltaManager.hasCheckpointSequenceNumber;
63
64
  const connectionOpSeqNumber = deltaManager.lastKnownSeqNumber;
64
65
  assert(deltaManager.lastSequenceNumber <= connectionOpSeqNumber, 0x266 /* "lastKnownSeqNumber should never be below last processed sequence number" */);
@@ -89,9 +90,7 @@ export async function waitContainerToCatchUp(container) {
89
90
  waitForOps();
90
91
  };
91
92
  container.on(connectedEventName, callback);
92
- // TODO: Remove null check after next release #8523
93
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
94
- container.resume();
93
+ container.connect();
95
94
  });
96
95
  }
97
96
  const getCodeProposal =
@@ -100,7 +99,7 @@ const getCodeProposal =
100
99
  const summarizerClientType = "summarizer";
101
100
  export class Container extends EventEmitterWithErrorHandling {
102
101
  constructor(loader, config) {
103
- var _a;
102
+ var _a, _b;
104
103
  super((name, error) => {
105
104
  this.mc.logger.sendErrorEvent({
106
105
  eventName: "ContainerEventHandlerException",
@@ -172,7 +171,7 @@ export class Container extends EventEmitterWithErrorHandling {
172
171
  // its own join op. Attempt recovery option.
173
172
  this._deltaManager.logConnectionIssue({
174
173
  eventName,
175
- duration: performance.now() - this.connectionTransitionTimes[ConnectionState.Connecting],
174
+ duration: performance.now() - this.connectionTransitionTimes[ConnectionState.CatchingUp],
176
175
  });
177
176
  },
178
177
  connectionStateChanged: () => {
@@ -180,7 +179,7 @@ export class Container extends EventEmitterWithErrorHandling {
180
179
  this.propagateConnectionState();
181
180
  }
182
181
  },
183
- }, this.mc.logger);
182
+ }, this.mc.logger, (_b = config.serializedContainerState) === null || _b === void 0 ? void 0 : _b.clientId);
184
183
  this.on(savedContainerEvent, () => {
185
184
  this.connectionStateHandler.containerSaved();
186
185
  });
@@ -258,16 +257,17 @@ export class Container extends EventEmitterWithErrorHandling {
258
257
  clientDetailsOverride: loadOptions.clientDetailsOverride,
259
258
  resolvedUrl: loadOptions.resolvedUrl,
260
259
  canReconnect: loadOptions.canReconnect,
260
+ serializedContainerState: pendingLocalState,
261
261
  });
262
262
  return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: "Load" }, async (event) => new Promise((resolve, reject) => {
263
- var _a;
263
+ var _a, _b;
264
264
  container._lifecycleState = "loading";
265
265
  const version = loadOptions.version;
266
- // always load unpaused with pending ops!
267
- // It is also default mode in general.
268
266
  const defaultMode = { opsBeforeReturn: "cached" };
269
- assert(pendingLocalState === undefined || loadOptions.loadMode === undefined, 0x1e1 /* "pending state requires immediate connection!" */);
270
- const mode = (_a = loadOptions.loadMode) !== null && _a !== void 0 ? _a : defaultMode;
267
+ // if we have pendingLocalState, anything we cached is not useful and we shouldn't wait for connection
268
+ // to return container, so ignore this value and use undefined for opsBeforeReturn
269
+ const mode = pendingLocalState
270
+ ? Object.assign(Object.assign({}, ((_a = loadOptions.loadMode) !== null && _a !== void 0 ? _a : defaultMode)), { opsBeforeReturn: undefined }) : (_b = loadOptions.loadMode) !== null && _b !== void 0 ? _b : defaultMode;
271
271
  const onClosed = (err) => {
272
272
  // pre-0.58 error message: containerClosedWithoutErrorDuringLoad
273
273
  reject(err !== null && err !== void 0 ? err : new GenericError("Container closed without error during load"));
@@ -486,9 +486,13 @@ export class Container extends EventEmitterWithErrorHandling {
486
486
  // a new clientId and a future container using stale pending state without the new clientId would resubmit them
487
487
  assert(this.attachState === AttachState.Attached, 0x0d1 /* "Container should be attached before close" */);
488
488
  assert(this.resolvedUrl !== undefined && this.resolvedUrl.type === "fluid", 0x0d2 /* "resolved url should be valid Fluid url" */);
489
+ assert(!!this._protocolHandler, 0x2e3 /* "Must have a valid protocol handler instance" */);
489
490
  const pendingState = {
490
491
  pendingRuntimeState: this.context.getPendingLocalState(),
491
492
  url: this.resolvedUrl.url,
493
+ protocol: this._protocolHandler.getProtocolState(),
494
+ term: this._protocolHandler.term,
495
+ clientId: this.clientId,
492
496
  };
493
497
  this.close();
494
498
  return JSON.stringify(pendingState);
@@ -532,7 +536,7 @@ export class Container extends EventEmitterWithErrorHandling {
532
536
  // starting to attach the container to storage.
533
537
  // Also, this should only be fired in detached container.
534
538
  this._attachState = AttachState.Attaching;
535
- this.context.notifyAttaching();
539
+ this.context.notifyAttaching(getSnapshotTreeFromSerializedContainer(summary));
536
540
  }
537
541
  // Actually go and create the resolved document
538
542
  const createNewResolvedUrl = await this.urlResolver.resolve(request);
@@ -567,7 +571,7 @@ export class Container extends EventEmitterWithErrorHandling {
567
571
  const protocolSummary = this.captureProtocolSummary();
568
572
  summary = combineAppAndProtocolSummary(appSummary, protocolSummary);
569
573
  this._attachState = AttachState.Attaching;
570
- this.context.notifyAttaching();
574
+ this.context.notifyAttaching(getSnapshotTreeFromSerializedContainer(summary));
571
575
  await this.storageService.uploadSummaryWithContext(summary, {
572
576
  referenceSequenceNumber: 0,
573
577
  ackHandle: undefined,
@@ -597,27 +601,6 @@ export class Container extends EventEmitterWithErrorHandling {
597
601
  async request(path) {
598
602
  return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: "Request" }, async () => this.context.request(path), { end: true, cancel: "error" });
599
603
  }
600
- /**
601
- * Dictates whether or not the current container will automatically attempt to reconnect to the delta stream
602
- * after receiving a disconnect event
603
- * @param reconnect - Boolean indicating if reconnect should automatically occur
604
- * @deprecated - 0.58, This API will be removed in 1.0
605
- * Use `connect()` and `disconnect()` instead of `setAutoReconnect(true)` and `setAutoReconnect(false)` respectively
606
- * See https://github.com/microsoft/FluidFramework/issues/9167 for context
607
- */
608
- setAutoReconnect(reconnect) {
609
- if (this.closed) {
610
- throw new Error("Attempting to setAutoReconnect() a closed Container");
611
- }
612
- const mode = reconnect ? ReconnectMode.Enabled : ReconnectMode.Disabled;
613
- this.setAutoReconnectInternal(mode);
614
- // If container state is not attached and resumed, then don't connect to delta stream. Also don't set the
615
- // manual reconnection flag to true as we haven't made the initial connection yet.
616
- if (reconnect && this._attachState === AttachState.Attached && this.resumedOpProcessingAfterLoad) {
617
- // Ensure connection to web socket
618
- this.connectToDeltaStream({ reason: "autoReconnect" });
619
- }
620
- }
621
604
  setAutoReconnectInternal(mode) {
622
605
  const currentMode = this._deltaManager.connectionManager.reconnectMode;
623
606
  if (currentMode === mode) {
@@ -671,22 +654,8 @@ export class Container extends EventEmitterWithErrorHandling {
671
654
  const mode = ReconnectMode.Disabled;
672
655
  this.setAutoReconnectInternal(mode);
673
656
  }
674
- /**
675
- * Have the container attempt to resume processing ops
676
- * @deprecated - 0.58, This API will be removed in 1.0
677
- * Use `connect()` instead
678
- * See https://github.com/microsoft/FluidFramework/issues/9167 for context
679
- */
680
- resume() {
681
- if (!this.closed) {
682
- // Note: no need to fetch ops as we do it preemptively as part of DeltaManager.attachOpHandler().
683
- // If there is gap, we will learn about it once connected, but the gap should be small (if any),
684
- // assuming that resume() is called quickly after initial container boot.
685
- this.resumeInternal({ reason: "DocumentOpenResume", fetchOpsFromStorage: false });
686
- }
687
- }
688
657
  resumeInternal(args) {
689
- assert(!this.closed, 0x0d9 /* "Attempting to setAutoReconnect() a closed DeltaManager" */);
658
+ assert(!this.closed, 0x0d9 /* "Attempting to connect() a closed DeltaManager" */);
690
659
  // Resume processing ops
691
660
  if (!this.resumedOpProcessingAfterLoad) {
692
661
  this.resumedOpProcessingAfterLoad = true;
@@ -775,12 +744,26 @@ export class Container extends EventEmitterWithErrorHandling {
775
744
  if (loadMode.deltaConnection === undefined) {
776
745
  this.connectToDeltaStream(connectionArgs);
777
746
  }
778
- await this.connectStorageService();
747
+ if (!pendingLocalState) {
748
+ await this.connectStorageService();
749
+ }
750
+ else {
751
+ // if we have pendingLocalState we can load without storage; don't wait for connection
752
+ this.connectStorageService().catch((error) => this.close(error));
753
+ }
779
754
  this._attachState = AttachState.Attached;
780
755
  // Fetch specified snapshot.
781
- const { snapshot, versionId } = await this.fetchSnapshotTree(specifiedVersion);
782
- assert(snapshot !== undefined, 0x237 /* "Snapshot should exist" */);
783
- const attributes = await this.getDocumentAttributes(this.storageService, snapshot);
756
+ const { snapshot, versionId } = pendingLocalState === undefined
757
+ ? await this.fetchSnapshotTree(specifiedVersion)
758
+ : { snapshot: undefined, versionId: undefined };
759
+ assert(snapshot !== undefined || pendingLocalState !== undefined, 0x237 /* "Snapshot should exist" */);
760
+ const attributes = pendingLocalState === undefined
761
+ ? await this.getDocumentAttributes(this.storageService, snapshot)
762
+ : {
763
+ sequenceNumber: pendingLocalState.protocol.sequenceNumber,
764
+ minimumSequenceNumber: pendingLocalState.protocol.minimumSequenceNumber,
765
+ term: pendingLocalState.term,
766
+ };
784
767
  let opsBeforeReturnP;
785
768
  // Attach op handlers to finish initialization and be able to start processing ops
786
769
  // Kick off any ops fetching if required.
@@ -801,11 +784,12 @@ export class Container extends EventEmitterWithErrorHandling {
801
784
  }
802
785
  // ...load in the existing quorum
803
786
  // Initialize the protocol handler
804
- this._protocolHandler =
805
- await this.initializeProtocolStateFromSnapshot(attributes, this.storageService, snapshot);
787
+ this._protocolHandler = pendingLocalState === undefined
788
+ ? await this.initializeProtocolStateFromSnapshot(attributes, this.storageService, snapshot)
789
+ : await this.initializeProtocolState(attributes, pendingLocalState.protocol.members, pendingLocalState.protocol.proposals, pendingLocalState.protocol.values);
806
790
  const codeDetails = this.getCodeDetailsFromQuorum();
807
791
  await this.instantiateContext(true, // existing
808
- codeDetails, snapshot, pendingLocalState);
792
+ codeDetails, snapshot, pendingLocalState === null || pendingLocalState === void 0 ? void 0 : pendingLocalState.pendingRuntimeState);
809
793
  // Propagate current connection state through the system.
810
794
  this.propagateConnectionState();
811
795
  // Internal context is fully loaded at this point
@@ -822,7 +806,10 @@ export class Container extends EventEmitterWithErrorHandling {
822
806
  }
823
807
  switch (loadMode.deltaConnection) {
824
808
  case undefined:
825
- this.resume();
809
+ // Note: no need to fetch ops as we do it preemptively as part of DeltaManager.attachOpHandler().
810
+ // If there is gap, we will learn about it once connected, but the gap should be small (if any),
811
+ // assuming that resumeInternal() is called quickly after initial container boot.
812
+ this.resumeInternal({ reason: "DocumentLoad", fetchOpsFromStorage: false });
826
813
  break;
827
814
  case "delayed":
828
815
  this.resumedOpProcessingAfterLoad = true;
@@ -945,12 +932,7 @@ export class Container extends EventEmitterWithErrorHandling {
945
932
  protocolLogger.sendErrorEvent(error);
946
933
  });
947
934
  // Track membership changes and update connection state accordingly
948
- protocol.quorum.on("addMember", (clientId, details) => {
949
- this.connectionStateHandler.receivedAddMemberEvent(clientId);
950
- });
951
- protocol.quorum.on("removeMember", (clientId) => {
952
- this.connectionStateHandler.receivedRemoveMemberEvent(clientId);
953
- });
935
+ this.connectionStateHandler.initProtocol(protocol);
954
936
  protocol.quorum.on("addProposal", (proposal) => {
955
937
  if (proposal.key === "code" || proposal.key === "code2") {
956
938
  this.emit("codeDetailsProposed", proposal.value, proposal);
@@ -1085,6 +1067,7 @@ export class Container extends EventEmitterWithErrorHandling {
1085
1067
  }, prefetchType);
1086
1068
  }
1087
1069
  logConnectionStateChangeTelemetry(value, oldState, reason) {
1070
+ var _a;
1088
1071
  // Log actual event
1089
1072
  const time = performance.now();
1090
1073
  this.connectionTransitionTimes[value] = time;
@@ -1120,7 +1103,7 @@ export class Container extends EventEmitterWithErrorHandling {
1120
1103
  durationFromDisconnected,
1121
1104
  reason,
1122
1105
  connectionInitiationReason, pendingClientId: this.connectionStateHandler.pendingClientId, clientId: this.clientId, autoReconnect,
1123
- opsBehind, online: OnlineStatus[isOnline()], lastVisible: this.lastVisible !== undefined ? performance.now() - this.lastVisible : undefined, checkpointSequenceNumber }, this._deltaManager.connectionProps));
1106
+ opsBehind, online: OnlineStatus[isOnline()], lastVisible: this.lastVisible !== undefined ? performance.now() - this.lastVisible : undefined, checkpointSequenceNumber, quorumSize: (_a = this._protocolHandler) === null || _a === void 0 ? void 0 : _a.quorum.getMembers().size }, this._deltaManager.connectionProps));
1124
1107
  if (value === ConnectionState.Connected) {
1125
1108
  this.firstConnection = false;
1126
1109
  }
@@ -1179,6 +1162,7 @@ export class Container extends EventEmitterWithErrorHandling {
1179
1162
  return this._deltaManager.submit(type, contents, batch, metadata);
1180
1163
  }
1181
1164
  processRemoteMessage(message) {
1165
+ var _a, _b;
1182
1166
  // Check and report if we're getting messages from a clientId that we previously
1183
1167
  // flagged as shouldHaveLeft, or from a client that's not in the quorum but should be
1184
1168
  if (message.clientId != null) {
@@ -1211,35 +1195,17 @@ export class Container extends EventEmitterWithErrorHandling {
1211
1195
  // That means that if relay service changes settings, such changes will impact only newly booted
1212
1196
  // clients.
1213
1197
  // All existing will continue to use settings they got earlier.
1214
- const [noopTimeFrequency, noopCountFrequency] = this.getNoopConfig();
1198
+ assert(this.serviceConfiguration !== undefined, 0x2e4 /* "there should be service config for active connection" */);
1215
1199
  this.collabWindowTracker = new CollabWindowTracker((type, contents) => {
1216
1200
  assert(this.activeConnection(), 0x241 /* "disconnect should result in stopSequenceNumberUpdate() call" */);
1217
1201
  this.submitMessage(type, contents);
1218
- }, noopTimeFrequency, noopCountFrequency);
1202
+ }, (_a = this.serviceConfiguration) === null || _a === void 0 ? void 0 : _a.noopTimeFrequency, (_b = this.serviceConfiguration) === null || _b === void 0 ? void 0 : _b.noopCountFrequency);
1219
1203
  }
1220
1204
  this.collabWindowTracker.scheduleSequenceNumberUpdate(message, result.immediateNoOp === true);
1221
1205
  }
1222
1206
  this.emit("op", message);
1223
1207
  return result;
1224
1208
  }
1225
- /**
1226
- * #260 (ADO)
1227
- * back-compat: noopTimeFrequency & noopCountFrequency properties were added to
1228
- * IClientConfiguration in 0.59.3000. During the integration, we must read the
1229
- * available configuration from the loader options.
1230
- */
1231
- getNoopConfig() {
1232
- var _a, _b;
1233
- assert(this.serviceConfiguration !== undefined, 0x2e2);
1234
- if (this.serviceConfiguration.noopTimeFrequency !== undefined ||
1235
- this.serviceConfiguration.noopCountFrequency !== undefined) {
1236
- return [
1237
- this.serviceConfiguration.noopTimeFrequency,
1238
- this.serviceConfiguration.noopCountFrequency,
1239
- ];
1240
- }
1241
- return [(_a = this.loader.services.options) === null || _a === void 0 ? void 0 : _a.noopTimeFrequency, (_b = this.loader.services.options) === null || _b === void 0 ? void 0 : _b.noopCountFrequency];
1242
- }
1243
1209
  submitSignal(message) {
1244
1210
  this._deltaManager.submitSignal(JSON.stringify(message));
1245
1211
  }
@@ -1280,12 +1246,12 @@ export class Container extends EventEmitterWithErrorHandling {
1280
1246
  }
1281
1247
  return { snapshot, versionId: version === null || version === void 0 ? void 0 : version.id };
1282
1248
  }
1283
- async instantiateContextDetached(existing, snapshot, pendingLocalState) {
1249
+ async instantiateContextDetached(existing, snapshot) {
1284
1250
  const codeDetails = this.getCodeDetailsFromQuorum();
1285
1251
  if (codeDetails === undefined) {
1286
1252
  throw new Error("pkg should be provided in create flow!!");
1287
1253
  }
1288
- await this.instantiateContext(existing, codeDetails, snapshot, pendingLocalState);
1254
+ await this.instantiateContext(existing, codeDetails, snapshot);
1289
1255
  }
1290
1256
  async instantiateContext(existing, codeDetails, snapshot, pendingLocalState) {
1291
1257
  var _a;