@serenity-js/core 3.25.4 → 3.26.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 (95) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/lib/events/actor/ActorEntersStage.d.ts +17 -0
  3. package/lib/events/actor/ActorEntersStage.d.ts.map +1 -0
  4. package/lib/events/actor/ActorEntersStage.js +29 -0
  5. package/lib/events/actor/ActorEntersStage.js.map +1 -0
  6. package/lib/events/actor/ActorStageExitAttempted.d.ts +19 -0
  7. package/lib/events/actor/ActorStageExitAttempted.d.ts.map +1 -0
  8. package/lib/events/actor/ActorStageExitAttempted.js +29 -0
  9. package/lib/events/actor/ActorStageExitAttempted.js.map +1 -0
  10. package/lib/events/actor/ActorStageExitCompleted.d.ts +20 -0
  11. package/lib/events/actor/ActorStageExitCompleted.d.ts.map +1 -0
  12. package/lib/events/actor/ActorStageExitCompleted.js +30 -0
  13. package/lib/events/actor/ActorStageExitCompleted.js.map +1 -0
  14. package/lib/events/actor/ActorStageExitFailed.d.ts +17 -0
  15. package/lib/events/actor/ActorStageExitFailed.d.ts.map +1 -0
  16. package/lib/events/actor/ActorStageExitFailed.js +25 -0
  17. package/lib/events/actor/ActorStageExitFailed.js.map +1 -0
  18. package/lib/events/actor/ActorStageExitStarts.d.ts +20 -0
  19. package/lib/events/actor/ActorStageExitStarts.d.ts.map +1 -0
  20. package/lib/events/actor/ActorStageExitStarts.js +32 -0
  21. package/lib/events/actor/ActorStageExitStarts.js.map +1 -0
  22. package/lib/events/actor/index.d.ts +6 -0
  23. package/lib/events/actor/index.d.ts.map +1 -0
  24. package/lib/events/actor/index.js +22 -0
  25. package/lib/events/actor/index.js.map +1 -0
  26. package/lib/events/index.d.ts +1 -0
  27. package/lib/events/index.d.ts.map +1 -1
  28. package/lib/events/index.js +1 -0
  29. package/lib/events/index.js.map +1 -1
  30. package/lib/screenplay/Actor.d.ts +8 -1
  31. package/lib/screenplay/Actor.d.ts.map +1 -1
  32. package/lib/screenplay/Actor.js +14 -10
  33. package/lib/screenplay/Actor.js.map +1 -1
  34. package/lib/screenplay/SerialisedActor.d.ts +9 -0
  35. package/lib/screenplay/SerialisedActor.d.ts.map +1 -0
  36. package/lib/screenplay/SerialisedActor.js +3 -0
  37. package/lib/screenplay/SerialisedActor.js.map +1 -0
  38. package/lib/screenplay/abilities/Ability.d.ts +39 -0
  39. package/lib/screenplay/abilities/Ability.d.ts.map +1 -1
  40. package/lib/screenplay/abilities/Ability.js +65 -0
  41. package/lib/screenplay/abilities/Ability.js.map +1 -1
  42. package/lib/screenplay/abilities/AbilityType.d.ts +5 -1
  43. package/lib/screenplay/abilities/AbilityType.d.ts.map +1 -1
  44. package/lib/screenplay/abilities/SerialisedAbility.d.ts +10 -0
  45. package/lib/screenplay/abilities/SerialisedAbility.d.ts.map +1 -0
  46. package/lib/screenplay/abilities/SerialisedAbility.js +3 -0
  47. package/lib/screenplay/abilities/SerialisedAbility.js.map +1 -0
  48. package/lib/screenplay/abilities/index.d.ts +1 -0
  49. package/lib/screenplay/abilities/index.d.ts.map +1 -1
  50. package/lib/screenplay/abilities/index.js +1 -0
  51. package/lib/screenplay/abilities/index.js.map +1 -1
  52. package/lib/screenplay/index.d.ts +1 -0
  53. package/lib/screenplay/index.d.ts.map +1 -1
  54. package/lib/screenplay/index.js +1 -0
  55. package/lib/screenplay/index.js.map +1 -1
  56. package/lib/screenplay/notes/TakeNotes.d.ts +2 -1
  57. package/lib/screenplay/notes/TakeNotes.d.ts.map +1 -1
  58. package/lib/screenplay/notes/TakeNotes.js +8 -0
  59. package/lib/screenplay/notes/TakeNotes.js.map +1 -1
  60. package/lib/screenplay/time/abilities/ScheduleWork.d.ts +2 -1
  61. package/lib/screenplay/time/abilities/ScheduleWork.d.ts.map +1 -1
  62. package/lib/screenplay/time/abilities/ScheduleWork.js +8 -0
  63. package/lib/screenplay/time/abilities/ScheduleWork.js.map +1 -1
  64. package/lib/screenplay/time/models/Clock.d.ts +2 -0
  65. package/lib/screenplay/time/models/Clock.d.ts.map +1 -1
  66. package/lib/screenplay/time/models/Clock.js +5 -0
  67. package/lib/screenplay/time/models/Clock.js.map +1 -1
  68. package/lib/screenplay/time/models/Scheduler.d.ts +2 -0
  69. package/lib/screenplay/time/models/Scheduler.d.ts.map +1 -1
  70. package/lib/screenplay/time/models/Scheduler.js +6 -0
  71. package/lib/screenplay/time/models/Scheduler.js.map +1 -1
  72. package/lib/stage/Stage.d.ts +6 -7
  73. package/lib/stage/Stage.d.ts.map +1 -1
  74. package/lib/stage/Stage.js +15 -5
  75. package/lib/stage/Stage.js.map +1 -1
  76. package/package.json +5 -5
  77. package/src/events/actor/ActorEntersStage.ts +32 -0
  78. package/src/events/actor/ActorStageExitAttempted.ts +34 -0
  79. package/src/events/actor/ActorStageExitCompleted.ts +34 -0
  80. package/src/events/actor/ActorStageExitFailed.ts +27 -0
  81. package/src/events/actor/ActorStageExitStarts.ts +35 -0
  82. package/src/events/actor/index.ts +5 -0
  83. package/src/events/index.ts +1 -0
  84. package/src/screenplay/Actor.ts +19 -28
  85. package/src/screenplay/SerialisedActor.ts +9 -0
  86. package/src/screenplay/abilities/Ability.ts +73 -0
  87. package/src/screenplay/abilities/AbilityType.ts +8 -1
  88. package/src/screenplay/abilities/SerialisedAbility.ts +10 -0
  89. package/src/screenplay/abilities/index.ts +1 -0
  90. package/src/screenplay/index.ts +1 -0
  91. package/src/screenplay/notes/TakeNotes.ts +10 -1
  92. package/src/screenplay/time/abilities/ScheduleWork.ts +11 -2
  93. package/src/screenplay/time/models/Clock.ts +7 -1
  94. package/src/screenplay/time/models/Scheduler.ts +9 -0
  95. package/src/stage/Stage.ts +50 -25
package/CHANGELOG.md CHANGED
@@ -3,6 +3,32 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.26.0](https://github.com/serenity-js/serenity-js/compare/v3.25.5...v3.26.0) (2024-08-27)
7
+
8
+
9
+ ### Features
10
+
11
+ * **core:** final state of the actor's notepad is included in Serenity BDD report ([56c9fb8](https://github.com/serenity-js/serenity-js/commit/56c9fb88514657df51c82fd8ab642514ed8e3416))
12
+ * **core:** introduced specialised events to mark actors' exit from the stage ([b0b3f0c](https://github.com/serenity-js/serenity-js/commit/b0b3f0cb85790cd83b170271a15b91029c7b43a3))
13
+ * **core:** new event ActorEntersStage and associated models ([11702b6](https://github.com/serenity-js/serenity-js/commit/11702b6fc21fa00f1ff8dcc0f1169090b1a97f72))
14
+ * **core:** new event ActorEntersStage is emitted upon invoking actorCalled for the first time ([1498c21](https://github.com/serenity-js/serenity-js/commit/1498c2103e5ab4dc3958a4236a8e26ff2848e6c0))
15
+ * **core:** new method actor.toJSON lets you inspect the actor and its abilities ([ace3323](https://github.com/serenity-js/serenity-js/commit/ace3323ea5db8771734259db450e65cb58275794))
16
+
17
+
18
+
19
+
20
+
21
+ ## [3.25.5](https://github.com/serenity-js/serenity-js/compare/v3.25.4...v3.25.5) (2024-08-18)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * **deps:** update dependency tiny-types to v1.23.0 ([1c9a897](https://github.com/serenity-js/serenity-js/commit/1c9a897c100398632366bdef84d9dfde03f1af3c))
27
+
28
+
29
+
30
+
31
+
6
32
  ## [3.25.4](https://github.com/serenity-js/serenity-js/compare/v3.25.3...v3.25.4) (2024-08-07)
7
33
 
8
34
  **Note:** Version bump only for package @serenity-js/core
@@ -0,0 +1,17 @@
1
+ import type { JSONObject } from 'tiny-types';
2
+ import { CorrelationId } from '../../model';
3
+ import { type SerialisedActor, Timestamp } from '../../screenplay';
4
+ import { DomainEvent } from '../DomainEvent';
5
+ /**
6
+ * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) is activated
7
+ * as the result of invoking [`actorCalled`](https://serenity-js.org/api/core/function/actorCalled/).
8
+ *
9
+ * @group Events
10
+ */
11
+ export declare class ActorEntersStage extends DomainEvent {
12
+ readonly sceneId: CorrelationId;
13
+ readonly actor: SerialisedActor;
14
+ static fromJSON(o: JSONObject): ActorEntersStage;
15
+ constructor(sceneId: CorrelationId, actor: SerialisedActor, timestamp?: Timestamp);
16
+ }
17
+ //# sourceMappingURL=ActorEntersStage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorEntersStage.d.ts","sourceRoot":"","sources":["../../../src/events/actor/ActorEntersStage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;aAUzB,OAAO,EAAE,aAAa;aACtB,KAAK,EAAE,eAAe;WAV5B,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,gBAAgB;gBASnC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,eAAe,EACtC,SAAS,CAAC,EAAE,SAAS;CAM5B"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActorEntersStage = void 0;
4
+ const tiny_types_1 = require("tiny-types");
5
+ const model_1 = require("../../model");
6
+ const screenplay_1 = require("../../screenplay");
7
+ const DomainEvent_1 = require("../DomainEvent");
8
+ /**
9
+ * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) is activated
10
+ * as the result of invoking [`actorCalled`](https://serenity-js.org/api/core/function/actorCalled/).
11
+ *
12
+ * @group Events
13
+ */
14
+ class ActorEntersStage extends DomainEvent_1.DomainEvent {
15
+ sceneId;
16
+ actor;
17
+ static fromJSON(o) {
18
+ return new ActorEntersStage(model_1.CorrelationId.fromJSON(o.sceneId), o.actor, screenplay_1.Timestamp.fromJSON(o.timestamp));
19
+ }
20
+ constructor(sceneId, actor, timestamp) {
21
+ super(timestamp);
22
+ this.sceneId = sceneId;
23
+ this.actor = actor;
24
+ (0, tiny_types_1.ensure)('sceneId', sceneId, (0, tiny_types_1.isDefined)());
25
+ (0, tiny_types_1.ensure)('actor', actor, (0, tiny_types_1.isDefined)());
26
+ }
27
+ }
28
+ exports.ActorEntersStage = ActorEntersStage;
29
+ //# sourceMappingURL=ActorEntersStage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorEntersStage.js","sourceRoot":"","sources":["../../../src/events/actor/ActorEntersStage.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAE/C,uCAA4C;AAC5C,iDAAmE;AACnE,gDAA6C;AAE7C;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,yBAAW;IAUzB;IACA;IAVb,MAAM,CAAC,QAAQ,CAAC,CAAa;QAChC,OAAO,IAAI,gBAAgB,CACvB,qBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAiB,CAAC,EAC3C,CAAC,CAAC,KAAmC,EACrC,sBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAmB,CAAC,CAC5C,CAAC;IACN,CAAC;IAED,YACoB,OAAsB,EACtB,KAAsB,EACtC,SAAqB;QAErB,KAAK,CAAC,SAAS,CAAC,CAAC;QAJD,YAAO,GAAP,OAAO,CAAe;QACtB,UAAK,GAAL,KAAK,CAAiB;QAItC,IAAA,mBAAM,EAAC,SAAS,EAAE,OAAO,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QACxC,IAAA,mBAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxC,CAAC;CACJ;AAlBD,4CAkBC"}
@@ -0,0 +1,19 @@
1
+ import type { JSONObject } from 'tiny-types';
2
+ import { CorrelationId, Name } from '../../model';
3
+ import { Timestamp } from '../../screenplay';
4
+ import { AsyncOperationAttempted } from '../AsyncOperationAttempted';
5
+ /**
6
+ * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) is dismissed
7
+ * either upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
8
+ * for actors initialised within the scope of a test scenario,
9
+ * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
10
+ * for actors initialised within the scope of a test suite.
11
+ *
12
+ * @group Events
13
+ */
14
+ export declare class ActorStageExitAttempted extends AsyncOperationAttempted {
15
+ readonly actor: Name;
16
+ static fromJSON(o: JSONObject): ActorStageExitAttempted;
17
+ constructor(correlationId: CorrelationId, actor: Name, timestamp?: Timestamp);
18
+ }
19
+ //# sourceMappingURL=ActorStageExitAttempted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitAttempted.d.ts","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitAttempted.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAe,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,SAAQ,uBAAuB;aAW5C,KAAK,EAAE,IAAI;IAV/B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,uBAAuB;gBASnD,aAAa,EAAE,aAAa,EACZ,KAAK,EAAE,IAAI,EAC3B,SAAS,CAAC,EAAE,SAAS;CAK5B"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActorStageExitAttempted = void 0;
4
+ const tiny_types_1 = require("tiny-types");
5
+ const model_1 = require("../../model");
6
+ const screenplay_1 = require("../../screenplay");
7
+ const AsyncOperationAttempted_1 = require("../AsyncOperationAttempted");
8
+ /**
9
+ * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) is dismissed
10
+ * either upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
11
+ * for actors initialised within the scope of a test scenario,
12
+ * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
13
+ * for actors initialised within the scope of a test suite.
14
+ *
15
+ * @group Events
16
+ */
17
+ class ActorStageExitAttempted extends AsyncOperationAttempted_1.AsyncOperationAttempted {
18
+ actor;
19
+ static fromJSON(o) {
20
+ return new ActorStageExitAttempted(model_1.CorrelationId.fromJSON(o.correlationId), model_1.Name.fromJSON(o.actor), screenplay_1.Timestamp.fromJSON(o.timestamp));
21
+ }
22
+ constructor(correlationId, actor, timestamp) {
23
+ (0, tiny_types_1.ensure)('actor', actor, (0, tiny_types_1.isDefined)());
24
+ super(new model_1.Name('Stage'), new model_1.Description(`Actor ${actor.value} exits the stage`), correlationId, timestamp);
25
+ this.actor = actor;
26
+ }
27
+ }
28
+ exports.ActorStageExitAttempted = ActorStageExitAttempted;
29
+ //# sourceMappingURL=ActorStageExitAttempted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitAttempted.js","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitAttempted.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAE/C,uCAA+D;AAC/D,iDAA6C;AAC7C,wEAAqE;AAErE;;;;;;;;GAQG;AACH,MAAa,uBAAwB,SAAQ,iDAAuB;IAW5C;IAVpB,MAAM,CAAC,QAAQ,CAAC,CAAa;QACzB,OAAO,IAAI,uBAAuB,CAC9B,qBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAuB,CAAC,EACjD,YAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAe,CAAC,EAChC,sBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAmB,CAAC,CAC5C,CAAC;IACN,CAAC;IAED,YACI,aAA4B,EACZ,KAAW,EAC3B,SAAqB;QAErB,IAAA,mBAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,YAAI,CAAC,OAAO,CAAC,EAAE,IAAI,mBAAW,CAAC,SAAU,KAAK,CAAC,KAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAJ9F,UAAK,GAAL,KAAK,CAAM;IAK/B,CAAC;CACJ;AAjBD,0DAiBC"}
@@ -0,0 +1,20 @@
1
+ import { type JSONObject } from 'tiny-types';
2
+ import { CorrelationId, Name } from '../../model';
3
+ import { Timestamp } from '../../screenplay';
4
+ import { AsyncOperationCompleted } from '../AsyncOperationCompleted';
5
+ /**
6
+ * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) and its abilities
7
+ * are correctly [released](https://serenity-js.org/api/core/interface/Discardable/) either
8
+ * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
9
+ * for actors initialised within the scope of a test scenario,
10
+ * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
11
+ * for actors initialised within the scope of a test suite.
12
+ *
13
+ * @group Events
14
+ */
15
+ export declare class ActorStageExitCompleted extends AsyncOperationCompleted {
16
+ readonly actor: Name;
17
+ static fromJSON(o: JSONObject): ActorStageExitCompleted;
18
+ constructor(correlationId: CorrelationId, actor: Name, timestamp?: Timestamp);
19
+ }
20
+ //# sourceMappingURL=ActorStageExitCompleted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitCompleted.d.ts","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitCompleted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,uBAAuB;aAW5C,KAAK,EAAE,IAAI;IAV/B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,uBAAuB;gBASnD,aAAa,EAAE,aAAa,EACZ,KAAK,EAAE,IAAI,EAC3B,SAAS,CAAC,EAAE,SAAS;CAK5B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActorStageExitCompleted = void 0;
4
+ const tiny_types_1 = require("tiny-types");
5
+ const model_1 = require("../../model");
6
+ const screenplay_1 = require("../../screenplay");
7
+ const AsyncOperationCompleted_1 = require("../AsyncOperationCompleted");
8
+ /**
9
+ * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) and its abilities
10
+ * are correctly [released](https://serenity-js.org/api/core/interface/Discardable/) either
11
+ * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
12
+ * for actors initialised within the scope of a test scenario,
13
+ * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
14
+ * for actors initialised within the scope of a test suite.
15
+ *
16
+ * @group Events
17
+ */
18
+ class ActorStageExitCompleted extends AsyncOperationCompleted_1.AsyncOperationCompleted {
19
+ actor;
20
+ static fromJSON(o) {
21
+ return new ActorStageExitCompleted(model_1.CorrelationId.fromJSON(o.correlationId), model_1.Name.fromJSON(o.actor), screenplay_1.Timestamp.fromJSON(o.timestamp));
22
+ }
23
+ constructor(correlationId, actor, timestamp) {
24
+ super(correlationId, timestamp);
25
+ this.actor = actor;
26
+ (0, tiny_types_1.ensure)('actor', actor, (0, tiny_types_1.isDefined)());
27
+ }
28
+ }
29
+ exports.ActorStageExitCompleted = ActorStageExitCompleted;
30
+ //# sourceMappingURL=ActorStageExitCompleted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitCompleted.js","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitCompleted.ts"],"names":[],"mappings":";;;AAAA,2CAAgE;AAEhE,uCAAkD;AAClD,iDAA6C;AAC7C,wEAAqE;AAErE;;;;;;;;;GASG;AACH,MAAa,uBAAwB,SAAQ,iDAAuB;IAW5C;IAVpB,MAAM,CAAC,QAAQ,CAAC,CAAa;QACzB,OAAO,IAAI,uBAAuB,CAC9B,qBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAuB,CAAC,EACjD,YAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAe,CAAC,EAChC,sBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAmB,CAAC,CAC5C,CAAC;IACN,CAAC;IAED,YACI,aAA4B,EACZ,KAAW,EAC3B,SAAqB;QAErB,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAHhB,UAAK,GAAL,KAAK,CAAM;QAI3B,IAAA,mBAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxC,CAAC;CACJ;AAjBD,0DAiBC"}
@@ -0,0 +1,17 @@
1
+ import type { JSONObject } from 'tiny-types';
2
+ import { AsyncOperationFailed } from '../AsyncOperationFailed';
3
+ /**
4
+ * Emitted when [releasing](https://serenity-js.org/api/core/interface/Discardable/) an
5
+ * [`Actor`](https://serenity-js.org/api/core/class/Actor/) or its abilities
6
+ * resulted in an error either
7
+ * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
8
+ * for actors initialised within the scope of a test scenario,
9
+ * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
10
+ * for actors initialised within the scope of a test suite.
11
+ *
12
+ * @group Events
13
+ */
14
+ export declare class ActorStageExitFailed extends AsyncOperationFailed {
15
+ static fromJSON(o: JSONObject): ActorStageExitFailed;
16
+ }
17
+ //# sourceMappingURL=ActorStageExitFailed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitFailed.d.ts","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitFailed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB;CAOvD"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActorStageExitFailed = void 0;
4
+ const errors_1 = require("../../errors");
5
+ const model_1 = require("../../model");
6
+ const screenplay_1 = require("../../screenplay");
7
+ const AsyncOperationFailed_1 = require("../AsyncOperationFailed");
8
+ /**
9
+ * Emitted when [releasing](https://serenity-js.org/api/core/interface/Discardable/) an
10
+ * [`Actor`](https://serenity-js.org/api/core/class/Actor/) or its abilities
11
+ * resulted in an error either
12
+ * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
13
+ * for actors initialised within the scope of a test scenario,
14
+ * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
15
+ * for actors initialised within the scope of a test suite.
16
+ *
17
+ * @group Events
18
+ */
19
+ class ActorStageExitFailed extends AsyncOperationFailed_1.AsyncOperationFailed {
20
+ static fromJSON(o) {
21
+ return new ActorStageExitFailed(errors_1.ErrorSerialiser.deserialise(o.error), model_1.CorrelationId.fromJSON(o.correlationId), screenplay_1.Timestamp.fromJSON(o.timestamp));
22
+ }
23
+ }
24
+ exports.ActorStageExitFailed = ActorStageExitFailed;
25
+ //# sourceMappingURL=ActorStageExitFailed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitFailed.js","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitFailed.ts"],"names":[],"mappings":";;;AAEA,yCAA+C;AAC/C,uCAA4C;AAC5C,iDAA6C;AAC7C,kEAA+D;AAE/D;;;;;;;;;;GAUG;AACH,MAAa,oBAAqB,SAAQ,2CAAoB;IAC1D,MAAM,CAAC,QAAQ,CAAC,CAAa;QACzB,OAAO,IAAI,oBAAoB,CAC3B,wBAAe,CAAC,WAAW,CAAC,CAAC,CAAC,KAAe,CAAC,EAC9C,qBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAuB,CAAC,EACjD,sBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAmB,CAAC,CAC5C,CAAC;IACN,CAAC;CACJ;AARD,oDAQC"}
@@ -0,0 +1,20 @@
1
+ import type { JSONObject } from 'tiny-types';
2
+ import { CorrelationId } from '../../model';
3
+ import { type SerialisedActor, Timestamp } from '../../screenplay';
4
+ import { DomainEvent } from '../DomainEvent';
5
+ /**
6
+ * Emitted upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) and
7
+ * [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) events
8
+ * to notify the [stage crew members](https://serenity-js.org/api/core/interface/StageCrewMember/)
9
+ * about the final state of the [actors](https://serenity-js.org/api/core/class/Actor/) and their abilities
10
+ * before they're [released](https://serenity-js.org/api/core/interface/Discardable/).
11
+ *
12
+ * @group Events
13
+ */
14
+ export declare class ActorStageExitStarts extends DomainEvent {
15
+ readonly sceneId: CorrelationId;
16
+ readonly actor: SerialisedActor;
17
+ static fromJSON(o: JSONObject): ActorStageExitStarts;
18
+ constructor(sceneId: CorrelationId, actor: SerialisedActor, timestamp?: Timestamp);
19
+ }
20
+ //# sourceMappingURL=ActorStageExitStarts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitStarts.d.ts","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitStarts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;aAU7B,OAAO,EAAE,aAAa;aACtB,KAAK,EAAE,eAAe;IAV1C,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB;gBAShC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,eAAe,EACtC,SAAS,CAAC,EAAE,SAAS;CAM5B"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActorStageExitStarts = void 0;
4
+ const tiny_types_1 = require("tiny-types");
5
+ const model_1 = require("../../model");
6
+ const screenplay_1 = require("../../screenplay");
7
+ const DomainEvent_1 = require("../DomainEvent");
8
+ /**
9
+ * Emitted upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) and
10
+ * [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) events
11
+ * to notify the [stage crew members](https://serenity-js.org/api/core/interface/StageCrewMember/)
12
+ * about the final state of the [actors](https://serenity-js.org/api/core/class/Actor/) and their abilities
13
+ * before they're [released](https://serenity-js.org/api/core/interface/Discardable/).
14
+ *
15
+ * @group Events
16
+ */
17
+ class ActorStageExitStarts extends DomainEvent_1.DomainEvent {
18
+ sceneId;
19
+ actor;
20
+ static fromJSON(o) {
21
+ return new ActorStageExitStarts(model_1.CorrelationId.fromJSON(o.sceneId), o.actor, screenplay_1.Timestamp.fromJSON(o.timestamp));
22
+ }
23
+ constructor(sceneId, actor, timestamp) {
24
+ super(timestamp);
25
+ this.sceneId = sceneId;
26
+ this.actor = actor;
27
+ (0, tiny_types_1.ensure)('sceneId', sceneId, (0, tiny_types_1.isDefined)());
28
+ (0, tiny_types_1.ensure)('actor', actor, (0, tiny_types_1.isDefined)());
29
+ }
30
+ }
31
+ exports.ActorStageExitStarts = ActorStageExitStarts;
32
+ //# sourceMappingURL=ActorStageExitStarts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStageExitStarts.js","sourceRoot":"","sources":["../../../src/events/actor/ActorStageExitStarts.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAE/C,uCAA4C;AAC5C,iDAAmE;AACnE,gDAA6C;AAE7C;;;;;;;;GAQG;AACH,MAAa,oBAAqB,SAAQ,yBAAW;IAU7B;IACA;IAVpB,MAAM,CAAC,QAAQ,CAAC,CAAa;QACzB,OAAO,IAAI,oBAAoB,CAC3B,qBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAiB,CAAC,EAC3C,CAAC,CAAC,KAAmC,EACrC,sBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAmB,CAAC,CAC5C,CAAC;IACN,CAAC;IAED,YACoB,OAAsB,EACtB,KAAsB,EACtC,SAAqB;QAErB,KAAK,CAAC,SAAS,CAAC,CAAC;QAJD,YAAO,GAAP,OAAO,CAAe;QACtB,UAAK,GAAL,KAAK,CAAiB;QAItC,IAAA,mBAAM,EAAC,SAAS,EAAE,OAAO,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;QACxC,IAAA,mBAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxC,CAAC;CACJ;AAlBD,oDAkBC"}
@@ -0,0 +1,6 @@
1
+ export * from './ActorEntersStage';
2
+ export * from './ActorStageExitAttempted';
3
+ export * from './ActorStageExitCompleted';
4
+ export * from './ActorStageExitFailed';
5
+ export * from './ActorStageExitStarts';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/actor/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ActorEntersStage"), exports);
18
+ __exportStar(require("./ActorStageExitAttempted"), exports);
19
+ __exportStar(require("./ActorStageExitCompleted"), exports);
20
+ __exportStar(require("./ActorStageExitFailed"), exports);
21
+ __exportStar(require("./ActorStageExitStarts"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/actor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,4DAA0C;AAC1C,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC"}
@@ -2,6 +2,7 @@ export * from './ActivityFinished';
2
2
  export * from './ActivityRelatedArtifactArchived';
3
3
  export * from './ActivityRelatedArtifactGenerated';
4
4
  export * from './ActivityStarts';
5
+ export * from './actor';
5
6
  export * from './ArtifactArchived';
6
7
  export * from './ArtifactGenerated';
7
8
  export * from './AsyncOperationAborted';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -18,6 +18,7 @@ __exportStar(require("./ActivityFinished"), exports);
18
18
  __exportStar(require("./ActivityRelatedArtifactArchived"), exports);
19
19
  __exportStar(require("./ActivityRelatedArtifactGenerated"), exports);
20
20
  __exportStar(require("./ActivityStarts"), exports);
21
+ __exportStar(require("./actor"), exports);
21
22
  __exportStar(require("./ArtifactArchived"), exports);
22
23
  __exportStar(require("./ArtifactGenerated"), exports);
23
24
  __exportStar(require("./AsyncOperationAborted"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oEAAkD;AAClD,qEAAmD;AACnD,mDAAiC;AACjC,qDAAmC;AACnC,sDAAoC;AACpC,0DAAwC;AACxC,4DAA0C;AAC1C,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC;AACvC,gDAA8B;AAC9B,sDAAoC;AACpC,6DAA2C;AAC3C,wDAAsC;AACtC,sDAAoC;AACpC,2DAAyC;AACzC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,kDAAgC;AAChC,4DAA0C;AAC1C,0DAAwC;AACxC,gDAA8B;AAC9B,gDAA8B;AAC9B,0DAAwC;AACxC,iDAA+B;AAC/B,+CAA6B;AAC7B,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,kDAAgC;AAChC,sDAAoC;AACpC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oEAAkD;AAClD,qEAAmD;AACnD,mDAAiC;AACjC,0CAAwB;AACxB,qDAAmC;AACnC,sDAAoC;AACpC,0DAAwC;AACxC,4DAA0C;AAC1C,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC;AACvC,gDAA8B;AAC9B,sDAAoC;AACpC,6DAA2C;AAC3C,wDAAsC;AACtC,sDAAoC;AACpC,2DAAyC;AACzC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,kDAAgC;AAChC,4DAA0C;AAC1C,0DAAwC;AACxC,gDAA8B;AAC9B,gDAA8B;AAC9B,0DAAwC;AACxC,iDAA+B;AAC/B,+CAA6B;AAC7B,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,kDAAgC;AAChC,sDAAoC;AACpC,oDAAkC"}
@@ -8,6 +8,7 @@ import type { Activity } from './Activity';
8
8
  import type { Answerable } from './Answerable';
9
9
  import type { CollectsArtifacts } from './artifacts';
10
10
  import type { AnswersQuestions } from './questions';
11
+ import type { SerialisedActor } from './SerialisedActor';
11
12
  import type { TellsTime, Timestamp } from './time';
12
13
  /**
13
14
  * **Actors** represent **people** and **external systems** interacting with the system under test.
@@ -134,11 +135,17 @@ export declare class Actor implements PerformsActivities, UsesAbilities, CanHave
134
135
  * **PRO TIP:** To get the name of the actor, use [`Actor.name`](https://serenity-js.org/api/core/class/Actor/#name)
135
136
  */
136
137
  toString(): string;
138
+ /**
139
+ * Returns a JSON representation of the actor and its current state.
140
+ *
141
+ * The purpose of this method is to enable reporting the state of the actor in a human-readable format,
142
+ * rather than to serialise and deserialise the actor itself.
143
+ */
144
+ toJSON(): SerialisedActor;
137
145
  private initialiseAbilities;
138
146
  private findAbilitiesOfType;
139
147
  private findAbilityTo;
140
148
  private acquireAbility;
141
- private mostGenericTypeOf;
142
149
  /**
143
150
  * Instantiates a `Name` based on the string value of the parameter,
144
151
  * or returns the argument if it's already an instance of `Name`.
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,IAAI,EAAG,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EACR,WAAW,EACX,gBAAgB,EAGhB,aAAa,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,OAAO,EAGV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,KAAM,YAAW,kBAAkB,EAC5C,aAAa,EACb,gBAAgB,CAAC,KAAK,CAAC,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS;aAKW,IAAI,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJ1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgF;gBAGtF,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EAC7B,SAAS,GAAE,OAAO,EAAO;IAS7B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAc5D;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;IAMtC;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUvD;;OAEG;IACH,WAAW,IAAI,SAAS;IAIxB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAMlB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,iBAAiB;IASzB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKnB"}
1
+ {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAG,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAA8B,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAsC,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,KAAM,YAAW,kBAAkB,EAC5C,aAAa,EACb,gBAAgB,CAAC,KAAK,CAAC,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS;aAKW,IAAI,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJ1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgF;gBAGtF,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EAC7B,SAAS,GAAE,OAAO,EAAO;IAS7B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAc5D;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;IAMtC;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUvD;;OAEG;IACH,WAAW,IAAI,SAAS;IAIxB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;;;OAKG;IACH,MAAM,IAAI,eAAe;IAOzB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAQtB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKnB"}
@@ -168,6 +168,18 @@ class Actor {
168
168
  const abilities = Array.from(this.abilities.values()).map(ability => ability.constructor.name);
169
169
  return `Actor(name=${this.name}, abilities=[${abilities.join(', ')}])`;
170
170
  }
171
+ /**
172
+ * Returns a JSON representation of the actor and its current state.
173
+ *
174
+ * The purpose of this method is to enable reporting the state of the actor in a human-readable format,
175
+ * rather than to serialise and deserialise the actor itself.
176
+ */
177
+ toJSON() {
178
+ return {
179
+ name: this.name,
180
+ abilities: Array.from(this.abilities.values()).map(ability => ability.toJSON())
181
+ };
182
+ }
171
183
  initialiseAbilities() {
172
184
  return this.findAbilitiesOfType('initialise', 'isInitialised')
173
185
  .filter(ability => !ability.isInitialised())
@@ -184,21 +196,13 @@ class Actor {
184
196
  .filter(abilitiesWithDesiredMethods);
185
197
  }
186
198
  findAbilityTo(doSomething) {
187
- const abilityType = this.mostGenericTypeOf(doSomething);
188
- return this.abilities.get(abilityType);
199
+ return this.abilities.get(doSomething.abilityType());
189
200
  }
190
201
  acquireAbility(ability) {
191
202
  if (!(ability instanceof abilities_1.Ability)) {
192
203
  throw new errors_1.ConfigurationError(`Custom abilities must extend Ability from '@serenity-js/core'. Received ${io_1.ValueInspector.typeOf(ability)}`);
193
204
  }
194
- const abilityType = this.mostGenericTypeOf(ability.constructor);
195
- this.abilities.set(abilityType, ability);
196
- }
197
- mostGenericTypeOf(abilityType) {
198
- const parentType = Object.getPrototypeOf(abilityType);
199
- return !parentType || parentType === abilities_1.Ability
200
- ? abilityType
201
- : this.mostGenericTypeOf(parentType);
205
+ this.abilities.set(ability.abilityType(), ability);
202
206
  }
203
207
  /**
204
208
  * Instantiates a `Name` based on the string value of the parameter,
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { SerialisedAbility } from './abilities';
2
+ /**
3
+ * @group Actors
4
+ */
5
+ export interface SerialisedActor {
6
+ name: string;
7
+ abilities: Array<SerialisedAbility>;
8
+ }
9
+ //# sourceMappingURL=SerialisedActor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerialisedActor.d.ts","sourceRoot":"","sources":["../../src/screenplay/SerialisedActor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACvC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=SerialisedActor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerialisedActor.js","sourceRoot":"","sources":["../../src/screenplay/SerialisedActor.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import type { AbilityType } from './AbilityType';
2
+ import type { SerialisedAbility } from './SerialisedAbility';
2
3
  import type { UsesAbilities } from './UsesAbilities';
3
4
  /**
4
5
  * **Abilities** enable [actors](https://serenity-js.org/api/core/class/Actor/)
@@ -397,5 +398,43 @@ export declare abstract class Ability {
397
398
  * @param actor
398
399
  */
399
400
  static as<A extends Ability>(this: AbilityType<A>, actor: UsesAbilities): A;
401
+ /**
402
+ * Returns a JSON representation of the ability and its current state, if available.
403
+ * The purpose of this method is to enable reporting the state of the ability in a human-readable format,
404
+ * rather than to serialise and deserialise the ability itself.
405
+ */
406
+ toJSON(): SerialisedAbility;
407
+ /**
408
+ * Returns the most abstract type of this Ability class,
409
+ * specifically the first class in the inheritance hierarchy that directly extends the `Ability` class.
410
+ *
411
+ * ```ts
412
+ * import { Ability } from '@serenity-js/core';
413
+ *
414
+ * class MyAbility extends Ability {}
415
+ * class MySpecialisedAbility extends MyAbility {}
416
+ *
417
+ * MyAbility.abilityType(); // returns MyAbility
418
+ * MySpecialisedAbility.abilityType(); // returns MyAbility
419
+ * ```
420
+ */
421
+ static abilityType(): AbilityType<Ability>;
422
+ /**
423
+ * Returns the most abstract type of this Ability instance,
424
+ * specifically the first class in the inheritance hierarchy that directly extends the `Ability` class.
425
+ *
426
+ * ```ts
427
+ * import { Ability } from '@serenity-js/core';
428
+ *
429
+ * class MyAbility extends Ability {}
430
+ * class MySpecialisedAbility extends MyAbility {}
431
+ *
432
+ * new MyAbility().abilityType(); // returns MyAbility
433
+ * new MySpecialisedAbility().abilityType(); // returns MyAbility
434
+ * ```
435
+ */
436
+ abilityType(): AbilityType<Ability>;
437
+ private static abilityTypeOf;
438
+ private static ancestorTypes;
400
439
  }
401
440
  //# sourceMappingURL=Ability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ability.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/Ability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqWG;AACH,8BAAsB,OAAO;IAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,EACvB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,aAAa,GACrB,CAAC;CAGP"}
1
+ {"version":3,"file":"Ability.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/Ability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqWG;AACH,8BAAsB,OAAO;IAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,EACvB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,aAAa,GACrB,CAAC;IAIJ;;;;OAIG;IACH,MAAM,IAAI,iBAAiB;IAe3B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC;IAI1C;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC;IAInC,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,MAAM,CAAC,aAAa;CAO/B"}