@fluidframework/routerlicious-driver 0.51.3 → 0.53.0-46105
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/createNewUtils.js +4 -3
- package/dist/createNewUtils.js.map +1 -1
- package/dist/deltaStorageService.d.ts +1 -1
- package/dist/deltaStorageService.d.ts.map +1 -1
- package/dist/deltaStorageService.js +2 -2
- package/dist/deltaStorageService.js.map +1 -1
- package/dist/documentService.d.ts.map +1 -1
- package/dist/documentService.js +4 -0
- package/dist/documentService.js.map +1 -1
- package/dist/documentStorageService.d.ts.map +1 -1
- package/dist/documentStorageService.js +4 -261
- package/dist/documentStorageService.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shreddedSummaryDocumentStorageService.d.ts +36 -0
- package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -0
- package/dist/shreddedSummaryDocumentStorageService.js +143 -0
- package/dist/shreddedSummaryDocumentStorageService.js.map +1 -0
- package/dist/wholeSummaryDocumentStorageService.d.ts +31 -0
- package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -0
- package/dist/wholeSummaryDocumentStorageService.js +154 -0
- package/dist/wholeSummaryDocumentStorageService.js.map +1 -0
- package/lib/createNewUtils.js +4 -3
- package/lib/createNewUtils.js.map +1 -1
- package/lib/deltaStorageService.d.ts +1 -1
- package/lib/deltaStorageService.d.ts.map +1 -1
- package/lib/deltaStorageService.js +2 -2
- package/lib/deltaStorageService.js.map +1 -1
- package/lib/documentService.d.ts.map +1 -1
- package/lib/documentService.js +4 -0
- package/lib/documentService.js.map +1 -1
- package/lib/documentStorageService.d.ts.map +1 -1
- package/lib/documentStorageService.js +3 -260
- package/lib/documentStorageService.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shreddedSummaryDocumentStorageService.d.ts +36 -0
- package/lib/shreddedSummaryDocumentStorageService.d.ts.map +1 -0
- package/lib/shreddedSummaryDocumentStorageService.js +139 -0
- package/lib/shreddedSummaryDocumentStorageService.js.map +1 -0
- package/lib/wholeSummaryDocumentStorageService.d.ts +31 -0
- package/lib/wholeSummaryDocumentStorageService.d.ts.map +1 -0
- package/lib/wholeSummaryDocumentStorageService.js +150 -0
- package/lib/wholeSummaryDocumentStorageService.js.map +1 -0
- package/package.json +11 -11
- package/src/deltaStorageService.ts +2 -0
- package/src/documentService.ts +5 -0
- package/src/documentStorageService.ts +20 -374
- package/src/packageVersion.ts +1 -1
- package/src/shreddedSummaryDocumentStorageService.ts +213 -0
- package/src/wholeSummaryDocumentStorageService.ts +225 -0
package/dist/createNewUtils.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.convertSummaryToCreateNewSummary = void 0;
|
|
8
8
|
const common_utils_1 = require("@fluidframework/common-utils");
|
|
9
|
+
const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
|
|
9
10
|
/**
|
|
10
11
|
* Utility api to convert ISummaryTree to a summary tree where blob contents are only utf8 strings.
|
|
11
12
|
* @param summary - Summary supplied by the runtime to upload.
|
|
@@ -16,16 +17,16 @@ function convertSummaryToCreateNewSummary(summary) {
|
|
|
16
17
|
for (const key of keys) {
|
|
17
18
|
const summaryObject = summary.tree[key];
|
|
18
19
|
switch (summaryObject.type) {
|
|
19
|
-
case
|
|
20
|
+
case protocol_definitions_1.SummaryType.Tree: {
|
|
20
21
|
summary.tree[key] = convertSummaryToCreateNewSummary(summaryObject);
|
|
21
22
|
break;
|
|
22
23
|
}
|
|
23
|
-
case
|
|
24
|
+
case protocol_definitions_1.SummaryType.Blob: {
|
|
24
25
|
summaryObject.content = typeof summaryObject.content === "string" ?
|
|
25
26
|
summaryObject.content : common_utils_1.Uint8ArrayToString(summaryObject.content, "utf8");
|
|
26
27
|
break;
|
|
27
28
|
}
|
|
28
|
-
case
|
|
29
|
+
case protocol_definitions_1.SummaryType.Handle: {
|
|
29
30
|
throw new Error("No handle should be present for first summary!!");
|
|
30
31
|
}
|
|
31
32
|
default: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNewUtils.js","sourceRoot":"","sources":["../src/createNewUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAAkE;
|
|
1
|
+
{"version":3,"file":"createNewUtils.js","sourceRoot":"","sources":["../src/createNewUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAAkE;AAClE,+EAAiF;AAEjF;;;;GAIG;AACH,SAAgB,gCAAgC,CAAC,OAAqB;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACpB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExC,QAAQ,aAAa,CAAC,IAAI,EAAE;YACxB,KAAK,kCAAW,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gCAAgC,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM;aACT;YACD,KAAK,kCAAW,CAAC,IAAI,CAAC,CAAC;gBACnB,aAAa,CAAC,OAAO,GAAG,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;oBAC/D,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC9E,MAAM;aACT;YACD,KAAK,kCAAW,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;aACtE;YACD,OAAO,CAAC,CAAC;gBACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;aAC9D;SACJ;KACJ;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAzBD,4EAyBC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Uint8ArrayToString } from \"@fluidframework/common-utils\";\nimport { ISummaryTree, SummaryType } from \"@fluidframework/protocol-definitions\";\n\n/**\n * Utility api to convert ISummaryTree to a summary tree where blob contents are only utf8 strings.\n * @param summary - Summary supplied by the runtime to upload.\n * @returns - Modified summary tree where the blob contents could be utf8 string only.\n */\nexport function convertSummaryToCreateNewSummary(summary: ISummaryTree): ISummaryTree {\n const keys = Object.keys(summary.tree);\n for (const key of keys) {\n const summaryObject = summary.tree[key];\n\n switch (summaryObject.type) {\n case SummaryType.Tree: {\n summary.tree[key] = convertSummaryToCreateNewSummary(summaryObject);\n break;\n }\n case SummaryType.Blob: {\n summaryObject.content = typeof summaryObject.content === \"string\" ?\n summaryObject.content : Uint8ArrayToString(summaryObject.content, \"utf8\");\n break;\n }\n case SummaryType.Handle: {\n throw new Error(\"No handle should be present for first summary!!\");\n }\n default: {\n throw new Error(`Unknown tree type ${summaryObject.type}`);\n }\n }\n }\n\n return summary;\n}\n"]}
|
|
@@ -17,7 +17,7 @@ export declare class DocumentDeltaStorageService implements IDocumentDeltaStorag
|
|
|
17
17
|
private readonly documentStorageService;
|
|
18
18
|
constructor(tenantId: string, id: string, storageService: IDeltaStorageService, documentStorageService: DocumentStorageService);
|
|
19
19
|
private logtailSha;
|
|
20
|
-
fetchMessages(from: number, to: number | undefined, abortSignal?: AbortSignal, cachedOnly?: boolean): IStream<ISequencedDocumentMessage[]>;
|
|
20
|
+
fetchMessages(from: number, to: number | undefined, abortSignal?: AbortSignal, cachedOnly?: boolean, fetchReason?: string): IStream<ISequencedDocumentMessage[]>;
|
|
21
21
|
private getCore;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deltaStorageService.d.ts","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,OAAO,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAExE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAHtB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,oBAAoB,EACpC,sBAAsB,EAAE,sBAAsB;IAGnE,OAAO,CAAC,UAAU,CAA8D;IAEhF,aAAa,CAAC,IAAI,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,yBAAyB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"deltaStorageService.d.ts","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,OAAO,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAExE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAHtB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,oBAAoB,EACpC,sBAAsB,EAAE,sBAAsB;IAGnE,OAAO,CAAC,UAAU,CAA8D;IAEhF,aAAa,CAAC,IAAI,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,yBAAyB,EAAE,CAAC;YAmBzB,OAAO;CAgBxB;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAExD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,gBAAgB;IAGhC,GAAG,CACZ,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EAAE,YAAY;IAC1B,EAAE,EAAE,MAAM,GACP,OAAO,CAAC,kBAAkB,CAAC;CAwBrC"}
|
|
@@ -20,7 +20,7 @@ class DocumentDeltaStorageService {
|
|
|
20
20
|
this.documentStorageService = documentStorageService;
|
|
21
21
|
this.logtailSha = this.documentStorageService.logTailSha;
|
|
22
22
|
}
|
|
23
|
-
fetchMessages(from, to, abortSignal, cachedOnly) {
|
|
23
|
+
fetchMessages(from, to, abortSignal, cachedOnly, fetchReason) {
|
|
24
24
|
if (cachedOnly) {
|
|
25
25
|
return driver_utils_1.emptyMessageStream;
|
|
26
26
|
}
|
|
@@ -30,7 +30,7 @@ class DocumentDeltaStorageService {
|
|
|
30
30
|
1, // concurrency
|
|
31
31
|
from, // inclusive
|
|
32
32
|
to, // exclusive
|
|
33
|
-
MaxBatchDeltas, new common_utils_1.TelemetryNullLogger(), abortSignal);
|
|
33
|
+
MaxBatchDeltas, new common_utils_1.TelemetryNullLogger(), abortSignal, fetchReason);
|
|
34
34
|
}
|
|
35
35
|
async getCore(from, to) {
|
|
36
36
|
const opsFromLogTail = this.logtailSha ? await driver_utils_1.readAndParse(this.documentStorageService, this.logtailSha) : [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deltaStorageService.js","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,+DAA4F;AAC5F,+DAAmE;AAEnE,qEAAmE;AAInE,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,+CAA+C;AAE5E;;GAEG;AACH,MAAa,2BAA2B;IACpC,YACqB,QAAgB,EAChB,EAAU,EACV,cAAoC,EACpC,sBAA8C;QAH9C,aAAQ,GAAR,QAAQ,CAAQ;QAChB,OAAE,GAAF,EAAE,CAAQ;QACV,mBAAc,GAAd,cAAc,CAAsB;QACpC,2BAAsB,GAAtB,sBAAsB,CAAwB;QAG3D,eAAU,GAAuB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;IAFhF,CAAC;IAID,aAAa,CAAC,IAAY,EACtB,EAAsB,EACtB,WAAyB,EACzB,UAAoB;QAGpB,IAAI,UAAU,EAAE;YACZ,OAAO,iCAAkB,CAAC;SAC7B;QACD,OAAO,yBAAU,CACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,uEAAuE;QACvE,0DAA0D;QAC1D,CAAC,EAAE,cAAc;QACjB,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,YAAY;QAChB,cAAc,EACd,IAAI,kCAAmB,EAAE,EACzB,WAAW,CACd,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,EAAU;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,2BAAY,CACtD,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAC1C,EAAE,CAAC,cAAc,IAAI,IAAI,CAC5B,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5C;SACJ;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"deltaStorageService.js","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,+DAA4F;AAC5F,+DAAmE;AAEnE,qEAAmE;AAInE,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,+CAA+C;AAE5E;;GAEG;AACH,MAAa,2BAA2B;IACpC,YACqB,QAAgB,EAChB,EAAU,EACV,cAAoC,EACpC,sBAA8C;QAH9C,aAAQ,GAAR,QAAQ,CAAQ;QAChB,OAAE,GAAF,EAAE,CAAQ;QACV,mBAAc,GAAd,cAAc,CAAsB;QACpC,2BAAsB,GAAtB,sBAAsB,CAAwB;QAG3D,eAAU,GAAuB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;IAFhF,CAAC;IAID,aAAa,CAAC,IAAY,EACtB,EAAsB,EACtB,WAAyB,EACzB,UAAoB,EACpB,WAAoB;QAGpB,IAAI,UAAU,EAAE;YACZ,OAAO,iCAAkB,CAAC;SAC7B;QACD,OAAO,yBAAU,CACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,uEAAuE;QACvE,0DAA0D;QAC1D,CAAC,EAAE,cAAc;QACjB,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,YAAY;QAChB,cAAc,EACd,IAAI,kCAAmB,EAAE,EACzB,WAAW,EACX,WAAW,CACd,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,EAAU;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,2BAAY,CACtD,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAC1C,EAAE,CAAC,cAAc,IAAI,IAAI,CAC5B,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5C;SACJ;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;CACJ;AAlDD,kEAkDC;AAED;;GAEG;AACH,MAAa,mBAAmB;IAC5B,YACqB,GAAW,EACX,WAAwB,EACxB,MAAwB;QAFxB,QAAG,GAAH,GAAG,CAAQ;QACX,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAkB;IAC7C,CAAC;IAEM,KAAK,CAAC,GAAG,CACZ,QAAgB,EAChB,EAAU,EACV,IAAY,EAAE,YAAY;IAC1B,EAAU;QAGV,MAAM,GAAG,GAAG,MAAM,kCAAgB,CAAC,cAAc,CAC7C,IAAI,CAAC,MAAM,EACX;YACI,SAAS,EAAE,WAAW;YACtB,IAAI;YACJ,EAAE;SACL,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CACvC,IAAI,CAAC,GAAG,EACR,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC;gBACN,KAAK,EAAE,QAAQ,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QACpB,CAAC,CACJ,CAAC;QAEF,oGAAoG;QACpG,4GAA4G;QAC5G,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACnD,CAAC;CACJ;AApCD,kDAoCC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IDeltaStorageService,\n IDocumentDeltaStorageService,\n IDeltasFetchResult,\n IStream,\n} from \"@fluidframework/driver-definitions\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { readAndParse, requestOps, emptyMessageStream } from \"@fluidframework/driver-utils\";\nimport { TelemetryNullLogger } from \"@fluidframework/common-utils\";\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { PerformanceEvent } from \"@fluidframework/telemetry-utils\";\nimport { RestWrapper } from \"@fluidframework/server-services-client\";\nimport { DocumentStorageService } from \"./documentStorageService\";\n\nconst MaxBatchDeltas = 2000; // Maximum number of ops we can fetch at a time\n\n/**\n * Storage service limited to only being able to fetch documents for a specific document\n */\nexport class DocumentDeltaStorageService implements IDocumentDeltaStorageService {\n constructor(\n private readonly tenantId: string,\n private readonly id: string,\n private readonly storageService: IDeltaStorageService,\n private readonly documentStorageService: DocumentStorageService) {\n }\n\n private logtailSha: string | undefined = this.documentStorageService.logTailSha;\n\n fetchMessages(from: number,\n to: number | undefined,\n abortSignal?: AbortSignal,\n cachedOnly?: boolean,\n fetchReason?: string,\n ): IStream<ISequencedDocumentMessage[]>\n {\n if (cachedOnly) {\n return emptyMessageStream;\n }\n return requestOps(\n this.getCore.bind(this),\n // Staging: starting with no concurrency, listening for feedback first.\n // In future releases we will switch to actual concurrency\n 1, // concurrency\n from, // inclusive\n to, // exclusive\n MaxBatchDeltas,\n new TelemetryNullLogger(),\n abortSignal,\n fetchReason,\n );\n }\n\n private async getCore(from: number, to: number): Promise<IDeltasFetchResult> {\n const opsFromLogTail = this.logtailSha ? await readAndParse<ISequencedDocumentMessage[]>\n (this.documentStorageService, this.logtailSha) : [];\n\n this.logtailSha = undefined;\n if (opsFromLogTail.length > 0) {\n const messages = opsFromLogTail.filter((op) =>\n op.sequenceNumber >= from,\n );\n if (messages.length > 0) {\n return { messages, partialResult: true };\n }\n }\n\n return this.storageService.get(this.tenantId, this.id, from, to);\n }\n}\n\n/**\n * Provides access to the underlying delta storage on the server for routerlicious driver.\n */\nexport class DeltaStorageService implements IDeltaStorageService {\n constructor(\n private readonly url: string,\n private readonly restWrapper: RestWrapper,\n private readonly logger: ITelemetryLogger) {\n }\n\n public async get(\n tenantId: string,\n id: string,\n from: number, // inclusive\n to: number, // exclusive\n ): Promise<IDeltasFetchResult>\n {\n const ops = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"getDeltas\",\n from,\n to,\n },\n async (event) => {\n const response = await this.restWrapper.get<ISequencedDocumentMessage[]>(\n this.url,\n { from: from - 1, to });\n event.end({\n count: response.length,\n });\n return response;\n },\n );\n\n // It is assumed that server always returns all the ops that it has in the range that was requested.\n // This may change in the future, if so, we need to adjust and receive \"end\" value from server in such case.\n return { messages: ops, partialResult: false };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentService.d.ts","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,GAAG,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAC,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAKtE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC;;;GAGG;AACH,qBAAa,eAAgB,YAAW,GAAG,CAAC,gBAAgB;aAEpC,WAAW,EAAE,GAAG,CAAC,YAAY;IAC7C,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,SAAS,CAAC,aAAa,EAAE,cAAc;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAVlB,WAAW,EAAE,GAAG,CAAC,YAAY,EACnC,UAAU,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EAC/B,aAAa,EAAE,cAAc,EAC7B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EACX,cAAc,EAAE,4BAA4B,EAC5C,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,EAClC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC;IAI7D,OAAO,CAAC,sBAAsB,CAAqC;IAE5D,OAAO;IAEd;;;;OAIG;IACU,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"documentService.d.ts","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,GAAG,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAC,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAKtE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC;;;GAGG;AACH,qBAAa,eAAgB,YAAW,GAAG,CAAC,gBAAgB;aAEpC,WAAW,EAAE,GAAG,CAAC,YAAY;IAC7C,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,SAAS,CAAC,aAAa,EAAE,cAAc;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAVlB,WAAW,EAAE,GAAG,CAAC,YAAY,EACnC,UAAU,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EAC/B,aAAa,EAAE,cAAc,EAC7B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EACX,cAAc,EAAE,4BAA4B,EAC5C,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,EAClC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC;IAI7D,OAAO,CAAC,sBAAsB,CAAqC;IAE5D,OAAO;IAEd;;;;OAIG;IACU,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IA2CrE;;;;OAIG;IACU,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAkB/E;;;;OAIG;IACU,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;CA+B5F"}
|
package/dist/documentService.js
CHANGED
|
@@ -62,6 +62,9 @@ class DocumentService {
|
|
|
62
62
|
* @returns returns the document storage service for routerlicious driver.
|
|
63
63
|
*/
|
|
64
64
|
async connectToStorage() {
|
|
65
|
+
if (this.documentStorageService !== undefined) {
|
|
66
|
+
return this.documentStorageService;
|
|
67
|
+
}
|
|
65
68
|
if (this.gitUrl === undefined) {
|
|
66
69
|
return new nullBlobStorageService_1.NullBlobStorageService();
|
|
67
70
|
}
|
|
@@ -84,6 +87,7 @@ class DocumentService {
|
|
|
84
87
|
* @returns returns the document delta storage service for routerlicious driver.
|
|
85
88
|
*/
|
|
86
89
|
async connectToDeltaStorage() {
|
|
90
|
+
await this.connectToStorage();
|
|
87
91
|
common_utils_1.assert(!!this.documentStorageService, 0x0b1 /* "Storage service not initialized" */);
|
|
88
92
|
const rateLimiter = new driver_utils_1.RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);
|
|
89
93
|
const ordererRestWrapper = await restWrapper_1.RouterliciousOrdererRestWrapper.load(this.tenantId, this.documentId, this.tokenProvider, this.logger, rateLimiter, this.driverPolicies.enableRestLess);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentService.js","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+DAAsD;AACtD,wEAA0D;AAC1D,+DAA2D;AAE3D,mFAA+E;AAC/E,wEAAkC;AAElC,+DAAyF;AACzF,qEAAkE;AAClE,uEAAwE;AACxE,qEAAkE;AAElE,+CAAiG;AAIjG;;;GAGG;AACH,MAAa,eAAe;IACxB,YACoB,WAA6B,EACnC,UAAkB,EACX,eAAuB,EACvB,MAAc,EACd,MAAwB,EAC/B,aAA6B,EAC7B,QAAgB,EAChB,UAAkB,EACX,cAA4C,EAC5C,SAAkC,EAClC,iBAAwC;QAVzC,gBAAW,GAAX,WAAW,CAAkB;QACnC,eAAU,GAAV,UAAU,CAAQ;QACX,oBAAe,GAAf,eAAe,CAAQ;QACvB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAkB;QAC/B,kBAAa,GAAb,aAAa,CAAgB;QAC7B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QACX,mBAAc,GAAd,cAAc,CAA8B;QAC5C,cAAS,GAAT,SAAS,CAAyB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAuB;IAE7D,CAAC;IAIM,OAAO,KAAI,CAAC;IAEnB;;;;OAIG;IACI,KAAK,CAAC,gBAAgB;QACzB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,OAAO,IAAI,+CAAsB,EAAE,CAAC;SACvC;QAED,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;QACtF,MAAM,kBAAkB,GAAG,MAAM,6CAA+B,CAAC,IAAI,CACjE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,IAAI,CAAC,cAAc,CAAC,cAAc,EAClC,IAAI,CAAC,MAAM,CACd,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,kCAAS,CAC3B,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,KAAK,EACL,kBAAkB,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,mCAAU,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,8BAA8B,GAAwC;YACxE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc;gBACvC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ;gBAClC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS;YACvC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,8BAA8B;SAClE,CAAC;QAEF,IAAI,CAAC,sBAAsB,GAAG,IAAI,+CAAsB,CACpD,IAAI,CAAC,UAAU,EACf,UAAU,EACV,IAAI,CAAC,MAAM,EACX,8BAA8B,EAC9B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,qBAAqB;QAC9B,qBAAM,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAErF,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;QACtF,MAAM,kBAAkB,GAAG,MAAM,6CAA+B,CAAC,IAAI,CACjE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,IAAI,CAAC,cAAc,CAAC,cAAc,CACrC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,yCAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpG,OAAO,IAAI,iDAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EACjE,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAe;QAC7C,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACvB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAC3D,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,CAClB,CAAC;YACF,OAAO,qDAA2B,CAAC,MAAM,CACrC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,YAAY,CAAC,GAAG,EAChB,0BAAE,EACF,MAAM,EACN,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,CACd,CAAC;QACN,CAAC,CAAC;QAEF,mCAAmC;QACnC,2FAA2F;QAC3F,IAAI;YACA,MAAM,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;YACnC,OAAO,UAAU,CAAC;SACrB;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,MAAK,GAAG,EAAE;gBAC3B,kCAAkC;gBAClC,wEAAwE;gBACxE,OAAO,OAAO,EAAE,CAAC;aACpB;YACD,MAAM,KAAK,CAAC;SACf;IACL,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"documentService.js","sourceRoot":"","sources":["../src/documentService.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\";\nimport * as api from \"@fluidframework/driver-definitions\";\nimport { RateLimiter } from \"@fluidframework/driver-utils\";\nimport { IClient, ISnapshotTree} from \"@fluidframework/protocol-definitions\";\nimport { GitManager, Historian } from \"@fluidframework/server-services-client\";\nimport io from \"socket.io-client\";\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { DeltaStorageService, DocumentDeltaStorageService } from \"./deltaStorageService\";\nimport { DocumentStorageService } from \"./documentStorageService\";\nimport { R11sDocumentDeltaConnection } from \"./documentDeltaConnection\";\nimport { NullBlobStorageService } from \"./nullBlobStorageService\";\nimport { ITokenProvider } from \"./tokens\";\nimport { RouterliciousOrdererRestWrapper, RouterliciousStorageRestWrapper } from \"./restWrapper\";\nimport { IRouterliciousDriverPolicies } from \"./policies\";\nimport { ICache } from \"./cache\";\n\n/**\n * The DocumentService manages the Socket.IO connection and manages routing requests to connected\n * clients\n */\nexport class DocumentService implements api.IDocumentService {\n constructor(\n public readonly resolvedUrl: api.IResolvedUrl,\n protected ordererUrl: string,\n private readonly deltaStorageUrl: string,\n private readonly gitUrl: string,\n private readonly logger: ITelemetryLogger,\n protected tokenProvider: ITokenProvider,\n protected tenantId: string,\n protected documentId: string,\n private readonly driverPolicies: IRouterliciousDriverPolicies,\n private readonly blobCache: ICache<ArrayBufferLike>,\n private readonly snapshotTreeCache: ICache<ISnapshotTree>,\n ) {\n }\n\n private documentStorageService: DocumentStorageService | undefined;\n\n public dispose() {}\n\n /**\n * Connects to a storage endpoint for snapshot service.\n *\n * @returns returns the document storage service for routerlicious driver.\n */\n public async connectToStorage(): Promise<api.IDocumentStorageService> {\n if (this.documentStorageService !== undefined) {\n return this.documentStorageService;\n }\n\n if (this.gitUrl === undefined) {\n return new NullBlobStorageService();\n }\n\n const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentStorageRequests);\n const storageRestWrapper = await RouterliciousStorageRestWrapper.load(\n this.tenantId,\n this.documentId,\n this.tokenProvider,\n this.logger,\n rateLimiter,\n this.driverPolicies.enableRestLess,\n this.gitUrl,\n );\n const historian = new Historian(\n this.gitUrl,\n true,\n false,\n storageRestWrapper);\n const gitManager = new GitManager(historian);\n const documentStorageServicePolicies: api.IDocumentStorageServicePolicies = {\n caching: this.driverPolicies.enablePrefetch\n ? api.LoaderCachingPolicy.Prefetch\n : api.LoaderCachingPolicy.NoCaching,\n minBlobSize: this.driverPolicies.aggregateBlobsSmallerThanBytes,\n };\n\n this.documentStorageService = new DocumentStorageService(\n this.documentId,\n gitManager,\n this.logger,\n documentStorageServicePolicies,\n this.driverPolicies,\n this.blobCache,\n this.snapshotTreeCache);\n return this.documentStorageService;\n }\n\n /**\n * Connects to a delta storage endpoint for getting ops between a range.\n *\n * @returns returns the document delta storage service for routerlicious driver.\n */\n public async connectToDeltaStorage(): Promise<api.IDocumentDeltaStorageService> {\n await this.connectToStorage();\n assert(!!this.documentStorageService, 0x0b1 /* \"Storage service not initialized\" */);\n\n const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);\n const ordererRestWrapper = await RouterliciousOrdererRestWrapper.load(\n this.tenantId,\n this.documentId,\n this.tokenProvider,\n this.logger,\n rateLimiter,\n this.driverPolicies.enableRestLess,\n );\n const deltaStorage = new DeltaStorageService(this.deltaStorageUrl, ordererRestWrapper, this.logger);\n return new DocumentDeltaStorageService(this.tenantId, this.documentId,\n deltaStorage, this.documentStorageService);\n }\n\n /**\n * Connects to a delta stream endpoint for emitting ops.\n *\n * @returns returns the document delta stream service for routerlicious driver.\n */\n public async connectToDeltaStream(client: IClient): Promise<api.IDocumentDeltaConnection> {\n const connect = async () => {\n const ordererToken = await this.tokenProvider.fetchOrdererToken(\n this.tenantId,\n this.documentId,\n );\n return R11sDocumentDeltaConnection.create(\n this.tenantId,\n this.documentId,\n ordererToken.jwt,\n io,\n client,\n this.ordererUrl,\n this.logger,\n );\n };\n\n // Attempt to establish connection.\n // Retry with new token on authorization error; otherwise, allow container layer to handle.\n try {\n const connection = await connect();\n return connection;\n } catch (error) {\n if (error?.statusCode === 401) {\n // Fetch new token and retry once,\n // otherwise 401 will be bubbled up as non-retriable AuthorizationError.\n return connect();\n }\n throw error;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentStorageService.d.ts","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"documentStorageService.d.ts","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAEH,+BAA+B,EAEjC,MAAM,oCAAoC,CAAC;AAC7C,OAAO,EACH,aAAa,EACb,QAAQ,EACX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACH,UAAU,EACb,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAkC,MAAM,8BAA8B,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,qBAAa,sBAAuB,SAAQ,2BAA2B;aAyC/C,EAAE,EAAE,MAAM;IACnB,OAAO,EAAE,UAAU;IAzC9B,OAAO,CAAC,WAAW,CAAiC;IAEpD,IAAW,UAAU,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,MAAM,CAAC,kCAAkC;gBAkC7B,EAAE,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,EAC1B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,+BAAoC,EAC9C,cAAc,CAAC,EAAE,4BAA4B,EAC7C,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;IAYhC,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAOlF"}
|
|
@@ -5,267 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.DocumentStorageService = void 0;
|
|
8
|
-
const common_utils_1 = require("@fluidframework/common-utils");
|
|
9
8
|
const driver_definitions_1 = require("@fluidframework/driver-definitions");
|
|
10
|
-
const protocol_base_1 = require("@fluidframework/protocol-base");
|
|
11
|
-
const server_services_client_1 = require("@fluidframework/server-services-client");
|
|
12
|
-
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
13
9
|
const driver_utils_1 = require("@fluidframework/driver-utils");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
/**
|
|
17
|
-
* Document access to underlying storage for routerlicious driver.
|
|
18
|
-
* Uploads summaries piece-by-piece traversing the tree recursively.
|
|
19
|
-
* Downloads summaries
|
|
20
|
-
*/
|
|
21
|
-
class ShreddedSummaryDocumentStorageService {
|
|
22
|
-
constructor(id, manager, logger, policies = {}) {
|
|
23
|
-
this.id = id;
|
|
24
|
-
this.manager = manager;
|
|
25
|
-
this.logger = logger;
|
|
26
|
-
this.policies = policies;
|
|
27
|
-
// The values of this cache is useless. We only need the keys. So we are always putting
|
|
28
|
-
// empty strings as values.
|
|
29
|
-
this.blobsShaCache = new Map();
|
|
30
|
-
this.summaryUploadManager = new server_services_client_1.SummaryTreeUploadManager(new retriableGitManager_1.RetriableGitManager(manager, logger), this.blobsShaCache, this.getPreviousFullSnapshot.bind(this));
|
|
31
|
-
}
|
|
32
|
-
get repositoryUrl() {
|
|
33
|
-
return "";
|
|
34
|
-
}
|
|
35
|
-
async getVersions(versionId, count) {
|
|
36
|
-
const id = versionId ? versionId : this.id;
|
|
37
|
-
const commits = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
38
|
-
eventName: "getVersions",
|
|
39
|
-
versionId: id,
|
|
40
|
-
count,
|
|
41
|
-
}, async () => this.manager.getCommits(id, count));
|
|
42
|
-
return commits.map((commit) => ({
|
|
43
|
-
date: commit.commit.author.date,
|
|
44
|
-
id: commit.sha,
|
|
45
|
-
treeId: commit.commit.tree.sha,
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
async getSnapshotTree(version) {
|
|
49
|
-
let requestVersion = version;
|
|
50
|
-
if (!requestVersion) {
|
|
51
|
-
const versions = await this.getVersions(this.id, 1);
|
|
52
|
-
if (versions.length === 0) {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
requestVersion = versions[0];
|
|
56
|
-
}
|
|
57
|
-
const rawTree = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
58
|
-
eventName: "getSnapshotTree",
|
|
59
|
-
treeId: requestVersion.treeId,
|
|
60
|
-
}, async (event) => {
|
|
61
|
-
const response = await this.manager.getTree(requestVersion.treeId);
|
|
62
|
-
event.end({
|
|
63
|
-
size: response.tree.length,
|
|
64
|
-
});
|
|
65
|
-
return response;
|
|
66
|
-
});
|
|
67
|
-
const tree = protocol_base_1.buildHierarchy(rawTree, this.blobsShaCache, true);
|
|
68
|
-
return tree;
|
|
69
|
-
}
|
|
70
|
-
async readBlob(blobId) {
|
|
71
|
-
const value = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
72
|
-
eventName: "readBlob",
|
|
73
|
-
blobId,
|
|
74
|
-
}, async (event) => {
|
|
75
|
-
const response = await this.manager.getBlob(blobId);
|
|
76
|
-
event.end({
|
|
77
|
-
size: response.size,
|
|
78
|
-
});
|
|
79
|
-
return response;
|
|
80
|
-
});
|
|
81
|
-
this.blobsShaCache.set(value.sha, "");
|
|
82
|
-
return common_utils_1.stringToBuffer(value.content, value.encoding);
|
|
83
|
-
}
|
|
84
|
-
async write(tree, parents, message, ref) {
|
|
85
|
-
const branch = ref ? `datastores/${this.id}/${ref}` : this.id;
|
|
86
|
-
const commit = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
87
|
-
eventName: "write",
|
|
88
|
-
id: branch,
|
|
89
|
-
}, async () => this.manager.write(branch, tree, parents, message));
|
|
90
|
-
return { date: commit.committer.date, id: commit.sha, treeId: commit.tree.sha };
|
|
91
|
-
}
|
|
92
|
-
async uploadSummaryWithContext(summary, context) {
|
|
93
|
-
const summaryHandle = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
94
|
-
eventName: "uploadSummaryWithContext",
|
|
95
|
-
}, async () => { var _a; return this.summaryUploadManager.writeSummaryTree(summary, (_a = context.ackHandle) !== null && _a !== void 0 ? _a : "", "channel"); });
|
|
96
|
-
return summaryHandle;
|
|
97
|
-
}
|
|
98
|
-
async downloadSummary(handle) {
|
|
99
|
-
throw new Error("NOT IMPLEMENTED!");
|
|
100
|
-
}
|
|
101
|
-
async createBlob(file) {
|
|
102
|
-
const uint8ArrayFile = new Uint8Array(file);
|
|
103
|
-
return telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
104
|
-
eventName: "createBlob",
|
|
105
|
-
size: uint8ArrayFile.length,
|
|
106
|
-
}, async (event) => {
|
|
107
|
-
const response = await this.manager.createBlob(common_utils_1.Uint8ArrayToString(uint8ArrayFile, "base64"), "base64").then((r) => ({ id: r.sha, url: r.url }));
|
|
108
|
-
event.end({
|
|
109
|
-
blobId: response.id,
|
|
110
|
-
});
|
|
111
|
-
return response;
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
async getPreviousFullSnapshot(parentHandle) {
|
|
115
|
-
return parentHandle
|
|
116
|
-
? this.getVersions(parentHandle, 1)
|
|
117
|
-
.then(async (versions) => {
|
|
118
|
-
// Clear the cache as the getSnapshotTree call will fill the cache.
|
|
119
|
-
this.blobsShaCache.clear();
|
|
120
|
-
return this.getSnapshotTree(versions[0]);
|
|
121
|
-
})
|
|
122
|
-
: undefined;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
const latestSnapshotId = "latest";
|
|
126
|
-
class WholeSummaryDocumentStorageService {
|
|
127
|
-
constructor(id, manager, logger, policies = {}, blobCache = new cache_1.InMemoryCache(), snapshotTreeCache = new cache_1.InMemoryCache()) {
|
|
128
|
-
this.id = id;
|
|
129
|
-
this.manager = manager;
|
|
130
|
-
this.logger = logger;
|
|
131
|
-
this.policies = policies;
|
|
132
|
-
this.blobCache = blobCache;
|
|
133
|
-
this.snapshotTreeCache = snapshotTreeCache;
|
|
134
|
-
this.firstVersionsCall = true;
|
|
135
|
-
this.summaryUploadManager = new server_services_client_1.WholeSummaryUploadManager(manager);
|
|
136
|
-
}
|
|
137
|
-
get repositoryUrl() {
|
|
138
|
-
return "";
|
|
139
|
-
}
|
|
140
|
-
async getVersions(versionId, count) {
|
|
141
|
-
if (versionId !== this.id && versionId !== null) {
|
|
142
|
-
// Blobs in this scenario will never have multiple versions, so return blobId as is
|
|
143
|
-
return [{
|
|
144
|
-
id: versionId,
|
|
145
|
-
treeId: undefined,
|
|
146
|
-
}];
|
|
147
|
-
}
|
|
148
|
-
// If this is the first versions call for the document, we know we will want the latest summary.
|
|
149
|
-
// Fetch latest summary, cache it, and return its id.
|
|
150
|
-
if (this.firstVersionsCall && count === 1) {
|
|
151
|
-
this.firstVersionsCall = false;
|
|
152
|
-
return [{
|
|
153
|
-
id: (await this.fetchAndCacheSnapshotTree(latestSnapshotId)).id,
|
|
154
|
-
treeId: undefined,
|
|
155
|
-
}];
|
|
156
|
-
}
|
|
157
|
-
// Otherwise, get the latest version of the document as normal.
|
|
158
|
-
const id = versionId ? versionId : this.id;
|
|
159
|
-
const commits = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
160
|
-
eventName: "getVersions",
|
|
161
|
-
versionId: id,
|
|
162
|
-
count,
|
|
163
|
-
}, async () => this.manager.getCommits(id, count));
|
|
164
|
-
return commits.map((commit) => ({
|
|
165
|
-
date: commit.commit.author.date,
|
|
166
|
-
id: commit.sha,
|
|
167
|
-
treeId: undefined,
|
|
168
|
-
}));
|
|
169
|
-
}
|
|
170
|
-
async getSnapshotTree(version) {
|
|
171
|
-
let requestVersion = version;
|
|
172
|
-
if (!requestVersion) {
|
|
173
|
-
const versions = await this.getVersions(this.id, 1);
|
|
174
|
-
if (versions.length === 0) {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
requestVersion = versions[0];
|
|
178
|
-
}
|
|
179
|
-
return (await this.fetchAndCacheSnapshotTree(requestVersion.id)).snapshotTree;
|
|
180
|
-
}
|
|
181
|
-
async readBlob(blobId) {
|
|
182
|
-
const cachedBlob = await this.blobCache.get(blobId);
|
|
183
|
-
if (cachedBlob !== undefined) {
|
|
184
|
-
return cachedBlob;
|
|
185
|
-
}
|
|
186
|
-
const blob = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
187
|
-
eventName: "readBlob",
|
|
188
|
-
blobId,
|
|
189
|
-
}, async (event) => {
|
|
190
|
-
const response = await this.manager.getBlob(blobId);
|
|
191
|
-
event.end({
|
|
192
|
-
size: response.size,
|
|
193
|
-
});
|
|
194
|
-
return response;
|
|
195
|
-
});
|
|
196
|
-
const bufferValue = common_utils_1.stringToBuffer(blob.content, blob.encoding);
|
|
197
|
-
await this.blobCache.put(blob.sha, bufferValue);
|
|
198
|
-
return bufferValue;
|
|
199
|
-
}
|
|
200
|
-
async uploadSummaryWithContext(summary, context) {
|
|
201
|
-
const summaryHandle = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
202
|
-
eventName: "uploadSummaryWithContext",
|
|
203
|
-
}, async () => { var _a; return this.summaryUploadManager.writeSummaryTree(summary, (_a = context.ackHandle) !== null && _a !== void 0 ? _a : "", "channel"); });
|
|
204
|
-
return summaryHandle;
|
|
205
|
-
}
|
|
206
|
-
async downloadSummary(handle) {
|
|
207
|
-
throw new Error("NOT IMPLEMENTED!");
|
|
208
|
-
}
|
|
209
|
-
async write(tree, parents, message, ref) {
|
|
210
|
-
throw new Error("NOT IMPLEMENTED!");
|
|
211
|
-
}
|
|
212
|
-
async createBlob(file) {
|
|
213
|
-
const uint8ArrayFile = new Uint8Array(file);
|
|
214
|
-
return telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
215
|
-
eventName: "createBlob",
|
|
216
|
-
size: uint8ArrayFile.length,
|
|
217
|
-
}, async (event) => {
|
|
218
|
-
const response = await this.manager.createBlob(common_utils_1.Uint8ArrayToString(uint8ArrayFile, "base64"), "base64").then((r) => ({ id: r.sha, url: r.url }));
|
|
219
|
-
event.end({
|
|
220
|
-
blobId: response.id,
|
|
221
|
-
});
|
|
222
|
-
return response;
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
async fetchAndCacheSnapshotTree(versionId) {
|
|
226
|
-
const cachedSnapshotTree = await this.snapshotTreeCache.get(versionId);
|
|
227
|
-
if (cachedSnapshotTree !== undefined) {
|
|
228
|
-
return { id: cachedSnapshotTree.id, snapshotTree: cachedSnapshotTree };
|
|
229
|
-
}
|
|
230
|
-
const wholeFlatSummary = await telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
231
|
-
eventName: "getWholeFlatSummary",
|
|
232
|
-
treeId: versionId,
|
|
233
|
-
}, async (event) => {
|
|
234
|
-
var _a;
|
|
235
|
-
const response = await this.manager.getSummary(versionId);
|
|
236
|
-
event.end({
|
|
237
|
-
size: (_a = response.trees[0]) === null || _a === void 0 ? void 0 : _a.entries.length,
|
|
238
|
-
});
|
|
239
|
-
return response;
|
|
240
|
-
});
|
|
241
|
-
const normalizedWholeSummary = server_services_client_1.convertWholeFlatSummaryToSnapshotTreeAndBlobs(wholeFlatSummary);
|
|
242
|
-
const snapshotId = normalizedWholeSummary.snapshotTree.id;
|
|
243
|
-
common_utils_1.assert(snapshotId !== undefined, 0x275 /* "Root tree should contain the id" */);
|
|
244
|
-
const cachePs = [
|
|
245
|
-
this.snapshotTreeCache.put(snapshotId, normalizedWholeSummary.snapshotTree),
|
|
246
|
-
this.initBlobCache(normalizedWholeSummary.blobs),
|
|
247
|
-
];
|
|
248
|
-
if (snapshotId !== versionId) {
|
|
249
|
-
// versionId could be "latest". When summarizer checks cache for "latest", we want it to be available.
|
|
250
|
-
// TODO: For in-memory cache, <latest,snapshotTree> will be a shared pointer with <snapshotId,snapshotTree>,
|
|
251
|
-
// However, for something like Redis, this will cache the same value twice. Alternatively, could we simply
|
|
252
|
-
// cache with versionId?
|
|
253
|
-
cachePs.push(this.snapshotTreeCache.put(versionId, normalizedWholeSummary.snapshotTree));
|
|
254
|
-
}
|
|
255
|
-
await Promise.all([
|
|
256
|
-
this.snapshotTreeCache.put(snapshotId, normalizedWholeSummary.snapshotTree),
|
|
257
|
-
this.initBlobCache(normalizedWholeSummary.blobs),
|
|
258
|
-
]);
|
|
259
|
-
return { id: snapshotId, snapshotTree: normalizedWholeSummary.snapshotTree };
|
|
260
|
-
}
|
|
261
|
-
async initBlobCache(blobs) {
|
|
262
|
-
const blobCachePutPs = [];
|
|
263
|
-
blobs.forEach((value, id) => {
|
|
264
|
-
blobCachePutPs.push(this.blobCache.put(id, value));
|
|
265
|
-
});
|
|
266
|
-
await Promise.all(blobCachePutPs);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
10
|
+
const wholeSummaryDocumentStorageService_1 = require("./wholeSummaryDocumentStorageService");
|
|
11
|
+
const shreddedSummaryDocumentStorageService_1 = require("./shreddedSummaryDocumentStorageService");
|
|
269
12
|
class DocumentStorageService extends driver_utils_1.DocumentStorageServiceProxy {
|
|
270
13
|
constructor(id, manager, logger, policies = {}, driverPolicies, blobCache, snapshotTreeCache) {
|
|
271
14
|
super(DocumentStorageService.loadInternalDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache));
|
|
@@ -278,8 +21,8 @@ class DocumentStorageService extends driver_utils_1.DocumentStorageServiceProxy
|
|
|
278
21
|
}
|
|
279
22
|
static loadInternalDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache) {
|
|
280
23
|
const storageService = (driverPolicies === null || driverPolicies === void 0 ? void 0 : driverPolicies.enableWholeSummaryUpload) ?
|
|
281
|
-
new WholeSummaryDocumentStorageService(id, manager, logger, policies, blobCache, snapshotTreeCache) :
|
|
282
|
-
new ShreddedSummaryDocumentStorageService(id, manager, logger, policies);
|
|
24
|
+
new wholeSummaryDocumentStorageService_1.WholeSummaryDocumentStorageService(id, manager, logger, policies, blobCache, snapshotTreeCache) :
|
|
25
|
+
new shreddedSummaryDocumentStorageService_1.ShreddedSummaryDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache);
|
|
283
26
|
// TODO: worth prefetching latest summary making version + snapshot call with WholeSummary storage?
|
|
284
27
|
if (!(driverPolicies === null || driverPolicies === void 0 ? void 0 : driverPolicies.enableWholeSummaryUpload) && policies.caching === driver_definitions_1.LoaderCachingPolicy.Prefetch) {
|
|
285
28
|
return new driver_utils_1.PrefetchDocumentStorageService(storageService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentStorageService.js","sourceRoot":"","sources":["../src/documentStorageService.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 type { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport {\n assert,\n stringToBuffer,\n Uint8ArrayToString,\n} from \"@fluidframework/common-utils\";\nimport {\n IDocumentStorageService,\n ISummaryContext,\n IDocumentStorageServicePolicies,\n LoaderCachingPolicy,\n } from \"@fluidframework/driver-definitions\";\nimport { buildHierarchy } from \"@fluidframework/protocol-base\";\nimport {\n ICreateBlobResponse,\n ISnapshotTree,\n ISnapshotTreeEx,\n ISummaryHandle,\n ISummaryTree,\n ITree,\n IVersion,\n} from \"@fluidframework/protocol-definitions\";\nimport {\n convertWholeFlatSummaryToSnapshotTreeAndBlobs,\n GitManager,\n ISummaryUploadManager,\n SummaryTreeUploadManager,\n WholeSummaryUploadManager,\n} from \"@fluidframework/server-services-client\";\nimport { PerformanceEvent } from \"@fluidframework/telemetry-utils\";\nimport { DocumentStorageServiceProxy, PrefetchDocumentStorageService } from \"@fluidframework/driver-utils\";\nimport { RetriableGitManager } from \"./retriableGitManager\";\nimport { IRouterliciousDriverPolicies } from \"./policies\";\nimport { ICache, InMemoryCache } from \"./cache\";\n\n/**\n * Document access to underlying storage for routerlicious driver.\n * Uploads summaries piece-by-piece traversing the tree recursively.\n * Downloads summaries\n */\nclass ShreddedSummaryDocumentStorageService implements IDocumentStorageService {\n // The values of this cache is useless. We only need the keys. So we are always putting\n // empty strings as values.\n protected readonly blobsShaCache = new Map<string, string>();\n private readonly summaryUploadManager: ISummaryUploadManager;\n\n public get repositoryUrl(): string {\n return \"\";\n }\n\n constructor(\n protected readonly id: string,\n protected readonly manager: GitManager,\n protected readonly logger: ITelemetryLogger,\n public readonly policies: IDocumentStorageServicePolicies = {}) {\n this.summaryUploadManager = new SummaryTreeUploadManager(\n new RetriableGitManager(manager, logger),\n this.blobsShaCache,\n this.getPreviousFullSnapshot.bind(this),\n );\n }\n\n public async getVersions(versionId: string, count: number): Promise<IVersion[]> {\n const id = versionId ? versionId : this.id;\n const commits = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"getVersions\",\n versionId: id,\n count,\n },\n async () => this.manager.getCommits(id, count),\n );\n return commits.map((commit) => ({\n date: commit.commit.author.date,\n id: commit.sha,\n treeId: commit.commit.tree.sha,\n }));\n }\n\n public async getSnapshotTree(version?: IVersion): Promise<ISnapshotTreeEx | null> {\n let requestVersion = version;\n if (!requestVersion) {\n const versions = await this.getVersions(this.id, 1);\n if (versions.length === 0) {\n return null;\n }\n\n requestVersion = versions[0];\n }\n\n const rawTree = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"getSnapshotTree\",\n treeId: requestVersion.treeId,\n },\n async (event) => {\n const response = await this.manager.getTree(requestVersion!.treeId);\n event.end({\n size: response.tree.length,\n });\n return response;\n },\n );\n const tree = buildHierarchy(rawTree, this.blobsShaCache, true);\n return tree;\n }\n\n public async readBlob(blobId: string): Promise<ArrayBufferLike> {\n const value = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"readBlob\",\n blobId,\n },\n async (event) => {\n const response = await this.manager.getBlob(blobId);\n event.end({\n size: response.size,\n });\n return response;\n },\n );\n this.blobsShaCache.set(value.sha, \"\");\n return stringToBuffer(value.content, value.encoding);\n }\n\n public async write(tree: ITree, parents: string[], message: string, ref: string): Promise<IVersion> {\n const branch = ref ? `datastores/${this.id}/${ref}` : this.id;\n const commit = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"write\",\n id: branch,\n },\n async () => this.manager.write(branch, tree, parents, message),\n );\n return { date: commit.committer.date, id: commit.sha, treeId: commit.tree.sha };\n }\n\n public async uploadSummaryWithContext(summary: ISummaryTree, context: ISummaryContext): Promise<string> {\n const summaryHandle = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"uploadSummaryWithContext\",\n },\n async () => this.summaryUploadManager.writeSummaryTree(summary, context.ackHandle ?? \"\", \"channel\"),\n );\n return summaryHandle;\n }\n\n public async downloadSummary(handle: ISummaryHandle): Promise<ISummaryTree> {\n throw new Error(\"NOT IMPLEMENTED!\");\n }\n\n public async createBlob(file: ArrayBufferLike): Promise<ICreateBlobResponse> {\n const uint8ArrayFile = new Uint8Array(file);\n return PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"createBlob\",\n size: uint8ArrayFile.length,\n },\n async (event) => {\n const response = await this.manager.createBlob(\n Uint8ArrayToString(\n uint8ArrayFile, \"base64\"),\n \"base64\").then((r) => ({ id: r.sha, url: r.url }));\n event.end({\n blobId: response.id,\n });\n return response;\n },\n );\n }\n\n private async getPreviousFullSnapshot(parentHandle: string): Promise<ISnapshotTreeEx | null | undefined> {\n return parentHandle\n ? this.getVersions(parentHandle, 1)\n .then(async (versions) => {\n // Clear the cache as the getSnapshotTree call will fill the cache.\n this.blobsShaCache.clear();\n return this.getSnapshotTree(versions[0]);\n })\n : undefined;\n }\n}\n\nconst latestSnapshotId: string = \"latest\";\n\nclass WholeSummaryDocumentStorageService implements IDocumentStorageService {\n private readonly summaryUploadManager: ISummaryUploadManager;\n private firstVersionsCall: boolean = true;\n\n public get repositoryUrl(): string {\n return \"\";\n }\n\n constructor(\n protected readonly id: string,\n protected readonly manager: GitManager,\n protected readonly logger: ITelemetryLogger,\n public readonly policies: IDocumentStorageServicePolicies = {},\n private readonly blobCache: ICache<ArrayBufferLike> = new InMemoryCache(),\n private readonly snapshotTreeCache: ICache<ISnapshotTree> = new InMemoryCache()) {\n this.summaryUploadManager = new WholeSummaryUploadManager(manager);\n }\n\n public async getVersions(versionId: string | null, count: number): Promise<IVersion[]> {\n if (versionId !== this.id && versionId !== null) {\n // Blobs in this scenario will never have multiple versions, so return blobId as is\n return [{\n id: versionId,\n treeId: undefined!,\n }];\n }\n // If this is the first versions call for the document, we know we will want the latest summary.\n // Fetch latest summary, cache it, and return its id.\n if (this.firstVersionsCall && count === 1) {\n this.firstVersionsCall = false;\n return [{\n id: (await this.fetchAndCacheSnapshotTree(latestSnapshotId)).id,\n treeId: undefined!,\n }];\n }\n\n // Otherwise, get the latest version of the document as normal.\n const id = versionId ? versionId : this.id;\n const commits = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"getVersions\",\n versionId: id,\n count,\n },\n async () => this.manager.getCommits(id, count),\n );\n return commits.map((commit) => ({\n date: commit.commit.author.date,\n id: commit.sha,\n treeId: undefined!,\n }));\n }\n\n public async getSnapshotTree(version?: IVersion): Promise<ISnapshotTree | null> {\n let requestVersion = version;\n if (!requestVersion) {\n const versions = await this.getVersions(this.id, 1);\n if (versions.length === 0) {\n return null;\n }\n\n requestVersion = versions[0];\n }\n\n return (await this.fetchAndCacheSnapshotTree(requestVersion.id)).snapshotTree;\n }\n\n public async readBlob(blobId: string): Promise<ArrayBufferLike> {\n const cachedBlob = await this.blobCache.get(blobId);\n if (cachedBlob !== undefined) {\n return cachedBlob;\n }\n\n const blob = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"readBlob\",\n blobId,\n },\n async (event) => {\n const response = await this.manager.getBlob(blobId);\n event.end({\n size: response.size,\n });\n return response;\n },\n );\n const bufferValue = stringToBuffer(blob.content, blob.encoding);\n\n await this.blobCache.put(blob.sha, bufferValue);\n\n return bufferValue;\n }\n\n public async uploadSummaryWithContext(summary: ISummaryTree, context: ISummaryContext): Promise<string> {\n const summaryHandle = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"uploadSummaryWithContext\",\n },\n async () => this.summaryUploadManager.writeSummaryTree(summary, context.ackHandle ?? \"\", \"channel\"),\n );\n return summaryHandle;\n }\n\n public async downloadSummary(handle: ISummaryHandle): Promise<ISummaryTree> {\n throw new Error(\"NOT IMPLEMENTED!\");\n }\n\n public async write(tree: ITree, parents: string[], message: string, ref: string): Promise<IVersion> {\n throw new Error(\"NOT IMPLEMENTED!\");\n }\n\n public async createBlob(file: ArrayBufferLike): Promise<ICreateBlobResponse> {\n const uint8ArrayFile = new Uint8Array(file);\n return PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"createBlob\",\n size: uint8ArrayFile.length,\n },\n async (event) => {\n const response = await this.manager.createBlob(\n Uint8ArrayToString(\n uint8ArrayFile, \"base64\"),\n \"base64\").then((r) => ({ id: r.sha, url: r.url }));\n event.end({\n blobId: response.id,\n });\n return response;\n },\n );\n }\n\n private async fetchAndCacheSnapshotTree(versionId: string): Promise<{ id: string, snapshotTree: ISnapshotTree }> {\n const cachedSnapshotTree = await this.snapshotTreeCache.get(versionId);\n if (cachedSnapshotTree !== undefined) {\n return { id: cachedSnapshotTree.id!, snapshotTree: cachedSnapshotTree };\n }\n\n const wholeFlatSummary = await PerformanceEvent.timedExecAsync(\n this.logger,\n {\n eventName: \"getWholeFlatSummary\",\n treeId: versionId,\n },\n async (event) => {\n const response = await this.manager.getSummary(versionId);\n event.end({\n size: response.trees[0]?.entries.length,\n });\n return response;\n },\n );\n const normalizedWholeSummary = convertWholeFlatSummaryToSnapshotTreeAndBlobs(wholeFlatSummary);\n const snapshotId = normalizedWholeSummary.snapshotTree.id;\n assert(snapshotId !== undefined, 0x275 /* \"Root tree should contain the id\" */);\n\n const cachePs: Promise<any>[] = [\n this.snapshotTreeCache.put(\n snapshotId,\n normalizedWholeSummary.snapshotTree,\n ),\n this.initBlobCache(normalizedWholeSummary.blobs),\n ];\n if (snapshotId !== versionId) {\n // versionId could be \"latest\". When summarizer checks cache for \"latest\", we want it to be available.\n // TODO: For in-memory cache, <latest,snapshotTree> will be a shared pointer with <snapshotId,snapshotTree>,\n // However, for something like Redis, this will cache the same value twice. Alternatively, could we simply\n // cache with versionId?\n cachePs.push(this.snapshotTreeCache.put(\n versionId,\n normalizedWholeSummary.snapshotTree,\n ));\n }\n\n await Promise.all([\n this.snapshotTreeCache.put(\n snapshotId,\n normalizedWholeSummary.snapshotTree,\n ),\n this.initBlobCache(normalizedWholeSummary.blobs),\n ]);\n\n return { id: snapshotId, snapshotTree: normalizedWholeSummary.snapshotTree};\n }\n\n private async initBlobCache(blobs: Map<string, ArrayBuffer>): Promise<void> {\n const blobCachePutPs: Promise<void>[] = [];\n blobs.forEach((value, id) => {\n blobCachePutPs.push(this.blobCache.put(id, value));\n });\n await Promise.all(blobCachePutPs);\n }\n}\n\nexport class DocumentStorageService extends DocumentStorageServiceProxy {\n private _logTailSha: string | undefined = undefined;\n\n public get logTailSha(): string | undefined {\n return this._logTailSha;\n }\n\n private static loadInternalDocumentStorageService(\n id: string,\n manager: GitManager,\n logger: ITelemetryLogger,\n policies: IDocumentStorageServicePolicies,\n driverPolicies?: IRouterliciousDriverPolicies,\n blobCache?: ICache<ArrayBufferLike>,\n snapshotTreeCache?: ICache<ISnapshotTree>): IDocumentStorageService {\n const storageService = driverPolicies?.enableWholeSummaryUpload ?\n new WholeSummaryDocumentStorageService(id, manager, logger, policies, blobCache, snapshotTreeCache) :\n new ShreddedSummaryDocumentStorageService(id, manager, logger, policies);\n // TODO: worth prefetching latest summary making version + snapshot call with WholeSummary storage?\n if (!driverPolicies?.enableWholeSummaryUpload && policies.caching === LoaderCachingPolicy.Prefetch) {\n return new PrefetchDocumentStorageService(storageService);\n }\n return storageService;\n }\n\n constructor(\n public readonly id: string,\n public manager: GitManager,\n logger: ITelemetryLogger,\n policies: IDocumentStorageServicePolicies = {},\n driverPolicies?: IRouterliciousDriverPolicies,\n blobCache?: ICache<ArrayBufferLike>,\n snapshotTreeCache?: ICache<ISnapshotTree>) {\n super(DocumentStorageService.loadInternalDocumentStorageService(\n id,\n manager,\n logger,\n policies,\n driverPolicies,\n blobCache,\n snapshotTreeCache,\n ));\n }\n\n public async getSnapshotTree(version?: IVersion): Promise<ISnapshotTree | null> {\n const tree = await this.internalStorageService.getSnapshotTree(version);\n if (tree !== null) {\n this._logTailSha = \".logTail\" in tree.trees ? tree.trees[\".logTail\"].blobs.logTail : undefined;\n }\n return tree;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"documentStorageService.js","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,2EAI6C;AAQ7C,+DAA2G;AAG3G,6FAA0F;AAC1F,mGAAgG;AAEhG,MAAa,sBAAuB,SAAQ,0CAA2B;IAwCnE,YACoB,EAAU,EACnB,OAAmB,EAC1B,MAAwB,EACxB,WAA4C,EAAE,EAC9C,cAA6C,EAC7C,SAAmC,EACnC,iBAAyC;QACzC,KAAK,CAAC,sBAAsB,CAAC,kCAAkC,CAC3D,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,CACpB,CAAC,CAAC;QAfa,OAAE,GAAF,EAAE,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAY;QAzCtB,gBAAW,GAAuB,SAAS,CAAC;IAwDpD,CAAC;IAtDD,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEO,MAAM,CAAC,kCAAkC,CAC7C,EAAU,EACV,OAAmB,EACnB,MAAwB,EACxB,QAAyC,EACzC,cAA6C,EAC7C,SAAmC,EACnC,iBAAyC;QACzC,MAAM,cAAc,GAAG,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,wBAAwB,EAAC,CAAC;YAC7D,IAAI,uEAAkC,CAClC,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EACT,iBAAiB,CACpB,CAAC,CAAC;YACH,IAAI,6EAAqC,CACrC,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,CACpB,CAAC;QACN,mGAAmG;QACnG,IAAI,EAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,wBAAwB,CAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,wCAAmB,CAAC,QAAQ,EAAE;YAChG,OAAO,IAAI,6CAA8B,CAAC,cAAc,CAAC,CAAC;SAC7D;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAqBM,KAAK,CAAC,eAAe,CAAC,OAAkB;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;SAClG;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAlED,wDAkEC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport {\n IDocumentStorageService,\n IDocumentStorageServicePolicies,\n LoaderCachingPolicy,\n } from \"@fluidframework/driver-definitions\";\nimport {\n ISnapshotTree,\n IVersion,\n} from \"@fluidframework/protocol-definitions\";\nimport {\n GitManager,\n} from \"@fluidframework/server-services-client\";\nimport { DocumentStorageServiceProxy, PrefetchDocumentStorageService } from \"@fluidframework/driver-utils\";\nimport { IRouterliciousDriverPolicies } from \"./policies\";\nimport { ICache } from \"./cache\";\nimport { WholeSummaryDocumentStorageService } from \"./wholeSummaryDocumentStorageService\";\nimport { ShreddedSummaryDocumentStorageService } from \"./shreddedSummaryDocumentStorageService\";\n\nexport class DocumentStorageService extends DocumentStorageServiceProxy {\n private _logTailSha: string | undefined = undefined;\n\n public get logTailSha(): string | undefined {\n return this._logTailSha;\n }\n\n private static loadInternalDocumentStorageService(\n id: string,\n manager: GitManager,\n logger: ITelemetryLogger,\n policies: IDocumentStorageServicePolicies,\n driverPolicies?: IRouterliciousDriverPolicies,\n blobCache?: ICache<ArrayBufferLike>,\n snapshotTreeCache?: ICache<ISnapshotTree>): IDocumentStorageService {\n const storageService = driverPolicies?.enableWholeSummaryUpload ?\n new WholeSummaryDocumentStorageService(\n id,\n manager,\n logger,\n policies,\n blobCache,\n snapshotTreeCache,\n ) :\n new ShreddedSummaryDocumentStorageService(\n id,\n manager,\n logger,\n policies,\n driverPolicies,\n blobCache,\n snapshotTreeCache,\n );\n // TODO: worth prefetching latest summary making version + snapshot call with WholeSummary storage?\n if (!driverPolicies?.enableWholeSummaryUpload && policies.caching === LoaderCachingPolicy.Prefetch) {\n return new PrefetchDocumentStorageService(storageService);\n }\n return storageService;\n }\n\n constructor(\n public readonly id: string,\n public manager: GitManager,\n logger: ITelemetryLogger,\n policies: IDocumentStorageServicePolicies = {},\n driverPolicies?: IRouterliciousDriverPolicies,\n blobCache?: ICache<ArrayBufferLike>,\n snapshotTreeCache?: ICache<ISnapshotTree>) {\n super(DocumentStorageService.loadInternalDocumentStorageService(\n id,\n manager,\n logger,\n policies,\n driverPolicies,\n blobCache,\n snapshotTreeCache,\n ));\n }\n\n public async getSnapshotTree(version?: IVersion): Promise<ISnapshotTree | null> {\n const tree = await this.internalStorageService.getSnapshotTree(version);\n if (tree !== null) {\n this._logTailSha = \".logTail\" in tree.trees ? tree.trees[\".logTail\"].blobs.logTail : undefined;\n }\n return tree;\n }\n}\n"]}
|
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/routerlicious-driver";
|
|
8
|
-
export declare const pkgVersion = "0.
|
|
8
|
+
export declare const pkgVersion = "0.53.0-46105";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,yCAAyC,CAAC;AAC9D,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,yCAAyC,CAAC;AAC9D,eAAO,MAAM,UAAU,iBAAiB,CAAC"}
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/routerlicious-driver";
|
|
11
|
-
exports.pkgVersion = "0.
|
|
11
|
+
exports.pkgVersion = "0.53.0-46105";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,sCAAsC,CAAC;AACjD,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,sCAAsC,CAAC;AACjD,QAAA,UAAU,GAAG,cAAc,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/routerlicious-driver\";\nexport const pkgVersion = \"0.53.0-46105\";\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import type { ITelemetryLogger } from "@fluidframework/common-definitions";
|
|
6
|
+
import { IDocumentStorageService, ISummaryContext, IDocumentStorageServicePolicies } from "@fluidframework/driver-definitions";
|
|
7
|
+
import { ICreateBlobResponse, ISnapshotTree, ISnapshotTreeEx, ISummaryHandle, ISummaryTree, ITree, IVersion } from "@fluidframework/protocol-definitions";
|
|
8
|
+
import { GitManager } from "@fluidframework/server-services-client";
|
|
9
|
+
import { IRouterliciousDriverPolicies } from "./policies";
|
|
10
|
+
import { ICache } from "./cache";
|
|
11
|
+
/**
|
|
12
|
+
* Document access to underlying storage for routerlicious driver.
|
|
13
|
+
* Uploads summaries piece-by-piece traversing the tree recursively.
|
|
14
|
+
* Downloads summaries piece-by-piece on-demand, or up-front when prefetch is enabled.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ShreddedSummaryDocumentStorageService implements IDocumentStorageService {
|
|
17
|
+
protected readonly id: string;
|
|
18
|
+
protected readonly manager: GitManager;
|
|
19
|
+
protected readonly logger: ITelemetryLogger;
|
|
20
|
+
readonly policies: IDocumentStorageServicePolicies;
|
|
21
|
+
protected readonly blobsShaCache: Map<string, string>;
|
|
22
|
+
private readonly blobCache;
|
|
23
|
+
private readonly snapshotTreeCache;
|
|
24
|
+
private readonly summaryUploadManager;
|
|
25
|
+
get repositoryUrl(): string;
|
|
26
|
+
constructor(id: string, manager: GitManager, logger: ITelemetryLogger, policies?: IDocumentStorageServicePolicies, driverPolicies?: IRouterliciousDriverPolicies, blobCache?: ICache<ArrayBufferLike>, snapshotTreeCache?: ICache<ISnapshotTree>);
|
|
27
|
+
getVersions(versionId: string, count: number): Promise<IVersion[]>;
|
|
28
|
+
getSnapshotTree(version?: IVersion): Promise<ISnapshotTreeEx | null>;
|
|
29
|
+
readBlob(blobId: string): Promise<ArrayBufferLike>;
|
|
30
|
+
write(tree: ITree, parents: string[], message: string, ref: string): Promise<IVersion>;
|
|
31
|
+
uploadSummaryWithContext(summary: ISummaryTree, context: ISummaryContext): Promise<string>;
|
|
32
|
+
downloadSummary(handle: ISummaryHandle): Promise<ISummaryTree>;
|
|
33
|
+
createBlob(file: ArrayBufferLike): Promise<ICreateBlobResponse>;
|
|
34
|
+
private getPreviousFullSnapshot;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=shreddedSummaryDocumentStorageService.d.ts.map
|