@fluidframework/driver-utils 2.0.0-internal.3.2.1 → 2.0.0-internal.3.3.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.
- package/dist/blobCacheStorageService.d.ts +11 -0
- package/dist/blobCacheStorageService.d.ts.map +1 -1
- package/dist/blobCacheStorageService.js +11 -0
- package/dist/blobCacheStorageService.js.map +1 -1
- package/dist/emptyDocumentDeltaStorageService.d.ts +5 -0
- package/dist/emptyDocumentDeltaStorageService.d.ts.map +1 -1
- package/dist/emptyDocumentDeltaStorageService.js +5 -0
- package/dist/emptyDocumentDeltaStorageService.js.map +1 -1
- package/dist/mapWithExpiration.d.ts +41 -0
- package/dist/mapWithExpiration.d.ts.map +1 -1
- package/dist/mapWithExpiration.js +41 -0
- package/dist/mapWithExpiration.js.map +1 -1
- package/dist/multiDocumentServiceFactory.d.ts +18 -0
- package/dist/multiDocumentServiceFactory.d.ts.map +1 -1
- package/dist/multiDocumentServiceFactory.js +18 -0
- package/dist/multiDocumentServiceFactory.js.map +1 -1
- package/dist/multiUrlResolver.d.ts +14 -0
- package/dist/multiUrlResolver.d.ts.map +1 -1
- package/dist/multiUrlResolver.js +14 -0
- package/dist/multiUrlResolver.js.map +1 -1
- package/dist/networkUtils.d.ts +2 -0
- package/dist/networkUtils.d.ts.map +1 -1
- package/dist/networkUtils.js +2 -0
- package/dist/networkUtils.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/parallelRequests.d.ts.map +1 -1
- package/dist/parallelRequests.js +33 -14
- package/dist/parallelRequests.js.map +1 -1
- package/dist/treeUtils.d.ts +21 -0
- package/dist/treeUtils.d.ts.map +1 -1
- package/dist/treeUtils.js +17 -0
- package/dist/treeUtils.js.map +1 -1
- package/lib/blobCacheStorageService.d.ts +11 -0
- package/lib/blobCacheStorageService.d.ts.map +1 -1
- package/lib/blobCacheStorageService.js +11 -0
- package/lib/blobCacheStorageService.js.map +1 -1
- package/lib/emptyDocumentDeltaStorageService.d.ts +5 -0
- package/lib/emptyDocumentDeltaStorageService.d.ts.map +1 -1
- package/lib/emptyDocumentDeltaStorageService.js +5 -0
- package/lib/emptyDocumentDeltaStorageService.js.map +1 -1
- package/lib/mapWithExpiration.d.ts +41 -0
- package/lib/mapWithExpiration.d.ts.map +1 -1
- package/lib/mapWithExpiration.js +41 -0
- package/lib/mapWithExpiration.js.map +1 -1
- package/lib/multiDocumentServiceFactory.d.ts +18 -0
- package/lib/multiDocumentServiceFactory.d.ts.map +1 -1
- package/lib/multiDocumentServiceFactory.js +18 -0
- package/lib/multiDocumentServiceFactory.js.map +1 -1
- package/lib/multiUrlResolver.d.ts +14 -0
- package/lib/multiUrlResolver.d.ts.map +1 -1
- package/lib/multiUrlResolver.js +14 -0
- package/lib/multiUrlResolver.js.map +1 -1
- package/lib/networkUtils.d.ts +2 -0
- package/lib/networkUtils.d.ts.map +1 -1
- package/lib/networkUtils.js +2 -0
- package/lib/networkUtils.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/parallelRequests.d.ts.map +1 -1
- package/lib/parallelRequests.js +34 -15
- package/lib/parallelRequests.js.map +1 -1
- package/lib/treeUtils.d.ts +21 -0
- package/lib/treeUtils.d.ts.map +1 -1
- package/lib/treeUtils.js +17 -0
- package/lib/treeUtils.js.map +1 -1
- package/package.json +12 -16
- package/src/blobCacheStorageService.ts +11 -0
- package/src/emptyDocumentDeltaStorageService.ts +5 -0
- package/src/mapWithExpiration.ts +41 -0
- package/src/multiDocumentServiceFactory.ts +18 -0
- package/src/multiUrlResolver.ts +14 -0
- package/src/networkUtils.ts +2 -0
- package/src/packageVersion.ts +1 -1
- package/src/parallelRequests.ts +37 -18
- package/src/treeUtils.ts +21 -0
|
@@ -5,11 +5,16 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* An extension of Map that expires (deletes) entries after a period of inactivity.
|
|
7
7
|
* The policy is based on the last time a key was written to.
|
|
8
|
+
*
|
|
9
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
8
10
|
*/
|
|
9
11
|
export declare class MapWithExpiration<TKey = any, TValue = any> extends Map<TKey, TValue> {
|
|
10
12
|
private readonly expiryMs;
|
|
11
13
|
/** Timestamps (as epoch ms numbers) of when each key was last refreshed */
|
|
12
14
|
private readonly lastRefreshedTimes;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
17
|
+
*/
|
|
13
18
|
constructor(expiryMs: number);
|
|
14
19
|
private refresh;
|
|
15
20
|
/**
|
|
@@ -18,17 +23,53 @@ export declare class MapWithExpiration<TKey = any, TValue = any> extends Map<TKe
|
|
|
18
23
|
*/
|
|
19
24
|
private checkExpiry;
|
|
20
25
|
private clearExpiredEntries;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
28
|
+
*/
|
|
21
29
|
get size(): number;
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
32
|
+
*/
|
|
22
33
|
has(key: TKey): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
36
|
+
*/
|
|
23
37
|
get(key: TKey): TValue | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
40
|
+
*/
|
|
24
41
|
set(key: TKey, value: TValue): this;
|
|
42
|
+
/**
|
|
43
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
44
|
+
*/
|
|
25
45
|
delete(key: TKey): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
48
|
+
*/
|
|
26
49
|
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
52
|
+
*/
|
|
27
53
|
forEach(callbackfn: (value: TValue, key: TKey, map: Map<TKey, TValue>) => void, thisArg?: any): void;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
56
|
+
*/
|
|
28
57
|
entries(): IterableIterator<[TKey, TValue]>;
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
60
|
+
*/
|
|
29
61
|
keys(): IterableIterator<TKey>;
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
64
|
+
*/
|
|
30
65
|
values(): IterableIterator<TValue>;
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
68
|
+
*/
|
|
31
69
|
[Symbol.iterator](): IterableIterator<[TKey, TValue]>;
|
|
70
|
+
/**
|
|
71
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
72
|
+
*/
|
|
32
73
|
valueOf(): Object;
|
|
33
74
|
}
|
|
34
75
|
//# sourceMappingURL=mapWithExpiration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapWithExpiration.d.ts","sourceRoot":"","sources":["../src/mapWithExpiration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH
|
|
1
|
+
{"version":3,"file":"mapWithExpiration.d.ts","sourceRoot":"","sources":["../src/mapWithExpiration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;GAKG;AACH,qBAAa,iBAAiB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,CAAE,SAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;IAOrE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAE9D;;OAEG;gBAC0B,QAAQ,EAAE,MAAM;IAI7C,OAAO,CAAC,OAAO;IAIf;;;OAGG;IACH,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAKvB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS;IAKlC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAK1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CACN,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EACtE,OAAO,CAAC,EAAE,GAAG,GACX,IAAI;IAmBP;;OAEG;IACH,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAI3C;;OAEG;IACH,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIlC;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAKrD;;OAEG;IACH,OAAO;CAIP"}
|
package/lib/mapWithExpiration.js
CHANGED
|
@@ -6,8 +6,13 @@ import { assert } from "@fluidframework/common-utils";
|
|
|
6
6
|
/**
|
|
7
7
|
* An extension of Map that expires (deletes) entries after a period of inactivity.
|
|
8
8
|
* The policy is based on the last time a key was written to.
|
|
9
|
+
*
|
|
10
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
9
11
|
*/
|
|
10
12
|
export class MapWithExpiration extends Map {
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
15
|
+
*/
|
|
11
16
|
constructor(expiryMs) {
|
|
12
17
|
super();
|
|
13
18
|
this.expiryMs = expiryMs;
|
|
@@ -37,31 +42,52 @@ export class MapWithExpiration extends Map {
|
|
|
37
42
|
// forEach clears out any expired entries
|
|
38
43
|
this.forEach(() => { });
|
|
39
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
47
|
+
*/
|
|
40
48
|
get size() {
|
|
41
49
|
this.clearExpiredEntries();
|
|
42
50
|
return super.size;
|
|
43
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
54
|
+
*/
|
|
44
55
|
has(key) {
|
|
45
56
|
this.checkExpiry(key, true /* cleanUp */);
|
|
46
57
|
return super.has(key);
|
|
47
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
61
|
+
*/
|
|
48
62
|
get(key) {
|
|
49
63
|
this.checkExpiry(key, true /* cleanUp */);
|
|
50
64
|
return super.get(key);
|
|
51
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
68
|
+
*/
|
|
52
69
|
set(key, value) {
|
|
53
70
|
// Sliding window expiration policy (on write)
|
|
54
71
|
this.refresh(key);
|
|
55
72
|
return super.set(key, value);
|
|
56
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
76
|
+
*/
|
|
57
77
|
delete(key) {
|
|
58
78
|
this.lastRefreshedTimes.delete(key);
|
|
59
79
|
return super.delete(key);
|
|
60
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
83
|
+
*/
|
|
61
84
|
clear() {
|
|
62
85
|
this.lastRefreshedTimes.clear();
|
|
63
86
|
super.clear();
|
|
64
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
90
|
+
*/
|
|
65
91
|
forEach(callbackfn, thisArg) {
|
|
66
92
|
const expiredKeys = [];
|
|
67
93
|
super.forEach((v, k, m) => {
|
|
@@ -77,22 +103,37 @@ export class MapWithExpiration extends Map {
|
|
|
77
103
|
this.delete(key);
|
|
78
104
|
});
|
|
79
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
108
|
+
*/
|
|
80
109
|
entries() {
|
|
81
110
|
this.clearExpiredEntries();
|
|
82
111
|
return super.entries();
|
|
83
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
115
|
+
*/
|
|
84
116
|
keys() {
|
|
85
117
|
this.clearExpiredEntries();
|
|
86
118
|
return super.keys();
|
|
87
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
122
|
+
*/
|
|
88
123
|
values() {
|
|
89
124
|
this.clearExpiredEntries();
|
|
90
125
|
return super.values();
|
|
91
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
129
|
+
*/
|
|
92
130
|
[Symbol.iterator]() {
|
|
93
131
|
this.clearExpiredEntries();
|
|
94
132
|
return super[Symbol.iterator]();
|
|
95
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
136
|
+
*/
|
|
96
137
|
valueOf() {
|
|
97
138
|
this.clearExpiredEntries();
|
|
98
139
|
return super.valueOf();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapWithExpiration.js","sourceRoot":"","sources":["../src/mapWithExpiration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"mapWithExpiration.js","sourceRoot":"","sources":["../src/mapWithExpiration.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/common-utils\";\n\n/**\n * An extension of Map that expires (deletes) entries after a period of inactivity.\n * The policy is based on the last time a key was written to.\n *\n * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n */\nexport class MapWithExpiration<TKey = any, TValue = any> extends Map<TKey, TValue> {\n\t/** Timestamps (as epoch ms numbers) of when each key was last refreshed */\n\tprivate readonly lastRefreshedTimes = new Map<TKey, number>();\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tconstructor(private readonly expiryMs: number) {\n\t\tsuper();\n\t}\n\n\tprivate refresh(key: TKey): void {\n\t\tthis.lastRefreshedTimes.set(key, new Date().valueOf());\n\t}\n\n\t/**\n\t * Returns true if the key is present and expired, false if it's not expired, and undefined if it's not found\n\t * If cleanUp is passed as true, then delete any expired entry before returning.\n\t */\n\tprivate checkExpiry(key: TKey, cleanUp: boolean = false): boolean | undefined {\n\t\tconst refreshTime = this.lastRefreshedTimes.get(key);\n\t\tassert(\n\t\t\t(refreshTime !== undefined) === super.has(key),\n\t\t\t0x50c /* freshness map out of sync */,\n\t\t);\n\n\t\tif (refreshTime === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst expired = new Date().valueOf() - refreshTime >= this.expiryMs;\n\t\tif (expired && cleanUp) {\n\t\t\tthis.delete(key);\n\t\t}\n\t\treturn expired;\n\t}\n\n\tprivate clearExpiredEntries() {\n\t\t// forEach clears out any expired entries\n\t\tthis.forEach(() => {});\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tget size(): number {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.size;\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\thas(key: TKey): boolean {\n\t\tthis.checkExpiry(key, true /* cleanUp */);\n\t\treturn super.has(key);\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tget(key: TKey): TValue | undefined {\n\t\tthis.checkExpiry(key, true /* cleanUp */);\n\t\treturn super.get(key);\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tset(key: TKey, value: TValue): this {\n\t\t// Sliding window expiration policy (on write)\n\t\tthis.refresh(key);\n\t\treturn super.set(key, value);\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tdelete(key: TKey): boolean {\n\t\tthis.lastRefreshedTimes.delete(key);\n\t\treturn super.delete(key);\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tclear(): void {\n\t\tthis.lastRefreshedTimes.clear();\n\t\tsuper.clear();\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tforEach(\n\t\tcallbackfn: (value: TValue, key: TKey, map: Map<TKey, TValue>) => void,\n\t\tthisArg?: any,\n\t): void {\n\t\tconst expiredKeys: TKey[] = [];\n\t\tsuper.forEach(\n\t\t\t(v, k, m) => {\n\t\t\t\tif (this.checkExpiry(k) === true) {\n\t\t\t\t\texpiredKeys.push(k);\n\t\t\t\t} else {\n\t\t\t\t\tcallbackfn.bind(thisArg)(v, k, m);\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Note we don't pass thisArg here, since we bind it directly to callbackFn and don't need it otherwise\n\t\t);\n\n\t\t// Clean up keys we know are expired now that we're done iterating\n\t\texpiredKeys.forEach((key: TKey) => {\n\t\t\tthis.delete(key);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tentries(): IterableIterator<[TKey, TValue]> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.entries();\n\t}\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tkeys(): IterableIterator<TKey> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.keys();\n\t}\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tvalues(): IterableIterator<TValue> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.values();\n\t}\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\t[Symbol.iterator](): IterableIterator<[TKey, TValue]> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super[Symbol.iterator]();\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tvalueOf() {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.valueOf();\n\t}\n}\n"]}
|
|
@@ -5,12 +5,30 @@
|
|
|
5
5
|
import { IDocumentServiceFactory, IResolvedUrl, IDocumentService } from "@fluidframework/driver-definitions";
|
|
6
6
|
import { ISummaryTree } from "@fluidframework/protocol-definitions";
|
|
7
7
|
import { ITelemetryBaseLogger } from "@fluidframework/common-definitions";
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
10
|
+
*/
|
|
8
11
|
export declare class MultiDocumentServiceFactory implements IDocumentServiceFactory {
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
14
|
+
*/
|
|
9
15
|
static create(documentServiceFactory: IDocumentServiceFactory | IDocumentServiceFactory[]): IDocumentServiceFactory;
|
|
10
16
|
private readonly protocolToDocumentFactoryMap;
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
19
|
+
*/
|
|
11
20
|
constructor(documentServiceFactories: IDocumentServiceFactory[]);
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
23
|
+
*/
|
|
12
24
|
readonly protocolName = "none:";
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
27
|
+
*/
|
|
13
28
|
createDocumentService(resolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
31
|
+
*/
|
|
14
32
|
createContainer(createNewSummary: ISummaryTree, createNewResolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
|
|
15
33
|
}
|
|
16
34
|
//# sourceMappingURL=multiDocumentServiceFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiDocumentServiceFactory.d.ts","sourceRoot":"","sources":["../src/multiDocumentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG1E,qBAAa,2BAA4B,YAAW,uBAAuB;
|
|
1
|
+
{"version":3,"file":"multiDocumentServiceFactory.d.ts","sourceRoot":"","sources":["../src/multiDocumentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG1E;;GAEG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAC1E;;OAEG;WACW,MAAM,CACnB,sBAAsB,EAAE,uBAAuB,GAAG,uBAAuB,EAAE;IAoB5E,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAuC;IAEpF;;OAEG;gBACS,wBAAwB,EAAE,uBAAuB,EAAE;IAM/D;;OAEG;IACH,SAAgB,YAAY,WAAW;IACvC;;OAEG;IACG,qBAAqB,CAC1B,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;OAEG;IACU,eAAe,CAC3B,gBAAgB,EAAE,YAAY,EAC9B,oBAAoB,EAAE,YAAY,EAClC,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;CAmB5B"}
|
|
@@ -4,14 +4,26 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { parse } from "url";
|
|
6
6
|
import { ensureFluidResolvedUrl } from "./fluidResolvedUrl";
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
9
|
+
*/
|
|
7
10
|
export class MultiDocumentServiceFactory {
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
13
|
+
*/
|
|
8
14
|
constructor(documentServiceFactories) {
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
17
|
+
*/
|
|
9
18
|
this.protocolName = "none:";
|
|
10
19
|
this.protocolToDocumentFactoryMap = new Map();
|
|
11
20
|
documentServiceFactories.forEach((factory) => {
|
|
12
21
|
this.protocolToDocumentFactoryMap.set(factory.protocolName, factory);
|
|
13
22
|
});
|
|
14
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
26
|
+
*/
|
|
15
27
|
static create(documentServiceFactory) {
|
|
16
28
|
if (Array.isArray(documentServiceFactory)) {
|
|
17
29
|
const factories = [];
|
|
@@ -31,6 +43,9 @@ export class MultiDocumentServiceFactory {
|
|
|
31
43
|
}
|
|
32
44
|
return documentServiceFactory;
|
|
33
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
48
|
+
*/
|
|
34
49
|
async createDocumentService(resolvedUrl, logger, clientIsSummarizer) {
|
|
35
50
|
ensureFluidResolvedUrl(resolvedUrl);
|
|
36
51
|
const urlObj = parse(resolvedUrl.url);
|
|
@@ -43,6 +58,9 @@ export class MultiDocumentServiceFactory {
|
|
|
43
58
|
}
|
|
44
59
|
return factory.createDocumentService(resolvedUrl, logger, clientIsSummarizer);
|
|
45
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
63
|
+
*/
|
|
46
64
|
async createContainer(createNewSummary, createNewResolvedUrl, logger, clientIsSummarizer) {
|
|
47
65
|
ensureFluidResolvedUrl(createNewResolvedUrl);
|
|
48
66
|
const urlObj = parse(createNewResolvedUrl.url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiDocumentServiceFactory.js","sourceRoot":"","sources":["../src/multiDocumentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAQ5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,OAAO,2BAA2B;
|
|
1
|
+
{"version":3,"file":"multiDocumentServiceFactory.js","sourceRoot":"","sources":["../src/multiDocumentServiceFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport {\n\tIDocumentServiceFactory,\n\tIResolvedUrl,\n\tIDocumentService,\n} from \"@fluidframework/driver-definitions\";\nimport { ISummaryTree } from \"@fluidframework/protocol-definitions\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/common-definitions\";\nimport { ensureFluidResolvedUrl } from \"./fluidResolvedUrl\";\n\n/**\n * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n */\nexport class MultiDocumentServiceFactory implements IDocumentServiceFactory {\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tpublic static create(\n\t\tdocumentServiceFactory: IDocumentServiceFactory | IDocumentServiceFactory[],\n\t) {\n\t\tif (Array.isArray(documentServiceFactory)) {\n\t\t\tconst factories: IDocumentServiceFactory[] = [];\n\t\t\tdocumentServiceFactory.forEach((factory) => {\n\t\t\t\tconst maybeMulti = factory as MultiDocumentServiceFactory;\n\t\t\t\tif (maybeMulti.protocolToDocumentFactoryMap !== undefined) {\n\t\t\t\t\tfactories.push(...maybeMulti.protocolToDocumentFactoryMap.values());\n\t\t\t\t} else {\n\t\t\t\t\tfactories.push(factory);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (factories.length === 1) {\n\t\t\t\treturn factories[0];\n\t\t\t}\n\t\t\treturn new MultiDocumentServiceFactory(factories);\n\t\t}\n\t\treturn documentServiceFactory;\n\t}\n\n\tprivate readonly protocolToDocumentFactoryMap: Map<string, IDocumentServiceFactory>;\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tconstructor(documentServiceFactories: IDocumentServiceFactory[]) {\n\t\tthis.protocolToDocumentFactoryMap = new Map();\n\t\tdocumentServiceFactories.forEach((factory: IDocumentServiceFactory) => {\n\t\t\tthis.protocolToDocumentFactoryMap.set(factory.protocolName, factory);\n\t\t});\n\t}\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tpublic readonly protocolName = \"none:\";\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tasync createDocumentService(\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tensureFluidResolvedUrl(resolvedUrl);\n\t\tconst urlObj = parse(resolvedUrl.url);\n\t\tif (urlObj.protocol === undefined || urlObj.protocol === null) {\n\t\t\tthrow new Error(\"No protocol provided\");\n\t\t}\n\t\tconst factory: IDocumentServiceFactory | undefined = this.protocolToDocumentFactoryMap.get(\n\t\t\turlObj.protocol,\n\t\t);\n\t\tif (factory === undefined) {\n\t\t\tthrow new Error(\"Unknown Fluid protocol\");\n\t\t}\n\n\t\treturn factory.createDocumentService(resolvedUrl, logger, clientIsSummarizer);\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tpublic async createContainer(\n\t\tcreateNewSummary: ISummaryTree,\n\t\tcreateNewResolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tensureFluidResolvedUrl(createNewResolvedUrl);\n\t\tconst urlObj = parse(createNewResolvedUrl.url);\n\t\tif (urlObj.protocol === undefined || urlObj.protocol === null) {\n\t\t\tthrow new Error(\"No protocol provided\");\n\t\t}\n\t\tconst factory: IDocumentServiceFactory | undefined = this.protocolToDocumentFactoryMap.get(\n\t\t\turlObj.protocol,\n\t\t);\n\t\tif (factory === undefined) {\n\t\t\tthrow new Error(\"Unknown Fluid protocol\");\n\t\t}\n\t\treturn factory.createContainer(\n\t\t\tcreateNewSummary,\n\t\t\tcreateNewResolvedUrl,\n\t\t\tlogger,\n\t\t\tclientIsSummarizer,\n\t\t);\n\t}\n}\n"]}
|
|
@@ -8,13 +8,27 @@ import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
|
8
8
|
* Resolver that takes a list of url resolvers and then try each of them to resolve the url.
|
|
9
9
|
* @param resolversList - List of url resolvers to be used to resolve the request.
|
|
10
10
|
* @param request - Request to be resolved.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
11
13
|
*/
|
|
12
14
|
export declare function configurableUrlResolver(resolversList: IUrlResolver[], request: IRequest): Promise<IResolvedUrl | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
17
|
+
*/
|
|
13
18
|
export declare class MultiUrlResolver implements IUrlResolver {
|
|
14
19
|
private readonly urlResolvers;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
22
|
+
*/
|
|
15
23
|
static create(urlResolver: IUrlResolver | IUrlResolver[]): IUrlResolver;
|
|
16
24
|
private constructor();
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
27
|
+
*/
|
|
17
28
|
resolve(request: IRequest): Promise<IResolvedUrl | undefined>;
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
31
|
+
*/
|
|
18
32
|
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
|
|
19
33
|
}
|
|
20
34
|
//# sourceMappingURL=multiUrlResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiUrlResolver.d.ts","sourceRoot":"","sources":["../src/multiUrlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEhF
|
|
1
|
+
{"version":3,"file":"multiUrlResolver.d.ts","sourceRoot":"","sources":["../src/multiUrlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC5C,aAAa,EAAE,YAAY,EAAE,EAC7B,OAAO,EAAE,QAAQ,GACf,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CASnC;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IAchC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAbjD;;OAEG;WACW,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,YAAY,EAAE;IAU/D,OAAO;IAEP;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAInE;;OAEG;IACU,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAG5F"}
|
package/lib/multiUrlResolver.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* Resolver that takes a list of url resolvers and then try each of them to resolve the url.
|
|
7
7
|
* @param resolversList - List of url resolvers to be used to resolve the request.
|
|
8
8
|
* @param request - Request to be resolved.
|
|
9
|
+
*
|
|
10
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
9
11
|
*/
|
|
10
12
|
export async function configurableUrlResolver(resolversList, request) {
|
|
11
13
|
let resolved;
|
|
@@ -17,10 +19,16 @@ export async function configurableUrlResolver(resolversList, request) {
|
|
|
17
19
|
}
|
|
18
20
|
return undefined;
|
|
19
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
24
|
+
*/
|
|
20
25
|
export class MultiUrlResolver {
|
|
21
26
|
constructor(urlResolvers) {
|
|
22
27
|
this.urlResolvers = urlResolvers;
|
|
23
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
31
|
+
*/
|
|
24
32
|
static create(urlResolver) {
|
|
25
33
|
if (Array.isArray(urlResolver)) {
|
|
26
34
|
if (urlResolver.length === 1) {
|
|
@@ -30,9 +38,15 @@ export class MultiUrlResolver {
|
|
|
30
38
|
}
|
|
31
39
|
return urlResolver;
|
|
32
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
43
|
+
*/
|
|
33
44
|
async resolve(request) {
|
|
34
45
|
return configurableUrlResolver(this.urlResolvers, request);
|
|
35
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
49
|
+
*/
|
|
36
50
|
async getAbsoluteUrl(resolvedUrl, relativeUrl) {
|
|
37
51
|
throw new Error("Not implmented");
|
|
38
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiUrlResolver.js","sourceRoot":"","sources":["../src/multiUrlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH
|
|
1
|
+
{"version":3,"file":"multiUrlResolver.js","sourceRoot":"","sources":["../src/multiUrlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,aAA6B,EAC7B,OAAiB;IAEjB,IAAI,QAAkC,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;QACrC,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,mBAAM,OAAO,EAAG,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3B,OAAO,QAAQ,CAAC;SAChB;KACD;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAc5B,YAAqC,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;IAAG,CAAC;IAbrE;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,WAA0C;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC/B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;aACtB;YACD,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;SACzC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC;IAID;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAiB;QAC9B,OAAO,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl, IUrlResolver } from \"@fluidframework/driver-definitions\";\n\n/**\n * Resolver that takes a list of url resolvers and then try each of them to resolve the url.\n * @param resolversList - List of url resolvers to be used to resolve the request.\n * @param request - Request to be resolved.\n *\n * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n */\nexport async function configurableUrlResolver(\n\tresolversList: IUrlResolver[],\n\trequest: IRequest,\n): Promise<IResolvedUrl | undefined> {\n\tlet resolved: IResolvedUrl | undefined;\n\tfor (const resolver of resolversList) {\n\t\tresolved = await resolver.resolve({ ...request });\n\t\tif (resolved !== undefined) {\n\t\t\treturn resolved;\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n */\nexport class MultiUrlResolver implements IUrlResolver {\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tpublic static create(urlResolver: IUrlResolver | IUrlResolver[]) {\n\t\tif (Array.isArray(urlResolver)) {\n\t\t\tif (urlResolver.length === 1) {\n\t\t\t\treturn urlResolver[0];\n\t\t\t}\n\t\t\treturn new MultiUrlResolver(urlResolver);\n\t\t}\n\t\treturn urlResolver;\n\t}\n\n\tprivate constructor(private readonly urlResolvers: IUrlResolver[]) {}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tasync resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\treturn configurableUrlResolver(this.urlResolvers, request);\n\t}\n\n\t/**\n\t * @deprecated 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n\t */\n\tpublic async getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string> {\n\t\tthrow new Error(\"Not implmented\");\n\t}\n}\n"]}
|
package/lib/networkUtils.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare function logNetworkFailure(logger: ITelemetryLogger, event: ITele
|
|
|
12
12
|
* or machine connected to router that is not connected to internet)
|
|
13
13
|
* But there should be no false negatives.
|
|
14
14
|
* The only exception - Opera returns false when user enters "Work Offline" mode, regardless of actual connectivity.
|
|
15
|
+
*
|
|
16
|
+
* @deprecated - 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
15
17
|
*/
|
|
16
18
|
export declare function waitForConnectedState(minDelay: number): Promise<void>;
|
|
17
19
|
//# sourceMappingURL=networkUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkUtils.d.ts","sourceRoot":"","sources":["../src/networkUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,GAAG,QAmBX;AAED
|
|
1
|
+
{"version":3,"file":"networkUtils.d.ts","sourceRoot":"","sources":["../src/networkUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,GAAG,QAmBX;AAED;;;;;;;;;;GAUG;AAEH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrE"}
|
package/lib/networkUtils.js
CHANGED
|
@@ -28,6 +28,8 @@ export function logNetworkFailure(logger, event, error) {
|
|
|
28
28
|
* or machine connected to router that is not connected to internet)
|
|
29
29
|
* But there should be no false negatives.
|
|
30
30
|
* The only exception - Opera returns false when user enters "Work Offline" mode, regardless of actual connectivity.
|
|
31
|
+
*
|
|
32
|
+
* @deprecated - 2.0.0-internal.3.2.0 Not recommended for general purpose use.
|
|
31
33
|
*/
|
|
32
34
|
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
33
35
|
export function waitForConnectedState(minDelay) {
|
package/lib/networkUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkUtils.js","sourceRoot":"","sources":["../src/networkUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAChC,MAAwB,EACxB,KAA2B,EAC3B,KAAW;;IAEX,MAAM,QAAQ,qBAAQ,KAAK,CAAE,CAAC;IAE9B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM;QACd,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElF,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;QACxD,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAA,MAAA,GAAG,CAAC,UAAU,mCAAI,GAAG,CAAC,aAAa,mCAAI,GAAG,CAAC,gBAAgB,CAAC;QAC/E,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAC1D,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;SAC1C;KACD;IAED,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"networkUtils.js","sourceRoot":"","sources":["../src/networkUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAChC,MAAwB,EACxB,KAA2B,EAC3B,KAAW;;IAEX,MAAM,QAAQ,qBAAQ,KAAK,CAAE,CAAC;IAE9B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM;QACd,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElF,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;QACxD,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAA,MAAA,GAAG,CAAC,UAAU,mCAAI,GAAG,CAAC,aAAa,mCAAI,GAAG,CAAC,gBAAgB,CAAC;QAC/E,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAC1D,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;SAC1C;KACD;IAED,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;GAUG;AACH,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACrD,gGAAgG;IAChG,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,KAAK,CAAC;IAEnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,QAAQ,GAAe,OAAO,CAAC;QACnC,IAAI,KAAK,GAAG,QAAQ,CAAC;QACrB,IAAI,QAAQ,EAAE,KAAK,YAAY,CAAC,OAAO,EAAE;YACxC,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,MAAK,SAAS,EAAE;gBAC3C,QAAQ,GAAG,GAAG,EAAE;oBACf,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAChD,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACnD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;aACjD;SACD;QACD,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryErrorEvent, ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { isOnline, OnlineStatus, canRetryOnError } from \"./network\";\n\nexport function logNetworkFailure(\n\tlogger: ITelemetryLogger,\n\tevent: ITelemetryErrorEvent,\n\terror?: any,\n) {\n\tconst newEvent = { ...event };\n\n\tconst errorOnlineProp = error.online;\n\tnewEvent.online =\n\t\ttypeof errorOnlineProp === \"string\" ? errorOnlineProp : OnlineStatus[isOnline()];\n\n\tif (typeof navigator === \"object\" && navigator !== null) {\n\t\tconst nav = navigator as any;\n\t\tconst connection = nav.connection ?? nav.mozConnection ?? nav.webkitConnection;\n\t\tif (connection !== null && typeof connection === \"object\") {\n\t\t\tnewEvent.connectionType = connection.type;\n\t\t}\n\t}\n\n\t// non-retryable errors are fatal and should be logged as errors\n\tnewEvent.category = canRetryOnError(error) ? \"generic\" : \"error\";\n\tlogger.sendTelemetryEvent(newEvent, error);\n}\n\n/**\n * Wait for browser to get to connected state.\n * If connected, waits minimum of minDelay anyway (between network retries)\n * If disconnected, polls every 30 seconds anyway, to make sure we are not getting stuck because of wrong signal\n * Note that browsers will have false positives (like having Hyper-V adapter on machine,\n * or machine connected to router that is not connected to internet)\n * But there should be no false negatives.\n * The only exception - Opera returns false when user enters \"Work Offline\" mode, regardless of actual connectivity.\n *\n * @deprecated - 2.0.0-internal.3.2.0 Not recommended for general purpose use.\n */\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function waitForConnectedState(minDelay: number): Promise<void> {\n\t// Use this frequency to poll even when we are offline and able to setup online/offline listener\n\t// This is mostly safety net\n\tconst offlinePollFrequency = 30000;\n\n\treturn new Promise((resolve) => {\n\t\tlet listener: () => void = resolve;\n\t\tlet delay = minDelay;\n\t\tif (isOnline() === OnlineStatus.Offline) {\n\t\t\tif (window?.addEventListener !== undefined) {\n\t\t\t\tlistener = () => {\n\t\t\t\t\tresolve();\n\t\t\t\t\twindow.removeEventListener(\"online\", listener);\n\t\t\t\t};\n\t\t\t\twindow.addEventListener(\"online\", listener, false);\n\t\t\t\tdelay = Math.max(minDelay, offlinePollFrequency);\n\t\t\t}\n\t\t}\n\t\tsetTimeout(listener, delay);\n\t});\n}\n"]}
|
package/lib/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/driver-utils";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-internal.3.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.3.3.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/lib/packageVersion.js
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export const pkgName = "@fluidframework/driver-utils";
|
|
8
|
-
export const pkgVersion = "2.0.0-internal.3.
|
|
8
|
+
export const pkgVersion = "2.0.0-internal.3.3.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,8BAA8B,CAAC;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,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/driver-utils\";\nexport const pkgVersion = \"2.0.0-internal.3.
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,8BAA8B,CAAC;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,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/driver-utils\";\nexport const pkgVersion = \"2.0.0-internal.3.3.0\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallelRequests.d.ts","sourceRoot":"","sources":["../src/parallelRequests.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAWhG;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB,CAAC,CAAC;IAmB7B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAOhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IA5BlC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC,OAAO,KAAK,OAAO,GAElB;IACD,IAAW,QAAQ,YAElB;gBAGA,IAAI,EAAE,MAAM,EACJ,EAAE,EAAE,MAAM,GAAG,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,oBAAoB,KACvB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,EAChD,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI;IAOnD,MAAM;IAOA,GAAG,CAAC,WAAW,EAAE,MAAM;IAapC,OAAO,CAAC,IAAI;IAaZ,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,QAAQ;IAqChB,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,UAAU;YAQJ,cAAc;CA4J5B;AAED;;;GAGG;AACH,qBAAa,KAAK,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,IAAI,CAAS;IAEd,SAAS,CAAC,KAAK,EAAE,CAAC;IAIlB,SAAS,CAAC,KAAK,EAAE,GAAG;IAKpB,QAAQ;IAKf,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAWtC,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAU9C;
|
|
1
|
+
{"version":3,"file":"parallelRequests.d.ts","sourceRoot":"","sources":["../src/parallelRequests.ts"],"names":[],"mappings":"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"}
|
package/lib/parallelRequests.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { assert, Deferred, performance } from "@fluidframework/common-utils";
|
|
6
6
|
import { PerformanceEvent } from "@fluidframework/telemetry-utils";
|
|
7
7
|
import { getRetryDelayFromError, canRetryOnError, createGenericNetworkError } from "./network";
|
|
8
|
-
import {
|
|
8
|
+
import { logNetworkFailure } from "./networkUtils";
|
|
9
9
|
// For now, this package is versioned and released in unison with the specific drivers
|
|
10
10
|
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
11
11
|
const MaxFetchDelayInMs = 10000;
|
|
@@ -298,6 +298,19 @@ export class Queue {
|
|
|
298
298
|
return this.deferred.promise;
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
|
+
const waitForOnline = async () => {
|
|
302
|
+
var _a;
|
|
303
|
+
// Only wait if we have a strong signal that we're offline - otherwise assume we're online.
|
|
304
|
+
if (((_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.onLine) === false && globalThis.addEventListener !== undefined) {
|
|
305
|
+
return new Promise((resolve) => {
|
|
306
|
+
const resolveAndRemoveListener = () => {
|
|
307
|
+
resolve();
|
|
308
|
+
globalThis.removeEventListener("online", resolveAndRemoveListener);
|
|
309
|
+
};
|
|
310
|
+
globalThis.addEventListener("online", resolveAndRemoveListener);
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
};
|
|
301
314
|
/**
|
|
302
315
|
* Retrieve single batch of ops
|
|
303
316
|
* @param request - request index
|
|
@@ -314,25 +327,23 @@ export class Queue {
|
|
|
314
327
|
async function getSingleOpBatch(get, props, strongTo, logger, signal, scenarioName) {
|
|
315
328
|
let lastSuccessTime;
|
|
316
329
|
let retry = 0;
|
|
317
|
-
const deltas = [];
|
|
318
330
|
const nothing = { partial: false, cancel: true, payload: [] };
|
|
319
331
|
while ((signal === null || signal === void 0 ? void 0 : signal.aborted) !== true) {
|
|
320
332
|
retry++;
|
|
321
333
|
let delay = Math.min(MaxFetchDelayInMs, MissingFetchDelayInMs * Math.pow(2, retry));
|
|
322
334
|
const startTime = performance.now();
|
|
323
335
|
try {
|
|
324
|
-
// Issue async request for deltas
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
return { payload: deltas, cancel: false, partial: partialResult };
|
|
336
|
+
// Issue async request for deltas
|
|
337
|
+
const { messages, partialResult } = await get(Object.assign(Object.assign({}, props), { retry }));
|
|
338
|
+
// If we got messages back, return them. Return regardless of whether we got messages back if we didn't
|
|
339
|
+
// specify a "to", since we don't have an expectation of how many to receive.
|
|
340
|
+
if (messages.length !== 0 || !strongTo) {
|
|
341
|
+
return { payload: messages, cancel: false, partial: partialResult };
|
|
331
342
|
}
|
|
332
|
-
//
|
|
333
|
-
// Attempt to fetch more deltas. If we didn't receive any in the previous call we up our retry
|
|
334
|
-
// count since something prevented us from seeing those deltas
|
|
343
|
+
// Otherwise, the storage gave us back an empty set of ops but we were expecting a non-empty set.
|
|
335
344
|
if (lastSuccessTime === undefined) {
|
|
345
|
+
// Take timestamp of the first time server responded successfully, even though it wasn't with the ops we asked for.
|
|
346
|
+
// If we keep getting empty responses we'll eventually fail out below.
|
|
336
347
|
lastSuccessTime = performance.now();
|
|
337
348
|
}
|
|
338
349
|
else if (performance.now() - lastSuccessTime > 30000) {
|
|
@@ -348,7 +359,6 @@ async function getSingleOpBatch(get, props, strongTo, logger, signal, scenarioNa
|
|
|
348
359
|
}
|
|
349
360
|
catch (error) {
|
|
350
361
|
const canRetry = canRetryOnError(error);
|
|
351
|
-
lastSuccessTime = undefined;
|
|
352
362
|
const retryAfter = getRetryDelayFromError(error);
|
|
353
363
|
// This will log to error table only if the error is non-retryable
|
|
354
364
|
logNetworkFailure(logger, Object.assign(Object.assign({ eventName: "GetDeltas_Error" }, props), { retry, duration: performance.now() - startTime, retryAfter, reason: scenarioName }), error);
|
|
@@ -356,11 +366,20 @@ async function getSingleOpBatch(get, props, strongTo, logger, signal, scenarioNa
|
|
|
356
366
|
// It's game over scenario.
|
|
357
367
|
throw error;
|
|
358
368
|
}
|
|
359
|
-
if (retryAfter !== undefined
|
|
369
|
+
if (retryAfter !== undefined) {
|
|
370
|
+
// If the error told us to wait, then we will wait for that specific amount rather than the default.
|
|
360
371
|
delay = retryAfter;
|
|
361
372
|
}
|
|
362
373
|
}
|
|
363
|
-
|
|
374
|
+
// If we get here something has gone wrong - either got an unexpected empty set of messages back or a real error.
|
|
375
|
+
// Either way we will wait a little bit before retrying.
|
|
376
|
+
await new Promise((resolve) => {
|
|
377
|
+
setTimeout(resolve, delay);
|
|
378
|
+
});
|
|
379
|
+
// If we believe we're offline, we assume there's no point in trying until we at least think we're online.
|
|
380
|
+
// NOTE: This isn't strictly true for drivers that don't require network (e.g. local driver). Really this logic
|
|
381
|
+
// should probably live in the driver.
|
|
382
|
+
await waitForOnline();
|
|
364
383
|
}
|
|
365
384
|
return nothing;
|
|
366
385
|
}
|