@eclipse-glsp/server 1.1.0-RC05 → 1.1.0-next.44aae0c.44
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/lib/common/command/command-stack.d.ts +7 -6
- package/lib/common/command/command-stack.d.ts.map +1 -1
- package/lib/common/command/command-stack.js +6 -6
- package/lib/common/command/command-stack.js.map +1 -1
- package/lib/common/command/command-stack.spec.js +31 -31
- package/lib/common/command/command-stack.spec.js.map +1 -1
- package/lib/common/command/command.d.ts +7 -6
- package/lib/common/command/command.d.ts.map +1 -1
- package/lib/common/command/command.js +19 -15
- package/lib/common/command/command.js.map +1 -1
- package/lib/common/command/command.spec.js +8 -8
- package/lib/common/command/command.spec.js.map +1 -1
- package/lib/common/command/recording-command.d.ts +8 -8
- package/lib/common/command/recording-command.d.ts.map +1 -1
- package/lib/common/command/recording-command.js +4 -4
- package/lib/common/command/recording-command.js.map +1 -1
- package/lib/common/command/recording-command.spec.js +8 -8
- package/lib/common/command/recording-command.spec.js.map +1 -1
- package/lib/common/command/undo-redo-action-handler.d.ts +2 -2
- package/lib/common/command/undo-redo-action-handler.d.ts.map +1 -1
- package/lib/common/command/undo-redo-action-handler.js +4 -4
- package/lib/common/command/undo-redo-action-handler.js.map +1 -1
- package/lib/common/operations/operation-action-handler.d.ts +1 -1
- package/lib/common/operations/operation-action-handler.d.ts.map +1 -1
- package/lib/common/operations/operation-action-handler.js +3 -3
- package/lib/common/operations/operation-action-handler.js.map +1 -1
- package/lib/common/test/mock-util.d.ts +7 -1
- package/lib/common/test/mock-util.d.ts.map +1 -1
- package/lib/common/test/mock-util.js +23 -1
- package/lib/common/test/mock-util.js.map +1 -1
- package/package.json +4 -4
- package/src/common/command/command-stack.spec.ts +32 -32
- package/src/common/command/command-stack.ts +10 -9
- package/src/common/command/command.spec.ts +9 -10
- package/src/common/command/command.ts +23 -19
- package/src/common/command/recording-command.spec.ts +8 -8
- package/src/common/command/recording-command.ts +8 -8
- package/src/common/command/undo-redo-action-handler.ts +4 -4
- package/src/common/operations/operation-action-handler.ts +3 -3
- package/src/common/test/mock-util.ts +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording-command.js","sourceRoot":"","sources":["../../../src/common/command/recording-command.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAIlF,6CAA6C;AAI7C;;;GAGG;AACH,MAAsB,wBAAwB;IAI1C,OAAO;
|
|
1
|
+
{"version":3,"file":"recording-command.js","sourceRoot":"","sources":["../../../src/common/command/recording-command.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAIlF,6CAA6C;AAI7C;;;GAGG;AACH,MAAsB,wBAAwB;IAI1C,KAAK,CAAC,OAAO;QACT,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAcS,UAAU,CAAC,MAAkB,EAAE,KAA4B;QACjE,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACO,SAAS,CAAC,MAAkB;QAClC,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACzD;IACL,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACzD;IACL,CAAC;IAED,OAAO;QACH,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAChD,CAAC;CACJ;AArDD,4DAqDC;AAED;;;GAGG;AACH,MAAa,gBAA2D,SAAQ,wBAAoC;IAChH,YAAsB,UAAsB,EAAY,SAAmC;QACvF,KAAK,EAAE,CAAC;QADU,eAAU,GAAV,UAAU,CAAY;QAAY,cAAS,GAAT,SAAS,CAA0B;IAE3F,CAAC;IAES,aAAa;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ;AARD,4CAQC;AAED;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,wBAA0C;IAClF,YAAsB,UAAsB,EAAY,UAA4B,EAAY,SAAmC;QAC/H,KAAK,EAAE,CAAC;QADU,eAAU,GAAV,UAAU,CAAY;QAAY,eAAU,GAAV,UAAU,CAAkB;QAAY,cAAS,GAAT,SAAS,CAA0B;IAEnI,CAAC;IAEQ,KAAK,CAAC,OAAO;QAClB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAES,aAAa;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEkB,UAAU,CAAC,UAA4B,EAAE,KAA4B;QACpF,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACJ;AAnBD,wDAmBC"}
|
|
@@ -28,34 +28,34 @@ describe('RecordingCommand', () => {
|
|
|
28
28
|
};
|
|
29
29
|
beforeState = JSON.parse(JSON.stringify(jsonObject));
|
|
30
30
|
});
|
|
31
|
-
it('should be undoable after execution', () => {
|
|
31
|
+
it('should be undoable after execution', async () => {
|
|
32
32
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
33
33
|
const command = new recording_command_1.RecordingCommand(jsonObject, () => { });
|
|
34
34
|
(0, chai_1.expect)(command.canUndo()).to.be.false;
|
|
35
|
-
command.execute();
|
|
35
|
+
await command.execute();
|
|
36
36
|
(0, chai_1.expect)(command.canUndo()).to.be.true;
|
|
37
37
|
});
|
|
38
|
-
it('should restore the pre execution state when undo is called', () => {
|
|
38
|
+
it('should restore the pre execution state when undo is called', async () => {
|
|
39
39
|
const command = new recording_command_1.RecordingCommand(jsonObject, () => {
|
|
40
40
|
jsonObject.string = 'bar';
|
|
41
41
|
jsonObject.flag = false;
|
|
42
42
|
jsonObject.maybe = { hello: 'world' };
|
|
43
43
|
});
|
|
44
|
-
command.execute();
|
|
44
|
+
await command.execute();
|
|
45
45
|
(0, chai_1.expect)(jsonObject).to.not.be.deep.equals(beforeState);
|
|
46
|
-
command.undo();
|
|
46
|
+
await command.undo();
|
|
47
47
|
(0, chai_1.expect)(jsonObject).to.be.deep.equals(beforeState);
|
|
48
48
|
});
|
|
49
|
-
it('should restore the post execution state when redo is called', () => {
|
|
49
|
+
it('should restore the post execution state when redo is called', async () => {
|
|
50
50
|
const command = new recording_command_1.RecordingCommand(jsonObject, () => {
|
|
51
51
|
jsonObject.string = 'bar';
|
|
52
52
|
jsonObject.flag = false;
|
|
53
53
|
jsonObject.maybe = { hello: 'world' };
|
|
54
54
|
});
|
|
55
|
-
command.execute();
|
|
55
|
+
await command.execute();
|
|
56
56
|
const afterState = JSON.parse(JSON.stringify(jsonObject));
|
|
57
57
|
jsonObject = JSON.parse(JSON.stringify(afterState));
|
|
58
|
-
command.redo();
|
|
58
|
+
await command.redo();
|
|
59
59
|
(0, chai_1.expect)(jsonObject).to.be.deep.equals(afterState);
|
|
60
60
|
});
|
|
61
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording-command.spec.js","sourceRoot":"","sources":["../../../src/common/command/recording-command.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;AAGlF,+BAA8B;AAC9B,2DAAuD;AASvD,IAAI,UAAqB,CAAC;AAE1B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,IAAI,WAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACZ,UAAU,GAAG;YACT,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,IAAI;SACb,CAAC;QACF,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,
|
|
1
|
+
{"version":3,"file":"recording-command.spec.js","sourceRoot":"","sources":["../../../src/common/command/recording-command.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;AAGlF,+BAA8B;AAC9B,2DAAuD;AASvD,IAAI,UAAqB,CAAC;AAE1B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,IAAI,WAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACZ,UAAU,GAAG;YACT,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,IAAI;SACb,CAAC;QACF,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,oCAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3D,IAAA,aAAM,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACtC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,aAAM,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,oCAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;YAClD,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC1B,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;YACxB,UAAU,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,OAAO,GAAG,IAAI,oCAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;YAClD,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC1B,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;YACxB,UAAU,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -22,7 +22,7 @@ export declare class UndoRedoActionHandler implements ActionHandler {
|
|
|
22
22
|
protected modelSubmissionHandler: ModelSubmissionHandler;
|
|
23
23
|
readonly actionKinds: string[];
|
|
24
24
|
execute(action: Action): MaybePromise<Action[]>;
|
|
25
|
-
protected undo():
|
|
26
|
-
protected redo():
|
|
25
|
+
protected undo(): Promise<Action[]>;
|
|
26
|
+
protected redo(): Promise<Action[]>;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=undo-redo-action-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-redo-action-handler.d.ts","sourceRoot":"","sources":["../../../src/common/command/undo-redo-action-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,MAAM,EAAE,YAAY,EAA0B,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBACa,qBAAsB,YAAW,aAAa;IAEvD,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAEzD,QAAQ,CAAC,WAAW,WAAsC;IAE1D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"undo-redo-action-handler.d.ts","sourceRoot":"","sources":["../../../src/common/command/undo-redo-action-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,MAAM,EAAE,YAAY,EAA0B,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBACa,qBAAsB,YAAW,aAAa;IAEvD,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAEzD,QAAQ,CAAC,WAAW,WAAsC;IAE1D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;cAS/B,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;cAQzB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAO5C"}
|
|
@@ -42,16 +42,16 @@ let UndoRedoActionHandler = class UndoRedoActionHandler {
|
|
|
42
42
|
}
|
|
43
43
|
return [];
|
|
44
44
|
}
|
|
45
|
-
undo() {
|
|
45
|
+
async undo() {
|
|
46
46
|
if (this.commandStack.canUndo()) {
|
|
47
|
-
this.commandStack.undo();
|
|
47
|
+
await this.commandStack.undo();
|
|
48
48
|
return this.modelSubmissionHandler.submitModel('undo');
|
|
49
49
|
}
|
|
50
50
|
return [];
|
|
51
51
|
}
|
|
52
|
-
redo() {
|
|
52
|
+
async redo() {
|
|
53
53
|
if (this.commandStack.canRedo()) {
|
|
54
|
-
this.commandStack.redo();
|
|
54
|
+
await this.commandStack.redo();
|
|
55
55
|
return this.modelSubmissionHandler.submitModel('redo');
|
|
56
56
|
}
|
|
57
57
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-redo-action-handler.js","sourceRoot":"","sources":["../../../src/common/command/undo-redo-action-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,qDAAsF;AACtF,yCAA+C;AAE/C,yFAAoF;AACpF,mDAA+C;AAGxC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QAOM,gBAAW,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,qBAAU,CAAC,IAAI,CAAC,CAAC;IA0B9D,CAAC;IAxBG,OAAO,CAAC,MAAc;QAClB,IAAI,qBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACtB;aAAM,IAAI,qBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACtB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,IAAI;
|
|
1
|
+
{"version":3,"file":"undo-redo-action-handler.js","sourceRoot":"","sources":["../../../src/common/command/undo-redo-action-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,qDAAsF;AACtF,yCAA+C;AAE/C,yFAAoF;AACpF,mDAA+C;AAGxC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QAOM,gBAAW,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,qBAAU,CAAC,IAAI,CAAC,CAAC;IA0B9D,CAAC;IAxBG,OAAO,CAAC,MAAc;QAClB,IAAI,qBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACtB;aAAM,IAAI,qBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACtB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC1D;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC1D;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ,CAAA;AAhCG;IAAC,IAAA,kBAAM,EAAC,4BAAY,CAAC;;2DACgB;AAErC;IAAC,IAAA,kBAAM,EAAC,iDAAsB,CAAC;8BACG,iDAAsB;qEAAC;AALhD,qBAAqB;IADjC,IAAA,sBAAU,GAAE;GACA,qBAAqB,CAiCjC;AAjCY,sDAAqB"}
|
|
@@ -31,7 +31,7 @@ export declare class OperationActionHandler implements ActionHandler {
|
|
|
31
31
|
execute(action: Operation): MaybePromise<Action[]>;
|
|
32
32
|
protected executeOperation(operation: Operation): MaybePromise<Action[]>;
|
|
33
33
|
protected executeHandler(operation: Operation, handler: OperationHandler): Promise<Action[]>;
|
|
34
|
-
protected executeCommand(command: Command): void
|
|
34
|
+
protected executeCommand(command: Command): Promise<void>;
|
|
35
35
|
protected submitModel(): MaybePromise<Action[]>;
|
|
36
36
|
handles(action: Action): boolean;
|
|
37
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-action-handler.d.ts","sourceRoot":"","sources":["../../../src/common/operations/operation-action-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAuB,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,qBACa,sBAAuB,YAAW,aAAa;IAaxB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAX9D,SAAS,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAG7D,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGzD,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IAGjC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;gBAEI,WAAW,EAAE,MAAM,EAAE;IAE9D,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAclD,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;cAQxD,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"operation-action-handler.d.ts","sourceRoot":"","sources":["../../../src/common/operations/operation-action-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAuB,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,qBACa,sBAAuB,YAAW,aAAa;IAaxB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAX9D,SAAS,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAG7D,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGzD,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IAGjC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;gBAEI,WAAW,EAAE,MAAM,EAAE;IAE9D,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAclD,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;cAQxD,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAQlF,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,SAAS,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;IAI/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IAEH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,SAAS;CAGrH"}
|
|
@@ -64,12 +64,12 @@ let OperationActionHandler = OperationActionHandler_1 = class OperationActionHan
|
|
|
64
64
|
async executeHandler(operation, handler) {
|
|
65
65
|
const command = await handler.execute(operation);
|
|
66
66
|
if (command) {
|
|
67
|
-
this.executeCommand(command);
|
|
67
|
+
await this.executeCommand(command);
|
|
68
68
|
}
|
|
69
69
|
return this.modelSubmissionHandler.submitModel('operation');
|
|
70
70
|
}
|
|
71
|
-
executeCommand(command) {
|
|
72
|
-
this.commandStack.execute(command);
|
|
71
|
+
async executeCommand(command) {
|
|
72
|
+
return this.commandStack.execute(command);
|
|
73
73
|
}
|
|
74
74
|
submitModel() {
|
|
75
75
|
return this.modelSubmissionHandler.submitModel('operation');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-action-handler.js","sourceRoot":"","sources":["../../../src/common/operations/operation-action-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAA8F;AAC9F,yCAA+C;AAG/C,4DAAwD;AACxD,mEAAuD;AACvD,+DAA2D;AAC3D,yFAAoF;AACpF,kEAA6D;AAE7D,6EAAwE;AAGjE,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAa/B,YAAyC,WAAqB;QAArB,gBAAW,GAAX,WAAW,CAAU;IAAG,CAAC;IAElE,OAAO,CAAC,MAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,IAAI,mCAAe,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAC5B,OAAO;gBACH,8BAAmB,CAAC,MAAM,CAAC,4DAA4D,MAAM,CAAC,IAAI,EAAE,EAAE;oBAClG,QAAQ,EAAE,SAAS;iBACtB,CAAC;aACL,CAAC;SACL;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAES,gBAAgB,CAAC,SAAoB;QAC3C,MAAM,gBAAgB,GAAG,wBAAsB,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9G,IAAI,gBAAgB,EAAE;YAClB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;SAC3D;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,SAAoB,EAAE,OAAyB;QAC1E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"operation-action-handler.js","sourceRoot":"","sources":["../../../src/common/operations/operation-action-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAA8F;AAC9F,yCAA+C;AAG/C,4DAAwD;AACxD,mEAAuD;AACvD,+DAA2D;AAC3D,yFAAoF;AACpF,kEAA6D;AAE7D,6EAAwE;AAGjE,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAa/B,YAAyC,WAAqB;QAArB,gBAAW,GAAX,WAAW,CAAU;IAAG,CAAC;IAElE,OAAO,CAAC,MAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,IAAI,mCAAe,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAC5B,OAAO;gBACH,8BAAmB,CAAC,MAAM,CAAC,4DAA4D,MAAM,CAAC,IAAI,EAAE,EAAE;oBAClG,QAAQ,EAAE,SAAS;iBACtB,CAAC;aACL,CAAC;SACL;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAES,gBAAgB,CAAC,SAAoB;QAC3C,MAAM,gBAAgB,GAAG,wBAAsB,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9G,IAAI,gBAAgB,EAAE;YAClB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;SAC3D;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,SAAoB,EAAE,OAAyB;QAC1E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE;YACT,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACtC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,OAAgB;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAES,WAAW;QACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IAEH,MAAM,CAAC,mBAAmB,CAAC,SAAoB,EAAE,QAAkC;QAC/E,OAAO,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;CACJ,CAAA;AA/DG;IAAC,IAAA,kBAAM,EAAC,qDAAwB,CAAC;8BACG,qDAAwB;wEAAC;AAE7D;IAAC,IAAA,kBAAM,EAAC,iDAAsB,CAAC;8BACG,iDAAsB;sEAAC;AAEzD;IAAC,IAAA,kBAAM,EAAC,wBAAU,CAAC;;0DACc;AAEjC;IAAC,IAAA,kBAAM,EAAC,4BAAY,CAAC;;4DACgB;AAX5B,sBAAsB;IADlC,IAAA,sBAAU,GAAE;IAcI,WAAA,IAAA,kBAAM,EAAC,gCAAU,CAAC,CAAA;;GAbtB,sBAAsB,CAgElC;AAhEY,wDAAsB"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { GEdge, GModelElement, GModelElementConstructor, GNode } from '@eclipse-glsp/graph';
|
|
17
|
-
import { Action, ActionMessage, Args, CreateNodeOperation, EdgeTypeHint, InitializeClientSessionParameters, MaybeArray, Point, RequestEditValidationAction, ShapeTypeHint, ValidationStatus } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { Action, ActionMessage, Args, CreateNodeOperation, EdgeTypeHint, InitializeClientSessionParameters, MaybeArray, MaybePromise, Point, RequestEditValidationAction, ShapeTypeHint, ValidationStatus } from '@eclipse-glsp/protocol';
|
|
18
18
|
import { Container } from 'inversify';
|
|
19
19
|
import { MessageConnection } from 'vscode-jsonrpc';
|
|
20
20
|
import { ActionDispatcher } from '../actions/action-dispatcher';
|
|
@@ -34,6 +34,12 @@ import { ClientSessionListener } from '../session/client-session-listener';
|
|
|
34
34
|
import { ClientSessionManager } from '../session/client-session-manager';
|
|
35
35
|
import { Logger, LogLevel } from '../utils/logger';
|
|
36
36
|
export declare function delay(ms: number): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Consumes a maybe async function and checks for error
|
|
39
|
+
* @param method - The function to check
|
|
40
|
+
* @param message - Optional message to match with error message
|
|
41
|
+
*/
|
|
42
|
+
export declare function expectToThrowAsync(toEvaluate: () => MaybePromise<void>, message?: string): Promise<void>;
|
|
37
43
|
export declare function createClientSession(id: string, diagramType: string, container?: Container, actionDispatcher?: StubActionDispatcher): ClientSession;
|
|
38
44
|
export declare class StubActionHandler implements ActionHandler {
|
|
39
45
|
actionKinds: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-util.d.ts","sourceRoot":"","sources":["../../../src/common/test/mock-util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACH,MAAM,EACN,aAAa,EACb,IAAI,EACJ,mBAAmB,EACnB,YAAY,EACZ,iCAAiC,EACjC,UAAU,EACV,KAAK,EACL,2BAA2B,EAC3B,aAAa,EACb,gBAAgB,EACnB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"mock-util.d.ts","sourceRoot":"","sources":["../../../src/common/test/mock-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
18
18
|
// Stub-implementation classes used for unit testing
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.StubCommand = exports.StubClientSessionInitializer = exports.stubActionHandlerFactory = exports.TestContextEditValidator = exports.TestLabelEditValidator = exports.StubDiagramConfiguration = exports.StubGLSPServerListener = exports.StubGLSPClientProxy = exports.StubClientSessionListener = exports.StubLogger = exports.StubClientSessionManager = exports.StubClientSessionFactory = exports.StubActionDispatcher = exports.StubCreateEdgeOperationHandler = exports.StubCreateNodeOperationHandler = exports.StubActionHandler = exports.createClientSession = exports.delay = void 0;
|
|
20
|
+
exports.StubCommand = exports.StubClientSessionInitializer = exports.stubActionHandlerFactory = exports.TestContextEditValidator = exports.TestLabelEditValidator = exports.StubDiagramConfiguration = exports.StubGLSPServerListener = exports.StubGLSPClientProxy = exports.StubClientSessionListener = exports.StubLogger = exports.StubClientSessionManager = exports.StubClientSessionFactory = exports.StubActionDispatcher = exports.StubCreateEdgeOperationHandler = exports.StubCreateNodeOperationHandler = exports.StubActionHandler = exports.createClientSession = exports.expectToThrowAsync = exports.delay = void 0;
|
|
21
21
|
const graph_1 = require("@eclipse-glsp/graph");
|
|
22
22
|
const protocol_1 = require("@eclipse-glsp/protocol");
|
|
23
|
+
const chai_1 = require("chai");
|
|
23
24
|
const inversify_1 = require("inversify");
|
|
24
25
|
const diagram_configuration_1 = require("../diagram/diagram-configuration");
|
|
25
26
|
const label_edit_validator_1 = require("../features/directediting/label-edit-validator");
|
|
@@ -29,6 +30,27 @@ async function delay(ms) {
|
|
|
29
30
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
30
31
|
}
|
|
31
32
|
exports.delay = delay;
|
|
33
|
+
/**
|
|
34
|
+
* Consumes a maybe async function and checks for error
|
|
35
|
+
* @param method - The function to check
|
|
36
|
+
* @param message - Optional message to match with error message
|
|
37
|
+
*/
|
|
38
|
+
async function expectToThrowAsync(toEvaluate, message) {
|
|
39
|
+
let err = undefined;
|
|
40
|
+
try {
|
|
41
|
+
await toEvaluate();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
err = error;
|
|
45
|
+
}
|
|
46
|
+
if (message) {
|
|
47
|
+
(0, chai_1.expect)(err === null || err === void 0 ? void 0 : err.message).to.be.equal(message);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
(0, chai_1.expect)(err).to.be.an('Error');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.expectToThrowAsync = expectToThrowAsync;
|
|
32
54
|
function createClientSession(id, diagramType, container = new inversify_1.Container(), actionDispatcher = new StubActionDispatcher()) {
|
|
33
55
|
return {
|
|
34
56
|
id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-util.js","sourceRoot":"","sources":["../../../src/common/test/mock-util.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yDAAyD;AACzD,oDAAoD;;;AAEpD,+CAA4F;AAC5F,
|
|
1
|
+
{"version":3,"file":"mock-util.js","sourceRoot":"","sources":["../../../src/common/test/mock-util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/server",
|
|
3
|
-
"version": "1.1.0-
|
|
3
|
+
"version": "1.1.0-next.44aae0c.44+44aae0c",
|
|
4
4
|
"description": "A js server framework for Eclipse GLSP",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eclipse",
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"watch": "tsc -w"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@eclipse-glsp/graph": "1.1.0-
|
|
63
|
-
"@eclipse-glsp/protocol": "
|
|
62
|
+
"@eclipse-glsp/graph": "1.1.0-next.44aae0c.44+44aae0c",
|
|
63
|
+
"@eclipse-glsp/protocol": "next",
|
|
64
64
|
"@types/uuid": "8.3.1",
|
|
65
65
|
"commander": "^8.3.0",
|
|
66
66
|
"fast-json-patch": "^3.1.0",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"publishConfig": {
|
|
74
74
|
"access": "public"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "44aae0ca2380fe42eb95aac54d2d4e45e187d14f"
|
|
77
77
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { expect } from 'chai';
|
|
17
17
|
import { Container, ContainerModule } from 'inversify';
|
|
18
18
|
import * as sinon from 'sinon';
|
|
19
|
-
import { StubCommand, StubLogger } from '../test/mock-util';
|
|
19
|
+
import { expectToThrowAsync, StubCommand, StubLogger } from '../test/mock-util';
|
|
20
20
|
import { Logger } from '../utils/logger';
|
|
21
21
|
import { DefaultCommandStack } from './command-stack';
|
|
22
22
|
|
|
@@ -41,17 +41,17 @@ describe('test DefaultCommandStack', () => {
|
|
|
41
41
|
});
|
|
42
42
|
|
|
43
43
|
describe('execute', () => {
|
|
44
|
-
it('should execute the given command and become dirty', () => {
|
|
44
|
+
it('should execute the given command and become dirty', async () => {
|
|
45
45
|
expect(commandStack.isDirty).to.be.false;
|
|
46
|
-
commandStack.execute(command1);
|
|
46
|
+
await commandStack.execute(command1);
|
|
47
47
|
expect(command1.execute.calledOnce).to.be.true;
|
|
48
48
|
expect(commandStack.isDirty).to.be.true;
|
|
49
49
|
});
|
|
50
50
|
|
|
51
|
-
it('should execute the given commands in order and become dirty', () => {
|
|
51
|
+
it('should execute the given commands in order and become dirty', async () => {
|
|
52
52
|
expect(commandStack.isDirty).to.be.false;
|
|
53
|
-
commandStack.execute(command1);
|
|
54
|
-
commandStack.execute(command2);
|
|
53
|
+
await commandStack.execute(command1);
|
|
54
|
+
await commandStack.execute(command2);
|
|
55
55
|
|
|
56
56
|
expect(command1.execute.calledOnce).to.be.true;
|
|
57
57
|
expect(command2.execute.calledOnce).to.be.true;
|
|
@@ -59,112 +59,112 @@ describe('test DefaultCommandStack', () => {
|
|
|
59
59
|
expect(commandStack.isDirty).to.be.true;
|
|
60
60
|
});
|
|
61
61
|
|
|
62
|
-
it('should be able to undo after execute', () => {
|
|
62
|
+
it('should be able to undo after execute', async () => {
|
|
63
63
|
expect(commandStack.canUndo()).to.be.false;
|
|
64
|
-
commandStack.execute(command1);
|
|
64
|
+
await commandStack.execute(command1);
|
|
65
65
|
expect(commandStack.canUndo()).to.be.true;
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
it('should clear the redo stack after execution', () => {
|
|
68
|
+
it('should clear the redo stack after execution', async () => {
|
|
69
69
|
commandStack['commands'].push(command2);
|
|
70
70
|
commandStack['top'] = -1;
|
|
71
71
|
expect(commandStack.canRedo()).to.be.true;
|
|
72
72
|
|
|
73
|
-
commandStack.execute(command1);
|
|
73
|
+
await commandStack.execute(command1);
|
|
74
74
|
expect(commandStack.canRedo()).to.be.false;
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
-
it('should flush the stack in case of an execution error', () => {
|
|
77
|
+
it('should flush the stack in case of an execution error', async () => {
|
|
78
78
|
command2.execute.throwsException();
|
|
79
79
|
const flushSpy = sandbox.spy(commandStack, 'flush');
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
await expectToThrowAsync(() => commandStack.execute(command2));
|
|
82
82
|
expect(command2.execute.calledOnce).to.be.true;
|
|
83
83
|
expect(flushSpy.calledOnce).to.be.true;
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
86
|
|
|
87
87
|
describe('undo', () => {
|
|
88
|
-
it('should do nothing if the command stack is empty', () => {
|
|
88
|
+
it('should do nothing if the command stack is empty', async () => {
|
|
89
89
|
expect(commandStack.isDirty).to.be.false;
|
|
90
90
|
|
|
91
|
-
commandStack.undo();
|
|
91
|
+
await commandStack.undo();
|
|
92
92
|
expect(commandStack.canUndo()).to.be.false;
|
|
93
93
|
expect(commandStack.canRedo()).to.be.false;
|
|
94
94
|
expect(commandStack.isDirty).to.be.false;
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
-
it('should undo the command and become non-dirty again', () => {
|
|
97
|
+
it('should undo the command and become non-dirty again', async () => {
|
|
98
98
|
commandStack['commands'].push(command1);
|
|
99
99
|
commandStack['top'] = 0;
|
|
100
100
|
expect(commandStack.isDirty).to.be.true;
|
|
101
101
|
expect(commandStack.canUndo()).to.be.true;
|
|
102
102
|
expect(commandStack.canRedo()).to.be.false;
|
|
103
103
|
|
|
104
|
-
commandStack.undo();
|
|
104
|
+
await commandStack.undo();
|
|
105
105
|
expect(command1.undo.calledOnce).to.be.true;
|
|
106
106
|
expect(commandStack.isDirty).to.be.false;
|
|
107
107
|
expect(commandStack.canRedo()).to.be.true;
|
|
108
108
|
expect(commandStack.canUndo()).to.be.false;
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
-
it('should undo multiple command and become non-dirty again', () => {
|
|
111
|
+
it('should undo multiple command and become non-dirty again', async () => {
|
|
112
112
|
commandStack['commands'].push(command1, command2);
|
|
113
113
|
commandStack['top'] = 1;
|
|
114
114
|
expect(commandStack.isDirty).to.be.true;
|
|
115
115
|
expect(commandStack.canUndo()).to.be.true;
|
|
116
116
|
expect(commandStack.canRedo()).to.be.false;
|
|
117
117
|
|
|
118
|
-
commandStack.undo();
|
|
118
|
+
await commandStack.undo();
|
|
119
119
|
expect(command2.undo.calledOnce).to.be.true;
|
|
120
120
|
expect(commandStack.canRedo()).to.be.true;
|
|
121
121
|
expect(commandStack.canUndo()).to.be.true;
|
|
122
122
|
expect(commandStack.isDirty).to.be.true;
|
|
123
123
|
|
|
124
|
-
commandStack.undo();
|
|
124
|
+
await commandStack.undo();
|
|
125
125
|
expect(command1.undo.calledOnce).to.be.true;
|
|
126
126
|
expect(command1.undo.calledAfter(command2.undo)).to.be.true;
|
|
127
127
|
expect(commandStack.isDirty).to.be.false;
|
|
128
128
|
expect(commandStack.canRedo()).to.be.true;
|
|
129
129
|
expect(commandStack.canUndo()).to.be.false;
|
|
130
130
|
});
|
|
131
|
-
it('should flush the stack in case of an execution error', () => {
|
|
131
|
+
it('should flush the stack in case of an execution error', async () => {
|
|
132
132
|
command2.undo.throwsException();
|
|
133
133
|
const flushSpy = sandbox.spy(commandStack, 'flush');
|
|
134
134
|
commandStack['commands'].push(command2);
|
|
135
135
|
commandStack['top'] = 0;
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
await expectToThrowAsync(() => commandStack.undo());
|
|
138
138
|
expect(command2.undo.calledOnce).to.be.true;
|
|
139
139
|
expect(flushSpy.calledOnce).to.be.true;
|
|
140
140
|
});
|
|
141
141
|
});
|
|
142
142
|
|
|
143
143
|
describe('redo', () => {
|
|
144
|
-
it('should do nothing if the command stack is empty', () => {
|
|
144
|
+
it('should do nothing if the command stack is empty', async () => {
|
|
145
145
|
expect(commandStack.isDirty).to.be.false;
|
|
146
146
|
|
|
147
|
-
commandStack.redo();
|
|
147
|
+
await commandStack.redo();
|
|
148
148
|
expect(commandStack.canUndo()).to.be.false;
|
|
149
149
|
expect(commandStack.canRedo()).to.be.false;
|
|
150
150
|
expect(commandStack.isDirty).to.be.false;
|
|
151
151
|
});
|
|
152
152
|
|
|
153
|
-
it('should redo the command and become dirty again', () => {
|
|
153
|
+
it('should redo the command and become dirty again', async () => {
|
|
154
154
|
commandStack['commands'].push(command1);
|
|
155
155
|
commandStack['top'] = -1;
|
|
156
156
|
expect(commandStack.isDirty).to.be.false;
|
|
157
157
|
expect(commandStack.canUndo()).to.be.false;
|
|
158
158
|
expect(commandStack.canRedo()).to.be.true;
|
|
159
159
|
|
|
160
|
-
commandStack.redo();
|
|
160
|
+
await commandStack.redo();
|
|
161
161
|
expect(command1.redo.calledOnce).to.be.true;
|
|
162
162
|
expect(commandStack.isDirty).to.be.true;
|
|
163
163
|
expect(commandStack.canRedo()).to.be.false;
|
|
164
164
|
expect(commandStack.canUndo()).to.be.true;
|
|
165
165
|
});
|
|
166
166
|
|
|
167
|
-
it('should undo multiple command and become non-dirty again', () => {
|
|
167
|
+
it('should undo multiple command and become non-dirty again', async () => {
|
|
168
168
|
commandStack['commands'].push(command2, command1);
|
|
169
169
|
commandStack['top'] = -1;
|
|
170
170
|
commandStack['saveIndex'] = -1;
|
|
@@ -172,34 +172,34 @@ describe('test DefaultCommandStack', () => {
|
|
|
172
172
|
expect(commandStack.canUndo()).to.be.false;
|
|
173
173
|
expect(commandStack.canRedo()).to.be.true;
|
|
174
174
|
|
|
175
|
-
commandStack.redo();
|
|
175
|
+
await commandStack.redo();
|
|
176
176
|
expect(command2.redo.calledOnce).to.be.true;
|
|
177
177
|
expect(commandStack.canRedo()).to.be.true;
|
|
178
178
|
expect(commandStack.canUndo()).to.be.true;
|
|
179
179
|
expect(commandStack.isDirty).to.be.true;
|
|
180
180
|
|
|
181
|
-
commandStack.redo();
|
|
181
|
+
await commandStack.redo();
|
|
182
182
|
expect(command1.redo.calledOnce).to.be.true;
|
|
183
183
|
expect(command1.redo.calledAfter(command2.redo)).to.be.true;
|
|
184
184
|
expect(commandStack.isDirty).to.be.true;
|
|
185
185
|
expect(commandStack.canRedo()).to.be.false;
|
|
186
186
|
expect(commandStack.canUndo()).to.be.true;
|
|
187
187
|
});
|
|
188
|
-
it('should flush the stack in case of an execution error', () => {
|
|
188
|
+
it('should flush the stack in case of an execution error', async () => {
|
|
189
189
|
command2.redo.throwsException();
|
|
190
190
|
const flushSpy = sandbox.spy(commandStack, 'flush');
|
|
191
191
|
commandStack['commands'].push(command2);
|
|
192
192
|
commandStack['top'] = -1;
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
await expectToThrowAsync(() => commandStack.redo());
|
|
195
195
|
expect(command2.redo.calledOnce).to.be.true;
|
|
196
196
|
expect(flushSpy.calledOnce).to.be.true;
|
|
197
197
|
});
|
|
198
|
-
it('should be able to undo after redo', () => {
|
|
198
|
+
it('should be able to undo after redo', async () => {
|
|
199
199
|
commandStack['commands'].push(command1);
|
|
200
200
|
commandStack['top'] = -1;
|
|
201
201
|
expect(commandStack.canUndo()).to.be.false;
|
|
202
|
-
commandStack.redo();
|
|
202
|
+
await commandStack.redo();
|
|
203
203
|
expect(commandStack.canUndo()).to.be.true;
|
|
204
204
|
});
|
|
205
205
|
});
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { inject, injectable } from 'inversify';
|
|
17
|
+
import { MaybePromise } from '..';
|
|
17
18
|
import { Logger } from '../utils/logger';
|
|
18
19
|
import { Command } from './command';
|
|
19
20
|
|
|
@@ -31,12 +32,12 @@ export interface CommandStack {
|
|
|
31
32
|
* Clears any redoable commands not yet redone, adds the command to the stack and then invokes {@link Command.execute}.
|
|
32
33
|
* @param command the command to execute.
|
|
33
34
|
*/
|
|
34
|
-
execute(command: Command): void
|
|
35
|
+
execute(command: Command): MaybePromise<void>;
|
|
35
36
|
|
|
36
37
|
/**
|
|
37
38
|
* Removes the topmost (i.e. last executed) command from the stack and invokes {@link Command.undo}.
|
|
38
39
|
*/
|
|
39
|
-
undo(): void
|
|
40
|
+
undo(): MaybePromise<void>;
|
|
40
41
|
|
|
41
42
|
/**
|
|
42
43
|
* Returns `true` if the top command on the stack can be undone.
|
|
@@ -46,7 +47,7 @@ export interface CommandStack {
|
|
|
46
47
|
/**
|
|
47
48
|
* Re-adds the last undo command on top of the stack and invokes {@link Command.redo}
|
|
48
49
|
*/
|
|
49
|
-
redo(): void
|
|
50
|
+
redo(): MaybePromise<void>;
|
|
50
51
|
|
|
51
52
|
/**
|
|
52
53
|
* Returns `true` if there are redoable commands in the stack.
|
|
@@ -86,9 +87,9 @@ export class DefaultCommandStack implements CommandStack {
|
|
|
86
87
|
*/
|
|
87
88
|
protected saveIndex = -1;
|
|
88
89
|
|
|
89
|
-
execute(command: Command): void {
|
|
90
|
+
async execute(command: Command): Promise<void> {
|
|
90
91
|
try {
|
|
91
|
-
command.execute();
|
|
92
|
+
await command.execute();
|
|
92
93
|
} catch (error) {
|
|
93
94
|
this.handleError(error);
|
|
94
95
|
}
|
|
@@ -104,11 +105,11 @@ export class DefaultCommandStack implements CommandStack {
|
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
undo(): void {
|
|
108
|
+
async undo(): Promise<void> {
|
|
108
109
|
if (this.canUndo()) {
|
|
109
110
|
const command = this.commands[this.top--];
|
|
110
111
|
try {
|
|
111
|
-
command.undo();
|
|
112
|
+
await command.undo();
|
|
112
113
|
} catch (error) {
|
|
113
114
|
this.handleError(error);
|
|
114
115
|
}
|
|
@@ -121,11 +122,11 @@ export class DefaultCommandStack implements CommandStack {
|
|
|
121
122
|
: false;
|
|
122
123
|
}
|
|
123
124
|
|
|
124
|
-
redo(): void {
|
|
125
|
+
async redo(): Promise<void> {
|
|
125
126
|
if (this.canRedo()) {
|
|
126
127
|
const command = this.commands[++this.top];
|
|
127
128
|
try {
|
|
128
|
-
command.redo();
|
|
129
|
+
await command.redo();
|
|
129
130
|
} catch (error) {
|
|
130
131
|
this.handleError(error);
|
|
131
132
|
}
|