Automation: Main Next Integrate
This commit is contained in:
Коммит
23c55c777e
|
@ -414,7 +414,9 @@ export class LocalReferenceCollection {
|
||||||
for (const iterable of refs) {
|
for (const iterable of refs) {
|
||||||
for (const lref of iterable) {
|
for (const lref of iterable) {
|
||||||
assertLocalReferences(lref);
|
assertLocalReferences(lref);
|
||||||
if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {
|
if (refTypeIncludesFlag(lref, ReferenceType.StayOnRemove)) {
|
||||||
|
continue;
|
||||||
|
} else if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {
|
||||||
lref.callbacks?.beforeSlide?.();
|
lref.callbacks?.beforeSlide?.();
|
||||||
beforeRefs.unshift(lref);
|
beforeRefs.unshift(lref);
|
||||||
lref.link(this.segment, 0, beforeRefs.next);
|
lref.link(this.segment, 0, beforeRefs.next);
|
||||||
|
@ -442,7 +444,9 @@ export class LocalReferenceCollection {
|
||||||
for (const iterable of refs) {
|
for (const iterable of refs) {
|
||||||
for (const lref of iterable) {
|
for (const lref of iterable) {
|
||||||
assertLocalReferences(lref);
|
assertLocalReferences(lref);
|
||||||
if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {
|
if (refTypeIncludesFlag(lref, ReferenceType.StayOnRemove)) {
|
||||||
|
continue;
|
||||||
|
} else if (refTypeIncludesFlag(lref, ReferenceType.SlideOnRemove)) {
|
||||||
lref.callbacks?.beforeSlide?.();
|
lref.callbacks?.beforeSlide?.();
|
||||||
afterRefs.enqueue(lref);
|
afterRefs.enqueue(lref);
|
||||||
lref.link(this.segment, lastOffset, afterRefs.prev);
|
lref.link(this.segment, lastOffset, afterRefs.prev);
|
||||||
|
|
|
@ -140,6 +140,35 @@ describe("SharedString interval collections", () => {
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("remain consistent on double-delete", () => {
|
||||||
|
let collection: IntervalCollection<SequenceInterval>;
|
||||||
|
let collection2: IntervalCollection<SequenceInterval>;
|
||||||
|
beforeEach(() => {
|
||||||
|
sharedString.insertText(0, "01234");
|
||||||
|
collection = sharedString.getIntervalCollection("test");
|
||||||
|
collection2 = sharedString.getIntervalCollection("test");
|
||||||
|
containerRuntimeFactory.processAllMessages();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("causing references to slide forward", () => {
|
||||||
|
sharedString2.removeRange(2, 3);
|
||||||
|
collection.add(2, 2, IntervalType.SlideOnRemove);
|
||||||
|
sharedString.removeRange(2, 4);
|
||||||
|
containerRuntimeFactory.processAllMessages();
|
||||||
|
assertIntervals(sharedString, collection, [{ start: 2, end: 2 }]);
|
||||||
|
assertIntervals(sharedString2, collection2, [{ start: 2, end: 2 }]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("causing references to slide backward", () => {
|
||||||
|
sharedString2.removeRange(2, 3);
|
||||||
|
collection.add(2, 2, IntervalType.SlideOnRemove);
|
||||||
|
sharedString.removeRange(2, 5);
|
||||||
|
containerRuntimeFactory.processAllMessages();
|
||||||
|
assertIntervals(sharedString, collection, [{ start: 1, end: 1 }]);
|
||||||
|
assertIntervals(sharedString2, collection2, [{ start: 1, end: 1 }]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it("errors creating invalid intervals", () => {
|
it("errors creating invalid intervals", () => {
|
||||||
const collection1 = sharedString.getIntervalCollection("test");
|
const collection1 = sharedString.getIntervalCollection("test");
|
||||||
containerRuntimeFactory.processAllMessages();
|
containerRuntimeFactory.processAllMessages();
|
||||||
|
|
|
@ -85,6 +85,7 @@
|
||||||
"@fluidframework/view-interfaces": ">=2.0.0-internal.1.0.0 <2.0.0-internal.2.0.0",
|
"@fluidframework/view-interfaces": ">=2.0.0-internal.1.0.0 <2.0.0-internal.2.0.0",
|
||||||
"@fluidframework/web-code-loader": ">=2.0.0-internal.1.0.0 <2.0.0-internal.2.0.0",
|
"@fluidframework/web-code-loader": ">=2.0.0-internal.1.0.0 <2.0.0-internal.2.0.0",
|
||||||
"axios": "^0.26.0",
|
"axios": "^0.26.0",
|
||||||
|
"buffer": "^6.0.3",
|
||||||
"express": "^4.16.3",
|
"express": "^4.16.3",
|
||||||
"nconf": "^0.11.4",
|
"nconf": "^0.11.4",
|
||||||
"sillyname": "^0.1.0",
|
"sillyname": "^0.1.0",
|
||||||
|
|
|
@ -33,7 +33,8 @@ module.exports = {
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['.tsx', '.ts', '.js'],
|
extensions: ['.tsx', '.ts', '.js'],
|
||||||
fallback:{
|
fallback:{
|
||||||
"url": require.resolve("url")
|
"url": require.resolve("url"),
|
||||||
|
"buffer": require.resolve("buffer")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Some of Fluid's dependencies depend on things like global and process.env.NODE_ENV being defined. This won't be set in Webpack 5 by default, so we are setting it with the define plugin.
|
// Some of Fluid's dependencies depend on things like global and process.env.NODE_ENV being defined. This won't be set in Webpack 5 by default, so we are setting it with the define plugin.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче