@fluidframework/datastore 2.91.0 → 2.92.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 -0
- package/dist/dataStoreLayerCompatState.d.ts +1 -1
- package/dist/dataStoreRuntime.d.ts +18 -1
- package/dist/dataStoreRuntime.d.ts.map +1 -1
- package/dist/dataStoreRuntime.js +70 -2
- package/dist/dataStoreRuntime.js.map +1 -1
- package/dist/legacy.d.ts +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +1 -1
- package/internal.d.ts +1 -1
- package/legacy.d.ts +1 -1
- package/lib/dataStoreLayerCompatState.d.ts +1 -1
- package/lib/dataStoreRuntime.d.ts +18 -1
- package/lib/dataStoreRuntime.d.ts.map +1 -1
- package/lib/dataStoreRuntime.js +68 -1
- package/lib/dataStoreRuntime.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +1 -1
- package/package.json +19 -19
- package/src/dataStoreRuntime.ts +75 -1
- package/src/packageVersion.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -40,13 +40,29 @@ export type LocalFluidDataStoreRuntimeMessage = {
|
|
|
40
40
|
export interface ISharedObjectRegistry {
|
|
41
41
|
get(name: string): IChannelFactory | undefined;
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Wraps an {@link ISharedObjectRegistry} to transparently redirect legacy URL-based DDS type
|
|
45
|
+
* strings to the factories registered under the corresponding short-name path segment.
|
|
46
|
+
*
|
|
47
|
+
* When a lookup by the full URL fails, this wrapper retries using only the portion of the URL
|
|
48
|
+
* after `"https://graph.microsoft.com/types/"`. This allows old documents whose summaries
|
|
49
|
+
* contain URL-based type strings to be loaded against a registry built with the current
|
|
50
|
+
* short-name factory types.
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* See {@link legacyTypeUrlPrefix} for details on old vs. new formats
|
|
54
|
+
*/
|
|
55
|
+
export declare class LegacyTypeAwareRegistry implements ISharedObjectRegistry {
|
|
56
|
+
private readonly base;
|
|
57
|
+
constructor(base: ISharedObjectRegistry);
|
|
58
|
+
get(name: string): IChannelFactory | undefined;
|
|
59
|
+
}
|
|
43
60
|
/**
|
|
44
61
|
* Base data store class
|
|
45
62
|
* @legacy @beta
|
|
46
63
|
*/
|
|
47
64
|
export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataStoreRuntimeEvents> implements IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
48
65
|
private readonly dataStoreContext;
|
|
49
|
-
private readonly sharedObjectRegistry;
|
|
50
66
|
/**
|
|
51
67
|
* {@inheritDoc @fluidframework/datastore-definitions#IFluidDataStoreRuntime.entryPoint}
|
|
52
68
|
*/
|
|
@@ -83,6 +99,7 @@ export declare class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataS
|
|
|
83
99
|
readonly id: string;
|
|
84
100
|
readonly options: Record<string | number, any>;
|
|
85
101
|
readonly deltaManagerInternal: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
102
|
+
private readonly sharedObjectRegistry;
|
|
86
103
|
private readonly quorum;
|
|
87
104
|
private readonly audience;
|
|
88
105
|
private readonly mc;
|
|
@@ -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,EAI5B,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;
|
|
1
|
+
{"version":3,"file":"dataStoreRuntime.d.ts","sourceRoot":"","sources":["../src/dataStoreRuntime.ts"],"names":[],"mappings":"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"}
|
package/dist/dataStoreRuntime.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.mixinSummaryHandler = exports.mixinRequestHandler = exports.FluidDataStoreRuntime = exports.DataStoreMessageType = void 0;
|
|
7
|
+
exports.mixinSummaryHandler = exports.mixinRequestHandler = exports.FluidDataStoreRuntime = exports.LegacyTypeAwareRegistry = exports.DataStoreMessageType = void 0;
|
|
8
8
|
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
9
9
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
10
10
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
@@ -33,6 +33,74 @@ var DataStoreMessageType;
|
|
|
33
33
|
DataStoreMessageType["Attach"] = "attach";
|
|
34
34
|
DataStoreMessageType["ChannelOp"] = "op";
|
|
35
35
|
})(DataStoreMessageType || (exports.DataStoreMessageType = DataStoreMessageType = {}));
|
|
36
|
+
/**
|
|
37
|
+
* The common URL prefix used by legacy DDS type strings.
|
|
38
|
+
* Factories originally used full URLs (e.g. `"https://graph.microsoft.com/types/map"`);
|
|
39
|
+
* new factories use only the trailing path segment (e.g. `"map"`).
|
|
40
|
+
*
|
|
41
|
+
* Support for reading both formats was added in 2.92.0.
|
|
42
|
+
* @remarks
|
|
43
|
+
* This is encoded using base64 to avoid replacement of URL-like values that we have seen some reverse proxies perform.
|
|
44
|
+
* The value at runtime is "https://graph.microsoft.com/types/".
|
|
45
|
+
*/
|
|
46
|
+
const legacyTypeUrlPrefix = atob("aHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tL3R5cGVzLw==");
|
|
47
|
+
/**
|
|
48
|
+
* Wraps an {@link ISharedObjectRegistry} to transparently redirect legacy URL-based DDS type
|
|
49
|
+
* strings to the factories registered under the corresponding short-name path segment.
|
|
50
|
+
*
|
|
51
|
+
* When a lookup by the full URL fails, this wrapper retries using only the portion of the URL
|
|
52
|
+
* after `"https://graph.microsoft.com/types/"`. This allows old documents whose summaries
|
|
53
|
+
* contain URL-based type strings to be loaded against a registry built with the current
|
|
54
|
+
* short-name factory types.
|
|
55
|
+
*
|
|
56
|
+
* @remarks
|
|
57
|
+
* See {@link legacyTypeUrlPrefix} for details on old vs. new formats
|
|
58
|
+
*/
|
|
59
|
+
class LegacyTypeAwareRegistry {
|
|
60
|
+
constructor(base) {
|
|
61
|
+
this.base = base;
|
|
62
|
+
}
|
|
63
|
+
get(name) {
|
|
64
|
+
let factory = this.base.get(name);
|
|
65
|
+
if (factory !== undefined) {
|
|
66
|
+
return factory;
|
|
67
|
+
}
|
|
68
|
+
// eslint-disable-next-line unicorn/prefer-ternary -- This is more readable as an if statement to clearly delineate which logic can be later removed vs. which needs to stay.
|
|
69
|
+
if (name.startsWith(legacyTypeUrlPrefix)) {
|
|
70
|
+
// Back-compat: if the name is a legacy URL-based type string, retry with just the trailing path segment.
|
|
71
|
+
factory = this.base.get(name.slice(legacyTypeUrlPrefix.length));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Temporary compat: if the name is *not* a legacy URL-based type string and we haven't found a match yet, check if we have a match with the
|
|
75
|
+
// corresponding legacy scheme. This ensures that if a client containing an older code version with the legacy attribute types loads a document
|
|
76
|
+
// written by a newer code version, they are still able to find the correct factories. This block can be removed once collaboration between clients
|
|
77
|
+
// with legacy vs. new attribute types in their code is no longer supported.
|
|
78
|
+
factory = this.base.get(`${legacyTypeUrlPrefix}${name}`);
|
|
79
|
+
}
|
|
80
|
+
if (factory !== undefined) {
|
|
81
|
+
return factory;
|
|
82
|
+
}
|
|
83
|
+
if (isURL(name) && name.includes("graph.microsoft")) {
|
|
84
|
+
// Reasonably strong signal that this the document refers to a DDS type string that is using the legacy URL format, but
|
|
85
|
+
// the base URL was likely changed by a reverse proxy or similar. Assume that its final segment is still the short (modern) name of
|
|
86
|
+
// a valid DDS type and look it up as such.
|
|
87
|
+
const finalSegment = name.split("/").slice(-1)[0];
|
|
88
|
+
if (finalSegment !== undefined) {
|
|
89
|
+
return (this.base.get(finalSegment) ?? this.base.get(`${legacyTypeUrlPrefix}${finalSegment}`));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.LegacyTypeAwareRegistry = LegacyTypeAwareRegistry;
|
|
95
|
+
function isURL(str) {
|
|
96
|
+
try {
|
|
97
|
+
new URL(str);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
36
104
|
const defaultPolicies = {
|
|
37
105
|
readonlyInStagingMode: false,
|
|
38
106
|
};
|
|
@@ -117,7 +185,6 @@ class FluidDataStoreRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
117
185
|
constructor(dataStoreContext, sharedObjectRegistry, existing, provideEntryPoint, policies) {
|
|
118
186
|
super();
|
|
119
187
|
this.dataStoreContext = dataStoreContext;
|
|
120
|
-
this.sharedObjectRegistry = sharedObjectRegistry;
|
|
121
188
|
/**
|
|
122
189
|
* {@inheritDoc @fluidframework/datastore-definitions#IFluidDataStoreRuntime.isReadOnly}
|
|
123
190
|
*/
|
|
@@ -145,6 +212,7 @@ class FluidDataStoreRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
145
212
|
* Used to compute {@link FluidDataStoreRuntime.isDirty}
|
|
146
213
|
*/
|
|
147
214
|
this.pendingOpCount = initializePendingOpCount();
|
|
215
|
+
this.sharedObjectRegistry = new LegacyTypeAwareRegistry(sharedObjectRegistry);
|
|
148
216
|
(0, internal_1.assert)(!dataStoreContext.id.includes("/"), 0x30e /* Id cannot contain slashes. DataStoreContext should have validated this. */);
|
|
149
217
|
this.mc = (0, internal_5.createChildMonitoringContext)({
|
|
150
218
|
logger: dataStoreContext.baseLogger,
|