@fluid-experimental/last-edited 2.0.0-internal.2.2.1 → 2.0.0-internal.2.3.1

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.
@@ -17,7 +17,7 @@ export declare class LastEditedTracker implements IFluidLastEditedTracker {
17
17
  * @param sharedSummaryBlock - The shared summary block where the details will be stored.
18
18
  */
19
19
  constructor(sharedSummaryBlock: SharedSummaryBlock);
20
- get IFluidLastEditedTracker(): this;
20
+ get IFluidLastEditedTracker(): LastEditedTracker;
21
21
  /**
22
22
  * {@inheritDoc (IFluidLastEditedTracker:interface).getLastEditDetails}
23
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTracker.d.ts","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAOjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAN/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwB;IAE7D;;;OAGG;gBAC0B,kBAAkB,EAAE,kBAAkB;IAEnE,IAAW,uBAAuB,SAEjC;IAED;;OAEG;IACI,kBAAkB,IAAI,gBAAgB,GAAG,SAAS;IAIzD;;OAEG;IACI,qBAAqB,CAAC,eAAe,EAAE,gBAAgB;CAGjE"}
1
+ {"version":3,"file":"lastEditedTracker.d.ts","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAOjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAN/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwB;IAE7D;;;OAGG;gBAC0B,kBAAkB,EAAE,kBAAkB;IAEnE,IAAW,uBAAuB,IAAI,iBAAiB,CAEtD;IAED;;OAEG;IACI,kBAAkB,IAAI,gBAAgB,GAAG,SAAS;IAIzD;;OAEG;IACI,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI;CAGxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTracker.js","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKH;;;;GAIG;AACH,MAAa,iBAAiB;IAG1B;;;OAGG;IACH,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QANlD,yBAAoB,GAAG,oBAAoB,CAAC;IAMU,CAAC;IAExE,IAAW,uBAAuB;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,kBAAkB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAmB,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,eAAiC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC;CACJ;AA1BD,8CA0BC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { IFluidLastEditedTracker, ILastEditDetails } from \"./interfaces\";\n\n/**\n * Tracks the last edit details such as the last edited user details and the last edited timestamp. The last edited\n * details should be updated (via updateLastEditDetails) in response to a remote op since it uses shared summary block\n * as storage.\n */\nexport class LastEditedTracker implements IFluidLastEditedTracker {\n private readonly lastEditedDetailsKey = \"lastEditDetailsKey\";\n\n /**\n * Creates a LastEditedTracker object.\n * @param sharedSummaryBlock - The shared summary block where the details will be stored.\n */\n constructor(private readonly sharedSummaryBlock: SharedSummaryBlock) { }\n\n public get IFluidLastEditedTracker() {\n return this;\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).getLastEditDetails}\n */\n public getLastEditDetails(): ILastEditDetails | undefined {\n return this.sharedSummaryBlock.get<ILastEditDetails>(this.lastEditedDetailsKey);\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).updateLastEditDetails}\n */\n public updateLastEditDetails(lastEditDetails: ILastEditDetails) {\n this.sharedSummaryBlock.set(this.lastEditedDetailsKey, lastEditDetails);\n }\n}\n"]}
1
+ {"version":3,"file":"lastEditedTracker.js","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKH;;;;GAIG;AACH,MAAa,iBAAiB;IAG1B;;;OAGG;IACH,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QANlD,yBAAoB,GAAG,oBAAoB,CAAC;IAMU,CAAC;IAExE,IAAW,uBAAuB;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,kBAAkB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAmB,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,eAAiC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC;CACJ;AA1BD,8CA0BC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { IFluidLastEditedTracker, ILastEditDetails } from \"./interfaces\";\n\n/**\n * Tracks the last edit details such as the last edited user details and the last edited timestamp. The last edited\n * details should be updated (via updateLastEditDetails) in response to a remote op since it uses shared summary block\n * as storage.\n */\nexport class LastEditedTracker implements IFluidLastEditedTracker {\n private readonly lastEditedDetailsKey = \"lastEditDetailsKey\";\n\n /**\n * Creates a LastEditedTracker object.\n * @param sharedSummaryBlock - The shared summary block where the details will be stored.\n */\n constructor(private readonly sharedSummaryBlock: SharedSummaryBlock) { }\n\n public get IFluidLastEditedTracker(): LastEditedTracker {\n return this;\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).getLastEditDetails}\n */\n public getLastEditDetails(): ILastEditDetails | undefined {\n return this.sharedSummaryBlock.get<ILastEditDetails>(this.lastEditedDetailsKey);\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).updateLastEditDetails}\n */\n public updateLastEditDetails(lastEditDetails: ILastEditDetails): void {\n this.sharedSummaryBlock.set(this.lastEditedDetailsKey, lastEditDetails);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTrackerDataObject.d.ts","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,UAC7C,YAAW,8BAA8B;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAOzB;WAEQ,UAAU,IAAI,iBAAiB,CAAC,2BAA2B,CAAC;IAI1E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,kBAAkB,CAAgC;IAE1D,OAAO,KAAK,iBAAiB,GAM5B;IAED,IAAW,uBAAuB,sBAAqC;cAEvD,qBAAqB;cAKrB,cAAc;CAMjC"}
1
+ {"version":3,"file":"lastEditedTrackerDataObject.d.ts","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,UAC7C,YAAW,8BAA8B;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAOzB;WAEQ,UAAU,IAAI,iBAAiB,CAAC,2BAA2B,CAAC;IAI1E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,kBAAkB,CAAgC;IAE1D,OAAO,KAAK,iBAAiB,GAM5B;IAED,IAAW,uBAAuB,IAAI,iBAAiB,CAAmC;cAE1E,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;cAKtC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTrackerDataObject.js","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAAyE;AAEzE,+EAA0E;AAC1E,2DAAwD;AAGxD;;GAEG;AACH,MAAa,2BAA4B,SAAQ,qBAAU;IAA3D;;QAeqB,yBAAoB,GAAG,yBAAyB,CAAC;IAwBtE,CAAC;IA5BU,MAAM,CAAC,UAAU;QACpB,OAAO,2BAA2B,CAAC,OAAO,CAAC;IAC/C,CAAC;IAKD,IAAY,iBAAiB;QACzB,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAW,uBAAuB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,qBAAqB;QACjC,MAAM,kBAAkB,GAAG,yCAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAES,KAAK,CAAC,cAAc;QAC1B,MAAM,kBAAkB;QACpB,oEAAoE;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmC,IAAI,CAAC,oBAAoB,CAAE,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxE,CAAC;;AAtCL,kEAuCC;AArC2B,mCAAO,GAC3B,IAAI,4BAAiB,CACjB,iCAAiC,EACjC,2BAA2B,EAC3B,CAAC,yCAAkB,CAAC,UAAU,EAAE,CAAC,EACjC,EAAE,EACF,SAAS,CACZ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { LastEditedTracker } from \"./lastEditedTracker\";\nimport { IProvideFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * LastEditedTrackerDataObject creates a LastEditedTracker that keeps track of the latest edits to the document.\n */\nexport class LastEditedTrackerDataObject extends DataObject\n implements IProvideFluidLastEditedTracker {\n private static readonly factory: DataObjectFactory<LastEditedTrackerDataObject> =\n new DataObjectFactory(\n \"@fluid-experimental/last-edited\",\n LastEditedTrackerDataObject,\n [SharedSummaryBlock.getFactory()],\n {},\n undefined,\n );\n\n public static getFactory(): DataObjectFactory<LastEditedTrackerDataObject> {\n return LastEditedTrackerDataObject.factory;\n }\n\n private readonly sharedSummaryBlockId = \"shared-summary-block-id\";\n private _lastEditedTracker: LastEditedTracker | undefined;\n\n private get lastEditedTracker() {\n if (this._lastEditedTracker === undefined) {\n throw new Error(\"Last Edited tracker was not initialized properly\");\n }\n\n return this._lastEditedTracker;\n }\n\n public get IFluidLastEditedTracker() { return this.lastEditedTracker; }\n\n protected async initializingFirstTime() {\n const sharedSummaryBlock = SharedSummaryBlock.create(this.runtime);\n this.root.set(this.sharedSummaryBlockId, sharedSummaryBlock.handle);\n }\n\n protected async hasInitialized() { // hasInitialized\n const sharedSummaryBlock =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n await this.root.get<IFluidHandle<SharedSummaryBlock>>(this.sharedSummaryBlockId)!.get();\n this._lastEditedTracker = new LastEditedTracker(sharedSummaryBlock);\n }\n}\n"]}
1
+ {"version":3,"file":"lastEditedTrackerDataObject.js","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAAyE;AAEzE,+EAA0E;AAC1E,2DAAwD;AAGxD;;GAEG;AACH,MAAa,2BAA4B,SAAQ,qBAAU;IAA3D;;QAeqB,yBAAoB,GAAG,yBAAyB,CAAC;IAwBtE,CAAC;IA5BU,MAAM,CAAC,UAAU;QACpB,OAAO,2BAA2B,CAAC,OAAO,CAAC;IAC/C,CAAC;IAKD,IAAY,iBAAiB;QACzB,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAW,uBAAuB,KAAwB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEhF,KAAK,CAAC,qBAAqB;QACjC,MAAM,kBAAkB,GAAG,yCAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAES,KAAK,CAAC,cAAc;QAC1B,MAAM,kBAAkB;QACpB,oEAAoE;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmC,IAAI,CAAC,oBAAoB,CAAE,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxE,CAAC;;AAtCL,kEAuCC;AArC2B,mCAAO,GAC3B,IAAI,4BAAiB,CACjB,iCAAiC,EACjC,2BAA2B,EAC3B,CAAC,yCAAkB,CAAC,UAAU,EAAE,CAAC,EACjC,EAAE,EACF,SAAS,CACZ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { LastEditedTracker } from \"./lastEditedTracker\";\nimport { IProvideFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * LastEditedTrackerDataObject creates a LastEditedTracker that keeps track of the latest edits to the document.\n */\nexport class LastEditedTrackerDataObject extends DataObject\n implements IProvideFluidLastEditedTracker {\n private static readonly factory: DataObjectFactory<LastEditedTrackerDataObject> =\n new DataObjectFactory(\n \"@fluid-experimental/last-edited\",\n LastEditedTrackerDataObject,\n [SharedSummaryBlock.getFactory()],\n {},\n undefined,\n );\n\n public static getFactory(): DataObjectFactory<LastEditedTrackerDataObject> {\n return LastEditedTrackerDataObject.factory;\n }\n\n private readonly sharedSummaryBlockId = \"shared-summary-block-id\";\n private _lastEditedTracker: LastEditedTracker | undefined;\n\n private get lastEditedTracker(): LastEditedTracker {\n if (this._lastEditedTracker === undefined) {\n throw new Error(\"Last Edited tracker was not initialized properly\");\n }\n\n return this._lastEditedTracker;\n }\n\n public get IFluidLastEditedTracker(): LastEditedTracker { return this.lastEditedTracker; }\n\n protected async initializingFirstTime(): Promise<void> {\n const sharedSummaryBlock = SharedSummaryBlock.create(this.runtime);\n this.root.set(this.sharedSummaryBlockId, sharedSummaryBlock.handle);\n }\n\n protected async hasInitialized(): Promise<void> {\n const sharedSummaryBlock =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n await this.root.get<IFluidHandle<SharedSummaryBlock>>(this.sharedSummaryBlockId)!.get();\n this._lastEditedTracker = new LastEditedTracker(sharedSummaryBlock);\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 = "@fluid-experimental/last-edited";
8
- export declare const pkgVersion = "2.0.0-internal.2.2.1";
8
+ export declare const pkgVersion = "2.0.0-internal.2.3.1";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -8,5 +8,5 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.pkgVersion = exports.pkgName = void 0;
10
10
  exports.pkgName = "@fluid-experimental/last-edited";
11
- exports.pkgVersion = "2.0.0-internal.2.2.1";
11
+ exports.pkgVersion = "2.0.0-internal.2.3.1";
12
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,iCAAiC,CAAC;AAC5C,QAAA,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 = \"@fluid-experimental/last-edited\";\nexport const pkgVersion = \"2.0.0-internal.2.2.1\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,iCAAiC,CAAC;AAC5C,QAAA,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 = \"@fluid-experimental/last-edited\";\nexport const pkgVersion = \"2.0.0-internal.2.3.1\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yBAAyB,EAAkB,MAAM,sCAAsC,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAoB,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkCzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kCAAkC,CAC9C,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,iBAAiB,EAC1B,sBAAsB,GAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAqC,QAmBxG"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yBAAyB,EAAkB,MAAM,sCAAsC,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAoB,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkCzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kCAAkC,CAC9C,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,iBAAiB,EAC1B,sBAAsB,GAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAqC,GACtG,IAAI,CAkBN"}
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,yEAAyE;AAIzE;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,OAAkC,EAAE,EAAE,CACvE,OAAO,CAAC,IAAI,KAAK,wCAAoB,CAAC,MAAM;IAC5C,OAAO,CAAC,IAAI,KAAK,wCAAoB,CAAC,gBAAgB;IACtD,OAAO,CAAC,IAAI,KAAK,wCAAoB,CAAC,KAAK,CAAC;AAEhD;;;GAGG;AACH,SAAS,6BAA6B,CAClC,OAAkC,EAClC,MAAsB;IAEtB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,MAAM,eAAe,GAAqB;YACtC,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;QACF,OAAO,eAAe,CAAC;KAC1B;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,kCAAkC,CAC9C,iBAA0C,EAC1C,OAA0B,EAC1B,yBAA0E,2BAA2B;IAErG,+EAA+E;IAC/E,+CAA+C;IAC/C,8GAA8G;IAC9G,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAkC,EAAE,cAAwB,EAAE,EAAE;QAC9E,6EAA6E;QAC7E,IAAI,cAAc,KAAK,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE;YAC7D,OAAO;SACV;QAED,6EAA6E;QAC7E,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACpF,IAAI,eAAe,KAAK,SAAS,EAAE;YAC/B,OAAO;SACV;QAED,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC;AAtBD,gFAsBC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISequencedDocumentMessage, IQuorumClients } from \"@fluidframework/protocol-definitions\";\nimport { ContainerMessageType } from \"@fluidframework/container-runtime\";\nimport { IContainerRuntime } from \"@fluidframework/container-runtime-definitions\";\nimport { ILastEditDetails, IFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * Default implementation of {@link setupLastEditedTrackerForContainer}'s `shouldDiscardMessageFn` parameter,\n * which tells that all messages other than {@link @fluidframework/container-runtime#ContainerMessageType.Alias},\n * {@link @fluidframework/container-runtime#ContainerMessageType.Attach}, and\n * {@link @fluidframework/container-runtime#ContainerMessageType.FluidDataStoreOp} type messages should be\n * discarded.\n */\nconst shouldDiscardMessageDefault = (message: ISequencedDocumentMessage) =>\n message.type !== ContainerMessageType.Attach &&\n message.type !== ContainerMessageType.FluidDataStoreOp &&\n message.type !== ContainerMessageType.Alias;\n\n/**\n * Extracts the user information and timestamp from a message. Returns undefined if the user information for the\n * client who sent the message doesn't exist in the quorum.\n */\nfunction getLastEditDetailsFromMessage(\n message: ISequencedDocumentMessage,\n quorum: IQuorumClients,\n): ILastEditDetails | undefined {\n const sequencedClient = quorum.getMember(message.clientId);\n const user = sequencedClient?.client.user;\n if (user !== undefined) {\n const lastEditDetails: ILastEditDetails = {\n user,\n timestamp: message.timestamp,\n };\n return lastEditDetails;\n }\n return undefined;\n}\n\n/**\n * Helper function to set up a data object that provides IFluidLastEditedTracker to track last edited in a Container.\n *\n * It does the following:\n *\n * - Registers an \"op\" listener on the runtime. On each message, it calls the shouldDiscardMessageFn to check\n * if the message should be discarded. It also discards all scheduler message. If a message is not discarded,\n * it passes the last edited information from the message to the last edited tracker.\n *\n * - The last edited information from the last message received before the lastEditedTracker is\n * loaded is stored and passed to the tracker once it loads.\n * @param lastEditedTracker - The last edited tracker.\n * @param runtime - The container runtime whose messages are to be tracked.\n * @param shouldDiscardMessageFn - Function that tells if a message should not be considered in computing last edited.\n */\nexport function setupLastEditedTrackerForContainer(\n lastEditedTracker: IFluidLastEditedTracker,\n runtime: IContainerRuntime,\n shouldDiscardMessageFn: (message: ISequencedDocumentMessage) => boolean = shouldDiscardMessageDefault,\n) {\n // Register an op listener on the runtime. If the lastEditedTracker has loaded,\n // it passes the last edited information to its\n // last edited tracker. If the lastEditedTracker hasn't loaded, store the last edited information temporarily.\n runtime.on(\"op\", (message: ISequencedDocumentMessage, runtimeMessage?: boolean) => {\n // If this message should be discarded as per shouldDiscardMessageFn, return.\n if (runtimeMessage === false || shouldDiscardMessageFn(message)) {\n return;\n }\n\n // Get the last edited details from the message. If it doesn't exist, return.\n const lastEditDetails = getLastEditDetailsFromMessage(message, runtime.getQuorum());\n if (lastEditDetails === undefined) {\n return;\n }\n\n lastEditedTracker.updateLastEditDetails(lastEditDetails);\n });\n}\n"]}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,yEAAyE;AAIzE;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,OAAkC,EAAW,EAAE,CAChF,OAAO,CAAC,IAAI,KAAK,wCAAoB,CAAC,MAAM;IAC5C,OAAO,CAAC,IAAI,KAAK,wCAAoB,CAAC,gBAAgB;IACtD,OAAO,CAAC,IAAI,KAAK,wCAAoB,CAAC,KAAK,CAAC;AAEhD;;;GAGG;AACH,SAAS,6BAA6B,CAClC,OAAkC,EAClC,MAAsB;IAEtB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,MAAM,eAAe,GAAqB;YACtC,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;QACF,OAAO,eAAe,CAAC;KAC1B;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,kCAAkC,CAC9C,iBAA0C,EAC1C,OAA0B,EAC1B,yBAA0E,2BAA2B;IAErG,+EAA+E;IAC/E,+CAA+C;IAC/C,8GAA8G;IAC9G,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAkC,EAAE,cAAwB,EAAE,EAAE;QAC9E,6EAA6E;QAC7E,IAAI,cAAc,KAAK,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE;YAC7D,OAAO;SACV;QAED,6EAA6E;QAC7E,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACpF,IAAI,eAAe,KAAK,SAAS,EAAE;YAC/B,OAAO;SACV;QAED,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC;AAtBD,gFAsBC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISequencedDocumentMessage, IQuorumClients } from \"@fluidframework/protocol-definitions\";\nimport { ContainerMessageType } from \"@fluidframework/container-runtime\";\nimport { IContainerRuntime } from \"@fluidframework/container-runtime-definitions\";\nimport { ILastEditDetails, IFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * Default implementation of {@link setupLastEditedTrackerForContainer}'s `shouldDiscardMessageFn` parameter,\n * which tells that all messages other than {@link @fluidframework/container-runtime#ContainerMessageType.Alias},\n * {@link @fluidframework/container-runtime#ContainerMessageType.Attach}, and\n * {@link @fluidframework/container-runtime#ContainerMessageType.FluidDataStoreOp} type messages should be\n * discarded.\n */\nconst shouldDiscardMessageDefault = (message: ISequencedDocumentMessage): boolean =>\n message.type !== ContainerMessageType.Attach &&\n message.type !== ContainerMessageType.FluidDataStoreOp &&\n message.type !== ContainerMessageType.Alias;\n\n/**\n * Extracts the user information and timestamp from a message. Returns undefined if the user information for the\n * client who sent the message doesn't exist in the quorum.\n */\nfunction getLastEditDetailsFromMessage(\n message: ISequencedDocumentMessage,\n quorum: IQuorumClients,\n): ILastEditDetails | undefined {\n const sequencedClient = quorum.getMember(message.clientId);\n const user = sequencedClient?.client.user;\n if (user !== undefined) {\n const lastEditDetails: ILastEditDetails = {\n user,\n timestamp: message.timestamp,\n };\n return lastEditDetails;\n }\n return undefined;\n}\n\n/**\n * Helper function to set up a data object that provides IFluidLastEditedTracker to track last edited in a Container.\n *\n * It does the following:\n *\n * - Registers an \"op\" listener on the runtime. On each message, it calls the shouldDiscardMessageFn to check\n * if the message should be discarded. It also discards all scheduler message. If a message is not discarded,\n * it passes the last edited information from the message to the last edited tracker.\n *\n * - The last edited information from the last message received before the lastEditedTracker is\n * loaded is stored and passed to the tracker once it loads.\n * @param lastEditedTracker - The last edited tracker.\n * @param runtime - The container runtime whose messages are to be tracked.\n * @param shouldDiscardMessageFn - Function that tells if a message should not be considered in computing last edited.\n */\nexport function setupLastEditedTrackerForContainer(\n lastEditedTracker: IFluidLastEditedTracker,\n runtime: IContainerRuntime,\n shouldDiscardMessageFn: (message: ISequencedDocumentMessage) => boolean = shouldDiscardMessageDefault,\n): void {\n // Register an op listener on the runtime. If the lastEditedTracker has loaded,\n // it passes the last edited information to its\n // last edited tracker. If the lastEditedTracker hasn't loaded, store the last edited information temporarily.\n runtime.on(\"op\", (message: ISequencedDocumentMessage, runtimeMessage?: boolean) => {\n // If this message should be discarded as per shouldDiscardMessageFn, return.\n if (runtimeMessage === false || shouldDiscardMessageFn(message)) {\n return;\n }\n\n // Get the last edited details from the message. If it doesn't exist, return.\n const lastEditDetails = getLastEditDetailsFromMessage(message, runtime.getQuorum());\n if (lastEditDetails === undefined) {\n return;\n }\n\n lastEditedTracker.updateLastEditDetails(lastEditDetails);\n });\n}\n"]}
@@ -17,7 +17,7 @@ export declare class LastEditedTracker implements IFluidLastEditedTracker {
17
17
  * @param sharedSummaryBlock - The shared summary block where the details will be stored.
18
18
  */
19
19
  constructor(sharedSummaryBlock: SharedSummaryBlock);
20
- get IFluidLastEditedTracker(): this;
20
+ get IFluidLastEditedTracker(): LastEditedTracker;
21
21
  /**
22
22
  * {@inheritDoc (IFluidLastEditedTracker:interface).getLastEditDetails}
23
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTracker.d.ts","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAOjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAN/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwB;IAE7D;;;OAGG;gBAC0B,kBAAkB,EAAE,kBAAkB;IAEnE,IAAW,uBAAuB,SAEjC;IAED;;OAEG;IACI,kBAAkB,IAAI,gBAAgB,GAAG,SAAS;IAIzD;;OAEG;IACI,qBAAqB,CAAC,eAAe,EAAE,gBAAgB;CAGjE"}
1
+ {"version":3,"file":"lastEditedTracker.d.ts","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAOjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAN/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwB;IAE7D;;;OAGG;gBAC0B,kBAAkB,EAAE,kBAAkB;IAEnE,IAAW,uBAAuB,IAAI,iBAAiB,CAEtD;IAED;;OAEG;IACI,kBAAkB,IAAI,gBAAgB,GAAG,SAAS;IAIzD;;OAEG;IACI,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI;CAGxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTracker.js","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAG1B;;;OAGG;IACH,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QANlD,yBAAoB,GAAG,oBAAoB,CAAC;IAMU,CAAC;IAExE,IAAW,uBAAuB;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,kBAAkB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAmB,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,eAAiC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC;CACJ","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { IFluidLastEditedTracker, ILastEditDetails } from \"./interfaces\";\n\n/**\n * Tracks the last edit details such as the last edited user details and the last edited timestamp. The last edited\n * details should be updated (via updateLastEditDetails) in response to a remote op since it uses shared summary block\n * as storage.\n */\nexport class LastEditedTracker implements IFluidLastEditedTracker {\n private readonly lastEditedDetailsKey = \"lastEditDetailsKey\";\n\n /**\n * Creates a LastEditedTracker object.\n * @param sharedSummaryBlock - The shared summary block where the details will be stored.\n */\n constructor(private readonly sharedSummaryBlock: SharedSummaryBlock) { }\n\n public get IFluidLastEditedTracker() {\n return this;\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).getLastEditDetails}\n */\n public getLastEditDetails(): ILastEditDetails | undefined {\n return this.sharedSummaryBlock.get<ILastEditDetails>(this.lastEditedDetailsKey);\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).updateLastEditDetails}\n */\n public updateLastEditDetails(lastEditDetails: ILastEditDetails) {\n this.sharedSummaryBlock.set(this.lastEditedDetailsKey, lastEditDetails);\n }\n}\n"]}
1
+ {"version":3,"file":"lastEditedTracker.js","sourceRoot":"","sources":["../src/lastEditedTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAG1B;;;OAGG;IACH,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QANlD,yBAAoB,GAAG,oBAAoB,CAAC;IAMU,CAAC;IAExE,IAAW,uBAAuB;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,kBAAkB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAmB,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,eAAiC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC;CACJ","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { IFluidLastEditedTracker, ILastEditDetails } from \"./interfaces\";\n\n/**\n * Tracks the last edit details such as the last edited user details and the last edited timestamp. The last edited\n * details should be updated (via updateLastEditDetails) in response to a remote op since it uses shared summary block\n * as storage.\n */\nexport class LastEditedTracker implements IFluidLastEditedTracker {\n private readonly lastEditedDetailsKey = \"lastEditDetailsKey\";\n\n /**\n * Creates a LastEditedTracker object.\n * @param sharedSummaryBlock - The shared summary block where the details will be stored.\n */\n constructor(private readonly sharedSummaryBlock: SharedSummaryBlock) { }\n\n public get IFluidLastEditedTracker(): LastEditedTracker {\n return this;\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).getLastEditDetails}\n */\n public getLastEditDetails(): ILastEditDetails | undefined {\n return this.sharedSummaryBlock.get<ILastEditDetails>(this.lastEditedDetailsKey);\n }\n\n /**\n * {@inheritDoc (IFluidLastEditedTracker:interface).updateLastEditDetails}\n */\n public updateLastEditDetails(lastEditDetails: ILastEditDetails): void {\n this.sharedSummaryBlock.set(this.lastEditedDetailsKey, lastEditDetails);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTrackerDataObject.d.ts","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,UAC7C,YAAW,8BAA8B;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAOzB;WAEQ,UAAU,IAAI,iBAAiB,CAAC,2BAA2B,CAAC;IAI1E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,kBAAkB,CAAgC;IAE1D,OAAO,KAAK,iBAAiB,GAM5B;IAED,IAAW,uBAAuB,sBAAqC;cAEvD,qBAAqB;cAKrB,cAAc;CAMjC"}
1
+ {"version":3,"file":"lastEditedTrackerDataObject.d.ts","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,UAC7C,YAAW,8BAA8B;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAOzB;WAEQ,UAAU,IAAI,iBAAiB,CAAC,2BAA2B,CAAC;IAI1E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,kBAAkB,CAAgC;IAE1D,OAAO,KAAK,iBAAiB,GAM5B;IAED,IAAW,uBAAuB,IAAI,iBAAiB,CAAmC;cAE1E,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;cAKtC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"lastEditedTrackerDataObject.js","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,UAAU;IAA3D;;QAeqB,yBAAoB,GAAG,yBAAyB,CAAC;IAwBtE,CAAC;IA5BU,MAAM,CAAC,UAAU;QACpB,OAAO,2BAA2B,CAAC,OAAO,CAAC;IAC/C,CAAC;IAKD,IAAY,iBAAiB;QACzB,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAW,uBAAuB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,qBAAqB;QACjC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAES,KAAK,CAAC,cAAc;QAC1B,MAAM,kBAAkB;QACpB,oEAAoE;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmC,IAAI,CAAC,oBAAoB,CAAE,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxE,CAAC;;AApCuB,mCAAO,GAC3B,IAAI,iBAAiB,CACjB,iCAAiC,EACjC,2BAA2B,EAC3B,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,EACjC,EAAE,EACF,SAAS,CACZ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { LastEditedTracker } from \"./lastEditedTracker\";\nimport { IProvideFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * LastEditedTrackerDataObject creates a LastEditedTracker that keeps track of the latest edits to the document.\n */\nexport class LastEditedTrackerDataObject extends DataObject\n implements IProvideFluidLastEditedTracker {\n private static readonly factory: DataObjectFactory<LastEditedTrackerDataObject> =\n new DataObjectFactory(\n \"@fluid-experimental/last-edited\",\n LastEditedTrackerDataObject,\n [SharedSummaryBlock.getFactory()],\n {},\n undefined,\n );\n\n public static getFactory(): DataObjectFactory<LastEditedTrackerDataObject> {\n return LastEditedTrackerDataObject.factory;\n }\n\n private readonly sharedSummaryBlockId = \"shared-summary-block-id\";\n private _lastEditedTracker: LastEditedTracker | undefined;\n\n private get lastEditedTracker() {\n if (this._lastEditedTracker === undefined) {\n throw new Error(\"Last Edited tracker was not initialized properly\");\n }\n\n return this._lastEditedTracker;\n }\n\n public get IFluidLastEditedTracker() { return this.lastEditedTracker; }\n\n protected async initializingFirstTime() {\n const sharedSummaryBlock = SharedSummaryBlock.create(this.runtime);\n this.root.set(this.sharedSummaryBlockId, sharedSummaryBlock.handle);\n }\n\n protected async hasInitialized() { // hasInitialized\n const sharedSummaryBlock =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n await this.root.get<IFluidHandle<SharedSummaryBlock>>(this.sharedSummaryBlockId)!.get();\n this._lastEditedTracker = new LastEditedTracker(sharedSummaryBlock);\n }\n}\n"]}
1
+ {"version":3,"file":"lastEditedTrackerDataObject.js","sourceRoot":"","sources":["../src/lastEditedTrackerDataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,UAAU;IAA3D;;QAeqB,yBAAoB,GAAG,yBAAyB,CAAC;IAwBtE,CAAC;IA5BU,MAAM,CAAC,UAAU;QACpB,OAAO,2BAA2B,CAAC,OAAO,CAAC;IAC/C,CAAC;IAKD,IAAY,iBAAiB;QACzB,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAW,uBAAuB,KAAwB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEhF,KAAK,CAAC,qBAAqB;QACjC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAES,KAAK,CAAC,cAAc;QAC1B,MAAM,kBAAkB;QACpB,oEAAoE;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmC,IAAI,CAAC,oBAAoB,CAAE,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxE,CAAC;;AApCuB,mCAAO,GAC3B,IAAI,iBAAiB,CACjB,iCAAiC,EACjC,2BAA2B,EAC3B,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,EACjC,EAAE,EACF,SAAS,CACZ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport { SharedSummaryBlock } from \"@fluidframework/shared-summary-block\";\nimport { LastEditedTracker } from \"./lastEditedTracker\";\nimport { IProvideFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * LastEditedTrackerDataObject creates a LastEditedTracker that keeps track of the latest edits to the document.\n */\nexport class LastEditedTrackerDataObject extends DataObject\n implements IProvideFluidLastEditedTracker {\n private static readonly factory: DataObjectFactory<LastEditedTrackerDataObject> =\n new DataObjectFactory(\n \"@fluid-experimental/last-edited\",\n LastEditedTrackerDataObject,\n [SharedSummaryBlock.getFactory()],\n {},\n undefined,\n );\n\n public static getFactory(): DataObjectFactory<LastEditedTrackerDataObject> {\n return LastEditedTrackerDataObject.factory;\n }\n\n private readonly sharedSummaryBlockId = \"shared-summary-block-id\";\n private _lastEditedTracker: LastEditedTracker | undefined;\n\n private get lastEditedTracker(): LastEditedTracker {\n if (this._lastEditedTracker === undefined) {\n throw new Error(\"Last Edited tracker was not initialized properly\");\n }\n\n return this._lastEditedTracker;\n }\n\n public get IFluidLastEditedTracker(): LastEditedTracker { return this.lastEditedTracker; }\n\n protected async initializingFirstTime(): Promise<void> {\n const sharedSummaryBlock = SharedSummaryBlock.create(this.runtime);\n this.root.set(this.sharedSummaryBlockId, sharedSummaryBlock.handle);\n }\n\n protected async hasInitialized(): Promise<void> {\n const sharedSummaryBlock =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n await this.root.get<IFluidHandle<SharedSummaryBlock>>(this.sharedSummaryBlockId)!.get();\n this._lastEditedTracker = new LastEditedTracker(sharedSummaryBlock);\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 = "@fluid-experimental/last-edited";
8
- export declare const pkgVersion = "2.0.0-internal.2.2.1";
8
+ export declare const pkgVersion = "2.0.0-internal.2.3.1";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluid-experimental/last-edited";
8
- export const pkgVersion = "2.0.0-internal.2.2.1";
8
+ export const pkgVersion = "2.0.0-internal.2.3.1";
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,iCAAiC,CAAC;AACzD,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 = \"@fluid-experimental/last-edited\";\nexport const pkgVersion = \"2.0.0-internal.2.2.1\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,iCAAiC,CAAC;AACzD,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 = \"@fluid-experimental/last-edited\";\nexport const pkgVersion = \"2.0.0-internal.2.3.1\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yBAAyB,EAAkB,MAAM,sCAAsC,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAoB,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkCzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kCAAkC,CAC9C,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,iBAAiB,EAC1B,sBAAsB,GAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAqC,QAmBxG"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yBAAyB,EAAkB,MAAM,sCAAsC,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAoB,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkCzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kCAAkC,CAC9C,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,iBAAiB,EAC1B,sBAAsB,GAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAqC,GACtG,IAAI,CAkBN"}
package/lib/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,OAAkC,EAAE,EAAE,CACvE,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,MAAM;IAC5C,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,gBAAgB;IACtD,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,KAAK,CAAC;AAEhD;;;GAGG;AACH,SAAS,6BAA6B,CAClC,OAAkC,EAClC,MAAsB;IAEtB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,MAAM,eAAe,GAAqB;YACtC,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;QACF,OAAO,eAAe,CAAC;KAC1B;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kCAAkC,CAC9C,iBAA0C,EAC1C,OAA0B,EAC1B,yBAA0E,2BAA2B;IAErG,+EAA+E;IAC/E,+CAA+C;IAC/C,8GAA8G;IAC9G,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAkC,EAAE,cAAwB,EAAE,EAAE;QAC9E,6EAA6E;QAC7E,IAAI,cAAc,KAAK,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE;YAC7D,OAAO;SACV;QAED,6EAA6E;QAC7E,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACpF,IAAI,eAAe,KAAK,SAAS,EAAE;YAC/B,OAAO;SACV;QAED,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISequencedDocumentMessage, IQuorumClients } from \"@fluidframework/protocol-definitions\";\nimport { ContainerMessageType } from \"@fluidframework/container-runtime\";\nimport { IContainerRuntime } from \"@fluidframework/container-runtime-definitions\";\nimport { ILastEditDetails, IFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * Default implementation of {@link setupLastEditedTrackerForContainer}'s `shouldDiscardMessageFn` parameter,\n * which tells that all messages other than {@link @fluidframework/container-runtime#ContainerMessageType.Alias},\n * {@link @fluidframework/container-runtime#ContainerMessageType.Attach}, and\n * {@link @fluidframework/container-runtime#ContainerMessageType.FluidDataStoreOp} type messages should be\n * discarded.\n */\nconst shouldDiscardMessageDefault = (message: ISequencedDocumentMessage) =>\n message.type !== ContainerMessageType.Attach &&\n message.type !== ContainerMessageType.FluidDataStoreOp &&\n message.type !== ContainerMessageType.Alias;\n\n/**\n * Extracts the user information and timestamp from a message. Returns undefined if the user information for the\n * client who sent the message doesn't exist in the quorum.\n */\nfunction getLastEditDetailsFromMessage(\n message: ISequencedDocumentMessage,\n quorum: IQuorumClients,\n): ILastEditDetails | undefined {\n const sequencedClient = quorum.getMember(message.clientId);\n const user = sequencedClient?.client.user;\n if (user !== undefined) {\n const lastEditDetails: ILastEditDetails = {\n user,\n timestamp: message.timestamp,\n };\n return lastEditDetails;\n }\n return undefined;\n}\n\n/**\n * Helper function to set up a data object that provides IFluidLastEditedTracker to track last edited in a Container.\n *\n * It does the following:\n *\n * - Registers an \"op\" listener on the runtime. On each message, it calls the shouldDiscardMessageFn to check\n * if the message should be discarded. It also discards all scheduler message. If a message is not discarded,\n * it passes the last edited information from the message to the last edited tracker.\n *\n * - The last edited information from the last message received before the lastEditedTracker is\n * loaded is stored and passed to the tracker once it loads.\n * @param lastEditedTracker - The last edited tracker.\n * @param runtime - The container runtime whose messages are to be tracked.\n * @param shouldDiscardMessageFn - Function that tells if a message should not be considered in computing last edited.\n */\nexport function setupLastEditedTrackerForContainer(\n lastEditedTracker: IFluidLastEditedTracker,\n runtime: IContainerRuntime,\n shouldDiscardMessageFn: (message: ISequencedDocumentMessage) => boolean = shouldDiscardMessageDefault,\n) {\n // Register an op listener on the runtime. If the lastEditedTracker has loaded,\n // it passes the last edited information to its\n // last edited tracker. If the lastEditedTracker hasn't loaded, store the last edited information temporarily.\n runtime.on(\"op\", (message: ISequencedDocumentMessage, runtimeMessage?: boolean) => {\n // If this message should be discarded as per shouldDiscardMessageFn, return.\n if (runtimeMessage === false || shouldDiscardMessageFn(message)) {\n return;\n }\n\n // Get the last edited details from the message. If it doesn't exist, return.\n const lastEditDetails = getLastEditDetailsFromMessage(message, runtime.getQuorum());\n if (lastEditDetails === undefined) {\n return;\n }\n\n lastEditedTracker.updateLastEditDetails(lastEditDetails);\n });\n}\n"]}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,OAAkC,EAAW,EAAE,CAChF,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,MAAM;IAC5C,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,gBAAgB;IACtD,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,KAAK,CAAC;AAEhD;;;GAGG;AACH,SAAS,6BAA6B,CAClC,OAAkC,EAClC,MAAsB;IAEtB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,MAAM,eAAe,GAAqB;YACtC,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;QACF,OAAO,eAAe,CAAC;KAC1B;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kCAAkC,CAC9C,iBAA0C,EAC1C,OAA0B,EAC1B,yBAA0E,2BAA2B;IAErG,+EAA+E;IAC/E,+CAA+C;IAC/C,8GAA8G;IAC9G,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAkC,EAAE,cAAwB,EAAE,EAAE;QAC9E,6EAA6E;QAC7E,IAAI,cAAc,KAAK,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE;YAC7D,OAAO;SACV;QAED,6EAA6E;QAC7E,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACpF,IAAI,eAAe,KAAK,SAAS,EAAE;YAC/B,OAAO;SACV;QAED,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISequencedDocumentMessage, IQuorumClients } from \"@fluidframework/protocol-definitions\";\nimport { ContainerMessageType } from \"@fluidframework/container-runtime\";\nimport { IContainerRuntime } from \"@fluidframework/container-runtime-definitions\";\nimport { ILastEditDetails, IFluidLastEditedTracker } from \"./interfaces\";\n\n/**\n * Default implementation of {@link setupLastEditedTrackerForContainer}'s `shouldDiscardMessageFn` parameter,\n * which tells that all messages other than {@link @fluidframework/container-runtime#ContainerMessageType.Alias},\n * {@link @fluidframework/container-runtime#ContainerMessageType.Attach}, and\n * {@link @fluidframework/container-runtime#ContainerMessageType.FluidDataStoreOp} type messages should be\n * discarded.\n */\nconst shouldDiscardMessageDefault = (message: ISequencedDocumentMessage): boolean =>\n message.type !== ContainerMessageType.Attach &&\n message.type !== ContainerMessageType.FluidDataStoreOp &&\n message.type !== ContainerMessageType.Alias;\n\n/**\n * Extracts the user information and timestamp from a message. Returns undefined if the user information for the\n * client who sent the message doesn't exist in the quorum.\n */\nfunction getLastEditDetailsFromMessage(\n message: ISequencedDocumentMessage,\n quorum: IQuorumClients,\n): ILastEditDetails | undefined {\n const sequencedClient = quorum.getMember(message.clientId);\n const user = sequencedClient?.client.user;\n if (user !== undefined) {\n const lastEditDetails: ILastEditDetails = {\n user,\n timestamp: message.timestamp,\n };\n return lastEditDetails;\n }\n return undefined;\n}\n\n/**\n * Helper function to set up a data object that provides IFluidLastEditedTracker to track last edited in a Container.\n *\n * It does the following:\n *\n * - Registers an \"op\" listener on the runtime. On each message, it calls the shouldDiscardMessageFn to check\n * if the message should be discarded. It also discards all scheduler message. If a message is not discarded,\n * it passes the last edited information from the message to the last edited tracker.\n *\n * - The last edited information from the last message received before the lastEditedTracker is\n * loaded is stored and passed to the tracker once it loads.\n * @param lastEditedTracker - The last edited tracker.\n * @param runtime - The container runtime whose messages are to be tracked.\n * @param shouldDiscardMessageFn - Function that tells if a message should not be considered in computing last edited.\n */\nexport function setupLastEditedTrackerForContainer(\n lastEditedTracker: IFluidLastEditedTracker,\n runtime: IContainerRuntime,\n shouldDiscardMessageFn: (message: ISequencedDocumentMessage) => boolean = shouldDiscardMessageDefault,\n): void {\n // Register an op listener on the runtime. If the lastEditedTracker has loaded,\n // it passes the last edited information to its\n // last edited tracker. If the lastEditedTracker hasn't loaded, store the last edited information temporarily.\n runtime.on(\"op\", (message: ISequencedDocumentMessage, runtimeMessage?: boolean) => {\n // If this message should be discarded as per shouldDiscardMessageFn, return.\n if (runtimeMessage === false || shouldDiscardMessageFn(message)) {\n return;\n }\n\n // Get the last edited details from the message. If it doesn't exist, return.\n const lastEditDetails = getLastEditDetailsFromMessage(message, runtime.getQuorum());\n if (lastEditDetails === undefined) {\n return;\n }\n\n lastEditedTracker.updateLastEditDetails(lastEditDetails);\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-experimental/last-edited",
3
- "version": "2.0.0-internal.2.2.1",
3
+ "version": "2.0.0-internal.2.3.1",
4
4
  "description": "Tracks the last edited information in the Container.",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -55,20 +55,20 @@
55
55
  "temp-directory": "nyc/.nyc_output"
56
56
  },
57
57
  "dependencies": {
58
- "@fluidframework/aqueduct": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0",
58
+ "@fluidframework/aqueduct": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
59
59
  "@fluidframework/common-definitions": "^0.20.1",
60
- "@fluidframework/container-runtime": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0",
61
- "@fluidframework/container-runtime-definitions": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0",
62
- "@fluidframework/core-interfaces": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0",
60
+ "@fluidframework/container-runtime": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
61
+ "@fluidframework/container-runtime-definitions": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
62
+ "@fluidframework/core-interfaces": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
63
63
  "@fluidframework/protocol-definitions": "^1.1.0",
64
- "@fluidframework/runtime-utils": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0",
65
- "@fluidframework/shared-summary-block": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0"
64
+ "@fluidframework/runtime-utils": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
65
+ "@fluidframework/shared-summary-block": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@fluid-tools/build-cli": "^0.7.0",
69
69
  "@fluidframework/build-common": "^1.1.0",
70
- "@fluidframework/eslint-config-fluid": "^1.2.0",
71
- "@fluidframework/mocha-test-setup": ">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0",
70
+ "@fluidframework/eslint-config-fluid": "^2.0.0",
71
+ "@fluidframework/mocha-test-setup": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
72
72
  "@microsoft/api-extractor": "^7.22.2",
73
73
  "@rushstack/eslint-config": "^2.5.1",
74
74
  "@types/mocha": "^9.1.1",
@@ -20,7 +20,7 @@ export class LastEditedTracker implements IFluidLastEditedTracker {
20
20
  */
21
21
  constructor(private readonly sharedSummaryBlock: SharedSummaryBlock) { }
22
22
 
23
- public get IFluidLastEditedTracker() {
23
+ public get IFluidLastEditedTracker(): LastEditedTracker {
24
24
  return this;
25
25
  }
26
26
 
@@ -34,7 +34,7 @@ export class LastEditedTracker implements IFluidLastEditedTracker {
34
34
  /**
35
35
  * {@inheritDoc (IFluidLastEditedTracker:interface).updateLastEditDetails}
36
36
  */
37
- public updateLastEditDetails(lastEditDetails: ILastEditDetails) {
37
+ public updateLastEditDetails(lastEditDetails: ILastEditDetails): void {
38
38
  this.sharedSummaryBlock.set(this.lastEditedDetailsKey, lastEditDetails);
39
39
  }
40
40
  }
@@ -30,7 +30,7 @@ export class LastEditedTrackerDataObject extends DataObject
30
30
  private readonly sharedSummaryBlockId = "shared-summary-block-id";
31
31
  private _lastEditedTracker: LastEditedTracker | undefined;
32
32
 
33
- private get lastEditedTracker() {
33
+ private get lastEditedTracker(): LastEditedTracker {
34
34
  if (this._lastEditedTracker === undefined) {
35
35
  throw new Error("Last Edited tracker was not initialized properly");
36
36
  }
@@ -38,14 +38,14 @@ export class LastEditedTrackerDataObject extends DataObject
38
38
  return this._lastEditedTracker;
39
39
  }
40
40
 
41
- public get IFluidLastEditedTracker() { return this.lastEditedTracker; }
41
+ public get IFluidLastEditedTracker(): LastEditedTracker { return this.lastEditedTracker; }
42
42
 
43
- protected async initializingFirstTime() {
43
+ protected async initializingFirstTime(): Promise<void> {
44
44
  const sharedSummaryBlock = SharedSummaryBlock.create(this.runtime);
45
45
  this.root.set(this.sharedSummaryBlockId, sharedSummaryBlock.handle);
46
46
  }
47
47
 
48
- protected async hasInitialized() { // hasInitialized
48
+ protected async hasInitialized(): Promise<void> {
49
49
  const sharedSummaryBlock =
50
50
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
51
51
  await this.root.get<IFluidHandle<SharedSummaryBlock>>(this.sharedSummaryBlockId)!.get();
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluid-experimental/last-edited";
9
- export const pkgVersion = "2.0.0-internal.2.2.1";
9
+ export const pkgVersion = "2.0.0-internal.2.3.1";
package/src/setup.ts CHANGED
@@ -15,7 +15,7 @@ import { ILastEditDetails, IFluidLastEditedTracker } from "./interfaces";
15
15
  * {@link @fluidframework/container-runtime#ContainerMessageType.FluidDataStoreOp} type messages should be
16
16
  * discarded.
17
17
  */
18
- const shouldDiscardMessageDefault = (message: ISequencedDocumentMessage) =>
18
+ const shouldDiscardMessageDefault = (message: ISequencedDocumentMessage): boolean =>
19
19
  message.type !== ContainerMessageType.Attach &&
20
20
  message.type !== ContainerMessageType.FluidDataStoreOp &&
21
21
  message.type !== ContainerMessageType.Alias;
@@ -59,7 +59,7 @@ export function setupLastEditedTrackerForContainer(
59
59
  lastEditedTracker: IFluidLastEditedTracker,
60
60
  runtime: IContainerRuntime,
61
61
  shouldDiscardMessageFn: (message: ISequencedDocumentMessage) => boolean = shouldDiscardMessageDefault,
62
- ) {
62
+ ): void {
63
63
  // Register an op listener on the runtime. If the lastEditedTracker has loaded,
64
64
  // it passes the last edited information to its
65
65
  // last edited tracker. If the lastEditedTracker hasn't loaded, store the last edited information temporarily.