@fluidframework/datastore-definitions 2.0.0-rc.1.0.4 → 2.0.0-rc.2.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.
Files changed (55) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/api-extractor-cjs.json +8 -0
  4. package/api-extractor-lint.json +1 -1
  5. package/api-extractor.json +1 -1
  6. package/api-report/datastore-definitions.api.md +26 -27
  7. package/dist/channel.d.ts +27 -13
  8. package/dist/channel.d.ts.map +1 -1
  9. package/dist/dataStoreRuntime.d.ts +8 -8
  10. package/dist/dataStoreRuntime.d.ts.map +1 -1
  11. package/dist/datastore-definitions-alpha.d.ts +44 -31
  12. package/dist/datastore-definitions-beta.d.ts +44 -31
  13. package/dist/datastore-definitions-public.d.ts +44 -31
  14. package/dist/datastore-definitions-untrimmed.d.ts +44 -31
  15. package/dist/index.d.ts +5 -5
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/package.json +3 -0
  18. package/dist/serializable.d.ts +2 -2
  19. package/dist/serializable.d.ts.map +1 -1
  20. package/dist/tsdoc-metadata.json +1 -1
  21. package/lib/channel.d.ts +272 -0
  22. package/lib/channel.d.ts.map +1 -0
  23. package/lib/dataStoreRuntime.d.ts +95 -0
  24. package/lib/dataStoreRuntime.d.ts.map +1 -0
  25. package/lib/datastore-definitions-alpha.d.ts +496 -0
  26. package/lib/datastore-definitions-beta.d.ts +411 -0
  27. package/lib/datastore-definitions-public.d.ts +411 -0
  28. package/lib/datastore-definitions-untrimmed.d.ts +496 -0
  29. package/lib/index.d.ts +16 -0
  30. package/lib/index.d.ts.map +1 -0
  31. package/lib/jsonable.d.ts +75 -0
  32. package/lib/jsonable.d.ts.map +1 -0
  33. package/lib/serializable.d.ts +26 -0
  34. package/lib/serializable.d.ts.map +1 -0
  35. package/lib/storage.d.ts +24 -0
  36. package/lib/storage.d.ts.map +1 -0
  37. package/package.json +55 -33
  38. package/src/channel.ts +27 -13
  39. package/src/dataStoreRuntime.ts +10 -14
  40. package/src/index.ts +10 -6
  41. package/src/serializable.ts +2 -2
  42. package/tsconfig.cjs.json +7 -0
  43. package/tsconfig.json +3 -5
  44. package/dist/channel.js +0 -7
  45. package/dist/channel.js.map +0 -1
  46. package/dist/dataStoreRuntime.js +0 -7
  47. package/dist/dataStoreRuntime.js.map +0 -1
  48. package/dist/index.js +0 -7
  49. package/dist/index.js.map +0 -1
  50. package/dist/jsonable.js +0 -7
  51. package/dist/jsonable.js.map +0 -1
  52. package/dist/serializable.js +0 -7
  53. package/dist/serializable.js.map +0 -1
  54. package/dist/storage.js +0 -7
  55. package/dist/storage.js.map +0 -1
package/.eslintrc.cjs CHANGED
@@ -7,5 +7,5 @@ module.exports = {
7
7
  parserOptions: {
8
8
  project: ["./tsconfig.json", "./src/test/tsconfig.json"],
9
9
  },
10
- extends: ["@fluidframework/eslint-config-fluid/minimal", "prettier"],
10
+ extends: ["@fluidframework/eslint-config-fluid/minimal-deprecated", "prettier"],
11
11
  };
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @fluidframework/datastore-definitions
2
2
 
3
+ ## 2.0.0-rc.2.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - datastore-definitions: Add TChannel type parameter to IChannelFactory. ([#19961](https://github.com/microsoft/FluidFramework/issues/19961)) [e2317bdbd2](https://github.com/microsoft/FluidFramework/commits/e2317bdbd29c40c7888bba2ed657a40a8dd6f45b)
8
+
9
+ Add `TChannel` type parameter (which defaults to `IFluidLoadable`) to `IChannelFactory`. When left at its default this preserves the old behavior, however packages exporting `IChannelFactory` will now reference `IFluidLoadable` if not providing a different parameter and thus will implicitly depend on @fluidframework/core-interfaces.
10
+
11
+ - datastore-definitions: IFluidDataStoreRuntime.logger is now an ITelemetryBaseLogger ([#19585](https://github.com/microsoft/FluidFramework/issues/19585)) [56f23e1b89](https://github.com/microsoft/FluidFramework/commits/56f23e1b895c59f8ba5a50c707484bfdcdeedd67)
12
+
13
+ `IFluidDataStoreRuntime.logger` is now an `ITelemetryBaseLogger` instead of the deprecated `ITelemetryLogger`. The `sendTelemetryEvent()`, `sendErrorEvent()`, or `sendPerformanceEvent()` methods were not intended for users of `IFluidDataStoreRuntime`. You can keep using the logger's `send()` method to generate telemetry.
14
+
15
+ - container-definitions: ILoaderOptions no longer accepts arbitrary key/value pairs ([#19306](https://github.com/microsoft/FluidFramework/issues/19306)) [741926e225](https://github.com/microsoft/FluidFramework/commits/741926e2253a161504ecc6a6451d8f15d7ac4ed6)
16
+
17
+ ILoaderOptions has been narrowed to the specific set of supported loader options, and may no longer be used to pass arbitrary key/value pairs through to the runtime.
18
+
3
19
  ## 2.0.0-rc.1.0.0
4
20
 
5
21
  ### Minor Changes
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "../../../common/build/build-common/api-extractor-base.cjs.primary.json",
4
+ // CJS is actually secondary; so, no report.
5
+ "apiReport": {
6
+ "enabled": false
7
+ }
8
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "../../../common/build/build-common/api-extractor-lint.json"
3
+ "extends": "../../../common/build/build-common/api-extractor-lint.esm.primary.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "../../../common/build/build-common/api-extractor-base.json"
3
+ "extends": "../../../common/build/build-common/api-extractor-base.esm.primary.json"
4
4
  }
@@ -4,27 +4,26 @@
4
4
 
5
5
  ```ts
6
6
 
7
- import { AttachState } from '@fluidframework/container-definitions';
8
- import { FluidObject } from '@fluidframework/core-interfaces';
9
- import { IAudience } from '@fluidframework/container-definitions';
10
- import { IDeltaManager } from '@fluidframework/container-definitions';
11
- import { IDisposable } from '@fluidframework/core-interfaces';
12
- import { IDocumentMessage } from '@fluidframework/protocol-definitions';
13
- import { IEvent } from '@fluidframework/core-interfaces';
14
- import { IEventProvider } from '@fluidframework/core-interfaces';
15
- import { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
16
- import { IFluidHandle } from '@fluidframework/core-interfaces';
17
- import { IFluidHandleContext } from '@fluidframework/core-interfaces';
18
- import { IFluidLoadable } from '@fluidframework/core-interfaces';
19
- import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
20
- import { IIdCompressor } from '@fluidframework/id-compressor';
21
- import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
22
- import { ILoaderOptions } from '@fluidframework/container-definitions';
23
- import { IQuorumClients } from '@fluidframework/protocol-definitions';
24
- import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
25
- import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
26
- import { ITelemetryContext } from '@fluidframework/runtime-definitions';
27
- import { ITelemetryLogger } from '@fluidframework/core-interfaces';
7
+ import type { AttachState } from '@fluidframework/container-definitions';
8
+ import type { FluidObject } from '@fluidframework/core-interfaces';
9
+ import type { IAudience } from '@fluidframework/container-definitions';
10
+ import type { IDeltaManager } from '@fluidframework/container-definitions';
11
+ import type { IDisposable } from '@fluidframework/core-interfaces';
12
+ import type { IDocumentMessage } from '@fluidframework/protocol-definitions';
13
+ import type { IEvent } from '@fluidframework/core-interfaces';
14
+ import type { IEventProvider } from '@fluidframework/core-interfaces';
15
+ import type { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
16
+ import type { IFluidHandle } from '@fluidframework/core-interfaces';
17
+ import type { IFluidHandleContext } from '@fluidframework/core-interfaces';
18
+ import type { IFluidLoadable } from '@fluidframework/core-interfaces';
19
+ import type { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
20
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
21
+ import type { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
22
+ import type { IQuorumClients } from '@fluidframework/protocol-definitions';
23
+ import type { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
24
+ import type { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
25
+ import type { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
26
+ import type { ITelemetryContext } from '@fluidframework/runtime-definitions';
28
27
 
29
28
  // @public (undocumented)
30
29
  export interface IChannel extends IFluidLoadable {
@@ -46,10 +45,10 @@ export interface IChannelAttributes {
46
45
  }
47
46
 
48
47
  // @public
49
- export interface IChannelFactory {
48
+ export interface IChannelFactory<out TChannel extends IFluidLoadable = IFluidLoadable> {
50
49
  readonly attributes: IChannelAttributes;
51
- create(runtime: IFluidDataStoreRuntime, id: string): IChannel;
52
- load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<IChannel>;
50
+ create(runtime: IFluidDataStoreRuntime, id: string): TChannel & IChannel;
51
+ load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<TChannel & IChannel>;
53
52
  readonly type: string;
54
53
  }
55
54
 
@@ -81,7 +80,7 @@ export interface IDeltaConnection {
81
80
 
82
81
  // @public
83
82
  export interface IDeltaHandler {
84
- applyStashedOp(message: any): unknown;
83
+ applyStashedOp(message: any): void;
85
84
  process: (message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) => void;
86
85
  reSubmit(message: any, localOpMetadata: unknown): void;
87
86
  rollback?(message: any, localOpMetadata: unknown): void;
@@ -113,11 +112,11 @@ export interface IFluidDataStoreRuntime extends IEventProvider<IFluidDataStoreRu
113
112
  // (undocumented)
114
113
  readonly IFluidHandleContext: IFluidHandleContext;
115
114
  // (undocumented)
116
- readonly logger: ITelemetryLogger;
115
+ readonly logger: ITelemetryBaseLogger;
117
116
  // (undocumented)
118
117
  readonly objectsRoutingContext: IFluidHandleContext;
119
118
  // (undocumented)
120
- readonly options: ILoaderOptions;
119
+ readonly options: Record<string | number, any>;
121
120
  // (undocumented)
122
121
  readonly rootRoutingContext: IFluidHandleContext;
123
122
  submitSignal(type: string, content: any, targetClientId?: string): void;
package/dist/channel.d.ts CHANGED
@@ -2,11 +2,11 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { IFluidHandle, IFluidLoadable } from "@fluidframework/core-interfaces";
6
- import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
- import { IGarbageCollectionData, IExperimentalIncrementalSummaryContext, ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
8
- import { IChannelAttributes } from "./storage";
9
- import { IFluidDataStoreRuntime } from "./dataStoreRuntime";
5
+ import type { IFluidHandle, IFluidLoadable } from "@fluidframework/core-interfaces";
6
+ import type { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
+ import type { IGarbageCollectionData, IExperimentalIncrementalSummaryContext, ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
8
+ import type { IChannelAttributes } from "./storage.js";
9
+ import type { IFluidDataStoreRuntime } from "./dataStoreRuntime.js";
10
10
  /**
11
11
  * @public
12
12
  */
@@ -121,14 +121,21 @@ export interface IDeltaHandler {
121
121
  */
122
122
  reSubmit(message: any, localOpMetadata: unknown): void;
123
123
  /**
124
- * Apply changes from an op. Used when rehydrating an attached container
124
+ * Apply changes from an op just as if a local client has made the change,
125
+ * including submitting the op. Used when rehydrating an attached container
125
126
  * with pending changes. This prepares the SharedObject for seeing an ACK
126
127
  * for the op or resubmitting the op upon reconnection.
127
- * @param message - Contents of a stashed op.
128
- * @returns localMetadata of the op, to be passed to process() or resubmit()
129
- * when the op is ACKed or resubmitted, respectively
128
+ * @param content - Contents of a stashed op.
129
+ * @returns Should return void.
130
+ *
131
+ * @privateRemarks
132
+ * This interface is undergoing changes. Right now it support both the old
133
+ * flow, where just local metadata is returned, and a more ergonomic flow
134
+ * where operations are applied just like local edits, including
135
+ * submission of the op if attached. Soon the old flow will be removed
136
+ * and only the new flow will be supported.
130
137
  */
131
- applyStashedOp(message: any): unknown;
138
+ applyStashedOp(message: any): void;
132
139
  /**
133
140
  * Revert a local op.
134
141
  * @param message - The original message that was submitted.
@@ -215,9 +222,16 @@ export interface IChannelServices {
215
222
  *
216
223
  * If a collaboration includes a {@link https://fluidframework.com/docs/data-structures/map/ | SharedMap},
217
224
  * the collaborating clients will need to have access to a factory that can produce the `SharedMap` object.
225
+ *
226
+ * @privateRemarks
227
+ * TChannel extends IFluidLoadable instead of TChannel since doing so enables LoadableObjectClass to be covariant over its input parameter.
228
+ * This means that code like fluid-static's `InitialObjects` can be simple and type safe and LoadableObjectClass<any> is not needed.
229
+ * This approach (not requiring TChannel to extend IChannel) also makes it possible for SharedObject's public interfaces to not include IChannel if desired
230
+ * (while still requiring the implementation to implement it).
231
+ *
218
232
  * @public
219
233
  */
220
- export interface IChannelFactory {
234
+ export interface IChannelFactory<out TChannel extends IFluidLoadable = IFluidLoadable> {
221
235
  /**
222
236
  * String representing the type of the factory.
223
237
  */
@@ -241,7 +255,7 @@ export interface IChannelFactory {
241
255
  * for the given object? The latter seems good in general. But both are probably good things. We then just
242
256
  * need a way to allow the document to provide later storage for the object.
243
257
  */
244
- load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<IChannel>;
258
+ load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<TChannel & IChannel>;
245
259
  /**
246
260
  * Creates a local version of the channel.
247
261
  * Calling attach on the object later will insert it into the object stream.
@@ -253,6 +267,6 @@ export interface IChannelFactory {
253
267
  * NOTE here - When we attach we need to submit all the pending ops prior to actually doing the attach
254
268
  * for consistency.
255
269
  */
256
- create(runtime: IFluidDataStoreRuntime, id: string): IChannel;
270
+ create(runtime: IFluidDataStoreRuntime, id: string): TChannel & IChannel;
257
271
  }
258
272
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,KAAK,EACX,sBAAsB,EACtB,sCAAsC,EACtC,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,cAAc;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,gBAAgB,CACf,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,qBAAqB,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CACR,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,yBAAyB,CAAC,EAAE,sCAAsC,GAChE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C;;;;OAIG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhG;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAE7C;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvD;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;;;;;OAQG;IACH,wBAAwB,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;CACvF;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,eAAe,EAAE,gBAAgB,CAAC;IAElC,aAAa,EAAE,sBAAsB,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,eAAe,CAAC,GAAG,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc;IACpF;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;;;;;;;OAcG;IACH,IAAI,CACH,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC7C,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzE"}
@@ -2,12 +2,12 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { IEvent, IEventProvider, ITelemetryLogger, IDisposable, IFluidHandleContext, IFluidHandle, FluidObject } from "@fluidframework/core-interfaces";
6
- import { IAudience, IDeltaManager, AttachState, ILoaderOptions } from "@fluidframework/container-definitions";
7
- import { IDocumentMessage, IQuorumClients, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
8
- import { IInboundSignalMessage } from "@fluidframework/runtime-definitions";
9
- import { IIdCompressor } from "@fluidframework/id-compressor";
10
- import { IChannel } from "./channel";
5
+ import type { IEvent, IEventProvider, IDisposable, IFluidHandleContext, IFluidHandle, FluidObject, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
6
+ import type { IAudience, IDeltaManager, AttachState } from "@fluidframework/container-definitions";
7
+ import type { IDocumentMessage, IQuorumClients, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
8
+ import type { IInboundSignalMessage } from "@fluidframework/runtime-definitions";
9
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
10
+ import type { IChannel } from "./channel.js";
11
11
  /**
12
12
  * Events emitted by {@link IFluidDataStoreRuntime}.
13
13
  * @public
@@ -28,11 +28,11 @@ export interface IFluidDataStoreRuntime extends IEventProvider<IFluidDataStoreRu
28
28
  readonly rootRoutingContext: IFluidHandleContext;
29
29
  readonly channelsRoutingContext: IFluidHandleContext;
30
30
  readonly objectsRoutingContext: IFluidHandleContext;
31
- readonly options: ILoaderOptions;
31
+ readonly options: Record<string | number, any>;
32
32
  readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
33
33
  readonly clientId: string | undefined;
34
34
  readonly connected: boolean;
35
- readonly logger: ITelemetryLogger;
35
+ readonly logger: ITelemetryBaseLogger;
36
36
  /**
37
37
  * Indicates the attachment state of the data store to a host service.
38
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"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"}
@@ -5,27 +5,26 @@
5
5
  * @packageDocumentation
6
6
  */
7
7
 
8
- import { AttachState } from '@fluidframework/container-definitions';
9
- import { FluidObject } from '@fluidframework/core-interfaces';
10
- import { IAudience } from '@fluidframework/container-definitions';
11
- import { IDeltaManager } from '@fluidframework/container-definitions';
12
- import { IDisposable } from '@fluidframework/core-interfaces';
13
- import { IDocumentMessage } from '@fluidframework/protocol-definitions';
14
- import { IEvent } from '@fluidframework/core-interfaces';
15
- import { IEventProvider } from '@fluidframework/core-interfaces';
16
- import { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
17
- import { IFluidHandle } from '@fluidframework/core-interfaces';
18
- import { IFluidHandleContext } from '@fluidframework/core-interfaces';
19
- import { IFluidLoadable } from '@fluidframework/core-interfaces';
20
- import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
21
- import { IIdCompressor } from '@fluidframework/id-compressor';
22
- import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
23
- import { ILoaderOptions } from '@fluidframework/container-definitions';
24
- import { IQuorumClients } from '@fluidframework/protocol-definitions';
25
- import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
26
- import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
27
- import { ITelemetryContext } from '@fluidframework/runtime-definitions';
28
- import { ITelemetryLogger } from '@fluidframework/core-interfaces';
8
+ import type { AttachState } from '@fluidframework/container-definitions';
9
+ import type { FluidObject } from '@fluidframework/core-interfaces';
10
+ import type { IAudience } from '@fluidframework/container-definitions';
11
+ import type { IDeltaManager } from '@fluidframework/container-definitions';
12
+ import type { IDisposable } from '@fluidframework/core-interfaces';
13
+ import type { IDocumentMessage } from '@fluidframework/protocol-definitions';
14
+ import type { IEvent } from '@fluidframework/core-interfaces';
15
+ import type { IEventProvider } from '@fluidframework/core-interfaces';
16
+ import type { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
17
+ import type { IFluidHandle } from '@fluidframework/core-interfaces';
18
+ import type { IFluidHandleContext } from '@fluidframework/core-interfaces';
19
+ import type { IFluidLoadable } from '@fluidframework/core-interfaces';
20
+ import type { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
21
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
22
+ import type { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
23
+ import type { IQuorumClients } from '@fluidframework/protocol-definitions';
24
+ import type { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
25
+ import type { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
26
+ import type { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
27
+ import type { ITelemetryContext } from '@fluidframework/runtime-definitions';
29
28
 
30
29
  /**
31
30
  * @public
@@ -153,9 +152,16 @@ export declare interface IChannelAttributes {
153
152
  *
154
153
  * If a collaboration includes a {@link https://fluidframework.com/docs/data-structures/map/ | SharedMap},
155
154
  * the collaborating clients will need to have access to a factory that can produce the `SharedMap` object.
155
+ *
156
+ * @privateRemarks
157
+ * TChannel extends IFluidLoadable instead of TChannel since doing so enables LoadableObjectClass to be covariant over its input parameter.
158
+ * This means that code like fluid-static's `InitialObjects` can be simple and type safe and LoadableObjectClass<any> is not needed.
159
+ * This approach (not requiring TChannel to extend IChannel) also makes it possible for SharedObject's public interfaces to not include IChannel if desired
160
+ * (while still requiring the implementation to implement it).
161
+ *
156
162
  * @public
157
163
  */
158
- export declare interface IChannelFactory {
164
+ export declare interface IChannelFactory<out TChannel extends IFluidLoadable = IFluidLoadable> {
159
165
  /**
160
166
  * String representing the type of the factory.
161
167
  */
@@ -179,7 +185,7 @@ export declare interface IChannelFactory {
179
185
  * for the given object? The latter seems good in general. But both are probably good things. We then just
180
186
  * need a way to allow the document to provide later storage for the object.
181
187
  */
182
- load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<IChannel>;
188
+ load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<TChannel & IChannel>;
183
189
  /**
184
190
  * Creates a local version of the channel.
185
191
  * Calling attach on the object later will insert it into the object stream.
@@ -191,7 +197,7 @@ export declare interface IChannelFactory {
191
197
  * NOTE here - When we attach we need to submit all the pending ops prior to actually doing the attach
192
198
  * for consistency.
193
199
  */
194
- create(runtime: IFluidDataStoreRuntime, id: string): IChannel;
200
+ create(runtime: IFluidDataStoreRuntime, id: string): TChannel & IChannel;
195
201
  }
196
202
 
197
203
  /**
@@ -285,14 +291,21 @@ export declare interface IDeltaHandler {
285
291
  */
286
292
  reSubmit(message: any, localOpMetadata: unknown): void;
287
293
  /**
288
- * Apply changes from an op. Used when rehydrating an attached container
294
+ * Apply changes from an op just as if a local client has made the change,
295
+ * including submitting the op. Used when rehydrating an attached container
289
296
  * with pending changes. This prepares the SharedObject for seeing an ACK
290
297
  * for the op or resubmitting the op upon reconnection.
291
- * @param message - Contents of a stashed op.
292
- * @returns localMetadata of the op, to be passed to process() or resubmit()
293
- * when the op is ACKed or resubmitted, respectively
298
+ * @param content - Contents of a stashed op.
299
+ * @returns Should return void.
300
+ *
301
+ * @privateRemarks
302
+ * This interface is undergoing changes. Right now it support both the old
303
+ * flow, where just local metadata is returned, and a more ergonomic flow
304
+ * where operations are applied just like local edits, including
305
+ * submission of the op if attached. Soon the old flow will be removed
306
+ * and only the new flow will be supported.
294
307
  */
295
- applyStashedOp(message: any): unknown;
308
+ applyStashedOp(message: any): void;
296
309
  /**
297
310
  * Revert a local op.
298
311
  * @param message - The original message that was submitted.
@@ -311,11 +324,11 @@ export declare interface IFluidDataStoreRuntime extends IEventProvider<IFluidDat
311
324
  readonly rootRoutingContext: IFluidHandleContext;
312
325
  readonly channelsRoutingContext: IFluidHandleContext;
313
326
  readonly objectsRoutingContext: IFluidHandleContext;
314
- readonly options: ILoaderOptions;
327
+ readonly options: Record<string | number, any>;
315
328
  readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
316
329
  readonly clientId: string | undefined;
317
330
  readonly connected: boolean;
318
- readonly logger: ITelemetryLogger;
331
+ readonly logger: ITelemetryBaseLogger;
319
332
  /**
320
333
  * Indicates the attachment state of the data store to a host service.
321
334
  */
@@ -5,27 +5,26 @@
5
5
  * @packageDocumentation
6
6
  */
7
7
 
8
- import { AttachState } from '@fluidframework/container-definitions';
9
- import { FluidObject } from '@fluidframework/core-interfaces';
10
- import { IAudience } from '@fluidframework/container-definitions';
11
- import { IDeltaManager } from '@fluidframework/container-definitions';
12
- import { IDisposable } from '@fluidframework/core-interfaces';
13
- import { IDocumentMessage } from '@fluidframework/protocol-definitions';
14
- import { IEvent } from '@fluidframework/core-interfaces';
15
- import { IEventProvider } from '@fluidframework/core-interfaces';
16
- import { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
17
- import { IFluidHandle } from '@fluidframework/core-interfaces';
18
- import { IFluidHandleContext } from '@fluidframework/core-interfaces';
19
- import { IFluidLoadable } from '@fluidframework/core-interfaces';
20
- import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
21
- import { IIdCompressor } from '@fluidframework/id-compressor';
22
- import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
23
- import { ILoaderOptions } from '@fluidframework/container-definitions';
24
- import { IQuorumClients } from '@fluidframework/protocol-definitions';
25
- import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
26
- import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
27
- import { ITelemetryContext } from '@fluidframework/runtime-definitions';
28
- import { ITelemetryLogger } from '@fluidframework/core-interfaces';
8
+ import type { AttachState } from '@fluidframework/container-definitions';
9
+ import type { FluidObject } from '@fluidframework/core-interfaces';
10
+ import type { IAudience } from '@fluidframework/container-definitions';
11
+ import type { IDeltaManager } from '@fluidframework/container-definitions';
12
+ import type { IDisposable } from '@fluidframework/core-interfaces';
13
+ import type { IDocumentMessage } from '@fluidframework/protocol-definitions';
14
+ import type { IEvent } from '@fluidframework/core-interfaces';
15
+ import type { IEventProvider } from '@fluidframework/core-interfaces';
16
+ import type { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
17
+ import type { IFluidHandle } from '@fluidframework/core-interfaces';
18
+ import type { IFluidHandleContext } from '@fluidframework/core-interfaces';
19
+ import type { IFluidLoadable } from '@fluidframework/core-interfaces';
20
+ import type { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
21
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
22
+ import type { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
23
+ import type { IQuorumClients } from '@fluidframework/protocol-definitions';
24
+ import type { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
25
+ import type { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
26
+ import type { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
27
+ import type { ITelemetryContext } from '@fluidframework/runtime-definitions';
29
28
 
30
29
  /**
31
30
  * @public
@@ -153,9 +152,16 @@ export declare interface IChannelAttributes {
153
152
  *
154
153
  * If a collaboration includes a {@link https://fluidframework.com/docs/data-structures/map/ | SharedMap},
155
154
  * the collaborating clients will need to have access to a factory that can produce the `SharedMap` object.
155
+ *
156
+ * @privateRemarks
157
+ * TChannel extends IFluidLoadable instead of TChannel since doing so enables LoadableObjectClass to be covariant over its input parameter.
158
+ * This means that code like fluid-static's `InitialObjects` can be simple and type safe and LoadableObjectClass<any> is not needed.
159
+ * This approach (not requiring TChannel to extend IChannel) also makes it possible for SharedObject's public interfaces to not include IChannel if desired
160
+ * (while still requiring the implementation to implement it).
161
+ *
156
162
  * @public
157
163
  */
158
- export declare interface IChannelFactory {
164
+ export declare interface IChannelFactory<out TChannel extends IFluidLoadable = IFluidLoadable> {
159
165
  /**
160
166
  * String representing the type of the factory.
161
167
  */
@@ -179,7 +185,7 @@ export declare interface IChannelFactory {
179
185
  * for the given object? The latter seems good in general. But both are probably good things. We then just
180
186
  * need a way to allow the document to provide later storage for the object.
181
187
  */
182
- load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<IChannel>;
188
+ load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<TChannel & IChannel>;
183
189
  /**
184
190
  * Creates a local version of the channel.
185
191
  * Calling attach on the object later will insert it into the object stream.
@@ -191,7 +197,7 @@ export declare interface IChannelFactory {
191
197
  * NOTE here - When we attach we need to submit all the pending ops prior to actually doing the attach
192
198
  * for consistency.
193
199
  */
194
- create(runtime: IFluidDataStoreRuntime, id: string): IChannel;
200
+ create(runtime: IFluidDataStoreRuntime, id: string): TChannel & IChannel;
195
201
  }
196
202
 
197
203
  /**
@@ -285,14 +291,21 @@ export declare interface IDeltaHandler {
285
291
  */
286
292
  reSubmit(message: any, localOpMetadata: unknown): void;
287
293
  /**
288
- * Apply changes from an op. Used when rehydrating an attached container
294
+ * Apply changes from an op just as if a local client has made the change,
295
+ * including submitting the op. Used when rehydrating an attached container
289
296
  * with pending changes. This prepares the SharedObject for seeing an ACK
290
297
  * for the op or resubmitting the op upon reconnection.
291
- * @param message - Contents of a stashed op.
292
- * @returns localMetadata of the op, to be passed to process() or resubmit()
293
- * when the op is ACKed or resubmitted, respectively
298
+ * @param content - Contents of a stashed op.
299
+ * @returns Should return void.
300
+ *
301
+ * @privateRemarks
302
+ * This interface is undergoing changes. Right now it support both the old
303
+ * flow, where just local metadata is returned, and a more ergonomic flow
304
+ * where operations are applied just like local edits, including
305
+ * submission of the op if attached. Soon the old flow will be removed
306
+ * and only the new flow will be supported.
294
307
  */
295
- applyStashedOp(message: any): unknown;
308
+ applyStashedOp(message: any): void;
296
309
  /**
297
310
  * Revert a local op.
298
311
  * @param message - The original message that was submitted.
@@ -311,11 +324,11 @@ export declare interface IFluidDataStoreRuntime extends IEventProvider<IFluidDat
311
324
  readonly rootRoutingContext: IFluidHandleContext;
312
325
  readonly channelsRoutingContext: IFluidHandleContext;
313
326
  readonly objectsRoutingContext: IFluidHandleContext;
314
- readonly options: ILoaderOptions;
327
+ readonly options: Record<string | number, any>;
315
328
  readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
316
329
  readonly clientId: string | undefined;
317
330
  readonly connected: boolean;
318
- readonly logger: ITelemetryLogger;
331
+ readonly logger: ITelemetryBaseLogger;
319
332
  /**
320
333
  * Indicates the attachment state of the data store to a host service.
321
334
  */