@fluidframework/container-loader 1.2.2 → 2.0.0-internal.1.0.0.82159

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 (127) hide show
  1. package/dist/audience.d.ts +2 -2
  2. package/dist/audience.d.ts.map +1 -1
  3. package/dist/audience.js.map +1 -1
  4. package/dist/catchUpMonitor.d.ts +40 -0
  5. package/dist/catchUpMonitor.d.ts.map +1 -0
  6. package/dist/catchUpMonitor.js +74 -0
  7. package/dist/catchUpMonitor.js.map +1 -0
  8. package/dist/connectionManager.d.ts.map +1 -1
  9. package/dist/connectionManager.js +0 -1
  10. package/dist/connectionManager.js.map +1 -1
  11. package/dist/connectionState.d.ts +0 -5
  12. package/dist/connectionState.d.ts.map +1 -1
  13. package/dist/connectionState.js +0 -5
  14. package/dist/connectionState.js.map +1 -1
  15. package/dist/connectionStateHandler.d.ts +12 -4
  16. package/dist/connectionStateHandler.d.ts.map +1 -1
  17. package/dist/connectionStateHandler.js +47 -15
  18. package/dist/connectionStateHandler.js.map +1 -1
  19. package/dist/container.d.ts +8 -6
  20. package/dist/container.d.ts.map +1 -1
  21. package/dist/container.js +82 -46
  22. package/dist/container.js.map +1 -1
  23. package/dist/containerStorageAdapter.d.ts +2 -2
  24. package/dist/containerStorageAdapter.d.ts.map +1 -1
  25. package/dist/containerStorageAdapter.js +2 -2
  26. package/dist/containerStorageAdapter.js.map +1 -1
  27. package/dist/deltaManager.d.ts.map +1 -1
  28. package/dist/deltaManager.js +6 -6
  29. package/dist/deltaManager.js.map +1 -1
  30. package/dist/deltaManagerProxy.d.ts +4 -1
  31. package/dist/deltaManagerProxy.d.ts.map +1 -1
  32. package/dist/deltaQueue.d.ts +9 -2
  33. package/dist/deltaQueue.d.ts.map +1 -1
  34. package/dist/deltaQueue.js +31 -26
  35. package/dist/deltaQueue.js.map +1 -1
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/loader.d.ts +7 -0
  40. package/dist/loader.d.ts.map +1 -1
  41. package/dist/loader.js +4 -3
  42. package/dist/loader.js.map +1 -1
  43. package/dist/packageVersion.d.ts +1 -1
  44. package/dist/packageVersion.d.ts.map +1 -1
  45. package/dist/packageVersion.js +1 -1
  46. package/dist/packageVersion.js.map +1 -1
  47. package/dist/protocol.d.ts +22 -0
  48. package/dist/protocol.d.ts.map +1 -0
  49. package/dist/protocol.js +52 -0
  50. package/dist/protocol.js.map +1 -0
  51. package/dist/protocolTreeDocumentStorageService.d.ts +1 -1
  52. package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
  53. package/dist/retriableDocumentStorageService.d.ts +2 -2
  54. package/dist/retriableDocumentStorageService.d.ts.map +1 -1
  55. package/dist/retriableDocumentStorageService.js +2 -2
  56. package/dist/retriableDocumentStorageService.js.map +1 -1
  57. package/lib/audience.d.ts +2 -2
  58. package/lib/audience.d.ts.map +1 -1
  59. package/lib/audience.js.map +1 -1
  60. package/lib/catchUpMonitor.d.ts +40 -0
  61. package/lib/catchUpMonitor.d.ts.map +1 -0
  62. package/lib/catchUpMonitor.js +69 -0
  63. package/lib/catchUpMonitor.js.map +1 -0
  64. package/lib/connectionManager.d.ts.map +1 -1
  65. package/lib/connectionManager.js +0 -1
  66. package/lib/connectionManager.js.map +1 -1
  67. package/lib/connectionState.d.ts +0 -5
  68. package/lib/connectionState.d.ts.map +1 -1
  69. package/lib/connectionState.js +0 -5
  70. package/lib/connectionState.js.map +1 -1
  71. package/lib/connectionStateHandler.d.ts +12 -4
  72. package/lib/connectionStateHandler.d.ts.map +1 -1
  73. package/lib/connectionStateHandler.js +47 -15
  74. package/lib/connectionStateHandler.js.map +1 -1
  75. package/lib/container.d.ts +8 -6
  76. package/lib/container.d.ts.map +1 -1
  77. package/lib/container.js +82 -46
  78. package/lib/container.js.map +1 -1
  79. package/lib/containerStorageAdapter.d.ts +2 -2
  80. package/lib/containerStorageAdapter.d.ts.map +1 -1
  81. package/lib/containerStorageAdapter.js +2 -2
  82. package/lib/containerStorageAdapter.js.map +1 -1
  83. package/lib/deltaManager.d.ts.map +1 -1
  84. package/lib/deltaManager.js +6 -6
  85. package/lib/deltaManager.js.map +1 -1
  86. package/lib/deltaManagerProxy.d.ts +4 -1
  87. package/lib/deltaManagerProxy.d.ts.map +1 -1
  88. package/lib/deltaQueue.d.ts +9 -2
  89. package/lib/deltaQueue.d.ts.map +1 -1
  90. package/lib/deltaQueue.js +32 -27
  91. package/lib/deltaQueue.js.map +1 -1
  92. package/lib/index.d.ts +1 -0
  93. package/lib/index.d.ts.map +1 -1
  94. package/lib/index.js.map +1 -1
  95. package/lib/loader.d.ts +7 -0
  96. package/lib/loader.d.ts.map +1 -1
  97. package/lib/loader.js +4 -3
  98. package/lib/loader.js.map +1 -1
  99. package/lib/packageVersion.d.ts +1 -1
  100. package/lib/packageVersion.d.ts.map +1 -1
  101. package/lib/packageVersion.js +1 -1
  102. package/lib/packageVersion.js.map +1 -1
  103. package/lib/protocol.d.ts +22 -0
  104. package/lib/protocol.d.ts.map +1 -0
  105. package/lib/protocol.js +48 -0
  106. package/lib/protocol.js.map +1 -0
  107. package/lib/protocolTreeDocumentStorageService.d.ts +1 -1
  108. package/lib/protocolTreeDocumentStorageService.d.ts.map +1 -1
  109. package/lib/retriableDocumentStorageService.d.ts +2 -2
  110. package/lib/retriableDocumentStorageService.d.ts.map +1 -1
  111. package/lib/retriableDocumentStorageService.js +2 -2
  112. package/lib/retriableDocumentStorageService.js.map +1 -1
  113. package/package.json +23 -15
  114. package/src/audience.ts +2 -2
  115. package/src/catchUpMonitor.ts +99 -0
  116. package/src/connectionManager.ts +0 -1
  117. package/src/connectionState.ts +0 -6
  118. package/src/connectionStateHandler.ts +55 -15
  119. package/src/container.ts +115 -63
  120. package/src/containerStorageAdapter.ts +8 -2
  121. package/src/deltaManager.ts +6 -4
  122. package/src/deltaQueue.ts +34 -28
  123. package/src/index.ts +4 -0
  124. package/src/loader.ts +13 -2
  125. package/src/packageVersion.ts +1 -1
  126. package/src/protocol.ts +96 -0
  127. package/src/retriableDocumentStorageService.ts +8 -2
@@ -0,0 +1,96 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { IAudienceOwner } from "@fluidframework/container-definitions";
7
+ import {
8
+ ILocalSequencedClient,
9
+ IProtocolHandler as IBaseProtocolHandler,
10
+ IQuorumSnapshot,
11
+ ProtocolOpHandler,
12
+ } from "@fluidframework/protocol-base";
13
+ import {
14
+ IDocumentAttributes,
15
+ IProcessMessageResult,
16
+ ISequencedDocumentMessage,
17
+ ISignalClient,
18
+ ISignalMessage,
19
+ MessageType,
20
+ } from "@fluidframework/protocol-definitions";
21
+
22
+ /**
23
+ * Function to be used for creating a protocol handler.
24
+ */
25
+ export type ProtocolHandlerBuilder = (
26
+ attributes: IDocumentAttributes,
27
+ snapshot: IQuorumSnapshot,
28
+ sendProposal: (key: string, value: any) => number,
29
+ initialClients: ISignalClient[],
30
+ ) => IProtocolHandler;
31
+
32
+ export interface IProtocolHandler extends IBaseProtocolHandler {
33
+ readonly audience: IAudienceOwner;
34
+ processSignal(message: ISignalMessage);
35
+ }
36
+
37
+ export class ProtocolHandler extends ProtocolOpHandler implements IProtocolHandler {
38
+ constructor(
39
+ attributes: IDocumentAttributes,
40
+ quorumSnapshot: IQuorumSnapshot,
41
+ sendProposal: (key: string, value: any) => number,
42
+ initialClients: ISignalClient[],
43
+ readonly audience: IAudienceOwner,
44
+ ) {
45
+ super(
46
+ attributes.minimumSequenceNumber,
47
+ attributes.sequenceNumber,
48
+ attributes.term,
49
+ quorumSnapshot.members,
50
+ quorumSnapshot.proposals,
51
+ quorumSnapshot.values,
52
+ sendProposal,
53
+ );
54
+
55
+ for (const initialClient of initialClients) {
56
+ this.audience.addMember(initialClient.clientId, initialClient.client);
57
+ }
58
+ }
59
+
60
+ public processMessage(message: ISequencedDocumentMessage, local: boolean): IProcessMessageResult {
61
+ const client: ILocalSequencedClient | undefined = this.quorum.getMember(message.clientId);
62
+
63
+ // Check and report if we're getting messages from a clientId that we previously
64
+ // flagged as shouldHaveLeft, or from a client that's not in the quorum but should be
65
+ if (message.clientId != null) {
66
+ if (client === undefined && message.type !== MessageType.ClientJoin) {
67
+ // pre-0.58 error message: messageClientIdMissingFromQuorum
68
+ throw new Error("Remote message's clientId is missing from the quorum");
69
+ }
70
+
71
+ if (client?.shouldHaveLeft === true && message.type !== MessageType.NoOp) {
72
+ // pre-0.58 error message: messageClientIdShouldHaveLeft
73
+ throw new Error("Remote message's clientId already should have left");
74
+ }
75
+ }
76
+
77
+ return super.processMessage(message, local);
78
+ }
79
+
80
+ public processSignal(message: ISignalMessage) {
81
+ const innerContent = message.content as { content: any; type: string; };
82
+ switch (innerContent.type) {
83
+ case MessageType.ClientJoin: {
84
+ const newClient = innerContent.content as ISignalClient;
85
+ this.audience.addMember(newClient.clientId, newClient.client);
86
+ break;
87
+ }
88
+ case MessageType.ClientLeave: {
89
+ const leftClientId = innerContent.content as string;
90
+ this.audience.removeMember(leftClientId);
91
+ break;
92
+ }
93
+ default: break;
94
+ }
95
+ }
96
+ }
@@ -6,6 +6,7 @@
6
6
  import { assert } from "@fluidframework/common-utils";
7
7
  import { GenericError } from "@fluidframework/container-utils";
8
8
  import {
9
+ FetchSource,
9
10
  IDocumentStorageService,
10
11
  IDocumentStorageServicePolicies,
11
12
  ISummaryContext,
@@ -54,9 +55,14 @@ export class RetriableDocumentStorageService implements IDocumentStorageService,
54
55
  );
55
56
  }
56
57
 
57
- public async getVersions(versionId: string | null, count: number, scenarioName?: string): Promise<IVersion[]> {
58
+ public async getVersions(
59
+ versionId: string | null,
60
+ count: number,
61
+ scenarioName?: string,
62
+ fetchSource?: FetchSource,
63
+ ): Promise<IVersion[]> {
58
64
  return this.runWithRetry(
59
- async () => this.internalStorageService.getVersions(versionId, count, scenarioName),
65
+ async () => this.internalStorageService.getVersions(versionId, count, scenarioName, fetchSource),
60
66
  "storage_getVersions",
61
67
  );
62
68
  }