@fluidframework/datastore 2.0.0-internal.6.4.0 → 2.0.0-internal.7.1.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 +69 -0
- package/api-extractor.json +1 -1
- package/api-report/datastore.api.md +172 -0
- package/dist/channelDeltaConnection.js +6 -6
- package/dist/channelDeltaConnection.js.map +1 -1
- package/dist/channelStorageService.js +10 -10
- package/dist/channelStorageService.js.map +1 -1
- package/dist/dataStoreRuntime.d.ts +15 -11
- package/dist/dataStoreRuntime.d.ts.map +1 -1
- package/dist/dataStoreRuntime.js +86 -90
- package/dist/dataStoreRuntime.js.map +1 -1
- package/dist/datastore-alpha.d.ts +327 -0
- package/dist/datastore-beta.d.ts +327 -0
- package/dist/datastore-public.d.ts +327 -0
- package/dist/datastore.d.ts +326 -0
- package/dist/fluidHandle.d.ts +2 -0
- package/dist/fluidHandle.d.ts.map +1 -1
- package/dist/fluidHandle.js +21 -19
- package/dist/fluidHandle.js.map +1 -1
- package/dist/remoteChannelContext.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/channelDeltaConnection.js +6 -6
- package/lib/channelDeltaConnection.js.map +1 -1
- package/lib/channelStorageService.js +10 -10
- package/lib/channelStorageService.js.map +1 -1
- package/lib/dataStoreRuntime.d.ts +15 -11
- package/lib/dataStoreRuntime.d.ts.map +1 -1
- package/lib/dataStoreRuntime.js +86 -90
- package/lib/dataStoreRuntime.js.map +1 -1
- package/lib/fluidHandle.d.ts +2 -0
- package/lib/fluidHandle.d.ts.map +1 -1
- package/lib/fluidHandle.js +21 -19
- package/lib/fluidHandle.js.map +1 -1
- package/lib/remoteChannelContext.js.map +1 -1
- package/package.json +25 -26
- package/src/dataStoreRuntime.ts +21 -24
- package/src/fluidHandle.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,74 @@
|
|
|
1
1
|
# @fluidframework/datastore
|
|
2
2
|
|
|
3
|
+
## 2.0.0-internal.7.1.0
|
|
4
|
+
|
|
5
|
+
Dependency updates only.
|
|
6
|
+
|
|
7
|
+
## 2.0.0-internal.7.0.0
|
|
8
|
+
|
|
9
|
+
### Major Changes
|
|
10
|
+
|
|
11
|
+
- Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
12
|
+
|
|
13
|
+
This included the following changes from the protocol-definitions release:
|
|
14
|
+
|
|
15
|
+
- Updating signal interfaces for some planned improvements. The intention is split the interface between signals
|
|
16
|
+
submitted by clients to the server and the resulting signals sent from the server to clients.
|
|
17
|
+
- A new optional type member is available on the ISignalMessage interface and a new ISentSignalMessage interface has
|
|
18
|
+
been added, which will be the typing for signals sent from the client to the server. Both extend a new
|
|
19
|
+
ISignalMessageBase interface that contains common members.
|
|
20
|
+
- The @fluidframework/common-definitions package dependency has been updated to version 1.0.0.
|
|
21
|
+
|
|
22
|
+
- runtime-definitions: `bindToContext` API removed [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
23
|
+
|
|
24
|
+
`bindToContext` has been removed from `FluidDataStoreRuntime`, `IFluidDataStoreContext` and
|
|
25
|
+
`MockFluidDataStoreContext`. This has been deprecated for several releases and cannot be used anymore.
|
|
26
|
+
|
|
27
|
+
- Server upgrade: dependencies on Fluid server packages updated to 2.0.1 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
28
|
+
|
|
29
|
+
Dependencies on the following Fluid server package have been updated to version 2.0.1:
|
|
30
|
+
|
|
31
|
+
- @fluidframework/gitresources: 2.0.1
|
|
32
|
+
- @fluidframework/server-kafka-orderer: 2.0.1
|
|
33
|
+
- @fluidframework/server-lambdas: 2.0.1
|
|
34
|
+
- @fluidframework/server-lambdas-driver: 2.0.1
|
|
35
|
+
- @fluidframework/server-local-server: 2.0.1
|
|
36
|
+
- @fluidframework/server-memory-orderer: 2.0.1
|
|
37
|
+
- @fluidframework/protocol-base: 2.0.1
|
|
38
|
+
- @fluidframework/server-routerlicious: 2.0.1
|
|
39
|
+
- @fluidframework/server-routerlicious-base: 2.0.1
|
|
40
|
+
- @fluidframework/server-services: 2.0.1
|
|
41
|
+
- @fluidframework/server-services-client: 2.0.1
|
|
42
|
+
- @fluidframework/server-services-core: 2.0.1
|
|
43
|
+
- @fluidframework/server-services-ordering-kafkanode: 2.0.1
|
|
44
|
+
- @fluidframework/server-services-ordering-rdkafka: 2.0.1
|
|
45
|
+
- @fluidframework/server-services-ordering-zookeeper: 2.0.1
|
|
46
|
+
- @fluidframework/server-services-shared: 2.0.1
|
|
47
|
+
- @fluidframework/server-services-telemetry: 2.0.1
|
|
48
|
+
- @fluidframework/server-services-utils: 2.0.1
|
|
49
|
+
- @fluidframework/server-test-utils: 2.0.1
|
|
50
|
+
- tinylicious: 2.0.1
|
|
51
|
+
|
|
52
|
+
- test-utils: provideEntryPoint is required [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
53
|
+
|
|
54
|
+
The optional `provideEntryPoint` method has become required on a number of constructors. A value will need to be provided to the following classes:
|
|
55
|
+
|
|
56
|
+
- `BaseContainerRuntimeFactory`
|
|
57
|
+
- `RuntimeFactory`
|
|
58
|
+
- `ContainerRuntime` (constructor and `loadRuntime`)
|
|
59
|
+
- `FluidDataStoreRuntime`
|
|
60
|
+
|
|
61
|
+
See [testContainerRuntimeFactoryWithDefaultDataStore.ts](https://github.com/microsoft/FluidFramework/tree/main/packages/test/test-utils/src/testContainerRuntimeFactoryWithDefaultDataStore.ts) for an example implemtation of `provideEntryPoint` for ContainerRuntime.
|
|
62
|
+
See [pureDataObjectFactory.ts](https://github.com/microsoft/FluidFramework/tree/main/packages/framework/aqueduct/src/data-object-factories/pureDataObjectFactory.ts#L83) for an example implementation of `provideEntryPoint` for DataStoreRuntime.
|
|
63
|
+
|
|
64
|
+
Subsequently, various `entryPoint` and `getEntryPoint()` endpoints have become required. Please see [containerRuntime.ts](https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/containerRuntime.ts) for example implementations of these APIs.
|
|
65
|
+
|
|
66
|
+
For more details, see [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
67
|
+
|
|
68
|
+
- Minimum TypeScript version now 5.1.6 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
69
|
+
|
|
70
|
+
The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.
|
|
71
|
+
|
|
3
72
|
## 2.0.0-internal.6.4.0
|
|
4
73
|
|
|
5
74
|
### Minor Changes
|
package/api-extractor.json
CHANGED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
## API Report File for "@fluidframework/datastore"
|
|
2
|
+
|
|
3
|
+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
|
|
7
|
+
import { AttachState } from '@fluidframework/container-definitions';
|
|
8
|
+
import { FluidObject } from '@fluidframework/core-interfaces';
|
|
9
|
+
import { IAudience } from '@fluidframework/container-definitions';
|
|
10
|
+
import { IChannel } from '@fluidframework/datastore-definitions';
|
|
11
|
+
import { IChannelFactory } from '@fluidframework/datastore-definitions';
|
|
12
|
+
import { IClientDetails } from '@fluidframework/protocol-definitions';
|
|
13
|
+
import { IDeltaManager } from '@fluidframework/container-definitions';
|
|
14
|
+
import { IDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
15
|
+
import { IFluidDataStoreChannel } from '@fluidframework/runtime-definitions';
|
|
16
|
+
import { IFluidDataStoreContext } from '@fluidframework/runtime-definitions';
|
|
17
|
+
import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
|
|
18
|
+
import { IFluidDataStoreRuntimeEvents } from '@fluidframework/datastore-definitions';
|
|
19
|
+
import { IFluidHandle } from '@fluidframework/core-interfaces';
|
|
20
|
+
import { IFluidHandleContext } from '@fluidframework/core-interfaces';
|
|
21
|
+
import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
|
|
22
|
+
import { IIdCompressor } from '@fluidframework/runtime-definitions';
|
|
23
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
24
|
+
import { ILoaderOptions } from '@fluidframework/container-definitions';
|
|
25
|
+
import { IQuorumClients } from '@fluidframework/protocol-definitions';
|
|
26
|
+
import { IRequest } from '@fluidframework/core-interfaces';
|
|
27
|
+
import { IResponse } from '@fluidframework/core-interfaces';
|
|
28
|
+
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
29
|
+
import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
|
|
30
|
+
import { ITelemetryContext } from '@fluidframework/runtime-definitions';
|
|
31
|
+
import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils';
|
|
32
|
+
import { TypedEventEmitter } from '@fluid-internal/client-utils';
|
|
33
|
+
import { VisibilityState } from '@fluidframework/runtime-definitions';
|
|
34
|
+
|
|
35
|
+
// @public (undocumented)
|
|
36
|
+
export enum DataStoreMessageType {
|
|
37
|
+
// (undocumented)
|
|
38
|
+
Attach = "attach",
|
|
39
|
+
// (undocumented)
|
|
40
|
+
ChannelOp = "op"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// @public
|
|
44
|
+
export class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataStoreRuntimeEvents> implements IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
45
|
+
constructor(dataStoreContext: IFluidDataStoreContext, sharedObjectRegistry: ISharedObjectRegistry, existing: boolean, provideEntryPoint: (runtime: IFluidDataStoreRuntime) => Promise<FluidObject>);
|
|
46
|
+
// (undocumented)
|
|
47
|
+
get absolutePath(): string;
|
|
48
|
+
// (undocumented)
|
|
49
|
+
applyStashedOp(content: any): Promise<unknown>;
|
|
50
|
+
attachGraph(): void;
|
|
51
|
+
// (undocumented)
|
|
52
|
+
get attachState(): AttachState;
|
|
53
|
+
// (undocumented)
|
|
54
|
+
bind(handle: IFluidHandle): void;
|
|
55
|
+
bindChannel(channel: IChannel): void;
|
|
56
|
+
// (undocumented)
|
|
57
|
+
get channelsRoutingContext(): this;
|
|
58
|
+
// (undocumented)
|
|
59
|
+
get clientDetails(): IClientDetails;
|
|
60
|
+
// (undocumented)
|
|
61
|
+
get clientId(): string | undefined;
|
|
62
|
+
// (undocumented)
|
|
63
|
+
get connected(): boolean;
|
|
64
|
+
// (undocumented)
|
|
65
|
+
createChannel(id: string | undefined, type: string): IChannel;
|
|
66
|
+
// (undocumented)
|
|
67
|
+
readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
68
|
+
// (undocumented)
|
|
69
|
+
dispose(): void;
|
|
70
|
+
// (undocumented)
|
|
71
|
+
get disposed(): boolean;
|
|
72
|
+
ensureNoDataModelChanges<T>(callback: () => T): T;
|
|
73
|
+
// (undocumented)
|
|
74
|
+
readonly entryPoint: IFluidHandle<FluidObject>;
|
|
75
|
+
// (undocumented)
|
|
76
|
+
getAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
|
|
77
|
+
// (undocumented)
|
|
78
|
+
getAudience(): IAudience;
|
|
79
|
+
// (undocumented)
|
|
80
|
+
getChannel(id: string): Promise<IChannel>;
|
|
81
|
+
getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
|
|
82
|
+
// (undocumented)
|
|
83
|
+
getQuorum(): IQuorumClients;
|
|
84
|
+
// (undocumented)
|
|
85
|
+
readonly id: string;
|
|
86
|
+
// (undocumented)
|
|
87
|
+
get idCompressor(): IIdCompressor | undefined;
|
|
88
|
+
// (undocumented)
|
|
89
|
+
get IFluidHandleContext(): this;
|
|
90
|
+
// @deprecated (undocumented)
|
|
91
|
+
get IFluidRouter(): this;
|
|
92
|
+
// (undocumented)
|
|
93
|
+
get isAttached(): boolean;
|
|
94
|
+
// @deprecated (undocumented)
|
|
95
|
+
static load(context: IFluidDataStoreContext, sharedObjectRegistry: ISharedObjectRegistry, existing: boolean): FluidDataStoreRuntime;
|
|
96
|
+
// (undocumented)
|
|
97
|
+
get logger(): ITelemetryLoggerExt;
|
|
98
|
+
makeVisibleAndAttachGraph(): void;
|
|
99
|
+
// (undocumented)
|
|
100
|
+
get objectsRoutingContext(): this;
|
|
101
|
+
// (undocumented)
|
|
102
|
+
readonly options: ILoaderOptions;
|
|
103
|
+
// (undocumented)
|
|
104
|
+
process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
|
|
105
|
+
// (undocumented)
|
|
106
|
+
processSignal(message: IInboundSignalMessage, local: boolean): void;
|
|
107
|
+
// (undocumented)
|
|
108
|
+
request(request: IRequest): Promise<IResponse>;
|
|
109
|
+
// (undocumented)
|
|
110
|
+
resolveHandle(request: IRequest): Promise<IResponse>;
|
|
111
|
+
reSubmit(type: DataStoreMessageType, content: any, localOpMetadata: unknown): void;
|
|
112
|
+
rollback?(type: DataStoreMessageType, content: any, localOpMetadata: unknown): void;
|
|
113
|
+
// (undocumented)
|
|
114
|
+
get rootRoutingContext(): this;
|
|
115
|
+
// (undocumented)
|
|
116
|
+
get routeContext(): IFluidHandleContext;
|
|
117
|
+
// (undocumented)
|
|
118
|
+
setConnectionState(connected: boolean, clientId?: string): void;
|
|
119
|
+
// (undocumented)
|
|
120
|
+
submitMessage(type: DataStoreMessageType, content: any, localOpMetadata: unknown): void;
|
|
121
|
+
// (undocumented)
|
|
122
|
+
submitSignal(type: string, content: any): void;
|
|
123
|
+
summarize(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;
|
|
124
|
+
updateUsedRoutes(usedRoutes: string[]): void;
|
|
125
|
+
// (undocumented)
|
|
126
|
+
uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandle<ArrayBufferLike>>;
|
|
127
|
+
// (undocumented)
|
|
128
|
+
visibilityState: VisibilityState;
|
|
129
|
+
waitAttached(): Promise<void>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// @public
|
|
133
|
+
export class FluidObjectHandle<T extends FluidObject = FluidObject> implements IFluidHandle {
|
|
134
|
+
constructor(value: T | Promise<T>, path: string, routeContext: IFluidHandleContext);
|
|
135
|
+
// (undocumented)
|
|
136
|
+
readonly absolutePath: string;
|
|
137
|
+
// (undocumented)
|
|
138
|
+
attachGraph(): void;
|
|
139
|
+
// (undocumented)
|
|
140
|
+
bind(handle: IFluidHandle): void;
|
|
141
|
+
// (undocumented)
|
|
142
|
+
get(): Promise<any>;
|
|
143
|
+
// (undocumented)
|
|
144
|
+
get IFluidHandle(): IFluidHandle;
|
|
145
|
+
// (undocumented)
|
|
146
|
+
get isAttached(): boolean;
|
|
147
|
+
// (undocumented)
|
|
148
|
+
readonly path: string;
|
|
149
|
+
// (undocumented)
|
|
150
|
+
readonly routeContext: IFluidHandleContext;
|
|
151
|
+
// (undocumented)
|
|
152
|
+
protected readonly value: T | Promise<T>;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// @public (undocumented)
|
|
156
|
+
export interface ISharedObjectRegistry {
|
|
157
|
+
// (undocumented)
|
|
158
|
+
get(name: string): IChannelFactory | undefined;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// @public
|
|
162
|
+
export const mixinRequestHandler: (requestHandler: (request: IRequest, runtime: FluidDataStoreRuntime) => Promise<IResponse>, Base?: typeof FluidDataStoreRuntime) => typeof FluidDataStoreRuntime;
|
|
163
|
+
|
|
164
|
+
// @public
|
|
165
|
+
export const mixinSummaryHandler: (handler: (runtime: FluidDataStoreRuntime) => Promise<{
|
|
166
|
+
path: string[];
|
|
167
|
+
content: string;
|
|
168
|
+
} | undefined>, Base?: typeof FluidDataStoreRuntime) => typeof FluidDataStoreRuntime;
|
|
169
|
+
|
|
170
|
+
// (No @packageDocumentation comment for this package)
|
|
171
|
+
|
|
172
|
+
```
|
|
@@ -8,12 +8,6 @@ exports.ChannelDeltaConnection = void 0;
|
|
|
8
8
|
const core_utils_1 = require("@fluidframework/core-utils");
|
|
9
9
|
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
10
10
|
class ChannelDeltaConnection {
|
|
11
|
-
constructor(_connected, submit, dirty, addedGCOutboundReference) {
|
|
12
|
-
this._connected = _connected;
|
|
13
|
-
this.submit = submit;
|
|
14
|
-
this.dirty = dirty;
|
|
15
|
-
this.addedGCOutboundReference = addedGCOutboundReference;
|
|
16
|
-
}
|
|
17
11
|
get handler() {
|
|
18
12
|
(0, core_utils_1.assert)(!!this._handler, 0x177 /* "Missing delta handler" */);
|
|
19
13
|
return this._handler;
|
|
@@ -21,6 +15,12 @@ class ChannelDeltaConnection {
|
|
|
21
15
|
get connected() {
|
|
22
16
|
return this._connected;
|
|
23
17
|
}
|
|
18
|
+
constructor(_connected, submit, dirty, addedGCOutboundReference) {
|
|
19
|
+
this._connected = _connected;
|
|
20
|
+
this.submit = submit;
|
|
21
|
+
this.dirty = dirty;
|
|
22
|
+
this.addedGCOutboundReference = addedGCOutboundReference;
|
|
23
|
+
}
|
|
24
24
|
attach(handler) {
|
|
25
25
|
(0, core_utils_1.assert)(this._handler === undefined, 0x178 /* "Missing delta handler on attach" */);
|
|
26
26
|
this._handler = handler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelDeltaConnection.js","sourceRoot":"","sources":["../src/channelDeltaConnection.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAoD;AAGpD,qEAAsE;AAGtE,MAAa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"channelDeltaConnection.js","sourceRoot":"","sources":["../src/channelDeltaConnection.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAoD;AAGpD,qEAAsE;AAGtE,MAAa,sBAAsB;IAGlC,IAAY,OAAO;QAClB,IAAA,mBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,YACS,UAAmB,EACX,MAAwD,EACxD,KAAiB,EACjB,wBAGP;QAND,eAAU,GAAV,UAAU,CAAS;QACX,WAAM,GAAN,MAAM,CAAkD;QACxD,UAAK,GAAL,KAAK,CAAY;QACjB,6BAAwB,GAAxB,wBAAwB,CAG/B;IACP,CAAC;IAEG,MAAM,CAAC,OAAsB;QACnC,IAAA,mBAAM,EAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACnF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,kBAAkB,CAAC,SAAkB;QAC3C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAEM,OAAO,CAAC,OAAkC,EAAE,KAAc,EAAE,eAAwB;QAC1F,IAAI;YACH,sFAAsF;YACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;SACtD;QAAC,OAAO,KAAK,EAAE;YACf,MAAM,qCAAmB,CAAC,kBAAkB,CAC3C,KAAK,EACL,8CAA8C,EAC9C,OAAO,CACP,CAAC;SACF;IACF,CAAC;IAEM,QAAQ,CAAC,OAAY,EAAE,eAAwB;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACjD,CAAC;IAEM,QAAQ,CAAC,OAAY,EAAE,eAAwB;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACpD;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACjD,CAAC;IAEM,cAAc,CAAC,OAAY;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACD;AA1DD,wDA0DC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { IDeltaConnection, IDeltaHandler } from \"@fluidframework/datastore-definitions\";\nimport { DataProcessingError } from \"@fluidframework/telemetry-utils\";\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\n\nexport class ChannelDeltaConnection implements IDeltaConnection {\n\tprivate _handler: IDeltaHandler | undefined;\n\n\tprivate get handler(): IDeltaHandler {\n\t\tassert(!!this._handler, 0x177 /* \"Missing delta handler\" */);\n\t\treturn this._handler;\n\t}\n\tpublic get connected(): boolean {\n\t\treturn this._connected;\n\t}\n\n\tconstructor(\n\t\tprivate _connected: boolean,\n\t\tpublic readonly submit: (content: any, localOpMetadata: unknown) => void,\n\t\tpublic readonly dirty: () => void,\n\t\tpublic readonly addedGCOutboundReference: (\n\t\t\tsrcHandle: IFluidHandle,\n\t\t\toutboundHandle: IFluidHandle,\n\t\t) => void,\n\t) {}\n\n\tpublic attach(handler: IDeltaHandler) {\n\t\tassert(this._handler === undefined, 0x178 /* \"Missing delta handler on attach\" */);\n\t\tthis._handler = handler;\n\t}\n\n\tpublic setConnectionState(connected: boolean) {\n\t\tthis._connected = connected;\n\t\tthis.handler.setConnectionState(connected);\n\t}\n\n\tpublic process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) {\n\t\ttry {\n\t\t\t// catches as data processing error whether or not they come from async pending queues\n\t\t\tthis.handler.process(message, local, localOpMetadata);\n\t\t} catch (error) {\n\t\t\tthrow DataProcessingError.wrapIfUnrecognized(\n\t\t\t\terror,\n\t\t\t\t\"channelDeltaConnectionFailedToProcessMessage\",\n\t\t\t\tmessage,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown) {\n\t\tthis.handler.reSubmit(content, localOpMetadata);\n\t}\n\n\tpublic rollback(content: any, localOpMetadata: unknown) {\n\t\tif (this.handler.rollback === undefined) {\n\t\t\tthrow new Error(\"Handler doesn't support rollback\");\n\t\t}\n\t\tthis.handler.rollback(content, localOpMetadata);\n\t}\n\n\tpublic applyStashedOp(content: any): unknown {\n\t\treturn this.handler.applyStashedOp(content);\n\t}\n}\n"]}
|
|
@@ -7,6 +7,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.ChannelStorageService = void 0;
|
|
8
8
|
const runtime_utils_1 = require("@fluidframework/runtime-utils");
|
|
9
9
|
class ChannelStorageService {
|
|
10
|
+
static flattenTree(base, tree, results) {
|
|
11
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
12
|
+
for (const path in tree.trees) {
|
|
13
|
+
ChannelStorageService.flattenTree(`${base}${path}/`, tree.trees[path], results);
|
|
14
|
+
}
|
|
15
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
16
|
+
for (const blob in tree.blobs) {
|
|
17
|
+
results[`${base}${blob}`] = tree.blobs[blob];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
10
20
|
constructor(tree, storage, logger, extraBlobs) {
|
|
11
21
|
this.tree = tree;
|
|
12
22
|
this.storage = storage;
|
|
@@ -18,16 +28,6 @@ class ChannelStorageService {
|
|
|
18
28
|
ChannelStorageService.flattenTree("", tree, this.flattenedTree);
|
|
19
29
|
}
|
|
20
30
|
}
|
|
21
|
-
static flattenTree(base, tree, results) {
|
|
22
|
-
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
23
|
-
for (const path in tree.trees) {
|
|
24
|
-
ChannelStorageService.flattenTree(`${base}${path}/`, tree.trees[path], results);
|
|
25
|
-
}
|
|
26
|
-
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
27
|
-
for (const blob in tree.blobs) {
|
|
28
|
-
results[`${base}${blob}`] = tree.blobs[blob];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
31
|
async contains(path) {
|
|
32
32
|
return this.flattenedTree[path] !== undefined;
|
|
33
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelStorageService.js","sourceRoot":"","sources":["../src/channelStorageService.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKH,iEAAoF;AAGpF,MAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"channelStorageService.js","sourceRoot":"","sources":["../src/channelStorageService.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKH,iEAAoF;AAGpF,MAAa,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,IAAA,mDAAmC,EAAC,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;AArED,sDAqEC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IDocumentStorageService } from \"@fluidframework/driver-definitions\";\nimport { ISnapshotTree } from \"@fluidframework/protocol-definitions\";\nimport { IChannelStorageService } from \"@fluidframework/datastore-definitions\";\nimport { getNormalizedObjectStoragePathParts } from \"@fluidframework/runtime-utils\";\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"]}
|
|
@@ -9,15 +9,23 @@ import { IAudience, IDeltaManager, AttachState, ILoaderOptions } from "@fluidfra
|
|
|
9
9
|
import { IClientDetails, IDocumentMessage, ISequencedDocumentMessage, IQuorumClients } from "@fluidframework/protocol-definitions";
|
|
10
10
|
import { IFluidDataStoreContext, IFluidDataStoreChannel, IGarbageCollectionData, IInboundSignalMessage, ISummaryTreeWithStats, VisibilityState, ITelemetryContext, IIdCompressor } from "@fluidframework/runtime-definitions";
|
|
11
11
|
import { IChannel, IFluidDataStoreRuntime, IFluidDataStoreRuntimeEvents, IChannelFactory } from "@fluidframework/datastore-definitions";
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
12
15
|
export declare enum DataStoreMessageType {
|
|
13
16
|
Attach = "attach",
|
|
14
17
|
ChannelOp = "op"
|
|
15
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
16
22
|
export interface ISharedObjectRegistry {
|
|
17
23
|
get(name: string): IChannelFactory | undefined;
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
26
|
* Base data store class
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
21
29
|
*/
|
|
22
30
|
export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataStoreRuntimeEvents> implements IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
23
31
|
private readonly dataStoreContext;
|
|
@@ -34,7 +42,7 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
34
42
|
/**
|
|
35
43
|
* {@inheritDoc @fluidframework/datastore-definitions#IFluidDataStoreRuntime.entryPoint}
|
|
36
44
|
*/
|
|
37
|
-
readonly entryPoint
|
|
45
|
+
readonly entryPoint: IFluidHandle<FluidObject>;
|
|
38
46
|
/**
|
|
39
47
|
* @deprecated - Will be removed in future major release. Migrate all usage of IFluidRouter to the "entryPoint" pattern. Refer to Removing-IFluidRouter.md
|
|
40
48
|
*/
|
|
@@ -89,12 +97,12 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
89
97
|
* @param dataStoreContext - Context object for the runtime.
|
|
90
98
|
* @param sharedObjectRegistry - The registry of shared objects that this data store will be able to instantiate.
|
|
91
99
|
* @param existing - Pass 'true' if loading this datastore from an existing file; pass 'false' otherwise.
|
|
92
|
-
* @param
|
|
100
|
+
* @param provideEntryPoint - Function to initialize the entryPoint object for the data store runtime. The
|
|
93
101
|
* handle to this data store runtime will point to the object returned by this function. If this function is not
|
|
94
102
|
* provided, the handle will be left undefined. This is here so we can start making handles a first-class citizen
|
|
95
103
|
* and the primary way of interacting with some Fluid objects, and should be used if possible.
|
|
96
104
|
*/
|
|
97
|
-
constructor(dataStoreContext: IFluidDataStoreContext, sharedObjectRegistry: ISharedObjectRegistry, existing: boolean,
|
|
105
|
+
constructor(dataStoreContext: IFluidDataStoreContext, sharedObjectRegistry: ISharedObjectRegistry, existing: boolean, provideEntryPoint: (runtime: IFluidDataStoreRuntime) => Promise<FluidObject>);
|
|
98
106
|
dispose(): void;
|
|
99
107
|
resolveHandle(request: IRequest): Promise<IResponse>;
|
|
100
108
|
request(request: IRequest): Promise<IResponse>;
|
|
@@ -122,14 +130,6 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
122
130
|
* This function is called when a handle to this data store is added to a visible DDS.
|
|
123
131
|
*/
|
|
124
132
|
attachGraph(): void;
|
|
125
|
-
/**
|
|
126
|
-
* @deprecated - Not necessary if consumers add a new dataStore to the container by storing its handle.
|
|
127
|
-
* Binds this runtime to the container
|
|
128
|
-
* This includes the following:
|
|
129
|
-
* 1. Sending an Attach op that includes all existing state
|
|
130
|
-
* 2. Attaching the graph if the data store becomes attached.
|
|
131
|
-
*/
|
|
132
|
-
bindToContext(): void;
|
|
133
133
|
bind(handle: IFluidHandle): void;
|
|
134
134
|
setConnectionState(connected: boolean, clientId?: string): void;
|
|
135
135
|
getQuorum(): IQuorumClients;
|
|
@@ -232,6 +232,8 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
232
232
|
* Request handler is only called when data store can't resolve request, i.e. for custom requests.
|
|
233
233
|
* @param Base - base class, inherits from FluidDataStoreRuntime
|
|
234
234
|
* @param requestHandler - request handler to mix in
|
|
235
|
+
*
|
|
236
|
+
* @public
|
|
235
237
|
*/
|
|
236
238
|
export declare const mixinRequestHandler: (requestHandler: (request: IRequest, runtime: FluidDataStoreRuntime) => Promise<IResponse>, Base?: typeof FluidDataStoreRuntime) => typeof FluidDataStoreRuntime;
|
|
237
239
|
/**
|
|
@@ -239,6 +241,8 @@ export declare const mixinRequestHandler: (requestHandler: (request: IRequest, r
|
|
|
239
241
|
* @param handler - handler that returns info about blob to be added to summary.
|
|
240
242
|
* Or undefined not to add anything to summary.
|
|
241
243
|
* @param Base - base class, inherits from FluidDataStoreRuntime
|
|
244
|
+
*
|
|
245
|
+
* @public
|
|
242
246
|
*/
|
|
243
247
|
export declare const mixinSummaryHandler: (handler: (runtime: FluidDataStoreRuntime) => Promise<{
|
|
244
248
|
path: string[];
|
|
@@ -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,EAEN,mBAAmB,EAQnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACN,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EAIzB,cAAc,EACd,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAKN,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"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"}
|