@fluidframework/container-loader 2.70.0-361788 → 2.71.0

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 (68) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/api-report/container-loader.legacy.alpha.api.md +13 -0
  3. package/dist/container.d.ts +7 -4
  4. package/dist/container.d.ts.map +1 -1
  5. package/dist/container.js +98 -15
  6. package/dist/container.js.map +1 -1
  7. package/dist/containerContext.d.ts +1 -0
  8. package/dist/containerContext.d.ts.map +1 -1
  9. package/dist/containerContext.js +1 -0
  10. package/dist/containerContext.js.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/legacyAlpha.d.ts +1 -0
  16. package/dist/packageVersion.d.ts +1 -1
  17. package/dist/packageVersion.d.ts.map +1 -1
  18. package/dist/packageVersion.js +1 -1
  19. package/dist/packageVersion.js.map +1 -1
  20. package/dist/pendingLocalStateStore.d.ts +84 -0
  21. package/dist/pendingLocalStateStore.d.ts.map +1 -0
  22. package/dist/pendingLocalStateStore.js +157 -0
  23. package/dist/pendingLocalStateStore.js.map +1 -0
  24. package/dist/protocol.d.ts +1 -0
  25. package/dist/protocol.d.ts.map +1 -1
  26. package/dist/protocol.js +43 -1
  27. package/dist/protocol.js.map +1 -1
  28. package/dist/utils.d.ts +1 -0
  29. package/dist/utils.d.ts.map +1 -1
  30. package/dist/utils.js +0 -4
  31. package/dist/utils.js.map +1 -1
  32. package/lib/container.d.ts +7 -4
  33. package/lib/container.d.ts.map +1 -1
  34. package/lib/container.js +99 -16
  35. package/lib/container.js.map +1 -1
  36. package/lib/containerContext.d.ts +1 -0
  37. package/lib/containerContext.d.ts.map +1 -1
  38. package/lib/containerContext.js +1 -0
  39. package/lib/containerContext.js.map +1 -1
  40. package/lib/index.d.ts +1 -0
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +1 -0
  43. package/lib/index.js.map +1 -1
  44. package/lib/legacyAlpha.d.ts +1 -0
  45. package/lib/packageVersion.d.ts +1 -1
  46. package/lib/packageVersion.d.ts.map +1 -1
  47. package/lib/packageVersion.js +1 -1
  48. package/lib/packageVersion.js.map +1 -1
  49. package/lib/pendingLocalStateStore.d.ts +84 -0
  50. package/lib/pendingLocalStateStore.d.ts.map +1 -0
  51. package/lib/pendingLocalStateStore.js +153 -0
  52. package/lib/pendingLocalStateStore.js.map +1 -0
  53. package/lib/protocol.d.ts +1 -0
  54. package/lib/protocol.d.ts.map +1 -1
  55. package/lib/protocol.js +41 -0
  56. package/lib/protocol.js.map +1 -1
  57. package/lib/utils.d.ts +1 -0
  58. package/lib/utils.d.ts.map +1 -1
  59. package/lib/utils.js +0 -4
  60. package/lib/utils.js.map +1 -1
  61. package/package.json +15 -15
  62. package/src/container.ts +133 -31
  63. package/src/containerContext.ts +2 -0
  64. package/src/index.ts +1 -0
  65. package/src/packageVersion.ts +1 -1
  66. package/src/pendingLocalStateStore.ts +160 -0
  67. package/src/protocol.ts +49 -0
  68. package/src/utils.ts +6 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @fluidframework/container-loader
2
2
 
3
+ ## 2.71.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.70.0
8
+
9
+ Dependency updates only.
10
+
3
11
  ## 2.63.0
4
12
 
5
13
  Dependency updates only.
@@ -203,6 +203,19 @@ export interface OnDemandSummaryResults {
203
203
  readonly summarySubmitted: boolean;
204
204
  }
205
205
 
206
+ // @alpha @legacy
207
+ export class PendingLocalStateStore<TKey> {
208
+ [Symbol.iterator](): Iterator<[TKey, string]>;
209
+ clear(): void;
210
+ delete(key: TKey): boolean;
211
+ entries(): Iterator<[TKey, string]>;
212
+ get(key: TKey): string | undefined;
213
+ has(key: TKey): boolean;
214
+ keys(): IterableIterator<TKey>;
215
+ set(key: TKey, pendingLocalState: string): this;
216
+ get size(): number;
217
+ }
218
+
206
219
  // @beta @legacy
207
220
  export type ProtocolHandlerBuilder = (attributes: IDocumentAttributes, snapshot: IQuorumSnapshot, sendProposal: (key: string, value: any) => number) => IProtocolHandler;
208
221
 
@@ -141,6 +141,7 @@ export declare class Container extends EventEmitterWithErrorHandling<IContainerE
141
141
  private readonly subLogger;
142
142
  private readonly detachedBlobStorage;
143
143
  private readonly protocolHandlerBuilder;
144
+ private readonly signalAudience;
144
145
  private readonly client;
145
146
  private readonly mc;
146
147
  /**
@@ -347,12 +348,14 @@ export declare class Container extends EventEmitterWithErrorHandling<IContainerE
347
348
  private instantiateRuntime;
348
349
  private readonly updateDirtyContainerState;
349
350
  /**
350
- * Set the connected state of the ContainerContext
351
- * This controls the "connected" state of the ContainerRuntime as well
352
- * @param connected - Is the container currently connected?
351
+ * Send the connected status to the runtime.
353
352
  * @param readonly - Is the container in readonly mode?
353
+ * @param onlyCallSetConnectionStateIfConnectedOrDisconnected - If true, only
354
+ * call older `setConnectionState` on the runtime if the connection state is
355
+ * either Connected or Disconnected. This exists to preserve older behavior
356
+ * where the runtime was only notified of these two states.
354
357
  */
355
- private setContextConnectedState;
358
+ private setConnectionStatus;
356
359
  private handleDeltaConnectionArg;
357
360
  }
358
361
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EACN,WAAW,EACX,KAAK,SAAS,EACd,KAAK,uBAAuB,EAC5B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAGX,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EAMjB,YAAY,EAEZ,cAAc,EAEd,MAAM,gDAAgD,CAAC;AAExD,OAAO,EACN,KAAK,WAAW,EAEhB,KAAK,QAAQ,EACb,KAAK,wBAAwB,EAE7B,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,cAAc,EAInB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EAGjB,KAAK,YAAY,EAGjB,KAAK,gBAAgB,EAOrB,KAAK,yBAAyB,EAG9B,MAAM,6CAA6C,CAAC;AAWrD,OAAO,EAEN,KAAK,mBAAmB,EACxB,6BAA6B,EAe7B,MAAM,0CAA0C,CAAC;AAWlD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA4BvD,OAAO,EAGN,KAAK,sBAAsB,EAI3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,KAAK,sBAAsB,EAG3B,MAAM,6BAA6B,CAAC;AAoBrC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,cAAc,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IACzD;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAEzD;;;;;;;OAOG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CA0EpF;AAKD;;;;;GAKG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAMf;AASD,qBAAa,SACZ,SAAQ,6BAA6B,CAAC,gBAAgB,CACtD,YAAW,UAAU,EAAE,cAAc;IAErC;;OAEG;WACiB,IAAI,CACvB,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,CAAC;IAmDrB;;OAEG;WACiB,cAAc,CACjC,WAAW,EAAE,qBAAqB,EAClC,WAAW,EAAE,iBAAiB,GAC5B,OAAO,CAAC,SAAS,CAAC;IAcrB;;;;;OAKG;WACiB,6BAA6B,CAChD,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC;IAkBrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA6B;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwC;IAC5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAEvC;;OAEG;IACH,SAAgB,KAAK,EAAE,CACtB,SAAS,EAAE,mBAAmB,EAC9B,oBAAoB,EAAE,OAAO,CAAC,qBAAqB,CAAC,KAChD,OAAO,CAAC,SAAS,CAAC,CAAC;IAExB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,eAAe,CAMG;IAE1B,OAAO,CAAC,SAAS;IA+CjB,IAAW,MAAM,IAAI,OAAO,CAI3B;IAED,SAAS,KAAK,MAAM,IAAI,OAAO,CAE9B;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAEzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,OAAO,CAA+B;IAE9C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,KAAK,OAAO,GAKlB;IACD,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,KAAK,eAAe,GAK1B;IAED;;OAEG;IACH,OAAO,CAAC,0BAA0B,CAAQ;IAC1C,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAgB;IAC1D,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAAmD;IACzE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAqB;IAE/D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA2B;IAClE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA0B;IACjE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAqB;IAC9D,OAAO,CAAC,kBAAkB,CAAwC;IAElE,OAAO,CAAC,oBAAoB,CAAoB;IAEhD,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,KAAK,cAAc,GAEzB;IAED,IAAW,WAAW,IAAI,YAAY,GAAG,SAAS,CAajD;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAErD;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAI7C,IAAW,YAAY,IAAI,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAEpF;IAED,IAAW,eAAe,IAAI,eAAe,CAE5C;IAED,OAAO,KAAK,SAAS,GAEpB;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;;OAGG;IACI,uBAAuB,IAAI,iBAAiB,GAAG,SAAS;IAI/D,OAAO,CAAC,kBAAkB,CAAgC;IAC1D;;;;OAIG;IACI,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAI5D,OAAO,CAAC,aAAa,CAAsC;IAE3D;;OAEG;IACH,IAAW,QAAQ,IAAI,SAAS,CAE/B;IAED;;;;OAIG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAyBlD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsD;gBAGtF,WAAW,EAAE,qBAAqB,EAClC,SAAS,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAwR3D;;OAEG;IACI,SAAS,IAAI,cAAc;IAI3B,OAAO,CAAC,KAAK,CAAC,EAAE,uBAAuB,GAAG,IAAI;IAI9C,KAAK,CAAC,KAAK,CAAC,EAAE,uBAAuB,GAAG,IAAI;IAQnD,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW;IAqDnB;;;;OAIG;IACU,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBpD,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED;;;;;OAKG;IACI,SAAS,IAAI,MAAM;IA+B1B,SAAgB,MAAM;;oCA8GpB;IAEF,OAAO,CAAC,wBAAwB;IAyBzB,OAAO,IAAI,IAAI;IAgBtB,OAAO,CAAC,eAAe;IAehB,UAAU,IAAI,IAAI;IAQzB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IAoBtB,SAAgB,cAAc,gBAChB,MAAM,KACjB,QAAQ,MAAM,GAAG,SAAS,CAAC,CAU5B;IAEW,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;YAqBnE,mBAAmB;IAmBjC;;OAEG;YACW,SAAS;IAsCvB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGpC;IAEF;;;;;;OAMG;YACW,qBAAqB;IAkCnC;;;;OAIG;YACW,IAAI;YAgLJ,cAAc;YAwBd,6BAA6B;YA0D7B,mCAAmC;IA2BjD,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,MAAM,CAAC,WAAW;IAqC1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,kBAAkB;YA4FZ,2BAA2B;IAmBzC,OAAO,CAAC,iCAAiC;IA4DzC,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,sBAAsB;IAyB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,aAAa;IAwBrB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;YAkBP,kBAAkB;IA8FhC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAMxC;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAkF3B,OAAO,CAAC,wBAAwB;CAuChC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IACjD;;;;;OAKG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAE9D"}
package/dist/container.js CHANGED
@@ -216,12 +216,16 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
216
216
  // in the order that is not possible in real life, that it may not expect.
217
217
  // Ideally, we should supply pendingLocalState?.clientId here as well, not in constructor, but it does not matter (at least today)
218
218
  this.connectionStateHandler.initProtocol(this.protocolHandler);
219
- // Propagate current connection state through the system.
220
- const readonly = this.readOnlyInfo.readonly ?? false;
221
219
  // This call does not look like needed any more, with delaying all connection-related events past loaded phase.
222
220
  // Yet, there could be some customer code that would break if we do not deliver it.
223
221
  // Will be removed in further PRs with proper changeset.
224
- this.setContextConnectedState(false /* connected */, readonly);
222
+ const runtime = this._runtime;
223
+ if (runtime !== undefined &&
224
+ // Check for older runtime that may need this call
225
+ !("setConnectionStatus" in runtime) &&
226
+ runtime.disposed === false) {
227
+ runtime.setConnectionState(false /* canSendOps */, this.clientId);
228
+ }
225
229
  // Deliver delayed calls to DeltaManager - we ignored "connect" events while loading.
226
230
  const cm = this._deltaManager.connectionManager;
227
231
  if (cm.connected) {
@@ -381,6 +385,7 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
381
385
  }, error);
382
386
  this.close((0, internal_5.normalizeError)(error));
383
387
  });
388
+ this.signalAudience = new audience_js_1.Audience();
384
389
  /**
385
390
  * Lifecycle state of the container, used mainly to prevent re-entrancy and telemetry
386
391
  *
@@ -524,9 +529,8 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
524
529
  // Tracking alternative ways to handle this in AB#4129.
525
530
  this.options = { ...options };
526
531
  this.scope = scope;
527
- this.protocolHandlerBuilder =
528
- protocolHandlerBuilder ??
529
- ((attributes, quorumSnapshot, sendProposal) => new protocol_js_1.ProtocolHandler(attributes, quorumSnapshot, sendProposal, new audience_js_1.Audience(), (clientId) => this.clientsWhoShouldHaveLeft.has(clientId)));
532
+ this.protocolHandlerBuilder = (0, protocol_js_1.wrapProtocolHandlerBuilder)(protocolHandlerBuilder ??
533
+ ((attributes, quorumSnapshot, sendProposal) => new protocol_js_1.ProtocolHandler(attributes, quorumSnapshot, sendProposal, new audience_js_1.Audience(), (clientId) => this.clientsWhoShouldHaveLeft.has(clientId))), this.signalAudience);
530
534
  // Note that we capture the createProps here so we can replicate the creation call when we want to clone.
531
535
  this.clone = async (_loadProps, createParamOverrides) => {
532
536
  return Container.load(_loadProps, {
@@ -1330,7 +1334,7 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
1330
1334
  });
1331
1335
  deltaManager.on("readonly", (readonly) => {
1332
1336
  if (this.loaded) {
1333
- this.setContextConnectedState(this.connectionState === connectionState_js_1.ConnectionState.Connected, readonly);
1337
+ this.setConnectionStatus(readonly);
1334
1338
  }
1335
1339
  this.emit("readonly", readonly);
1336
1340
  });
@@ -1406,7 +1410,18 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
1406
1410
  const clientId = this.connectionStateHandler.clientId;
1407
1411
  (0, internal_2.assert)(clientId !== undefined, 0x96e /* there has to be clientId */);
1408
1412
  this.protocolHandler.audience.setCurrentClientId(clientId);
1413
+ this.signalAudience.setCurrentClientId(clientId);
1414
+ }
1415
+ else if (this.connectionState === connectionState_js_1.ConnectionState.CatchingUp) {
1416
+ // Signal-based Audience does not wait for ops. So provide clientId
1417
+ // as soon as possible.
1418
+ const clientId = this.connectionStateHandler.pendingClientId;
1419
+ (0, internal_2.assert)(clientId !== undefined, 0xc89 /* catching up without clientId */);
1420
+ this.signalAudience.setCurrentClientId(clientId);
1409
1421
  }
1422
+ this.setConnectionStatus(
1423
+ /* readonly */ this.readOnlyInfo.readonly ?? false,
1424
+ /* onlyCallSetConnectionStateIfConnectedOrDisconnected */ true);
1410
1425
  // We communicate only transitions to Connected & Disconnected states, skipping all other states.
1411
1426
  // This can be changed in the future, for example we likely should add "CatchingUp" event on Container.
1412
1427
  if (this.connectionState !== connectionState_js_1.ConnectionState.Connected &&
@@ -1414,7 +1429,6 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
1414
1429
  return;
1415
1430
  }
1416
1431
  // Both protocol and context should not be undefined if we got so far.
1417
- this.setContextConnectedState(connected, this.readOnlyInfo.readonly ?? false);
1418
1432
  this.protocolHandler.setConnectionState(connected, this.clientId);
1419
1433
  (0, internal_5.raiseConnectedEvent)(this.mc.logger, this, connected, this.clientId, disconnectedReason?.text);
1420
1434
  }
@@ -1512,7 +1526,15 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
1512
1526
  this.protocolHandler.processSignal(message);
1513
1527
  }
1514
1528
  else {
1515
- const local = this.clientId === message.clientId;
1529
+ const local =
1530
+ // Check against signal audience to detect current signals
1531
+ // including very early signals before reaching "Connected".
1532
+ message.clientId === this.signalAudience.getSelf()?.clientId ||
1533
+ // and use "regular" audience to detect signals from past
1534
+ // connection bouncing slowly back from service. This may never
1535
+ // happen, but is kept as it was used historically as the only
1536
+ // check.
1537
+ message.clientId === this.clientId;
1516
1538
  this.runtime.processSignal(message, local);
1517
1539
  }
1518
1540
  }
@@ -1546,6 +1568,7 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
1546
1568
  storage: this.storageAdapter,
1547
1569
  quorum: this.protocolHandler.quorum,
1548
1570
  audience: this.protocolHandler.audience,
1571
+ signalAudience: this.signalAudience,
1549
1572
  loader,
1550
1573
  submitFn: (type, contents, batch, metadata) => this.submitContainerMessage(type, contents, batch, metadata),
1551
1574
  submitSummaryFn: (summaryOp, referenceSequenceNumber) => this.submitSummaryMessage(summaryOp, referenceSequenceNumber),
@@ -1580,15 +1603,75 @@ class Container extends internal_5.EventEmitterWithErrorHandling {
1580
1603
  }
1581
1604
  }
1582
1605
  /**
1583
- * Set the connected state of the ContainerContext
1584
- * This controls the "connected" state of the ContainerRuntime as well
1585
- * @param connected - Is the container currently connected?
1606
+ * Send the connected status to the runtime.
1586
1607
  * @param readonly - Is the container in readonly mode?
1608
+ * @param onlyCallSetConnectionStateIfConnectedOrDisconnected - If true, only
1609
+ * call older `setConnectionState` on the runtime if the connection state is
1610
+ * either Connected or Disconnected. This exists to preserve older behavior
1611
+ * where the runtime was only notified of these two states.
1587
1612
  */
1588
- setContextConnectedState(connected, readonly) {
1613
+ setConnectionStatus(readonly, onlyCallSetConnectionStateIfConnectedOrDisconnected = false) {
1589
1614
  if (this._runtime?.disposed === false && this.loaded) {
1590
- this.runtime.setConnectionState(connected &&
1591
- !readonly /* container can send ops if connected to service and not in readonly mode */, this.clientId);
1615
+ const setConnectionStatus = this.runtime.setConnectionStatus?.bind(this.runtime);
1616
+ if (setConnectionStatus === undefined) {
1617
+ if (!onlyCallSetConnectionStateIfConnectedOrDisconnected ||
1618
+ this.connectionState === connectionState_js_1.ConnectionState.Connected ||
1619
+ this.connectionState === connectionState_js_1.ConnectionState.Disconnected) {
1620
+ this.runtime.setConnectionState(this.connectionState === connectionState_js_1.ConnectionState.Connected &&
1621
+ !readonly /* container can send ops if connected to service and not in readonly mode */, this.clientId);
1622
+ }
1623
+ }
1624
+ else {
1625
+ const pendingClientConnectionId = this.connectionStateHandler.pendingClientId;
1626
+ const connectionState = this.connectionState;
1627
+ switch (connectionState) {
1628
+ case connectionState_js_1.ConnectionState.EstablishingConnection: {
1629
+ setConnectionStatus({
1630
+ connectionState,
1631
+ canSendOps: false,
1632
+ readonly,
1633
+ });
1634
+ break;
1635
+ }
1636
+ case connectionState_js_1.ConnectionState.CatchingUp: {
1637
+ // When catching up, we have a pending clientId, but it
1638
+ // is not usable for ops. Send clientId with canSendOps false.
1639
+ (0, internal_2.assert)(pendingClientConnectionId !== undefined, 0xc8a /* catching up without clientId */);
1640
+ setConnectionStatus({
1641
+ connectionState,
1642
+ pendingClientConnectionId,
1643
+ canSendOps: false,
1644
+ readonly,
1645
+ });
1646
+ break;
1647
+ }
1648
+ case connectionState_js_1.ConnectionState.Connected: {
1649
+ // When connected, we have an active clientId. Pass it along
1650
+ // with canSendOps true/false based on readonly.
1651
+ const clientConnectionId = this.clientId;
1652
+ (0, internal_2.assert)(clientConnectionId !== undefined, 0xc8b /* connected without clientId */);
1653
+ (0, internal_2.assert)(clientConnectionId === pendingClientConnectionId, 0xc8c /* connected with different clientId than pending */);
1654
+ setConnectionStatus({
1655
+ connectionState,
1656
+ clientConnectionId,
1657
+ canSendOps: !readonly,
1658
+ readonly,
1659
+ });
1660
+ break;
1661
+ }
1662
+ case connectionState_js_1.ConnectionState.Disconnected: {
1663
+ setConnectionStatus({
1664
+ connectionState,
1665
+ priorPendingClientConnectionId: pendingClientConnectionId,
1666
+ priorConnectedClientConnectionId: this.clientId,
1667
+ canSendOps: false,
1668
+ readonly,
1669
+ });
1670
+ break;
1671
+ }
1672
+ // No default
1673
+ }
1674
+ }
1592
1675
  }
1593
1676
  }
1594
1677
  handleDeltaConnectionArg(deltaConnectionArg, connectionArgs) {