@fluidframework/routerlicious-driver 2.0.0-dev.4.4.0.162253 → 2.0.0-dev.5.2.0.169897
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/CHANGELOG.md +8 -0
- package/dist/deltaStorageService.d.ts +5 -5
- package/dist/deltaStorageService.d.ts.map +1 -1
- package/dist/deltaStorageService.js +39 -27
- package/dist/deltaStorageService.js.map +1 -1
- package/dist/documentDeltaConnection.d.ts +2 -2
- package/dist/documentDeltaConnection.d.ts.map +1 -1
- package/dist/documentDeltaConnection.js +2 -4
- package/dist/documentDeltaConnection.js.map +1 -1
- package/dist/documentService.d.ts +7 -4
- package/dist/documentService.d.ts.map +1 -1
- package/dist/documentService.js +12 -7
- package/dist/documentService.js.map +1 -1
- package/dist/documentServiceFactory.d.ts.map +1 -1
- package/dist/documentServiceFactory.js +10 -5
- package/dist/documentServiceFactory.js.map +1 -1
- package/dist/documentStorageService.d.ts +2 -2
- package/dist/documentStorageService.d.ts.map +1 -1
- package/dist/documentStorageService.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/policies.d.ts +6 -0
- package/dist/policies.d.ts.map +1 -1
- package/dist/policies.js.map +1 -1
- package/dist/restWrapper.d.ts +9 -5
- package/dist/restWrapper.d.ts.map +1 -1
- package/dist/restWrapper.js +42 -31
- package/dist/restWrapper.js.map +1 -1
- package/dist/retriableGitManager.d.ts +2 -2
- package/dist/retriableGitManager.d.ts.map +1 -1
- package/dist/retriableGitManager.js.map +1 -1
- package/dist/shreddedSummaryDocumentStorageService.d.ts +3 -3
- package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
- package/dist/shreddedSummaryDocumentStorageService.js +1 -1
- package/dist/shreddedSummaryDocumentStorageService.js.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/urlUtils.d.ts +2 -2
- package/dist/urlUtils.d.ts.map +1 -1
- package/dist/urlUtils.js.map +1 -1
- package/dist/wholeSummaryDocumentStorageService.d.ts +3 -3
- package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -1
- package/dist/wholeSummaryDocumentStorageService.js +2 -2
- package/dist/wholeSummaryDocumentStorageService.js.map +1 -1
- package/lib/deltaStorageService.d.ts +5 -5
- package/lib/deltaStorageService.d.ts.map +1 -1
- package/lib/deltaStorageService.js +42 -30
- package/lib/deltaStorageService.js.map +1 -1
- package/lib/documentDeltaConnection.d.ts +2 -2
- package/lib/documentDeltaConnection.d.ts.map +1 -1
- package/lib/documentDeltaConnection.js +2 -4
- package/lib/documentDeltaConnection.js.map +1 -1
- package/lib/documentService.d.ts +7 -4
- package/lib/documentService.d.ts.map +1 -1
- package/lib/documentService.js +13 -8
- package/lib/documentService.js.map +1 -1
- package/lib/documentServiceFactory.d.ts.map +1 -1
- package/lib/documentServiceFactory.js +12 -7
- package/lib/documentServiceFactory.js.map +1 -1
- package/lib/documentStorageService.d.ts +2 -2
- package/lib/documentStorageService.d.ts.map +1 -1
- package/lib/documentStorageService.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/policies.d.ts +6 -0
- package/lib/policies.d.ts.map +1 -1
- package/lib/policies.js.map +1 -1
- package/lib/restWrapper.d.ts +9 -5
- package/lib/restWrapper.d.ts.map +1 -1
- package/lib/restWrapper.js +39 -30
- package/lib/restWrapper.js.map +1 -1
- package/lib/retriableGitManager.d.ts +2 -2
- package/lib/retriableGitManager.d.ts.map +1 -1
- package/lib/retriableGitManager.js.map +1 -1
- package/lib/shreddedSummaryDocumentStorageService.d.ts +3 -3
- package/lib/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
- package/lib/shreddedSummaryDocumentStorageService.js +1 -1
- package/lib/shreddedSummaryDocumentStorageService.js.map +1 -1
- package/lib/urlUtils.d.ts +2 -2
- package/lib/urlUtils.d.ts.map +1 -1
- package/lib/urlUtils.js.map +1 -1
- package/lib/wholeSummaryDocumentStorageService.d.ts +3 -3
- package/lib/wholeSummaryDocumentStorageService.d.ts.map +1 -1
- package/lib/wholeSummaryDocumentStorageService.js +2 -2
- package/lib/wholeSummaryDocumentStorageService.js.map +1 -1
- package/package.json +19 -17
- package/src/deltaStorageService.ts +70 -40
- package/src/documentDeltaConnection.ts +4 -5
- package/src/documentService.ts +29 -22
- package/src/documentServiceFactory.ts +46 -12
- package/src/documentStorageService.ts +3 -3
- package/src/packageVersion.ts +1 -1
- package/src/policies.ts +6 -0
- package/src/restWrapper.ts +82 -55
- package/src/retriableGitManager.ts +2 -2
- package/src/shreddedSummaryDocumentStorageService.ts +2 -3
- package/src/urlUtils.ts +4 -4
- package/src/wholeSummaryDocumentStorageService.ts +3 -3
package/src/policies.ts
CHANGED
|
@@ -48,4 +48,10 @@ export interface IRouterliciousDriverPolicies {
|
|
|
48
48
|
* Default: true
|
|
49
49
|
*/
|
|
50
50
|
enableInternalSummaryCaching: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Enable downgrading socket connection to long-polling
|
|
53
|
+
* when websocket connection cannot be established.
|
|
54
|
+
* Default: true
|
|
55
|
+
*/
|
|
56
|
+
enableLongPollingDowngrade: boolean;
|
|
51
57
|
}
|
package/src/restWrapper.ts
CHANGED
|
@@ -3,14 +3,18 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { ITelemetryProperties } from "@fluidframework/common-definitions";
|
|
7
|
+
import {
|
|
8
|
+
ITelemetryLoggerExt,
|
|
9
|
+
PerformanceEvent,
|
|
10
|
+
TelemetryLogger,
|
|
11
|
+
} from "@fluidframework/telemetry-utils";
|
|
7
12
|
import { assert, fromUtf8ToBase64, performance } from "@fluidframework/common-utils";
|
|
8
13
|
import { RateLimiter } from "@fluidframework/driver-utils";
|
|
9
14
|
import {
|
|
10
15
|
getAuthorizationTokenFromCredentials,
|
|
11
16
|
RestLessClient,
|
|
12
17
|
} from "@fluidframework/server-services-client";
|
|
13
|
-
import { PerformanceEvent, TelemetryLogger } from "@fluidframework/telemetry-utils";
|
|
14
18
|
import fetch from "cross-fetch";
|
|
15
19
|
import type { AxiosRequestConfig, AxiosRequestHeaders } from "axios";
|
|
16
20
|
import safeStringify from "json-stringify-safe";
|
|
@@ -21,7 +25,7 @@ import { pkgVersion as driverVersion } from "./packageVersion";
|
|
|
21
25
|
import { QueryStringType, RestWrapper } from "./restWrapperBase";
|
|
22
26
|
|
|
23
27
|
type AuthorizationHeaderGetter = (token: ITokenResponse) => string;
|
|
24
|
-
type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;
|
|
28
|
+
export type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;
|
|
25
29
|
|
|
26
30
|
const axiosRequestConfigToFetchRequestConfig = (
|
|
27
31
|
requestConfig: AxiosRequestConfig,
|
|
@@ -102,12 +106,13 @@ export class RouterliciousRestWrapper extends RestWrapper {
|
|
|
102
106
|
private token: ITokenResponse | undefined;
|
|
103
107
|
|
|
104
108
|
constructor(
|
|
105
|
-
logger:
|
|
109
|
+
logger: ITelemetryLoggerExt,
|
|
106
110
|
private readonly rateLimiter: RateLimiter,
|
|
107
111
|
private readonly fetchRefreshedToken: TokenFetcher,
|
|
108
112
|
private readonly getAuthorizationHeader: AuthorizationHeaderGetter,
|
|
109
113
|
private readonly useRestLess: boolean,
|
|
110
114
|
baseurl?: string,
|
|
115
|
+
private tokenP?: Promise<ITokenResponse>,
|
|
111
116
|
defaultQueryString: QueryStringType = {},
|
|
112
117
|
) {
|
|
113
118
|
super(baseurl, defaultQueryString);
|
|
@@ -221,8 +226,9 @@ export class RouterliciousRestWrapper extends RestWrapper {
|
|
|
221
226
|
if (this.token !== undefined) {
|
|
222
227
|
return this.token;
|
|
223
228
|
}
|
|
224
|
-
const token = await this.fetchRefreshedToken();
|
|
229
|
+
const token = await (this.tokenP ?? this.fetchRefreshedToken());
|
|
225
230
|
this.setToken(token);
|
|
231
|
+
this.tokenP = undefined;
|
|
226
232
|
return token;
|
|
227
233
|
}
|
|
228
234
|
|
|
@@ -233,12 +239,13 @@ export class RouterliciousRestWrapper extends RestWrapper {
|
|
|
233
239
|
|
|
234
240
|
export class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {
|
|
235
241
|
private constructor(
|
|
236
|
-
logger:
|
|
242
|
+
logger: ITelemetryLoggerExt,
|
|
237
243
|
rateLimiter: RateLimiter,
|
|
238
244
|
fetchToken: TokenFetcher,
|
|
239
245
|
getAuthorizationHeader: AuthorizationHeaderGetter,
|
|
240
246
|
useRestLess: boolean,
|
|
241
247
|
baseurl?: string,
|
|
248
|
+
initialTokenP?: Promise<ITokenResponse>,
|
|
242
249
|
defaultQueryString: QueryStringType = {},
|
|
243
250
|
) {
|
|
244
251
|
super(
|
|
@@ -248,43 +255,24 @@ export class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {
|
|
|
248
255
|
getAuthorizationHeader,
|
|
249
256
|
useRestLess,
|
|
250
257
|
baseurl,
|
|
258
|
+
initialTokenP,
|
|
251
259
|
defaultQueryString,
|
|
252
260
|
);
|
|
253
261
|
}
|
|
254
262
|
|
|
255
263
|
public static async load(
|
|
256
264
|
tenantId: string,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
logger: ITelemetryLogger,
|
|
265
|
+
tokenFetcher: TokenFetcher,
|
|
266
|
+
logger: ITelemetryLoggerExt,
|
|
260
267
|
rateLimiter: RateLimiter,
|
|
261
268
|
useRestLess: boolean,
|
|
262
269
|
baseurl?: string,
|
|
270
|
+
initialTokenP?: Promise<ITokenResponse>,
|
|
263
271
|
): Promise<RouterliciousStorageRestWrapper> {
|
|
264
272
|
const defaultQueryString = {
|
|
265
273
|
token: `${fromUtf8ToBase64(tenantId)}`,
|
|
266
274
|
};
|
|
267
275
|
|
|
268
|
-
const fetchStorageToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {
|
|
269
|
-
return PerformanceEvent.timedExecAsync(
|
|
270
|
-
logger,
|
|
271
|
-
{
|
|
272
|
-
eventName: "FetchStorageToken",
|
|
273
|
-
docId: documentId,
|
|
274
|
-
},
|
|
275
|
-
async () => {
|
|
276
|
-
// Craft credentials using tenant id and token
|
|
277
|
-
const storageToken = await tokenProvider.fetchStorageToken(
|
|
278
|
-
tenantId,
|
|
279
|
-
documentId,
|
|
280
|
-
refreshToken,
|
|
281
|
-
);
|
|
282
|
-
|
|
283
|
-
return storageToken;
|
|
284
|
-
},
|
|
285
|
-
);
|
|
286
|
-
};
|
|
287
|
-
|
|
288
276
|
const getAuthorizationHeader: AuthorizationHeaderGetter = (
|
|
289
277
|
token: ITokenResponse,
|
|
290
278
|
): string => {
|
|
@@ -298,10 +286,11 @@ export class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {
|
|
|
298
286
|
const restWrapper = new RouterliciousStorageRestWrapper(
|
|
299
287
|
logger,
|
|
300
288
|
rateLimiter,
|
|
301
|
-
|
|
289
|
+
tokenFetcher,
|
|
302
290
|
getAuthorizationHeader,
|
|
303
291
|
useRestLess,
|
|
304
292
|
baseurl,
|
|
293
|
+
initialTokenP,
|
|
305
294
|
defaultQueryString,
|
|
306
295
|
);
|
|
307
296
|
|
|
@@ -311,12 +300,13 @@ export class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {
|
|
|
311
300
|
|
|
312
301
|
export class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {
|
|
313
302
|
private constructor(
|
|
314
|
-
logger:
|
|
303
|
+
logger: ITelemetryLoggerExt,
|
|
315
304
|
rateLimiter: RateLimiter,
|
|
316
305
|
fetchToken: TokenFetcher,
|
|
317
306
|
getAuthorizationHeader: AuthorizationHeaderGetter,
|
|
318
307
|
useRestLess: boolean,
|
|
319
308
|
baseurl?: string,
|
|
309
|
+
initialTokenP?: Promise<ITokenResponse>,
|
|
320
310
|
defaultQueryString: QueryStringType = {},
|
|
321
311
|
) {
|
|
322
312
|
super(
|
|
@@ -326,18 +316,18 @@ export class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {
|
|
|
326
316
|
getAuthorizationHeader,
|
|
327
317
|
useRestLess,
|
|
328
318
|
baseurl,
|
|
319
|
+
initialTokenP,
|
|
329
320
|
defaultQueryString,
|
|
330
321
|
);
|
|
331
322
|
}
|
|
332
323
|
|
|
333
324
|
public static async load(
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
tokenProvider: ITokenProvider,
|
|
337
|
-
logger: ITelemetryLogger,
|
|
325
|
+
tokenFetcher: TokenFetcher,
|
|
326
|
+
logger: ITelemetryLoggerExt,
|
|
338
327
|
rateLimiter: RateLimiter,
|
|
339
328
|
useRestLess: boolean,
|
|
340
329
|
baseurl?: string,
|
|
330
|
+
initialTokenP?: Promise<ITokenResponse>,
|
|
341
331
|
): Promise<RouterliciousOrdererRestWrapper> {
|
|
342
332
|
const getAuthorizationHeader: AuthorizationHeaderGetter = (
|
|
343
333
|
token: ITokenResponse,
|
|
@@ -345,34 +335,71 @@ export class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {
|
|
|
345
335
|
return `Basic ${token.jwt}`;
|
|
346
336
|
};
|
|
347
337
|
|
|
348
|
-
const fetchOrdererToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {
|
|
349
|
-
return PerformanceEvent.timedExecAsync(
|
|
350
|
-
logger,
|
|
351
|
-
{
|
|
352
|
-
eventName: "FetchOrdererToken",
|
|
353
|
-
docId: documentId,
|
|
354
|
-
},
|
|
355
|
-
async () => {
|
|
356
|
-
const ordererToken = await tokenProvider.fetchOrdererToken(
|
|
357
|
-
tenantId,
|
|
358
|
-
documentId,
|
|
359
|
-
refreshToken,
|
|
360
|
-
);
|
|
361
|
-
|
|
362
|
-
return ordererToken;
|
|
363
|
-
},
|
|
364
|
-
);
|
|
365
|
-
};
|
|
366
|
-
|
|
367
338
|
const restWrapper = new RouterliciousOrdererRestWrapper(
|
|
368
339
|
logger,
|
|
369
340
|
rateLimiter,
|
|
370
|
-
|
|
341
|
+
tokenFetcher,
|
|
371
342
|
getAuthorizationHeader,
|
|
372
343
|
useRestLess,
|
|
373
344
|
baseurl,
|
|
345
|
+
initialTokenP,
|
|
374
346
|
);
|
|
375
347
|
|
|
376
348
|
return restWrapper;
|
|
377
349
|
}
|
|
378
350
|
}
|
|
351
|
+
|
|
352
|
+
export function toInstrumentedR11sOrdererTokenFetcher(
|
|
353
|
+
tenantId: string,
|
|
354
|
+
documentId: string | undefined,
|
|
355
|
+
tokenProvider: ITokenProvider,
|
|
356
|
+
logger: ITelemetryLoggerExt,
|
|
357
|
+
): TokenFetcher {
|
|
358
|
+
const fetchOrdererToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {
|
|
359
|
+
return PerformanceEvent.timedExecAsync(
|
|
360
|
+
logger,
|
|
361
|
+
{
|
|
362
|
+
eventName: "FetchOrdererToken",
|
|
363
|
+
docId: documentId,
|
|
364
|
+
},
|
|
365
|
+
async () => {
|
|
366
|
+
const ordererToken = await tokenProvider.fetchOrdererToken(
|
|
367
|
+
tenantId,
|
|
368
|
+
documentId,
|
|
369
|
+
refreshToken,
|
|
370
|
+
);
|
|
371
|
+
|
|
372
|
+
return ordererToken;
|
|
373
|
+
},
|
|
374
|
+
);
|
|
375
|
+
};
|
|
376
|
+
return fetchOrdererToken;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export function toInstrumentedR11sStorageTokenFetcher(
|
|
380
|
+
tenantId: string,
|
|
381
|
+
documentId: string,
|
|
382
|
+
tokenProvider: ITokenProvider,
|
|
383
|
+
logger: ITelemetryLoggerExt,
|
|
384
|
+
): TokenFetcher {
|
|
385
|
+
const fetchStorageToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {
|
|
386
|
+
return PerformanceEvent.timedExecAsync(
|
|
387
|
+
logger,
|
|
388
|
+
{
|
|
389
|
+
eventName: "FetchStorageToken",
|
|
390
|
+
docId: documentId,
|
|
391
|
+
},
|
|
392
|
+
async () => {
|
|
393
|
+
// Craft credentials using tenant id and token
|
|
394
|
+
const storageToken = await tokenProvider.fetchStorageToken(
|
|
395
|
+
tenantId,
|
|
396
|
+
documentId,
|
|
397
|
+
refreshToken,
|
|
398
|
+
);
|
|
399
|
+
|
|
400
|
+
return storageToken;
|
|
401
|
+
},
|
|
402
|
+
);
|
|
403
|
+
};
|
|
404
|
+
return fetchStorageToken;
|
|
405
|
+
}
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
IWriteSummaryResponse,
|
|
11
11
|
} from "@fluidframework/server-services-client";
|
|
12
12
|
import { runWithRetry } from "@fluidframework/driver-utils";
|
|
13
|
-
import {
|
|
13
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
14
14
|
import { IGitManager } from "./storageContracts";
|
|
15
15
|
import { IR11sResponse } from "./restWrapper";
|
|
16
16
|
|
|
17
17
|
export class RetriableGitManager implements IGitManager {
|
|
18
18
|
constructor(
|
|
19
19
|
private readonly internalGitManager: IGitManager,
|
|
20
|
-
private readonly logger:
|
|
20
|
+
private readonly logger: ITelemetryLoggerExt,
|
|
21
21
|
) {}
|
|
22
22
|
|
|
23
23
|
public async getCommits(
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { ITelemetryLoggerExt, PerformanceEvent } from "@fluidframework/telemetry-utils";
|
|
7
7
|
import { stringToBuffer, Uint8ArrayToString } from "@fluidframework/common-utils";
|
|
8
8
|
import {
|
|
9
9
|
IDocumentStorageService,
|
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
ISummaryTree,
|
|
19
19
|
IVersion,
|
|
20
20
|
} from "@fluidframework/protocol-definitions";
|
|
21
|
-
import { PerformanceEvent } from "@fluidframework/telemetry-utils";
|
|
22
21
|
import { IRouterliciousDriverPolicies } from "./policies";
|
|
23
22
|
import { ICache, InMemoryCache } from "./cache";
|
|
24
23
|
import { RetriableGitManager } from "./retriableGitManager";
|
|
@@ -57,7 +56,7 @@ export class ShreddedSummaryDocumentStorageService implements IDocumentStorageSe
|
|
|
57
56
|
constructor(
|
|
58
57
|
protected readonly id: string,
|
|
59
58
|
protected readonly manager: GitManager,
|
|
60
|
-
protected readonly logger:
|
|
59
|
+
protected readonly logger: ITelemetryLoggerExt,
|
|
61
60
|
public readonly policies: IDocumentStorageServicePolicies,
|
|
62
61
|
driverPolicies?: IRouterliciousDriverPolicies,
|
|
63
62
|
blobCache?: ICache<ArrayBufferLike>,
|
package/src/urlUtils.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { IResolvedUrl } from "@fluidframework/driver-definitions";
|
|
7
7
|
import URLParse from "url-parse";
|
|
8
8
|
import { ISession } from "@fluidframework/server-services-client";
|
|
9
9
|
|
|
@@ -21,9 +21,9 @@ export const replaceDocumentIdInPath = (urlPath: string, documentId: string): st
|
|
|
21
21
|
urlPath.split("/").slice(0, -1).concat([documentId]).join("/");
|
|
22
22
|
|
|
23
23
|
export const getDiscoveredFluidResolvedUrl = (
|
|
24
|
-
resolvedUrl:
|
|
24
|
+
resolvedUrl: IResolvedUrl,
|
|
25
25
|
session: ISession,
|
|
26
|
-
):
|
|
26
|
+
): IResolvedUrl => {
|
|
27
27
|
const discoveredOrdererUrl = new URLParse(session.ordererUrl);
|
|
28
28
|
const deltaStorageUrl = new URLParse(resolvedUrl.endpoints.deltaStorageUrl);
|
|
29
29
|
deltaStorageUrl.set("host", discoveredOrdererUrl.host);
|
|
@@ -33,7 +33,7 @@ export const getDiscoveredFluidResolvedUrl = (
|
|
|
33
33
|
storageUrl.set("host", discoveredStorageUrl.host);
|
|
34
34
|
|
|
35
35
|
const parsedUrl = parseFluidUrl(resolvedUrl.url);
|
|
36
|
-
const discoveredResolvedUrl:
|
|
36
|
+
const discoveredResolvedUrl: IResolvedUrl = {
|
|
37
37
|
endpoints: {
|
|
38
38
|
deltaStorageUrl: deltaStorageUrl.toString(),
|
|
39
39
|
ordererUrl: session.ordererUrl,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { ITelemetryLoggerExt, PerformanceEvent } from "@fluidframework/telemetry-utils";
|
|
7
7
|
import {
|
|
8
8
|
assert,
|
|
9
9
|
performance,
|
|
@@ -24,7 +24,6 @@ import {
|
|
|
24
24
|
IVersion,
|
|
25
25
|
} from "@fluidframework/protocol-definitions";
|
|
26
26
|
import { IWholeFlatSummary } from "@fluidframework/server-services-client";
|
|
27
|
-
import { PerformanceEvent } from "@fluidframework/telemetry-utils";
|
|
28
27
|
import { ICache, InMemoryCache } from "./cache";
|
|
29
28
|
import { IRouterliciousDriverPolicies } from "./policies";
|
|
30
29
|
import {
|
|
@@ -56,7 +55,7 @@ export class WholeSummaryDocumentStorageService implements IDocumentStorageServi
|
|
|
56
55
|
constructor(
|
|
57
56
|
protected readonly id: string,
|
|
58
57
|
protected readonly manager: GitManager,
|
|
59
|
-
protected readonly logger:
|
|
58
|
+
protected readonly logger: ITelemetryLoggerExt,
|
|
60
59
|
public readonly policies: IDocumentStorageServicePolicies,
|
|
61
60
|
private readonly driverPolicies?: IRouterliciousDriverPolicies,
|
|
62
61
|
private readonly blobCache: ICache<ArrayBufferLike> = new InMemoryCache(),
|
|
@@ -317,6 +316,7 @@ export class WholeSummaryDocumentStorageService implements IDocumentStorageServi
|
|
|
317
316
|
trees,
|
|
318
317
|
blobs: numBlobs,
|
|
319
318
|
encodedBlobsSize,
|
|
319
|
+
sequenceNumber: snapshot.sequenceNumber,
|
|
320
320
|
...response.propsToLog,
|
|
321
321
|
snapshotConversionTime,
|
|
322
322
|
...getW3CData(response.requestUrl, "xmlhttprequest"),
|