@fluidframework/datastore 2.71.0 → 2.72.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 +4 -21
- package/api-report/datastore.legacy.beta.api.md +2 -0
- package/dist/dataStoreLayerCompatState.js +1 -1
- package/dist/dataStoreLayerCompatState.js.map +1 -1
- package/dist/dataStoreRuntime.d.ts +2 -0
- package/dist/dataStoreRuntime.d.ts.map +1 -1
- package/dist/dataStoreRuntime.js +62 -44
- package/dist/dataStoreRuntime.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/lib/dataStoreLayerCompatState.js +1 -1
- package/lib/dataStoreLayerCompatState.js.map +1 -1
- package/lib/dataStoreRuntime.d.ts +2 -0
- package/lib/dataStoreRuntime.d.ts.map +1 -1
- package/lib/dataStoreRuntime.js +62 -44
- package/lib/dataStoreRuntime.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +23 -19
- package/src/dataStoreLayerCompatState.ts +1 -1
- package/src/dataStoreRuntime.ts +68 -49
- package/src/packageVersion.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# @fluidframework/datastore
|
|
2
2
|
|
|
3
|
+
## 2.72.0
|
|
4
|
+
|
|
5
|
+
Dependency updates only.
|
|
6
|
+
|
|
3
7
|
## 2.71.0
|
|
4
8
|
|
|
5
9
|
Dependency updates only.
|
|
@@ -31,7 +35,6 @@ Dependency updates only.
|
|
|
31
35
|
DDSes may optionally consume this value and use it to determine which sets of feature flags should be enabled.
|
|
32
36
|
|
|
33
37
|
#### Public type changes
|
|
34
|
-
|
|
35
38
|
- **@fluidframework/datastore: `FluidDataStoreRuntime`** - Exposes `minVersionForCollab`.
|
|
36
39
|
- **@fluidframework/runtime-definitions: `IFluidDataStoreContext`** - Exposes optional member `minVersionForCollab`.
|
|
37
40
|
See `FluidDataStoreContext` for an example implementation.
|
|
@@ -128,7 +131,6 @@ Dependency updates only.
|
|
|
128
131
|
- The process and processDocumentSchemaOp functions have been removed ([#24018](https://github.com/microsoft/FluidFramework/pull/24018)) [bc35d543d5](https://github.com/microsoft/FluidFramework/commit/bc35d543d58c7e4bf28944b09d645cc26bf28a29)
|
|
129
132
|
|
|
130
133
|
`process` has been replaced by `processMessages` from the following:
|
|
131
|
-
|
|
132
134
|
- `FluidDataStoreRuntime`
|
|
133
135
|
- `IDeltaHandler`
|
|
134
136
|
- `IFluidDataStoreChannel`
|
|
@@ -170,7 +172,6 @@ Dependency updates only.
|
|
|
170
172
|
parameter.
|
|
171
173
|
|
|
172
174
|
These changes were originally announced in version 0.25.0. See the following issues for more details:
|
|
173
|
-
|
|
174
175
|
- [#1537](https://github.com/microsoft/FluidFramework/issues/1537)
|
|
175
176
|
- [#2931](https://github.com/microsoft/FluidFramework/pull/2931)
|
|
176
177
|
|
|
@@ -199,7 +200,6 @@ Dependency updates only.
|
|
|
199
200
|
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.
|
|
200
201
|
|
|
201
202
|
#### Alternatives
|
|
202
|
-
|
|
203
203
|
- Alternatives to `IDeltaManager.inbound.on("op", ...)` are `IDeltaManager.on("op", ...)`
|
|
204
204
|
- Alternatives to calling `IDeltaManager.inbound.pause`, `IDeltaManager.outbound.pause` for `IContainer` disconnect use `IContainer.disconnect`.
|
|
205
205
|
- Alternatives to calling `IDeltaManager.inbound.resume`, `IDeltaManager.outbound.resume` for `IContainer` reconnect use `IContainer.connect`.
|
|
@@ -240,7 +240,6 @@ Dependency updates only.
|
|
|
240
240
|
|
|
241
241
|
Make IFluidDataStoreRuntime.deltaManager have an opaque type.
|
|
242
242
|
Marks the following types which were reachable from it as alpha:
|
|
243
|
-
|
|
244
243
|
- IConnectionDetails
|
|
245
244
|
- IDeltaSender
|
|
246
245
|
- IDeltaManagerEvents
|
|
@@ -264,7 +263,6 @@ Dependency updates only.
|
|
|
264
263
|
TypeScript types and implementation code.
|
|
265
264
|
|
|
266
265
|
This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:
|
|
267
|
-
|
|
268
266
|
- `"moduleResolution": "Node16"` with `"module": "Node16"`
|
|
269
267
|
- `"moduleResolution": "Bundler"` with `"module": "ESNext"`
|
|
270
268
|
|
|
@@ -283,26 +281,21 @@ Dependency updates only.
|
|
|
283
281
|
- 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)
|
|
284
282
|
|
|
285
283
|
### Key changes
|
|
286
|
-
|
|
287
284
|
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.
|
|
288
285
|
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)
|
|
289
286
|
3. Similar DDS names will be opportunistically short (same considerations for detached DDS vs. attached DDS)
|
|
290
287
|
|
|
291
288
|
### Implementation details
|
|
292
|
-
|
|
293
289
|
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).
|
|
294
290
|
|
|
295
291
|
### Breaking changes
|
|
296
|
-
|
|
297
292
|
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).
|
|
298
293
|
|
|
299
294
|
### Backward compatibility considerations
|
|
300
|
-
|
|
301
295
|
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.
|
|
302
296
|
2. If application runs to these problems, or wants to reduce risks, consider disabling ID compressor via IContainerRuntimeOptions.enableRuntimeIdCompressor = "off".
|
|
303
297
|
|
|
304
298
|
### Minor changes
|
|
305
|
-
|
|
306
299
|
1. IContainerRuntime.createDetachedRootDataStore() is removed. Please use IContainerRuntime.createDetachedDataStore and IDataStore.trySetAlias() instead
|
|
307
300
|
2. IContainerRuntimeOptions.enableRuntimeIdCompressor has been changes from boolean to tri-state.
|
|
308
301
|
|
|
@@ -325,7 +318,6 @@ Dependency updates only.
|
|
|
325
318
|
- Updated server dependencies ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
|
|
326
319
|
|
|
327
320
|
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)
|
|
328
|
-
|
|
329
321
|
- @fluidframework/gitresources
|
|
330
322
|
- @fluidframework/server-kafka-orderer
|
|
331
323
|
- @fluidframework/server-lambdas
|
|
@@ -399,7 +391,6 @@ Dependency updates only.
|
|
|
399
391
|
- Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
400
392
|
|
|
401
393
|
This included the following changes from the protocol-definitions release:
|
|
402
|
-
|
|
403
394
|
- Updating signal interfaces for some planned improvements. The intention is split the interface between signals
|
|
404
395
|
submitted by clients to the server and the resulting signals sent from the server to clients.
|
|
405
396
|
- A new optional type member is available on the ISignalMessage interface and a new ISentSignalMessage interface has
|
|
@@ -415,7 +406,6 @@ Dependency updates only.
|
|
|
415
406
|
- Server upgrade: dependencies on Fluid server packages updated to 2.0.1 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
416
407
|
|
|
417
408
|
Dependencies on the following Fluid server package have been updated to version 2.0.1:
|
|
418
|
-
|
|
419
409
|
- @fluidframework/gitresources: 2.0.1
|
|
420
410
|
- @fluidframework/server-kafka-orderer: 2.0.1
|
|
421
411
|
- @fluidframework/server-lambdas: 2.0.1
|
|
@@ -440,7 +430,6 @@ Dependency updates only.
|
|
|
440
430
|
- test-utils: provideEntryPoint is required [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
|
|
441
431
|
|
|
442
432
|
The optional `provideEntryPoint` method has become required on a number of constructors. A value will need to be provided to the following classes:
|
|
443
|
-
|
|
444
433
|
- `BaseContainerRuntimeFactory`
|
|
445
434
|
- `RuntimeFactory`
|
|
446
435
|
- `ContainerRuntime` (constructor and `loadRuntime`)
|
|
@@ -477,7 +466,6 @@ Dependency updates only.
|
|
|
477
466
|
|
|
478
467
|
The **@fluidframework/common-definitions** package is being deprecated, so the following interfaces and types are now
|
|
479
468
|
imported from the **@fluidframework/core-interfaces** package:
|
|
480
|
-
|
|
481
469
|
- interface IDisposable
|
|
482
470
|
- interface IErrorEvent
|
|
483
471
|
- interface IErrorEvent
|
|
@@ -511,7 +499,6 @@ Dependency updates only.
|
|
|
511
499
|
- Request APIs deprecated from many places [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
512
500
|
|
|
513
501
|
The `request` API (associated with the `IFluidRouter` interface) has been deprecated on a number of classes and interfaces. The following are impacted:
|
|
514
|
-
|
|
515
502
|
- `IRuntime` and `ContainerRuntime`
|
|
516
503
|
- `IFluidDataStoreRuntime` and `FluidDataStoreRuntime`
|
|
517
504
|
- `IFluidDataStoreChannel`
|
|
@@ -527,7 +514,6 @@ Dependency updates only.
|
|
|
527
514
|
- `initializeEntryPoint` will become required [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
|
|
528
515
|
|
|
529
516
|
The optional `initializeEntryPoint` method has been added to a number of constructors. **This method argument will become required in an upcoming release** and a value will need to be provided to the following classes:
|
|
530
|
-
|
|
531
517
|
- `BaseContainerRuntimeFactory`
|
|
532
518
|
- `ContainerRuntimeFactoryWithDefaultDataStore`
|
|
533
519
|
- `RuntimeFactory`
|
|
@@ -572,7 +558,6 @@ Dependency updates only.
|
|
|
572
558
|
|
|
573
559
|
- The `@fluidframework/garbage-collector` package was deprecated in version 2.0.0-internal.4.1.0. [8b242fdc79](https://github.com/microsoft/FluidFramework/commits/8b242fdc796714cf1da9ad3f90d02efb122af0c2)
|
|
574
560
|
It has now been removed with the following functions, interfaces, and types in it.
|
|
575
|
-
|
|
576
561
|
- `cloneGCData`
|
|
577
562
|
- `concatGarbageCollectionData`
|
|
578
563
|
- `concatGarbageCollectionStates`
|
|
@@ -598,7 +583,6 @@ Dependency updates only.
|
|
|
598
583
|
- GC interfaces removed from runtime-definitions ([#14750](https://github.com/microsoft/FluidFramework/pull-requests/14750)) [60274eacab](https://github.com/microsoft/FluidFramework/commits/60274eacabf14d42f52f6ad1c2f64356e64ba1a2)
|
|
599
584
|
|
|
600
585
|
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.
|
|
601
|
-
|
|
602
586
|
- `IGarbageCollectionNodeData`
|
|
603
587
|
- `IGarbageCollectionState`
|
|
604
588
|
- `IGarbageCollectionSnapshotData`
|
|
@@ -609,7 +593,6 @@ Dependency updates only.
|
|
|
609
593
|
The `@fluidframework/garbage-collector` package is deprecated with the following functions, interfaces, and types in it.
|
|
610
594
|
These are internal implementation details and have been deprecated for public use. They will be removed in an upcoming
|
|
611
595
|
release.
|
|
612
|
-
|
|
613
596
|
- `cloneGCData`
|
|
614
597
|
- `concatGarbageCollectionData`
|
|
615
598
|
- `concatGarbageCollectionStates`
|
|
@@ -17,6 +17,8 @@ export class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataStoreRunt
|
|
|
17
17
|
constructor(dataStoreContext: IFluidDataStoreContext, sharedObjectRegistry: ISharedObjectRegistry, existing: boolean, provideEntryPoint: (runtime: IFluidDataStoreRuntime) => Promise<FluidObject>, policies?: Partial<IFluidDataStorePolicies>);
|
|
18
18
|
// (undocumented)
|
|
19
19
|
get absolutePath(): string;
|
|
20
|
+
// (undocumented)
|
|
21
|
+
get activeLocalOperationActivity(): "applyStashed" | "rollback" | undefined;
|
|
20
22
|
addChannel(channel: IChannel): void;
|
|
21
23
|
// (undocumented)
|
|
22
24
|
applyStashedOp(content: any): Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreLayerCompatState.js","sourceRoot":"","sources":["../src/dataStoreLayerCompatState.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,uEAGkD;AAElD,2DAAiD;AAEjD;;;GAGG;AACU,QAAA,0BAA0B,GAAG;IACzC;;OAEG;IACH,UAAU,EAAV,8BAAU;IACV;;OAEG;IACH,UAAU,EAAE,CAAC;CACb,CAAC;AAEF;;;GAGG;AACU,QAAA,gCAAgC,GAAwB;IACpE,GAAG,kCAA0B;IAC7B;;OAEG;IACH,iBAAiB,EAAE,IAAI,GAAG,EAAU;CACpC,CAAC;AAEF;;;GAGG;AACU,QAAA,sCAAsC,GAAoC;IACtF;;;OAGG;IACH,sBAAsB,EAAE,CAAC;IACzB;;OAEG;IACH,gBAAgB,EAAE,EAAE;CACpB,CAAC;AAEF;;;GAGG;AACH,SAAgB,4BAA4B,CAC3C,yBAA0D,EAC1D,SAAqB,EACrB,MAA2B;IAE3B,IAAA,qCAA0B,EACzB,WAAW,EACX,SAAS,EACT,wCAAgC,EAChC,8CAAsC,EACtC,yBAAyB,EACzB,SAAS,EACT,MAAM,CACN,CAAC;AACH,CAAC;AAdD,oEAcC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tILayerCompatDetails,\n\tILayerCompatSupportRequirements,\n} from \"@fluid-internal/client-utils\";\nimport {\n\tvalidateLayerCompatibility,\n\ttype ITelemetryLoggerExt,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport { pkgVersion } from \"./packageVersion.js\";\n\n/**\n * The core compatibility details of the DataStore layer that is the same across all layer boundaries.\n * @internal\n */\nexport const dataStoreCoreCompatDetails = {\n\t/**\n\t * The package version of the Runtime layer.\n\t */\n\tpkgVersion,\n\t/**\n\t * The current generation of the Runtime layer.\n\t */\n\tgeneration:
|
|
1
|
+
{"version":3,"file":"dataStoreLayerCompatState.js","sourceRoot":"","sources":["../src/dataStoreLayerCompatState.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,uEAGkD;AAElD,2DAAiD;AAEjD;;;GAGG;AACU,QAAA,0BAA0B,GAAG;IACzC;;OAEG;IACH,UAAU,EAAV,8BAAU;IACV;;OAEG;IACH,UAAU,EAAE,CAAC;CACb,CAAC;AAEF;;;GAGG;AACU,QAAA,gCAAgC,GAAwB;IACpE,GAAG,kCAA0B;IAC7B;;OAEG;IACH,iBAAiB,EAAE,IAAI,GAAG,EAAU;CACpC,CAAC;AAEF;;;GAGG;AACU,QAAA,sCAAsC,GAAoC;IACtF;;;OAGG;IACH,sBAAsB,EAAE,CAAC;IACzB;;OAEG;IACH,gBAAgB,EAAE,EAAE;CACpB,CAAC;AAEF;;;GAGG;AACH,SAAgB,4BAA4B,CAC3C,yBAA0D,EAC1D,SAAqB,EACrB,MAA2B;IAE3B,IAAA,qCAA0B,EACzB,WAAW,EACX,SAAS,EACT,wCAAgC,EAChC,8CAAsC,EACtC,yBAAyB,EACzB,SAAS,EACT,MAAM,CACN,CAAC;AACH,CAAC;AAdD,oEAcC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tILayerCompatDetails,\n\tILayerCompatSupportRequirements,\n} from \"@fluid-internal/client-utils\";\nimport {\n\tvalidateLayerCompatibility,\n\ttype ITelemetryLoggerExt,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport { pkgVersion } from \"./packageVersion.js\";\n\n/**\n * The core compatibility details of the DataStore layer that is the same across all layer boundaries.\n * @internal\n */\nexport const dataStoreCoreCompatDetails = {\n\t/**\n\t * The package version of the Runtime layer.\n\t */\n\tpkgVersion,\n\t/**\n\t * The current generation of the Runtime layer.\n\t */\n\tgeneration: 2,\n};\n\n/**\n * DataStore's compatibility details that is exposed to the Runtime layer.\n * @internal\n */\nexport const dataStoreCompatDetailsForRuntime: ILayerCompatDetails = {\n\t...dataStoreCoreCompatDetails,\n\t/**\n\t * The features supported by the DataStore layer across the DataStore / Runtime boundary.\n\t */\n\tsupportedFeatures: new Set<string>(),\n};\n\n/**\n * The requirements that the Runtime layer must meet to be compatible with this DataStore.\n * @internal\n */\nexport const runtimeSupportRequirementsForDataStore: ILayerCompatSupportRequirements = {\n\t/**\n\t * Minimum generation that Runtime must be at to be compatible with DataStore. Note that 0 is used here so\n\t * that Runtime layers before the introduction of the layer compatibility enforcement are compatible.\n\t */\n\tminSupportedGeneration: 0,\n\t/**\n\t * The features that the Runtime must support to be compatible with DataStore.\n\t */\n\trequiredFeatures: [],\n};\n\n/**\n * Validates that the Runtime layer is compatible with this DataStore.\n * @internal\n */\nexport function validateRuntimeCompatibility(\n\tmaybeRuntimeCompatDetails: ILayerCompatDetails | undefined,\n\tdisposeFn: () => void,\n\tlogger: ITelemetryLoggerExt,\n): void {\n\tvalidateLayerCompatibility(\n\t\t\"dataStore\",\n\t\t\"runtime\",\n\t\tdataStoreCompatDetailsForRuntime,\n\t\truntimeSupportRequirementsForDataStore,\n\t\tmaybeRuntimeCompatDetails,\n\t\tdisposeFn,\n\t\tlogger,\n\t);\n}\n"]}
|
|
@@ -68,6 +68,8 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
68
68
|
get rootRoutingContext(): this;
|
|
69
69
|
get channelsRoutingContext(): this;
|
|
70
70
|
get objectsRoutingContext(): this;
|
|
71
|
+
private localOpActivity;
|
|
72
|
+
get activeLocalOperationActivity(): "applyStashed" | "rollback" | undefined;
|
|
71
73
|
private _disposed;
|
|
72
74
|
get disposed(): boolean;
|
|
73
75
|
private readonly contexts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAA4B,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,KAAK,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,0CAA0C,CAAC;AAQlD,OAAO,KAAK,EACX,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,4BAA4B,EAC5B,mBAAmB,EAEnB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,cAAc,EAInB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EACX,gBAAgB,EAEhB,yBAAyB,EACzB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAG3B,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,eAAe,EAEf,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAI9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE5B,MAAM,8CAA8C,CAAC;AAkBtD,OAAO,EACN,KAAK,mBAAmB,EASxB,MAAM,0CAA0C,CAAC;AAiClD;;GAEG;AACH,oBAAY,oBAAoB;IAE/B,MAAM,WAAW;IACjB,SAAS,OAAO;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iCAAiC,GAC1C;IAAE,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAGrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;CAC/C;AAsBD;;;GAGG;AACH,qBAAa,qBACZ,SAAQ,iBAAiB,CAAC,4BAA4B,CACtD,YAAW,sBAAsB,EAAE,sBAAsB,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAA4B,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,KAAK,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,0CAA0C,CAAC;AAQlD,OAAO,KAAK,EACX,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,4BAA4B,EAC5B,mBAAmB,EAEnB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,cAAc,EAInB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EACX,gBAAgB,EAEhB,yBAAyB,EACzB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAG3B,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,eAAe,EAEf,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAI9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE5B,MAAM,8CAA8C,CAAC;AAkBtD,OAAO,EACN,KAAK,mBAAmB,EASxB,MAAM,0CAA0C,CAAC;AAiClD;;GAEG;AACH,oBAAY,oBAAoB;IAE/B,MAAM,WAAW;IACjB,SAAS,OAAO;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iCAAiC,GAC1C;IAAE,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAGrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;CAC/C;AAsBD;;;GAGG;AACH,qBAAa,qBACZ,SAAQ,iBAAiB,CAAC,4BAA4B,CACtD,YAAW,sBAAsB,EAAE,sBAAsB,EAAE,mBAAmB;IA+I7E,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IA9ItC;;OAEG;IACH,SAAgB,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,SAAgB,QAAQ,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,SAAgB,UAAU,QAAO,OAAO,CAAmB;IAE3D,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,IAAI,mBAAmB,CAE7C;IAED,IAAW,YAAY,IAAI,aAAa,GAAG,SAAS,CAEnD;IAKD,IAAW,mBAAmB,IAAI,IAAI,CAErC;IAED,IAAW,kBAAkB,IAAI,IAAI,CAEpC;IACD,IAAW,sBAAsB,IAAI,IAAI,CAExC;IACD,IAAW,qBAAqB,IAAI,IAAI,CAEvC;IAED,OAAO,CAAC,eAAe,CAAsD;IAC7E,IAAW,4BAA4B,IAAI,cAAc,GAAG,UAAU,GAAG,SAAS,CAEjF;IAED,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA8C;IACvF,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqB;IACjE,OAAO,CAAC,YAAY,CAAc;IAC3B,eAAe,EAAE,eAAe,CAAC;IAGxC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAwC;IAEpF,SAAgB,EAAE,EAAE,MAAM,CAAC;IAI3B,SAAgB,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;IACtD,SAAgB,oBAAoB,EAAE,aAAa,CAClD,yBAAyB,EACzB,gBAAgB,CAChB,CAAC;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,IAAW,MAAM,IAAI,mBAAmB,CAEvC;IAED;;;;OAIG;IACH,OAAO,CAAC,0BAA0B,CAAS;IAE3C;;;;;;OAMG;IACH,SAAgB,mBAAmB,CAAC,EAAE,OAAO,CAAoC;IAEjF;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAAU;IAE/D;;OAEG;IACH,SAAgB,mBAAmB,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAE1E;;;;;;;;;;OAUG;gBAEe,gBAAgB,EAAE,sBAAsB,EACxC,oBAAoB,EAAE,qBAAqB,EAC5D,QAAQ,EAAE,OAAO,EACjB,iBAAiB,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,WAAW,CAAC,EAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAyI5C;;OAEG;IACH,OAAO,KAAK,aAAa,GAExB;IAED;;OAEG;IACH,OAAO,KAAK,OAAO,GAElB;IAED,IAAI,YAAY,IAAI,mBAAmB,CAEtC;IAEM,OAAO,IAAI,IAAI;IAUT,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAIpD,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IA4C9C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAWtD;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS7C;;;;;;OAMG;IACI,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAmBnC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAiDvE,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,mCAAmC;IAmB3C;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IA+B3C;;;;;;;;;;OAUG;IACI,yBAAyB,IAAI,IAAI;IAaxC;;OAEG;IACI,WAAW,IAAI,IAAI;IAInB,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAShC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAUtE,OAAO,CAAC,SAAS,CAAU;IAC3B;;;;OAIG;IACI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQ5C,SAAS,IAAI,cAAc;IAI3B,WAAW,IAAI,SAAS;IAIlB,UAAU,CACtB,IAAI,EAAE,eAAe,EACrB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAMzC,OAAO,CAAC,0BAA0B;IA0BlC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAkD9B,OAAO,CAAC,qBAAqB;IAsC7B;;;OAGG;IACI,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,IAAI;IAkCnE,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI1E,OAAO,CAAC,iBAAiB;IAczB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;OAKG;IACU,SAAS,CACrB,QAAQ,GAAE,OAAe,EACzB,UAAU,GAAE,OAAc,EAC1B,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAWjC;;;;;;;;;;;;;;OAcG;IACU,SAAS,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAchF;;;;OAIG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAkB5C,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,qBAAqB;IAiCpF;;OAEG;IACI,eAAe,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,sBAAsB;IAkBpF;;;OAGG;YACW,0BAA0B;IAWxC;;;OAGG;IACH,OAAO,CAAC,mCAAmC;IAiC3C;;;;;OAKG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlF;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA2CjC,OAAO,CAAC,eAAe;IAMvB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiD;IAEhF,OAAO,CAAC,MAAM;IAQd;;;;;;;;;;;;;;OAcG;IACI,QAAQ,CACd,IAAI,EAAE,oBAAoB,EAG1B,OAAO,EAAE,GAAG,EACZ,eAAe,EAAE,OAAO,EACxB,MAAM,CAAC,EAAE,OAAO,GACd,IAAI;IA6BP;;;;;;;;;;;;OAYG;IACI,QAAQ,CAAC,CACf,IAAI,EAAE,oBAAoB,EAG1B,OAAO,EAAE,GAAG,EACZ,eAAe,EAAE,OAAO,GACtB,IAAI;IA6BM,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAqD3D;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,eAAe;IAMvB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IAyBhC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,GAAG,IAAI;CA+CtF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,mBACf,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,QAAQ,SAAS,CAAC,SACnF,4BAA4B,KAChC,4BAS+B,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,YACtB,CACR,OAAO,EAAE,qBAAqB,KAC1B,QAAQ;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,SACvD,4BAA4B,KAChC,4BAyC+B,CAAC"}
|
package/dist/dataStoreRuntime.js
CHANGED
|
@@ -94,6 +94,9 @@ class FluidDataStoreRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
94
94
|
get objectsRoutingContext() {
|
|
95
95
|
return this;
|
|
96
96
|
}
|
|
97
|
+
get activeLocalOperationActivity() {
|
|
98
|
+
return this.localOpActivity;
|
|
99
|
+
}
|
|
97
100
|
get disposed() {
|
|
98
101
|
return this._disposed;
|
|
99
102
|
}
|
|
@@ -119,6 +122,7 @@ class FluidDataStoreRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
119
122
|
* {@inheritDoc @fluidframework/datastore-definitions#IFluidDataStoreRuntime.isReadOnly}
|
|
120
123
|
*/
|
|
121
124
|
this.isReadOnly = () => this._readonly;
|
|
125
|
+
this.localOpActivity = undefined;
|
|
122
126
|
this._disposed = false;
|
|
123
127
|
this.contexts = new Map();
|
|
124
128
|
this.pendingAttach = new Set();
|
|
@@ -884,60 +888,74 @@ class FluidDataStoreRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
884
888
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
885
889
|
content, localOpMetadata) {
|
|
886
890
|
this.verifyNotClosed();
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
891
|
+
(0, internal_1.assert)(!this.localOpActivity, "localOpActivity must be undefined when entering rollback");
|
|
892
|
+
this.localOpActivity = "rollback";
|
|
893
|
+
try {
|
|
894
|
+
// The op being rolled back was not/will not be submitted, so decrement the count.
|
|
895
|
+
--this.pendingOpCount.value;
|
|
896
|
+
switch (type) {
|
|
897
|
+
case DataStoreMessageType.ChannelOp: {
|
|
898
|
+
// For Operations, find the right channel and trigger resubmission on it.
|
|
899
|
+
const envelope = content;
|
|
900
|
+
const channelContext = this.contexts.get(envelope.address);
|
|
901
|
+
(0, internal_1.assert)(!!channelContext, 0x2ed /* "There should be a channel context for the op" */);
|
|
902
|
+
channelContext.rollback(envelope.contents, localOpMetadata);
|
|
903
|
+
break;
|
|
904
|
+
}
|
|
905
|
+
default: {
|
|
906
|
+
throw new internal_5.LoggingError(`Can't rollback ${type} message`);
|
|
907
|
+
}
|
|
900
908
|
}
|
|
901
909
|
}
|
|
910
|
+
finally {
|
|
911
|
+
this.localOpActivity = undefined;
|
|
912
|
+
}
|
|
902
913
|
}
|
|
903
914
|
// TODO: use something other than `any` here
|
|
904
915
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
905
916
|
async applyStashedOp(content) {
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
917
|
+
(0, internal_1.assert)(!this.localOpActivity, "localOpActivity must be undefined when entering applyStashedOp");
|
|
918
|
+
this.localOpActivity = "applyStashed";
|
|
919
|
+
try {
|
|
920
|
+
// The op being applied may have been submitted in a previous session, so we increment the count here.
|
|
921
|
+
// Either the ack will arrive and be processed, or that previous session's connection will end, at which point the op will be resubmitted.
|
|
922
|
+
++this.pendingOpCount.value;
|
|
923
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
924
|
+
const type = content?.type;
|
|
925
|
+
switch (type) {
|
|
926
|
+
case DataStoreMessageType.Attach: {
|
|
927
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
928
|
+
const attachMessage = content.content;
|
|
929
|
+
const flatBlobs = new Map();
|
|
930
|
+
const snapshotTree = (0, internal_2.buildSnapshotTree)(attachMessage.snapshot.entries, flatBlobs);
|
|
931
|
+
const channelContext = this.createRehydratedLocalChannelContext(attachMessage.id, snapshotTree, flatBlobs);
|
|
932
|
+
await channelContext.getChannel();
|
|
933
|
+
this.contexts.set(attachMessage.id, channelContext);
|
|
934
|
+
if (this.attachState === container_definitions_1.AttachState.Detached) {
|
|
935
|
+
this.localChannelContextQueue.set(attachMessage.id, channelContext);
|
|
936
|
+
}
|
|
937
|
+
else {
|
|
938
|
+
channelContext.makeVisible();
|
|
939
|
+
this.pendingAttach.add(attachMessage.id);
|
|
940
|
+
}
|
|
941
|
+
return;
|
|
922
942
|
}
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
943
|
+
case DataStoreMessageType.ChannelOp: {
|
|
944
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
945
|
+
const envelope = content.content;
|
|
946
|
+
const channelContext = this.contexts.get(envelope.address);
|
|
947
|
+
(0, internal_1.assert)(!!channelContext, 0x184 /* "There should be a channel context for the op" */);
|
|
948
|
+
await channelContext.getChannel();
|
|
949
|
+
return channelContext.applyStashedOp(envelope.contents);
|
|
950
|
+
}
|
|
951
|
+
default: {
|
|
952
|
+
(0, internal_1.unreachableCase)(type);
|
|
926
953
|
}
|
|
927
|
-
return;
|
|
928
|
-
}
|
|
929
|
-
case DataStoreMessageType.ChannelOp: {
|
|
930
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
931
|
-
const envelope = content.content;
|
|
932
|
-
const channelContext = this.contexts.get(envelope.address);
|
|
933
|
-
(0, internal_1.assert)(!!channelContext, 0x184 /* "There should be a channel context for the op" */);
|
|
934
|
-
await channelContext.getChannel();
|
|
935
|
-
return channelContext.applyStashedOp(envelope.contents);
|
|
936
|
-
}
|
|
937
|
-
default: {
|
|
938
|
-
(0, internal_1.unreachableCase)(type);
|
|
939
954
|
}
|
|
940
955
|
}
|
|
956
|
+
finally {
|
|
957
|
+
this.localOpActivity = undefined;
|
|
958
|
+
}
|
|
941
959
|
}
|
|
942
960
|
/**
|
|
943
961
|
* Indicates the given channel is dirty from Summarizer's point of view,
|