@fluidframework/container-loader 2.0.0-dev.1.3.0.96595 → 2.0.0-dev.1.4.5.105745
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.
- package/dist/audience.d.ts +4 -0
- package/dist/audience.d.ts.map +1 -1
- package/dist/audience.js +11 -6
- package/dist/audience.js.map +1 -1
- package/dist/connectionManager.d.ts.map +1 -1
- package/dist/connectionManager.js +4 -30
- package/dist/connectionManager.js.map +1 -1
- package/dist/container.d.ts +1 -0
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +17 -2
- package/dist/container.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/protocol.d.ts +3 -8
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +8 -34
- package/dist/protocol.js.map +1 -1
- package/lib/audience.d.ts +4 -0
- package/lib/audience.d.ts.map +1 -1
- package/lib/audience.js +11 -6
- package/lib/audience.js.map +1 -1
- package/lib/connectionManager.d.ts.map +1 -1
- package/lib/connectionManager.js +4 -30
- package/lib/connectionManager.js.map +1 -1
- package/lib/container.d.ts +1 -0
- package/lib/container.d.ts.map +1 -1
- package/lib/container.js +17 -2
- package/lib/container.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/protocol.d.ts +3 -8
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +7 -33
- package/lib/protocol.js.map +1 -1
- package/package.json +10 -10
- package/src/audience.ts +12 -6
- package/src/connectionManager.ts +6 -33
- package/src/container.ts +19 -0
- package/src/packageVersion.ts +1 -1
- package/src/protocol.ts +8 -31
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/container-loader";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-dev.1.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-dev.1.4.5.105745";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,qCAAqC,CAAC;AAC1D,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,qCAAqC,CAAC;AAC1D,eAAO,MAAM,UAAU,2BAA2B,CAAC"}
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/container-loader";
|
|
11
|
-
exports.pkgVersion = "2.0.0-dev.1.
|
|
11
|
+
exports.pkgVersion = "2.0.0-dev.1.4.5.105745";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,kCAAkC,CAAC;AAC7C,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,kCAAkC,CAAC;AAC7C,QAAA,UAAU,GAAG,wBAAwB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"2.0.0-dev.1.4.5.105745\";\n"]}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -4,23 +4,18 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { IAudienceOwner } from "@fluidframework/container-definitions";
|
|
6
6
|
import { IProtocolHandler as IBaseProtocolHandler, IQuorumSnapshot, ProtocolOpHandler } from "@fluidframework/protocol-base";
|
|
7
|
-
import { IDocumentAttributes, IProcessMessageResult, ISequencedDocumentMessage, ISignalMessage } from "@fluidframework/protocol-definitions";
|
|
8
|
-
export declare enum SignalType {
|
|
9
|
-
ClientJoin = "join",
|
|
10
|
-
ClientLeave = "leave",
|
|
11
|
-
Clear = "clear"
|
|
12
|
-
}
|
|
7
|
+
import { IDocumentAttributes, IProcessMessageResult, ISequencedDocumentMessage, ISignalClient, ISignalMessage } from "@fluidframework/protocol-definitions";
|
|
13
8
|
/**
|
|
14
9
|
* Function to be used for creating a protocol handler.
|
|
15
10
|
*/
|
|
16
|
-
export declare type ProtocolHandlerBuilder = (attributes: IDocumentAttributes, snapshot: IQuorumSnapshot, sendProposal: (key: string, value: any) => number) => IProtocolHandler;
|
|
11
|
+
export declare type ProtocolHandlerBuilder = (attributes: IDocumentAttributes, snapshot: IQuorumSnapshot, sendProposal: (key: string, value: any) => number, initialClients: ISignalClient[]) => IProtocolHandler;
|
|
17
12
|
export interface IProtocolHandler extends IBaseProtocolHandler {
|
|
18
13
|
readonly audience: IAudienceOwner;
|
|
19
14
|
processSignal(message: ISignalMessage): any;
|
|
20
15
|
}
|
|
21
16
|
export declare class ProtocolHandler extends ProtocolOpHandler implements IProtocolHandler {
|
|
22
17
|
readonly audience: IAudienceOwner;
|
|
23
|
-
constructor(attributes: IDocumentAttributes, quorumSnapshot: IQuorumSnapshot, sendProposal: (key: string, value: any) => number, audience: IAudienceOwner);
|
|
18
|
+
constructor(attributes: IDocumentAttributes, quorumSnapshot: IQuorumSnapshot, sendProposal: (key: string, value: any) => number, initialClients: ISignalClient[], audience: IAudienceOwner);
|
|
24
19
|
processMessage(message: ISequencedDocumentMessage, local: boolean): IProcessMessageResult;
|
|
25
20
|
processSignal(message: ISignalMessage): void;
|
|
26
21
|
}
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAEH,gBAAgB,IAAI,oBAAoB,EACxC,eAAe,EACf,iBAAiB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAEH,gBAAgB,IAAI,oBAAoB,EACxC,eAAe,EACf,iBAAiB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,cAAc,EAEjB,MAAM,sCAAsC,CAAC;AAG9C;;GAEG;AACH,oBAAY,sBAAsB,GAAG,CACjC,UAAU,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,EACjD,cAAc,EAAE,aAAa,EAAE,KAC9B,gBAAgB,CAAC;AAEtB,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC1D,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,aAAa,CAAC,OAAO,EAAE,cAAc,OAAE;CAC1C;AAED,qBAAa,eAAgB,SAAQ,iBAAkB,YAAW,gBAAgB;IAM1E,QAAQ,CAAC,QAAQ,EAAE,cAAc;gBAJjC,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,EACjD,cAAc,EAAE,aAAa,EAAE,EACtB,QAAQ,EAAE,cAAc;IAiB9B,cAAc,CAAC,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,GAAG,qBAAqB;IAoBzF,aAAa,CAAC,OAAO,EAAE,cAAc;CAgB/C"}
|
package/dist/protocol.js
CHANGED
|
@@ -4,26 +4,16 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ProtocolHandler =
|
|
7
|
+
exports.ProtocolHandler = void 0;
|
|
8
8
|
const protocol_base_1 = require("@fluidframework/protocol-base");
|
|
9
9
|
const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
|
|
10
10
|
const driver_utils_1 = require("@fluidframework/driver-utils");
|
|
11
|
-
// ADO: #1986: Start using enum from protocol-base.
|
|
12
|
-
var SignalType;
|
|
13
|
-
(function (SignalType) {
|
|
14
|
-
SignalType["ClientJoin"] = "join";
|
|
15
|
-
SignalType["ClientLeave"] = "leave";
|
|
16
|
-
SignalType["Clear"] = "clear";
|
|
17
|
-
})(SignalType = exports.SignalType || (exports.SignalType = {}));
|
|
18
11
|
class ProtocolHandler extends protocol_base_1.ProtocolOpHandler {
|
|
19
|
-
constructor(attributes, quorumSnapshot, sendProposal, audience) {
|
|
12
|
+
constructor(attributes, quorumSnapshot, sendProposal, initialClients, audience) {
|
|
20
13
|
super(attributes.minimumSequenceNumber, attributes.sequenceNumber, attributes.term, quorumSnapshot.members, quorumSnapshot.proposals, quorumSnapshot.values, sendProposal);
|
|
21
14
|
this.audience = audience;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.quorum.on("removeMember", (clientId) => audience.removeMember(clientId));
|
|
25
|
-
for (const [clientId, details] of this.quorum.getMembers()) {
|
|
26
|
-
this.audience.addMember(clientId, details.client);
|
|
15
|
+
for (const initialClient of initialClients) {
|
|
16
|
+
this.audience.addMember(initialClient.clientId, initialClient.client);
|
|
27
17
|
}
|
|
28
18
|
}
|
|
29
19
|
processMessage(message, local) {
|
|
@@ -43,32 +33,16 @@ class ProtocolHandler extends protocol_base_1.ProtocolOpHandler {
|
|
|
43
33
|
return super.processMessage(message, local);
|
|
44
34
|
}
|
|
45
35
|
processSignal(message) {
|
|
46
|
-
var _a;
|
|
47
36
|
const innerContent = message.content;
|
|
48
37
|
switch (innerContent.type) {
|
|
49
|
-
case
|
|
50
|
-
const members = this.audience.getMembers();
|
|
51
|
-
for (const [clientId, client] of members) {
|
|
52
|
-
if (client.mode === "read") {
|
|
53
|
-
this.audience.removeMember(clientId);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
case SignalType.ClientJoin: {
|
|
38
|
+
case protocol_definitions_1.MessageType.ClientJoin: {
|
|
59
39
|
const newClient = innerContent.content;
|
|
60
|
-
|
|
61
|
-
if (newClient.client.mode === "read") {
|
|
62
|
-
this.audience.addMember(newClient.clientId, newClient.client);
|
|
63
|
-
}
|
|
40
|
+
this.audience.addMember(newClient.clientId, newClient.client);
|
|
64
41
|
break;
|
|
65
42
|
}
|
|
66
|
-
case
|
|
43
|
+
case protocol_definitions_1.MessageType.ClientLeave: {
|
|
67
44
|
const leftClientId = innerContent.content;
|
|
68
|
-
|
|
69
|
-
if (((_a = this.audience.getMember(leftClientId)) === null || _a === void 0 ? void 0 : _a.mode) === "read") {
|
|
70
|
-
this.audience.removeMember(leftClientId);
|
|
71
|
-
}
|
|
45
|
+
this.audience.removeMember(leftClientId);
|
|
72
46
|
break;
|
|
73
47
|
}
|
|
74
48
|
default: break;
|
package/dist/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,iEAKuC;AACvC,+EAO8C;AAC9C,+DAAuE;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,iEAKuC;AACvC,+EAO8C;AAC9C,+DAAuE;AAiBvE,MAAa,eAAgB,SAAQ,iCAAiB;IAClD,YACI,UAA+B,EAC/B,cAA+B,EAC/B,YAAiD,EACjD,cAA+B,EACtB,QAAwB;QAEjC,KAAK,CACD,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,IAAI,EACf,cAAc,CAAC,OAAO,EACtB,cAAc,CAAC,SAAS,EACxB,cAAc,CAAC,MAAM,EACrB,YAAY,CACf,CAAC;QAVO,aAAQ,GAAR,QAAQ,CAAgB;QAYjC,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;SACzE;IACL,CAAC;IAEM,cAAc,CAAC,OAAkC,EAAE,KAAc;QACpE,MAAM,MAAM,GAAsC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1F,gFAAgF;QAChF,qFAAqF;QACrF,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,kCAAW,CAAC,UAAU,EAAE;gBACjE,2DAA2D;gBAC3D,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;aAC3E;YAED,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,MAAK,IAAI,IAAI,CAAC,IAAA,sCAAuB,EAAC,OAAO,CAAC,EAAE;gBACtE,wDAAwD;gBACxD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;aACzE;SACJ;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,aAAa,CAAC,OAAuB;QACxC,MAAM,YAAY,GAAG,OAAO,CAAC,OAA0C,CAAC;QACxE,QAAQ,YAAY,CAAC,IAAI,EAAE;YACvB,KAAK,kCAAW,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAwB,CAAC;gBACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9D,MAAM;aACT;YACD,KAAK,kCAAW,CAAC,WAAW,CAAC,CAAC;gBAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,OAAiB,CAAC;gBACpD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM;aACT;YACD,OAAO,CAAC,CAAC,MAAM;SAClB;IACL,CAAC;CACJ;AA3DD,0CA2DC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IAudienceOwner } from \"@fluidframework/container-definitions\";\nimport {\n ILocalSequencedClient,\n IProtocolHandler as IBaseProtocolHandler,\n IQuorumSnapshot,\n ProtocolOpHandler,\n} from \"@fluidframework/protocol-base\";\nimport {\n IDocumentAttributes,\n IProcessMessageResult,\n ISequencedDocumentMessage,\n ISignalClient,\n ISignalMessage,\n MessageType,\n} from \"@fluidframework/protocol-definitions\";\nimport { canBeCoalescedByService } from \"@fluidframework/driver-utils\";\n\n/**\n * Function to be used for creating a protocol handler.\n */\nexport type ProtocolHandlerBuilder = (\n attributes: IDocumentAttributes,\n snapshot: IQuorumSnapshot,\n sendProposal: (key: string, value: any) => number,\n initialClients: ISignalClient[],\n) => IProtocolHandler;\n\nexport interface IProtocolHandler extends IBaseProtocolHandler {\n readonly audience: IAudienceOwner;\n processSignal(message: ISignalMessage);\n}\n\nexport class ProtocolHandler extends ProtocolOpHandler implements IProtocolHandler {\n constructor(\n attributes: IDocumentAttributes,\n quorumSnapshot: IQuorumSnapshot,\n sendProposal: (key: string, value: any) => number,\n initialClients: ISignalClient[],\n readonly audience: IAudienceOwner,\n ) {\n super(\n attributes.minimumSequenceNumber,\n attributes.sequenceNumber,\n attributes.term,\n quorumSnapshot.members,\n quorumSnapshot.proposals,\n quorumSnapshot.values,\n sendProposal,\n );\n\n for (const initialClient of initialClients) {\n this.audience.addMember(initialClient.clientId, initialClient.client);\n }\n }\n\n public processMessage(message: ISequencedDocumentMessage, local: boolean): IProcessMessageResult {\n const client: ILocalSequencedClient | undefined = this.quorum.getMember(message.clientId);\n\n // Check and report if we're getting messages from a clientId that we previously\n // flagged as shouldHaveLeft, or from a client that's not in the quorum but should be\n if (message.clientId != null) {\n if (client === undefined && message.type !== MessageType.ClientJoin) {\n // pre-0.58 error message: messageClientIdMissingFromQuorum\n throw new Error(\"Remote message's clientId is missing from the quorum\");\n }\n\n if (client?.shouldHaveLeft === true && !canBeCoalescedByService(message)) {\n // pre-0.58 error message: messageClientIdShouldHaveLeft\n throw new Error(\"Remote message's clientId already should have left\");\n }\n }\n\n return super.processMessage(message, local);\n }\n\n public processSignal(message: ISignalMessage) {\n const innerContent = message.content as { content: any; type: string; };\n switch (innerContent.type) {\n case MessageType.ClientJoin: {\n const newClient = innerContent.content as ISignalClient;\n this.audience.addMember(newClient.clientId, newClient.client);\n break;\n }\n case MessageType.ClientLeave: {\n const leftClientId = innerContent.content as string;\n this.audience.removeMember(leftClientId);\n break;\n }\n default: break;\n }\n }\n}\n"]}
|
package/lib/audience.d.ts
CHANGED
|
@@ -29,5 +29,9 @@ export declare class Audience extends EventEmitter implements IAudienceOwner {
|
|
|
29
29
|
* Retrieves a specific member of the audience
|
|
30
30
|
*/
|
|
31
31
|
getMember(clientId: string): IClient | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Clears the audience
|
|
34
|
+
*/
|
|
35
|
+
clear(): void;
|
|
32
36
|
}
|
|
33
37
|
//# sourceMappingURL=audience.d.ts.map
|
package/lib/audience.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":";AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAE/D;;GAEG;AACH,qBAAa,QAAS,SAAQ,YAAa,YAAW,cAAc;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAE/C,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAK3G;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":";AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAE/D;;GAEG;AACH,qBAAa,QAAS,SAAQ,YAAa,YAAW,cAAc;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAE/C,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAK3G;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAKnD;;;OAGG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAW9C;;OAEG;IACI,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIvD;;OAEG;IACI,KAAK,IAAI,IAAI;CAMvB"}
|
package/lib/audience.js
CHANGED
|
@@ -18,12 +18,8 @@ export class Audience extends EventEmitter {
|
|
|
18
18
|
* Adds a new client to the audience
|
|
19
19
|
*/
|
|
20
20
|
addMember(clientId, details) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (!this.members.has(clientId)) {
|
|
24
|
-
this.members.set(clientId, details);
|
|
25
|
-
this.emit("addMember", clientId, details);
|
|
26
|
-
}
|
|
21
|
+
this.members.set(clientId, details);
|
|
22
|
+
this.emit("addMember", clientId, details);
|
|
27
23
|
}
|
|
28
24
|
/**
|
|
29
25
|
* Removes a client from the audience. Only emits an event if a client is actually removed
|
|
@@ -52,5 +48,14 @@ export class Audience extends EventEmitter {
|
|
|
52
48
|
getMember(clientId) {
|
|
53
49
|
return this.members.get(clientId);
|
|
54
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Clears the audience
|
|
53
|
+
*/
|
|
54
|
+
clear() {
|
|
55
|
+
const clientIds = this.members.keys();
|
|
56
|
+
for (const clientId of clientIds) {
|
|
57
|
+
this.removeMember(clientId);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
55
60
|
}
|
|
56
61
|
//# sourceMappingURL=audience.js.map
|
package/lib/audience.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAY;IAA1C;;QACqB,YAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAY;IAA1C;;QACqB,YAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAqD1D,CAAC;IAlDU,EAAE,CAAC,KAAa,EAAE,QAAkC;QACvD,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,QAAgB,EAAE,OAAgB;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,QAAgB;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,aAAa,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED;;OAEG;IACI,UAAU;QACb,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,KAAK;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC/B;IACL,CAAC;CACJ","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { EventEmitter } from \"events\";\nimport { IAudienceOwner } from \"@fluidframework/container-definitions\";\nimport { IClient } from \"@fluidframework/protocol-definitions\";\n\n/**\n * Audience represents all clients connected to the op stream.\n */\nexport class Audience extends EventEmitter implements IAudienceOwner {\n private readonly members = new Map<string, IClient>();\n\n public on(event: \"addMember\" | \"removeMember\", listener: (clientId: string, client: IClient) => void): this;\n public on(event: string, listener: (...args: any[]) => void): this {\n return super.on(event, listener);\n }\n\n /**\n * Adds a new client to the audience\n */\n public addMember(clientId: string, details: IClient) {\n this.members.set(clientId, details);\n this.emit(\"addMember\", clientId, details);\n }\n\n /**\n * Removes a client from the audience. Only emits an event if a client is actually removed\n * @returns if a client was removed from the audience\n */\n public removeMember(clientId: string): boolean {\n const removedClient = this.members.get(clientId);\n if (removedClient !== undefined) {\n this.members.delete(clientId);\n this.emit(\"removeMember\", clientId, removedClient);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Retrieves all the members in the audience\n */\n public getMembers(): Map<string, IClient> {\n return new Map(this.members);\n }\n\n /**\n * Retrieves a specific member of the audience\n */\n public getMember(clientId: string): IClient | undefined {\n return this.members.get(clientId);\n }\n\n /**\n * Clears the audience\n */\n public clear(): void {\n const clientIds = this.members.keys();\n for (const clientId of clientIds) {\n this.removeMember(clientId);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionManager.d.ts","sourceRoot":"","sources":["../src/connectionManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAEH,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACH,WAAW,EACX,YAAY,EAEZ,uBAAuB,EAC1B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACH,gBAAgB,EAGnB,MAAM,oCAAoC,CAAC;AAY5C,OAAO,EACH,cAAc,EACd,OAAO,EACP,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAGhB,yBAAyB,EAO5B,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EACH,aAAa,EACb,kBAAkB,EAClB,6BAA6B,EAChC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"connectionManager.d.ts","sourceRoot":"","sources":["../src/connectionManager.ts"],"names":[],"mappings":"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"}
|
package/lib/connectionManager.js
CHANGED
|
@@ -10,7 +10,6 @@ import { MessageType, ScopeType, } from "@fluidframework/protocol-definitions";
|
|
|
10
10
|
import { TelemetryLogger, normalizeError, } from "@fluidframework/telemetry-utils";
|
|
11
11
|
import { ReconnectMode, } from "./contracts";
|
|
12
12
|
import { DeltaQueue } from "./deltaQueue";
|
|
13
|
-
import { SignalType } from "./protocol";
|
|
14
13
|
const MaxReconnectDelayInMs = 8000;
|
|
15
14
|
const InitialReconnectDelayInMs = 1000;
|
|
16
15
|
const DefaultChunkSize = 16 * 1024;
|
|
@@ -486,7 +485,6 @@ export class ConnectionManager {
|
|
|
486
485
|
* @param connection - The newly established connection
|
|
487
486
|
*/
|
|
488
487
|
setupNewSuccessfulConnection(connection, requestedMode) {
|
|
489
|
-
var _a;
|
|
490
488
|
// Old connection should have been cleaned up before establishing a new one
|
|
491
489
|
assert(this.connection === undefined, 0x0e6 /* "old connection exists on new connection setup" */);
|
|
492
490
|
assert(!connection.disposed, 0x28a /* "can't be disposed - Callers need to ensure that!" */);
|
|
@@ -545,39 +543,15 @@ export class ConnectionManager {
|
|
|
545
543
|
}
|
|
546
544
|
}
|
|
547
545
|
this.props.incomingOpHandler(initialMessages, this.connectFirstConnection ? "InitialOps" : "ReconnectOps");
|
|
548
|
-
const details = ConnectionManager.detailsFromConnection(connection);
|
|
549
|
-
details.checkpointSequenceNumber = checkpointSequenceNumber;
|
|
550
|
-
this.props.connectHandler(details);
|
|
551
|
-
this.connectFirstConnection = false;
|
|
552
|
-
// Synthesize clear & join signals out of initialClients state.
|
|
553
|
-
// This allows us to have single way to process signals, and makes it simpler to initialize
|
|
554
|
-
// protocol in Container.
|
|
555
|
-
const clearSignal = {
|
|
556
|
-
clientId: null,
|
|
557
|
-
content: JSON.stringify({
|
|
558
|
-
type: SignalType.Clear,
|
|
559
|
-
}),
|
|
560
|
-
};
|
|
561
|
-
this.props.signalHandler(clearSignal);
|
|
562
|
-
for (const priorClient of (_a = connection.initialClients) !== null && _a !== void 0 ? _a : []) {
|
|
563
|
-
const joinSignal = {
|
|
564
|
-
clientId: null,
|
|
565
|
-
content: JSON.stringify({
|
|
566
|
-
type: SignalType.ClientJoin,
|
|
567
|
-
content: priorClient, // ISignalClient
|
|
568
|
-
}),
|
|
569
|
-
};
|
|
570
|
-
this.props.signalHandler(joinSignal);
|
|
571
|
-
}
|
|
572
|
-
// Unfortunately, there is no defined order between initialSignals (including join & leave signals)
|
|
573
|
-
// and connection.initialClients. In practice, connection.initialSignals quite often contains join signal
|
|
574
|
-
// for "self" and connection.initialClients does not contain "self", so we have to process them after
|
|
575
|
-
// "clear" signal above.
|
|
576
546
|
if (connection.initialSignals !== undefined) {
|
|
577
547
|
for (const signal of connection.initialSignals) {
|
|
578
548
|
this.props.signalHandler(signal);
|
|
579
549
|
}
|
|
580
550
|
}
|
|
551
|
+
const details = ConnectionManager.detailsFromConnection(connection);
|
|
552
|
+
details.checkpointSequenceNumber = checkpointSequenceNumber;
|
|
553
|
+
this.props.connectHandler(details);
|
|
554
|
+
this.connectFirstConnection = false;
|
|
581
555
|
}
|
|
582
556
|
/**
|
|
583
557
|
* Disconnect the current connection and reconnect. Closes the container if it fails.
|