@serenity-js/core 3.2.0 → 3.3.0

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/Serenity.d.ts +2 -2
  3. package/lib/Serenity.d.ts.map +1 -1
  4. package/lib/events/EmitsDomainEvents.d.ts +11 -0
  5. package/lib/events/EmitsDomainEvents.d.ts.map +1 -0
  6. package/lib/events/EmitsDomainEvents.js +3 -0
  7. package/lib/events/EmitsDomainEvents.js.map +1 -0
  8. package/lib/events/index.d.ts +1 -0
  9. package/lib/events/index.d.ts.map +1 -1
  10. package/lib/events/index.js +1 -0
  11. package/lib/events/index.js.map +1 -1
  12. package/lib/io/asyncMap.js +2 -2
  13. package/lib/io/asyncMap.js.map +1 -1
  14. package/lib/screenplay/Actor.d.ts +3 -3
  15. package/lib/screenplay/Actor.d.ts.map +1 -1
  16. package/lib/screenplay/Actor.js +14 -86
  17. package/lib/screenplay/Actor.js.map +1 -1
  18. package/lib/screenplay/abilities/AnswerQuestions.d.ts +21 -0
  19. package/lib/screenplay/abilities/AnswerQuestions.d.ts.map +1 -0
  20. package/lib/screenplay/abilities/AnswerQuestions.js +37 -0
  21. package/lib/screenplay/abilities/AnswerQuestions.js.map +1 -0
  22. package/lib/screenplay/abilities/PerformActivities.d.ts +28 -0
  23. package/lib/screenplay/abilities/PerformActivities.d.ts.map +1 -0
  24. package/lib/screenplay/abilities/PerformActivities.js +66 -0
  25. package/lib/screenplay/abilities/PerformActivities.js.map +1 -0
  26. package/lib/screenplay/abilities/index.d.ts +2 -0
  27. package/lib/screenplay/abilities/index.d.ts.map +1 -1
  28. package/lib/screenplay/abilities/index.js +2 -0
  29. package/lib/screenplay/abilities/index.js.map +1 -1
  30. package/lib/screenplay/time/abilities/ScheduleWork.d.ts +2 -4
  31. package/lib/screenplay/time/abilities/ScheduleWork.d.ts.map +1 -1
  32. package/lib/screenplay/time/abilities/ScheduleWork.js +0 -6
  33. package/lib/screenplay/time/abilities/ScheduleWork.js.map +1 -1
  34. package/lib/screenplay/time/models/Clock.d.ts +24 -0
  35. package/lib/screenplay/time/models/Clock.d.ts.map +1 -1
  36. package/lib/screenplay/time/models/Clock.js +41 -1
  37. package/lib/screenplay/time/models/Clock.js.map +1 -1
  38. package/lib/screenplay/time/models/Scheduler.d.ts +1 -10
  39. package/lib/screenplay/time/models/Scheduler.d.ts.map +1 -1
  40. package/lib/screenplay/time/models/Scheduler.js +65 -103
  41. package/lib/screenplay/time/models/Scheduler.js.map +1 -1
  42. package/lib/stage/Stage.d.ts +2 -2
  43. package/lib/stage/Stage.d.ts.map +1 -1
  44. package/lib/stage/Stage.js +4 -2
  45. package/lib/stage/Stage.js.map +1 -1
  46. package/package.json +6 -6
  47. package/src/Serenity.ts +2 -2
  48. package/src/events/EmitsDomainEvents.ts +11 -0
  49. package/src/events/index.ts +1 -0
  50. package/src/io/asyncMap.ts +2 -2
  51. package/src/screenplay/Actor.ts +32 -131
  52. package/src/screenplay/abilities/AnswerQuestions.ts +41 -0
  53. package/src/screenplay/abilities/PerformActivities.ts +88 -0
  54. package/src/screenplay/abilities/index.ts +2 -0
  55. package/src/screenplay/time/abilities/ScheduleWork.ts +2 -10
  56. package/src/screenplay/time/models/Clock.ts +47 -1
  57. package/src/screenplay/time/models/Scheduler.ts +89 -136
  58. package/src/stage/Stage.ts +15 -7
@@ -1,3 +1,4 @@
1
+ import { Duration } from './Duration';
1
2
  import { Timestamp } from './Timestamp';
2
3
  /**
3
4
  * A {@apilink Clock} tells the time. This abstraction allows Serenity/JS to have a single place
@@ -15,10 +16,33 @@ import { Timestamp } from './Timestamp';
15
16
  */
16
17
  export declare class Clock {
17
18
  private readonly checkTime;
19
+ private static resolution;
20
+ private timeAdjustment;
18
21
  constructor(checkTime?: () => Date);
22
+ /**
23
+ * Sets the clock ahead to force early resolution of promises
24
+ * returned by {@apilink Clock.waitFor};
25
+ *
26
+ * Useful for test purposes to avoid unnecessary delays.
27
+ *
28
+ * @param duration
29
+ */
30
+ setAhead(duration: Duration): void;
31
+ /**
32
+ * Returns a Promise that resolves after one tick of the clock.
33
+ *
34
+ * Useful for test purposes to avoid unnecessary delays.
35
+ */
36
+ tick(): Promise<void>;
19
37
  /**
20
38
  * Returns current time
21
39
  */
22
40
  now(): Timestamp;
41
+ /**
42
+ * Returns a Promise that will be resolved after the given duration
43
+ *
44
+ * @param duration
45
+ */
46
+ waitFor(duration: Duration): Promise<void>;
23
47
  }
24
48
  //# sourceMappingURL=Clock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Clock.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,qBAAa,KAAK;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,GAAE,MAAM,IAAuB;IAGrE;;OAEG;IACH,GAAG,IAAI,SAAS;CAGnB"}
1
+ {"version":3,"file":"Clock.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Clock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,qBAAa,KAAK;IAIF,OAAO,CAAC,QAAQ,CAAC,SAAS;IAHtC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAyC;IAClE,OAAO,CAAC,cAAc,CAAwC;gBAEjC,SAAS,GAAE,MAAM,IAAuB;IAGrE;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIlC;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACH,GAAG,IAAI,SAAS;IAIhB;;;;OAIG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAcnD"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Clock = void 0;
4
+ const tiny_types_1 = require("tiny-types");
5
+ const Duration_1 = require("./Duration");
4
6
  const Timestamp_1 = require("./Timestamp");
5
7
  /**
6
8
  * A {@apilink Clock} tells the time. This abstraction allows Serenity/JS to have a single place
@@ -19,13 +21,51 @@ const Timestamp_1 = require("./Timestamp");
19
21
  class Clock {
20
22
  constructor(checkTime = () => new Date()) {
21
23
  this.checkTime = checkTime;
24
+ this.timeAdjustment = Duration_1.Duration.ofMilliseconds(0);
25
+ }
26
+ /**
27
+ * Sets the clock ahead to force early resolution of promises
28
+ * returned by {@apilink Clock.waitFor};
29
+ *
30
+ * Useful for test purposes to avoid unnecessary delays.
31
+ *
32
+ * @param duration
33
+ */
34
+ setAhead(duration) {
35
+ this.timeAdjustment = (0, tiny_types_1.ensure)('duration', duration, (0, tiny_types_1.isDefined)());
36
+ }
37
+ /**
38
+ * Returns a Promise that resolves after one tick of the clock.
39
+ *
40
+ * Useful for test purposes to avoid unnecessary delays.
41
+ */
42
+ async tick() {
43
+ return new Promise(resolve => setTimeout(resolve, Clock.resolution.inMilliseconds()));
22
44
  }
23
45
  /**
24
46
  * Returns current time
25
47
  */
26
48
  now() {
27
- return new Timestamp_1.Timestamp(this.checkTime());
49
+ return new Timestamp_1.Timestamp(this.checkTime()).plus(this.timeAdjustment);
50
+ }
51
+ /**
52
+ * Returns a Promise that will be resolved after the given duration
53
+ *
54
+ * @param duration
55
+ */
56
+ async waitFor(duration) {
57
+ const stopAt = this.now().plus(duration);
58
+ let timer;
59
+ return new Promise(resolve => {
60
+ timer = setInterval(() => {
61
+ if (this.now().isAfterOrEqual(stopAt)) {
62
+ clearInterval(timer);
63
+ return resolve();
64
+ }
65
+ }, Clock.resolution.inMilliseconds());
66
+ });
28
67
  }
29
68
  }
69
+ Clock.resolution = Duration_1.Duration.ofMilliseconds(10);
30
70
  exports.Clock = Clock;
31
71
  //# sourceMappingURL=Clock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Clock.js","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Clock.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAa,KAAK;IAEd,YAA6B,YAAwB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;QAAxC,cAAS,GAAT,SAAS,CAA+B;IACrE,CAAC;IAED;;OAEG;IACH,GAAG;QACC,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;CACJ;AAXD,sBAWC"}
1
+ {"version":3,"file":"Clock.js","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Clock.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,yCAAsC;AACtC,2CAAwC;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAa,KAAK;IAId,YAA6B,YAAwB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;QAAxC,cAAS,GAAT,SAAS,CAA+B;QAF7D,mBAAc,GAAa,mBAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAG9D,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAkB;QACvB,IAAI,CAAC,cAAc,GAAG,IAAA,mBAAM,EAAC,UAAU,EAAE,QAAQ,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,GAAG;QACC,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,KAAmB,CAAC;QAExB,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAC/B,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;oBACnC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrB,OAAO,OAAO,EAAE,CAAC;iBACpB;YACL,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;;AApDc,gBAAU,GAAa,mBAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,AAAxC,CAAyC;AADzD,sBAAK"}
@@ -8,10 +8,7 @@ import { RepeatUntilLimits } from './RepeatUntilLimits';
8
8
  export declare class Scheduler {
9
9
  private readonly clock;
10
10
  private readonly interactionTimeout;
11
- private remainingCallbacks;
12
- private completedCallbacks;
13
- private failedCallbacks;
14
- private timer;
11
+ private scheduledOperations;
15
12
  /**
16
13
  * @param clock
17
14
  * @param interactionTimeout
@@ -38,12 +35,6 @@ export declare class Scheduler {
38
35
  * @param limits
39
36
  */
40
37
  repeatUntil<Result>(callback: DelayedCallback<Result>, limits?: RepeatUntilLimits<Result>): Promise<Result>;
41
- start(): void;
42
- isRunning(): boolean;
43
38
  stop(): void;
44
- invokeCallbacksScheduledForNext(duration: Duration): void;
45
- private invokeCallbacksScheduledUntil;
46
- private invoke;
47
- private receiptFor;
48
39
  }
49
40
  //# sourceMappingURL=Scheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Scheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;GAEG;AACH,qBAAa,SAAS;IAcd,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAbvC,OAAO,CAAC,kBAAkB,CAAmE;IAC7F,OAAO,CAAC,kBAAkB,CAAmE;IAC7F,OAAO,CAAC,eAAe,CAAsE;IAE7F,OAAO,CAAC,KAAK,CAAe;IAE5B;;;;OAIG;gBAEkB,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,QAAQ;IAIjD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAWlF;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAavC;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EACpB,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,EACjC,MAAM,GAAE,iBAAiB,CAAC,MAAM,CAAM,GACvC,OAAO,CAAC,MAAM,CAAC;IAwBlB,KAAK,IAAI,IAAI;IASb,SAAS,IAAI,OAAO;IAIpB,IAAI,IAAI,IAAI;IAeZ,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAMzD,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,MAAM;IA6Dd,OAAO,CAAC,UAAU;CAgBrB"}
1
+ {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Scheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;GAEG;AACH,qBAAa,SAAS;IAUd,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IATvC,OAAO,CAAC,mBAAmB,CAA0C;IAErE;;;;OAIG;gBAEkB,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,QAAQ;IAIjD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAWlF;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAavC;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EACpB,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,EACjC,MAAM,GAAE,iBAAiB,CAAC,MAAM,CAAM,GACvC,OAAO,CAAC,MAAM,CAAC;IA0BlB,IAAI,IAAI,IAAI;CAKf"}
@@ -15,9 +15,7 @@ class Scheduler {
15
15
  constructor(clock, interactionTimeout) {
16
16
  this.clock = clock;
17
17
  this.interactionTimeout = interactionTimeout;
18
- this.remainingCallbacks = new Map();
19
- this.completedCallbacks = new Map();
20
- this.failedCallbacks = new Map();
18
+ this.scheduledOperations = [];
21
19
  }
22
20
  /**
23
21
  * Schedules a callback function to be invoked after a delay
@@ -29,7 +27,7 @@ class Scheduler {
29
27
  return this.repeatUntil(callback, {
30
28
  maxInvocations: 1,
31
29
  delayBetweenInvocations: () => delay,
32
- timeout: this.interactionTimeout,
30
+ timeout: this.interactionTimeout.plus(delay),
33
31
  });
34
32
  }
35
33
  /**
@@ -53,120 +51,84 @@ class Scheduler {
53
51
  */
54
52
  async repeatUntil(callback, limits = {}) {
55
53
  const { maxInvocations = Number.POSITIVE_INFINITY, delayBetweenInvocations = noDelay, timeout = this.interactionTimeout, exitCondition = noEarlyExit, errorHandler = rethrowErrors, } = limits;
56
- this.remainingCallbacks.set(callback, {
57
- exitCondition: exitCondition,
58
- currentInvocation: 0,
59
- invocationsLeft: maxInvocations,
54
+ const operation = new ScheduledOperation(this.clock, callback, {
55
+ exitCondition,
56
+ maxInvocations,
60
57
  delayBetweenInvocations,
61
- startedAt: this.clock.now(),
62
58
  timeout,
63
59
  errorHandler,
64
- result: undefined,
65
60
  });
66
- return this.receiptFor(callback);
67
- }
68
- start() {
69
- if (!this.timer) {
70
- this.timer = setInterval(() => this.invokeCallbacksScheduledUntil(this.clock.now()), 100);
71
- }
72
- }
73
- isRunning() {
74
- return Boolean(this.timer);
61
+ this.scheduledOperations.push(operation);
62
+ return operation.start();
75
63
  }
76
64
  stop() {
77
- if (this.timer) {
78
- clearInterval(this.timer);
79
- this.timer = undefined;
80
- for (const [callback, info] of this.remainingCallbacks) {
81
- this.remainingCallbacks.delete(callback);
82
- this.failedCallbacks.set(callback, {
83
- ...info,
84
- error: new errors_1.OperationInterruptedError(`Scheduler stopped before executing callback ${callback}`)
85
- });
86
- }
65
+ for (const operation of this.scheduledOperations) {
66
+ operation.cancel();
87
67
  }
88
68
  }
89
- invokeCallbacksScheduledForNext(duration) {
90
- this.invokeCallbacksScheduledUntil(this.clock.now().plus(duration));
69
+ }
70
+ exports.Scheduler = Scheduler;
71
+ class ScheduledOperation {
72
+ constructor(clock, callback, limits = {}) {
73
+ this.clock = clock;
74
+ this.callback = callback;
75
+ this.limits = limits;
76
+ this.currentInvocation = 0;
77
+ this.invocationsLeft = 0;
78
+ this.isCancelled = false;
91
79
  }
92
- invokeCallbacksScheduledUntil(timestamp) {
93
- for (const [callback, info] of this.remainingCallbacks) {
94
- const { startedAt, currentInvocation, delayBetweenInvocations } = info;
95
- const expectedInvocationTime = startedAt.plus(delayBetweenInvocations(currentInvocation));
96
- if (expectedInvocationTime.isBeforeOrEqual(timestamp)) {
97
- this.invoke(callback);
98
- }
80
+ async start() {
81
+ this.currentInvocation = 0;
82
+ this.invocationsLeft = this.limits.maxInvocations;
83
+ this.startedAt = this.clock.now();
84
+ return await this.poll();
85
+ }
86
+ async poll() {
87
+ await this.clock.waitFor(this.limits.delayBetweenInvocations(this.currentInvocation));
88
+ if (this.isCancelled) {
89
+ throw new errors_1.OperationInterruptedError('Scheduler stopped before executing callback');
90
+ }
91
+ const receipt = await this.invoke();
92
+ if (receipt.hasCompleted) {
93
+ return receipt.result;
99
94
  }
95
+ this.currentInvocation++;
96
+ this.invocationsLeft--;
97
+ return await this.poll();
100
98
  }
101
- invoke(callback) {
102
- const info = this.remainingCallbacks.get(callback);
103
- this.remainingCallbacks.delete(callback);
104
- Promise.resolve()
105
- .then(async () => {
106
- const timeoutExpired = info.startedAt.plus(info.timeout).isBefore(this.clock.now());
107
- const isLastInvocation = info.invocationsLeft === 1;
108
- if (info.invocationsLeft === 0) {
109
- return {
110
- hasCompleted: true,
111
- };
112
- }
113
- try {
114
- if (timeoutExpired) {
115
- throw new errors_1.TimeoutExpiredError(`Timeout of ${info.timeout} has expired`);
116
- }
117
- const result = await callback({ currentTime: this.clock.now(), i: info.currentInvocation });
118
- return {
119
- result,
120
- hasCompleted: info.exitCondition(result) || isLastInvocation,
121
- };
122
- }
123
- catch (error) {
124
- info.errorHandler(error, info.result);
125
- // if the errorHandler didn't throw, it's a recoverable error
126
- return {
127
- error,
128
- hasCompleted: isLastInvocation,
129
- };
130
- }
131
- })
132
- .then(({ result, error, hasCompleted }) => {
133
- if (hasCompleted) {
134
- this['completedCallbacks'].set(callback, {
135
- ...info,
136
- result: result !== null && result !== void 0 ? result : info.result,
137
- error,
138
- });
139
- }
140
- else {
141
- this['remainingCallbacks'].set(callback, {
142
- ...info,
143
- currentInvocation: info.currentInvocation + 1,
144
- invocationsLeft: info.invocationsLeft - 1,
145
- result: result !== null && result !== void 0 ? result : info.result,
146
- error,
147
- });
99
+ async invoke() {
100
+ const timeoutExpired = this.startedAt.plus(this.limits.timeout).isBefore(this.clock.now());
101
+ const isLastInvocation = this.invocationsLeft === 1;
102
+ if (this.invocationsLeft === 0) {
103
+ return {
104
+ result: this.lastResult,
105
+ hasCompleted: true,
106
+ };
107
+ }
108
+ try {
109
+ if (timeoutExpired) {
110
+ throw new errors_1.TimeoutExpiredError(`Timeout of ${this.limits.timeout} has expired`);
148
111
  }
149
- })
150
- .catch(error => {
151
- this.failedCallbacks.set(callback, { ...info, error });
152
- });
112
+ this.lastResult = await this.callback({ currentTime: this.clock.now(), i: this.currentInvocation });
113
+ return {
114
+ result: this.lastResult,
115
+ hasCompleted: this.limits.exitCondition(this.lastResult) || isLastInvocation,
116
+ };
117
+ }
118
+ catch (error) {
119
+ this.limits.errorHandler(error, this.lastResult);
120
+ // if the errorHandler didn't throw, it's a recoverable error
121
+ return {
122
+ result: this.lastResult,
123
+ error,
124
+ hasCompleted: isLastInvocation,
125
+ };
126
+ }
153
127
  }
154
- receiptFor(callback) {
155
- return new Promise((resolve, reject) => {
156
- const timer = setInterval(() => {
157
- if (this.failedCallbacks.has(callback)) {
158
- clearInterval(timer);
159
- return reject(this.failedCallbacks.get(callback).error);
160
- }
161
- if (this.completedCallbacks.has(callback)) {
162
- clearInterval(timer);
163
- return resolve(this.completedCallbacks.get(callback).result);
164
- }
165
- }, 25);
166
- });
128
+ cancel() {
129
+ this.isCancelled = true;
167
130
  }
168
131
  }
169
- exports.Scheduler = Scheduler;
170
132
  function noDelay() {
171
133
  return Duration_1.Duration.ofMilliseconds(0);
172
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../../../src/screenplay/time/models/Scheduler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ErrorFactory, ErrorOptions, RuntimeError } from '../errors';
2
- import { DomainEvent } from '../events';
2
+ import { DomainEvent, EmitsDomainEvents } from '../events';
3
3
  import { ActivityDetails, CorrelationId } from '../model';
4
4
  import { Actor, Clock, Duration, Timestamp } from '../screenplay';
5
5
  import { ListensToDomainEvents } from '../stage';
@@ -20,7 +20,7 @@ import { StageManager } from './StageManager';
20
20
  *
21
21
  * @group Stage
22
22
  */
23
- export declare class Stage {
23
+ export declare class Stage implements EmitsDomainEvents {
24
24
  private cast;
25
25
  private readonly manager;
26
26
  private errors;
@@ -1 +1 @@
1
- {"version":3,"file":"Stage.d.ts","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,YAAY,EAAE,YAAY,EAA2B,YAAY,EAAE,MAAM,WAAW,CAAC;AAClH,OAAO,EAA0E,WAAW,EAA+C,MAAM,WAAW,CAAC;AAC7J,OAAO,EAAE,eAAe,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,qBAAa,KAAK;IAmCV,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IArCvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAErE;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAgD;IAE1E;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAgD;IAEzE,OAAO,CAAC,aAAa,CAA8C;IAEnE;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAoB;IAE/C,OAAO,CAAC,eAAe,CAA8D;IAErF,OAAO,CAAC,YAAY,CAAuC;IAE3D;;;;;;OAMG;gBAES,IAAI,EAAE,IAAI,EACD,OAAO,EAAE,YAAY,EAC9B,MAAM,EAAE,YAAY,EACX,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,QAAQ;IASjD;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAInC;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IA+B1B;;;;;;OAMG;IACH,sBAAsB,IAAI,KAAK;IAQ/B;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAM1B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,SAAS,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAInD;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;IAM7C,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,WAAW,IAAI,SAAS;IAIxB;;;;;;;;;;OAUG;IACH,gBAAgB,IAAI,aAAa;IAOjC;;;;;OAKG;IACH,cAAc,IAAI,aAAa;IAI/B;;;;;;;;;OASG;IACH,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa;IASpE;;;;;OAKG;IACH,iBAAiB,IAAI,aAAa;IAQlC;;;;;;;OAOG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,EAAE;IAOtG,OAAO,CAAC,uBAAuB;YAMjB,OAAO;IAuCrB,OAAO,CAAC,MAAM;CAKjB"}
1
+ {"version":3,"file":"Stage.d.ts","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,YAAY,EAAE,YAAY,EAA2B,YAAY,EAAE,MAAM,WAAW,CAAC;AAClH,OAAO,EAIH,WAAW,EACX,iBAAiB,EAIpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,qBAAa,KAAM,YAAW,iBAAiB;IAmCvC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IArCvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAErE;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAgD;IAE1E;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAgD;IAEzE,OAAO,CAAC,aAAa,CAA8C;IAEnE;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAoB;IAE/C,OAAO,CAAC,eAAe,CAA8D;IAErF,OAAO,CAAC,YAAY,CAAuC;IAE3D;;;;;;OAMG;gBAES,IAAI,EAAE,IAAI,EACD,OAAO,EAAE,YAAY,EAC9B,MAAM,EAAE,YAAY,EACX,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,QAAQ;IASjD;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAInC;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IA8B1B;;;;;;OAMG;IACH,sBAAsB,IAAI,KAAK;IAQ/B;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAM1B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,SAAS,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAInD;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;IAM7C,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,WAAW,IAAI,SAAS;IAIxB;;;;;;;;;;OAUG;IACH,gBAAgB,IAAI,aAAa;IAOjC;;;;;OAKG;IACH,cAAc,IAAI,aAAa;IAI/B;;;;;;;;;OASG;IACH,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa;IASpE;;;;;OAKG;IACH,iBAAiB,IAAI,aAAa;IAQlC;;;;;;;OAOG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,EAAE;IAOtG,OAAO,CAAC,uBAAuB;YAMjB,OAAO;IAuCrB,OAAO,CAAC,MAAM;CAKjB"}
@@ -77,8 +77,10 @@ class Stage {
77
77
  if (!this.instantiatedActorCalled(name)) {
78
78
  let actor;
79
79
  try {
80
- const newActor = new screenplay_1.Actor(name, this)
81
- .whoCan(new errors_1.RaiseErrors(this), new screenplay_1.ScheduleWork(this.clock, this.interactionTimeout));
80
+ const newActor = new screenplay_1.Actor(name, this, [
81
+ new errors_1.RaiseErrors(this),
82
+ new screenplay_1.ScheduleWork(this.clock, this.interactionTimeout)
83
+ ]);
82
84
  actor = this.cast.prepare(newActor);
83
85
  // todo this.manager.notifyOf(ActorStarts)
84
86
  // todo: map this in Serenity BDD Reporter so that the "cast" is recorded
@@ -1 +1 @@
1
- {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,sCAAkH;AAClH,sCAA6J;AAC7J,oCAA6E;AAC7E,8CAAgF;AAKhF;;;;;;;;;;;;;;GAcG;AACH,MAAa,KAAK;IA2Bd;;;;;;OAMG;IACH,YACY,IAAU,EACD,OAAqB,EAC9B,MAAoB,EACX,KAAY,EACZ,kBAA4B;QAJrC,SAAI,GAAJ,IAAI,CAAM;QACD,YAAO,GAAP,OAAO,CAAc;QAC9B,WAAM,GAAN,MAAM,CAAc;QACX,UAAK,GAAL,KAAK,CAAO;QACZ,uBAAkB,GAAlB,kBAAkB,CAAU;QAnCjD;;;WAGG;QACK,uBAAkB,GAAuB,IAAI,GAAG,EAAiB,CAAC;QAE1E;;;WAGG;QACK,sBAAiB,GAAuB,IAAI,GAAG,EAAiB,CAAC;QAEjE,kBAAa,GAAuB,IAAI,CAAC,iBAAiB,CAAC;QAEnE;;WAEG;QACK,wBAAmB,GAAU,SAAS,CAAC;QAEvC,oBAAe,GAAoD,SAAS,CAAC;QAE7E,iBAAY,GAAkB,KAAK,CAAC,cAAc,CAAC;QAgBvD,IAAA,mBAAM,EAAC,MAAM,EAAE,IAAI,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QAClC,IAAA,mBAAM,EAAC,cAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QAC7C,IAAA,mBAAM,EAAC,cAAc,EAAE,MAAM,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QAC5C,IAAA,mBAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QACpC,IAAA,mBAAM,EAAC,oBAAoB,EAAE,kBAAkB,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAY;QACd,IAAI,CAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,KAAK,CAAC;YACV,IAAI;gBACA,MAAM,QAAQ,GAAG,IAAI,kBAAK,CAAC,IAAI,EAAE,IAAI,CAAC;qBACjC,MAAM,CACH,IAAI,oBAAW,CAAC,IAAI,CAAC,EACrB,IAAI,yBAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CACxD,CAAC;gBAEN,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEpC,0CAA0C;gBAC1C,yEAAyE;aAC5E;YACD,OAAO,KAAK,EAAE;gBACV,MAAM,IAAI,2BAAkB,CAAC,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,gDAAiD,IAAK,aAAa,EAAE,KAAK,CAAC,CAAC;aACvI;YAED,IAAI,CAAE,CAAC,KAAK,YAAY,kBAAK,CAAC,EAAE;gBAC5B,MAAM,IAAI,2BAAkB,CAAC,uCAAwC,IAAK,MAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,aAAc,KAAM,EAAE,CAAC,CAAC;aACnI;YAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;SACtC;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB;QAClB,IAAI,CAAE,IAAI,CAAC,mBAAmB,EAAE;YAC5B,MAAM,IAAI,mBAAU,CAAC,+HAA+H,CAAC,CAAC;SACzJ;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,OAAO,CAAC,CAAE,IAAI,CAAC,mBAAmB,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAY;QACf,IAAA,mBAAM,EAAC,MAAM,EAAE,MAAM,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAG,SAAkC;QACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,MAA0B;QAClC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,cAAc,CAAC,KAAkB;QACrC,IAAI,KAAK,YAAY,oBAAW,EAAE;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC;SAChD;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,YAAY,sBAAa,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC/C;QAED,IAAI,KAAK,YAAY,wBAAe,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACpC;IACL,CAAC;IAED;;;OAGG;IACH,WAAW;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;;;;OAUG;IACH,gBAAgB;QACZ,uDAAuD;QACvD,IAAI,CAAC,YAAY,GAAG,qBAAa,CAAC,MAAM,EAAE,CAAC;QAE3C,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,cAAc;QACV,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CAAC,eAAgC;QAChD,IAAI,CAAC,eAAe,GAAG;YACnB,EAAE,EAAE,qBAAa,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE,eAAe;SAC3B,CAAC;QAEF,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,iBAAiB;QACb,IAAI,CAAE,IAAI,CAAC,eAAe,EAAE;YACxB,MAAM,IAAI,mBAAU,CAAC,qGAAqG,CAAC,CAAC;SAC/H;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;;OAOG;IACH,cAAc;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,WAAW,CAA0B,SAAqC,EAAE,OAAqB;;QAC7F,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;YACjC,QAAQ,EAAE,MAAA,IAAI,CAAC,eAAe,0CAAE,OAAO,CAAC,QAAQ;YAChD,GAAG,OAAO;SACb,CAAC,CAAC;IACP,CAAC;IAEO,uBAAuB,CAAC,IAAY;QACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,YAAgC;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;YAC3C,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;SACxC;QAED,6DAA6D;QAC7D,MAAM,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAEtD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAuB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,qBAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5G,KAAK,MAAM,CAAE,KAAK,EAAE,aAAa,CAAE,IAAI,eAAe,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,gCAAuB,CACrC,IAAI,YAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC/B,IAAI,mBAAW,CAAC,cAAe,KAAK,CAAC,IAAK,KAAK,CAAC,EAChD,aAAa,EACb,IAAI,CAAC,WAAW,EAAE,CACrB,CAAC,CAAC;SACN;QAED,4BAA4B;QAC5B,KAAK,MAAM,CAAE,KAAK,EAAE,aAAa,CAAE,IAAI,eAAe,EAAE;YACpD,IAAI;gBACA,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;gBAEtB,IAAI,CAAC,QAAQ,CAAC,IAAI,gCAAuB,CACrC,aAAa,EACb,IAAI,CAAC,WAAW,EAAE,CACrB,CAAC,CAAC;aACN;YACD,OAAO,KAAK,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,IAAI,6BAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAK,6BAA6B;aACvH;SACJ;QAED,YAAY,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,IAAU;QACrB,OAAO,IAAI,CAAC,WAAW,KAAK,MAAM;YAC9B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAChC,CAAC;;AAhTuB,oBAAc,GAAG,IAAI,qBAAa,CAAC,SAAS,CAAC,AAA/B,CAA+B;AAF5D,sBAAK"}
1
+ {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/core",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "Serenity/JS Screenplay, reporting engine and core interfaces.",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -40,21 +40,21 @@
40
40
  "filenamify": "^4.3.0",
41
41
  "graceful-fs": "^4.2.11",
42
42
  "moment": "^2.29.4",
43
- "semver": "^7.4.0",
43
+ "semver": "^7.5.1",
44
44
  "tiny-types": "^1.19.1",
45
45
  "upath": "^2.0.1",
46
46
  "validate-npm-package-name": "^5.0.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@types/chai": "^4.3.4",
49
+ "@types/chai": "^4.3.5",
50
50
  "@types/diff": "^5.0.3",
51
51
  "@types/filenamify": "^2.0.2",
52
52
  "@types/mocha": "^10.0.1",
53
- "@types/semver": "^7.3.13",
53
+ "@types/semver": "^7.5.0",
54
54
  "@types/validate-npm-package-name": "^4.0.0",
55
55
  "assertion-error-formatter": "^3.0.0",
56
56
  "c8": "7.13.0",
57
- "memfs": "^3.5.0",
57
+ "memfs": "^3.5.1",
58
58
  "mocha": "^10.2.0",
59
59
  "mocha-multi": "^1.1.7",
60
60
  "ts-node": "^10.9.1",
@@ -71,5 +71,5 @@
71
71
  "engines": {
72
72
  "node": "^16.13 || ^18.12 || ^20"
73
73
  },
74
- "gitHead": "e69cea764f50991c3ad742f28926b4345b3e2422"
74
+ "gitHead": "c4a2bb6aef7b087dc9bc37269fd999d1cdc15088"
75
75
  }
package/src/Serenity.ts CHANGED
@@ -3,7 +3,7 @@ import { ensure, isDefined, isInstanceOf, property } from 'tiny-types';
3
3
  import { OutputStream } from './adapter';
4
4
  import { SerenityConfig } from './config';
5
5
  import { ConfigurationError, ErrorFactory, ErrorOptions, NoOpDiffFormatter, RuntimeError } from './errors';
6
- import { DomainEvent } from './events';
6
+ import { DomainEvent, EmitsDomainEvents } from './events';
7
7
  import { ClassDescriptionParser, ClassLoader, d, has, ModuleLoader, Path } from './io';
8
8
  import { ActivityDetails, CorrelationId } from './model';
9
9
  import { Actor, Clock, Duration, Timestamp } from './screenplay';
@@ -16,7 +16,7 @@ import { StageManager } from './stage/StageManager';
16
16
  /**
17
17
  * @group Serenity
18
18
  */
19
- export class Serenity {
19
+ export class Serenity implements EmitsDomainEvents{
20
20
  private static defaultCueTimeout = Duration.ofSeconds(5);
21
21
  private static defaultInteractionTimeout = Duration.ofSeconds(5);
22
22
  private static defaultActors = new Extras();
@@ -0,0 +1,11 @@
1
+ import { ActivityDetails, CorrelationId } from '../model';
2
+ import { Timestamp } from '../screenplay';
3
+ import { DomainEvent } from './DomainEvent';
4
+
5
+ export interface EmitsDomainEvents {
6
+ currentSceneId(): CorrelationId;
7
+ assignNewActivityId(details: ActivityDetails): CorrelationId;
8
+ announce(event: DomainEvent): void;
9
+ currentTime(): Timestamp;
10
+ waitForNextCue(): Promise<void>,
11
+ }
@@ -10,6 +10,7 @@ export * from './AsyncOperationCompleted';
10
10
  export * from './AsyncOperationFailed';
11
11
  export * from './BusinessRuleDetected';
12
12
  export * from './DomainEvent';
13
+ export * from './EmitsDomainEvents';
13
14
  export * from './FeatureNarrativeDetected';
14
15
  export * from './InteractionFinished';
15
16
  export * from './InteractionStarts';
@@ -5,7 +5,7 @@
5
5
  * @param mappingFunction
6
6
  */
7
7
  export function asyncMap<Item_Type, Result_Type>(items: Item_Type[], mappingFunction: (item: Item_Type) => Promise<Result_Type> | Result_Type): Promise<Result_Type[]> {
8
- return items.reduce(
8
+ return Promise.resolve().then(() => items.reduce(
9
9
  (previous, item) =>
10
10
  previous.then(async (acc) => {
11
11
  const result = await mappingFunction(item);
@@ -15,5 +15,5 @@ export function asyncMap<Item_Type, Result_Type>(items: Item_Type[], mappingFunc
15
15
  return acc;
16
16
  })
17
17
  , Promise.resolve([])
18
- );
18
+ ));
19
19
  }