@fluidframework/container-loader 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.224419
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/.eslintrc.js +18 -21
- package/.mocharc.js +12 -0
- package/CHANGELOG.md +364 -0
- package/README.md +152 -56
- package/api-extractor-lint.json +4 -0
- package/api-extractor.json +2 -2
- package/api-report/container-loader.api.md +143 -0
- package/dist/{audience.js → audience.cjs} +15 -13
- package/dist/audience.cjs.map +1 -0
- package/dist/audience.d.ts +4 -6
- package/dist/audience.d.ts.map +1 -1
- package/dist/catchUpMonitor.cjs +43 -0
- package/dist/catchUpMonitor.cjs.map +1 -0
- package/dist/catchUpMonitor.d.ts +29 -0
- package/dist/catchUpMonitor.d.ts.map +1 -0
- package/dist/{connectionManager.js → connectionManager.cjs} +397 -240
- package/dist/connectionManager.cjs.map +1 -0
- package/dist/connectionManager.d.ts +23 -33
- package/dist/connectionManager.d.ts.map +1 -1
- package/dist/{connectionState.js → connectionState.cjs} +5 -7
- package/dist/connectionState.cjs.map +1 -0
- package/dist/connectionState.d.ts +3 -5
- package/dist/connectionState.d.ts.map +1 -1
- package/dist/connectionStateHandler.cjs +474 -0
- package/dist/connectionStateHandler.cjs.map +1 -0
- package/dist/connectionStateHandler.d.ts +127 -29
- package/dist/connectionStateHandler.d.ts.map +1 -1
- package/dist/container-loader-alpha.d.ts +274 -0
- package/dist/container-loader-beta.d.ts +75 -0
- package/dist/container-loader-public.d.ts +75 -0
- package/dist/container-loader-untrimmed.d.ts +331 -0
- package/dist/container.cjs +1585 -0
- package/dist/container.cjs.map +1 -0
- package/dist/container.d.ts +227 -83
- package/dist/container.d.ts.map +1 -1
- package/dist/containerContext.cjs +74 -0
- package/dist/containerContext.cjs.map +1 -0
- package/dist/containerContext.d.ts +33 -59
- package/dist/containerContext.d.ts.map +1 -1
- package/dist/containerStorageAdapter.cjs +234 -0
- package/dist/containerStorageAdapter.cjs.map +1 -0
- package/dist/containerStorageAdapter.d.ts +48 -23
- package/dist/containerStorageAdapter.d.ts.map +1 -1
- package/dist/{contracts.js → contracts.cjs} +5 -5
- package/dist/contracts.cjs.map +1 -0
- package/dist/contracts.d.ts +45 -17
- package/dist/contracts.d.ts.map +1 -1
- package/dist/debugLogger.cjs +101 -0
- package/dist/debugLogger.cjs.map +1 -0
- package/dist/debugLogger.d.ts +30 -0
- package/dist/debugLogger.d.ts.map +1 -0
- package/dist/{deltaManager.js → deltaManager.cjs} +379 -186
- package/dist/deltaManager.cjs.map +1 -0
- package/dist/deltaManager.d.ts +54 -18
- package/dist/deltaManager.d.ts.map +1 -1
- package/dist/{deltaQueue.js → deltaQueue.cjs} +29 -28
- package/dist/deltaQueue.cjs.map +1 -0
- package/dist/deltaQueue.d.ts +3 -4
- package/dist/deltaQueue.d.ts.map +1 -1
- package/dist/disposal.cjs +25 -0
- package/dist/disposal.cjs.map +1 -0
- package/dist/disposal.d.ts +13 -0
- package/dist/disposal.d.ts.map +1 -0
- package/dist/error.cjs +32 -0
- package/dist/error.cjs.map +1 -0
- package/dist/error.d.ts +23 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/index.cjs +19 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/loader.cjs +148 -0
- package/dist/loader.cjs.map +1 -0
- package/dist/loader.d.ts +38 -19
- package/dist/loader.d.ts.map +1 -1
- package/dist/location-redirection-utilities/index.cjs +11 -0
- package/dist/location-redirection-utilities/index.cjs.map +1 -0
- package/dist/location-redirection-utilities/index.d.ts +6 -0
- package/dist/location-redirection-utilities/index.d.ts.map +1 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs +53 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs.map +1 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts +24 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts.map +1 -0
- package/dist/{collabWindowTracker.js → noopHeuristic.cjs} +37 -39
- package/dist/noopHeuristic.cjs.map +1 -0
- package/dist/noopHeuristic.d.ts +23 -0
- package/dist/noopHeuristic.d.ts.map +1 -0
- package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
- package/dist/packageVersion.cjs.map +1 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/protocol.cjs +99 -0
- package/dist/protocol.cjs.map +1 -0
- package/dist/protocol.d.ts +38 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.cjs} +8 -5
- package/dist/protocolTreeDocumentStorageService.cjs.map +1 -0
- package/dist/protocolTreeDocumentStorageService.d.ts +8 -4
- package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
- package/dist/quorum.cjs +16 -0
- package/dist/quorum.cjs.map +1 -0
- package/dist/quorum.d.ts +1 -14
- package/dist/quorum.d.ts.map +1 -1
- package/dist/{retriableDocumentStorageService.js → retriableDocumentStorageService.cjs} +36 -21
- package/dist/retriableDocumentStorageService.cjs.map +1 -0
- package/dist/retriableDocumentStorageService.d.ts +7 -5
- package/dist/retriableDocumentStorageService.d.ts.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/{utils.js → utils.cjs} +52 -14
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.ts +34 -1
- package/dist/utils.d.ts.map +1 -1
- package/lib/{audience.d.ts → audience.d.mts} +4 -10
- package/lib/audience.d.mts.map +1 -0
- package/lib/{audience.js → audience.mjs} +15 -17
- package/lib/audience.mjs.map +1 -0
- package/lib/catchUpMonitor.d.mts +29 -0
- package/lib/catchUpMonitor.d.mts.map +1 -0
- package/lib/catchUpMonitor.mjs +39 -0
- package/lib/catchUpMonitor.mjs.map +1 -0
- package/lib/{connectionManager.d.ts → connectionManager.d.mts} +23 -33
- package/lib/connectionManager.d.mts.map +1 -0
- package/lib/{connectionManager.js → connectionManager.mjs} +378 -218
- package/lib/connectionManager.mjs.map +1 -0
- package/lib/{connectionState.d.ts → connectionState.d.mts} +3 -5
- package/lib/connectionState.d.mts.map +1 -0
- package/lib/{connectionState.js → connectionState.mjs} +4 -6
- package/lib/connectionState.mjs.map +1 -0
- package/lib/connectionStateHandler.d.mts +179 -0
- package/lib/connectionStateHandler.d.mts.map +1 -0
- package/lib/connectionStateHandler.mjs +469 -0
- package/lib/connectionStateHandler.mjs.map +1 -0
- package/lib/container-loader-alpha.d.mts +274 -0
- package/lib/container-loader-beta.d.mts +75 -0
- package/lib/container-loader-public.d.mts +75 -0
- package/lib/container-loader-untrimmed.d.mts +331 -0
- package/lib/container.d.mts +382 -0
- package/lib/container.d.mts.map +1 -0
- package/lib/container.mjs +1579 -0
- package/lib/container.mjs.map +1 -0
- package/lib/containerContext.d.mts +58 -0
- package/lib/containerContext.d.mts.map +1 -0
- package/lib/containerContext.mjs +70 -0
- package/lib/containerContext.mjs.map +1 -0
- package/lib/containerStorageAdapter.d.mts +73 -0
- package/lib/containerStorageAdapter.d.mts.map +1 -0
- package/lib/containerStorageAdapter.mjs +228 -0
- package/lib/containerStorageAdapter.mjs.map +1 -0
- package/lib/{contracts.d.ts → contracts.d.mts} +45 -17
- package/lib/contracts.d.mts.map +1 -0
- package/lib/{contracts.js → contracts.mjs} +4 -4
- package/lib/contracts.mjs.map +1 -0
- package/lib/debugLogger.d.mts +30 -0
- package/lib/debugLogger.d.mts.map +1 -0
- package/lib/debugLogger.mjs +93 -0
- package/lib/debugLogger.mjs.map +1 -0
- package/lib/{deltaManager.d.ts → deltaManager.d.mts} +54 -18
- package/lib/deltaManager.d.mts.map +1 -0
- package/lib/{deltaManager.js → deltaManager.mjs} +361 -165
- package/lib/deltaManager.mjs.map +1 -0
- package/lib/{deltaQueue.d.ts → deltaQueue.d.mts} +3 -4
- package/lib/deltaQueue.d.mts.map +1 -0
- package/lib/{deltaQueue.js → deltaQueue.mjs} +25 -24
- package/lib/deltaQueue.mjs.map +1 -0
- package/lib/disposal.d.mts +13 -0
- package/lib/disposal.d.mts.map +1 -0
- package/lib/disposal.mjs +21 -0
- package/lib/disposal.mjs.map +1 -0
- package/lib/error.d.mts +23 -0
- package/lib/error.d.mts.map +1 -0
- package/lib/error.mjs +28 -0
- package/lib/error.mjs.map +1 -0
- package/lib/index.d.mts +11 -0
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +10 -0
- package/lib/index.mjs.map +1 -0
- package/lib/{loader.d.ts → loader.d.mts} +39 -20
- package/lib/loader.d.mts.map +1 -0
- package/lib/loader.mjs +143 -0
- package/lib/loader.mjs.map +1 -0
- package/lib/location-redirection-utilities/index.d.mts +6 -0
- package/lib/location-redirection-utilities/index.d.mts.map +1 -0
- package/lib/location-redirection-utilities/index.mjs +6 -0
- package/lib/location-redirection-utilities/index.mjs.map +1 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts +24 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts.map +1 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs +48 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs.map +1 -0
- package/lib/noopHeuristic.d.mts +23 -0
- package/lib/noopHeuristic.d.mts.map +1 -0
- package/lib/{collabWindowTracker.js → noopHeuristic.mjs} +33 -35
- package/lib/noopHeuristic.mjs.map +1 -0
- package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
- package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
- package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
- package/lib/packageVersion.mjs.map +1 -0
- package/lib/protocol.d.mts +38 -0
- package/lib/protocol.d.mts.map +1 -0
- package/lib/protocol.mjs +94 -0
- package/lib/protocol.mjs.map +1 -0
- package/lib/{protocolTreeDocumentStorageService.d.ts → protocolTreeDocumentStorageService.d.mts} +8 -4
- package/lib/protocolTreeDocumentStorageService.d.mts.map +1 -0
- package/lib/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.mjs} +8 -5
- package/lib/protocolTreeDocumentStorageService.mjs.map +1 -0
- package/lib/quorum.d.mts +4 -0
- package/lib/quorum.d.mts.map +1 -0
- package/lib/quorum.mjs +12 -0
- package/lib/quorum.mjs.map +1 -0
- package/lib/{retriableDocumentStorageService.d.ts → retriableDocumentStorageService.d.mts} +7 -5
- package/lib/retriableDocumentStorageService.d.mts.map +1 -0
- package/lib/{retriableDocumentStorageService.js → retriableDocumentStorageService.mjs} +35 -20
- package/lib/retriableDocumentStorageService.mjs.map +1 -0
- package/lib/utils.d.mts +67 -0
- package/lib/utils.d.mts.map +1 -0
- package/lib/{utils.js → utils.mjs} +47 -11
- package/lib/utils.mjs.map +1 -0
- package/package.json +163 -70
- package/prettier.config.cjs +8 -0
- package/src/audience.ts +59 -49
- package/src/catchUpMonitor.ts +61 -0
- package/src/connectionManager.ts +1154 -910
- package/src/connectionState.ts +22 -25
- package/src/connectionStateHandler.ts +689 -319
- package/src/container.ts +2476 -1792
- package/src/containerContext.ts +98 -330
- package/src/containerStorageAdapter.ts +301 -105
- package/src/contracts.ts +184 -146
- package/src/debugLogger.ts +123 -0
- package/src/deltaManager.ts +1165 -900
- package/src/deltaQueue.ts +156 -152
- package/src/disposal.ts +25 -0
- package/src/error.ts +44 -0
- package/src/index.ts +14 -15
- package/src/loader.ts +356 -427
- package/src/location-redirection-utilities/index.ts +9 -0
- package/src/location-redirection-utilities/resolveWithLocationRedirection.ts +61 -0
- package/src/noopHeuristic.ts +107 -0
- package/src/packageVersion.ts +1 -1
- package/src/protocol.ts +150 -0
- package/src/protocolTreeDocumentStorageService.ts +35 -35
- package/src/quorum.ts +11 -50
- package/src/retriableDocumentStorageService.ts +135 -95
- package/src/utils.ts +159 -86
- package/tsc-multi.test.json +4 -0
- package/tsconfig.json +10 -12
- package/dist/audience.js.map +0 -1
- package/dist/collabWindowTracker.d.ts +0 -19
- package/dist/collabWindowTracker.d.ts.map +0 -1
- package/dist/collabWindowTracker.js.map +0 -1
- package/dist/connectionManager.js.map +0 -1
- package/dist/connectionState.js.map +0 -1
- package/dist/connectionStateHandler.js +0 -280
- package/dist/connectionStateHandler.js.map +0 -1
- package/dist/container.js +0 -1284
- package/dist/container.js.map +0 -1
- package/dist/containerContext.js +0 -217
- package/dist/containerContext.js.map +0 -1
- package/dist/containerStorageAdapter.js +0 -104
- package/dist/containerStorageAdapter.js.map +0 -1
- package/dist/contracts.js.map +0 -1
- package/dist/deltaManager.js.map +0 -1
- package/dist/deltaManagerProxy.d.ts +0 -54
- package/dist/deltaManagerProxy.d.ts.map +0 -1
- package/dist/deltaManagerProxy.js +0 -115
- package/dist/deltaManagerProxy.js.map +0 -1
- package/dist/deltaQueue.js.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/loader.js +0 -241
- package/dist/loader.js.map +0 -1
- package/dist/packageVersion.js.map +0 -1
- package/dist/protocolTreeDocumentStorageService.js.map +0 -1
- package/dist/quorum.js +0 -44
- package/dist/quorum.js.map +0 -1
- package/dist/retriableDocumentStorageService.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/lib/audience.d.ts.map +0 -1
- package/lib/audience.js.map +0 -1
- package/lib/collabWindowTracker.d.ts +0 -19
- package/lib/collabWindowTracker.d.ts.map +0 -1
- package/lib/collabWindowTracker.js.map +0 -1
- package/lib/connectionManager.d.ts.map +0 -1
- package/lib/connectionManager.js.map +0 -1
- package/lib/connectionState.d.ts.map +0 -1
- package/lib/connectionState.js.map +0 -1
- package/lib/connectionStateHandler.d.ts +0 -81
- package/lib/connectionStateHandler.d.ts.map +0 -1
- package/lib/connectionStateHandler.js +0 -276
- package/lib/connectionStateHandler.js.map +0 -1
- package/lib/container.d.ts +0 -238
- package/lib/container.d.ts.map +0 -1
- package/lib/container.js +0 -1276
- package/lib/container.js.map +0 -1
- package/lib/containerContext.d.ts +0 -84
- package/lib/containerContext.d.ts.map +0 -1
- package/lib/containerContext.js +0 -213
- package/lib/containerContext.js.map +0 -1
- package/lib/containerStorageAdapter.d.ts +0 -48
- package/lib/containerStorageAdapter.d.ts.map +0 -1
- package/lib/containerStorageAdapter.js +0 -99
- package/lib/containerStorageAdapter.js.map +0 -1
- package/lib/contracts.d.ts.map +0 -1
- package/lib/contracts.js.map +0 -1
- package/lib/deltaManager.d.ts.map +0 -1
- package/lib/deltaManager.js.map +0 -1
- package/lib/deltaManagerProxy.d.ts +0 -54
- package/lib/deltaManagerProxy.d.ts.map +0 -1
- package/lib/deltaManagerProxy.js +0 -110
- package/lib/deltaManagerProxy.js.map +0 -1
- package/lib/deltaQueue.d.ts.map +0 -1
- package/lib/deltaQueue.js.map +0 -1
- package/lib/index.d.ts +0 -8
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -8
- package/lib/index.js.map +0 -1
- package/lib/loader.d.ts.map +0 -1
- package/lib/loader.js +0 -236
- package/lib/loader.js.map +0 -1
- package/lib/packageVersion.js.map +0 -1
- package/lib/protocolTreeDocumentStorageService.d.ts.map +0 -1
- package/lib/protocolTreeDocumentStorageService.js.map +0 -1
- package/lib/quorum.d.ts +0 -21
- package/lib/quorum.d.ts.map +0 -1
- package/lib/quorum.js +0 -38
- package/lib/quorum.js.map +0 -1
- package/lib/retriableDocumentStorageService.d.ts.map +0 -1
- package/lib/retriableDocumentStorageService.js.map +0 -1
- package/lib/utils.d.ts +0 -34
- package/lib/utils.d.ts.map +0 -1
- package/lib/utils.js.map +0 -1
- package/src/collabWindowTracker.ts +0 -102
- package/src/deltaManagerProxy.ts +0 -158
- package/tsconfig.esnext.json +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-loader",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.0.0-dev-rc.1.0.0.224419",
|
|
4
4
|
"description": "Fluid container loader",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -11,45 +11,82 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"author": "Microsoft and contributors",
|
|
13
13
|
"sideEffects": false,
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"test
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"import": {
|
|
17
|
+
"types": "./lib/index.d.mts",
|
|
18
|
+
"default": "./lib/index.mjs"
|
|
19
|
+
},
|
|
20
|
+
"require": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"default": "./dist/index.cjs"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"./test/container": {
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./lib/container.d.mts",
|
|
28
|
+
"default": "./lib/container.mjs"
|
|
29
|
+
},
|
|
30
|
+
"require": {
|
|
31
|
+
"types": "./dist/container.d.ts",
|
|
32
|
+
"default": "./dist/container.cjs"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"./test/contracts": {
|
|
36
|
+
"import": {
|
|
37
|
+
"types": "./lib/contracts.d.mts",
|
|
38
|
+
"default": "./lib/contracts.mjs"
|
|
39
|
+
},
|
|
40
|
+
"require": {
|
|
41
|
+
"types": "./dist/contracts.d.ts",
|
|
42
|
+
"default": "./dist/contracts.cjs"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"./test/connectionManager": {
|
|
46
|
+
"import": {
|
|
47
|
+
"types": "./lib/connectionManager.d.mts",
|
|
48
|
+
"default": "./lib/connectionManager.mjs"
|
|
49
|
+
},
|
|
50
|
+
"require": {
|
|
51
|
+
"types": "./dist/connectionManager.d.ts",
|
|
52
|
+
"default": "./dist/connectionManager.cjs"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"./test/deltaManager": {
|
|
56
|
+
"import": {
|
|
57
|
+
"types": "./lib/deltaManager.d.mts",
|
|
58
|
+
"default": "./lib/deltaManager.mjs"
|
|
59
|
+
},
|
|
60
|
+
"require": {
|
|
61
|
+
"types": "./dist/deltaManager.d.ts",
|
|
62
|
+
"default": "./dist/deltaManager.cjs"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"./test/utils": {
|
|
66
|
+
"import": {
|
|
67
|
+
"types": "./lib/utils.d.mts",
|
|
68
|
+
"default": "./lib/utils.mjs"
|
|
69
|
+
},
|
|
70
|
+
"require": {
|
|
71
|
+
"types": "./dist/utils.d.ts",
|
|
72
|
+
"default": "./dist/utils.cjs"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
41
75
|
},
|
|
42
|
-
"
|
|
76
|
+
"main": "dist/index.cjs",
|
|
77
|
+
"module": "lib/index.mjs",
|
|
78
|
+
"types": "dist/index.d.ts",
|
|
79
|
+
"c8": {
|
|
43
80
|
"all": true,
|
|
44
81
|
"cache-dir": "nyc/.cache",
|
|
45
82
|
"exclude": [
|
|
46
|
-
"src/test
|
|
47
|
-
"dist/test
|
|
83
|
+
"src/test/**/*.*ts",
|
|
84
|
+
"dist/test/**/*.*js"
|
|
48
85
|
],
|
|
49
86
|
"exclude-after-remap": false,
|
|
50
87
|
"include": [
|
|
51
|
-
"src
|
|
52
|
-
"dist
|
|
88
|
+
"src/**/*.*ts",
|
|
89
|
+
"dist/**/*.*js"
|
|
53
90
|
],
|
|
54
91
|
"report-dir": "nyc/report",
|
|
55
92
|
"reporter": [
|
|
@@ -60,52 +97,108 @@
|
|
|
60
97
|
"temp-directory": "nyc/.nyc_output"
|
|
61
98
|
},
|
|
62
99
|
"dependencies": {
|
|
63
|
-
"@
|
|
64
|
-
"@fluidframework/
|
|
65
|
-
"@fluidframework/
|
|
66
|
-
"@fluidframework/
|
|
67
|
-
"@fluidframework/
|
|
68
|
-
"@fluidframework/driver-
|
|
69
|
-
"@fluidframework/
|
|
70
|
-
"@fluidframework/protocol-
|
|
71
|
-
"@fluidframework/
|
|
72
|
-
"
|
|
73
|
-
"abort-controller": "^3.0.0",
|
|
100
|
+
"@fluid-internal/client-utils": "2.0.0-dev-rc.1.0.0.224419",
|
|
101
|
+
"@fluidframework/container-definitions": "2.0.0-dev-rc.1.0.0.224419",
|
|
102
|
+
"@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.224419",
|
|
103
|
+
"@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.224419",
|
|
104
|
+
"@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.224419",
|
|
105
|
+
"@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.224419",
|
|
106
|
+
"@fluidframework/protocol-base": "^3.0.0-223236",
|
|
107
|
+
"@fluidframework/protocol-definitions": "^3.1.0-223007",
|
|
108
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.224419",
|
|
109
|
+
"debug": "^4.3.4",
|
|
74
110
|
"double-ended-queue": "^2.1.0-0",
|
|
75
111
|
"events": "^3.1.0",
|
|
76
|
-
"lodash": "^4.17.21",
|
|
77
112
|
"url": "^0.11.0",
|
|
78
|
-
"uuid": "^
|
|
113
|
+
"uuid": "^9.0.0"
|
|
79
114
|
},
|
|
80
115
|
"devDependencies": {
|
|
81
|
-
"@
|
|
82
|
-
"@
|
|
83
|
-
"@
|
|
84
|
-
"@fluidframework/
|
|
85
|
-
"@fluidframework/
|
|
86
|
-
"@fluidframework/
|
|
87
|
-
"@
|
|
88
|
-
"@
|
|
116
|
+
"@arethetypeswrong/cli": "^0.13.3",
|
|
117
|
+
"@fluid-private/test-loader-utils": "2.0.0-dev-rc.1.0.0.224419",
|
|
118
|
+
"@fluid-tools/build-cli": "0.29.0-222379",
|
|
119
|
+
"@fluidframework/build-common": "^2.0.3",
|
|
120
|
+
"@fluidframework/build-tools": "0.29.0-222379",
|
|
121
|
+
"@fluidframework/container-loader-previous": "npm:@fluidframework/container-loader@2.0.0-internal.7.2.0",
|
|
122
|
+
"@fluidframework/eslint-config-fluid": "^3.1.0",
|
|
123
|
+
"@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.224419",
|
|
124
|
+
"@microsoft/api-extractor": "^7.38.3",
|
|
125
|
+
"@types/debug": "^4.1.5",
|
|
89
126
|
"@types/double-ended-queue": "^2.1.0",
|
|
90
|
-
"@types/
|
|
127
|
+
"@types/events": "^3.0.0",
|
|
91
128
|
"@types/mocha": "^9.1.1",
|
|
92
|
-
"@types/node": "^
|
|
129
|
+
"@types/node": "^18.19.0",
|
|
93
130
|
"@types/sinon": "^7.0.13",
|
|
94
|
-
"
|
|
95
|
-
"copyfiles": "^2.1
|
|
96
|
-
"cross-env": "^7.0.
|
|
97
|
-
"eslint": "~8.
|
|
98
|
-
"mocha": "^10.
|
|
99
|
-
"
|
|
100
|
-
"
|
|
131
|
+
"c8": "^7.7.1",
|
|
132
|
+
"copyfiles": "^2.4.1",
|
|
133
|
+
"cross-env": "^7.0.3",
|
|
134
|
+
"eslint": "~8.50.0",
|
|
135
|
+
"mocha": "^10.2.0",
|
|
136
|
+
"mocha-json-output-reporter": "^2.0.1",
|
|
137
|
+
"mocha-multi-reporters": "^1.5.1",
|
|
138
|
+
"moment": "^2.21.0",
|
|
139
|
+
"prettier": "~3.0.3",
|
|
140
|
+
"renamer": "^4.0.0",
|
|
141
|
+
"rimraf": "^4.4.0",
|
|
101
142
|
"sinon": "^7.4.2",
|
|
102
|
-
"
|
|
103
|
-
"typescript
|
|
143
|
+
"tsc-multi": "^1.1.0",
|
|
144
|
+
"typescript": "~5.1.6"
|
|
145
|
+
},
|
|
146
|
+
"fluidBuild": {
|
|
147
|
+
"tasks": {
|
|
148
|
+
"build:docs": {
|
|
149
|
+
"dependsOn": [
|
|
150
|
+
"...",
|
|
151
|
+
"api-extractor:commonjs",
|
|
152
|
+
"api-extractor:esnext"
|
|
153
|
+
],
|
|
154
|
+
"script": false
|
|
155
|
+
}
|
|
156
|
+
}
|
|
104
157
|
},
|
|
105
158
|
"typeValidation": {
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
159
|
+
"broken": {
|
|
160
|
+
"RemovedFunctionDeclaration_requestResolvedObjectFromContainer": {
|
|
161
|
+
"forwardCompat": false,
|
|
162
|
+
"backCompat": false
|
|
163
|
+
},
|
|
164
|
+
"InterfaceDeclaration_IContainerExperimental": {
|
|
165
|
+
"backCompat": false
|
|
166
|
+
},
|
|
167
|
+
"ClassDeclaration_Loader": {
|
|
168
|
+
"backCompat": false
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"scripts": {
|
|
173
|
+
"api": "fluid-build . --task api",
|
|
174
|
+
"api-extractor:commonjs": "api-extractor run --local",
|
|
175
|
+
"api-extractor:esnext": "copyfiles -u 1 \"dist/**/*-@(alpha|beta|public|untrimmed).d.ts\" lib",
|
|
176
|
+
"build": "fluid-build . --task build",
|
|
177
|
+
"build:commonjs": "fluid-build . --task commonjs",
|
|
178
|
+
"build:compile": "fluid-build . --task compile",
|
|
179
|
+
"build:docs": "fluid-build . --task api",
|
|
180
|
+
"build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
|
|
181
|
+
"build:genver": "gen-version",
|
|
182
|
+
"build:rename-types": "renamer \"lib/**\" -f .d.ts -r .d.mts --force",
|
|
183
|
+
"build:test": "tsc-multi --config ./tsc-multi.test.json",
|
|
184
|
+
"check:are-the-types-wrong": "attw --pack . --entrypoints .",
|
|
185
|
+
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
186
|
+
"ci:build:docs": "api-extractor run",
|
|
187
|
+
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
188
|
+
"eslint": "eslint --format stylish src",
|
|
189
|
+
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
190
|
+
"format": "npm run prettier:fix",
|
|
191
|
+
"lint": "npm run prettier && npm run check:release-tags && npm run eslint",
|
|
192
|
+
"lint:fix": "npm run prettier:fix && npm run eslint:fix",
|
|
193
|
+
"prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
194
|
+
"prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
195
|
+
"test": "npm run test:mocha",
|
|
196
|
+
"test:coverage": "c8 npm test",
|
|
197
|
+
"test:mocha": "mocha --ignore \"dist/test/types/*\" --recursive dist/test -r node_modules/@fluidframework/mocha-test-setup",
|
|
198
|
+
"test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
|
|
199
|
+
"tsc": "tsc-multi --config ../../../common/build/build-common/tsc-multi.cjs.json",
|
|
200
|
+
"tsc:watch": "tsc --watch",
|
|
201
|
+
"typetests:gen": "fluid-type-test-generator",
|
|
202
|
+
"typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
|
|
110
203
|
}
|
|
111
|
-
}
|
|
204
|
+
}
|
package/src/audience.ts
CHANGED
|
@@ -3,64 +3,74 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { EventEmitter } from "events";
|
|
6
|
-
import {
|
|
6
|
+
import { assert } from "@fluidframework/core-utils";
|
|
7
|
+
import { IAudienceOwner } from "@fluidframework/container-definitions";
|
|
7
8
|
import { IClient } from "@fluidframework/protocol-definitions";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Audience represents all clients connected to the op stream.
|
|
11
12
|
*/
|
|
12
|
-
export class Audience extends EventEmitter implements
|
|
13
|
-
|
|
13
|
+
export class Audience extends EventEmitter implements IAudienceOwner {
|
|
14
|
+
private readonly members = new Map<string, IClient>();
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
// We are expecting this class to have many listeners, so we suppress noisy "MaxListenersExceededWarning" logging.
|
|
19
|
+
super.setMaxListeners(0);
|
|
20
|
+
}
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
public on(
|
|
23
|
+
event: "addMember" | "removeMember",
|
|
24
|
+
listener: (clientId: string, client: IClient) => void,
|
|
25
|
+
): this;
|
|
26
|
+
public on(event: string, listener: (...args: any[]) => void): this {
|
|
27
|
+
return super.on(event, listener);
|
|
28
|
+
}
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Adds a new client to the audience
|
|
32
|
+
*/
|
|
33
|
+
public addMember(clientId: string, details: IClient) {
|
|
34
|
+
// Given that signal delivery is unreliable process, we might observe same client being added twice
|
|
35
|
+
// In such case we should see exactly same payload (IClient), and should not raise event twice!
|
|
36
|
+
if (this.members.has(clientId)) {
|
|
37
|
+
const client = this.members.get(clientId);
|
|
38
|
+
assert(
|
|
39
|
+
JSON.stringify(client) === JSON.stringify(details),
|
|
40
|
+
0x4b2 /* new client has different payload from existing one */,
|
|
41
|
+
);
|
|
42
|
+
} else {
|
|
43
|
+
this.members.set(clientId, details);
|
|
44
|
+
this.emit("addMember", clientId, details);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
42
47
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Removes a client from the audience. Only emits an event if a client is actually removed
|
|
50
|
+
* @returns if a client was removed from the audience
|
|
51
|
+
*/
|
|
52
|
+
public removeMember(clientId: string): boolean {
|
|
53
|
+
const removedClient = this.members.get(clientId);
|
|
54
|
+
if (removedClient !== undefined) {
|
|
55
|
+
this.members.delete(clientId);
|
|
56
|
+
this.emit("removeMember", clientId, removedClient);
|
|
57
|
+
return true;
|
|
58
|
+
} else {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
49
62
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Retrieves all the members in the audience
|
|
65
|
+
*/
|
|
66
|
+
public getMembers(): Map<string, IClient> {
|
|
67
|
+
return new Map(this.members);
|
|
68
|
+
}
|
|
56
69
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.removeMember(clientId);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
70
|
+
/**
|
|
71
|
+
* Retrieves a specific member of the audience
|
|
72
|
+
*/
|
|
73
|
+
public getMember(clientId: string): IClient | undefined {
|
|
74
|
+
return this.members.get(clientId);
|
|
75
|
+
}
|
|
66
76
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { IDisposable } from "@fluidframework/core-interfaces";
|
|
7
|
+
import { assert } from "@fluidframework/core-utils";
|
|
8
|
+
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
9
|
+
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
10
|
+
|
|
11
|
+
/** @see CatchUpMonitor for usage */
|
|
12
|
+
type CaughtUpListener = () => void;
|
|
13
|
+
|
|
14
|
+
/** Monitor that emits an event when a Container has caught up to a given point in the op stream */
|
|
15
|
+
export type ICatchUpMonitor = IDisposable;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Monitors a Container's DeltaManager, notifying listeners when all ops have been processed
|
|
19
|
+
* that were known at the time the monitor was created.
|
|
20
|
+
*/
|
|
21
|
+
export class CatchUpMonitor implements ICatchUpMonitor {
|
|
22
|
+
private readonly targetSeqNumber: number;
|
|
23
|
+
private caughtUp: boolean = false;
|
|
24
|
+
|
|
25
|
+
private readonly opHandler = (message: Pick<ISequencedDocumentMessage, "sequenceNumber">) => {
|
|
26
|
+
if (!this.caughtUp && message.sequenceNumber >= this.targetSeqNumber) {
|
|
27
|
+
this.caughtUp = true;
|
|
28
|
+
this.listener();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create the CatchUpMonitor, setting the target sequence number to wait for based on DeltaManager's current state.
|
|
34
|
+
*/
|
|
35
|
+
constructor(
|
|
36
|
+
private readonly deltaManager: IDeltaManager<any, any>,
|
|
37
|
+
private readonly listener: CaughtUpListener,
|
|
38
|
+
) {
|
|
39
|
+
this.targetSeqNumber = this.deltaManager.lastKnownSeqNumber;
|
|
40
|
+
|
|
41
|
+
assert(
|
|
42
|
+
this.targetSeqNumber >= this.deltaManager.lastSequenceNumber,
|
|
43
|
+
0x37c /* Cannot wait for seqNumber below last processed sequence number */,
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
this.deltaManager.on("op", this.opHandler);
|
|
47
|
+
|
|
48
|
+
// Simulate the last processed op to set caughtUp in case we already are
|
|
49
|
+
this.opHandler({ sequenceNumber: this.deltaManager.lastSequenceNumber });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public disposed: boolean = false;
|
|
53
|
+
public dispose() {
|
|
54
|
+
if (this.disposed) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.disposed = true;
|
|
58
|
+
|
|
59
|
+
this.deltaManager.off("op", this.opHandler);
|
|
60
|
+
}
|
|
61
|
+
}
|