@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.
@@ -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;IA8B1B;;;;;OAKG;IACH,YACuB,KAAqB,EACxB,IAAY,EACZ,YAAiC;QAF9B,UAAK,GAAL,KAAK,CAAgB;QACxB,SAAI,GAAJ,IAAI,CAAQ;QACZ,iBAAY,GAAZ,YAAY,CAAqB;QAtCpC,gCAA2B,GAAsB,IAAI,GAAG,EAAE,CAAC;QA0B5E,kEAAkE;QAC1D,mBAAc,GAAY,KAAK,CAAC;QAapC,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;IAtCD,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;;;;;;;;;WASG;QACH,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC;IAClD,CAAC;IAmBM,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 * 1. Handles to DDS other than the default handle won't know if the DDS becomes visible after the handle was\n * created.\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 // Tracks whether this handle is locally visible in the container.\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"]}
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"]}
@@ -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.0.93071";
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,+BAA+B,CAAC"}
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"}
@@ -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.0.93071";
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,4BAA4B,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.0.93071\";\n"]}
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.0.93071",
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.0.93071",
67
- "@fluidframework/container-utils": "2.0.0-internal.1.2.0.93071",
68
- "@fluidframework/core-interfaces": "2.0.0-internal.1.2.0.93071",
69
- "@fluidframework/datastore-definitions": "2.0.0-internal.1.2.0.93071",
70
- "@fluidframework/driver-definitions": "2.0.0-internal.1.2.0.93071",
71
- "@fluidframework/driver-utils": "2.0.0-internal.1.2.0.93071",
72
- "@fluidframework/garbage-collector": "2.0.0-internal.1.2.0.93071",
73
- "@fluidframework/protocol-base": "^0.1037.2000-91174",
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.0.93071",
76
- "@fluidframework/runtime-utils": "2.0.0-internal.1.2.0.93071",
77
- "@fluidframework/telemetry-utils": "2.0.0-internal.1.2.0.93071",
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.28.2000",
86
- "@fluidframework/mocha-test-setup": "2.0.0-internal.1.2.0.93071",
87
- "@fluidframework/test-runtime-utils": "2.0.0-internal.1.2.0.93071",
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
  }
@@ -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
- * store is locally visible because the snapshot it is loaded from contains locally visible data stores only.
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
- * when an attach op comes in. In both these cases, the data store is already globally visible.
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
- * visible, it will mark us globally visible. Otherwise, it will mark us globally visible when it becomes
425
- * globally visible.
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.dataStoreContext.makeLocallyVisible();
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
- * identified as belonging to the child.
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
- * the GC data of this channel.
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
- * 1) Before attaching the data store - When a detached container is attached.
719
- * 2) After attaching the data store - When a data store is created and bound in an attached container.
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
- * This assert cannot be added now due to back-compat. To be uncommented when the following issue is fixed -
727
- * https://github.com/microsoft/FluidFramework/issues/9688.
728
- *
729
- * assert(this.visibilityState === VisibilityState.LocallyVisible,
730
- * "The data store should be locally visible when generating attach summary",
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
 
@@ -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
- * created.
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
- * another DDS and so, attachGraph will never be called on it.
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
- // Tracks whether this handle is locally visible in the container.
42
+ /**
43
+ * Tracks whether this handle is locally visible in the container.
44
+ */
41
45
  private locallyVisible: boolean = false;
42
46
 
43
47
  /**
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/datastore";
9
- export const pkgVersion = "2.0.0-internal.1.2.0.93071";
9
+ export const pkgVersion = "2.0.0-internal.1.2.2";