@fluidframework/runtime-definitions 2.23.0 → 2.31.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 +428 -406
- package/api-report/runtime-definitions.legacy.alpha.api.md +1 -3
- package/dist/dataStoreContext.d.ts +3 -7
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContext.d.ts +3 -7
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +8 -11
- package/src/dataStoreContext.ts +3 -8
- package/prettier.config.cjs +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @fluidframework/runtime-definitions
|
|
2
2
|
|
|
3
|
+
## 2.31.0
|
|
4
|
+
|
|
5
|
+
Dependency updates only.
|
|
6
|
+
|
|
7
|
+
## 2.30.0
|
|
8
|
+
|
|
9
|
+
### Minor Changes
|
|
10
|
+
|
|
11
|
+
- The process and processDocumentSchemaOp functions have been removed ([#24018](https://github.com/microsoft/FluidFramework/pull/24018)) [bc35d543d5](https://github.com/microsoft/FluidFramework/commit/bc35d543d58c7e4bf28944b09d645cc26bf28a29)
|
|
12
|
+
|
|
13
|
+
`process` has been replaced by `processMessages` from the following:
|
|
14
|
+
|
|
15
|
+
- `FluidDataStoreRuntime`
|
|
16
|
+
- `IDeltaHandler`
|
|
17
|
+
- `IFluidDataStoreChannel`
|
|
18
|
+
- `MockFluidDataStoreRuntime`
|
|
19
|
+
- `MockDeltaConnection`
|
|
20
|
+
|
|
21
|
+
`processDocumentSchemaOp` has been replaced by `processDocumentSchemaMessages` from `DocumentsSchemaController`.
|
|
22
|
+
|
|
23
|
+
See the [deprecation release note](https://github.com/microsoft/FluidFramework/releases/tag/client_v2.5.0#user-content-the-process-function-on-ifluiddatastorechannel-ideltahandler-mockfluiddatastoreruntime-and-mockdeltaconnection-is-now-deprecated-22840) for more details.
|
|
24
|
+
|
|
3
25
|
## 2.23.0
|
|
4
26
|
|
|
5
27
|
Dependency updates only.
|
|
@@ -16,18 +38,18 @@ Dependency updates only.
|
|
|
16
38
|
|
|
17
39
|
### Minor Changes
|
|
18
40
|
|
|
19
|
-
-
|
|
41
|
+
- The createDataStoreWithProps APIs on ContainerRuntime and IContainerRuntimeBase have been removed ([#22996](https://github.com/microsoft/FluidFramework/pull/22996)) [bd243fb292](https://github.com/microsoft/FluidFramework/commit/bd243fb2927915d87c42486e21ee0c990962a9a7)
|
|
20
42
|
|
|
21
|
-
|
|
22
|
-
|
|
43
|
+
`ContainerRuntime.createDataStoreWithProps` and `IContainerRuntimeBase.createDataStoreWithProps`
|
|
44
|
+
were [deprecated in version 0.25.0](https://github.com/microsoft/FluidFramework/blob/main/BREAKING.md#icontainerruntimebase_createdatastorewithprops-is-removed) and have been removed.
|
|
23
45
|
|
|
24
|
-
|
|
25
|
-
|
|
46
|
+
Replace uses of these APIs with `PureDataObjectFactory.createInstanceWithDataStore` and pass in props via the `initialState`
|
|
47
|
+
parameter.
|
|
26
48
|
|
|
27
|
-
|
|
49
|
+
These changes were originally announced in version 0.25.0. See the following issues for more details:
|
|
28
50
|
|
|
29
|
-
|
|
30
|
-
|
|
51
|
+
- [#1537](https://github.com/microsoft/FluidFramework/issues/1537)
|
|
52
|
+
- [#2931](https://github.com/microsoft/FluidFramework/pull/2931)
|
|
31
53
|
|
|
32
54
|
## 2.13.0
|
|
33
55
|
|
|
@@ -41,108 +63,108 @@ Dependency updates only.
|
|
|
41
63
|
|
|
42
64
|
### Minor Changes
|
|
43
65
|
|
|
44
|
-
-
|
|
66
|
+
- Synchronous Child Datastore Creation ([#23143](https://github.com/microsoft/FluidFramework/pull/23143)) [3426b434df](https://github.com/microsoft/FluidFramework/commit/3426b434dfa06de3ee1a60a5f0d605cd312f2c58)
|
|
45
67
|
|
|
46
|
-
|
|
68
|
+
#### Overview
|
|
47
69
|
|
|
48
|
-
|
|
70
|
+
This feature introduces a new pattern for creating datastores synchronously within the Fluid Framework. It allows for the synchronous creation of a child datastore from an existing datastore, provided that the child datastore is available synchronously via the existing datastore's registry and that the child's factory supports synchronous creation. This method also ensures strong typing for the consumer.
|
|
49
71
|
|
|
50
|
-
|
|
72
|
+
In this context, "child" refers specifically to the organization of factories and registries, not to any hierarchical or hosting relationship between datastores. The parent datastore does not control the runtime behaviors of the child datastore beyond its creation.
|
|
51
73
|
|
|
52
|
-
|
|
74
|
+
The synchronous creation of child datastores enhances the flexibility of datastore management within the Fluid Framework. It ensures type safety and provides a different way to manage datastores within a container. However, it is important to consider the overhead associated with datastores, as they are stored, summarized, garbage collected, loaded, and referenced independently. This overhead should be justified by the scenario's requirements.
|
|
53
75
|
|
|
54
|
-
|
|
76
|
+
Datastores offer increased capabilities, such as the ability to reference them via handles, allowing multiple references to exist and enabling those references to be moved, swapped, or changed. Additionally, datastores are garbage collected after becoming unreferenced, which can simplify final cleanup across clients. This is in contrast to subdirectories in a shared directory, which do not have native capabilities for referencing or garbage collection but are very low overhead to create.
|
|
55
77
|
|
|
56
|
-
|
|
78
|
+
Synchronous creation relies on both the factory and the datastore to support it. This means that asynchronous operations, such as resolving handles, some browser API calls, consensus-based operations, or other asynchronous tasks, cannot be performed during the creation flow. Therefore, synchronous child datastore creation is best limited to scenarios where the existing asynchronous process cannot be used, such as when a new datastore must be created in direct response to synchronous user input.
|
|
57
79
|
|
|
58
|
-
|
|
80
|
+
#### Key Benefits
|
|
59
81
|
|
|
60
|
-
|
|
61
|
-
|
|
82
|
+
- **Synchronous Creation**: Allows for the immediate creation of child datastores without waiting for asynchronous operations.
|
|
83
|
+
- **Strong Typing**: Ensures type safety and better developer experience by leveraging TypeScript's type system.
|
|
62
84
|
|
|
63
|
-
|
|
85
|
+
#### Use Cases
|
|
64
86
|
|
|
65
|
-
|
|
87
|
+
##### Example 1: Creating a Child Datastore
|
|
66
88
|
|
|
67
|
-
|
|
89
|
+
In this example, we demonstrate how to support creating a child datastore synchronously from a parent datastore.
|
|
68
90
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
91
|
+
```typescript
|
|
92
|
+
/**
|
|
93
|
+
* This is the parent DataObject, which is also a datastore. It has a
|
|
94
|
+
* synchronous method to create child datastores, which could be called
|
|
95
|
+
* in response to synchronous user input, like a key press.
|
|
96
|
+
*/
|
|
97
|
+
class ParentDataObject extends DataObject {
|
|
98
|
+
createChild(name: string): ChildDataStore {
|
|
99
|
+
assert(
|
|
100
|
+
this.context.createChildDataStore !== undefined,
|
|
101
|
+
"this.context.createChildDataStore",
|
|
102
|
+
);
|
|
81
103
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
104
|
+
const { entrypoint } = this.context.createChildDataStore(
|
|
105
|
+
ChildDataStoreFactory.instance,
|
|
106
|
+
);
|
|
107
|
+
const dir = this.root.createSubDirectory("children");
|
|
108
|
+
dir.set(name, entrypoint.handle);
|
|
109
|
+
entrypoint.setProperty("childValue", name);
|
|
88
110
|
|
|
89
|
-
|
|
90
|
-
|
|
111
|
+
return entrypoint;
|
|
112
|
+
}
|
|
91
113
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
114
|
+
getChild(name: string): IFluidHandle<ChildDataStore> | undefined {
|
|
115
|
+
const dir = this.root.getSubDirectory("children");
|
|
116
|
+
return dir?.get<IFluidHandle<ChildDataStore>>(name);
|
|
96
117
|
}
|
|
97
|
-
|
|
118
|
+
}
|
|
119
|
+
```
|
|
98
120
|
|
|
99
|
-
|
|
100
|
-
|
|
121
|
+
For a complete example see the following test:
|
|
122
|
+
https://github.com/microsoft/FluidFramework/blob/main/packages/test/local-server-tests/src/test/synchronousDataStoreCreation.spec.ts
|
|
101
123
|
|
|
102
124
|
## 2.10.0
|
|
103
125
|
|
|
104
126
|
### Minor Changes
|
|
105
127
|
|
|
106
|
-
-
|
|
128
|
+
- Changes to the batchBegin and batchEnd events on ContainerRuntime ([#22791](https://github.com/microsoft/FluidFramework/pull/22791)) [d252af539a](https://github.com/microsoft/FluidFramework/commit/d252af539afc2b44d05db35cb94b4351b75d9432)
|
|
107
129
|
|
|
108
|
-
|
|
130
|
+
The 'batchBegin'/'batchEnd' events on ContainerRuntime indicate when a batch is beginning or finishing being processed. The `contents` property on the event argument `op` is not useful or relevant when reasoning over incoming changes at the batch level. Accordingly, it has been removed from the `op` event argument.
|
|
109
131
|
|
|
110
|
-
-
|
|
132
|
+
- "Remove `IFluidParentContext.ensureNoDataModelChanges` and its implementations ([#22842](https://github.com/microsoft/FluidFramework/pull/22842)) [3aff19a462](https://github.com/microsoft/FluidFramework/commit/3aff19a4622a242e906286c14dfcfa6523175132)
|
|
111
133
|
|
|
112
|
-
|
|
113
|
-
|
|
134
|
+
- `IFluidParentContext.ensureNoDataModelChanges` has been removed. [prior deprecation commit](https://github.com/microsoft/FluidFramework/commit/c9d156264bdfa211a3075bdf29cde442ecea234c)
|
|
135
|
+
- `MockFluidDataStoreContext.ensureNoDataModelChanges` has also been removed.
|
|
114
136
|
|
|
115
|
-
-
|
|
137
|
+
- The inbound and outbound properties have been removed from IDeltaManager ([#22282](https://github.com/microsoft/FluidFramework/pull/22282)) [45a57693f2](https://github.com/microsoft/FluidFramework/commit/45a57693f291e0dc5e91af7f29a9b9c8f82dfad5)
|
|
116
138
|
|
|
117
|
-
|
|
139
|
+
The inbound and outbound properties were [deprecated in version 2.0.0-rc.2.0.0](https://github.com/microsoft/FluidFramework/blob/main/RELEASE_NOTES/2.0.0-rc.2.0.0.md#container-definitions-deprecate-ideltamanagerinbound-and-ideltamanageroutbound) and have been removed from `IDeltaManager`.
|
|
118
140
|
|
|
119
|
-
|
|
141
|
+
`IDeltaManager.inbound` contained functionality that could break core runtime features such as summarization and processing batches if used improperly. Data loss or corruption could occur when `IDeltaManger.inbound.pause()` or `IDeltaManager.inbound.resume()` were called.
|
|
120
142
|
|
|
121
|
-
|
|
143
|
+
Similarly, `IDeltaManager.outbound` contained functionality that could break core runtime features such as generation of batches and chunking. Data loss or corruption could occur when `IDeltaManger.inbound.pause()` or `IDeltaManager.inbound.resume()` were called.
|
|
122
144
|
|
|
123
|
-
|
|
145
|
+
#### Alternatives
|
|
124
146
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
147
|
+
- Alternatives to `IDeltaManager.inbound.on("op", ...)` are `IDeltaManager.on("op", ...)`
|
|
148
|
+
- Alternatives to calling `IDeltaManager.inbound.pause`, `IDeltaManager.outbound.pause` for `IContainer` disconnect use `IContainer.disconnect`.
|
|
149
|
+
- Alternatives to calling `IDeltaManager.inbound.resume`, `IDeltaManager.outbound.resume` for `IContainer` reconnect use `IContainer.connect`.
|
|
128
150
|
|
|
129
151
|
## 2.5.0
|
|
130
152
|
|
|
131
153
|
### Minor Changes
|
|
132
154
|
|
|
133
|
-
-
|
|
155
|
+
- The op event on IFluidDataStoreRuntimeEvents and IContainerRuntimeBaseEvents is emitted at a different time ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15)
|
|
134
156
|
|
|
135
|
-
|
|
157
|
+
Previously, in versions 2.4 and below, the `op` event was emitted immediately after an op was processed and before the next op was processed.
|
|
136
158
|
|
|
137
|
-
|
|
138
|
-
|
|
159
|
+
In versions 2.5.0 and beyond, the `op` event will be emitted after an op is processed, but it may not be immediate. In addition, other ops in a
|
|
160
|
+
batch may be processed before the op event is emitted for a particular op.
|
|
139
161
|
|
|
140
|
-
-
|
|
162
|
+
- The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now deprecated ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15)
|
|
141
163
|
|
|
142
|
-
|
|
143
|
-
|
|
164
|
+
The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now
|
|
165
|
+
deprecated. It has been replaced with a new function `processMessages`, which will be called to process multiple messages instead of a single one on the channel. This is part of a feature called "Op bunching", where contiguous ops of a given type and to a given data store / DDS are bunched and sent together for processing.
|
|
144
166
|
|
|
145
|
-
|
|
167
|
+
Implementations of `IFluidDataStoreChannel` and `IDeltaHandler` must now also implement `processMessages`. For reference implementations, see `FluidDataStoreRuntime::processMessages` and `SharedObjectCore::attachDeltaHandler`.
|
|
146
168
|
|
|
147
169
|
## 2.4.0
|
|
148
170
|
|
|
@@ -156,27 +178,27 @@ Dependency updates only.
|
|
|
156
178
|
|
|
157
179
|
### Minor Changes
|
|
158
180
|
|
|
159
|
-
-
|
|
181
|
+
- gcThrowOnTombstoneUsage and gcTombstoneEnforcementAllowed are deprecated ([#21992](https://github.com/microsoft/FluidFramework/pull/21992)) [b2bfed3a62](https://github.com/microsoft/FluidFramework/commit/b2bfed3a624d590d776c64a3317c60400b4b3e81)
|
|
160
182
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
183
|
+
These properties `gcThrowOnTombstoneUsage` and `gcTombstoneEnforcementAllowed` have been deprecated in
|
|
184
|
+
`IFluidParentContext` and `ContainerRuntime`. These were included in certain garbage collection (GC) telemetry to
|
|
185
|
+
identify whether the corresponding features have been enabled. These features are now enabled by default and this
|
|
186
|
+
information is added to the "GarbageCollectorLoaded" telemetry.
|
|
165
187
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
188
|
+
Also, the following Garbage collection runtime options and configs have been removed. They were added during GC feature
|
|
189
|
+
development to roll out and control functionalities. The corresponding features are on by default and can no longer be
|
|
190
|
+
disabled or controlled:
|
|
169
191
|
|
|
170
|
-
|
|
192
|
+
GC runtime options removed:
|
|
171
193
|
|
|
172
|
-
|
|
173
|
-
|
|
194
|
+
- `gcDisableThrowOnTombstoneLoad`
|
|
195
|
+
- `disableDataStoreSweep`
|
|
174
196
|
|
|
175
|
-
|
|
197
|
+
GC configs removed:
|
|
176
198
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
199
|
+
- `"Fluid.GarbageCollection.DisableTombstone"`
|
|
200
|
+
- `"Fluid.GarbageCollection.ThrowOnTombstoneUsage"`
|
|
201
|
+
- `"Fluid.GarbageCollection.DisableDataStoreSweep"`
|
|
180
202
|
|
|
181
203
|
## 2.1.0
|
|
182
204
|
|
|
@@ -186,269 +208,269 @@ Dependency updates only.
|
|
|
186
208
|
|
|
187
209
|
### Minor Changes
|
|
188
210
|
|
|
189
|
-
-
|
|
211
|
+
- fluid-framework: Type Erase ISharedObjectKind ([#21081](https://github.com/microsoft/FluidFramework/pull/21081)) [78f228e370](https://github.com/microsoft/FluidFramework/commit/78f228e37055bd4d9a8f02b3a1eefebf4da9c59c)
|
|
190
212
|
|
|
191
|
-
|
|
213
|
+
A new type, `SharedObjectKind` is added as a type erased version of `ISharedObjectKind` and `DataObjectClass`.
|
|
192
214
|
|
|
193
|
-
|
|
215
|
+
This type fills the role of both `ISharedObjectKind` and `DataObjectClass` in the `@public` "declarative API" exposed in the `fluid-framework` package.
|
|
194
216
|
|
|
195
|
-
|
|
217
|
+
This allows several types referenced by `ISharedObjectKind` to be made `@alpha` as they should only need to be used by legacy code and users of the unstable/alpha/legacy "encapsulated API".
|
|
196
218
|
|
|
197
|
-
|
|
198
|
-
|
|
219
|
+
Access to these now less public types should not be required for users of the `@public` "declarative API" exposed in the `fluid-framework` package, but can still be accessed for those who need them under the `/legacy` import paths.
|
|
220
|
+
The full list of such types is:
|
|
199
221
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
222
|
+
- `SharedTree` as exported from `@fluidframwork/tree`: It is still exported as `@public` from `fluid-framework` as `SharedObjectKind`.
|
|
223
|
+
- `ISharedObjectKind`: See new `SharedObjectKind` type for use in `@public` APIs.
|
|
224
|
+
`ISharedObject`
|
|
225
|
+
- `IChannel`
|
|
226
|
+
- `IChannelAttributes`
|
|
227
|
+
- `IChannelFactory`
|
|
228
|
+
- `IExperimentalIncrementalSummaryContext`
|
|
229
|
+
- `IGarbageCollectionData`
|
|
230
|
+
- `ISummaryStats`
|
|
231
|
+
- `ISummaryTreeWithStats`
|
|
232
|
+
- `ITelemetryContext`
|
|
233
|
+
- `IDeltaManagerErased`
|
|
234
|
+
- `IFluidDataStoreRuntimeEvents`
|
|
235
|
+
- `IFluidHandleContext`
|
|
236
|
+
- `IProvideFluidHandleContext`
|
|
215
237
|
|
|
216
|
-
|
|
238
|
+
Removed APIs:
|
|
217
239
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
240
|
+
- `DataObjectClass`: Usages replaced with `SharedObjectKind`.
|
|
241
|
+
- `LoadableObjectClass`: Replaced with `SharedObjectKind`.
|
|
242
|
+
- `LoadableObjectClassRecord`: Replaced with `Record<string, SharedObjectKind>`.
|
|
243
|
+
-
|
|
222
244
|
|
|
223
|
-
-
|
|
245
|
+
- Update to TypeScript 5.4 ([#21214](https://github.com/microsoft/FluidFramework/pull/21214)) [0e6256c722](https://github.com/microsoft/FluidFramework/commit/0e6256c722d8bf024f4325bf02547daeeb18bfa6)
|
|
224
246
|
|
|
225
|
-
|
|
247
|
+
Update package implementations to use TypeScript 5.4.5.
|
|
226
248
|
|
|
227
|
-
-
|
|
249
|
+
- runtime-definitions: Remove deprecated 'get' and 'serialize' members on the ITelemetryContext interface ([#21009](https://github.com/microsoft/FluidFramework/pull/21009)) [c0483b49a3](https://github.com/microsoft/FluidFramework/commit/c0483b49a31df87b3a7d3eafd4175efd5eb1762f)
|
|
228
250
|
|
|
229
|
-
|
|
251
|
+
The `ITelemetryContext` interface was not intended to allow getting properties that had been added to it, so it is now "write-only". Internal usage within FluidFramework should use the new `ITelemetryContextExt`.
|
|
230
252
|
|
|
231
|
-
-
|
|
253
|
+
- runtime-definitions: Make IInboundSignalMessage alpha and readonly ([#21226](https://github.com/microsoft/FluidFramework/pull/21226)) [1df91dd844](https://github.com/microsoft/FluidFramework/commit/1df91dd844bebcb6c837370827b244a01eca8295)
|
|
232
254
|
|
|
233
|
-
|
|
234
|
-
|
|
255
|
+
Users of `IInboundSignalMessage` will need to import it from the `/legacy` scope and should not mutate it.
|
|
256
|
+
Only users of existing `@alpha` APIs like `IFluidDataStoreRuntime` should be able to use this type, so it should not introduce new `/legacy` usage.
|
|
235
257
|
|
|
236
258
|
## 2.0.0-rc.4.0.0
|
|
237
259
|
|
|
238
260
|
### Minor Changes
|
|
239
261
|
|
|
240
|
-
-
|
|
262
|
+
- Deprecated members of IFluidHandle are split off into new IFluidHandleInternal interface [96872186d0](https://github.com/microsoft/FluidFramework/commit/96872186d0d0f245c1fece7d19b3743e501679b6)
|
|
241
263
|
|
|
242
|
-
|
|
243
|
-
|
|
264
|
+
Split IFluidHandle into two interfaces, `IFluidHandle` and `IFluidHandleInternal`.
|
|
265
|
+
Code depending on the previously deprecated members of IFluidHandle can access them by using `toFluidHandleInternal` from `@fluidframework/runtime-utils/legacy`.
|
|
244
266
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
267
|
+
External implementation of the `IFluidHandle` interface are not supported: this change makes the typing better convey this using the `ErasedType` pattern.
|
|
268
|
+
Any existing and previously working, and now broken, external implementations of `IFluidHandle` should still work at runtime, but will need some unsafe type casts to compile.
|
|
269
|
+
Such handle implementation may break in the future and thus should be replaced with use of handles produced by the Fluid Framework client packages.
|
|
248
270
|
|
|
249
271
|
## 2.0.0-rc.3.0.0
|
|
250
272
|
|
|
251
273
|
### Major Changes
|
|
252
274
|
|
|
253
|
-
-
|
|
275
|
+
- runtime-definitions: IFluidDataStoreContext no longer raises events, IFluidDataStoreChannel needs to implement new method [97d68aa06b](https://github.com/microsoft/FluidFramework/commit/97d68aa06bd5c022ecb026655814aea222a062ae)
|
|
254
276
|
|
|
255
|
-
|
|
277
|
+
This change could be ignored, unless you have custom implementations of IFluidDataStoreChannel or listened to IFluidDataStoreContext's "attached" or "attaching" events
|
|
256
278
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
279
|
+
IFluidDataStoreContext no longer raises events. Instead, it will call IFluidDataStoreChannel.setAttachState().
|
|
280
|
+
If you are implementing data store runtme, please implement setAttachState() API and rely on this flow.
|
|
281
|
+
If you are not data store developer, and were reaching out to context, then please stop doing it - the only purpose of IFluidDataStoreContext is
|
|
282
|
+
communication with IFluidDataStoreChannel. Context object should not be exposed by impplementers of IFluidDataStoreChannel.
|
|
283
|
+
If you are using stock implementations of IFluidDataStoreChannel, you can listen for same events on IFluidDataStoreRuntime instead.
|
|
262
284
|
|
|
263
|
-
-
|
|
285
|
+
- Packages now use package.json "exports" and require modern module resolution [97d68aa06b](https://github.com/microsoft/FluidFramework/commit/97d68aa06bd5c022ecb026655814aea222a062ae)
|
|
264
286
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
287
|
+
Fluid Framework packages have been updated to use the [package.json "exports"
|
|
288
|
+
field](https://nodejs.org/docs/latest-v18.x/api/packages.html#exports) to define explicit entry points for both
|
|
289
|
+
TypeScript types and implementation code.
|
|
268
290
|
|
|
269
|
-
|
|
291
|
+
This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:
|
|
270
292
|
|
|
271
|
-
|
|
272
|
-
|
|
293
|
+
- `"moduleResolution": "Node16"` with `"module": "Node16"`
|
|
294
|
+
- `"moduleResolution": "Bundler"` with `"module": "ESNext"`
|
|
273
295
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
296
|
+
We recommend using Node16/Node16 unless absolutely necessary. That will produce transpiled JavaScript that is suitable
|
|
297
|
+
for use with modern versions of Node.js _and_ Bundlers.
|
|
298
|
+
[See the TypeScript documentation](https://www.typescriptlang.org/tsconfig#moduleResolution) for more information
|
|
299
|
+
regarding the module and moduleResolution options.
|
|
278
300
|
|
|
279
|
-
|
|
280
|
-
|
|
301
|
+
**Node10 moduleResolution is not supported; it does not support Fluid Framework's API structuring pattern that is used
|
|
302
|
+
to distinguish stable APIs from those that are in development.**
|
|
281
303
|
|
|
282
304
|
## 2.0.0-rc.2.0.0
|
|
283
305
|
|
|
284
306
|
### Minor Changes
|
|
285
307
|
|
|
286
|
-
-
|
|
308
|
+
- runtime-definitions: ITelemetryContext: Functions `get` and `serialize` are now deprecated ([#19409](https://github.com/microsoft/FluidFramework/issues/19409)) [42696564dd](https://github.com/microsoft/FluidFramework/commits/42696564ddbacfe200d653bdf7a1db18fc253bfb)
|
|
287
309
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
310
|
+
ITelemetryContext is to be used only for instrumentation, not for attempting to read the values already set by other code.
|
|
311
|
+
This is important because this _public_ interface may soon use FF's _should-be internal_ logging instrumentation types,
|
|
312
|
+
which we reserve the right to expand (to support richer instrumentation).
|
|
313
|
+
In that case, we would not be able to do so in a minor release if they're used as an "out" type
|
|
314
|
+
like the return type for `get`.
|
|
293
315
|
|
|
294
|
-
|
|
295
|
-
|
|
316
|
+
There is no replacement given in terms of immediate programmatic access to this data.
|
|
317
|
+
The expected use pattern is something like this:
|
|
296
318
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
319
|
+
- Some code creates a concrete implementation of `ITelemetryContext` and passes it around
|
|
320
|
+
- Callers use the "write" functions on the interface to build up the context
|
|
321
|
+
- The originator uses a function like `serialize` (on the concrete impl, not exposed on the interface any longer)
|
|
322
|
+
and passes the result to a logger
|
|
323
|
+
- The data is inspected along with other logs in whatever telemetry pipeline is used by the application (or Debug Tools, etc)
|
|
302
324
|
|
|
303
|
-
-
|
|
325
|
+
- container-runtime: New feature: ID compression for DataStores & DDSs ([#19859](https://github.com/microsoft/FluidFramework/issues/19859)) [51f0d3db73](https://github.com/microsoft/FluidFramework/commits/51f0d3db737800e1c30ea5e3952d38ff30ffc7da)
|
|
304
326
|
|
|
305
|
-
|
|
327
|
+
### Key changes
|
|
306
328
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
329
|
+
1. A new API IContainerRuntimeBase.generateDocumentUniqueId() is exposed. This API will opportunistically generate IDs in short format (non-negative numbers). If it can't achieve that, it will return UUID strings. UUIDs generated will have low entropy in groups and will compress well. It can be leveraged anywhere in container where container unique IDs are required. I.e. any place that uses uuid() and stores data in container is likely candidate to start leveraging this API.
|
|
330
|
+
2. Data store internal IDs (IDs that are auto generated by FF system) will opportunistically be generated in shorter form. Data stores created in detached container will always have short IDs, data stores created in attached container will opportunistically be short (by using newly added IContainerRuntimeBase.generateDocumentUniqueId() capability)
|
|
331
|
+
3. Similar DDS names will be opportunistically short (same considerations for detached DDS vs. attached DDS)
|
|
310
332
|
|
|
311
|
-
|
|
333
|
+
### Implementation details
|
|
312
334
|
|
|
313
|
-
|
|
335
|
+
1. Container level ID Compressor can now be enabled with delay. With such setting, only new IContainerRuntimeBase.generateDocumentUniqueId() is exposed (ID Compressor is not exposed in such case, as leveraging any of its other capabilities requires future container sessions to load ID Compressor on container load, for correctness reasons). Once Container establishes connection and any changes are made in container, newly added API will start generating more compact IDs (in most cases).
|
|
314
336
|
|
|
315
|
-
|
|
337
|
+
### Breaking changes
|
|
316
338
|
|
|
317
|
-
|
|
339
|
+
1. DDS names can no longer start with "\_" symbol - this is reserved for FF needs. I've validated that's not an issue for AzureClient (it only creates root object by name, everything else is referred by handle). Our main internal partners almost never use named DDSs (I can find only 4 instances in Loop).
|
|
318
340
|
|
|
319
|
-
|
|
341
|
+
### Backward compatibility considerations
|
|
320
342
|
|
|
321
|
-
|
|
322
|
-
|
|
343
|
+
1. Data store internal IDs could collide with earlier used names data stores. Earlier versions of FF framework (before DataStore aliasing feature was added) allowed customers to supply IDs for data stores. And thus, files created with earlier versions of framework could have data store IDs that will be similar to names FF will use for newly created data stores ("A", ... "Z", "a"..."z", "AA", etc.). While such collision is possible, it's very unlikely (almost impossible) if user-provided names were at least 4-5 characters long.
|
|
344
|
+
2. If application runs to these problems, or wants to reduce risks, consider disabling ID compressor via IContainerRuntimeOptions.enableRuntimeIdCompressor = "off".
|
|
323
345
|
|
|
324
|
-
|
|
346
|
+
### Minor changes
|
|
325
347
|
|
|
326
|
-
|
|
327
|
-
|
|
348
|
+
1. IContainerRuntime.createDetachedRootDataStore() is removed. Please use IContainerRuntime.createDetachedDataStore and IDataStore.trySetAlias() instead
|
|
349
|
+
2. IContainerRuntimeOptions.enableRuntimeIdCompressor has been changes from boolean to tri-state.
|
|
328
350
|
|
|
329
|
-
-
|
|
351
|
+
- driver-definitions: repositoryUrl removed from IDocumentStorageService ([#19522](https://github.com/microsoft/FluidFramework/issues/19522)) [90eb3c9d33](https://github.com/microsoft/FluidFramework/commits/90eb3c9d33d80e24caa1393a50f414c5602f6aa3)
|
|
330
352
|
|
|
331
|
-
|
|
353
|
+
The `repositoryUrl` member of `IDocumentStorageService` was unused and always equal to the empty string. It has been removed.
|
|
332
354
|
|
|
333
|
-
-
|
|
355
|
+
- runtime-definitions: FlushMode.Immediate is deprecated ([#19963](https://github.com/microsoft/FluidFramework/issues/19963)) [861500c1e2](https://github.com/microsoft/FluidFramework/commits/861500c1e2bdd3394308bd87007231d70b698be0)
|
|
334
356
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
357
|
+
`FlushMode.Immediate` is deprecated and will be removed in the next major version. It should not be used. Use
|
|
358
|
+
`FlushMode.TurnBased` instead, which is the default. See
|
|
359
|
+
<https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works>
|
|
360
|
+
for more information
|
|
339
361
|
|
|
340
|
-
-
|
|
362
|
+
- 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)
|
|
341
363
|
|
|
342
|
-
|
|
364
|
+
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.
|
|
343
365
|
|
|
344
|
-
-
|
|
366
|
+
- runtime-definitions: Deprecated ID compressor related types have been removed. ([#19031](https://github.com/microsoft/FluidFramework/issues/19031)) [de92ef0ac5](https://github.com/microsoft/FluidFramework/commits/de92ef0ac551ad89b00564c78c0091f8ecc33639)
|
|
345
367
|
|
|
346
|
-
|
|
347
|
-
|
|
368
|
+
This change should be a no-op for consumers, as these types were almost certainly unused and are also available in the
|
|
369
|
+
standalone package id-compressor (see <https://github.com/microsoft/FluidFramework/pull/18749>).
|
|
348
370
|
|
|
349
|
-
-
|
|
371
|
+
- container-definitions: Added containerMetadata prop on IContainer interface ([#19142](https://github.com/microsoft/FluidFramework/issues/19142)) [d0d77f3516](https://github.com/microsoft/FluidFramework/commits/d0d77f3516d67f3c9faedb47b20dbd4e309c3bc2)
|
|
350
372
|
|
|
351
|
-
|
|
373
|
+
Added `containerMetadata` prop on IContainer interface.
|
|
352
374
|
|
|
353
|
-
-
|
|
375
|
+
- runtime-definitions: Moved ISignalEnvelope interface to core-interfaces ([#19142](https://github.com/microsoft/FluidFramework/issues/19142)) [d0d77f3516](https://github.com/microsoft/FluidFramework/commits/d0d77f3516d67f3c9faedb47b20dbd4e309c3bc2)
|
|
354
376
|
|
|
355
|
-
|
|
377
|
+
The `ISignalEnvelope` interface has been moved to the @fluidframework/core-interfaces package.
|
|
356
378
|
|
|
357
379
|
## 2.0.0-rc.1.0.0
|
|
358
380
|
|
|
359
381
|
### Minor Changes
|
|
360
382
|
|
|
361
|
-
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
383
|
+
- Updated server dependencies ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
|
|
384
|
+
|
|
385
|
+
The following Fluid server dependencies have been updated to the latest version, 3.0.0. [See the full changelog.](https://github.com/microsoft/FluidFramework/releases/tag/server_v3.0.0)
|
|
386
|
+
|
|
387
|
+
- @fluidframework/gitresources
|
|
388
|
+
- @fluidframework/server-kafka-orderer
|
|
389
|
+
- @fluidframework/server-lambdas
|
|
390
|
+
- @fluidframework/server-lambdas-driver
|
|
391
|
+
- @fluidframework/server-local-server
|
|
392
|
+
- @fluidframework/server-memory-orderer
|
|
393
|
+
- @fluidframework/protocol-base
|
|
394
|
+
- @fluidframework/server-routerlicious
|
|
395
|
+
- @fluidframework/server-routerlicious-base
|
|
396
|
+
- @fluidframework/server-services
|
|
397
|
+
- @fluidframework/server-services-client
|
|
398
|
+
- @fluidframework/server-services-core
|
|
399
|
+
- @fluidframework/server-services-ordering-kafkanode
|
|
400
|
+
- @fluidframework/server-services-ordering-rdkafka
|
|
401
|
+
- @fluidframework/server-services-ordering-zookeeper
|
|
402
|
+
- @fluidframework/server-services-shared
|
|
403
|
+
- @fluidframework/server-services-telemetry
|
|
404
|
+
- @fluidframework/server-services-utils
|
|
405
|
+
- @fluidframework/server-test-utils
|
|
406
|
+
- tinylicious
|
|
407
|
+
|
|
408
|
+
- Updated @fluidframework/protocol-definitions ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
|
|
409
|
+
|
|
410
|
+
The @fluidframework/protocol-definitions dependency has been upgraded to v3.1.0. [See the full
|
|
411
|
+
changelog.](https://github.com/microsoft/FluidFramework/blob/main/common/lib/protocol-definitions/CHANGELOG.md#310)
|
|
412
|
+
|
|
413
|
+
- garbage collection: Deprecate addedGCOutboundReference ([#18456](https://github.com/microsoft/FluidFramework/issues/18456)) [0619cf8a41](https://github.com/microsoft/FluidFramework/commits/0619cf8a4197bee6d5ac56cac05db92008939817)
|
|
414
|
+
|
|
415
|
+
The `addedGCOutboundReference` property on IDeltaConnection, IFluidDataStoreContext, and MockFluidDataStoreRuntime is
|
|
416
|
+
now deprecated.
|
|
417
|
+
|
|
418
|
+
The responsibility of adding outbound references (for Garbage Collection tracking) is moving up to the ContainerRuntime.
|
|
419
|
+
Previously, DDSes themselves were responsible to detect and report added outbound references (via a handle being stored),
|
|
420
|
+
so these interfaces (and corresponding mock) needed to plumb that information up to the ContainerRuntime layer where GC sits.
|
|
421
|
+
This is no longer necessary so they're being removed in an upcoming release.
|
|
400
422
|
|
|
401
423
|
## 2.0.0-internal.8.0.0
|
|
402
424
|
|
|
403
425
|
### Major Changes
|
|
404
426
|
|
|
405
|
-
-
|
|
427
|
+
- container-runtime-definitions: Removed resolveHandle and IFluidHandleContext from ContainerRuntime interfaces [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
406
428
|
|
|
407
|
-
|
|
408
|
-
|
|
429
|
+
The `IContainerRuntime.resolveHandle(...)` method and the `IContainerRuntimeBase.IFluidHandleContext` property have been
|
|
430
|
+
removed. Please remove all usage of these APIs.
|
|
409
431
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
432
|
+
See
|
|
433
|
+
[Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
434
|
+
for more details.
|
|
413
435
|
|
|
414
|
-
-
|
|
436
|
+
- container-runtime: Removed request pattern from ContainerRuntime, IRuntime, and IContainerRuntimeBase [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
415
437
|
|
|
416
|
-
|
|
438
|
+
The `request(...)` method and `IFluidRouter` property have been removed from the following places:
|
|
417
439
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
440
|
+
- `ContainerRuntime`
|
|
441
|
+
- `IRuntime`
|
|
442
|
+
- `IContainerRuntimeBase`
|
|
421
443
|
|
|
422
|
-
|
|
444
|
+
Please use the `IRuntime.getEntryPoint()` method to get the runtime's entry point.
|
|
423
445
|
|
|
424
|
-
|
|
446
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
425
447
|
|
|
426
|
-
-
|
|
448
|
+
- runtime-definitions: Removed IFluidRouter from IFluidDataStoreChannel and FluidDataStoreRuntime [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
427
449
|
|
|
428
|
-
|
|
429
|
-
|
|
450
|
+
The `IFluidRouter` property has been removed from `IFluidDataStoreChannel` and `FluidDataStoreRuntime`. Please migrate
|
|
451
|
+
all usage to the `IFluidDataStoreChannel.entryPoint` API.
|
|
430
452
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
453
|
+
See
|
|
454
|
+
[Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
455
|
+
for more details.
|
|
434
456
|
|
|
435
|
-
-
|
|
457
|
+
- runtime-definitions: Removed request and IFluidRouter from IDataStore [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
436
458
|
|
|
437
|
-
|
|
459
|
+
The `request` method and `IFluidRouter` property have been removed from `IDataStore`. Please migrate all usage to the `IDataStore.entryPoint` API.
|
|
438
460
|
|
|
439
|
-
|
|
461
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
440
462
|
|
|
441
463
|
## 2.0.0-internal.7.4.0
|
|
442
464
|
|
|
443
465
|
### Minor Changes
|
|
444
466
|
|
|
445
|
-
-
|
|
467
|
+
- container-runtime/runtime-definitions: `IdCompressor` and related types deprecated ([#18749](https://github.com/microsoft/FluidFramework/issues/18749)) [6f070179de](https://github.com/microsoft/FluidFramework/commits/6f070179ded7c2f4398252f75485e85b39725419)
|
|
446
468
|
|
|
447
|
-
|
|
448
|
-
|
|
469
|
+
`IdCompressor` and related types from the @fluidframework/container-runtime and @fluidframework/runtime-definitions
|
|
470
|
+
packages have been deprecated. They can now be found in a new package, @fluidframework/id-compressor.
|
|
449
471
|
|
|
450
|
-
|
|
451
|
-
|
|
472
|
+
The `IdCompressor` class is deprecated even in the new package. Consumers should use the interfaces, `IIdCompressor` and
|
|
473
|
+
`IIdCompressorCore`, in conjunction with the factory function `createIdCompressor` instead.
|
|
452
474
|
|
|
453
475
|
## 2.0.0-internal.7.3.0
|
|
454
476
|
|
|
@@ -466,97 +488,97 @@ Dependency updates only.
|
|
|
466
488
|
|
|
467
489
|
### Major Changes
|
|
468
490
|
|
|
469
|
-
-
|
|
491
|
+
- Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
470
492
|
|
|
471
|
-
|
|
493
|
+
This included the following changes from the protocol-definitions release:
|
|
472
494
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
495
|
+
- Updating signal interfaces for some planned improvements. The intention is split the interface between signals
|
|
496
|
+
submitted by clients to the server and the resulting signals sent from the server to clients.
|
|
497
|
+
- A new optional type member is available on the ISignalMessage interface and a new ISentSignalMessage interface has
|
|
498
|
+
been added, which will be the typing for signals sent from the client to the server. Both extend a new
|
|
499
|
+
ISignalMessageBase interface that contains common members.
|
|
500
|
+
- The @fluidframework/common-definitions package dependency has been updated to version 1.0.0.
|
|
479
501
|
|
|
480
|
-
-
|
|
502
|
+
- runtime-definitions: `bindToContext` API removed [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
481
503
|
|
|
482
|
-
|
|
483
|
-
|
|
504
|
+
`bindToContext` has been removed from `FluidDataStoreRuntime`, `IFluidDataStoreContext` and
|
|
505
|
+
`MockFluidDataStoreContext`. This has been deprecated for several releases and cannot be used anymore.
|
|
484
506
|
|
|
485
|
-
-
|
|
507
|
+
- DEPRECATED: resolveHandle and IFluidHandleContext deprecated on IContainerRuntime [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
486
508
|
|
|
487
|
-
|
|
509
|
+
The `resolveHandle(...)` and `get IFluidHandleContext()` methods have been deprecated on the following interfaces:
|
|
488
510
|
|
|
489
|
-
|
|
490
|
-
|
|
511
|
+
- `IContainerRuntime`
|
|
512
|
+
- `IContainerRuntimeBase`
|
|
491
513
|
|
|
492
|
-
|
|
514
|
+
Requesting arbitrary URLs has been deprecated on `IContainerRuntime`. Please migrate all usage to the `IContainerRuntime.getEntryPoint()` method if trying to obtain the application-specified root object.
|
|
493
515
|
|
|
494
|
-
|
|
516
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
495
517
|
|
|
496
|
-
-
|
|
518
|
+
- container-definitions: IContainer's and IDataStore's IFluidRouter capabilities are deprecated [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
497
519
|
|
|
498
|
-
|
|
520
|
+
`IFluidRouter` and `request({ url: "/" })` on `IContainer` and `IDataStore` are deprecated and will be removed in a future major release. Please migrate all usage to the appropriate `getEntryPoint()` or `entryPoint` APIs.
|
|
499
521
|
|
|
500
|
-
|
|
522
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
501
523
|
|
|
502
|
-
-
|
|
524
|
+
- Server upgrade: dependencies on Fluid server packages updated to 2.0.1 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
503
525
|
|
|
504
|
-
|
|
526
|
+
Dependencies on the following Fluid server package have been updated to version 2.0.1:
|
|
505
527
|
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
528
|
+
- @fluidframework/gitresources: 2.0.1
|
|
529
|
+
- @fluidframework/server-kafka-orderer: 2.0.1
|
|
530
|
+
- @fluidframework/server-lambdas: 2.0.1
|
|
531
|
+
- @fluidframework/server-lambdas-driver: 2.0.1
|
|
532
|
+
- @fluidframework/server-local-server: 2.0.1
|
|
533
|
+
- @fluidframework/server-memory-orderer: 2.0.1
|
|
534
|
+
- @fluidframework/protocol-base: 2.0.1
|
|
535
|
+
- @fluidframework/server-routerlicious: 2.0.1
|
|
536
|
+
- @fluidframework/server-routerlicious-base: 2.0.1
|
|
537
|
+
- @fluidframework/server-services: 2.0.1
|
|
538
|
+
- @fluidframework/server-services-client: 2.0.1
|
|
539
|
+
- @fluidframework/server-services-core: 2.0.1
|
|
540
|
+
- @fluidframework/server-services-ordering-kafkanode: 2.0.1
|
|
541
|
+
- @fluidframework/server-services-ordering-rdkafka: 2.0.1
|
|
542
|
+
- @fluidframework/server-services-ordering-zookeeper: 2.0.1
|
|
543
|
+
- @fluidframework/server-services-shared: 2.0.1
|
|
544
|
+
- @fluidframework/server-services-telemetry: 2.0.1
|
|
545
|
+
- @fluidframework/server-services-utils: 2.0.1
|
|
546
|
+
- @fluidframework/server-test-utils: 2.0.1
|
|
547
|
+
- tinylicious: 2.0.1
|
|
526
548
|
|
|
527
|
-
-
|
|
549
|
+
- test-utils: provideEntryPoint is required [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
528
550
|
|
|
529
|
-
|
|
551
|
+
The optional `provideEntryPoint` method has become required on a number of constructors. A value will need to be provided to the following classes:
|
|
530
552
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
553
|
+
- `BaseContainerRuntimeFactory`
|
|
554
|
+
- `RuntimeFactory`
|
|
555
|
+
- `ContainerRuntime` (constructor and `loadRuntime`)
|
|
556
|
+
- `FluidDataStoreRuntime`
|
|
535
557
|
|
|
536
|
-
|
|
537
|
-
|
|
558
|
+
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.
|
|
559
|
+
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.
|
|
538
560
|
|
|
539
|
-
|
|
561
|
+
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.
|
|
540
562
|
|
|
541
|
-
|
|
563
|
+
For more details, see [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
542
564
|
|
|
543
|
-
-
|
|
565
|
+
- Minimum TypeScript version now 5.1.6 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
544
566
|
|
|
545
|
-
|
|
567
|
+
The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.
|
|
546
568
|
|
|
547
569
|
## 2.0.0-internal.6.4.0
|
|
548
570
|
|
|
549
571
|
### Minor Changes
|
|
550
572
|
|
|
551
|
-
-
|
|
573
|
+
- Upcoming: The type of the logger property/param in various APIs will be changing ([#17350](https://github.com/microsoft/FluidFramework/issues/17350)) [27284bcda3](https://github.com/microsoft/FluidFramework/commits/27284bcda3d63cc4306cf76806f8a075db0db60f)
|
|
552
574
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
575
|
+
- @fluidframework/runtime-definitions
|
|
576
|
+
- `IFluidDataStoreRuntime.logger` will be re-typed as `ITelemetryBaseLogger`
|
|
577
|
+
- @fluidframework/odsp-driver
|
|
578
|
+
- `protected OdspDocumentServiceFactoryCore.createDocumentServiceCore`'s parameter `odspLogger` will be re-typed as `ITelemetryLoggerExt`
|
|
579
|
+
- `protected LocalOdspDocumentServiceFactory.createDocumentServiceCore`'s parameter `odspLogger` will be re-typed as `ITelemetryLoggerExt`
|
|
558
580
|
|
|
559
|
-
|
|
581
|
+
Additionally, several of @fluidframework/telemetry-utils's exports are being marked as internal and should not be consumed outside of other FF packages.
|
|
560
582
|
|
|
561
583
|
## 2.0.0-internal.6.3.0
|
|
562
584
|
|
|
@@ -566,32 +588,32 @@ Dependency updates only.
|
|
|
566
588
|
|
|
567
589
|
### Minor Changes
|
|
568
590
|
|
|
569
|
-
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
591
|
+
- Remove use of @fluidframework/common-definitions ([#16638](https://github.com/microsoft/FluidFramework/issues/16638)) [a8c81509c9](https://github.com/microsoft/FluidFramework/commits/a8c81509c9bf09cfb2092ebcf7265205f9eb6dbf)
|
|
592
|
+
|
|
593
|
+
The **@fluidframework/common-definitions** package is being deprecated, so the following interfaces and types are now
|
|
594
|
+
imported from the **@fluidframework/core-interfaces** package:
|
|
595
|
+
|
|
596
|
+
- interface IDisposable
|
|
597
|
+
- interface IErrorEvent
|
|
598
|
+
- interface IErrorEvent
|
|
599
|
+
- interface IEvent
|
|
600
|
+
- interface IEventProvider
|
|
601
|
+
- interface ILoggingError
|
|
602
|
+
- interface ITaggedTelemetryPropertyType
|
|
603
|
+
- interface ITelemetryBaseEvent
|
|
604
|
+
- interface ITelemetryBaseLogger
|
|
605
|
+
- interface ITelemetryErrorEvent
|
|
606
|
+
- interface ITelemetryGenericEvent
|
|
607
|
+
- interface ITelemetryLogger
|
|
608
|
+
- interface ITelemetryPerformanceEvent
|
|
609
|
+
- interface ITelemetryProperties
|
|
610
|
+
- type ExtendEventProvider
|
|
611
|
+
- type IEventThisPlaceHolder
|
|
612
|
+
- type IEventTransformer
|
|
613
|
+
- type ReplaceIEventThisPlaceHolder
|
|
614
|
+
- type ReplaceIEventThisPlaceHolder
|
|
615
|
+
- type TelemetryEventCategory
|
|
616
|
+
- type TelemetryEventPropertyType
|
|
595
617
|
|
|
596
618
|
## 2.0.0-internal.6.1.0
|
|
597
619
|
|
|
@@ -601,85 +623,85 @@ Dependency updates only.
|
|
|
601
623
|
|
|
602
624
|
### Major Changes
|
|
603
625
|
|
|
604
|
-
-
|
|
626
|
+
- Request APIs deprecated from many places [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
605
627
|
|
|
606
|
-
|
|
628
|
+
The `request` API (associated with the `IFluidRouter` interface) has been deprecated on a number of classes and interfaces. The following are impacted:
|
|
607
629
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
630
|
+
- `IRuntime` and `ContainerRuntime`
|
|
631
|
+
- `IFluidDataStoreRuntime` and `FluidDataStoreRuntime`
|
|
632
|
+
- `IFluidDataStoreChannel`
|
|
633
|
+
- `MockFluidDataStoreRuntime`
|
|
634
|
+
- `TestFluidObject`
|
|
613
635
|
|
|
614
|
-
|
|
636
|
+
Please migrate usage to the corresponding `entryPoint` or `getEntryPoint()` of the object. The value for these "entryPoint" related APIs is determined from factories (for `IRuntime` and `IFluidDataStoreRuntime`) via the `initializeEntryPoint` method. If no method is passed to the factory, the corresponding `entryPoint` and `getEntryPoint()` will be undefined.
|
|
615
637
|
|
|
616
|
-
|
|
638
|
+
For an example implementation of `initializeEntryPoint`, see [pureDataObjectFactory.ts](https://github.com/microsoft/FluidFramework/blob/next/packages/framework/aqueduct/src/data-object-factories/pureDataObjectFactory.ts#L84).
|
|
617
639
|
|
|
618
|
-
|
|
640
|
+
More information of the migration off the request pattern, and current status of its removal, is documented in [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md).
|
|
619
641
|
|
|
620
|
-
-
|
|
642
|
+
- IContainer's and IDataStore's IFluidRouter capabilities are deprecated. [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
621
643
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
644
|
+
- The `request` function taking an arbitrary URL and headers is deprecated
|
|
645
|
+
- However, an overload taking only `{ url: "/" }` is not, for back-compat purposes during the migration
|
|
646
|
+
from the request pattern to using entryPoint.
|
|
625
647
|
|
|
626
|
-
|
|
648
|
+
### About requesting "/" and using entryPoint
|
|
627
649
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
650
|
+
Requesting "/" is an idiom some consumers of Fluid Framework have used in their own `requestHandler`s
|
|
651
|
+
(passed to `ContainerRuntime.loadRuntime` and `FluidDataStoreRuntime`'s constructor).
|
|
652
|
+
The ability to access the "root" or "entry point" of a Container / DataStore will presently be provided by
|
|
653
|
+
`IContainer.getEntryPoint` and `IDataStore.entryPoint`. However these are still optional, so a temporary workaround is needed.
|
|
632
654
|
|
|
633
|
-
|
|
634
|
-
|
|
655
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
656
|
+
for more info on this transition from request to entryPoint.
|
|
635
657
|
|
|
636
|
-
|
|
658
|
+
### Present Replacement for requesting an arbitrary URL
|
|
637
659
|
|
|
638
|
-
|
|
660
|
+
Suppose you have these variables:
|
|
639
661
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
662
|
+
```ts
|
|
663
|
+
const container: IContainer = ...;
|
|
664
|
+
const dataStore: IDataStore = ...;
|
|
665
|
+
```
|
|
644
666
|
|
|
645
|
-
|
|
667
|
+
Before:
|
|
646
668
|
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
669
|
+
```ts
|
|
670
|
+
container.request({ url, headers });
|
|
671
|
+
dataStore.request({ url, headers });
|
|
672
|
+
```
|
|
651
673
|
|
|
652
|
-
|
|
674
|
+
After:
|
|
653
675
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
676
|
+
```ts
|
|
677
|
+
// Assume there is an interface like this in the app's Container implementation
|
|
678
|
+
interface CustomUrlRouter {
|
|
679
|
+
doRequestRouting(request: { url: string; headers: Record<string, any>; }): any;
|
|
680
|
+
}
|
|
659
681
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
682
|
+
// Prerequisite: Pass a requestHandler to ContainerRuntime.loadRuntime that routes "/"
|
|
683
|
+
// to some root object implementing CustomUrlRouter
|
|
684
|
+
const containerRouter: CustomUrlRouter = await container.request({ "/" });
|
|
685
|
+
containerRouter.doRequestRouting({ url, headers });
|
|
664
686
|
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
687
|
+
// Prerequisite: Pass a requestHandler to FluidDataStoreRuntime's constructor that routes "/"
|
|
688
|
+
// to some root object implementing CustomUrlRouter
|
|
689
|
+
const dataStoreRouter: CustomUrlRouter = await dataStore.request({ "/" });
|
|
690
|
+
dataStoreRouter.doRequestRouting({ url, headers });
|
|
691
|
+
```
|
|
670
692
|
|
|
671
|
-
|
|
693
|
+
### Looking ahead to using entryPoint
|
|
672
694
|
|
|
673
|
-
|
|
674
|
-
|
|
695
|
+
In the next major release, `getEntryPoint` and `entryPoint` should be mandatory and available for use.
|
|
696
|
+
Then you may replace each call `request({ url: "/" })` with a call to get the entryPoint using these functions/properties.
|
|
675
697
|
|
|
676
|
-
-
|
|
698
|
+
- Upgraded typescript transpilation target to ES2020 [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
677
699
|
|
|
678
|
-
|
|
700
|
+
Upgraded typescript transpilation target to ES2020. This is done in order to decrease the bundle sizes of Fluid Framework packages. This has provided size improvements across the board for ex. Loader, Driver, Runtime etc. Reduced bundle sizes helps to load lesser code in apps and hence also helps to improve the perf.If any app wants to target any older versions of browsers with which this target version is not compatible, then they can use packages like babel to transpile to a older target.
|
|
679
701
|
|
|
680
|
-
-
|
|
702
|
+
- IDeltaManager members disposed and dispose() removed [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
681
703
|
|
|
682
|
-
|
|
704
|
+
IDeltaManager members disposed and dispose() were deprecated in 2.0.0-internal.5.3.0 and have now been removed.
|
|
683
705
|
|
|
684
706
|
## 2.0.0-internal.5.4.0
|
|
685
707
|
|
|
@@ -701,14 +723,14 @@ Dependency updates only.
|
|
|
701
723
|
|
|
702
724
|
### Major Changes
|
|
703
725
|
|
|
704
|
-
-
|
|
726
|
+
- GC interfaces removed from runtime-definitions [8b242fdc79](https://github.com/microsoft/FluidFramework/commits/8b242fdc796714cf1da9ad3f90d02efb122af0c2)
|
|
705
727
|
|
|
706
|
-
|
|
728
|
+
The following interfaces available in `@fluidframework/runtime-definitions` were deprecated in 2.0.0-internal.4.1.0 and are now removed.
|
|
707
729
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
730
|
+
- `IGarbageCollectionNodeData`
|
|
731
|
+
- `IGarbageCollectionState`
|
|
732
|
+
- `IGarbageCollectionSnapshotData`
|
|
733
|
+
- `IGarbageCollectionSummaryDetailsLegacy`
|
|
712
734
|
|
|
713
735
|
## 2.0.0-internal.4.4.0
|
|
714
736
|
|
|
@@ -718,11 +740,11 @@ Dependency updates only.
|
|
|
718
740
|
|
|
719
741
|
### Minor Changes
|
|
720
742
|
|
|
721
|
-
-
|
|
743
|
+
- GC interfaces removed from runtime-definitions ([#14750](https://github.com/microsoft/FluidFramework/pull-requests/14750)) [60274eacab](https://github.com/microsoft/FluidFramework/commits/60274eacabf14d42f52f6ad1c2f64356e64ba1a2)
|
|
722
744
|
|
|
723
|
-
|
|
745
|
+
The following interfaces available in `@fluidframework/runtime-definitions` are internal implementation details and have been deprecated for public use. They will be removed in an upcoming release.
|
|
724
746
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
747
|
+
- `IGarbageCollectionNodeData`
|
|
748
|
+
- `IGarbageCollectionState`
|
|
749
|
+
- `IGarbageCollectionSnapshotData`
|
|
750
|
+
- `IGarbageCollectionSummaryDetailsLegacy`
|