@fluidframework/shared-object-base 2.0.0-dev.2.3.0.115467 → 2.0.0-dev.4.1.0.148229
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/.eslintrc.js +5 -8
- package/.mocharc.js +2 -2
- package/README.md +1 -1
- package/api-extractor.json +2 -2
- package/bench/src/index.ts +37 -33
- package/bench/src/util.ts +26 -26
- package/dist/handle.d.ts.map +1 -1
- package/dist/handle.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.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/dist/remoteObjectHandle.d.ts.map +1 -1
- package/dist/remoteObjectHandle.js +16 -8
- package/dist/remoteObjectHandle.js.map +1 -1
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +5 -7
- package/dist/serializer.js.map +1 -1
- package/dist/sharedObject.d.ts +3 -3
- package/dist/sharedObject.d.ts.map +1 -1
- package/dist/sharedObject.js +26 -9
- package/dist/sharedObject.js.map +1 -1
- package/dist/summarySerializer.d.ts.map +1 -1
- package/dist/summarySerializer.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -3
- package/dist/utils.js.map +1 -1
- package/dist/valueType.d.ts.map +1 -1
- package/dist/valueType.js.map +1 -1
- package/lib/handle.d.ts.map +1 -1
- package/lib/handle.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.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/lib/remoteObjectHandle.d.ts.map +1 -1
- package/lib/remoteObjectHandle.js +17 -9
- package/lib/remoteObjectHandle.js.map +1 -1
- package/lib/serializer.d.ts.map +1 -1
- package/lib/serializer.js +5 -7
- package/lib/serializer.js.map +1 -1
- package/lib/sharedObject.d.ts +3 -3
- package/lib/sharedObject.d.ts.map +1 -1
- package/lib/sharedObject.js +26 -9
- package/lib/sharedObject.js.map +1 -1
- package/lib/summarySerializer.d.ts.map +1 -1
- package/lib/summarySerializer.js.map +1 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +1 -3
- package/lib/utils.js.map +1 -1
- package/lib/valueType.d.ts.map +1 -1
- package/lib/valueType.js.map +1 -1
- package/package.json +58 -58
- package/prettier.config.cjs +1 -1
- package/src/handle.ts +28 -28
- package/src/index.ts +12 -2
- package/src/packageVersion.ts +1 -1
- package/src/remoteObjectHandle.ts +70 -55
- package/src/serializer.ts +182 -187
- package/src/sharedObject.ts +709 -636
- package/src/summarySerializer.ts +8 -8
- package/src/types.ts +50 -32
- package/src/utils.ts +20 -26
- package/src/valueType.ts +9 -9
- package/tsconfig.esnext.json +6 -6
- package/tsconfig.json +8 -12
package/src/summarySerializer.ts
CHANGED
|
@@ -10,13 +10,13 @@ import { FluidSerializer } from "./serializer";
|
|
|
10
10
|
* Serializer implementation for serializing handles during summary.
|
|
11
11
|
*/
|
|
12
12
|
export class SummarySerializer extends FluidSerializer {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
private readonly serializedRoutes: Set<string> = new Set();
|
|
14
|
+
public getSerializedRoutes(): string[] {
|
|
15
|
+
return Array.from(this.serializedRoutes);
|
|
16
|
+
}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
protected serializeHandle(handle: IFluidHandle, bind: IFluidHandle) {
|
|
19
|
+
this.serializedRoutes.add(handle.absolutePath);
|
|
20
|
+
return super.serializeHandle(handle, bind);
|
|
21
|
+
}
|
|
22
22
|
}
|
package/src/types.ts
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
IErrorEvent,
|
|
8
|
+
IEventProvider,
|
|
9
|
+
IEventThisPlaceHolder,
|
|
10
|
+
} from "@fluidframework/common-definitions";
|
|
7
11
|
import { IChannel } from "@fluidframework/datastore-definitions";
|
|
8
12
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
9
13
|
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
@@ -12,43 +16,57 @@ import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
|
12
16
|
* Events emitted by {@link ISharedObject}.
|
|
13
17
|
*/
|
|
14
18
|
export interface ISharedObjectEvents extends IErrorEvent {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Fires before an incoming operation (op) is applied to the shared object.
|
|
21
|
+
*
|
|
22
|
+
* @remarks Note: this should be considered an internal implementation detail. It is not recommended for external
|
|
23
|
+
* use.
|
|
24
|
+
*
|
|
25
|
+
* @eventProperty
|
|
26
|
+
*/
|
|
27
|
+
(
|
|
28
|
+
event: "pre-op",
|
|
29
|
+
listener: (
|
|
30
|
+
op: ISequencedDocumentMessage,
|
|
31
|
+
local: boolean,
|
|
32
|
+
target: IEventThisPlaceHolder,
|
|
33
|
+
) => void,
|
|
34
|
+
);
|
|
24
35
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Fires after an incoming op is applied to the shared object.
|
|
38
|
+
*
|
|
39
|
+
* @remarks Note: this should be considered an internal implementation detail. It is not recommended for external
|
|
40
|
+
* use.
|
|
41
|
+
*
|
|
42
|
+
* @eventProperty
|
|
43
|
+
*/
|
|
44
|
+
(
|
|
45
|
+
event: "op",
|
|
46
|
+
listener: (
|
|
47
|
+
op: ISequencedDocumentMessage,
|
|
48
|
+
local: boolean,
|
|
49
|
+
target: IEventThisPlaceHolder,
|
|
50
|
+
) => void,
|
|
51
|
+
);
|
|
35
52
|
}
|
|
36
53
|
|
|
37
54
|
/**
|
|
38
55
|
* Base interface for shared objects from which other interfaces derive. Implemented by SharedObject
|
|
39
56
|
*/
|
|
40
57
|
export interface ISharedObject<TEvent extends ISharedObjectEvents = ISharedObjectEvents>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
58
|
+
extends IChannel,
|
|
59
|
+
IEventProvider<TEvent> {
|
|
60
|
+
/**
|
|
61
|
+
* Binds the given shared object to its containing data store runtime, causing it to attach once
|
|
62
|
+
* the runtime attaches.
|
|
63
|
+
*/
|
|
64
|
+
bindToContext(): void;
|
|
47
65
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Returns the GC data for this shared object. It contains a list of GC nodes that contains references to
|
|
68
|
+
* other GC nodes.
|
|
69
|
+
* @param fullGC - true to bypass optimizations and force full generation of GC data.
|
|
70
|
+
*/
|
|
71
|
+
getGCData(fullGC?: boolean): IGarbageCollectionData;
|
|
54
72
|
}
|
package/src/utils.ts
CHANGED
|
@@ -18,16 +18,12 @@ import { IFluidSerializer } from "./serializer";
|
|
|
18
18
|
* @returns Result of strigifying an object
|
|
19
19
|
*/
|
|
20
20
|
export function serializeHandles(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
value: any,
|
|
22
|
+
serializer: IFluidSerializer,
|
|
23
|
+
bind: IFluidHandle,
|
|
24
24
|
): string | undefined {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
? serializer.stringify(
|
|
28
|
-
value,
|
|
29
|
-
bind)
|
|
30
|
-
: value;
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
26
|
+
return value !== undefined ? serializer.stringify(value, bind) : value;
|
|
31
27
|
}
|
|
32
28
|
|
|
33
29
|
/**
|
|
@@ -43,14 +39,12 @@ export function serializeHandles(
|
|
|
43
39
|
* @returns The fully-plain object
|
|
44
40
|
*/
|
|
45
41
|
export function makeHandlesSerializable(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
value: any,
|
|
43
|
+
serializer: IFluidSerializer,
|
|
44
|
+
bind: IFluidHandle,
|
|
49
45
|
) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
value,
|
|
53
|
-
bind);
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
47
|
+
return serializer.encode(value, bind);
|
|
54
48
|
}
|
|
55
49
|
|
|
56
50
|
/**
|
|
@@ -61,12 +55,9 @@ export function makeHandlesSerializable(
|
|
|
61
55
|
* @param context - The handle context for the container
|
|
62
56
|
* @returns The mostly-plain object with handle objects within
|
|
63
57
|
*/
|
|
64
|
-
export function parseHandles(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
) {
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
69
|
-
return value !== undefined ? serializer.parse(JSON.stringify(value)) : value;
|
|
58
|
+
export function parseHandles(value: any, serializer: IFluidSerializer) {
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
60
|
+
return value !== undefined ? serializer.parse(JSON.stringify(value)) : value;
|
|
70
61
|
}
|
|
71
62
|
|
|
72
63
|
/**
|
|
@@ -75,8 +66,11 @@ export function parseHandles(
|
|
|
75
66
|
* @param content - blob content
|
|
76
67
|
* @returns The summary containing the blob
|
|
77
68
|
*/
|
|
78
|
-
export function createSingleBlobSummary(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
export function createSingleBlobSummary(
|
|
70
|
+
key: string,
|
|
71
|
+
content: string | Uint8Array,
|
|
72
|
+
): ISummaryTreeWithStats {
|
|
73
|
+
const builder = new SummaryTreeBuilder();
|
|
74
|
+
builder.addBlob(key, content);
|
|
75
|
+
return builder.getSummaryTree();
|
|
82
76
|
}
|
package/src/valueType.ts
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
* enum representing the possible types of a shared object
|
|
8
8
|
*/
|
|
9
9
|
export enum ValueType {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The value is a shared object
|
|
12
|
+
* @deprecated Instead store the handle of the shared object, rather than the shared object itself.
|
|
13
|
+
*/
|
|
14
|
+
Shared,
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
/**
|
|
17
|
+
* The value is a plain JavaScript object or handle. If a plain object, it may contain handles deeper within.
|
|
18
|
+
*/
|
|
19
|
+
Plain,
|
|
20
20
|
}
|
package/tsconfig.esnext.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "./lib",
|
|
5
|
+
"module": "esnext",
|
|
6
|
+
},
|
|
7
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
"include": [
|
|
12
|
-
"src/**/*"
|
|
13
|
-
]
|
|
2
|
+
"extends": "@fluidframework/build-common/ts-common-config.json",
|
|
3
|
+
"exclude": ["src/test/**/*"],
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"composite": true,
|
|
8
|
+
},
|
|
9
|
+
"include": ["src/**/*"],
|
|
14
10
|
}
|