@fluidframework/driver-utils 2.0.0-rc.4.0.6 → 2.0.0-rc.5.0.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/CHANGELOG.md +8 -0
- package/api-extractor/api-extractor-lint-bundle.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
- package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-public.esm.json +5 -0
- package/api-extractor.json +1 -1
- package/api-report/driver-utils.alpha.api.md +78 -0
- package/api-report/driver-utils.beta.api.md +65 -0
- package/api-report/driver-utils.public.api.md +65 -0
- package/biome.jsonc +4 -0
- package/dist/adapters/compression/documentServiceCompressionAdapter.js.map +1 -1
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts +1 -1
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts.map +1 -1
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.js.map +1 -1
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts +3 -3
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts.map +1 -1
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js +8 -8
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js.map +1 -1
- package/dist/adapters/predefinedAdapters.js.map +1 -1
- package/dist/blob.d.ts +1 -1
- package/dist/blob.d.ts.map +1 -1
- package/dist/blob.js +7 -7
- package/dist/blob.js.map +1 -1
- package/dist/buildSnapshotTree.d.ts +1 -1
- package/dist/buildSnapshotTree.d.ts.map +1 -1
- package/dist/buildSnapshotTree.js +8 -8
- package/dist/buildSnapshotTree.js.map +1 -1
- package/dist/documentServiceFactoryProxy.d.ts +1 -1
- package/dist/documentServiceFactoryProxy.d.ts.map +1 -1
- package/dist/documentServiceFactoryProxy.js.map +1 -1
- package/dist/documentServiceProxy.d.ts +1 -1
- package/dist/documentServiceProxy.d.ts.map +1 -1
- package/dist/documentServiceProxy.js.map +1 -1
- package/dist/documentStorageServiceProxy.d.ts +2 -2
- package/dist/documentStorageServiceProxy.d.ts.map +1 -1
- package/dist/documentStorageServiceProxy.js.map +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/insecureUrlResolver.d.ts.map +1 -1
- package/dist/insecureUrlResolver.js.map +1 -1
- package/dist/messageRecognition.d.ts +1 -1
- package/dist/messageRecognition.d.ts.map +1 -1
- package/dist/messageRecognition.js +3 -3
- package/dist/messageRecognition.js.map +1 -1
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js.map +1 -1
- 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 +1 -2
- package/dist/parallelRequests.d.ts.map +1 -1
- package/dist/parallelRequests.js.map +1 -1
- package/dist/prefetchDocumentStorageService.d.ts +1 -2
- package/dist/prefetchDocumentStorageService.d.ts.map +1 -1
- package/dist/prefetchDocumentStorageService.js.map +1 -1
- package/dist/protocol/gitHelper.d.ts +33 -0
- package/dist/protocol/gitHelper.d.ts.map +1 -0
- package/dist/protocol/gitHelper.js +88 -0
- package/dist/protocol/gitHelper.js.map +1 -0
- package/dist/protocol/index.d.ts +6 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +12 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/rateLimiter.js.map +1 -1
- package/dist/runWithRetry.js.map +1 -1
- package/dist/storageUtils.d.ts +1 -2
- package/dist/storageUtils.d.ts.map +1 -1
- package/dist/storageUtils.js.map +1 -1
- package/dist/summaryForCreateNew.d.ts +2 -1
- package/dist/summaryForCreateNew.d.ts.map +1 -1
- package/dist/summaryForCreateNew.js +3 -3
- package/dist/summaryForCreateNew.js.map +1 -1
- package/dist/treeConversions.d.ts +2 -1
- package/dist/treeConversions.d.ts.map +1 -1
- package/dist/treeConversions.js +5 -5
- package/dist/treeConversions.js.map +1 -1
- package/lib/adapters/compression/documentServiceCompressionAdapter.js.map +1 -1
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts +1 -1
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts.map +1 -1
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.js.map +1 -1
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts +3 -3
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts.map +1 -1
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js +2 -2
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js.map +1 -1
- package/lib/adapters/predefinedAdapters.js.map +1 -1
- package/lib/blob.d.ts +1 -1
- package/lib/blob.d.ts.map +1 -1
- package/lib/blob.js +1 -1
- package/lib/blob.js.map +1 -1
- package/lib/buildSnapshotTree.d.ts +1 -1
- package/lib/buildSnapshotTree.d.ts.map +1 -1
- package/lib/buildSnapshotTree.js +2 -2
- package/lib/buildSnapshotTree.js.map +1 -1
- package/lib/documentServiceFactoryProxy.d.ts +1 -1
- package/lib/documentServiceFactoryProxy.d.ts.map +1 -1
- package/lib/documentServiceFactoryProxy.js.map +1 -1
- package/lib/documentServiceProxy.d.ts +1 -1
- package/lib/documentServiceProxy.d.ts.map +1 -1
- package/lib/documentServiceProxy.js.map +1 -1
- package/lib/documentStorageServiceProxy.d.ts +2 -2
- package/lib/documentStorageServiceProxy.d.ts.map +1 -1
- package/lib/documentStorageServiceProxy.js.map +1 -1
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js +1 -1
- package/lib/error.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/insecureUrlResolver.d.ts.map +1 -1
- package/lib/insecureUrlResolver.js.map +1 -1
- package/lib/messageRecognition.d.ts +1 -1
- package/lib/messageRecognition.d.ts.map +1 -1
- package/lib/messageRecognition.js +1 -1
- package/lib/messageRecognition.js.map +1 -1
- package/lib/network.d.ts.map +1 -1
- package/lib/network.js.map +1 -1
- 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 +1 -2
- package/lib/parallelRequests.d.ts.map +1 -1
- package/lib/parallelRequests.js +2 -2
- package/lib/parallelRequests.js.map +1 -1
- package/lib/prefetchDocumentStorageService.d.ts +1 -2
- package/lib/prefetchDocumentStorageService.d.ts.map +1 -1
- package/lib/prefetchDocumentStorageService.js +1 -1
- package/lib/prefetchDocumentStorageService.js.map +1 -1
- package/lib/protocol/gitHelper.d.ts +33 -0
- package/lib/protocol/gitHelper.d.ts.map +1 -0
- package/lib/protocol/gitHelper.js +82 -0
- package/lib/protocol/gitHelper.js.map +1 -0
- package/lib/protocol/index.d.ts +6 -0
- package/lib/protocol/index.d.ts.map +1 -0
- package/lib/protocol/index.js +6 -0
- package/lib/protocol/index.js.map +1 -0
- package/lib/rateLimiter.js.map +1 -1
- package/lib/runWithRetry.js.map +1 -1
- package/lib/storageUtils.d.ts +1 -2
- package/lib/storageUtils.d.ts.map +1 -1
- package/lib/storageUtils.js.map +1 -1
- package/lib/summaryForCreateNew.d.ts +2 -1
- package/lib/summaryForCreateNew.d.ts.map +1 -1
- package/lib/summaryForCreateNew.js +1 -1
- package/lib/summaryForCreateNew.js.map +1 -1
- package/lib/treeConversions.d.ts +2 -1
- package/lib/treeConversions.d.ts.map +1 -1
- package/lib/treeConversions.js +1 -1
- package/lib/treeConversions.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +25 -19
- package/src/adapters/compression/documentServiceFactoryCompressionAdapter.ts +5 -6
- package/src/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.ts +17 -13
- package/src/blob.ts +1 -1
- package/src/buildSnapshotTree.ts +10 -8
- package/src/documentServiceFactoryProxy.ts +1 -1
- package/src/documentServiceProxy.ts +1 -1
- package/src/documentStorageServiceProxy.ts +8 -6
- package/src/error.ts +4 -1
- package/src/index.ts +6 -1
- package/src/insecureUrlResolver.ts +4 -1
- package/src/messageRecognition.ts +2 -2
- package/src/network.ts +12 -3
- package/src/packageVersion.ts +1 -1
- package/src/parallelRequests.ts +12 -13
- package/src/prefetchDocumentStorageService.ts +5 -2
- package/src/protocol/README.md +11 -0
- package/src/protocol/gitHelper.ts +98 -0
- package/src/protocol/index.ts +6 -0
- package/src/storageUtils.ts +1 -2
- package/src/summaryForCreateNew.ts +2 -4
- package/src/treeConversions.ts +3 -2
- package/tsconfig.json +2 -0
- package/tsdoc.json +4 -0
- package/api-report/driver-utils.api.md +0 -408
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { ISummaryHandle, ISummaryTree } from "@fluidframework/driver-definitions";
|
|
6
7
|
import {
|
|
7
8
|
FetchSource,
|
|
8
9
|
IDocumentStorageService,
|
|
@@ -10,14 +11,10 @@ import {
|
|
|
10
11
|
ISnapshot,
|
|
11
12
|
ISnapshotFetchOptions,
|
|
12
13
|
ISummaryContext,
|
|
13
|
-
} from "@fluidframework/driver-definitions/internal";
|
|
14
|
-
import {
|
|
15
14
|
ICreateBlobResponse,
|
|
16
15
|
ISnapshotTree,
|
|
17
|
-
ISummaryHandle,
|
|
18
|
-
ISummaryTree,
|
|
19
16
|
IVersion,
|
|
20
|
-
} from "@fluidframework/
|
|
17
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
21
18
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
22
19
|
|
|
23
20
|
/**
|
|
@@ -58,7 +55,12 @@ export class DocumentStorageServiceProxy implements IDocumentStorageService {
|
|
|
58
55
|
scenarioName?: string,
|
|
59
56
|
fetchSource?: FetchSource,
|
|
60
57
|
): Promise<IVersion[]> {
|
|
61
|
-
return this.internalStorageService.getVersions(
|
|
58
|
+
return this.internalStorageService.getVersions(
|
|
59
|
+
versionId,
|
|
60
|
+
count,
|
|
61
|
+
scenarioName,
|
|
62
|
+
fetchSource,
|
|
63
|
+
);
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
public async uploadSummaryWithContext(
|
package/src/error.ts
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
DriverErrorTypes,
|
|
8
|
+
IDriverErrorBase,
|
|
9
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
7
10
|
import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils/internal";
|
|
8
11
|
|
|
9
12
|
/**
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,11 @@ export { BlobTreeEntry, TreeTreeEntry, AttachmentTreeEntry } from "./blob.js";
|
|
|
8
8
|
export { DocumentStorageServiceProxy } from "./documentStorageServiceProxy.js";
|
|
9
9
|
export { UsageError } from "./error.js";
|
|
10
10
|
export { InsecureUrlResolver } from "./insecureUrlResolver.js";
|
|
11
|
-
export {
|
|
11
|
+
export {
|
|
12
|
+
canBeCoalescedByService,
|
|
13
|
+
isRuntimeMessage,
|
|
14
|
+
MessageType2,
|
|
15
|
+
} from "./messageRecognition.js";
|
|
12
16
|
export {
|
|
13
17
|
AuthorizationError,
|
|
14
18
|
canRetryOnError,
|
|
@@ -55,3 +59,4 @@ export {
|
|
|
55
59
|
blobHeadersBlobName,
|
|
56
60
|
} from "./adapters/index.js";
|
|
57
61
|
export { getSnapshotTree, isInstanceOfISnapshot } from "./storageUtils.js";
|
|
62
|
+
export { buildGitTreeHierarchy, getGitMode, getGitType } from "./protocol/index.js";
|
|
@@ -138,7 +138,10 @@ export class InsecureUrlResolver implements IUrlResolver {
|
|
|
138
138
|
return response;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
public async getAbsoluteUrl(
|
|
141
|
+
public async getAbsoluteUrl(
|
|
142
|
+
resolvedUrl: IResolvedUrl,
|
|
143
|
+
relativeUrl: string,
|
|
144
|
+
): Promise<string> {
|
|
142
145
|
const parsedUrl = new URL(resolvedUrl.url);
|
|
143
146
|
const [, , documentId] = parsedUrl.pathname?.split("/") ?? [];
|
|
144
147
|
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
IDocumentMessage,
|
|
8
7
|
ISequencedDocumentMessage,
|
|
8
|
+
IDocumentMessage,
|
|
9
9
|
MessageType,
|
|
10
|
-
} from "@fluidframework/
|
|
10
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Tells if message was sent by container runtime
|
package/src/network.ts
CHANGED
|
@@ -52,7 +52,10 @@ export type DriverErrorTelemetryProps = ITelemetryBaseProperties & {
|
|
|
52
52
|
* Generic network error class.
|
|
53
53
|
* @internal
|
|
54
54
|
*/
|
|
55
|
-
export class GenericNetworkError
|
|
55
|
+
export class GenericNetworkError
|
|
56
|
+
extends LoggingError
|
|
57
|
+
implements IDriverErrorBase, IFluidErrorBase
|
|
58
|
+
{
|
|
56
59
|
/**
|
|
57
60
|
* {@inheritDoc @fluidframework/telemetry-utils#IFluidErrorBase.errorType}
|
|
58
61
|
*/
|
|
@@ -145,7 +148,10 @@ export class LocationRedirectionError
|
|
|
145
148
|
/**
|
|
146
149
|
* @internal
|
|
147
150
|
*/
|
|
148
|
-
export class NetworkErrorBasic<T extends string>
|
|
151
|
+
export class NetworkErrorBasic<T extends string>
|
|
152
|
+
extends LoggingError
|
|
153
|
+
implements IFluidErrorBase
|
|
154
|
+
{
|
|
149
155
|
constructor(
|
|
150
156
|
message: string,
|
|
151
157
|
readonly errorType: T,
|
|
@@ -186,7 +192,10 @@ export class RetryableError<T extends string> extends NetworkErrorBasic<T> {
|
|
|
186
192
|
* Throttling error class - used to communicate all throttling errors
|
|
187
193
|
* @internal
|
|
188
194
|
*/
|
|
189
|
-
export class ThrottlingError
|
|
195
|
+
export class ThrottlingError
|
|
196
|
+
extends LoggingError
|
|
197
|
+
implements IThrottlingWarning, IFluidErrorBase
|
|
198
|
+
{
|
|
190
199
|
readonly errorType = DriverErrorTypes.throttlingError;
|
|
191
200
|
readonly canRetry = true;
|
|
192
201
|
|
package/src/packageVersion.ts
CHANGED
package/src/parallelRequests.ts
CHANGED
|
@@ -10,11 +10,18 @@ import {
|
|
|
10
10
|
IDeltasFetchResult,
|
|
11
11
|
IStream,
|
|
12
12
|
IStreamResult,
|
|
13
|
+
ISequencedDocumentMessage,
|
|
13
14
|
} from "@fluidframework/driver-definitions/internal";
|
|
14
|
-
import {
|
|
15
|
-
|
|
15
|
+
import {
|
|
16
|
+
ITelemetryLoggerExt,
|
|
17
|
+
PerformanceEvent,
|
|
18
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
16
19
|
|
|
17
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
canRetryOnError,
|
|
22
|
+
createGenericNetworkError,
|
|
23
|
+
getRetryDelayFromError,
|
|
24
|
+
} from "./network.js";
|
|
18
25
|
import { logNetworkFailure } from "./networkUtils.js";
|
|
19
26
|
// For now, this package is versioned and released in unison with the specific drivers
|
|
20
27
|
import { pkgVersion as driverVersion } from "./packageVersion.js";
|
|
@@ -204,13 +211,7 @@ export class ParallelRequests<T> {
|
|
|
204
211
|
|
|
205
212
|
this.requests++;
|
|
206
213
|
|
|
207
|
-
const promise = this.requestCallback(
|
|
208
|
-
this.requests,
|
|
209
|
-
from,
|
|
210
|
-
to,
|
|
211
|
-
this.to !== undefined,
|
|
212
|
-
{},
|
|
213
|
-
);
|
|
214
|
+
const promise = this.requestCallback(this.requests, from, to, this.to !== undefined, {});
|
|
214
215
|
|
|
215
216
|
// dispatch any prior received data
|
|
216
217
|
this.dispatch();
|
|
@@ -439,9 +440,7 @@ async function getSingleOpBatch(
|
|
|
439
440
|
|
|
440
441
|
try {
|
|
441
442
|
// Issue async request for deltas
|
|
442
|
-
const { messages, partialResult } = await get(
|
|
443
|
-
{ ...props, retry } /* telemetry props */,
|
|
444
|
-
);
|
|
443
|
+
const { messages, partialResult } = await get({ ...props, retry } /* telemetry props */);
|
|
445
444
|
|
|
446
445
|
// If we got messages back, return them. Return regardless of whether we got messages back if we didn't
|
|
447
446
|
// specify a "to", since we don't have an expectation of how many to receive.
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
LoaderCachingPolicy,
|
|
8
|
+
ISnapshotTree,
|
|
9
|
+
IVersion,
|
|
10
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
8
11
|
|
|
9
12
|
import { DocumentStorageServiceProxy } from "./documentStorageServiceProxy.js";
|
|
10
13
|
import { canRetryOnError } from "./network.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# @fluidframework/driver-utils/src/protocol
|
|
2
|
+
|
|
3
|
+
These files should not be changed unless the Fluid service itself is changed, and
|
|
4
|
+
should be aligned with the service side definitions contained here:
|
|
5
|
+
|
|
6
|
+
server/routerlicious/packages/protocol-base
|
|
7
|
+
|
|
8
|
+
## Notes
|
|
9
|
+
|
|
10
|
+
The file names in this directory align with those in server/protocol-base to facilitate
|
|
11
|
+
copying/synchronization in the future, if desireable.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import {
|
|
8
|
+
FileMode,
|
|
9
|
+
IGitTree,
|
|
10
|
+
ISnapshotTreeEx,
|
|
11
|
+
SummaryType,
|
|
12
|
+
SummaryObject,
|
|
13
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Take a summary object and returns its git mode.
|
|
17
|
+
*
|
|
18
|
+
* @param value - summary object
|
|
19
|
+
* @returns the git mode of summary object
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export function getGitMode(value: SummaryObject): string {
|
|
23
|
+
const type = value.type === SummaryType.Handle ? value.handleType : value.type;
|
|
24
|
+
switch (type) {
|
|
25
|
+
case SummaryType.Blob:
|
|
26
|
+
case SummaryType.Attachment:
|
|
27
|
+
return FileMode.File;
|
|
28
|
+
case SummaryType.Tree:
|
|
29
|
+
return FileMode.Directory;
|
|
30
|
+
default:
|
|
31
|
+
unreachableCase(type, `Unknown type: ${type}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Take a summary object and returns its type.
|
|
37
|
+
*
|
|
38
|
+
* @param value - summary object
|
|
39
|
+
* @returns the type of summary object
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export function getGitType(value: SummaryObject): "blob" | "tree" {
|
|
43
|
+
const type = value.type === SummaryType.Handle ? value.handleType : value.type;
|
|
44
|
+
|
|
45
|
+
switch (type) {
|
|
46
|
+
case SummaryType.Blob:
|
|
47
|
+
case SummaryType.Attachment:
|
|
48
|
+
return "blob";
|
|
49
|
+
case SummaryType.Tree:
|
|
50
|
+
return "tree";
|
|
51
|
+
default:
|
|
52
|
+
unreachableCase(type, `Unknown type: ${type}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* NOTE: Renamed from `buildHierarchy` to `buildGitTreeHierarchy`. There is usage of this function in loader and driver layer.
|
|
58
|
+
* Build a tree hierarchy base on a flat tree
|
|
59
|
+
*
|
|
60
|
+
* @param flatTree - a flat tree
|
|
61
|
+
* @param blobsShaToPathCache - Map with blobs sha as keys and values as path of the blob.
|
|
62
|
+
* @param removeAppTreePrefix - Remove `.app/` from beginning of paths when present
|
|
63
|
+
* @returns the hierarchical tree
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
export function buildGitTreeHierarchy(
|
|
67
|
+
flatTree: IGitTree,
|
|
68
|
+
blobsShaToPathCache: Map<string, string> = new Map<string, string>(),
|
|
69
|
+
removeAppTreePrefix = false,
|
|
70
|
+
): ISnapshotTreeEx {
|
|
71
|
+
const lookup: { [path: string]: ISnapshotTreeEx } = {};
|
|
72
|
+
const root: ISnapshotTreeEx = { id: flatTree.sha, blobs: {}, trees: {} };
|
|
73
|
+
lookup[""] = root;
|
|
74
|
+
|
|
75
|
+
for (const entry of flatTree.tree) {
|
|
76
|
+
const entryPath = removeAppTreePrefix ? entry.path.replace(/^\.app\//, "") : entry.path;
|
|
77
|
+
const lastIndex = entryPath.lastIndexOf("/");
|
|
78
|
+
const entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));
|
|
79
|
+
const entryPathBase = entryPath.slice(lastIndex + 1);
|
|
80
|
+
|
|
81
|
+
// The flat output is breadth-first so we can assume we see tree nodes prior to their contents
|
|
82
|
+
const node = lookup[entryPathDir];
|
|
83
|
+
|
|
84
|
+
// Add in either the blob or tree
|
|
85
|
+
if (entry.type === "tree") {
|
|
86
|
+
const newTree = { id: entry.sha, blobs: {}, commits: {}, trees: {} };
|
|
87
|
+
node.trees[decodeURIComponent(entryPathBase)] = newTree;
|
|
88
|
+
lookup[entryPath] = newTree;
|
|
89
|
+
} else if (entry.type === "blob") {
|
|
90
|
+
node.blobs[decodeURIComponent(entryPathBase)] = entry.sha;
|
|
91
|
+
blobsShaToPathCache.set(entry.sha, `/${entryPath}`);
|
|
92
|
+
} else {
|
|
93
|
+
throw new Error("Unknown entry type!!");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return root;
|
|
98
|
+
}
|
package/src/storageUtils.ts
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ISnapshot } from "@fluidframework/driver-definitions/internal";
|
|
7
|
-
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
6
|
+
import { ISnapshot, ISnapshotTree } from "@fluidframework/driver-definitions/internal";
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* Utility API to check if the type of snapshot contents is `ISnapshot`.
|
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { ISummaryBlob, ISummaryTree, SummaryType } from "@fluidframework/driver-definitions";
|
|
6
7
|
import {
|
|
7
8
|
ICommittedProposal,
|
|
8
9
|
IDocumentAttributes,
|
|
9
|
-
|
|
10
|
-
ISummaryTree,
|
|
11
|
-
SummaryType,
|
|
12
|
-
} from "@fluidframework/protocol-definitions";
|
|
10
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* Defines the current layout of an .app + .protocol summary tree
|
package/src/treeConversions.ts
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import { Uint8ArrayToString } from "@fluid-internal/client-utils";
|
|
7
7
|
import { unreachableCase } from "@fluidframework/core-utils/internal";
|
|
8
|
-
import { ISummaryTree,
|
|
8
|
+
import { ISummaryTree, SummaryType } from "@fluidframework/driver-definitions";
|
|
9
|
+
import { ITree, ITreeEntry } from "@fluidframework/driver-definitions/internal";
|
|
9
10
|
|
|
10
11
|
import { AttachmentTreeEntry, BlobTreeEntry, TreeTreeEntry } from "./blob.js";
|
|
11
12
|
import { isCombinedAppAndProtocolSummary } from "./summaryForCreateNew.js";
|
|
@@ -22,7 +23,7 @@ export function convertSummaryTreeToSnapshotITree(summaryTree: ISummaryTree): IT
|
|
|
22
23
|
? [
|
|
23
24
|
...Object.entries(summaryTree.tree[".protocol"].tree),
|
|
24
25
|
...Object.entries(summaryTree.tree[".app"].tree),
|
|
25
|
-
|
|
26
|
+
]
|
|
26
27
|
: Object.entries(summaryTree.tree);
|
|
27
28
|
|
|
28
29
|
for (const [key, value] of allSummaryEntries) {
|
package/tsconfig.json
CHANGED
package/tsdoc.json
ADDED