@fluidframework/container-loader 2.63.0-359734 → 2.63.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 +4 -0
- package/api-report/container-loader.legacy.alpha.api.md +31 -0
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +12 -8
- package/dist/container.js.map +1 -1
- package/dist/containerStorageAdapter.d.ts +7 -13
- package/dist/containerStorageAdapter.d.ts.map +1 -1
- package/dist/containerStorageAdapter.js +9 -14
- package/dist/containerStorageAdapter.js.map +1 -1
- package/dist/createAndLoadContainerUtils.d.ts +13 -0
- package/dist/createAndLoadContainerUtils.d.ts.map +1 -1
- package/dist/createAndLoadContainerUtils.js +118 -2
- package/dist/createAndLoadContainerUtils.js.map +1 -1
- package/dist/frozenServices.d.ts +10 -1
- package/dist/frozenServices.d.ts.map +1 -1
- package/dist/frozenServices.js +24 -4
- package/dist/frozenServices.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/legacyAlpha.d.ts +7 -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/serializedStateManager.d.ts +10 -6
- package/dist/serializedStateManager.d.ts.map +1 -1
- package/dist/serializedStateManager.js +76 -77
- package/dist/serializedStateManager.js.map +1 -1
- package/dist/summarizerResultTypes.d.ts +96 -0
- package/dist/summarizerResultTypes.d.ts.map +1 -0
- package/dist/summarizerResultTypes.js +9 -0
- package/dist/summarizerResultTypes.js.map +1 -0
- package/dist/utils.d.ts +4 -5
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +14 -13
- package/dist/utils.js.map +1 -1
- package/lib/container.d.ts.map +1 -1
- package/lib/container.js +13 -9
- package/lib/container.js.map +1 -1
- package/lib/containerStorageAdapter.d.ts +7 -13
- package/lib/containerStorageAdapter.d.ts.map +1 -1
- package/lib/containerStorageAdapter.js +10 -15
- package/lib/containerStorageAdapter.js.map +1 -1
- package/lib/createAndLoadContainerUtils.d.ts +13 -0
- package/lib/createAndLoadContainerUtils.d.ts.map +1 -1
- package/lib/createAndLoadContainerUtils.js +117 -2
- package/lib/createAndLoadContainerUtils.js.map +1 -1
- package/lib/frozenServices.d.ts +10 -1
- package/lib/frozenServices.d.ts.map +1 -1
- package/lib/frozenServices.js +20 -1
- package/lib/frozenServices.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/legacyAlpha.d.ts +7 -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/serializedStateManager.d.ts +10 -6
- package/lib/serializedStateManager.d.ts.map +1 -1
- package/lib/serializedStateManager.js +78 -79
- package/lib/serializedStateManager.js.map +1 -1
- package/lib/summarizerResultTypes.d.ts +96 -0
- package/lib/summarizerResultTypes.d.ts.map +1 -0
- package/lib/summarizerResultTypes.js +6 -0
- package/lib/summarizerResultTypes.js.map +1 -0
- package/lib/utils.d.ts +4 -5
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +15 -14
- package/lib/utils.js.map +1 -1
- package/package.json +11 -11
- package/src/container.ts +19 -14
- package/src/containerStorageAdapter.ts +14 -18
- package/src/createAndLoadContainerUtils.ts +176 -2
- package/src/frozenServices.ts +28 -2
- package/src/index.ts +8 -0
- package/src/packageVersion.ts +1 -1
- package/src/serializedStateManager.ts +118 -109
- package/src/summarizerResultTypes.ts +115 -0
- package/src/utils.ts +20 -20
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { ConnectionState } from "./connectionState.js";
|
|
6
6
|
export { type ContainerAlpha, waitContainerToCatchUp, asLegacyAlpha } from "./container.js";
|
|
7
|
-
export {
|
|
7
|
+
export { createFrozenDocumentServiceFactory } from "./frozenServices.js";
|
|
8
|
+
export { createDetachedContainer, loadExistingContainer, rehydrateDetachedContainer, loadFrozenContainerFromPendingState, loadSummarizerContainerAndMakeSummary, type ICreateAndLoadContainerProps, type ICreateDetachedContainerProps, type ILoadExistingContainerProps, type ILoadSummarizerContainerProps, type IRehydrateDetachedContainerProps, type ILoadFrozenContainerFromPendingStateProps, } from "./createAndLoadContainerUtils.js";
|
|
9
|
+
export type { LoadSummarizerSummaryResult, OnDemandSummaryResults, SummaryStage, } from "./summarizerResultTypes.js";
|
|
8
10
|
export { type ICodeDetailsLoader, type IFluidModuleWithDetails, type ILoaderProps, type ILoaderServices, Loader, } from "./loader.js";
|
|
9
11
|
export { driverSupportRequirementsForLoader, loaderCoreCompatDetails, runtimeSupportRequirementsForLoader, loaderCompatDetailsForRuntime, } from "./loaderLayerCompatState.js";
|
|
10
12
|
export { loadContainerPaused } from "./loadPaused.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,mCAAmC,EACnC,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,yCAAyC,GAC9C,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,MAAM,GACN,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,kCAAkC,EAClC,uBAAuB,EACvB,mCAAmC,EACnC,6BAA6B,GAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACN,0BAA0B,EAC1B,sCAAsC,GACtC,MAAM,2CAA2C,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACN,6BAA6B,EAC7B,KAAK,UAAU,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GACvB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,kCAAkC,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,mCAAmC,EACnC,qCAAqC,EACrC,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,KAAK,yCAAyC,GAC9C,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACX,2BAA2B,EAC3B,sBAAsB,EACtB,YAAY,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,MAAM,GACN,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,kCAAkC,EAClC,uBAAuB,EACvB,mCAAmC,EACnC,6BAA6B,GAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACN,0BAA0B,EAC1B,sCAAsC,GACtC,MAAM,2CAA2C,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACN,6BAA6B,EAC7B,KAAK,UAAU,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GACvB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,17 +4,20 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.tryParseCompatibleResolvedUrl = exports.resolveWithLocationRedirectionHandling = exports.isLocationRedirectionError = exports.loadContainerPaused = exports.loaderCompatDetailsForRuntime = exports.runtimeSupportRequirementsForLoader = exports.loaderCoreCompatDetails = exports.driverSupportRequirementsForLoader = exports.Loader = exports.loadFrozenContainerFromPendingState = exports.rehydrateDetachedContainer = exports.loadExistingContainer = exports.createDetachedContainer = exports.asLegacyAlpha = exports.waitContainerToCatchUp = exports.ConnectionState = void 0;
|
|
7
|
+
exports.tryParseCompatibleResolvedUrl = exports.resolveWithLocationRedirectionHandling = exports.isLocationRedirectionError = exports.loadContainerPaused = exports.loaderCompatDetailsForRuntime = exports.runtimeSupportRequirementsForLoader = exports.loaderCoreCompatDetails = exports.driverSupportRequirementsForLoader = exports.Loader = exports.loadSummarizerContainerAndMakeSummary = exports.loadFrozenContainerFromPendingState = exports.rehydrateDetachedContainer = exports.loadExistingContainer = exports.createDetachedContainer = exports.createFrozenDocumentServiceFactory = exports.asLegacyAlpha = exports.waitContainerToCatchUp = exports.ConnectionState = void 0;
|
|
8
8
|
var connectionState_js_1 = require("./connectionState.js");
|
|
9
9
|
Object.defineProperty(exports, "ConnectionState", { enumerable: true, get: function () { return connectionState_js_1.ConnectionState; } });
|
|
10
10
|
var container_js_1 = require("./container.js");
|
|
11
11
|
Object.defineProperty(exports, "waitContainerToCatchUp", { enumerable: true, get: function () { return container_js_1.waitContainerToCatchUp; } });
|
|
12
12
|
Object.defineProperty(exports, "asLegacyAlpha", { enumerable: true, get: function () { return container_js_1.asLegacyAlpha; } });
|
|
13
|
+
var frozenServices_js_1 = require("./frozenServices.js");
|
|
14
|
+
Object.defineProperty(exports, "createFrozenDocumentServiceFactory", { enumerable: true, get: function () { return frozenServices_js_1.createFrozenDocumentServiceFactory; } });
|
|
13
15
|
var createAndLoadContainerUtils_js_1 = require("./createAndLoadContainerUtils.js");
|
|
14
16
|
Object.defineProperty(exports, "createDetachedContainer", { enumerable: true, get: function () { return createAndLoadContainerUtils_js_1.createDetachedContainer; } });
|
|
15
17
|
Object.defineProperty(exports, "loadExistingContainer", { enumerable: true, get: function () { return createAndLoadContainerUtils_js_1.loadExistingContainer; } });
|
|
16
18
|
Object.defineProperty(exports, "rehydrateDetachedContainer", { enumerable: true, get: function () { return createAndLoadContainerUtils_js_1.rehydrateDetachedContainer; } });
|
|
17
19
|
Object.defineProperty(exports, "loadFrozenContainerFromPendingState", { enumerable: true, get: function () { return createAndLoadContainerUtils_js_1.loadFrozenContainerFromPendingState; } });
|
|
20
|
+
Object.defineProperty(exports, "loadSummarizerContainerAndMakeSummary", { enumerable: true, get: function () { return createAndLoadContainerUtils_js_1.loadSummarizerContainerAndMakeSummary; } });
|
|
18
21
|
var loader_js_1 = require("./loader.js");
|
|
19
22
|
Object.defineProperty(exports, "Loader", { enumerable: true, get: function () { return loader_js_1.Loader; } });
|
|
20
23
|
var loaderLayerCompatState_js_1 = require("./loaderLayerCompatState.js");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AACxB,+CAA4F;AAA9D,sHAAA,sBAAsB,OAAA;AAAE,6GAAA,aAAa,OAAA;AACnE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AACxB,+CAA4F;AAA9D,sHAAA,sBAAsB,OAAA;AAAE,6GAAA,aAAa,OAAA;AACnE,yDAAyE;AAAhE,uIAAA,kCAAkC,OAAA;AAC3C,mFAY0C;AAXzC,yIAAA,uBAAuB,OAAA;AACvB,uIAAA,qBAAqB,OAAA;AACrB,4IAAA,0BAA0B,OAAA;AAC1B,qJAAA,mCAAmC,OAAA;AACnC,uJAAA,qCAAqC,OAAA;AAatC,yCAMqB;AADpB,mGAAA,MAAM,OAAA;AAEP,yEAKqC;AAJpC,+IAAA,kCAAkC,OAAA;AAClC,oIAAA,uBAAuB,OAAA;AACvB,gJAAA,mCAAmC,OAAA;AACnC,0IAAA,6BAA6B,OAAA;AAE9B,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA;AAC5B,sEAGmD;AAFlD,sHAAA,0BAA0B,OAAA;AAC1B,kIAAA,sCAAsC,OAAA;AAGvC,uCAGoB;AAFnB,yHAAA,6BAA6B,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { ConnectionState } from \"./connectionState.js\";\nexport { type ContainerAlpha, waitContainerToCatchUp, asLegacyAlpha } from \"./container.js\";\nexport { createFrozenDocumentServiceFactory } from \"./frozenServices.js\";\nexport {\n\tcreateDetachedContainer,\n\tloadExistingContainer,\n\trehydrateDetachedContainer,\n\tloadFrozenContainerFromPendingState,\n\tloadSummarizerContainerAndMakeSummary,\n\ttype ICreateAndLoadContainerProps,\n\ttype ICreateDetachedContainerProps,\n\ttype ILoadExistingContainerProps,\n\ttype ILoadSummarizerContainerProps,\n\ttype IRehydrateDetachedContainerProps,\n\ttype ILoadFrozenContainerFromPendingStateProps,\n} from \"./createAndLoadContainerUtils.js\";\nexport type {\n\tLoadSummarizerSummaryResult,\n\tOnDemandSummaryResults,\n\tSummaryStage,\n} from \"./summarizerResultTypes.js\";\nexport {\n\ttype ICodeDetailsLoader,\n\ttype IFluidModuleWithDetails,\n\ttype ILoaderProps,\n\ttype ILoaderServices,\n\tLoader,\n} from \"./loader.js\";\nexport {\n\tdriverSupportRequirementsForLoader,\n\tloaderCoreCompatDetails,\n\truntimeSupportRequirementsForLoader,\n\tloaderCompatDetailsForRuntime,\n} from \"./loaderLayerCompatState.js\";\nexport { loadContainerPaused } from \"./loadPaused.js\";\nexport {\n\tisLocationRedirectionError,\n\tresolveWithLocationRedirectionHandling,\n} from \"./location-redirection-utilities/index.js\";\nexport type { IProtocolHandler, ProtocolHandlerBuilder } from \"./protocol.js\";\nexport {\n\ttryParseCompatibleResolvedUrl,\n\ttype IParsedUrl,\n} from \"./utils.js\";\nexport type {\n\tIBaseProtocolHandler,\n\tIScribeProtocolState,\n\tIQuorumSnapshot,\n\tQuorumClientsSnapshot,\n\tQuorumProposalsSnapshot,\n} from \"./protocol/index.js\";\n"]}
|
package/dist/legacyAlpha.d.ts
CHANGED
|
@@ -42,7 +42,13 @@ export {
|
|
|
42
42
|
// #region @legacyAlpha APIs
|
|
43
43
|
ContainerAlpha,
|
|
44
44
|
ILoadFrozenContainerFromPendingStateProps,
|
|
45
|
+
ILoadSummarizerContainerProps,
|
|
46
|
+
LoadSummarizerSummaryResult,
|
|
47
|
+
OnDemandSummaryResults,
|
|
48
|
+
SummaryStage,
|
|
45
49
|
asLegacyAlpha,
|
|
46
|
-
|
|
50
|
+
createFrozenDocumentServiceFactory,
|
|
51
|
+
loadFrozenContainerFromPendingState,
|
|
52
|
+
loadSummarizerContainerAndMakeSummary
|
|
47
53
|
// #endregion
|
|
48
54
|
} from "./index.js";
|
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/container-loader";
|
|
8
|
-
export declare const pkgVersion = "2.63.0
|
|
8
|
+
export declare const pkgVersion = "2.63.0";
|
|
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,qCAAqC,CAAC;AAC1D,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,qCAAqC,CAAC;AAC1D,eAAO,MAAM,UAAU,WAAW,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/container-loader";
|
|
11
|
-
exports.pkgVersion = "2.63.0
|
|
11
|
+
exports.pkgVersion = "2.63.0";
|
|
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,kCAAkC,CAAC;AAC7C,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,kCAAkC,CAAC;AAC7C,QAAA,UAAU,GAAG,QAAQ,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/container-loader\";\nexport const pkgVersion = \"2.63.0\";\n"]}
|
|
@@ -7,7 +7,7 @@ import type { IEventProvider, IEvent, ITelemetryBaseLogger } from "@fluidframewo
|
|
|
7
7
|
import type { IDisposable } from "@fluidframework/core-interfaces/internal";
|
|
8
8
|
import { type IDocumentStorageService, type IResolvedUrl, type ISnapshot, type IDocumentAttributes, type ISnapshotTree, type IVersion, type ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
9
9
|
import { type MonitoringContext } from "@fluidframework/telemetry-utils/internal";
|
|
10
|
-
import { type ISerializableBlobContents } from "./containerStorageAdapter.js";
|
|
10
|
+
import { type ContainerStorageAdapter, type ISerializableBlobContents } from "./containerStorageAdapter.js";
|
|
11
11
|
/**
|
|
12
12
|
* This is very similar to {@link @fluidframework/protocol-definitions/internal#ISnapshot}, but the difference is
|
|
13
13
|
* that the blobs of ISnapshot are of type ArrayBufferLike, while the blobs of this interface are serializable because
|
|
@@ -47,7 +47,7 @@ export interface IPendingContainerState extends SnapshotWithBlobs {
|
|
|
47
47
|
/**
|
|
48
48
|
* Any group snapshots (aka delay-loaded) we've downloaded from the service for this container
|
|
49
49
|
*/
|
|
50
|
-
loadedGroupIdSnapshots?: Record<string,
|
|
50
|
+
loadedGroupIdSnapshots?: Record<string, SerializedSnapshotInfo>;
|
|
51
51
|
/**
|
|
52
52
|
* All ops since base snapshot sequence number up to the latest op
|
|
53
53
|
* seen when the container was closed. Used to apply stashed (saved pending)
|
|
@@ -87,11 +87,15 @@ export interface IPendingDetachedContainerState extends SnapshotWithBlobs {
|
|
|
87
87
|
*/
|
|
88
88
|
pendingRuntimeState?: unknown;
|
|
89
89
|
}
|
|
90
|
-
export interface
|
|
90
|
+
export interface SerializedSnapshotInfo extends SnapshotWithBlobs {
|
|
91
|
+
snapshotSequenceNumber: number;
|
|
92
|
+
}
|
|
93
|
+
interface ISnapshotInfo {
|
|
91
94
|
snapshotSequenceNumber: number;
|
|
92
95
|
snapshotFetchedTime?: number | undefined;
|
|
96
|
+
snapshot: ISnapshot | ISnapshotTree;
|
|
93
97
|
}
|
|
94
|
-
export type ISerializedStateManagerDocumentStorageService = Pick<
|
|
98
|
+
export type ISerializedStateManagerDocumentStorageService = Pick<ContainerStorageAdapter, "getSnapshot" | "getSnapshotTree" | "getVersions" | "readBlob" | "cacheSnapshotBlobs"> & {
|
|
95
99
|
loadedGroupIdSnapshots: Record<string, ISnapshot>;
|
|
96
100
|
};
|
|
97
101
|
interface ISerializerEvent extends IEvent {
|
|
@@ -112,7 +116,7 @@ export declare class SerializedStateManager implements IDisposable {
|
|
|
112
116
|
private readonly supportGetSnapshotApi;
|
|
113
117
|
private readonly processedOps;
|
|
114
118
|
private readonly mc;
|
|
115
|
-
private
|
|
119
|
+
private snapshotInfo;
|
|
116
120
|
private latestSnapshot;
|
|
117
121
|
private readonly refreshTracker;
|
|
118
122
|
private lastSavedOpSequenceNumber;
|
|
@@ -151,7 +155,7 @@ export declare class SerializedStateManager implements IDisposable {
|
|
|
151
155
|
* @returns The snapshot to boot the container from
|
|
152
156
|
*/
|
|
153
157
|
fetchSnapshot(specifiedVersion: string | undefined, pendingLocalState: IPendingContainerState | undefined): Promise<{
|
|
154
|
-
|
|
158
|
+
snapshot: ISnapshot | ISnapshotTree;
|
|
155
159
|
version: IVersion | undefined;
|
|
156
160
|
attributes: IDocumentAttributes;
|
|
157
161
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializedStateManager.d.ts","sourceRoot":"","sources":["../src/serializedStateManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,KAAK,EACX,cAAc,EACd,MAAM,EACN,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,yBAAyB,EAC9B,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACN,KAAK,iBAAiB,EAItB,MAAM,0CAA0C,CAAC;AAElD,OAAO,
|
|
1
|
+
{"version":3,"file":"serializedStateManager.d.ts","sourceRoot":"","sources":["../src/serializedStateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,8 +81,9 @@ class SerializedStateManager {
|
|
|
81
81
|
namespace: "serializedStateManager",
|
|
82
82
|
});
|
|
83
83
|
this.snapshotRefreshTimeoutMs = snapshotRefreshTimeoutMs ?? this.snapshotRefreshTimeoutMs;
|
|
84
|
-
__classPrivateFieldSet(this, _SerializedStateManager_snapshotRefreshEnabled,
|
|
85
|
-
this.mc.config.getBoolean("Fluid.Container.
|
|
84
|
+
__classPrivateFieldSet(this, _SerializedStateManager_snapshotRefreshEnabled, _offlineLoadEnabled &&
|
|
85
|
+
(this.mc.config.getBoolean("Fluid.Container.enableOfflineSnapshotRefresh") ??
|
|
86
|
+
this.mc.config.getBoolean("Fluid.Container.enableOfflineFull")) === true, "f");
|
|
86
87
|
this.refreshTimer = __classPrivateFieldGet(this, _SerializedStateManager_snapshotRefreshEnabled, "f")
|
|
87
88
|
? new internal_1.Timer(this.snapshotRefreshTimeoutMs, () => this.tryRefreshSnapshot())
|
|
88
89
|
: undefined;
|
|
@@ -133,54 +134,49 @@ class SerializedStateManager {
|
|
|
133
134
|
async fetchSnapshot(specifiedVersion, pendingLocalState) {
|
|
134
135
|
this.verifyNotDisposed();
|
|
135
136
|
if (pendingLocalState === undefined) {
|
|
136
|
-
const {
|
|
137
|
-
const baseSnapshotTree = (0, internal_3.getSnapshotTree)(
|
|
137
|
+
const { snapshot, version } = await getSnapshot(this.mc, this.storageAdapter, this.supportGetSnapshotApi(), specifiedVersion);
|
|
138
|
+
const baseSnapshotTree = (0, internal_3.getSnapshotTree)(snapshot);
|
|
138
139
|
const attributes = await (0, utils_js_1.getDocumentAttributes)(this.storageAdapter, baseSnapshotTree);
|
|
139
|
-
// non-interactive clients will not have any pending state we want to save
|
|
140
140
|
if (this.offlineLoadEnabled) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
snapshotBlobs,
|
|
147
|
-
snapshotSequenceNumber: attributes.sequenceNumber,
|
|
148
|
-
};
|
|
149
|
-
this.refreshTimer?.start();
|
|
150
|
-
return attributes.sequenceNumber;
|
|
151
|
-
}));
|
|
141
|
+
this.refreshTimer?.start();
|
|
142
|
+
this.snapshotInfo = {
|
|
143
|
+
snapshot,
|
|
144
|
+
snapshotSequenceNumber: attributes.sequenceNumber,
|
|
145
|
+
};
|
|
152
146
|
}
|
|
153
|
-
return {
|
|
147
|
+
return { snapshot, version, attributes };
|
|
154
148
|
}
|
|
155
149
|
else {
|
|
156
150
|
const { baseSnapshot, snapshotBlobs, savedOps } = pendingLocalState;
|
|
157
|
-
// special case handle. Obtaining the last saved op seq num to avoid
|
|
158
|
-
// refreshing the snapshot before we have processed it. It could cause
|
|
159
|
-
// a subsequent stashing to have a newer snapshot than allowed.
|
|
160
|
-
if (savedOps.length > 0) {
|
|
161
|
-
const savedOpsSize = savedOps.length;
|
|
162
|
-
this.lastSavedOpSequenceNumber = savedOps[savedOpsSize - 1].sequenceNumber;
|
|
163
|
-
}
|
|
164
|
-
const attributes = await (0, utils_js_1.getDocumentAttributes)(this.storageAdapter, baseSnapshot);
|
|
165
|
-
this.snapshot = {
|
|
166
|
-
baseSnapshot,
|
|
167
|
-
snapshotBlobs,
|
|
168
|
-
snapshotSequenceNumber: attributes.sequenceNumber,
|
|
169
|
-
};
|
|
170
|
-
this.tryRefreshSnapshot();
|
|
171
151
|
const blobContents = new Map();
|
|
172
152
|
for (const [id, value] of Object.entries(snapshotBlobs)) {
|
|
173
153
|
blobContents.set(id, (0, client_utils_1.stringToBuffer)(value, "utf8"));
|
|
174
154
|
}
|
|
175
|
-
|
|
176
|
-
|
|
155
|
+
this.storageAdapter.cacheSnapshotBlobs(blobContents);
|
|
156
|
+
const attributes = await (0, utils_js_1.getDocumentAttributes)(this.storageAdapter, baseSnapshot);
|
|
157
|
+
const snapshot = {
|
|
158
|
+
sequenceNumber: attributes.sequenceNumber,
|
|
177
159
|
snapshotTree: baseSnapshot,
|
|
178
160
|
blobContents,
|
|
179
161
|
latestSequenceNumber: undefined,
|
|
180
162
|
ops: [],
|
|
181
163
|
snapshotFormatV: 1,
|
|
182
164
|
};
|
|
183
|
-
|
|
165
|
+
if (this.offlineLoadEnabled) {
|
|
166
|
+
// special case handle. Obtaining the last saved op seq num to avoid
|
|
167
|
+
// refreshing the snapshot before we have processed it. It could cause
|
|
168
|
+
// a subsequent stashing to have a newer snapshot than allowed.
|
|
169
|
+
if (savedOps.length > 0) {
|
|
170
|
+
const savedOpsSize = savedOps.length;
|
|
171
|
+
this.lastSavedOpSequenceNumber = savedOps[savedOpsSize - 1].sequenceNumber;
|
|
172
|
+
}
|
|
173
|
+
this.snapshotInfo = {
|
|
174
|
+
snapshot,
|
|
175
|
+
snapshotSequenceNumber: attributes.sequenceNumber,
|
|
176
|
+
};
|
|
177
|
+
this.tryRefreshSnapshot();
|
|
178
|
+
}
|
|
179
|
+
return { snapshot, version: undefined, attributes };
|
|
184
180
|
}
|
|
185
181
|
}
|
|
186
182
|
tryRefreshSnapshot() {
|
|
@@ -245,7 +241,7 @@ class SerializedStateManager {
|
|
|
245
241
|
snapshotSequenceNumber,
|
|
246
242
|
firstProcessedOpSequenceNumber,
|
|
247
243
|
lastProcessedOpSequenceNumber,
|
|
248
|
-
stashedSnapshotSequenceNumber: this.
|
|
244
|
+
stashedSnapshotSequenceNumber: this.snapshotInfo?.snapshotSequenceNumber,
|
|
249
245
|
});
|
|
250
246
|
this.latestSnapshot = undefined;
|
|
251
247
|
this.refreshTimer?.restart();
|
|
@@ -254,7 +250,7 @@ class SerializedStateManager {
|
|
|
254
250
|
// Snapshot seq num is between the first and last processed op.
|
|
255
251
|
// Remove the ops that are already part of the snapshot
|
|
256
252
|
this.processedOps.splice(0, snapshotSequenceNumber - firstProcessedOpSequenceNumber + 1);
|
|
257
|
-
this.
|
|
253
|
+
this.snapshotInfo = this.latestSnapshot;
|
|
258
254
|
this.latestSnapshot = undefined;
|
|
259
255
|
this.refreshTimer?.restart();
|
|
260
256
|
this.mc.logger.sendTelemetryEvent({
|
|
@@ -275,13 +271,9 @@ class SerializedStateManager {
|
|
|
275
271
|
setInitialSnapshot(snapshot) {
|
|
276
272
|
this.verifyNotDisposed();
|
|
277
273
|
if (this.offlineLoadEnabled) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
snapshot.sequenceNumber === 0, 0x939 /* trying to set a non attachment snapshot */);
|
|
282
|
-
this.snapshot = {
|
|
283
|
-
...(0, utils_js_1.convertISnapshotToSnapshotWithBlobs)(snapshot),
|
|
284
|
-
snapshotSequenceNumber: snapshot.sequenceNumber,
|
|
274
|
+
this.snapshotInfo = {
|
|
275
|
+
snapshot,
|
|
276
|
+
snapshotSequenceNumber: snapshot.sequenceNumber ?? 0,
|
|
285
277
|
snapshotFetchedTime: Date.now(),
|
|
286
278
|
};
|
|
287
279
|
this.refreshTimer?.start();
|
|
@@ -293,6 +285,9 @@ class SerializedStateManager {
|
|
|
293
285
|
*/
|
|
294
286
|
async getPendingLocalState(clientId, runtime, resolvedUrl) {
|
|
295
287
|
this.verifyNotDisposed();
|
|
288
|
+
if (!this.offlineLoadEnabled) {
|
|
289
|
+
throw new internal_4.UsageError("Can't get pending local state unless offline load is enabled");
|
|
290
|
+
}
|
|
296
291
|
return internal_4.PerformanceEvent.timedExecAsync(this.mc.logger, {
|
|
297
292
|
eventName: "getPendingLocalState",
|
|
298
293
|
details: {
|
|
@@ -303,21 +298,11 @@ class SerializedStateManager {
|
|
|
303
298
|
},
|
|
304
299
|
clientId,
|
|
305
300
|
}, async () => {
|
|
306
|
-
|
|
307
|
-
throw new internal_4.UsageError("Can't get pending local state unless offline load is enabled");
|
|
308
|
-
}
|
|
309
|
-
if (this.snapshot === undefined && this.refreshTracker.hasPromise) {
|
|
310
|
-
// we deferred the initial download of the snapshot to not block
|
|
311
|
-
// the container load flow, so if it is not resolved
|
|
312
|
-
// and we don't have a snapshot, we will wait for the download
|
|
313
|
-
// to finish.
|
|
314
|
-
await this.refreshTracker.Promise;
|
|
315
|
-
}
|
|
316
|
-
(0, internal_1.assert)(this.snapshot !== undefined, 0x8e5 /* no base data */);
|
|
301
|
+
(0, internal_1.assert)(this.snapshotInfo !== undefined, 0x8e5 /* no base data */);
|
|
317
302
|
const pendingRuntimeState = await runtime.getPendingLocalState({
|
|
318
303
|
notifyImminentClosure: false,
|
|
319
|
-
snapshotSequenceNumber: this.
|
|
320
|
-
sessionExpiryTimerStarted: this.
|
|
304
|
+
snapshotSequenceNumber: this.snapshotInfo.snapshotSequenceNumber,
|
|
305
|
+
sessionExpiryTimerStarted: this.snapshotInfo.snapshotFetchedTime,
|
|
321
306
|
});
|
|
322
307
|
// This conversion is required because ArrayBufferLike doesn't survive JSON.stringify
|
|
323
308
|
const loadedGroupIdSnapshots = {};
|
|
@@ -329,11 +314,13 @@ class SerializedStateManager {
|
|
|
329
314
|
loadedGroupIdSnapshots[groupId] = (0, utils_js_1.convertSnapshotToSnapshotInfo)(snapshot);
|
|
330
315
|
}
|
|
331
316
|
}
|
|
317
|
+
const snapshotWithBlobs = (0, internal_3.isInstanceOfISnapshot)(this.snapshotInfo.snapshot)
|
|
318
|
+
? (0, utils_js_1.convertISnapshotToSnapshotWithBlobs)(this.snapshotInfo.snapshot)
|
|
319
|
+
: await convertSnapshotTreeToSnapshotWithBlobs(this.snapshotInfo.snapshot, this.storageAdapter);
|
|
332
320
|
const pendingState = {
|
|
333
321
|
attached: true,
|
|
334
322
|
pendingRuntimeState,
|
|
335
|
-
|
|
336
|
-
snapshotBlobs: this.snapshot.snapshotBlobs,
|
|
323
|
+
...snapshotWithBlobs,
|
|
337
324
|
loadedGroupIdSnapshots: hasGroupIdSnapshots ? loadedGroupIdSnapshots : undefined,
|
|
338
325
|
savedOps: this.processedOps,
|
|
339
326
|
url: resolvedUrl.url,
|
|
@@ -345,6 +332,13 @@ class SerializedStateManager {
|
|
|
345
332
|
}
|
|
346
333
|
exports.SerializedStateManager = SerializedStateManager;
|
|
347
334
|
_SerializedStateManager_snapshotRefreshEnabled = new WeakMap(), _SerializedStateManager_disposed = new WeakMap();
|
|
335
|
+
async function convertSnapshotTreeToSnapshotWithBlobs(snapshot, storageAdapter) {
|
|
336
|
+
const snapshotBlobs = await (0, containerStorageAdapter_js_1.getBlobContentsFromTree)(snapshot, storageAdapter);
|
|
337
|
+
return {
|
|
338
|
+
baseSnapshot: snapshot,
|
|
339
|
+
snapshotBlobs,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
348
342
|
/**
|
|
349
343
|
* Retrieves the most recent snapshot and returns its info.
|
|
350
344
|
*
|
|
@@ -354,24 +348,29 @@ _SerializedStateManager_snapshotRefreshEnabled = new WeakMap(), _SerializedState
|
|
|
354
348
|
* @returns a SnapshotInfo object containing the snapshot tree, snapshot blobs and its sequence number.
|
|
355
349
|
*/
|
|
356
350
|
async function getLatestSnapshotInfo(mc, storageAdapter, supportGetSnapshotApi) {
|
|
357
|
-
return internal_4.PerformanceEvent.timedExecAsync(mc.logger, { eventName: "GetLatestSnapshotInfo" }, async () => {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
351
|
+
return internal_4.PerformanceEvent.timedExecAsync(mc.logger, { eventName: "GetLatestSnapshotInfo" }, async (event) => {
|
|
352
|
+
try {
|
|
353
|
+
// get the latest non cached snapshot version
|
|
354
|
+
const specifiedVersion = await storageAdapter.getVersions(
|
|
355
|
+
// eslint-disable-next-line unicorn/no-null
|
|
356
|
+
null, 1, "getLatestSnapshotInfo", internal_2.FetchSource.noCache);
|
|
357
|
+
const { snapshot: baseSnapshot } = await getSnapshot(mc, storageAdapter, supportGetSnapshotApi, specifiedVersion[0]?.id);
|
|
358
|
+
const { sequenceNumber, snapshotTree } = (0, internal_3.isInstanceOfISnapshot)(baseSnapshot)
|
|
359
|
+
? baseSnapshot
|
|
360
|
+
: { snapshotTree: baseSnapshot, sequenceNumber: undefined };
|
|
361
|
+
const snapshotSequenceNumber = sequenceNumber ??
|
|
362
|
+
(await (0, utils_js_1.getDocumentAttributes)(storageAdapter, snapshotTree).then((a) => a.sequenceNumber));
|
|
363
|
+
return {
|
|
364
|
+
snapshot: baseSnapshot,
|
|
365
|
+
snapshotSequenceNumber,
|
|
366
|
+
snapshotFetchedTime: Date.now(),
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
event.cancel(undefined, error);
|
|
371
|
+
}
|
|
372
|
+
return undefined;
|
|
373
|
+
});
|
|
375
374
|
}
|
|
376
375
|
exports.getLatestSnapshotInfo = getLatestSnapshotInfo;
|
|
377
376
|
/**
|
|
@@ -388,7 +387,7 @@ async function getSnapshot(mc, storageAdapter, supportGetSnapshotApi, specifiedV
|
|
|
388
387
|
? await fetchISnapshot(mc, storageAdapter, specifiedVersion)
|
|
389
388
|
: await fetchISnapshotTree(mc, storageAdapter, specifiedVersion);
|
|
390
389
|
(0, internal_1.assert)(snapshot !== undefined, 0x8e4 /* Snapshot should exist */);
|
|
391
|
-
return {
|
|
390
|
+
return { snapshot, version };
|
|
392
391
|
}
|
|
393
392
|
/**
|
|
394
393
|
* Fetches an ISnapshot from a storage adapter based on the specified version.
|