@fluidframework/sequence 0.59.2001 → 0.59.3000
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/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +7 -7
- package/dist/intervalCollection.js.map +1 -1
- package/dist/localValues.js +4 -4
- package/dist/localValues.js.map +1 -1
- package/dist/mapKernel.d.ts.map +1 -1
- package/dist/mapKernel.js +9 -9
- package/dist/mapKernel.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/sequence.d.ts +21 -3
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +39 -20
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.js +1 -1
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sharedIntervalCollection.js +5 -3
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sparsematrix.js +8 -8
- package/dist/sparsematrix.js.map +1 -1
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +1 -1
- package/lib/intervalCollection.js.map +1 -1
- package/lib/mapKernel.d.ts.map +1 -1
- package/lib/mapKernel.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/sequence.d.ts +21 -3
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +26 -7
- package/lib/sequence.js.map +1 -1
- package/lib/sharedIntervalCollection.js +3 -1
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sparsematrix.js.map +1 -1
- package/package.json +72 -18
- package/src/intervalCollection.ts +11 -19
- package/src/mapKernel.ts +8 -8
- package/src/packageVersion.ts +1 -1
- package/src/sequence.ts +42 -11
- package/src/sharedIntervalCollection.ts +1 -1
- package/src/sparsematrix.ts +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
var _a;
|
|
5
6
|
import { bufferToString } from "@fluidframework/common-utils";
|
|
6
7
|
import { MessageType } from "@fluidframework/protocol-definitions";
|
|
7
8
|
import { createSingleBlobSummary, SharedObject, } from "@fluidframework/shared-object-base";
|
|
@@ -46,7 +47,7 @@ export class SharedIntervalCollection extends SharedObject {
|
|
|
46
47
|
*/
|
|
47
48
|
constructor(id, runtime, attributes) {
|
|
48
49
|
super(id, runtime, attributes);
|
|
49
|
-
this[
|
|
50
|
+
this[_a] = "SharedIntervalCollection";
|
|
50
51
|
this.intervalMapKernel = new MapKernel(this.serializer, this.handle, (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata), () => this.isAttached(), [new IntervalCollectionValueType()]);
|
|
51
52
|
}
|
|
52
53
|
/**
|
|
@@ -110,4 +111,5 @@ export class SharedIntervalCollection extends SharedObject {
|
|
|
110
111
|
throw new Error("not implemented");
|
|
111
112
|
}
|
|
112
113
|
}
|
|
114
|
+
_a = Symbol.toStringTag;
|
|
113
115
|
//# sourceMappingURL=sharedIntervalCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedIntervalCollection.js","sourceRoot":"","sources":["../src/sharedIntervalCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"sharedIntervalCollection.js","sourceRoot":"","sources":["../src/sharedIntervalCollection.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { bufferToString } from \"@fluidframework/common-utils\";\nimport {\n IChannelAttributes,\n IFluidDataStoreRuntime,\n IChannelStorageService,\n IChannelServices,\n IChannelFactory,\n} from \"@fluidframework/datastore-definitions\";\nimport { ISequencedDocumentMessage, MessageType } from \"@fluidframework/protocol-definitions\";\nimport { ISummaryTreeWithStats } from \"@fluidframework/runtime-definitions\";\nimport {\n createSingleBlobSummary,\n IFluidSerializer,\n SharedObject,\n} from \"@fluidframework/shared-object-base\";\nimport {\n Interval,\n IntervalCollection,\n IntervalCollectionValueType,\n ISerializableInterval,\n} from \"./intervalCollection\";\nimport { MapKernel } from \"./mapKernel\";\nimport { pkgVersion } from \"./packageVersion\";\n\nconst snapshotFileName = \"header\";\n\n/**\n * The factory that defines the SharedIntervalCollection\n */\nexport class SharedIntervalCollectionFactory implements IChannelFactory {\n public static readonly Type = \"https://graph.microsoft.com/types/sharedIntervalCollection\";\n\n public static readonly Attributes: IChannelAttributes = {\n type: SharedIntervalCollectionFactory.Type,\n snapshotFormatVersion: \"0.1\",\n packageVersion: pkgVersion,\n };\n\n public get type() {\n return SharedIntervalCollectionFactory.Type;\n }\n\n public get attributes() {\n return SharedIntervalCollectionFactory.Attributes;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n public async load(\n runtime: IFluidDataStoreRuntime,\n id: string,\n services: IChannelServices,\n attributes: IChannelAttributes): Promise<SharedIntervalCollection> {\n const map = new SharedIntervalCollection(id, runtime, attributes);\n await map.load(services);\n\n return map;\n }\n\n public create(runtime: IFluidDataStoreRuntime, id: string): SharedIntervalCollection {\n const map = new SharedIntervalCollection(\n id,\n runtime,\n this.attributes);\n map.initializeLocal();\n\n return map;\n }\n}\n\nexport interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {\n waitIntervalCollection(label: string): Promise<IntervalCollection<TInterval>>;\n getIntervalCollection(label: string): IntervalCollection<TInterval>;\n}\n\nexport class SharedIntervalCollection<TInterval extends ISerializableInterval = Interval>\n extends SharedObject implements ISharedIntervalCollection<TInterval> {\n /**\n * Create a SharedIntervalCollection\n *\n * @param runtime - data store runtime the new shared map belongs to\n * @param id - optional name of the shared map\n * @returns newly create shared map (but not attached yet)\n */\n public static create(runtime: IFluidDataStoreRuntime, id?: string) {\n return runtime.createChannel(id, SharedIntervalCollectionFactory.Type) as SharedIntervalCollection;\n }\n\n /**\n * Get a factory for SharedIntervalCollection to register with the data store.\n *\n * @returns a factory that creates and load SharedIntervalCollection\n */\n public static getFactory(): IChannelFactory {\n return new SharedIntervalCollectionFactory();\n }\n\n public readonly [Symbol.toStringTag]: string = \"SharedIntervalCollection\";\n private readonly intervalMapKernel: MapKernel;\n\n /**\n * Constructs a new shared SharedIntervalCollection. If the object is non-local an id and service interfaces will\n * be provided\n */\n constructor(\n id: string,\n runtime: IFluidDataStoreRuntime,\n attributes: IChannelAttributes,\n ) {\n super(id, runtime, attributes);\n this.intervalMapKernel = new MapKernel(\n this.serializer,\n this.handle,\n (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata),\n () => this.isAttached(),\n [new IntervalCollectionValueType()],\n );\n }\n\n public async waitIntervalCollection(\n label: string,\n ): Promise<IntervalCollection<TInterval>> {\n return this.intervalMapKernel.wait<IntervalCollection<TInterval>>(\n this.getIntervalCollectionPath(label));\n }\n\n // TODO: fix race condition on creation by putting type on every operation\n public getIntervalCollection(label: string): IntervalCollection<TInterval> {\n const realLabel = this.getIntervalCollectionPath(label);\n if (!this.intervalMapKernel.has(realLabel)) {\n this.intervalMapKernel.createValueType(\n label,\n IntervalCollectionValueType.Name,\n undefined);\n }\n\n const sharedCollection =\n this.intervalMapKernel.get<IntervalCollection<TInterval>>(realLabel);\n return sharedCollection;\n }\n\n protected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats {\n return createSingleBlobSummary(snapshotFileName, this.intervalMapKernel.serialize(serializer));\n }\n\n protected reSubmitCore(content: any, localOpMetadata: unknown) {\n this.intervalMapKernel.trySubmitMessage(content, localOpMetadata);\n }\n\n protected onDisconnect() { }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}\n */\n protected async loadCore(storage: IChannelStorageService) {\n const blob = await storage.readBlob(snapshotFileName);\n const header = bufferToString(blob, \"utf8\");\n this.intervalMapKernel.populate(header);\n }\n\n protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) {\n if (message.type === MessageType.Operation) {\n this.intervalMapKernel.tryProcessMessage(message.contents, local, message, localOpMetadata);\n }\n }\n\n /**\n * Creates the full path of the intervalCollection label\n * @param label - the incoming label\n */\n protected getIntervalCollectionPath(label: string): string {\n return label;\n }\n\n protected applyStashedOp() {\n throw new Error(\"not implemented\");\n }\n}\n"]}
|
package/lib/sparsematrix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparsematrix.js","sourceRoot":"","sources":["../src/sparsematrix.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport {\n BaseSegment,\n createGroupOp,\n IJSONSegment,\n ISegment,\n LocalReferenceCollection,\n PropertySet,\n} from \"@fluidframework/merge-tree\";\nimport {\n IChannelAttributes,\n IFluidDataStoreRuntime,\n IChannelServices,\n IChannelFactory,\n Serializable,\n Jsonable,\n} from \"@fluidframework/datastore-definitions\";\nimport { ISharedObject } from \"@fluidframework/shared-object-base\";\nimport { pkgVersion } from \"./packageVersion\";\nimport { SharedSegmentSequence, SubSequence } from \"./\";\n\n/**\n * An empty segment that occupies 'cachedLength' positions. SparseMatrix uses PaddingSegment\n * to \"pad\" a run of unoccupied cells.\n *\n * @deprecated PaddingSegment is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport class PaddingSegment extends BaseSegment {\n public static readonly typeString = \"PaddingSegment\";\n public static is(segment: ISegment): segment is PaddingSegment {\n return segment.type === PaddingSegment.typeString;\n }\n public static fromJSONObject(spec: any) {\n if (spec && typeof spec === \"object\" && \"pad\" in spec) {\n const segment = new PaddingSegment(spec.pad);\n if (spec.props) {\n segment.addProperties(spec.props);\n }\n return segment;\n }\n return undefined;\n }\n public readonly type = PaddingSegment.typeString;\n\n constructor(size: number) {\n super();\n this.cachedLength = size;\n }\n\n public toJSONObject() {\n return { pad: this.cachedLength, props: this.properties };\n }\n\n public clone(start = 0, end?: number) {\n const b = new PaddingSegment(this.cachedLength);\n this.cloneInto(b);\n return b;\n }\n\n public canAppend(segment: ISegment) {\n return PaddingSegment.is(segment);\n }\n\n public toString() {\n return `[padding: ${this.cachedLength}]`;\n }\n\n public append(segment: ISegment) {\n if (!PaddingSegment.is(segment)) {\n throw new Error(\"can only append padding segment\");\n }\n\n // Note: Must call 'appendLocalRefs' before modifying this segment's length as\n // 'this.cachedLength' is used to adjust the offsets of the local refs.\n LocalReferenceCollection.append(this, segment);\n\n this.cachedLength += segment.cachedLength;\n }\n\n // Returns true if entire run removed\n public removeRange(start: number, end: number) {\n this.cachedLength -= (end - start);\n return (this.cachedLength === 0);\n }\n\n protected createSplitSegmentAt(pos: number) {\n const leftLength = pos;\n const rightLength = this.cachedLength - pos;\n\n this.cachedLength = leftLength;\n return new PaddingSegment(rightLength);\n }\n}\n\n/**\n * @deprecated SparseMatrixItem is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport type SparseMatrixItem = Serializable;\n\n/**\n * @deprecated RunSegment is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport class RunSegment extends SubSequence<SparseMatrixItem> {\n public static readonly typeString = \"RunSegment\";\n public static is(segment: ISegment): segment is RunSegment {\n return segment.type === RunSegment.typeString;\n }\n public static fromJSONObject(spec: any) {\n if (spec && typeof spec === \"object\" && \"items\" in spec) {\n const segment = new RunSegment(spec.items);\n if (spec.props) {\n segment.addProperties(spec.props);\n }\n return segment;\n }\n return undefined;\n }\n public readonly type = RunSegment.typeString;\n\n private tags: any[];\n\n constructor(public items: SparseMatrixItem[]) {\n super(items);\n this.tags = new Array(items.length).fill(undefined);\n }\n\n public clone(start = 0, end?: number) {\n const b = new RunSegment(this.items.slice(start, end));\n if (this.tags) {\n b.tags = this.tags.slice(start, end);\n }\n this.cloneInto(b);\n return b;\n }\n\n public append(segment: ISegment) {\n super.append(segment);\n\n const asRun = segment as RunSegment;\n if (asRun.tags) {\n if (this.tags) {\n this.tags.splice(this.items.length, 0, ...asRun.tags);\n }\n }\n\n return this;\n }\n\n // TODO: retain removed items for undo\n // returns true if entire run removed\n public removeRange(start: number, end: number) {\n this.tags.splice(start, end - start);\n return super.removeRange(start, end);\n }\n\n public getTag(pos: number) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.tags[pos];\n }\n\n public setTag(pos: number, tag: any) {\n this.tags[pos] = tag;\n }\n\n protected createSplitSegmentAt(pos: number) {\n if (pos > 0) {\n const remainingItems = this.items.slice(pos);\n this.items = this.items.slice(0, pos);\n this.cachedLength = this.items.length;\n\n const leafSegment = new RunSegment(remainingItems);\n leafSegment.tags = this.tags.slice(pos);\n this.tags.length = pos;\n\n return leafSegment;\n }\n }\n}\n\n/**\n * @deprecated MatrixSegment is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport type MatrixSegment = RunSegment | PaddingSegment;\n\n/**\n * @deprecated maxCol is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxCol = 0x200000; // X128 Excel maximum of 16,384 columns\n\n/**\n * @deprecated maxCols is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxCols = maxCol + 1;\n\n/**\n * @deprecated maxRow is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxRow = 0xFFFFFFFF; // X4096 Excel maximum of 1,048,576 rows\n\n/**\n * @deprecated maxRows is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxRows = maxRow + 1;\n\n/**\n * @deprecated maxCellPosition is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxCellPosition = maxCol * maxRow;\n\n/**\n * @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const rowColToPosition = (row: number, col: number) => row * maxCols + col;\n\n/**\n * @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport function positionToRowCol(position: number) {\n const row = Math.floor(position / maxCols);\n const col = position - (row * maxCols);\n return { row, col };\n}\n\n/**\n * @deprecated SparseMatrix is an abandoned prototype. Use SharedMatrix instead.\n */\nexport class SparseMatrix extends SharedSegmentSequence<MatrixSegment> {\n /**\n * Create a new sparse matrix\n *\n * @param runtime - data store runtime the new sparse matrix belongs to\n * @param id - optional name of the sparse matrix\n * @returns newly create sparse matrix (but not attached yet)\n */\n public static create(runtime: IFluidDataStoreRuntime, id?: string) {\n return runtime.createChannel(id, SparseMatrixFactory.Type) as SparseMatrix;\n }\n\n /**\n * Get a factory for SharedMap to register with the data store.\n *\n * @returns a factory that creates and load SharedMap\n */\n public static getFactory(): IChannelFactory {\n return new SparseMatrixFactory();\n }\n\n constructor(document: IFluidDataStoreRuntime, public id: string, attributes: IChannelAttributes) {\n super(document, id, attributes, SparseMatrixFactory.segmentFromSpec);\n }\n\n public get numRows() {\n return positionToRowCol(this.getLength()).row;\n }\n\n public setItems(\n row: number,\n col: number,\n values: SparseMatrixItem[],\n props?: PropertySet,\n ) {\n const start = rowColToPosition(row, col);\n const end = start + values.length;\n const segment = new RunSegment(values);\n if (props) {\n segment.addProperties(props);\n }\n\n this.replaceRange(start, end, segment);\n }\n\n public getItem(row: number, col: number):\n // The return type is defined explicitly here to prevent TypeScript from generating dynamic imports\n Jsonable<string | number | boolean | IFluidHandle> {\n const pos = rowColToPosition(row, col);\n const { segment, offset } = this.getContainingSegment(pos);\n if (RunSegment.is(segment)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return segment.items[offset];\n } else if (PaddingSegment.is(segment)) {\n return undefined;\n }\n\n throw new Error(`Unrecognized Segment type`);\n }\n\n public getTag(row: number, col: number) {\n const { segment, offset } = this.getSegment(row, col);\n if (RunSegment.is(segment)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return segment.getTag(offset);\n }\n return undefined;\n }\n\n public setTag(row: number, col: number, tag: any) {\n const { segment, offset } = this.getSegment(row, col);\n if (RunSegment.is(segment)) {\n segment.setTag(offset, tag);\n } else if (tag !== undefined) {\n throw new Error(`Must not attempt to set tags on '${segment.constructor.name}'.`);\n }\n }\n\n public insertRows(row: number, numRows: number) {\n const pos = rowColToPosition(row, 0);\n const size = maxCols * numRows;\n const segment = new PaddingSegment(size);\n\n const insertOp = this.client.insertSegmentLocal(pos, segment);\n if (insertOp) {\n this.submitSequenceMessage(insertOp);\n }\n }\n\n public removeRows(row: number, numRows: number) {\n const pos = rowColToPosition(row, 0);\n const size = maxCols * numRows;\n this.removeRange(pos, pos + size);\n }\n\n public insertCols(col: number, numCols: number) {\n this.moveAsPadding(maxCol - numCols, col, numCols);\n }\n\n public removeCols(col: number, numCols: number) {\n this.moveAsPadding(col, maxCol - numCols, numCols);\n }\n\n public annotatePosition(row: number, col: number, props: PropertySet) {\n const pos = rowColToPosition(row, col);\n this.annotateRange(pos, pos + 1, props);\n }\n\n public getPositionProperties(row: number, col: number) {\n const pos = rowColToPosition(row, col);\n return this.getPropertiesAtPosition(pos);\n }\n\n // For each row, moves 'numCols' items starting from 'srcCol' and inserts 'numCols' padding\n // at 'destCol'. Used by insertCols and removeCols.\n private moveAsPadding(srcCol: number, destCol: number, numCols: number) {\n const removeColStart = srcCol;\n const removeColEnd = srcCol + numCols;\n const ops = [];\n\n for (let r = 0, rowStart = 0; r < this.numRows; r++ , rowStart += maxCols) {\n ops.push(this.client.removeRangeLocal(rowStart + removeColStart, rowStart + removeColEnd));\n const insertPos = rowStart + destCol;\n const segment = new PaddingSegment(numCols);\n ops.push(this.client.insertSegmentLocal(insertPos, segment));\n }\n\n this.submitSequenceMessage(createGroupOp(...ops));\n }\n\n private getSegment(row: number, col: number) {\n const pos = rowColToPosition(row, col);\n return this.getContainingSegment(pos);\n }\n}\n\n/**\n * @deprecated SparseMatrixFactory is an abandoned prototype. Use SharedMatrixFactory instead.\n */\nexport class SparseMatrixFactory implements IChannelFactory {\n public static Type = \"https://graph.microsoft.com/types/mergeTree/sparse-matrix\";\n\n public static Attributes: IChannelAttributes = {\n type: SparseMatrixFactory.Type,\n snapshotFormatVersion: \"0.1\",\n packageVersion: pkgVersion,\n };\n\n public static segmentFromSpec(spec: IJSONSegment): ISegment {\n const maybePadding = PaddingSegment.fromJSONObject(spec);\n if (maybePadding) {\n return maybePadding;\n }\n\n const maybeRun = RunSegment.fromJSONObject(spec);\n if (maybeRun) {\n return maybeRun;\n }\n\n throw new Error(`Unrecognized IJSONObject: '${JSON.stringify(spec)}'`);\n }\n\n public get type() {\n return SparseMatrixFactory.Type;\n }\n\n public get attributes() {\n return SparseMatrixFactory.Attributes;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n public async load(\n runtime: IFluidDataStoreRuntime,\n id: string,\n services: IChannelServices,\n attributes: IChannelAttributes,\n ): Promise<ISharedObject> {\n const sharedObject = new SparseMatrix(runtime, id, attributes);\n await sharedObject.load(services);\n return sharedObject;\n }\n\n public create(document: IFluidDataStoreRuntime, id: string): ISharedObject {\n const sharedObject = new SparseMatrix(document, id, this.attributes);\n sharedObject.initializeLocal();\n return sharedObject;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sparsematrix.js","sourceRoot":"","sources":["../src/sparsematrix.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport {\n BaseSegment,\n createGroupOp,\n IJSONSegment,\n ISegment,\n LocalReferenceCollection,\n PropertySet,\n} from \"@fluidframework/merge-tree\";\nimport {\n IChannelAttributes,\n IFluidDataStoreRuntime,\n IChannelServices,\n IChannelFactory,\n Serializable,\n Jsonable,\n} from \"@fluidframework/datastore-definitions\";\nimport { ISharedObject } from \"@fluidframework/shared-object-base\";\nimport { pkgVersion } from \"./packageVersion\";\nimport { SharedSegmentSequence, SubSequence } from \"./\";\n\n/**\n * An empty segment that occupies 'cachedLength' positions. SparseMatrix uses PaddingSegment\n * to \"pad\" a run of unoccupied cells.\n *\n * @deprecated PaddingSegment is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport class PaddingSegment extends BaseSegment {\n public static readonly typeString = \"PaddingSegment\";\n public static is(segment: ISegment): segment is PaddingSegment {\n return segment.type === PaddingSegment.typeString;\n }\n public static fromJSONObject(spec: any) {\n if (spec && typeof spec === \"object\" && \"pad\" in spec) {\n const segment = new PaddingSegment(spec.pad);\n if (spec.props) {\n segment.addProperties(spec.props);\n }\n return segment;\n }\n return undefined;\n }\n public readonly type = PaddingSegment.typeString;\n\n constructor(size: number) {\n super();\n this.cachedLength = size;\n }\n\n public toJSONObject() {\n return { pad: this.cachedLength, props: this.properties };\n }\n\n public clone(start = 0, end?: number) {\n const b = new PaddingSegment(this.cachedLength);\n this.cloneInto(b);\n return b;\n }\n\n public canAppend(segment: ISegment) {\n return PaddingSegment.is(segment);\n }\n\n public toString() {\n return `[padding: ${this.cachedLength}]`;\n }\n\n public append(segment: ISegment) {\n if (!PaddingSegment.is(segment)) {\n throw new Error(\"can only append padding segment\");\n }\n\n // Note: Must call 'appendLocalRefs' before modifying this segment's length as\n // 'this.cachedLength' is used to adjust the offsets of the local refs.\n LocalReferenceCollection.append(this, segment);\n\n this.cachedLength += segment.cachedLength;\n }\n\n // Returns true if entire run removed\n public removeRange(start: number, end: number) {\n this.cachedLength -= (end - start);\n return (this.cachedLength === 0);\n }\n\n protected createSplitSegmentAt(pos: number) {\n const leftLength = pos;\n const rightLength = this.cachedLength - pos;\n\n this.cachedLength = leftLength;\n return new PaddingSegment(rightLength);\n }\n}\n\n/**\n * @deprecated SparseMatrixItem is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport type SparseMatrixItem = Serializable;\n\n/**\n * @deprecated RunSegment is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport class RunSegment extends SubSequence<SparseMatrixItem> {\n public static readonly typeString = \"RunSegment\";\n public static is(segment: ISegment): segment is RunSegment {\n return segment.type === RunSegment.typeString;\n }\n public static fromJSONObject(spec: any) {\n if (spec && typeof spec === \"object\" && \"items\" in spec) {\n const segment = new RunSegment(spec.items);\n if (spec.props) {\n segment.addProperties(spec.props);\n }\n return segment;\n }\n return undefined;\n }\n public readonly type = RunSegment.typeString;\n\n private tags: any[];\n\n constructor(public items: SparseMatrixItem[]) {\n super(items);\n this.tags = new Array(items.length).fill(undefined);\n }\n\n public clone(start = 0, end?: number) {\n const b = new RunSegment(this.items.slice(start, end));\n if (this.tags) {\n b.tags = this.tags.slice(start, end);\n }\n this.cloneInto(b);\n return b;\n }\n\n public append(segment: ISegment) {\n super.append(segment);\n\n const asRun = segment as RunSegment;\n if (asRun.tags) {\n if (this.tags) {\n this.tags.splice(this.items.length, 0, ...asRun.tags);\n }\n }\n\n return this;\n }\n\n // TODO: retain removed items for undo\n // returns true if entire run removed\n public removeRange(start: number, end: number) {\n this.tags.splice(start, end - start);\n return super.removeRange(start, end);\n }\n\n public getTag(pos: number) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.tags[pos];\n }\n\n public setTag(pos: number, tag: any) {\n this.tags[pos] = tag;\n }\n\n protected createSplitSegmentAt(pos: number) {\n if (pos > 0) {\n const remainingItems = this.items.slice(pos);\n this.items = this.items.slice(0, pos);\n this.cachedLength = this.items.length;\n\n const leafSegment = new RunSegment(remainingItems);\n leafSegment.tags = this.tags.slice(pos);\n this.tags.length = pos;\n\n return leafSegment;\n }\n }\n}\n\n/**\n * @deprecated MatrixSegment is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport type MatrixSegment = RunSegment | PaddingSegment;\n\n/**\n * @deprecated maxCol is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxCol = 0x200000; // X128 Excel maximum of 16,384 columns\n\n/**\n * @deprecated maxCols is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxCols = maxCol + 1;\n\n/**\n * @deprecated maxRow is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxRow = 0xFFFFFFFF; // X4096 Excel maximum of 1,048,576 rows\n\n/**\n * @deprecated maxRows is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxRows = maxRow + 1;\n\n/**\n * @deprecated maxCellPosition is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const maxCellPosition = maxCol * maxRow;\n\n/**\n * @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport const rowColToPosition = (row: number, col: number) => row * maxCols + col;\n\n/**\n * @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.\n */\nexport function positionToRowCol(position: number) {\n const row = Math.floor(position / maxCols);\n const col = position - (row * maxCols);\n return { row, col };\n}\n\n/**\n * @deprecated SparseMatrix is an abandoned prototype. Use SharedMatrix instead.\n */\nexport class SparseMatrix extends SharedSegmentSequence<MatrixSegment> {\n /**\n * Create a new sparse matrix\n *\n * @param runtime - data store runtime the new sparse matrix belongs to\n * @param id - optional name of the sparse matrix\n * @returns newly create sparse matrix (but not attached yet)\n */\n public static create(runtime: IFluidDataStoreRuntime, id?: string) {\n return runtime.createChannel(id, SparseMatrixFactory.Type) as SparseMatrix;\n }\n\n /**\n * Get a factory for SharedMap to register with the data store.\n *\n * @returns a factory that creates and load SharedMap\n */\n public static getFactory(): IChannelFactory {\n return new SparseMatrixFactory();\n }\n\n constructor(document: IFluidDataStoreRuntime, public id: string, attributes: IChannelAttributes) {\n super(document, id, attributes, SparseMatrixFactory.segmentFromSpec);\n }\n\n public get numRows() {\n return positionToRowCol(this.getLength()).row;\n }\n\n public setItems(\n row: number,\n col: number,\n values: SparseMatrixItem[],\n props?: PropertySet,\n ) {\n const start = rowColToPosition(row, col);\n const end = start + values.length;\n const segment = new RunSegment(values);\n if (props) {\n segment.addProperties(props);\n }\n\n this.replaceRange(start, end, segment);\n }\n\n public getItem(row: number, col: number):\n // The return type is defined explicitly here to prevent TypeScript from generating dynamic imports\n Jsonable<string | number | boolean | IFluidHandle> {\n const pos = rowColToPosition(row, col);\n const { segment, offset } = this.getContainingSegment(pos);\n if (RunSegment.is(segment)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return segment.items[offset];\n } else if (PaddingSegment.is(segment)) {\n return undefined;\n }\n\n throw new Error(`Unrecognized Segment type`);\n }\n\n public getTag(row: number, col: number) {\n const { segment, offset } = this.getSegment(row, col);\n if (RunSegment.is(segment)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return segment.getTag(offset);\n }\n return undefined;\n }\n\n public setTag(row: number, col: number, tag: any) {\n const { segment, offset } = this.getSegment(row, col);\n if (RunSegment.is(segment)) {\n segment.setTag(offset, tag);\n } else if (tag !== undefined) {\n throw new Error(`Must not attempt to set tags on '${segment.constructor.name}'.`);\n }\n }\n\n public insertRows(row: number, numRows: number) {\n const pos = rowColToPosition(row, 0);\n const size = maxCols * numRows;\n const segment = new PaddingSegment(size);\n\n const insertOp = this.client.insertSegmentLocal(pos, segment);\n if (insertOp) {\n this.submitSequenceMessage(insertOp);\n }\n }\n\n public removeRows(row: number, numRows: number) {\n const pos = rowColToPosition(row, 0);\n const size = maxCols * numRows;\n this.removeRange(pos, pos + size);\n }\n\n public insertCols(col: number, numCols: number) {\n this.moveAsPadding(maxCol - numCols, col, numCols);\n }\n\n public removeCols(col: number, numCols: number) {\n this.moveAsPadding(col, maxCol - numCols, numCols);\n }\n\n public annotatePosition(row: number, col: number, props: PropertySet) {\n const pos = rowColToPosition(row, col);\n this.annotateRange(pos, pos + 1, props);\n }\n\n public getPositionProperties(row: number, col: number) {\n const pos = rowColToPosition(row, col);\n return this.getPropertiesAtPosition(pos);\n }\n\n // For each row, moves 'numCols' items starting from 'srcCol' and inserts 'numCols' padding\n // at 'destCol'. Used by insertCols and removeCols.\n private moveAsPadding(srcCol: number, destCol: number, numCols: number) {\n const removeColStart = srcCol;\n const removeColEnd = srcCol + numCols;\n const ops = [];\n\n for (let r = 0, rowStart = 0; r < this.numRows; r++, rowStart += maxCols) {\n ops.push(this.client.removeRangeLocal(rowStart + removeColStart, rowStart + removeColEnd));\n const insertPos = rowStart + destCol;\n const segment = new PaddingSegment(numCols);\n ops.push(this.client.insertSegmentLocal(insertPos, segment));\n }\n\n this.submitSequenceMessage(createGroupOp(...ops));\n }\n\n private getSegment(row: number, col: number) {\n const pos = rowColToPosition(row, col);\n return this.getContainingSegment(pos);\n }\n}\n\n/**\n * @deprecated SparseMatrixFactory is an abandoned prototype. Use SharedMatrixFactory instead.\n */\nexport class SparseMatrixFactory implements IChannelFactory {\n public static Type = \"https://graph.microsoft.com/types/mergeTree/sparse-matrix\";\n\n public static Attributes: IChannelAttributes = {\n type: SparseMatrixFactory.Type,\n snapshotFormatVersion: \"0.1\",\n packageVersion: pkgVersion,\n };\n\n public static segmentFromSpec(spec: IJSONSegment): ISegment {\n const maybePadding = PaddingSegment.fromJSONObject(spec);\n if (maybePadding) {\n return maybePadding;\n }\n\n const maybeRun = RunSegment.fromJSONObject(spec);\n if (maybeRun) {\n return maybeRun;\n }\n\n throw new Error(`Unrecognized IJSONObject: '${JSON.stringify(spec)}'`);\n }\n\n public get type() {\n return SparseMatrixFactory.Type;\n }\n\n public get attributes() {\n return SparseMatrixFactory.Attributes;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n public async load(\n runtime: IFluidDataStoreRuntime,\n id: string,\n services: IChannelServices,\n attributes: IChannelAttributes,\n ): Promise<ISharedObject> {\n const sharedObject = new SparseMatrix(runtime, id, attributes);\n await sharedObject.load(services);\n return sharedObject;\n }\n\n public create(document: IFluidDataStoreRuntime, id: string): ISharedObject {\n const sharedObject = new SparseMatrix(document, id, this.attributes);\n sharedObject.initializeLocal();\n return sharedObject;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/sequence",
|
|
3
|
-
"version": "0.59.
|
|
3
|
+
"version": "0.59.3000",
|
|
4
4
|
"description": "Distributed sequence",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -65,24 +65,26 @@
|
|
|
65
65
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
66
66
|
"@fluidframework/common-utils": "^0.32.1",
|
|
67
67
|
"@fluidframework/core-interfaces": "^0.43.1000",
|
|
68
|
-
"@fluidframework/datastore-definitions": "^0.59.
|
|
69
|
-
"@fluidframework/merge-tree": "^0.59.
|
|
68
|
+
"@fluidframework/datastore-definitions": "^0.59.3000",
|
|
69
|
+
"@fluidframework/merge-tree": "^0.59.3000",
|
|
70
70
|
"@fluidframework/protocol-definitions": "^0.1028.1000",
|
|
71
|
-
"@fluidframework/runtime-definitions": "^0.59.
|
|
72
|
-
"@fluidframework/runtime-utils": "^0.59.
|
|
73
|
-
"@fluidframework/shared-object-base": "^0.59.
|
|
74
|
-
"@fluidframework/telemetry-utils": "^0.59.
|
|
71
|
+
"@fluidframework/runtime-definitions": "^0.59.3000",
|
|
72
|
+
"@fluidframework/runtime-utils": "^0.59.3000",
|
|
73
|
+
"@fluidframework/shared-object-base": "^0.59.3000",
|
|
74
|
+
"@fluidframework/telemetry-utils": "^0.59.3000",
|
|
75
75
|
"uuid": "^8.3.1"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
|
-
"@fluid-internal/test-
|
|
78
|
+
"@fluid-internal/stochastic-test-utils": "^0.59.3000",
|
|
79
|
+
"@fluid-internal/test-dds-utils": "^0.59.3000",
|
|
79
80
|
"@fluidframework/build-common": "^0.23.0",
|
|
80
|
-
"@fluidframework/
|
|
81
|
-
"@fluidframework/
|
|
82
|
-
"@fluidframework/
|
|
83
|
-
"@fluidframework/
|
|
84
|
-
"@fluidframework/
|
|
85
|
-
"@fluidframework/
|
|
81
|
+
"@fluidframework/build-tools": "^0.2.66793",
|
|
82
|
+
"@fluidframework/eslint-config-fluid": "^0.28.2000",
|
|
83
|
+
"@fluidframework/gitresources": "^0.1036.3000",
|
|
84
|
+
"@fluidframework/mocha-test-setup": "^0.59.3000",
|
|
85
|
+
"@fluidframework/sequence-previous": "npm:@fluidframework/sequence@0.59.2000",
|
|
86
|
+
"@fluidframework/server-services-client": "^0.1036.3000",
|
|
87
|
+
"@fluidframework/test-runtime-utils": "^0.59.3000",
|
|
86
88
|
"@microsoft/api-extractor": "^7.22.2",
|
|
87
89
|
"@rushstack/eslint-config": "^2.5.1",
|
|
88
90
|
"@types/diff": "^3.5.1",
|
|
@@ -109,12 +111,64 @@
|
|
|
109
111
|
"nyc": "^15.0.0",
|
|
110
112
|
"random-js": "^1.0.8",
|
|
111
113
|
"rimraf": "^2.6.2",
|
|
112
|
-
"typescript": "~4.
|
|
114
|
+
"typescript": "~4.5.5",
|
|
113
115
|
"typescript-formatter": "7.1.0"
|
|
114
116
|
},
|
|
115
117
|
"typeValidation": {
|
|
116
|
-
"version": "0.59.
|
|
117
|
-
"broken": {
|
|
118
|
-
|
|
118
|
+
"version": "0.59.3000",
|
|
119
|
+
"broken": {
|
|
120
|
+
"InterfaceDeclaration_ISequenceDeltaRange": {
|
|
121
|
+
"forwardCompat": false,
|
|
122
|
+
"backCompat": false
|
|
123
|
+
},
|
|
124
|
+
"ClassDeclaration_SequenceDeltaEvent": {
|
|
125
|
+
"forwardCompat": false,
|
|
126
|
+
"backCompat": false
|
|
127
|
+
},
|
|
128
|
+
"ClassDeclaration_SequenceEvent": {
|
|
129
|
+
"forwardCompat": false,
|
|
130
|
+
"backCompat": false
|
|
131
|
+
},
|
|
132
|
+
"ClassDeclaration_SequenceMaintenanceEvent": {
|
|
133
|
+
"forwardCompat": false,
|
|
134
|
+
"backCompat": false
|
|
135
|
+
},
|
|
136
|
+
"InterfaceDeclaration_ISharedString": {
|
|
137
|
+
"forwardCompat": false
|
|
138
|
+
},
|
|
139
|
+
"TypeAliasDeclaration_MatrixSegment": {
|
|
140
|
+
"forwardCompat": false
|
|
141
|
+
},
|
|
142
|
+
"ClassDeclaration_PaddingSegment": {
|
|
143
|
+
"forwardCompat": false
|
|
144
|
+
},
|
|
145
|
+
"ClassDeclaration_RunSegment": {
|
|
146
|
+
"forwardCompat": false
|
|
147
|
+
},
|
|
148
|
+
"ClassDeclaration_SharedNumberSequence": {
|
|
149
|
+
"forwardCompat": false
|
|
150
|
+
},
|
|
151
|
+
"ClassDeclaration_SharedObjectSequence": {
|
|
152
|
+
"forwardCompat": false
|
|
153
|
+
},
|
|
154
|
+
"ClassDeclaration_SharedSegmentSequence": {
|
|
155
|
+
"forwardCompat": false
|
|
156
|
+
},
|
|
157
|
+
"ClassDeclaration_SharedSequence": {
|
|
158
|
+
"forwardCompat": false
|
|
159
|
+
},
|
|
160
|
+
"ClassDeclaration_SharedString": {
|
|
161
|
+
"forwardCompat": false
|
|
162
|
+
},
|
|
163
|
+
"TypeAliasDeclaration_SharedStringSegment": {
|
|
164
|
+
"forwardCompat": false
|
|
165
|
+
},
|
|
166
|
+
"ClassDeclaration_SparseMatrix": {
|
|
167
|
+
"forwardCompat": false
|
|
168
|
+
},
|
|
169
|
+
"ClassDeclaration_SubSequence": {
|
|
170
|
+
"forwardCompat": false
|
|
171
|
+
}
|
|
172
|
+
}
|
|
119
173
|
}
|
|
120
174
|
}
|
|
@@ -130,8 +130,7 @@ export class Interval implements ISerializableInterval {
|
|
|
130
130
|
return 0;
|
|
131
131
|
}
|
|
132
132
|
return 0;
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
133
|
+
} else {
|
|
135
134
|
return endResult;
|
|
136
135
|
}
|
|
137
136
|
} else {
|
|
@@ -237,8 +236,7 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
237
236
|
return 0;
|
|
238
237
|
}
|
|
239
238
|
return 0;
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
239
|
+
} else {
|
|
242
240
|
return endResult;
|
|
243
241
|
}
|
|
244
242
|
} else {
|
|
@@ -318,7 +316,7 @@ function createPositionReference(
|
|
|
318
316
|
refType: ReferenceType,
|
|
319
317
|
op?: ISequencedDocumentMessage): LocalReference {
|
|
320
318
|
const segoff = client.getContainingSegment(pos, op);
|
|
321
|
-
if (segoff
|
|
319
|
+
if (segoff?.segment) {
|
|
322
320
|
const lref = new LocalReference(client, segoff.segment, segoff.offset, refType);
|
|
323
321
|
if (refType !== ReferenceType.Transient) {
|
|
324
322
|
client.addLocalReference(lref);
|
|
@@ -461,14 +459,12 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
461
459
|
this.intervalTree.map((interval: TInterval) => {
|
|
462
460
|
results.push(interval);
|
|
463
461
|
});
|
|
464
|
-
}
|
|
465
|
-
else {
|
|
462
|
+
} else {
|
|
466
463
|
this.intervalTree.mapBackward((interval: TInterval) => {
|
|
467
464
|
results.push(interval);
|
|
468
465
|
});
|
|
469
466
|
}
|
|
470
|
-
}
|
|
471
|
-
else {
|
|
467
|
+
} else {
|
|
472
468
|
const transientInterval: TInterval = this.helpers.create(
|
|
473
469
|
"transient",
|
|
474
470
|
start,
|
|
@@ -486,16 +482,14 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
486
482
|
results.push(interval);
|
|
487
483
|
}
|
|
488
484
|
});
|
|
489
|
-
}
|
|
490
|
-
else {
|
|
485
|
+
} else {
|
|
491
486
|
this.intervalTree.mapBackward((interval: TInterval) => {
|
|
492
487
|
if (transientInterval.compareEnd(interval) === 0) {
|
|
493
488
|
results.push(interval);
|
|
494
489
|
}
|
|
495
490
|
});
|
|
496
491
|
}
|
|
497
|
-
}
|
|
498
|
-
else {
|
|
492
|
+
} else {
|
|
499
493
|
// Start and (possibly) end provided. Walk the subtrees that may contain
|
|
500
494
|
// this start position.
|
|
501
495
|
const compareFn =
|
|
@@ -516,8 +510,7 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
516
510
|
this.intervalTree.intervals.walkExactMatchesForward(
|
|
517
511
|
compareFn, actionFn, continueLeftFn, continueRightFn,
|
|
518
512
|
);
|
|
519
|
-
}
|
|
520
|
-
else {
|
|
513
|
+
} else {
|
|
521
514
|
this.intervalTree.intervals.walkExactMatchesBackward(
|
|
522
515
|
compareFn, actionFn, continueLeftFn, continueRightFn,
|
|
523
516
|
);
|
|
@@ -953,7 +946,7 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
953
946
|
if (!this.attached) {
|
|
954
947
|
throw new Error("Attach must be called before accessing intervals");
|
|
955
948
|
}
|
|
956
|
-
if (typeof(id) !== "string") {
|
|
949
|
+
if (typeof (id) !== "string") {
|
|
957
950
|
throw new Error("Change API requires an ID that is a string");
|
|
958
951
|
}
|
|
959
952
|
if (!props) {
|
|
@@ -980,7 +973,7 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
980
973
|
if (!this.attached) {
|
|
981
974
|
throw new Error("Attach must be called before accessing intervals");
|
|
982
975
|
}
|
|
983
|
-
if (typeof(id) !== "string") {
|
|
976
|
+
if (typeof (id) !== "string") {
|
|
984
977
|
throw new Error("Change API requires an ID that is a string");
|
|
985
978
|
}
|
|
986
979
|
|
|
@@ -1090,8 +1083,7 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1090
1083
|
props: serializedInterval.properties,
|
|
1091
1084
|
});
|
|
1092
1085
|
}
|
|
1093
|
-
}
|
|
1094
|
-
else {
|
|
1086
|
+
} else {
|
|
1095
1087
|
// If there are pending changes with this ID, don't apply the remote start/end change, as the local ack
|
|
1096
1088
|
// should be the winning change.
|
|
1097
1089
|
// Note that the ID is in the property bag only to allow us to find the interval.
|
package/src/mapKernel.ts
CHANGED
|
@@ -54,9 +54,9 @@ interface IMapMessageHandler {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
interface IMapMessageLocalMetadata{
|
|
57
|
-
pendingClearMessageId?: number
|
|
58
|
-
pendingMessageId?: number
|
|
59
|
-
lastProcessedSeq: number
|
|
57
|
+
pendingClearMessageId?: number;
|
|
58
|
+
pendingMessageId?: number;
|
|
59
|
+
lastProcessedSeq: number;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/**
|
|
@@ -510,7 +510,7 @@ export class MapKernel implements IValueTypeCreator {
|
|
|
510
510
|
const mapLocalMetadata: Partial<IMapMessageLocalMetadata> = localOpMetadata;
|
|
511
511
|
// we don't know how to rebase these operations, so if any other op has come in
|
|
512
512
|
// we will fail.
|
|
513
|
-
if(this.lastProcessedSeq !== mapLocalMetadata?.lastProcessedSeq) {
|
|
513
|
+
if (this.lastProcessedSeq !== mapLocalMetadata?.lastProcessedSeq) {
|
|
514
514
|
throw new Error("SharedInterval does not support reconnect in presence of external changes");
|
|
515
515
|
}
|
|
516
516
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -777,7 +777,7 @@ export class MapKernel implements IValueTypeCreator {
|
|
|
777
777
|
this.eventEmitter.emit("valueChanged", event, local, message, this.eventEmitter);
|
|
778
778
|
},
|
|
779
779
|
submit: (op: IMapValueTypeOperation) => {
|
|
780
|
-
this.submitMessage(op, {lastProcessedSeq: this.lastProcessedSeq});
|
|
780
|
+
this.submitMessage(op, { lastProcessedSeq: this.lastProcessedSeq });
|
|
781
781
|
},
|
|
782
782
|
getStashedOpLocalMetadata: (op: IMapValueTypeOperation) => {
|
|
783
783
|
assert(false, 0x016 /* "apply stashed op not implemented for custom value type ops" */);
|
|
@@ -799,7 +799,7 @@ export class MapKernel implements IValueTypeCreator {
|
|
|
799
799
|
*/
|
|
800
800
|
private submitMapClearMessage(op: IMapClearOperation): void {
|
|
801
801
|
const pendingClearMessageId = this.getMapClearMessageLocalMetadata(op);
|
|
802
|
-
this.submitMessage(op, {pendingClearMessageId, lastProcessedSeq: this.lastProcessedSeq});
|
|
802
|
+
this.submitMessage(op, { pendingClearMessageId, lastProcessedSeq: this.lastProcessedSeq });
|
|
803
803
|
}
|
|
804
804
|
|
|
805
805
|
private getMapKeyMessageLocalMetadata(op: IMapKeyOperation): number {
|
|
@@ -814,7 +814,7 @@ export class MapKernel implements IValueTypeCreator {
|
|
|
814
814
|
*/
|
|
815
815
|
private submitMapKeyMessage(op: IMapKeyOperation): void {
|
|
816
816
|
const pendingMessageId = this.getMapKeyMessageLocalMetadata(op);
|
|
817
|
-
this.submitMessage(op, {pendingMessageId, lastProcessedSeq: this.lastProcessedSeq});
|
|
817
|
+
this.submitMessage(op, { pendingMessageId, lastProcessedSeq: this.lastProcessedSeq });
|
|
818
818
|
}
|
|
819
819
|
|
|
820
820
|
/**
|
|
@@ -839,7 +839,7 @@ export class MapKernel implements IValueTypeCreator {
|
|
|
839
839
|
},
|
|
840
840
|
};
|
|
841
841
|
// Send the localOpMetadata as undefined because we don't care about the ack.
|
|
842
|
-
this.submitMessage(op, {lastProcessedSeq: this.lastProcessedSeq});
|
|
842
|
+
this.submitMessage(op, { lastProcessedSeq: this.lastProcessedSeq });
|
|
843
843
|
|
|
844
844
|
const event: IValueChanged = { key, previousValue };
|
|
845
845
|
this.eventEmitter.emit("valueChanged", event, true, null, this.eventEmitter);
|
package/src/packageVersion.ts
CHANGED
package/src/sequence.ts
CHANGED
|
@@ -175,7 +175,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
175
175
|
) {
|
|
176
176
|
super(id, dataStoreRuntime, attributes);
|
|
177
177
|
|
|
178
|
-
this.loadedDeferred.promise.catch((error)=>{
|
|
178
|
+
this.loadedDeferred.promise.catch((error) => {
|
|
179
179
|
this.logger.sendErrorEvent({ eventName: "SequenceLoadFailed" }, error);
|
|
180
180
|
});
|
|
181
181
|
|
|
@@ -294,6 +294,9 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
294
294
|
return this.client.getRangeExtentsOfPosition(pos);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
+
/**
|
|
298
|
+
* @deprecated - use createLocalReferencePosition
|
|
299
|
+
*/
|
|
297
300
|
public createPositionReference(
|
|
298
301
|
segment: T,
|
|
299
302
|
offset: number,
|
|
@@ -305,12 +308,27 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
305
308
|
return lref;
|
|
306
309
|
}
|
|
307
310
|
|
|
311
|
+
public createLocalReferencePosition(
|
|
312
|
+
segment: T,
|
|
313
|
+
offset: number,
|
|
314
|
+
refType: ReferenceType,
|
|
315
|
+
properties: PropertySet | undefined): ReferencePosition {
|
|
316
|
+
return this.client.createLocalReferencePosition(
|
|
317
|
+
segment,
|
|
318
|
+
offset,
|
|
319
|
+
refType,
|
|
320
|
+
properties);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* @deprecated - use localReferencePositionToPosition
|
|
325
|
+
*/
|
|
308
326
|
public localRefToPos(localRef: LocalReference) {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
327
|
+
return this.client.localReferencePositionToPosition(localRef);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
public localReferencePositionToPosition(lref: ReferencePosition): number {
|
|
331
|
+
return this.client.localReferencePositionToPosition(lref);
|
|
314
332
|
}
|
|
315
333
|
|
|
316
334
|
/**
|
|
@@ -355,12 +373,22 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
355
373
|
}
|
|
356
374
|
}
|
|
357
375
|
|
|
376
|
+
/**
|
|
377
|
+
* @deprecated - use createLocalReferencePosition
|
|
378
|
+
*/
|
|
358
379
|
public addLocalReference(lref: LocalReference) {
|
|
359
380
|
return this.client.addLocalReference(lref);
|
|
360
381
|
}
|
|
361
382
|
|
|
383
|
+
/**
|
|
384
|
+
* @deprecated - use removeLocalReferencePosition
|
|
385
|
+
*/
|
|
362
386
|
public removeLocalReference(lref: LocalReference) {
|
|
363
|
-
return this.client.
|
|
387
|
+
return this.client.removeLocalReferencePosition(lref);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
public removeLocalReferencePosition(lref: ReferencePosition) {
|
|
391
|
+
return this.client.removeLocalReferencePosition(lref);
|
|
364
392
|
}
|
|
365
393
|
|
|
366
394
|
/**
|
|
@@ -539,12 +567,12 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
539
567
|
|| m.sequenceNumber <= collabWindow.currentSeq) {
|
|
540
568
|
throw new Error(`Invalid catchup operations in snapshot: ${
|
|
541
569
|
JSON.stringify({
|
|
542
|
-
op:{
|
|
570
|
+
op: {
|
|
543
571
|
seq: m.sequenceNumber,
|
|
544
572
|
minSeq: m.minimumSequenceNumber,
|
|
545
|
-
refSeq:m.referenceSequenceNumber,
|
|
573
|
+
refSeq: m.referenceSequenceNumber,
|
|
546
574
|
},
|
|
547
|
-
collabWindow:{
|
|
575
|
+
collabWindow: {
|
|
548
576
|
seq: collabWindow.currentSeq,
|
|
549
577
|
minSeq: collabWindow.minSeq,
|
|
550
578
|
},
|
|
@@ -597,7 +625,10 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
597
625
|
this.loadFinished();
|
|
598
626
|
}
|
|
599
627
|
|
|
600
|
-
|
|
628
|
+
/**
|
|
629
|
+
* {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
|
|
630
|
+
*/
|
|
631
|
+
protected applyStashedOp(content: any): unknown {
|
|
601
632
|
return this.client.applyStashedOp(content);
|
|
602
633
|
}
|
|
603
634
|
|
|
@@ -160,7 +160,7 @@ export class SharedIntervalCollection<TInterval extends ISerializableInterval =
|
|
|
160
160
|
*/
|
|
161
161
|
protected async loadCore(storage: IChannelStorageService) {
|
|
162
162
|
const blob = await storage.readBlob(snapshotFileName);
|
|
163
|
-
const header = bufferToString(blob,"utf8");
|
|
163
|
+
const header = bufferToString(blob, "utf8");
|
|
164
164
|
this.intervalMapKernel.populate(header);
|
|
165
165
|
}
|
|
166
166
|
|
package/src/sparsematrix.ts
CHANGED
|
@@ -349,7 +349,7 @@ export class SparseMatrix extends SharedSegmentSequence<MatrixSegment> {
|
|
|
349
349
|
const removeColEnd = srcCol + numCols;
|
|
350
350
|
const ops = [];
|
|
351
351
|
|
|
352
|
-
for (let r = 0, rowStart = 0; r < this.numRows; r
|
|
352
|
+
for (let r = 0, rowStart = 0; r < this.numRows; r++, rowStart += maxCols) {
|
|
353
353
|
ops.push(this.client.removeRangeLocal(rowStart + removeColStart, rowStart + removeColEnd));
|
|
354
354
|
const insertPos = rowStart + destCol;
|
|
355
355
|
const segment = new PaddingSegment(numCols);
|