@fluidframework/datastore 2.0.0-rc.2.0.2 → 2.0.0-rc.3.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 +23 -0
- package/api-report/datastore.api.md +7 -5
- package/dist/channelContext.d.ts +5 -4
- package/dist/channelContext.d.ts.map +1 -1
- package/dist/channelContext.js +10 -10
- package/dist/channelContext.js.map +1 -1
- package/dist/channelDeltaConnection.d.ts +2 -2
- package/dist/channelDeltaConnection.d.ts.map +1 -1
- package/dist/channelDeltaConnection.js +5 -5
- package/dist/channelDeltaConnection.js.map +1 -1
- package/dist/channelStorageService.d.ts +2 -2
- package/dist/channelStorageService.d.ts.map +1 -1
- package/dist/channelStorageService.js +2 -2
- package/dist/channelStorageService.js.map +1 -1
- package/dist/dataStoreRuntime.d.ts +10 -8
- package/dist/dataStoreRuntime.d.ts.map +1 -1
- package/dist/dataStoreRuntime.js +114 -97
- package/dist/dataStoreRuntime.js.map +1 -1
- package/dist/fluidHandle.d.ts +1 -1
- package/dist/fluidHandle.d.ts.map +1 -1
- package/dist/fluidHandle.js +2 -2
- package/dist/fluidHandle.js.map +1 -1
- package/dist/legacy.d.ts +19 -0
- package/dist/localChannelContext.d.ts +7 -6
- package/dist/localChannelContext.d.ts.map +1 -1
- package/dist/localChannelContext.js +16 -16
- package/dist/localChannelContext.js.map +1 -1
- package/dist/localChannelStorageService.d.ts.map +1 -1
- package/dist/localChannelStorageService.js +2 -2
- package/dist/localChannelStorageService.js.map +1 -1
- package/dist/packageVersion.d.ts +9 -0
- package/dist/packageVersion.d.ts.map +1 -0
- package/dist/packageVersion.js +12 -0
- package/dist/packageVersion.js.map +1 -0
- package/dist/public.d.ts +12 -0
- package/dist/remoteChannelContext.d.ts +3 -2
- package/dist/remoteChannelContext.d.ts.map +1 -1
- package/dist/remoteChannelContext.js +12 -12
- package/dist/remoteChannelContext.js.map +1 -1
- package/internal.d.ts +11 -0
- package/legacy.d.ts +11 -0
- package/lib/channelContext.d.ts +5 -4
- package/lib/channelContext.d.ts.map +1 -1
- package/lib/channelContext.js +4 -4
- package/lib/channelContext.js.map +1 -1
- package/lib/channelDeltaConnection.d.ts +2 -2
- package/lib/channelDeltaConnection.d.ts.map +1 -1
- package/lib/channelDeltaConnection.js +2 -2
- package/lib/channelDeltaConnection.js.map +1 -1
- package/lib/channelStorageService.d.ts +2 -2
- package/lib/channelStorageService.d.ts.map +1 -1
- package/lib/channelStorageService.js +1 -1
- package/lib/channelStorageService.js.map +1 -1
- package/lib/dataStoreRuntime.d.ts +10 -8
- package/lib/dataStoreRuntime.d.ts.map +1 -1
- package/lib/dataStoreRuntime.js +52 -35
- package/lib/dataStoreRuntime.js.map +1 -1
- package/lib/fluidHandle.d.ts +1 -1
- package/lib/fluidHandle.d.ts.map +1 -1
- package/lib/fluidHandle.js +1 -1
- package/lib/fluidHandle.js.map +1 -1
- package/lib/legacy.d.ts +19 -0
- package/lib/localChannelContext.d.ts +7 -6
- package/lib/localChannelContext.d.ts.map +1 -1
- package/lib/localChannelContext.js +2 -2
- package/lib/localChannelContext.js.map +1 -1
- package/lib/localChannelStorageService.d.ts.map +1 -1
- package/lib/localChannelStorageService.js +1 -1
- package/lib/localChannelStorageService.js.map +1 -1
- package/lib/packageVersion.d.ts +9 -0
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/packageVersion.js +9 -0
- package/lib/packageVersion.js.map +1 -0
- package/lib/public.d.ts +12 -0
- package/lib/remoteChannelContext.d.ts +3 -2
- package/lib/remoteChannelContext.d.ts.map +1 -1
- package/lib/remoteChannelContext.js +2 -2
- package/lib/remoteChannelContext.js.map +1 -1
- package/package.json +38 -57
- package/src/channelContext.ts +12 -12
- package/src/channelDeltaConnection.ts +4 -4
- package/src/channelStorageService.ts +3 -3
- package/src/dataStoreRuntime.ts +104 -76
- package/src/fluidHandle.ts +2 -2
- package/src/localChannelContext.ts +11 -10
- package/src/localChannelStorageService.ts +2 -2
- package/src/packageVersion.ts +9 -0
- package/src/remoteChannelContext.ts +13 -13
- package/api-extractor-cjs.json +0 -8
- package/dist/datastore-alpha.d.ts +0 -334
- package/dist/datastore-beta.d.ts +0 -46
- package/dist/datastore-public.d.ts +0 -46
- package/dist/datastore-untrimmed.d.ts +0 -341
- package/lib/datastore-alpha.d.ts +0 -334
- package/lib/datastore-beta.d.ts +0 -46
- package/lib/datastore-public.d.ts +0 -46
- package/lib/datastore-untrimmed.d.ts +0 -341
- package/lib/test/channelStorageService.spec.js +0 -70
- package/lib/test/channelStorageService.spec.js.map +0 -1
- package/lib/test/dataStoreRuntime.spec.js +0 -121
- package/lib/test/dataStoreRuntime.spec.js.map +0 -1
- package/lib/test/localChannelContext.spec.js +0 -41
- package/lib/test/localChannelContext.spec.js.map +0 -1
- package/lib/test/localChannelStorageService.spec.js +0 -72
- package/lib/test/localChannelStorageService.spec.js.map +0 -1
- package/lib/test/remoteChannelContext.spec.js +0 -33
- package/lib/test/remoteChannelContext.spec.js.map +0 -1
- package/lib/test/types/validateDatastorePrevious.generated.js +0 -16
- package/lib/test/types/validateDatastorePrevious.generated.js.map +0 -1
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { getNormalizedObjectStoragePathParts } from "@fluidframework/runtime-utils";
|
|
5
|
+
import { getNormalizedObjectStoragePathParts } from "@fluidframework/runtime-utils/internal";
|
|
6
6
|
export class ChannelStorageService {
|
|
7
7
|
static flattenTree(base, tree, results) {
|
|
8
8
|
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelStorageService.js","sourceRoot":"","sources":["../src/channelStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,mCAAmC,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"channelStorageService.js","sourceRoot":"","sources":["../src/channelStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,mCAAmC,EAAE,MAAM,wCAAwC,CAAC;AAG7F,MAAM,OAAO,qBAAqB;IACzB,MAAM,CAAC,WAAW,CACzB,IAAY,EACZ,IAAmB,EACnB,OAAmC;QAEnC,8DAA8D;QAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC9B,qBAAqB,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;SAChF;QAED,8DAA8D;QAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7C;IACF,CAAC;IAID,YACkB,IAA+B,EAC/B,OAAkD,EAClD,MAA2B,EAC3B,UAAyC;QAHzC,SAAI,GAAJ,IAAI,CAA2B;QAC/B,YAAO,GAAP,OAAO,CAA2C;QAClD,WAAM,GAAN,MAAM,CAAqB;QAC3B,eAAU,GAAV,UAAU,CAA+B;QAE1D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,mCAAmC;QACnC,IAAI,IAAI,KAAK,SAAS,EAAE;YACvB,qBAAqB,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAChE;IACF,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,IAAY;QACjC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjF,IAAI,IAAI,KAAK,SAAS,EAAE;YACvB,OAAO,IAAI,CAAC;SACZ;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACrB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,EAAE,KAAK,CAAC,CAC3E,CAAC;QAEF,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAY;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,mCAAmC,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,oEAAoE;YACpE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAG,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAY;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IChannelStorageService } from \"@fluidframework/datastore-definitions\";\nimport { IDocumentStorageService } from \"@fluidframework/driver-definitions/internal\";\nimport { ISnapshotTree } from \"@fluidframework/protocol-definitions\";\nimport { getNormalizedObjectStoragePathParts } from \"@fluidframework/runtime-utils/internal\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils\";\n\nexport class ChannelStorageService implements IChannelStorageService {\n\tprivate static flattenTree(\n\t\tbase: string,\n\t\ttree: ISnapshotTree,\n\t\tresults: { [path: string]: string },\n\t) {\n\t\t// eslint-disable-next-line guard-for-in, no-restricted-syntax\n\t\tfor (const path in tree.trees) {\n\t\t\tChannelStorageService.flattenTree(`${base}${path}/`, tree.trees[path], results);\n\t\t}\n\n\t\t// eslint-disable-next-line guard-for-in, no-restricted-syntax\n\t\tfor (const blob in tree.blobs) {\n\t\t\tresults[`${base}${blob}`] = tree.blobs[blob];\n\t\t}\n\t}\n\n\tprivate readonly flattenedTree: { [path: string]: string };\n\n\tconstructor(\n\t\tprivate readonly tree: ISnapshotTree | undefined,\n\t\tprivate readonly storage: Pick<IDocumentStorageService, \"readBlob\">,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprivate readonly extraBlobs?: Map<string, ArrayBufferLike>,\n\t) {\n\t\tthis.flattenedTree = {};\n\t\t// Create a map from paths to blobs\n\t\tif (tree !== undefined) {\n\t\t\tChannelStorageService.flattenTree(\"\", tree, this.flattenedTree);\n\t\t}\n\t}\n\n\tpublic async contains(path: string): Promise<boolean> {\n\t\treturn this.flattenedTree[path] !== undefined;\n\t}\n\n\tpublic async readBlob(path: string): Promise<ArrayBufferLike> {\n\t\tconst id = await this.getIdForPath(path);\n\t\tconst blob = this.extraBlobs !== undefined ? this.extraBlobs.get(id) : undefined;\n\n\t\tif (blob !== undefined) {\n\t\t\treturn blob;\n\t\t}\n\t\tconst blobP = this.storage.readBlob(id);\n\t\tblobP.catch((error) =>\n\t\t\tthis.logger.sendErrorEvent({ eventName: \"ChannelStorageBlobError\" }, error),\n\t\t);\n\n\t\treturn blobP;\n\t}\n\n\tpublic async list(path: string): Promise<string[]> {\n\t\tlet tree = this.tree;\n\t\tconst pathParts = getNormalizedObjectStoragePathParts(path);\n\t\twhile (tree !== undefined && pathParts.length > 0) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst part = pathParts.shift()!;\n\t\t\ttree = tree.trees[part];\n\t\t}\n\t\tif (tree === undefined || pathParts.length !== 0) {\n\t\t\tthrow new Error(\"path does not exist\");\n\t\t}\n\n\t\treturn Object.keys(tree?.blobs ?? {});\n\t}\n\n\tprivate async getIdForPath(path: string): Promise<string> {\n\t\treturn this.flattenedTree[path];\n\t}\n}\n"]}
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
6
|
-
import {
|
|
6
|
+
import { AttachState, IAudience, IDeltaManager } from "@fluidframework/container-definitions";
|
|
7
7
|
import { FluidObject, IFluidHandle, IFluidHandleContext, IRequest, IResponse } from "@fluidframework/core-interfaces";
|
|
8
|
-
import {
|
|
9
|
-
import { IClientDetails, IDocumentMessage, ISequencedDocumentMessage, IQuorumClients } from "@fluidframework/protocol-definitions";
|
|
10
|
-
import { IFluidDataStoreContext, IFluidDataStoreChannel, IGarbageCollectionData, IInboundSignalMessage, ISummaryTreeWithStats, VisibilityState, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
11
|
-
import { IChannel, IFluidDataStoreRuntime, IFluidDataStoreRuntimeEvents, IChannelFactory } from "@fluidframework/datastore-definitions";
|
|
8
|
+
import { IChannel, IChannelFactory, IFluidDataStoreRuntime, IFluidDataStoreRuntimeEvents } from "@fluidframework/datastore-definitions";
|
|
12
9
|
import { IIdCompressor } from "@fluidframework/id-compressor";
|
|
10
|
+
import { IClientDetails, IDocumentMessage, IQuorumClients, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
11
|
+
import { IGarbageCollectionData, IInboundSignalMessage, ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
12
|
+
import { IFluidDataStoreChannel, IFluidDataStoreContext, VisibilityState } from "@fluidframework/runtime-definitions/internal";
|
|
13
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
13
14
|
/**
|
|
14
15
|
* @alpha
|
|
15
16
|
*/
|
|
@@ -206,10 +207,10 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
206
207
|
/**
|
|
207
208
|
* Submits the signal to be sent to other clients.
|
|
208
209
|
* @param type - Type of the signal.
|
|
209
|
-
* @param content - Content of the signal.
|
|
210
|
+
* @param content - Content of the signal. Should be a JSON serializable object or primitive.
|
|
210
211
|
* @param targetClientId - When specified, the signal is only sent to the provided client id.
|
|
211
212
|
*/
|
|
212
|
-
submitSignal(type: string, content:
|
|
213
|
+
submitSignal(type: string, content: unknown, targetClientId?: string): void;
|
|
213
214
|
/**
|
|
214
215
|
* Will return when the data store is attached.
|
|
215
216
|
*/
|
|
@@ -246,13 +247,14 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
246
247
|
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
247
248
|
*/
|
|
248
249
|
private identifyLocalChangeInSummarizer;
|
|
250
|
+
setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
|
|
249
251
|
}
|
|
250
252
|
/**
|
|
251
253
|
* Mixin class that adds request handler to FluidDataStoreRuntime
|
|
252
254
|
* Request handler is only called when data store can't resolve request, i.e. for custom requests.
|
|
253
255
|
* @param Base - base class, inherits from FluidDataStoreRuntime
|
|
254
256
|
* @param requestHandler - request handler to mix in
|
|
255
|
-
* @
|
|
257
|
+
* @alpha
|
|
256
258
|
*/
|
|
257
259
|
export declare const mixinRequestHandler: (requestHandler: (request: IRequest, runtime: FluidDataStoreRuntime) => Promise<IResponse>, Base?: typeof FluidDataStoreRuntime) => typeof FluidDataStoreRuntime;
|
|
258
260
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"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"}
|
package/lib/dataStoreRuntime.js
CHANGED
|
@@ -3,18 +3,19 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
6
|
-
import { DataProcessingError, generateStack, LoggingError, raiseConnectedEvent, createChildMonitoringContext, tagCodeArtifacts, UsageError, } from "@fluidframework/telemetry-utils";
|
|
7
|
-
import { assert, Deferred, LazyPromise, unreachableCase } from "@fluidframework/core-utils";
|
|
8
6
|
import { AttachState } from "@fluidframework/container-definitions";
|
|
9
|
-
import {
|
|
7
|
+
import { assert, Deferred, LazyPromise, unreachableCase, } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import { buildSnapshotTree } from "@fluidframework/driver-utils/internal";
|
|
10
9
|
import { SummaryType, } from "@fluidframework/protocol-definitions";
|
|
11
|
-
import { CreateSummarizerNodeSource, VisibilityState, gcDataBlobKey, } from "@fluidframework/runtime-definitions";
|
|
12
|
-
import {
|
|
10
|
+
import { CreateSummarizerNodeSource, VisibilityState, gcDataBlobKey, } from "@fluidframework/runtime-definitions/internal";
|
|
11
|
+
import { GCDataBuilder, RequestParser, SummaryTreeBuilder, addBlobToSummary, convertSnapshotTreeToSummaryTree, convertSummaryTreeToITree, create404Response, createResponseError, encodeCompactIdToString, exceptionToResponse, generateHandleContextPath, processAttachMessageGCData, unpackChildNodesUsedRoutes, } from "@fluidframework/runtime-utils/internal";
|
|
12
|
+
import { DataProcessingError, LoggingError, UsageError, createChildMonitoringContext, generateStack, raiseConnectedEvent, tagCodeArtifacts, } from "@fluidframework/telemetry-utils/internal";
|
|
13
13
|
import { v4 as uuid } from "uuid";
|
|
14
14
|
import { summarizeChannel } from "./channelContext.js";
|
|
15
|
+
import { FluidObjectHandle } from "./fluidHandle.js";
|
|
15
16
|
import { LocalChannelContext, LocalChannelContextBase, RehydratedLocalChannelContext, } from "./localChannelContext.js";
|
|
17
|
+
import { pkgVersion } from "./packageVersion.js";
|
|
16
18
|
import { RemoteChannelContext } from "./remoteChannelContext.js";
|
|
17
|
-
import { FluidObjectHandle } from "./fluidHandle.js";
|
|
18
19
|
/**
|
|
19
20
|
* @alpha
|
|
20
21
|
*/
|
|
@@ -114,7 +115,7 @@ export class FluidDataStoreRuntime extends TypedEventEmitter {
|
|
|
114
115
|
logger: dataStoreContext.logger,
|
|
115
116
|
namespace: "FluidDataStoreRuntime",
|
|
116
117
|
properties: {
|
|
117
|
-
all: { dataStoreId: uuid() },
|
|
118
|
+
all: { dataStoreId: uuid(), dataStoreVersion: pkgVersion },
|
|
118
119
|
},
|
|
119
120
|
});
|
|
120
121
|
this.id = dataStoreContext.id;
|
|
@@ -637,7 +638,7 @@ export class FluidDataStoreRuntime extends TypedEventEmitter {
|
|
|
637
638
|
/**
|
|
638
639
|
* Submits the signal to be sent to other clients.
|
|
639
640
|
* @param type - Type of the signal.
|
|
640
|
-
* @param content - Content of the signal.
|
|
641
|
+
* @param content - Content of the signal. Should be a JSON serializable object or primitive.
|
|
641
642
|
* @param targetClientId - When specified, the signal is only sent to the provided client id.
|
|
642
643
|
*/
|
|
643
644
|
submitSignal(type, content, targetClientId) {
|
|
@@ -781,33 +782,15 @@ export class FluidDataStoreRuntime extends TypedEventEmitter {
|
|
|
781
782
|
}
|
|
782
783
|
attachListener() {
|
|
783
784
|
this.setMaxListeners(Number.MAX_SAFE_INTEGER);
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
* store can move to "attaching" state in 2 scenarios:
|
|
789
|
-
* 1) Before attachGraph() is called - When a data store is created and bound in an attached container.
|
|
790
|
-
* 2) After attachGraph() is called - When a detached container is attached.
|
|
791
|
-
*
|
|
792
|
-
* The basic idea is that all local object should become locally visible before they are globally visible.
|
|
793
|
-
*/
|
|
794
|
-
this.attachGraph();
|
|
795
|
-
this._attachState = AttachState.Attaching;
|
|
796
|
-
assert(this.visibilityState === VisibilityState.LocallyVisible, 0x2d1 /* "Data store should be locally visible before it can become globally visible." */);
|
|
797
|
-
// Mark the data store globally visible and make its child channels visible as well.
|
|
798
|
-
this.visibilityState = VisibilityState.GloballyVisible;
|
|
799
|
-
this.localChannelContextQueue.forEach((channel) => {
|
|
800
|
-
channel.makeVisible();
|
|
801
|
-
});
|
|
802
|
-
this.localChannelContextQueue.clear();
|
|
803
|
-
// This promise resolution will be moved to attached event once we fix the scheduler.
|
|
804
|
-
this.deferredAttached.resolve();
|
|
805
|
-
this.emit("attaching");
|
|
785
|
+
// back-compat, to be removed in the future.
|
|
786
|
+
// Added in "2.0.0-rc.2.0.0" timeframe.
|
|
787
|
+
this.dataStoreContext.once?.("attaching", () => {
|
|
788
|
+
this.setAttachState(AttachState.Attaching);
|
|
806
789
|
});
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
this.
|
|
790
|
+
// back-compat, to be removed in the future.
|
|
791
|
+
// Added in "2.0.0-rc.2.0.0" timeframe.
|
|
792
|
+
this.dataStoreContext.once?.("attached", () => {
|
|
793
|
+
this.setAttachState(AttachState.Attached);
|
|
811
794
|
});
|
|
812
795
|
}
|
|
813
796
|
verifyNotClosed() {
|
|
@@ -839,13 +822,47 @@ export class FluidDataStoreRuntime extends TypedEventEmitter {
|
|
|
839
822
|
});
|
|
840
823
|
this.localChangesTelemetryCount--;
|
|
841
824
|
}
|
|
825
|
+
setAttachState(attachState) {
|
|
826
|
+
switch (attachState) {
|
|
827
|
+
case AttachState.Attaching:
|
|
828
|
+
/**
|
|
829
|
+
* back-compat 0.59.1000 - Ideally, attachGraph() should have already been called making the data store
|
|
830
|
+
* locally visible. However, before visibility state was added, this may not have been the case and data
|
|
831
|
+
* store can move to "attaching" state in 2 scenarios:
|
|
832
|
+
* 1) Before attachGraph() is called - When a data store is created and bound in an attached container.
|
|
833
|
+
* 2) After attachGraph() is called - When a detached container is attached.
|
|
834
|
+
*
|
|
835
|
+
* The basic idea is that all local object should become locally visible before they are globally visible.
|
|
836
|
+
*/
|
|
837
|
+
this.attachGraph();
|
|
838
|
+
this._attachState = AttachState.Attaching;
|
|
839
|
+
assert(this.visibilityState === VisibilityState.LocallyVisible, 0x2d1 /* "Data store should be locally visible before it can become globally visible." */);
|
|
840
|
+
// Mark the data store globally visible and make its child channels visible as well.
|
|
841
|
+
this.visibilityState = VisibilityState.GloballyVisible;
|
|
842
|
+
this.localChannelContextQueue.forEach((channel) => {
|
|
843
|
+
channel.makeVisible();
|
|
844
|
+
});
|
|
845
|
+
this.localChannelContextQueue.clear();
|
|
846
|
+
// This promise resolution will be moved to attached event once we fix the scheduler.
|
|
847
|
+
this.deferredAttached.resolve();
|
|
848
|
+
this.emit("attaching");
|
|
849
|
+
break;
|
|
850
|
+
case AttachState.Attached:
|
|
851
|
+
assert(this.visibilityState === VisibilityState.GloballyVisible, 0x2d2 /* "Data store should be globally visible when its attached." */);
|
|
852
|
+
this._attachState = AttachState.Attached;
|
|
853
|
+
this.emit("attached");
|
|
854
|
+
break;
|
|
855
|
+
default:
|
|
856
|
+
unreachableCase(attachState, "unreached");
|
|
857
|
+
}
|
|
858
|
+
}
|
|
842
859
|
}
|
|
843
860
|
/**
|
|
844
861
|
* Mixin class that adds request handler to FluidDataStoreRuntime
|
|
845
862
|
* Request handler is only called when data store can't resolve request, i.e. for custom requests.
|
|
846
863
|
* @param Base - base class, inherits from FluidDataStoreRuntime
|
|
847
864
|
* @param requestHandler - request handler to mix in
|
|
848
|
-
* @
|
|
865
|
+
* @alpha
|
|
849
866
|
*/
|
|
850
867
|
export const mixinRequestHandler = (requestHandler, Base = FluidDataStoreRuntime) => class RuntimeWithRequestHandler extends Base {
|
|
851
868
|
async request(request) {
|