@serenity-js/core 3.1.3 → 3.1.5

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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
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.1.5](https://github.com/serenity-js/serenity-js/compare/v3.1.4...v3.1.5) (2023-04-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **serenity-bdd:** improved support for nested requirement hierarchies with Cucumber.js ([749fb0f](https://github.com/serenity-js/serenity-js/commit/749fb0f9501575ac8152b01a980e4959a823471f)), closes [/github.com/serenity-bdd/serenity-core/blob/8f7d14c6dad47bb58a1585fef5f9d9a44bb963fd/serenity-model/src/main/java/net/thucydides/core/requirements/AbstractRequirementsTagProvider.java#L36](https://github.com//github.com/serenity-bdd/serenity-core/blob/8f7d14c6dad47bb58a1585fef5f9d9a44bb963fd/serenity-model/src/main/java/net/thucydides/core/requirements/AbstractRequirementsTagProvider.java/issues/L36) [#1649](https://github.com/serenity-js/serenity-js/issues/1649)
12
+
13
+
14
+
15
+
16
+
6
17
  ## [3.1.3](https://github.com/serenity-js/serenity-js/compare/v3.1.2...v3.1.3) (2023-04-14)
7
18
 
8
19
  **Note:** Version bump only for package @serenity-js/core
@@ -5,6 +5,7 @@ import { JSONObject, TinyType } from 'tiny-types';
5
5
  export declare abstract class Tag extends TinyType {
6
6
  readonly name: string;
7
7
  readonly type: string;
8
+ static humanReadable(tagConstructor: new (name: string) => Tag, tagName: string): Tag;
8
9
  static fromJSON(o: JSONObject): Tag;
9
10
  protected constructor(name: string, type: string);
10
11
  toJSON(): {
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/model/tags/Tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIxG;;GAEG;AACH,8BAAsB,GAAI,SAAQ,QAAQ;aAaA,IAAI,EAAE,MAAM;aAAkB,IAAI,EAAE,MAAM;IAZhF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,GAAG;IAYnC,SAAS,aAA6B,IAAI,EAAE,MAAM,EAAkB,IAAI,EAAE,MAAM;IAOhF,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAG3C"}
1
+ {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/model/tags/Tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIxG;;GAEG;AACH,8BAAsB,GAAI,SAAQ,QAAQ;aA0BA,IAAI,EAAE,MAAM;aAAkB,IAAI,EAAE,MAAM;IAzBhF,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG;IAarF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,GAAG;IAYnC,SAAS,aAA6B,IAAI,EAAE,MAAM,EAAkB,IAAI,EAAE,MAAM;IAOhF,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAG3C"}
@@ -30,6 +30,16 @@ const TagTypes = __importStar(require("./index"));
30
30
  * @access public
31
31
  */
32
32
  class Tag extends tiny_types_1.TinyType {
33
+ static humanReadable(tagConstructor, tagName) {
34
+ // based on https://github.com/serenity-bdd/serenity-core/blob/8f7d14c6dad47bb58a1585fef5f9d9a44bb963fd/serenity-model/src/main/java/net/thucydides/core/requirements/AbstractRequirementsTagProvider.java#L36
35
+ const name = String(tagName)
36
+ .trim()
37
+ .match(/[\dA-Z]{2,}(?=[A-Z][a-z]+\d*|\b)|[A-Z]?[a-z]+\d*|[A-Z]|\d+/g)
38
+ .map(chunk => /^[A-Z]+$/.test(chunk) ? chunk : chunk.toLowerCase())
39
+ .join('_')
40
+ .replace(/[\s_]+/g, ' ');
41
+ return new tagConstructor(name.charAt(0).toUpperCase() + name.slice(1));
42
+ }
33
43
  static fromJSON(o) {
34
44
  const type = (0, tiny_types_1.ensure)('serialised tag type', o.type, (0, tiny_types_1.isDefined)(), (0, tiny_types_1.isString)());
35
45
  const found = Object.keys(TagTypes).find(t => TagTypes[t].Type === type) || TagTypes.ArbitraryTag.name;
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../../src/model/tags/Tag.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwG;AAExG,kDAAoC;AAEpC;;GAEG;AACH,MAAsB,GAAI,SAAQ,qBAAQ;IACtC,MAAM,CAAC,QAAQ,CAAC,CAAa;QACzB,MAAM,IAAI,GAAW,IAAA,mBAAM,EAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,qBAAQ,GAAE,CAAW,CAAC;QAE9F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAEvG,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE;YACnE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,YAAsC,IAAY,EAAkB,IAAY;QAC5E,KAAK,EAAE,CAAC;QAD0B,SAAI,GAAJ,IAAI,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAQ;QAG5E,IAAA,mBAAM,EAAC,UAAU,EAAE,IAAI,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,qBAAQ,EAAC,QAAQ,EAAE,IAAA,0BAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAA,mBAAM,EAAC,UAAU,EAAE,IAAI,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,qBAAQ,EAAC,QAAQ,EAAE,IAAA,0BAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM;QACF,OAAO,KAAK,CAAC,MAAM,EAAoC,CAAC;IAC5D,CAAC;CACJ;AAvBD,kBAuBC"}
1
+ {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../../src/model/tags/Tag.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwG;AAExG,kDAAoC;AAEpC;;GAEG;AACH,MAAsB,GAAI,SAAQ,qBAAQ;IACtC,MAAM,CAAC,aAAa,CAAC,cAAyC,EAAE,OAAe;QAC3E,8MAA8M;QAC9M,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;aACvB,IAAI,EAAE;aACN,KAAK,CAAC,6DAA6D,CAAC;aACpE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aAClE,IAAI,CAAC,GAAG,CAAC;aACT,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAC3B;QAED,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,CAAa;QACzB,MAAM,IAAI,GAAW,IAAA,mBAAM,EAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,qBAAQ,GAAE,CAAW,CAAC;QAE9F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAEvG,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE;YACnE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,YAAsC,IAAY,EAAkB,IAAY;QAC5E,KAAK,EAAE,CAAC;QAD0B,SAAI,GAAJ,IAAI,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAQ;QAG5E,IAAA,mBAAM,EAAC,UAAU,EAAE,IAAI,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,qBAAQ,EAAC,QAAQ,EAAE,IAAA,0BAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAA,mBAAM,EAAC,UAAU,EAAE,IAAI,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,qBAAQ,EAAC,QAAQ,EAAE,IAAA,0BAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM;QACF,OAAO,KAAK,CAAC,MAAM,EAAoC,CAAC;IAC5D,CAAC;CACJ;AApCD,kBAoCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/core",
3
- "version": "3.1.3",
3
+ "version": "3.1.5",
4
4
  "description": "Serenity/JS Screenplay, reporting engine and core interfaces.",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -71,5 +71,5 @@
71
71
  "node": "^14 || ^16 || ^18",
72
72
  "npm": "^6 || ^7 || ^8 || ^9"
73
73
  },
74
- "gitHead": "6cabc4cb6e6f25411862c7375738b931012b6361"
74
+ "gitHead": "31f621a7c827e20ba07a86a2f7c77d941784bb0a"
75
75
  }
@@ -6,6 +6,19 @@ import * as TagTypes from './index';
6
6
  * @access public
7
7
  */
8
8
  export abstract class Tag extends TinyType {
9
+ static humanReadable(tagConstructor: new (name: string) => Tag, tagName: string): Tag {
10
+ // based on https://github.com/serenity-bdd/serenity-core/blob/8f7d14c6dad47bb58a1585fef5f9d9a44bb963fd/serenity-model/src/main/java/net/thucydides/core/requirements/AbstractRequirementsTagProvider.java#L36
11
+ const name = String(tagName)
12
+ .trim()
13
+ .match(/[\dA-Z]{2,}(?=[A-Z][a-z]+\d*|\b)|[A-Z]?[a-z]+\d*|[A-Z]|\d+/g)
14
+ .map(chunk => /^[A-Z]+$/.test(chunk) ? chunk : chunk.toLowerCase())
15
+ .join('_')
16
+ .replace(/[\s_]+/g, ' ')
17
+ ;
18
+
19
+ return new tagConstructor(name.charAt(0).toUpperCase() + name.slice(1));
20
+ }
21
+
9
22
  static fromJSON(o: JSONObject): Tag {
10
23
  const type: string = ensure('serialised tag type', o.type, isDefined(), isString()) as string;
11
24