@fluidframework/container-loader 2.0.0-internal.1.1.3 → 2.0.0-internal.1.2.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 (92) hide show
  1. package/dist/catchUpMonitor.d.ts +6 -17
  2. package/dist/catchUpMonitor.d.ts.map +1 -1
  3. package/dist/catchUpMonitor.js +5 -36
  4. package/dist/catchUpMonitor.js.map +1 -1
  5. package/dist/collabWindowTracker.d.ts +1 -1
  6. package/dist/collabWindowTracker.d.ts.map +1 -1
  7. package/dist/collabWindowTracker.js +2 -1
  8. package/dist/collabWindowTracker.js.map +1 -1
  9. package/dist/connectionManager.d.ts +1 -1
  10. package/dist/connectionManager.d.ts.map +1 -1
  11. package/dist/connectionManager.js +8 -11
  12. package/dist/connectionManager.js.map +1 -1
  13. package/dist/connectionStateHandler.d.ts +80 -26
  14. package/dist/connectionStateHandler.d.ts.map +1 -1
  15. package/dist/connectionStateHandler.js +170 -89
  16. package/dist/connectionStateHandler.js.map +1 -1
  17. package/dist/container.d.ts +22 -11
  18. package/dist/container.d.ts.map +1 -1
  19. package/dist/container.js +107 -125
  20. package/dist/container.js.map +1 -1
  21. package/dist/containerContext.d.ts +18 -7
  22. package/dist/containerContext.d.ts.map +1 -1
  23. package/dist/containerContext.js +18 -8
  24. package/dist/containerContext.js.map +1 -1
  25. package/dist/containerStorageAdapter.d.ts +10 -24
  26. package/dist/containerStorageAdapter.d.ts.map +1 -1
  27. package/dist/containerStorageAdapter.js +50 -16
  28. package/dist/containerStorageAdapter.js.map +1 -1
  29. package/dist/deltaManager.d.ts +1 -1
  30. package/dist/deltaManager.d.ts.map +1 -1
  31. package/dist/deltaManager.js +18 -6
  32. package/dist/deltaManager.js.map +1 -1
  33. package/dist/loader.d.ts +1 -1
  34. package/dist/loader.js.map +1 -1
  35. package/dist/packageVersion.d.ts +1 -1
  36. package/dist/packageVersion.js +1 -1
  37. package/dist/packageVersion.js.map +1 -1
  38. package/dist/protocol.d.ts.map +1 -1
  39. package/dist/protocol.js +2 -1
  40. package/dist/protocol.js.map +1 -1
  41. package/lib/catchUpMonitor.d.ts +6 -17
  42. package/lib/catchUpMonitor.d.ts.map +1 -1
  43. package/lib/catchUpMonitor.js +5 -35
  44. package/lib/catchUpMonitor.js.map +1 -1
  45. package/lib/collabWindowTracker.d.ts +1 -1
  46. package/lib/collabWindowTracker.d.ts.map +1 -1
  47. package/lib/collabWindowTracker.js +3 -2
  48. package/lib/collabWindowTracker.js.map +1 -1
  49. package/lib/connectionManager.d.ts +1 -1
  50. package/lib/connectionManager.d.ts.map +1 -1
  51. package/lib/connectionManager.js +9 -14
  52. package/lib/connectionManager.js.map +1 -1
  53. package/lib/connectionStateHandler.d.ts +80 -26
  54. package/lib/connectionStateHandler.d.ts.map +1 -1
  55. package/lib/connectionStateHandler.js +170 -90
  56. package/lib/connectionStateHandler.js.map +1 -1
  57. package/lib/container.d.ts +22 -11
  58. package/lib/container.d.ts.map +1 -1
  59. package/lib/container.js +110 -128
  60. package/lib/container.js.map +1 -1
  61. package/lib/containerContext.d.ts +18 -7
  62. package/lib/containerContext.d.ts.map +1 -1
  63. package/lib/containerContext.js +19 -9
  64. package/lib/containerContext.js.map +1 -1
  65. package/lib/containerStorageAdapter.d.ts +10 -24
  66. package/lib/containerStorageAdapter.d.ts.map +1 -1
  67. package/lib/containerStorageAdapter.js +50 -15
  68. package/lib/containerStorageAdapter.js.map +1 -1
  69. package/lib/deltaManager.d.ts +1 -1
  70. package/lib/deltaManager.d.ts.map +1 -1
  71. package/lib/deltaManager.js +18 -6
  72. package/lib/deltaManager.js.map +1 -1
  73. package/lib/loader.d.ts +1 -1
  74. package/lib/loader.js.map +1 -1
  75. package/lib/packageVersion.d.ts +1 -1
  76. package/lib/packageVersion.js +1 -1
  77. package/lib/packageVersion.js.map +1 -1
  78. package/lib/protocol.d.ts.map +1 -1
  79. package/lib/protocol.js +2 -1
  80. package/lib/protocol.js.map +1 -1
  81. package/package.json +13 -13
  82. package/src/catchUpMonitor.ts +7 -47
  83. package/src/collabWindowTracker.ts +4 -3
  84. package/src/connectionManager.ts +9 -11
  85. package/src/connectionStateHandler.ts +231 -106
  86. package/src/container.ts +132 -147
  87. package/src/containerContext.ts +22 -8
  88. package/src/containerStorageAdapter.ts +64 -15
  89. package/src/deltaManager.ts +20 -7
  90. package/src/loader.ts +1 -1
  91. package/src/packageVersion.ts +1 -1
  92. package/src/protocol.ts +2 -1
@@ -3,34 +3,29 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IDisposable, IEvent } from "@fluidframework/common-definitions";
7
- import { assert, TypedEventEmitter } from "@fluidframework/common-utils";
6
+ import { IDisposable } from "@fluidframework/common-definitions";
7
+ import { assert } from "@fluidframework/common-utils";
8
8
  import { IDeltaManager } from "@fluidframework/container-definitions";
9
9
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
10
10
 
11
- /** @see ICatchUpMonitor for usage */
11
+ /** @see CatchUpMonitor for usage */
12
12
  type CaughtUpListener = () => void;
13
13
 
14
- /** @see ICatchUpMonitor for usage */
15
- export interface ICatchUpMonitorEvents extends IEvent {
16
- (event: "caughtUp", listener: CaughtUpListener): void;
17
- }
18
-
19
14
  /** Monitor that emits an event when a Container has caught up to a given point in the op stream */
20
- export interface ICatchUpMonitor extends TypedEventEmitter<ICatchUpMonitorEvents>, IDisposable { }
15
+ export type ICatchUpMonitor = IDisposable;
21
16
 
22
17
  /**
23
18
  * Monitors a Container's DeltaManager, notifying listeners when all ops have been processed
24
19
  * that were known at the time the monitor was created.
25
20
  */
26
- export class CatchUpMonitor extends TypedEventEmitter<ICatchUpMonitorEvents> implements ICatchUpMonitor {
21
+ export class CatchUpMonitor implements ICatchUpMonitor {
27
22
  private readonly targetSeqNumber: number;
28
23
  private caughtUp: boolean = false;
29
24
 
30
25
  private readonly opHandler = (message: Pick<ISequencedDocumentMessage, "sequenceNumber">) => {
31
26
  if (!this.caughtUp && message.sequenceNumber >= this.targetSeqNumber) {
32
27
  this.caughtUp = true;
33
- this.emit("caughtUp");
28
+ this.listener();
34
29
  }
35
30
  };
36
31
 
@@ -39,9 +34,8 @@ export class CatchUpMonitor extends TypedEventEmitter<ICatchUpMonitorEvents> imp
39
34
  */
40
35
  constructor(
41
36
  private readonly deltaManager: IDeltaManager<any, any>,
37
+ private readonly listener: CaughtUpListener,
42
38
  ) {
43
- super();
44
-
45
39
  this.targetSeqNumber = this.deltaManager.lastKnownSeqNumber;
46
40
 
47
41
  assert(this.targetSeqNumber >= this.deltaManager.lastSequenceNumber,
@@ -51,16 +45,6 @@ export class CatchUpMonitor extends TypedEventEmitter<ICatchUpMonitorEvents> imp
51
45
 
52
46
  // Simulate the last processed op to set caughtUp in case we already are
53
47
  this.opHandler({ sequenceNumber: this.deltaManager.lastSequenceNumber });
54
-
55
- // If a listener is added after we are already caught up, notify that new listener immediately
56
- this.on("newListener", (event: string, listener) => {
57
- if (event === "caughtUp") {
58
- const caughtUpListener = listener as CaughtUpListener;
59
- if (this.caughtUp) {
60
- caughtUpListener();
61
- }
62
- }
63
- });
64
48
  }
65
49
 
66
50
  public disposed: boolean = false;
@@ -70,30 +54,6 @@ export class CatchUpMonitor extends TypedEventEmitter<ICatchUpMonitorEvents> imp
70
54
  }
71
55
  this.disposed = true;
72
56
 
73
- this.removeAllListeners();
74
57
  this.deltaManager.off("op", this.opHandler);
75
58
  }
76
59
  }
77
-
78
- /** Monitor that always notifies listeners immediately */
79
- export class ImmediateCatchUpMonitor extends TypedEventEmitter<ICatchUpMonitorEvents> implements ICatchUpMonitor {
80
- constructor() {
81
- super();
82
- this.on("newListener", (event: string, listener) => {
83
- if (event === "caughtUp") {
84
- const caughtUpListener = listener as CaughtUpListener;
85
- caughtUpListener();
86
- }
87
- });
88
- }
89
-
90
- public disposed: boolean = false;
91
- public dispose() {
92
- if (this.disposed) {
93
- return;
94
- }
95
- this.disposed = true;
96
-
97
- this.removeAllListeners();
98
- }
99
- }
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { assert, Timer } from "@fluidframework/common-utils";
7
7
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
8
- import { isRuntimeMessage } from "@fluidframework/driver-utils";
8
+ import { isRuntimeMessage, MessageType2 } from "@fluidframework/driver-utils";
9
9
 
10
10
  const defaultNoopTimeFrequency = 2000;
11
11
  const defaultNoopCountFrequency = 50;
@@ -34,7 +34,7 @@ export class CollabWindowTracker {
34
34
  private readonly timer: Timer | undefined;
35
35
 
36
36
  constructor(
37
- private readonly submit: (type: MessageType, contents: any) => void,
37
+ private readonly submit: (type: MessageType) => void,
38
38
  NoopTimeFrequency: number = defaultNoopTimeFrequency,
39
39
  private readonly NoopCountFrequency: number = defaultNoopCountFrequency,
40
40
  ) {
@@ -93,7 +93,8 @@ export class CollabWindowTracker {
93
93
 
94
94
  private submitNoop(immediate: boolean) {
95
95
  // Anything other than null is immediate noop
96
- this.submit(MessageType.NoOp, immediate ? "" : null);
96
+ // ADO:1385: Remove cast and use MessageType once definition changes propagate
97
+ this.submit(immediate ? (MessageType2.Accept as unknown as MessageType) : MessageType.NoOp);
97
98
  assert(this.opsCountSinceNoop === 0,
98
99
  0x243 /* "stopSequenceNumberUpdate should be called as result of sending any op!" */);
99
100
  }
@@ -31,7 +31,7 @@ import {
31
31
  waitForConnectedState,
32
32
  DeltaStreamConnectionForbiddenError,
33
33
  logNetworkFailure,
34
- // isRuntimeMessage,
34
+ isRuntimeMessage,
35
35
  } from "@fluidframework/driver-utils";
36
36
  import {
37
37
  ConnectionMode,
@@ -168,7 +168,7 @@ export class ConnectionManager implements IConnectionManager {
168
168
  private clientSequenceNumber = 0;
169
169
  private clientSequenceNumberObserved = 0;
170
170
  /** Counts the number of noops sent by the client which may not be acked. */
171
- private trailingNoopCount = 0;
171
+ private localOpsToIgnore = 0;
172
172
 
173
173
  /** track clientId used last time when we sent any ops */
174
174
  private lastSubmittedClientId: string | undefined;
@@ -234,20 +234,18 @@ export class ConnectionManager implements IConnectionManager {
234
234
  * about current or last connection (if there is no connection at the moment)
235
235
  */
236
236
  public get connectionProps(): ITelemetryProperties {
237
- if (this.connection !== undefined) {
238
- return this._connectionProps;
239
- } else {
240
- return {
237
+ return this.connection !== undefined
238
+ ? this._connectionProps
239
+ : {
241
240
  ...this._connectionProps,
242
241
  // Report how many ops this client sent in last disconnected session
243
242
  sentOps: this.clientSequenceNumber,
244
243
  };
245
- }
246
244
  }
247
245
 
248
246
  public shouldJoinWrite(): boolean {
249
247
  // We don't have to wait for ack for topmost NoOps. So subtract those.
250
- return this.clientSequenceNumberObserved < (this.clientSequenceNumber - this.trailingNoopCount);
248
+ return this.clientSequenceNumberObserved < (this.clientSequenceNumber - this.localOpsToIgnore);
251
249
  }
252
250
 
253
251
  /**
@@ -819,10 +817,10 @@ export class ConnectionManager implements IConnectionManager {
819
817
  this.clientSequenceNumberObserved = 0;
820
818
  }
821
819
 
822
- if (message.type === MessageType.NoOp) {
823
- this.trailingNoopCount++;
820
+ if (!isRuntimeMessage(message)) {
821
+ this.localOpsToIgnore++;
824
822
  } else {
825
- this.trailingNoopCount = 0;
823
+ this.localOpsToIgnore = 0;
826
824
  }
827
825
 
828
826
  return {