@fluidframework/runtime-definitions 2.30.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 +419 -415
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +9 -17
- package/prettier.config.cjs +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
# @fluidframework/runtime-definitions
|
|
2
2
|
|
|
3
|
+
## 2.31.0
|
|
4
|
+
|
|
5
|
+
Dependency updates only.
|
|
6
|
+
|
|
3
7
|
## 2.30.0
|
|
4
8
|
|
|
5
9
|
### Minor Changes
|
|
6
10
|
|
|
7
|
-
-
|
|
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)
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
`process` has been replaced by `processMessages` from the following:
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
- `FluidDataStoreRuntime`
|
|
16
|
+
- `IDeltaHandler`
|
|
17
|
+
- `IFluidDataStoreChannel`
|
|
18
|
+
- `MockFluidDataStoreRuntime`
|
|
19
|
+
- `MockDeltaConnection`
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
`processDocumentSchemaOp` has been replaced by `processDocumentSchemaMessages` from `DocumentsSchemaController`.
|
|
18
22
|
|
|
19
|
-
|
|
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.
|
|
20
24
|
|
|
21
25
|
## 2.23.0
|
|
22
26
|
|
|
@@ -34,18 +38,18 @@ Dependency updates only.
|
|
|
34
38
|
|
|
35
39
|
### Minor Changes
|
|
36
40
|
|
|
37
|
-
-
|
|
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)
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
Replace uses of these APIs with `PureDataObjectFactory.createInstanceWithDataStore` and pass in props via the `initialState`
|
|
47
|
+
parameter.
|
|
44
48
|
|
|
45
|
-
|
|
49
|
+
These changes were originally announced in version 0.25.0. See the following issues for more details:
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
- [#1537](https://github.com/microsoft/FluidFramework/issues/1537)
|
|
52
|
+
- [#2931](https://github.com/microsoft/FluidFramework/pull/2931)
|
|
49
53
|
|
|
50
54
|
## 2.13.0
|
|
51
55
|
|
|
@@ -59,108 +63,108 @@ Dependency updates only.
|
|
|
59
63
|
|
|
60
64
|
### Minor Changes
|
|
61
65
|
|
|
62
|
-
-
|
|
66
|
+
- Synchronous Child Datastore Creation ([#23143](https://github.com/microsoft/FluidFramework/pull/23143)) [3426b434df](https://github.com/microsoft/FluidFramework/commit/3426b434dfa06de3ee1a60a5f0d605cd312f2c58)
|
|
63
67
|
|
|
64
|
-
|
|
68
|
+
#### Overview
|
|
65
69
|
|
|
66
|
-
|
|
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.
|
|
67
71
|
|
|
68
|
-
|
|
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.
|
|
69
73
|
|
|
70
|
-
|
|
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.
|
|
71
75
|
|
|
72
|
-
|
|
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.
|
|
73
77
|
|
|
74
|
-
|
|
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.
|
|
75
79
|
|
|
76
|
-
|
|
80
|
+
#### Key Benefits
|
|
77
81
|
|
|
78
|
-
|
|
79
|
-
|
|
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.
|
|
80
84
|
|
|
81
|
-
|
|
85
|
+
#### Use Cases
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
##### Example 1: Creating a Child Datastore
|
|
84
88
|
|
|
85
|
-
|
|
89
|
+
In this example, we demonstrate how to support creating a child datastore synchronously from a parent datastore.
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
+
);
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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);
|
|
106
110
|
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
return entrypoint;
|
|
112
|
+
}
|
|
109
113
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
+
getChild(name: string): IFluidHandle<ChildDataStore> | undefined {
|
|
115
|
+
const dir = this.root.getSubDirectory("children");
|
|
116
|
+
return dir?.get<IFluidHandle<ChildDataStore>>(name);
|
|
114
117
|
}
|
|
115
|
-
|
|
118
|
+
}
|
|
119
|
+
```
|
|
116
120
|
|
|
117
|
-
|
|
118
|
-
|
|
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
|
|
119
123
|
|
|
120
124
|
## 2.10.0
|
|
121
125
|
|
|
122
126
|
### Minor Changes
|
|
123
127
|
|
|
124
|
-
-
|
|
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)
|
|
125
129
|
|
|
126
|
-
|
|
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.
|
|
127
131
|
|
|
128
|
-
-
|
|
132
|
+
- "Remove `IFluidParentContext.ensureNoDataModelChanges` and its implementations ([#22842](https://github.com/microsoft/FluidFramework/pull/22842)) [3aff19a462](https://github.com/microsoft/FluidFramework/commit/3aff19a4622a242e906286c14dfcfa6523175132)
|
|
129
133
|
|
|
130
|
-
|
|
131
|
-
|
|
134
|
+
- `IFluidParentContext.ensureNoDataModelChanges` has been removed. [prior deprecation commit](https://github.com/microsoft/FluidFramework/commit/c9d156264bdfa211a3075bdf29cde442ecea234c)
|
|
135
|
+
- `MockFluidDataStoreContext.ensureNoDataModelChanges` has also been removed.
|
|
132
136
|
|
|
133
|
-
-
|
|
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)
|
|
134
138
|
|
|
135
|
-
|
|
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`.
|
|
136
140
|
|
|
137
|
-
|
|
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.
|
|
138
142
|
|
|
139
|
-
|
|
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.
|
|
140
144
|
|
|
141
|
-
|
|
145
|
+
#### Alternatives
|
|
142
146
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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`.
|
|
146
150
|
|
|
147
151
|
## 2.5.0
|
|
148
152
|
|
|
149
153
|
### Minor Changes
|
|
150
154
|
|
|
151
|
-
-
|
|
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)
|
|
152
156
|
|
|
153
|
-
|
|
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.
|
|
154
158
|
|
|
155
|
-
|
|
156
|
-
|
|
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.
|
|
157
161
|
|
|
158
|
-
-
|
|
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)
|
|
159
163
|
|
|
160
|
-
|
|
161
|
-
|
|
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.
|
|
162
166
|
|
|
163
|
-
|
|
167
|
+
Implementations of `IFluidDataStoreChannel` and `IDeltaHandler` must now also implement `processMessages`. For reference implementations, see `FluidDataStoreRuntime::processMessages` and `SharedObjectCore::attachDeltaHandler`.
|
|
164
168
|
|
|
165
169
|
## 2.4.0
|
|
166
170
|
|
|
@@ -174,27 +178,27 @@ Dependency updates only.
|
|
|
174
178
|
|
|
175
179
|
### Minor Changes
|
|
176
180
|
|
|
177
|
-
-
|
|
181
|
+
- gcThrowOnTombstoneUsage and gcTombstoneEnforcementAllowed are deprecated ([#21992](https://github.com/microsoft/FluidFramework/pull/21992)) [b2bfed3a62](https://github.com/microsoft/FluidFramework/commit/b2bfed3a624d590d776c64a3317c60400b4b3e81)
|
|
178
182
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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.
|
|
183
187
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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:
|
|
187
191
|
|
|
188
|
-
|
|
192
|
+
GC runtime options removed:
|
|
189
193
|
|
|
190
|
-
|
|
191
|
-
|
|
194
|
+
- `gcDisableThrowOnTombstoneLoad`
|
|
195
|
+
- `disableDataStoreSweep`
|
|
192
196
|
|
|
193
|
-
|
|
197
|
+
GC configs removed:
|
|
194
198
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
199
|
+
- `"Fluid.GarbageCollection.DisableTombstone"`
|
|
200
|
+
- `"Fluid.GarbageCollection.ThrowOnTombstoneUsage"`
|
|
201
|
+
- `"Fluid.GarbageCollection.DisableDataStoreSweep"`
|
|
198
202
|
|
|
199
203
|
## 2.1.0
|
|
200
204
|
|
|
@@ -204,269 +208,269 @@ Dependency updates only.
|
|
|
204
208
|
|
|
205
209
|
### Minor Changes
|
|
206
210
|
|
|
207
|
-
-
|
|
211
|
+
- fluid-framework: Type Erase ISharedObjectKind ([#21081](https://github.com/microsoft/FluidFramework/pull/21081)) [78f228e370](https://github.com/microsoft/FluidFramework/commit/78f228e37055bd4d9a8f02b3a1eefebf4da9c59c)
|
|
208
212
|
|
|
209
|
-
|
|
213
|
+
A new type, `SharedObjectKind` is added as a type erased version of `ISharedObjectKind` and `DataObjectClass`.
|
|
210
214
|
|
|
211
|
-
|
|
215
|
+
This type fills the role of both `ISharedObjectKind` and `DataObjectClass` in the `@public` "declarative API" exposed in the `fluid-framework` package.
|
|
212
216
|
|
|
213
|
-
|
|
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".
|
|
214
218
|
|
|
215
|
-
|
|
216
|
-
|
|
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:
|
|
217
221
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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`
|
|
233
237
|
|
|
234
|
-
|
|
238
|
+
Removed APIs:
|
|
235
239
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
+
- `DataObjectClass`: Usages replaced with `SharedObjectKind`.
|
|
241
|
+
- `LoadableObjectClass`: Replaced with `SharedObjectKind`.
|
|
242
|
+
- `LoadableObjectClassRecord`: Replaced with `Record<string, SharedObjectKind>`.
|
|
243
|
+
-
|
|
240
244
|
|
|
241
|
-
-
|
|
245
|
+
- Update to TypeScript 5.4 ([#21214](https://github.com/microsoft/FluidFramework/pull/21214)) [0e6256c722](https://github.com/microsoft/FluidFramework/commit/0e6256c722d8bf024f4325bf02547daeeb18bfa6)
|
|
242
246
|
|
|
243
|
-
|
|
247
|
+
Update package implementations to use TypeScript 5.4.5.
|
|
244
248
|
|
|
245
|
-
-
|
|
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)
|
|
246
250
|
|
|
247
|
-
|
|
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`.
|
|
248
252
|
|
|
249
|
-
-
|
|
253
|
+
- runtime-definitions: Make IInboundSignalMessage alpha and readonly ([#21226](https://github.com/microsoft/FluidFramework/pull/21226)) [1df91dd844](https://github.com/microsoft/FluidFramework/commit/1df91dd844bebcb6c837370827b244a01eca8295)
|
|
250
254
|
|
|
251
|
-
|
|
252
|
-
|
|
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.
|
|
253
257
|
|
|
254
258
|
## 2.0.0-rc.4.0.0
|
|
255
259
|
|
|
256
260
|
### Minor Changes
|
|
257
261
|
|
|
258
|
-
-
|
|
262
|
+
- Deprecated members of IFluidHandle are split off into new IFluidHandleInternal interface [96872186d0](https://github.com/microsoft/FluidFramework/commit/96872186d0d0f245c1fece7d19b3743e501679b6)
|
|
259
263
|
|
|
260
|
-
|
|
261
|
-
|
|
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`.
|
|
262
266
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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.
|
|
266
270
|
|
|
267
271
|
## 2.0.0-rc.3.0.0
|
|
268
272
|
|
|
269
273
|
### Major Changes
|
|
270
274
|
|
|
271
|
-
-
|
|
275
|
+
- runtime-definitions: IFluidDataStoreContext no longer raises events, IFluidDataStoreChannel needs to implement new method [97d68aa06b](https://github.com/microsoft/FluidFramework/commit/97d68aa06bd5c022ecb026655814aea222a062ae)
|
|
272
276
|
|
|
273
|
-
|
|
277
|
+
This change could be ignored, unless you have custom implementations of IFluidDataStoreChannel or listened to IFluidDataStoreContext's "attached" or "attaching" events
|
|
274
278
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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.
|
|
280
284
|
|
|
281
|
-
-
|
|
285
|
+
- Packages now use package.json "exports" and require modern module resolution [97d68aa06b](https://github.com/microsoft/FluidFramework/commit/97d68aa06bd5c022ecb026655814aea222a062ae)
|
|
282
286
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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.
|
|
286
290
|
|
|
287
|
-
|
|
291
|
+
This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:
|
|
288
292
|
|
|
289
|
-
|
|
290
|
-
|
|
293
|
+
- `"moduleResolution": "Node16"` with `"module": "Node16"`
|
|
294
|
+
- `"moduleResolution": "Bundler"` with `"module": "ESNext"`
|
|
291
295
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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.
|
|
296
300
|
|
|
297
|
-
|
|
298
|
-
|
|
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.**
|
|
299
303
|
|
|
300
304
|
## 2.0.0-rc.2.0.0
|
|
301
305
|
|
|
302
306
|
### Minor Changes
|
|
303
307
|
|
|
304
|
-
-
|
|
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)
|
|
305
309
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
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`.
|
|
311
315
|
|
|
312
|
-
|
|
313
|
-
|
|
316
|
+
There is no replacement given in terms of immediate programmatic access to this data.
|
|
317
|
+
The expected use pattern is something like this:
|
|
314
318
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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)
|
|
320
324
|
|
|
321
|
-
-
|
|
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)
|
|
322
326
|
|
|
323
|
-
|
|
327
|
+
### Key changes
|
|
324
328
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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)
|
|
328
332
|
|
|
329
|
-
|
|
333
|
+
### Implementation details
|
|
330
334
|
|
|
331
|
-
|
|
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).
|
|
332
336
|
|
|
333
|
-
|
|
337
|
+
### Breaking changes
|
|
334
338
|
|
|
335
|
-
|
|
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).
|
|
336
340
|
|
|
337
|
-
|
|
341
|
+
### Backward compatibility considerations
|
|
338
342
|
|
|
339
|
-
|
|
340
|
-
|
|
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".
|
|
341
345
|
|
|
342
|
-
|
|
346
|
+
### Minor changes
|
|
343
347
|
|
|
344
|
-
|
|
345
|
-
|
|
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.
|
|
346
350
|
|
|
347
|
-
-
|
|
351
|
+
- driver-definitions: repositoryUrl removed from IDocumentStorageService ([#19522](https://github.com/microsoft/FluidFramework/issues/19522)) [90eb3c9d33](https://github.com/microsoft/FluidFramework/commits/90eb3c9d33d80e24caa1393a50f414c5602f6aa3)
|
|
348
352
|
|
|
349
|
-
|
|
353
|
+
The `repositoryUrl` member of `IDocumentStorageService` was unused and always equal to the empty string. It has been removed.
|
|
350
354
|
|
|
351
|
-
-
|
|
355
|
+
- runtime-definitions: FlushMode.Immediate is deprecated ([#19963](https://github.com/microsoft/FluidFramework/issues/19963)) [861500c1e2](https://github.com/microsoft/FluidFramework/commits/861500c1e2bdd3394308bd87007231d70b698be0)
|
|
352
356
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
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
|
|
357
361
|
|
|
358
|
-
-
|
|
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)
|
|
359
363
|
|
|
360
|
-
|
|
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.
|
|
361
365
|
|
|
362
|
-
-
|
|
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)
|
|
363
367
|
|
|
364
|
-
|
|
365
|
-
|
|
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>).
|
|
366
370
|
|
|
367
|
-
-
|
|
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)
|
|
368
372
|
|
|
369
|
-
|
|
373
|
+
Added `containerMetadata` prop on IContainer interface.
|
|
370
374
|
|
|
371
|
-
-
|
|
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)
|
|
372
376
|
|
|
373
|
-
|
|
377
|
+
The `ISignalEnvelope` interface has been moved to the @fluidframework/core-interfaces package.
|
|
374
378
|
|
|
375
379
|
## 2.0.0-rc.1.0.0
|
|
376
380
|
|
|
377
381
|
### Minor Changes
|
|
378
382
|
|
|
379
|
-
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
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.
|
|
418
422
|
|
|
419
423
|
## 2.0.0-internal.8.0.0
|
|
420
424
|
|
|
421
425
|
### Major Changes
|
|
422
426
|
|
|
423
|
-
-
|
|
427
|
+
- container-runtime-definitions: Removed resolveHandle and IFluidHandleContext from ContainerRuntime interfaces [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
424
428
|
|
|
425
|
-
|
|
426
|
-
|
|
429
|
+
The `IContainerRuntime.resolveHandle(...)` method and the `IContainerRuntimeBase.IFluidHandleContext` property have been
|
|
430
|
+
removed. Please remove all usage of these APIs.
|
|
427
431
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
432
|
+
See
|
|
433
|
+
[Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
434
|
+
for more details.
|
|
431
435
|
|
|
432
|
-
-
|
|
436
|
+
- container-runtime: Removed request pattern from ContainerRuntime, IRuntime, and IContainerRuntimeBase [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
433
437
|
|
|
434
|
-
|
|
438
|
+
The `request(...)` method and `IFluidRouter` property have been removed from the following places:
|
|
435
439
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
440
|
+
- `ContainerRuntime`
|
|
441
|
+
- `IRuntime`
|
|
442
|
+
- `IContainerRuntimeBase`
|
|
439
443
|
|
|
440
|
-
|
|
444
|
+
Please use the `IRuntime.getEntryPoint()` method to get the runtime's entry point.
|
|
441
445
|
|
|
442
|
-
|
|
446
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
443
447
|
|
|
444
|
-
-
|
|
448
|
+
- runtime-definitions: Removed IFluidRouter from IFluidDataStoreChannel and FluidDataStoreRuntime [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
445
449
|
|
|
446
|
-
|
|
447
|
-
|
|
450
|
+
The `IFluidRouter` property has been removed from `IFluidDataStoreChannel` and `FluidDataStoreRuntime`. Please migrate
|
|
451
|
+
all usage to the `IFluidDataStoreChannel.entryPoint` API.
|
|
448
452
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
453
|
+
See
|
|
454
|
+
[Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
455
|
+
for more details.
|
|
452
456
|
|
|
453
|
-
-
|
|
457
|
+
- runtime-definitions: Removed request and IFluidRouter from IDataStore [9a451d4946](https://github.com/microsoft/FluidFramework/commits/9a451d4946b5c51a52e4d1ab5bf51e7b285b0d74)
|
|
454
458
|
|
|
455
|
-
|
|
459
|
+
The `request` method and `IFluidRouter` property have been removed from `IDataStore`. Please migrate all usage to the `IDataStore.entryPoint` API.
|
|
456
460
|
|
|
457
|
-
|
|
461
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
458
462
|
|
|
459
463
|
## 2.0.0-internal.7.4.0
|
|
460
464
|
|
|
461
465
|
### Minor Changes
|
|
462
466
|
|
|
463
|
-
-
|
|
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)
|
|
464
468
|
|
|
465
|
-
|
|
466
|
-
|
|
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.
|
|
467
471
|
|
|
468
|
-
|
|
469
|
-
|
|
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.
|
|
470
474
|
|
|
471
475
|
## 2.0.0-internal.7.3.0
|
|
472
476
|
|
|
@@ -484,97 +488,97 @@ Dependency updates only.
|
|
|
484
488
|
|
|
485
489
|
### Major Changes
|
|
486
490
|
|
|
487
|
-
-
|
|
491
|
+
- Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
488
492
|
|
|
489
|
-
|
|
493
|
+
This included the following changes from the protocol-definitions release:
|
|
490
494
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
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.
|
|
497
501
|
|
|
498
|
-
-
|
|
502
|
+
- runtime-definitions: `bindToContext` API removed [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
499
503
|
|
|
500
|
-
|
|
501
|
-
|
|
504
|
+
`bindToContext` has been removed from `FluidDataStoreRuntime`, `IFluidDataStoreContext` and
|
|
505
|
+
`MockFluidDataStoreContext`. This has been deprecated for several releases and cannot be used anymore.
|
|
502
506
|
|
|
503
|
-
-
|
|
507
|
+
- DEPRECATED: resolveHandle and IFluidHandleContext deprecated on IContainerRuntime [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
504
508
|
|
|
505
|
-
|
|
509
|
+
The `resolveHandle(...)` and `get IFluidHandleContext()` methods have been deprecated on the following interfaces:
|
|
506
510
|
|
|
507
|
-
|
|
508
|
-
|
|
511
|
+
- `IContainerRuntime`
|
|
512
|
+
- `IContainerRuntimeBase`
|
|
509
513
|
|
|
510
|
-
|
|
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.
|
|
511
515
|
|
|
512
|
-
|
|
516
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
513
517
|
|
|
514
|
-
-
|
|
518
|
+
- container-definitions: IContainer's and IDataStore's IFluidRouter capabilities are deprecated [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
515
519
|
|
|
516
|
-
|
|
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.
|
|
517
521
|
|
|
518
|
-
|
|
522
|
+
See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details.
|
|
519
523
|
|
|
520
|
-
-
|
|
524
|
+
- Server upgrade: dependencies on Fluid server packages updated to 2.0.1 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
521
525
|
|
|
522
|
-
|
|
526
|
+
Dependencies on the following Fluid server package have been updated to version 2.0.1:
|
|
523
527
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
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
|
|
544
548
|
|
|
545
|
-
-
|
|
549
|
+
- test-utils: provideEntryPoint is required [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
546
550
|
|
|
547
|
-
|
|
551
|
+
The optional `provideEntryPoint` method has become required on a number of constructors. A value will need to be provided to the following classes:
|
|
548
552
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
+
- `BaseContainerRuntimeFactory`
|
|
554
|
+
- `RuntimeFactory`
|
|
555
|
+
- `ContainerRuntime` (constructor and `loadRuntime`)
|
|
556
|
+
- `FluidDataStoreRuntime`
|
|
553
557
|
|
|
554
|
-
|
|
555
|
-
|
|
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.
|
|
556
560
|
|
|
557
|
-
|
|
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.
|
|
558
562
|
|
|
559
|
-
|
|
563
|
+
For more details, see [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md)
|
|
560
564
|
|
|
561
|
-
-
|
|
565
|
+
- Minimum TypeScript version now 5.1.6 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
562
566
|
|
|
563
|
-
|
|
567
|
+
The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.
|
|
564
568
|
|
|
565
569
|
## 2.0.0-internal.6.4.0
|
|
566
570
|
|
|
567
571
|
### Minor Changes
|
|
568
572
|
|
|
569
|
-
-
|
|
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)
|
|
570
574
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
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`
|
|
576
580
|
|
|
577
|
-
|
|
581
|
+
Additionally, several of @fluidframework/telemetry-utils's exports are being marked as internal and should not be consumed outside of other FF packages.
|
|
578
582
|
|
|
579
583
|
## 2.0.0-internal.6.3.0
|
|
580
584
|
|
|
@@ -584,32 +588,32 @@ Dependency updates only.
|
|
|
584
588
|
|
|
585
589
|
### Minor Changes
|
|
586
590
|
|
|
587
|
-
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
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
|
|
613
617
|
|
|
614
618
|
## 2.0.0-internal.6.1.0
|
|
615
619
|
|
|
@@ -619,85 +623,85 @@ Dependency updates only.
|
|
|
619
623
|
|
|
620
624
|
### Major Changes
|
|
621
625
|
|
|
622
|
-
-
|
|
626
|
+
- Request APIs deprecated from many places [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
623
627
|
|
|
624
|
-
|
|
628
|
+
The `request` API (associated with the `IFluidRouter` interface) has been deprecated on a number of classes and interfaces. The following are impacted:
|
|
625
629
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
630
|
+
- `IRuntime` and `ContainerRuntime`
|
|
631
|
+
- `IFluidDataStoreRuntime` and `FluidDataStoreRuntime`
|
|
632
|
+
- `IFluidDataStoreChannel`
|
|
633
|
+
- `MockFluidDataStoreRuntime`
|
|
634
|
+
- `TestFluidObject`
|
|
631
635
|
|
|
632
|
-
|
|
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.
|
|
633
637
|
|
|
634
|
-
|
|
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).
|
|
635
639
|
|
|
636
|
-
|
|
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).
|
|
637
641
|
|
|
638
|
-
-
|
|
642
|
+
- IContainer's and IDataStore's IFluidRouter capabilities are deprecated. [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
639
643
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
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.
|
|
643
647
|
|
|
644
|
-
|
|
648
|
+
### About requesting "/" and using entryPoint
|
|
645
649
|
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
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.
|
|
650
654
|
|
|
651
|
-
|
|
652
|
-
|
|
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.
|
|
653
657
|
|
|
654
|
-
|
|
658
|
+
### Present Replacement for requesting an arbitrary URL
|
|
655
659
|
|
|
656
|
-
|
|
660
|
+
Suppose you have these variables:
|
|
657
661
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
+
```ts
|
|
663
|
+
const container: IContainer = ...;
|
|
664
|
+
const dataStore: IDataStore = ...;
|
|
665
|
+
```
|
|
662
666
|
|
|
663
|
-
|
|
667
|
+
Before:
|
|
664
668
|
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
+
```ts
|
|
670
|
+
container.request({ url, headers });
|
|
671
|
+
dataStore.request({ url, headers });
|
|
672
|
+
```
|
|
669
673
|
|
|
670
|
-
|
|
674
|
+
After:
|
|
671
675
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
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
|
+
}
|
|
677
681
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
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 });
|
|
682
686
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
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
|
+
```
|
|
688
692
|
|
|
689
|
-
|
|
693
|
+
### Looking ahead to using entryPoint
|
|
690
694
|
|
|
691
|
-
|
|
692
|
-
|
|
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.
|
|
693
697
|
|
|
694
|
-
-
|
|
698
|
+
- Upgraded typescript transpilation target to ES2020 [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
695
699
|
|
|
696
|
-
|
|
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.
|
|
697
701
|
|
|
698
|
-
-
|
|
702
|
+
- IDeltaManager members disposed and dispose() removed [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
699
703
|
|
|
700
|
-
|
|
704
|
+
IDeltaManager members disposed and dispose() were deprecated in 2.0.0-internal.5.3.0 and have now been removed.
|
|
701
705
|
|
|
702
706
|
## 2.0.0-internal.5.4.0
|
|
703
707
|
|
|
@@ -719,14 +723,14 @@ Dependency updates only.
|
|
|
719
723
|
|
|
720
724
|
### Major Changes
|
|
721
725
|
|
|
722
|
-
-
|
|
726
|
+
- GC interfaces removed from runtime-definitions [8b242fdc79](https://github.com/microsoft/FluidFramework/commits/8b242fdc796714cf1da9ad3f90d02efb122af0c2)
|
|
723
727
|
|
|
724
|
-
|
|
728
|
+
The following interfaces available in `@fluidframework/runtime-definitions` were deprecated in 2.0.0-internal.4.1.0 and are now removed.
|
|
725
729
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
+
- `IGarbageCollectionNodeData`
|
|
731
|
+
- `IGarbageCollectionState`
|
|
732
|
+
- `IGarbageCollectionSnapshotData`
|
|
733
|
+
- `IGarbageCollectionSummaryDetailsLegacy`
|
|
730
734
|
|
|
731
735
|
## 2.0.0-internal.4.4.0
|
|
732
736
|
|
|
@@ -736,11 +740,11 @@ Dependency updates only.
|
|
|
736
740
|
|
|
737
741
|
### Minor Changes
|
|
738
742
|
|
|
739
|
-
-
|
|
743
|
+
- GC interfaces removed from runtime-definitions ([#14750](https://github.com/microsoft/FluidFramework/pull-requests/14750)) [60274eacab](https://github.com/microsoft/FluidFramework/commits/60274eacabf14d42f52f6ad1c2f64356e64ba1a2)
|
|
740
744
|
|
|
741
|
-
|
|
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.
|
|
742
746
|
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
+
- `IGarbageCollectionNodeData`
|
|
748
|
+
- `IGarbageCollectionState`
|
|
749
|
+
- `IGarbageCollectionSnapshotData`
|
|
750
|
+
- `IGarbageCollectionSummaryDetailsLegacy`
|