@fluidframework/datastore 2.0.0-internal.1.2.0.93071 → 2.0.0-internal.1.2.2
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/dist/dataStoreRuntime.d.ts +20 -4
- package/dist/dataStoreRuntime.d.ts.map +1 -1
- package/dist/dataStoreRuntime.js +43 -17
- package/dist/dataStoreRuntime.js.map +1 -1
- package/dist/fluidHandle.d.ts +3 -0
- package/dist/fluidHandle.d.ts.map +1 -1
- package/dist/fluidHandle.js +7 -3
- package/dist/fluidHandle.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/lib/dataStoreRuntime.d.ts +20 -4
- package/lib/dataStoreRuntime.d.ts.map +1 -1
- package/lib/dataStoreRuntime.js +44 -18
- package/lib/dataStoreRuntime.js.map +1 -1
- package/lib/fluidHandle.d.ts +3 -0
- package/lib/fluidHandle.d.ts.map +1 -1
- package/lib/fluidHandle.js +7 -3
- package/lib/fluidHandle.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +16 -20
- package/src/dataStoreRuntime.ts +46 -17
- package/src/fluidHandle.ts +7 -3
- package/src/packageVersion.ts +1 -1
package/lib/fluidHandle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidHandle.js","sourceRoot":"","sources":["../src/fluidHandle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"fluidHandle.js","sourceRoot":"","sources":["../src/fluidHandle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,MAAM,OAAO,iBAAiB;IAkC1B;;;;;OAKG;IACH,YACuB,KAAqB,EACxB,IAAY,EACZ,YAAiC;QAF9B,UAAK,GAAL,KAAK,CAAgB;QACxB,SAAI,GAAJ,IAAI,CAAQ;QACZ,iBAAY,GAAZ,YAAY,CAAqB;QA1CpC,gCAA2B,GAAsB,IAAI,GAAG,EAAE,CAAC;QA4B5E;;WAEG;QACK,mBAAc,GAAY,KAAK,CAAC;QAapC,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;IA1CD,IAAW,YAAY,KAAmB,OAAO,IAAI,CAAC,CAAC,CAAC;IAExD,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAY,OAAO;QACf;;;;;;;;;;;WAWG;QACH,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC;IAClD,CAAC;IAqBM,KAAK,CAAC,GAAG;QACZ,yGAAyG;QACzG,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,WAAW;QACd,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO;SACV;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChD,MAAM,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAEM,IAAI,CAAC,MAAoB;QAC5B,8EAA8E;QAC9E,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;SACV;QACD,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;CACJ","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IFluidHandle,\n IFluidHandleContext,\n FluidObject,\n} from \"@fluidframework/core-interfaces\";\nimport { generateHandleContextPath } from \"@fluidframework/runtime-utils\";\n\nexport class FluidObjectHandle<T extends FluidObject = FluidObject> implements IFluidHandle {\n private readonly pendingHandlesToMakeVisible: Set<IFluidHandle> = new Set();\n public readonly absolutePath: string;\n\n public get IFluidHandle(): IFluidHandle { return this; }\n\n public get isAttached(): boolean {\n return this.routeContext.isAttached;\n }\n\n /**\n * Tells whether the object of this handle is visible in the container locally or globally.\n */\n private get visible(): boolean {\n /**\n * If the object of this handle is attached, it is visible in the container. Ideally, checking local visibility\n * should be enough for a handle. However, there are scenarios where the object becomes locally visible but the\n * handle does not know this - This will happen is attachGraph is never called on the handle. Couple of examples\n * where this can happen:\n *\n * 1. Handles to DDS other than the default handle won't know if the DDS becomes visible after the handle was\n * created.\n *\n * 2. Handles to root data stores will never know that it was visible because the handle will not be stores in\n * another DDS and so, attachGraph will never be called on it.\n */\n return this.isAttached || this.locallyVisible;\n }\n\n /**\n * Tracks whether this handle is locally visible in the container.\n */\n private locallyVisible: boolean = false;\n\n /**\n * Creates a new FluidObjectHandle.\n * @param value - The FluidObject object this handle is for.\n * @param path - The path to this handle relative to the routeContext.\n * @param routeContext - The parent IFluidHandleContext that has a route to this handle.\n */\n constructor(\n protected readonly value: T | Promise<T>,\n public readonly path: string,\n public readonly routeContext: IFluidHandleContext,\n ) {\n this.absolutePath = generateHandleContextPath(path, this.routeContext);\n }\n\n public async get(): Promise<any> {\n // Note that this return works whether we received a T or a Promise<T> for this.value in the constructor.\n return this.value;\n }\n\n public attachGraph(): void {\n if (this.visible) {\n return;\n }\n\n this.locallyVisible = true;\n this.pendingHandlesToMakeVisible.forEach((handle) => {\n handle.attachGraph();\n });\n this.pendingHandlesToMakeVisible.clear();\n this.routeContext.attachGraph();\n }\n\n public bind(handle: IFluidHandle) {\n // If this handle is visible, attach the graph of the incoming handle as well.\n if (this.visible) {\n handle.attachGraph();\n return;\n }\n this.pendingHandlesToMakeVisible.add(handle);\n }\n}\n"]}
|
package/lib/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/datastore";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-internal.1.2.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.1.2.2";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,8BAA8B,CAAC;AACnD,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,8BAA8B,CAAC;AACnD,eAAO,MAAM,UAAU,yBAAyB,CAAC"}
|
package/lib/packageVersion.js
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export const pkgName = "@fluidframework/datastore";
|
|
8
|
-
export const pkgVersion = "2.0.0-internal.1.2.
|
|
8
|
+
export const pkgVersion = "2.0.0-internal.1.2.2";
|
|
9
9
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,2BAA2B,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,2BAA2B,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/datastore\";\nexport const pkgVersion = \"2.0.0-internal.1.2.2\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/datastore",
|
|
3
|
-
"version": "2.0.0-internal.1.2.
|
|
3
|
+
"version": "2.0.0-internal.1.2.2",
|
|
4
4
|
"description": "Fluid data store implementation",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -63,18 +63,18 @@
|
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
65
65
|
"@fluidframework/common-utils": "^1.0.0",
|
|
66
|
-
"@fluidframework/container-definitions": "2.0.0-internal.1.2.
|
|
67
|
-
"@fluidframework/container-utils": "2.0.0-internal.1.2.
|
|
68
|
-
"@fluidframework/core-interfaces": "2.0.0-internal.1.2.
|
|
69
|
-
"@fluidframework/datastore-definitions": "2.0.0-internal.1.2.
|
|
70
|
-
"@fluidframework/driver-definitions": "2.0.0-internal.1.2.
|
|
71
|
-
"@fluidframework/driver-utils": "2.0.0-internal.1.2.
|
|
72
|
-
"@fluidframework/garbage-collector": "2.0.0-internal.1.2.
|
|
73
|
-
"@fluidframework/protocol-base": "^0.1037.
|
|
66
|
+
"@fluidframework/container-definitions": "^2.0.0-internal.1.2.2",
|
|
67
|
+
"@fluidframework/container-utils": "^2.0.0-internal.1.2.2",
|
|
68
|
+
"@fluidframework/core-interfaces": "^2.0.0-internal.1.2.2",
|
|
69
|
+
"@fluidframework/datastore-definitions": "^2.0.0-internal.1.2.2",
|
|
70
|
+
"@fluidframework/driver-definitions": "^2.0.0-internal.1.2.2",
|
|
71
|
+
"@fluidframework/driver-utils": "^2.0.0-internal.1.2.2",
|
|
72
|
+
"@fluidframework/garbage-collector": "^2.0.0-internal.1.2.2",
|
|
73
|
+
"@fluidframework/protocol-base": "^0.1037.2001",
|
|
74
74
|
"@fluidframework/protocol-definitions": "^1.0.0",
|
|
75
|
-
"@fluidframework/runtime-definitions": "2.0.0-internal.1.2.
|
|
76
|
-
"@fluidframework/runtime-utils": "2.0.0-internal.1.2.
|
|
77
|
-
"@fluidframework/telemetry-utils": "2.0.0-internal.1.2.
|
|
75
|
+
"@fluidframework/runtime-definitions": "^2.0.0-internal.1.2.2",
|
|
76
|
+
"@fluidframework/runtime-utils": "^2.0.0-internal.1.2.2",
|
|
77
|
+
"@fluidframework/telemetry-utils": "^2.0.0-internal.1.2.2",
|
|
78
78
|
"lodash": "^4.17.21",
|
|
79
79
|
"uuid": "^8.3.1"
|
|
80
80
|
},
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
"@fluidframework/build-common": "^1.0.0",
|
|
83
83
|
"@fluidframework/build-tools": "^0.4.4000",
|
|
84
84
|
"@fluidframework/datastore-previous": "npm:@fluidframework/datastore@^1.0.0",
|
|
85
|
-
"@fluidframework/eslint-config-fluid": "^0.
|
|
86
|
-
"@fluidframework/mocha-test-setup": "2.0.0-internal.1.2.
|
|
87
|
-
"@fluidframework/test-runtime-utils": "2.0.0-internal.1.2.
|
|
85
|
+
"@fluidframework/eslint-config-fluid": "^1.0.0",
|
|
86
|
+
"@fluidframework/mocha-test-setup": "^2.0.0-internal.1.2.2",
|
|
87
|
+
"@fluidframework/test-runtime-utils": "^2.0.0-internal.1.2.2",
|
|
88
88
|
"@microsoft/api-extractor": "^7.22.2",
|
|
89
89
|
"@rushstack/eslint-config": "^2.5.1",
|
|
90
90
|
"@types/mocha": "^9.1.1",
|
|
@@ -102,10 +102,6 @@
|
|
|
102
102
|
},
|
|
103
103
|
"typeValidation": {
|
|
104
104
|
"version": "2.0.0",
|
|
105
|
-
"broken": {
|
|
106
|
-
"ClassDeclaration_FluidDataStoreRuntime": {
|
|
107
|
-
"backCompat": false
|
|
108
|
-
}
|
|
109
|
-
}
|
|
105
|
+
"broken": {}
|
|
110
106
|
}
|
|
111
107
|
}
|
package/src/dataStoreRuntime.ts
CHANGED
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
IQuorumClients,
|
|
41
41
|
} from "@fluidframework/protocol-definitions";
|
|
42
42
|
import {
|
|
43
|
+
BindState,
|
|
43
44
|
CreateSummarizerNodeSource,
|
|
44
45
|
IAttachMessage,
|
|
45
46
|
IEnvelope,
|
|
@@ -154,6 +155,7 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
154
155
|
private readonly contextsDeferred = new Map<string, Deferred<IChannelContext>>();
|
|
155
156
|
private readonly pendingAttach = new Map<string, IAttachMessage>();
|
|
156
157
|
|
|
158
|
+
private bindState: BindState;
|
|
157
159
|
private readonly deferredAttached = new Deferred<void>();
|
|
158
160
|
private readonly localChannelContextQueue = new Map<string, LocalChannelContextBase>();
|
|
159
161
|
private readonly notBoundedChannelContextSet = new Set<string>();
|
|
@@ -264,15 +266,19 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
264
266
|
}
|
|
265
267
|
|
|
266
268
|
this.attachListener();
|
|
269
|
+
// If exists on storage or loaded from a snapshot, it should already be bound.
|
|
270
|
+
this.bindState = existing ? BindState.Bound : BindState.NotBound;
|
|
267
271
|
this._attachState = dataStoreContext.attachState;
|
|
268
272
|
|
|
269
273
|
/**
|
|
270
274
|
* If existing flag is false, this is a new data store and is not visible. The existing flag can be true in two
|
|
271
275
|
* conditions:
|
|
276
|
+
*
|
|
272
277
|
* 1. It's a local data store that is created when a detached container is rehydrated. In this case, the data
|
|
273
|
-
*
|
|
278
|
+
* store is locally visible because the snapshot it is loaded from contains locally visible data stores only.
|
|
279
|
+
*
|
|
274
280
|
* 2. It's a remote data store that is created when an attached container is loaded is loaded from snapshot or
|
|
275
|
-
*
|
|
281
|
+
* when an attach op comes in. In both these cases, the data store is already globally visible.
|
|
276
282
|
*/
|
|
277
283
|
if (existing) {
|
|
278
284
|
this.visibilityState = dataStoreContext.attachState === AttachState.Detached
|
|
@@ -418,11 +424,14 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
418
424
|
|
|
419
425
|
/**
|
|
420
426
|
* This function is called when a data store becomes root. It does the following:
|
|
427
|
+
*
|
|
421
428
|
* 1. Marks the data store locally visible in the container.
|
|
429
|
+
*
|
|
422
430
|
* 2. Attaches the graph of all the handles bound to it.
|
|
431
|
+
*
|
|
423
432
|
* 3. Calls into the data store context to mark it visible in the container too. If the container is globally
|
|
424
|
-
*
|
|
425
|
-
*
|
|
433
|
+
* visible, it will mark us globally visible. Otherwise, it will mark us globally visible when it becomes
|
|
434
|
+
* globally visible.
|
|
426
435
|
*/
|
|
427
436
|
public makeVisibleAndAttachGraph() {
|
|
428
437
|
if (this.visibilityState !== VisibilityState.NotVisible) {
|
|
@@ -434,7 +443,7 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
434
443
|
handle.attachGraph();
|
|
435
444
|
});
|
|
436
445
|
this.pendingHandlesToMakeVisible.clear();
|
|
437
|
-
this.
|
|
446
|
+
this.bindToContext();
|
|
438
447
|
}
|
|
439
448
|
|
|
440
449
|
/**
|
|
@@ -444,6 +453,22 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
444
453
|
this.makeVisibleAndAttachGraph();
|
|
445
454
|
}
|
|
446
455
|
|
|
456
|
+
/**
|
|
457
|
+
* @deprecated - Not necessary if consumers add a new dataStore to the container by storing its handle.
|
|
458
|
+
* Binds this runtime to the container
|
|
459
|
+
* This includes the following:
|
|
460
|
+
* 1. Sending an Attach op that includes all existing state
|
|
461
|
+
* 2. Attaching the graph if the data store becomes attached.
|
|
462
|
+
*/
|
|
463
|
+
public bindToContext() {
|
|
464
|
+
if (this.bindState !== BindState.NotBound) {
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
this.bindState = BindState.Binding;
|
|
468
|
+
this.dataStoreContext.bindToContext();
|
|
469
|
+
this.bindState = BindState.Bound;
|
|
470
|
+
}
|
|
471
|
+
|
|
447
472
|
public bind(handle: IFluidHandle): void {
|
|
448
473
|
// If visible, attach the incoming handle's graph. Else, this will be done when we become visible.
|
|
449
474
|
if (this.visibilityState !== VisibilityState.NotVisible) {
|
|
@@ -599,11 +624,15 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
599
624
|
* Generates data used for garbage collection. This includes a list of GC nodes that represent this channel
|
|
600
625
|
* including any of its child channel contexts. Each node has a set of outbound routes to other GC nodes in the
|
|
601
626
|
* document. It does the following:
|
|
627
|
+
*
|
|
602
628
|
* 1. Calls into each child context to get its GC data.
|
|
629
|
+
*
|
|
603
630
|
* 2. Prefixes the child context's id to the GC nodes in the child's GC data. This makes sure that the node can be
|
|
604
|
-
*
|
|
631
|
+
* identified as belonging to the child.
|
|
632
|
+
*
|
|
605
633
|
* 3. Adds a GC node for this channel to the nodes received from the children. All these nodes together represent
|
|
606
|
-
*
|
|
634
|
+
* the GC data of this channel.
|
|
635
|
+
*
|
|
607
636
|
* @param fullGC - true to bypass optimizations and force full generation of GC data.
|
|
608
637
|
*/
|
|
609
638
|
public async getGCData(fullGC: boolean = false): Promise<IGarbageCollectionData> {
|
|
@@ -715,21 +744,21 @@ IFluidDataStoreChannel, IFluidDataStoreRuntime, IFluidHandleContext {
|
|
|
715
744
|
* back-compat 0.59.1000 - getAttachSummary() is called when making a data store globally visible (previously
|
|
716
745
|
* attaching state). Ideally, attachGraph() should have already be called making it locally visible. However,
|
|
717
746
|
* before visibility state was added, this may not have been the case and getAttachSummary() could be called:
|
|
718
|
-
*
|
|
719
|
-
*
|
|
747
|
+
*
|
|
748
|
+
* 1. Before attaching the data store - When a detached container is attached.
|
|
749
|
+
*
|
|
750
|
+
* 2. After attaching the data store - When a data store is created and bound in an attached container.
|
|
720
751
|
*
|
|
721
752
|
* The basic idea is that all local object should become locally visible before they are globally visible.
|
|
722
753
|
*/
|
|
723
754
|
this.attachGraph();
|
|
724
755
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
* );
|
|
732
|
-
*/
|
|
756
|
+
// This assert cannot be added now due to back-compat. To be uncommented when the following issue is fixed -
|
|
757
|
+
// https://github.com/microsoft/FluidFramework/issues/9688.
|
|
758
|
+
//
|
|
759
|
+
// assert(this.visibilityState === VisibilityState.LocallyVisible,
|
|
760
|
+
// "The data store should be locally visible when generating attach summary",
|
|
761
|
+
// );
|
|
733
762
|
|
|
734
763
|
const summaryBuilder = new SummaryTreeBuilder();
|
|
735
764
|
|
package/src/fluidHandle.ts
CHANGED
|
@@ -29,15 +29,19 @@ export class FluidObjectHandle<T extends FluidObject = FluidObject> implements I
|
|
|
29
29
|
* should be enough for a handle. However, there are scenarios where the object becomes locally visible but the
|
|
30
30
|
* handle does not know this - This will happen is attachGraph is never called on the handle. Couple of examples
|
|
31
31
|
* where this can happen:
|
|
32
|
+
*
|
|
32
33
|
* 1. Handles to DDS other than the default handle won't know if the DDS becomes visible after the handle was
|
|
33
|
-
*
|
|
34
|
+
* created.
|
|
35
|
+
*
|
|
34
36
|
* 2. Handles to root data stores will never know that it was visible because the handle will not be stores in
|
|
35
|
-
*
|
|
37
|
+
* another DDS and so, attachGraph will never be called on it.
|
|
36
38
|
*/
|
|
37
39
|
return this.isAttached || this.locallyVisible;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Tracks whether this handle is locally visible in the container.
|
|
44
|
+
*/
|
|
41
45
|
private locallyVisible: boolean = false;
|
|
42
46
|
|
|
43
47
|
/**
|
package/src/packageVersion.ts
CHANGED