@serenity-js/core 2.32.5 → 3.0.0-rc.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 (173) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/lib/index.d.ts +2 -1
  3. package/lib/index.js +4 -1
  4. package/lib/index.js.map +1 -1
  5. package/lib/io/ErrorSerialiser.js +4 -1
  6. package/lib/io/ErrorSerialiser.js.map +1 -1
  7. package/lib/io/collections/index.d.ts +0 -1
  8. package/lib/io/collections/index.js +0 -1
  9. package/lib/io/collections/index.js.map +1 -1
  10. package/lib/io/format.d.ts +37 -0
  11. package/lib/io/format.js +49 -0
  12. package/lib/io/format.js.map +1 -0
  13. package/lib/io/formatted.d.ts +5 -1
  14. package/lib/io/formatted.js +6 -13
  15. package/lib/io/formatted.js.map +1 -1
  16. package/lib/io/index.d.ts +1 -0
  17. package/lib/io/index.js +1 -0
  18. package/lib/io/index.js.map +1 -1
  19. package/lib/io/inspected.d.ts +9 -1
  20. package/lib/io/inspected.js +50 -14
  21. package/lib/io/inspected.js.map +1 -1
  22. package/lib/model/Timestamp.d.ts +4 -2
  23. package/lib/model/Timestamp.js +8 -2
  24. package/lib/model/Timestamp.js.map +1 -1
  25. package/lib/screenplay/Question.d.ts +6 -83
  26. package/lib/screenplay/Question.js +14 -98
  27. package/lib/screenplay/Question.js.map +1 -1
  28. package/lib/screenplay/actor/Actor.js +2 -2
  29. package/lib/screenplay/actor/Actor.js.map +1 -1
  30. package/lib/screenplay/index.d.ts +1 -1
  31. package/lib/screenplay/index.js +1 -1
  32. package/lib/screenplay/index.js.map +1 -1
  33. package/lib/screenplay/model/Adapter.d.ts +8 -0
  34. package/lib/screenplay/{questions/proxies/PropertyPathKey.js → model/Adapter.js} +1 -1
  35. package/lib/screenplay/model/Adapter.js.map +1 -0
  36. package/lib/screenplay/model/createAdapter.d.ts +3 -0
  37. package/lib/screenplay/model/createAdapter.js +112 -0
  38. package/lib/screenplay/model/createAdapter.js.map +1 -0
  39. package/lib/screenplay/model/index.d.ts +2 -0
  40. package/lib/screenplay/{tasks → model}/index.js +2 -1
  41. package/lib/screenplay/model/index.js.map +1 -0
  42. package/lib/screenplay/questions/Expectation.d.ts +11 -0
  43. package/lib/screenplay/questions/Expectation.js +18 -1
  44. package/lib/screenplay/questions/Expectation.js.map +1 -1
  45. package/lib/screenplay/questions/List.d.ts +10 -0
  46. package/lib/screenplay/questions/List.js +16 -1
  47. package/lib/screenplay/questions/List.js.map +1 -1
  48. package/lib/screenplay/questions/Note.d.ts +10 -0
  49. package/lib/screenplay/questions/Note.js +17 -1
  50. package/lib/screenplay/questions/Note.js.map +1 -1
  51. package/lib/screenplay/questions/index.d.ts +0 -3
  52. package/lib/screenplay/questions/index.js +0 -5
  53. package/lib/screenplay/questions/index.js.map +1 -1
  54. package/lib/screenplay/questions/lists/ArrayListAdapter.js +20 -5
  55. package/lib/screenplay/questions/lists/ArrayListAdapter.js.map +1 -1
  56. package/package.json +3 -3
  57. package/src/index.ts +2 -1
  58. package/src/io/ErrorSerialiser.ts +5 -1
  59. package/src/io/collections/index.ts +0 -1
  60. package/src/io/format.ts +46 -0
  61. package/src/io/formatted.ts +7 -15
  62. package/src/io/index.ts +1 -0
  63. package/src/io/inspected.ts +66 -14
  64. package/src/model/Timestamp.ts +10 -2
  65. package/src/screenplay/Question.ts +21 -119
  66. package/src/screenplay/actor/Actor.ts +2 -2
  67. package/src/screenplay/index.ts +1 -1
  68. package/src/screenplay/model/Adapter.ts +14 -0
  69. package/src/screenplay/model/createAdapter.ts +142 -0
  70. package/src/screenplay/model/index.ts +2 -0
  71. package/src/screenplay/questions/Expectation.ts +20 -1
  72. package/src/screenplay/questions/List.ts +19 -1
  73. package/src/screenplay/questions/Note.ts +21 -1
  74. package/src/screenplay/questions/index.ts +0 -3
  75. package/src/screenplay/questions/lists/ArrayListAdapter.ts +21 -2
  76. package/lib/io/collections/mappable.d.ts +0 -52
  77. package/lib/io/collections/mappable.js +0 -28
  78. package/lib/io/collections/mappable.js.map +0 -1
  79. package/lib/screenplay/questions/Property.d.ts +0 -91
  80. package/lib/screenplay/questions/Property.js +0 -99
  81. package/lib/screenplay/questions/Property.js.map +0 -1
  82. package/lib/screenplay/questions/Transform.d.ts +0 -31
  83. package/lib/screenplay/questions/Transform.js +0 -46
  84. package/lib/screenplay/questions/Transform.js.map +0 -1
  85. package/lib/screenplay/questions/mappings/AnswerMappingFunction.d.ts +0 -11
  86. package/lib/screenplay/questions/mappings/AnswerMappingFunction.js +0 -3
  87. package/lib/screenplay/questions/mappings/AnswerMappingFunction.js.map +0 -1
  88. package/lib/screenplay/questions/mappings/index.d.ts +0 -2
  89. package/lib/screenplay/questions/mappings/index.js +0 -15
  90. package/lib/screenplay/questions/mappings/index.js.map +0 -1
  91. package/lib/screenplay/questions/mappings/string/append.d.ts +0 -14
  92. package/lib/screenplay/questions/mappings/string/append.js +0 -25
  93. package/lib/screenplay/questions/mappings/string/append.js.map +0 -1
  94. package/lib/screenplay/questions/mappings/string/index.d.ts +0 -11
  95. package/lib/screenplay/questions/mappings/string/index.js +0 -24
  96. package/lib/screenplay/questions/mappings/string/index.js.map +0 -1
  97. package/lib/screenplay/questions/mappings/string/normalize.d.ts +0 -20
  98. package/lib/screenplay/questions/mappings/string/normalize.js +0 -30
  99. package/lib/screenplay/questions/mappings/string/normalize.js.map +0 -1
  100. package/lib/screenplay/questions/mappings/string/replace.d.ts +0 -17
  101. package/lib/screenplay/questions/mappings/string/replace.js +0 -30
  102. package/lib/screenplay/questions/mappings/string/replace.js.map +0 -1
  103. package/lib/screenplay/questions/mappings/string/slice.d.ts +0 -28
  104. package/lib/screenplay/questions/mappings/string/slice.js +0 -47
  105. package/lib/screenplay/questions/mappings/string/slice.js.map +0 -1
  106. package/lib/screenplay/questions/mappings/string/split.d.ts +0 -19
  107. package/lib/screenplay/questions/mappings/string/split.js +0 -36
  108. package/lib/screenplay/questions/mappings/string/split.js.map +0 -1
  109. package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.d.ts +0 -17
  110. package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.js +0 -28
  111. package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.js.map +0 -1
  112. package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.d.ts +0 -17
  113. package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.js +0 -29
  114. package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.js.map +0 -1
  115. package/lib/screenplay/questions/mappings/string/toLowerCase.d.ts +0 -10
  116. package/lib/screenplay/questions/mappings/string/toLowerCase.js +0 -19
  117. package/lib/screenplay/questions/mappings/string/toLowerCase.js.map +0 -1
  118. package/lib/screenplay/questions/mappings/string/toNumber.d.ts +0 -10
  119. package/lib/screenplay/questions/mappings/string/toNumber.js +0 -18
  120. package/lib/screenplay/questions/mappings/string/toNumber.js.map +0 -1
  121. package/lib/screenplay/questions/mappings/string/toUpperCase.d.ts +0 -10
  122. package/lib/screenplay/questions/mappings/string/toUpperCase.js +0 -19
  123. package/lib/screenplay/questions/mappings/string/toUpperCase.js.map +0 -1
  124. package/lib/screenplay/questions/mappings/string/trim.d.ts +0 -12
  125. package/lib/screenplay/questions/mappings/string/trim.js +0 -21
  126. package/lib/screenplay/questions/mappings/string/trim.js.map +0 -1
  127. package/lib/screenplay/questions/proxies/PropertyPathKey.d.ts +0 -4
  128. package/lib/screenplay/questions/proxies/PropertyPathKey.js.map +0 -1
  129. package/lib/screenplay/questions/proxies/createMetaQuestionProxy.d.ts +0 -14
  130. package/lib/screenplay/questions/proxies/createMetaQuestionProxy.js +0 -35
  131. package/lib/screenplay/questions/proxies/createMetaQuestionProxy.js.map +0 -1
  132. package/lib/screenplay/questions/proxies/createQuestionProxy.d.ts +0 -13
  133. package/lib/screenplay/questions/proxies/createQuestionProxy.js +0 -34
  134. package/lib/screenplay/questions/proxies/createQuestionProxy.js.map +0 -1
  135. package/lib/screenplay/questions/proxies/describePath.d.ts +0 -5
  136. package/lib/screenplay/questions/proxies/describePath.js +0 -19
  137. package/lib/screenplay/questions/proxies/describePath.js.map +0 -1
  138. package/lib/screenplay/questions/proxies/index.d.ts +0 -2
  139. package/lib/screenplay/questions/proxies/index.js +0 -15
  140. package/lib/screenplay/questions/proxies/index.js.map +0 -1
  141. package/lib/screenplay/questions/proxies/key.d.ts +0 -8
  142. package/lib/screenplay/questions/proxies/key.js +0 -16
  143. package/lib/screenplay/questions/proxies/key.js.map +0 -1
  144. package/lib/screenplay/tasks/Loop.d.ts +0 -198
  145. package/lib/screenplay/tasks/Loop.js +0 -222
  146. package/lib/screenplay/tasks/Loop.js.map +0 -1
  147. package/lib/screenplay/tasks/index.d.ts +0 -1
  148. package/lib/screenplay/tasks/index.js.map +0 -1
  149. package/src/io/collections/mappable.ts +0 -60
  150. package/src/screenplay/questions/Property.ts +0 -98
  151. package/src/screenplay/questions/Transform.ts +0 -51
  152. package/src/screenplay/questions/mappings/AnswerMappingFunction.ts +0 -13
  153. package/src/screenplay/questions/mappings/index.ts +0 -2
  154. package/src/screenplay/questions/mappings/string/append.ts +0 -28
  155. package/src/screenplay/questions/mappings/string/index.ts +0 -11
  156. package/src/screenplay/questions/mappings/string/normalize.ts +0 -33
  157. package/src/screenplay/questions/mappings/string/replace.ts +0 -34
  158. package/src/screenplay/questions/mappings/string/slice.ts +0 -53
  159. package/src/screenplay/questions/mappings/string/split.ts +0 -38
  160. package/src/screenplay/questions/mappings/string/toLocaleLowerCase.ts +0 -31
  161. package/src/screenplay/questions/mappings/string/toLocaleUpperCase.ts +0 -30
  162. package/src/screenplay/questions/mappings/string/toLowerCase.ts +0 -20
  163. package/src/screenplay/questions/mappings/string/toNumber.ts +0 -19
  164. package/src/screenplay/questions/mappings/string/toUpperCase.ts +0 -20
  165. package/src/screenplay/questions/mappings/string/trim.ts +0 -22
  166. package/src/screenplay/questions/proxies/PropertyPathKey.ts +0 -4
  167. package/src/screenplay/questions/proxies/createMetaQuestionProxy.ts +0 -51
  168. package/src/screenplay/questions/proxies/createQuestionProxy.ts +0 -49
  169. package/src/screenplay/questions/proxies/describePath.ts +0 -23
  170. package/src/screenplay/questions/proxies/index.ts +0 -2
  171. package/src/screenplay/questions/proxies/key.ts +0 -14
  172. package/src/screenplay/tasks/Loop.ts +0 -240
  173. package/src/screenplay/tasks/index.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,43 @@
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.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **core:** `formatted` can be configured to produce single- or multi-line descriptions ([21145a3](https://github.com/serenity-js/serenity-js/commit/21145a3dda17e87ea7bd950da4526b90f37a1edc))
12
+ * **core:** `inspected` produces a better description of functions used as parameters ([15535c6](https://github.com/serenity-js/serenity-js/commit/15535c675469651b835c0b358649a590f2c15b5d))
13
+ * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
14
+ * **core:** answerProxy renamed to ProxyAnswer to better reflect its purpose ([a98fe41](https://github.com/serenity-js/serenity-js/commit/a98fe41378bc8475f027946e0f01a30f4789d57a))
15
+ * **core:** corrected type defs of Question.as ([681ce22](https://github.com/serenity-js/serenity-js/commit/681ce22259bf75161df7ce2454f4b6d73ea87259))
16
+ * **core:** exported createProxyAnswer to make it easier to use ([5471989](https://github.com/serenity-js/serenity-js/commit/547198985025d0ede2ab47ea89d8944960fb980d))
17
+ * **core:** removed Loop as it will be replaced ([0b63d27](https://github.com/serenity-js/serenity-js/commit/0b63d27745c905001adf3c219dd0e3cf44756320))
18
+ * **core:** removed Property as it will be replaced by new Question ([fd7fa10](https://github.com/serenity-js/serenity-js/commit/fd7fa10dfbaa0c0cba059c5f18920609c4bac014))
19
+ * **core:** removed Transform and mapping functions as they'll be replaced with new Question ([506eaea](https://github.com/serenity-js/serenity-js/commit/506eaeaf2df22cfde5d7ca6a8f413fc053556c2b))
20
+ * **core:** renamed "Model" type to "Adapter" to better reflect its purpose ([b4ea7a1](https://github.com/serenity-js/serenity-js/commit/b4ea7a100fac2c896990bf15cbc906de641196b8)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
21
+ * **cucumber:** support for recognising non-Serenity AssertionErrors in older version of Cucumber ([31e9e99](https://github.com/serenity-js/serenity-js/commit/31e9e9919c2fd1e87b3f4405d9b2a6ae0164e893))
22
+ * **web:** wordsmithing of interface names ([5a1e76a](https://github.com/serenity-js/serenity-js/commit/5a1e76a9c162370e17238fcccc9f08e109d543c3))
23
+
24
+
25
+ ### Features
26
+
27
+ * **core:** question.about creates a proxy around the answer to simplify the API ([25e0841](https://github.com/serenity-js/serenity-js/commit/25e084116ad28a02b55fbd8814b6ffa0375ec433))
28
+ * **core:** question.about produces "props" that proxy the methods of the underlying model ([f771872](https://github.com/serenity-js/serenity-js/commit/f771872c56b487e404002c3800fc8f3baaed804f))
29
+ * **web:** Page.url() and Page.title() replace Website.url() and Website.title() ([49fe009](https://github.com/serenity-js/serenity-js/commit/49fe0094422ab53ec67d4ba303f80c33e382eebd)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
30
+ * **web:** removed Target in favour of PageElement ([69496c4](https://github.com/serenity-js/serenity-js/commit/69496c47c4a1ec7b92e7ab6c83da1559e926f28e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
31
+ * **web:** support for working with cookies ([39cde6d](https://github.com/serenity-js/serenity-js/commit/39cde6de7a36d27a8b1c596493efbec94900af6b)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
32
+
33
+
34
+ ### BREAKING CHANGES
35
+
36
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
37
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
38
+
39
+
40
+
41
+
42
+
6
43
  ## [2.32.5](https://github.com/serenity-js/serenity-js/compare/v2.32.4...v2.32.5) (2021-12-08)
7
44
 
8
45
  **Note:** Version bump only for package @serenity-js/core
package/lib/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './errors';
2
2
  export * from './instance';
3
- export { Duration } from './model';
3
+ export { format } from './io';
4
+ export { Duration, Timestamp } from './model';
4
5
  export * from './screenplay';
5
6
  export * from './Serenity';
6
7
  export { SerenityConfig } from './SerenityConfig';
package/lib/index.js CHANGED
@@ -10,11 +10,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.SerenityConfig = exports.Duration = void 0;
13
+ exports.SerenityConfig = exports.Timestamp = exports.Duration = exports.format = void 0;
14
14
  __exportStar(require("./errors"), exports);
15
15
  __exportStar(require("./instance"), exports);
16
+ var io_1 = require("./io");
17
+ Object.defineProperty(exports, "format", { enumerable: true, get: function () { return io_1.format; } });
16
18
  var model_1 = require("./model");
17
19
  Object.defineProperty(exports, "Duration", { enumerable: true, get: function () { return model_1.Duration; } });
20
+ Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return model_1.Timestamp; } });
18
21
  __exportStar(require("./screenplay"), exports);
19
22
  __exportStar(require("./Serenity"), exports);
20
23
  var SerenityConfig_1 = require("./SerenityConfig");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AACjB,+CAA6B;AAC7B,6CAA2B;AAC3B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,2BAA8B;AAArB,4FAAA,MAAM,OAAA;AACf,iCAA8C;AAArC,iGAAA,QAAQ,OAAA;AAAE,kGAAA,SAAS,OAAA;AAC5B,+CAA6B;AAC7B,6CAA2B;AAC3B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,0CAAwB"}
@@ -5,10 +5,13 @@ const serenitySpecificErrors = require("../errors");
5
5
  const json_1 = require("./json");
6
6
  class ErrorSerialiser {
7
7
  static serialise(error) {
8
+ const name = error && error.constructor && error.constructor.name
9
+ ? error.constructor.name
10
+ : error.name;
8
11
  const serialisedError = Object.getOwnPropertyNames(error).reduce((serialised, key) => {
9
12
  serialised[key] = error[key];
10
13
  return serialised;
11
- }, { name: error.constructor.name || error.name });
14
+ }, { name });
12
15
  return (0, json_1.stringify)(serialisedError);
13
16
  }
14
17
  static deserialise(stringifiedError) {
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorSerialiser.js","sourceRoot":"","sources":["../../src/io/ErrorSerialiser.ts"],"names":[],"mappings":";;;AAEA,oDAAoD;AACpD,iCAA0C;AAyB1C,MAAa,eAAe;IAYxB,MAAM,CAAC,SAAS,CAAC,KAAY;QACzB,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YACjF,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5B,OAAO,UAAU,CAAC;QACtB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAoB,CAAC;QAEtE,OAAO,IAAA,gBAAS,EAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,WAAW,CAAkB,gBAAwB;QACxD,MAAM,eAAe,GAAG,IAAA,YAAK,EAAC,gBAAgB,CAAoB,CAAC;QAEnE,MAAM,WAAW,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QACzH,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1D,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;YACpC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE;gBACjE,YAAY,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;aACtD;SACJ;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,KAAa;QAC1C,MAAM,iBAAiB,GAAG,+CAA+C,CAAC;QAE1E,IAAI,CAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACnC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAE,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtE,OAAO,eAAe,CAAC,WAAW,CAAC,IAAA,gBAAS,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;;AA5CL,0CA6CC;AA5CkB,gCAAgB,GAAG;IAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC9E,KAAK;IACL,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;IACT,QAAQ;CACX,CAAC"}
1
+ {"version":3,"file":"ErrorSerialiser.js","sourceRoot":"","sources":["../../src/io/ErrorSerialiser.ts"],"names":[],"mappings":";;;AAEA,oDAAoD;AACpD,iCAA0C;AAyB1C,MAAa,eAAe;IAYxB,MAAM,CAAC,SAAS,CAAC,KAAY;QACzB,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI;YAC7D,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI;YACxB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAEjB,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YACjF,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5B,OAAO,UAAU,CAAC;QACtB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAoB,CAAC;QAEhC,OAAO,IAAA,gBAAS,EAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,WAAW,CAAkB,gBAAwB;QACxD,MAAM,eAAe,GAAG,IAAA,YAAK,EAAC,gBAAgB,CAAoB,CAAC;QAEnE,MAAM,WAAW,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QACzH,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1D,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;YACpC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE;gBACjE,YAAY,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;aACtD;SACJ;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,KAAa;QAC1C,MAAM,iBAAiB,GAAG,+CAA+C,CAAC;QAE1E,IAAI,CAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACnC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAE,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtE,OAAO,eAAe,CAAC,WAAW,CAAC,IAAA,gBAAS,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;;AAhDL,0CAiDC;AAhDkB,gCAAgB,GAAG;IAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC9E,KAAK;IACL,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;IACT,QAAQ;CACX,CAAC"}
@@ -1,2 +1 @@
1
- export * from './mappable';
2
1
  export * from './reducible';
@@ -10,6 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./mappable"), exports);
14
13
  __exportStar(require("./reducible"), exports);
15
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/io/collections/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/io/collections/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B"}
@@ -0,0 +1,37 @@
1
+ import { Answerable } from '../screenplay';
2
+ /**
3
+ * @desc
4
+ * A factory function returning a tag function that produces a human-readable description of a template containing one or more {@link Answerable}s.
5
+ *
6
+ * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals
7
+ *
8
+ * @example
9
+ * import { format, Question } from '@serenity-js/core';
10
+ *
11
+ * const someQuestion = () =>
12
+ * Question.about('some question', actor => 'some value');
13
+ *
14
+ * format({ markQuestions: true }) `actor answers ${ question() }`;
15
+ * // returns: actor answers <<some question>>
16
+ *
17
+ * format({ markQuestions: false }) `actor answers ${ question() }`;
18
+ * // returns: actor answers <<some question>>
19
+ *
20
+ * @example <caption>Aliasing</caption>
21
+ * import { format, Question } from '@serenity-js/core';
22
+ *
23
+ * const f = format({ markQuestions: true });
24
+ *
25
+ * const someQuestion = () =>
26
+ * Question.about('some question', actor => 'some value');
27
+ *
28
+ * f `actor answers ${ question() }`;
29
+ * // produces: actor answers <<some question>>
30
+ *
31
+ * @param {object} config
32
+ * - `markQuestions`: boolean - if set to true, descriptions of questions passed in as arguments will be surrounded with double angled brackets, i.e. `<<description>>`
33
+ * @returns {function(templates: TemplateStringsArray, placeholders: ...Array<Answerable<any>>): string}
34
+ */
35
+ export declare function format(config: {
36
+ markQuestions: boolean;
37
+ }): (templates: TemplateStringsArray, ...placeholders: Array<Answerable<any>>) => string;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.format = void 0;
4
+ const inspected_1 = require("./inspected");
5
+ /**
6
+ * @desc
7
+ * A factory function returning a tag function that produces a human-readable description of a template containing one or more {@link Answerable}s.
8
+ *
9
+ * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals
10
+ *
11
+ * @example
12
+ * import { format, Question } from '@serenity-js/core';
13
+ *
14
+ * const someQuestion = () =>
15
+ * Question.about('some question', actor => 'some value');
16
+ *
17
+ * format({ markQuestions: true }) `actor answers ${ question() }`;
18
+ * // returns: actor answers <<some question>>
19
+ *
20
+ * format({ markQuestions: false }) `actor answers ${ question() }`;
21
+ * // returns: actor answers <<some question>>
22
+ *
23
+ * @example <caption>Aliasing</caption>
24
+ * import { format, Question } from '@serenity-js/core';
25
+ *
26
+ * const f = format({ markQuestions: true });
27
+ *
28
+ * const someQuestion = () =>
29
+ * Question.about('some question', actor => 'some value');
30
+ *
31
+ * f `actor answers ${ question() }`;
32
+ * // produces: actor answers <<some question>>
33
+ *
34
+ * @param {object} config
35
+ * - `markQuestions`: boolean - if set to true, descriptions of questions passed in as arguments will be surrounded with double angled brackets, i.e. `<<description>>`
36
+ * @returns {function(templates: TemplateStringsArray, placeholders: ...Array<Answerable<any>>): string}
37
+ */
38
+ function format(config) {
39
+ return (templates, ...placeholders) => {
40
+ return templates
41
+ .map((template, i) => i < placeholders.length
42
+ ? [template, (0, inspected_1.inspected)(placeholders[i], { inline: true, markQuestions: config.markQuestions })]
43
+ : [template])
44
+ .reduce((acc, tuple) => acc.concat(tuple))
45
+ .join('');
46
+ };
47
+ }
48
+ exports.format = format;
49
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/io/format.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,MAAM,CAAC,MAAkC;IACrD,OAAO,CAAC,SAA+B,EAAE,GAAG,YAAoC,EAAU,EAAE;QACxF,OAAO,SAAS;aACX,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM;YACzC,CAAC,CAAC,CAAE,QAAQ,EAAE,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAE;YACjG,CAAC,CAAC,CAAE,QAAQ,CAAE,CAAC;aAClB,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACzC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAA;AACL,CAAC;AATD,wBASC"}
@@ -1,10 +1,14 @@
1
- import { Answerable } from '../screenplay/Answerable';
1
+ import { Answerable } from '../screenplay';
2
2
  /**
3
3
  * @desc
4
4
  * A tag function returning a human-readable description of a template containing one or more {@link Answerable}s.
5
+ * This function is deprecated, please use {@link format} instead.
5
6
  *
6
7
  * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals
7
8
  *
9
+ *
10
+ * @deprecated
11
+ *
8
12
  * @param {TemplateStringsArray} templates
9
13
  * @param {Array<Answerable<any>>} placeholders
10
14
  * @returns {string}
@@ -1,30 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatted = void 0;
4
- const inspected_1 = require("./inspected");
4
+ const format_1 = require("./format");
5
5
  /**
6
6
  * @desc
7
7
  * A tag function returning a human-readable description of a template containing one or more {@link Answerable}s.
8
+ * This function is deprecated, please use {@link format} instead.
8
9
  *
9
10
  * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals
10
11
  *
12
+ *
13
+ * @deprecated
14
+ *
11
15
  * @param {TemplateStringsArray} templates
12
16
  * @param {Array<Answerable<any>>} placeholders
13
17
  * @returns {string}
14
18
  */
15
19
  function formatted(templates, ...placeholders) {
16
- return templates
17
- .map((template, i) => i < placeholders.length
18
- ? [template, compacted((0, inspected_1.inspected)(placeholders[i]))]
19
- : [template])
20
- .reduce((acc, tuple) => acc.concat(tuple))
21
- .join('');
20
+ return (0, format_1.format)({ markQuestions: false })(templates, ...placeholders);
22
21
  }
23
22
  exports.formatted = formatted;
24
- /** @private */
25
- function compacted(multiline) {
26
- return multiline
27
- .replace(/\r?\n/g, ' ')
28
- .replace(/\s+/g, ' ');
29
- }
30
23
  //# sourceMappingURL=formatted.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatted.js","sourceRoot":"","sources":["../../src/io/formatted.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAC,SAA+B,EAAE,GAAG,YAAoC;IAC9F,OAAO,SAAS;SACX,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM;QACzC,CAAC,CAAC,CAAE,QAAQ,EAAE,SAAS,CAAC,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE;QACrD,CAAC,CAAC,CAAE,QAAQ,CAAE,CAAC;SAClB,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACzC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAPD,8BAOC;AAED,eAAe;AACf,SAAS,SAAS,CAAC,SAAiB;IAChC,OAAO,SAAS;SACX,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"formatted.js","sourceRoot":"","sources":["../../src/io/formatted.ts"],"names":[],"mappings":";;;AACA,qCAAkC;AAElC;;;;;;;;;;;;;GAaG;AACH,SAAgB,SAAS,CAAC,SAA+B,EAAE,GAAG,YAAoC;IAC9F,OAAO,IAAA,eAAM,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC;AACxE,CAAC;AAFD,8BAEC"}
package/lib/io/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './ErrorStackParser';
7
7
  export * from './FileFinder';
8
8
  export * from './FileSystem';
9
9
  export * from './FileSystemLocation';
10
+ export * from './format';
10
11
  export * from './formatted';
11
12
  export * from './json';
12
13
  export * from './ModuleLoader';
package/lib/io/index.js CHANGED
@@ -19,6 +19,7 @@ __exportStar(require("./ErrorStackParser"), exports);
19
19
  __exportStar(require("./FileFinder"), exports);
20
20
  __exportStar(require("./FileSystem"), exports);
21
21
  __exportStar(require("./FileSystemLocation"), exports);
22
+ __exportStar(require("./format"), exports);
22
23
  __exportStar(require("./formatted"), exports);
23
24
  __exportStar(require("./json"), exports);
24
25
  __exportStar(require("./ModuleLoader"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/io/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwC;AACxC,gDAA8B;AAC9B,mDAAiC;AACjC,2CAAyB;AACzB,oDAAkC;AAClC,qDAAmC;AACnC,+CAA6B;AAC7B,+CAA6B;AAC7B,uDAAqC;AACrC,8CAA4B;AAC5B,yCAAuB;AACvB,iDAA+B;AAC/B,iDAA+B;AAC/B,yCAAuB;AACvB,+CAA6B;AAC7B,sDAAoC;AACpC,4CAA0B;AAC1B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/io/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwC;AACxC,gDAA8B;AAC9B,mDAAiC;AACjC,2CAAyB;AACzB,oDAAkC;AAClC,qDAAmC;AACnC,+CAA6B;AAC7B,+CAA6B;AAC7B,uDAAqC;AACrC,2CAAyB;AACzB,8CAA4B;AAC5B,yCAAuB;AACvB,iDAA+B;AAC/B,iDAA+B;AAC/B,yCAAuB;AACvB,+CAA6B;AAC7B,sDAAoC;AACpC,4CAA0B;AAC1B,4CAA0B"}
@@ -1,4 +1,8 @@
1
1
  import { Answerable } from '../screenplay/Answerable';
2
+ interface InspectedConfig {
3
+ inline: boolean;
4
+ markQuestions?: boolean;
5
+ }
2
6
  /**
3
7
  * @desc
4
8
  * Provides a human-readable description of the {@link Answerable<T>}.
@@ -6,6 +10,10 @@ import { Answerable } from '../screenplay/Answerable';
6
10
  *
7
11
  * @public
8
12
  * @param {Answerable<any>} value
13
+ * @param config
14
+ * - inline - Return a single-line string instead of the default potentially multi-line description
15
+ * - markQuestions - Surround the description of async values, such as Promises and Questions with <<value>>
9
16
  * @return {string}
10
17
  */
11
- export declare function inspected(value: Answerable<any>): string;
18
+ export declare function inspected(value: Answerable<any>, config?: InspectedConfig): string;
19
+ export {};
@@ -10,24 +10,24 @@ const Question_1 = require("../screenplay/Question");
10
10
  *
11
11
  * @public
12
12
  * @param {Answerable<any>} value
13
+ * @param config
14
+ * - inline - Return a single-line string instead of the default potentially multi-line description
15
+ * - markQuestions - Surround the description of async values, such as Promises and Questions with <<value>>
13
16
  * @return {string}
14
17
  */
15
- function inspected(value) {
18
+ function inspected(value, config) {
19
+ const { inline, markQuestions } = { inline: false, markQuestions: false, ...config };
16
20
  if (!isDefined(value)) {
17
21
  return (0, util_1.inspect)(value);
18
22
  }
19
23
  if (Array.isArray(value)) {
20
- return [
21
- '[',
22
- value.map(item => ` ${inspected(item)}`).join(',\n'),
23
- ']',
24
- ].join('\n');
24
+ return stringifiedArray(value, inline);
25
25
  }
26
26
  if (isAPromise(value)) {
27
- return `a Promise`;
27
+ return markAs('Promise', true);
28
28
  }
29
29
  if (Question_1.Question.isAQuestion(value)) {
30
- return value.toString();
30
+ return markAs(value.toString(), markQuestions);
31
31
  }
32
32
  if (isADate(value)) {
33
33
  return value.toISOString();
@@ -38,15 +38,41 @@ function inspected(value) {
38
38
  if (isInspectable(value)) {
39
39
  return value.inspect();
40
40
  }
41
- if (isANamedFunction(value)) {
42
- return `${value.name} property`;
41
+ if (isAFunction(value)) {
42
+ return hasName(value)
43
+ ? value.name
44
+ : markAs(`Function`, true);
43
45
  }
44
46
  if (!hasCustomInspectionFunction(value) && isPlainObject(value) && isSerialisableAsJSON(value)) {
45
- return JSON.stringify(value, undefined, 4);
47
+ return stringifiedToJson(value, inline);
46
48
  }
47
- return (0, util_1.inspect)(value, { breakLength: Number.POSITIVE_INFINITY, compact: true, sorted: false });
49
+ return (0, util_1.inspect)(value, { breakLength: Number.POSITIVE_INFINITY, compact: !inline, sorted: false });
48
50
  }
49
51
  exports.inspected = inspected;
52
+ function stringifiedToJson(value, inline) {
53
+ const indentation = inline ? 0 : 4;
54
+ return JSON.stringify(value, undefined, indentation);
55
+ }
56
+ function stringifiedArray(value, inline) {
57
+ const indentation = inline ? '' : ' ';
58
+ const separator = inline ? ' ' : '\n';
59
+ const inspectedItem = (item, index) => [
60
+ indentation,
61
+ inspected(item, { inline, markQuestions: true }),
62
+ index < value.length - 1 ? ',' : ''
63
+ ].join('');
64
+ return [
65
+ '[',
66
+ ...value.map(inspectedItem),
67
+ ']',
68
+ ].join(separator);
69
+ }
70
+ function markAs(value, markValue) {
71
+ const [left, right] = markValue && !value.startsWith('<<')
72
+ ? ['<<', '>>']
73
+ : ['', ''];
74
+ return [left, value, right].join('');
75
+ }
50
76
  /**
51
77
  * @desc
52
78
  * Checks if the value is defined
@@ -107,8 +133,18 @@ function isAPromise(v) {
107
133
  * @private
108
134
  * @param {Answerable<any>} v
109
135
  */
110
- function isANamedFunction(v) {
111
- return Object.prototype.toString.call(v) === '[object Function]' && v.name !== '';
136
+ function isAFunction(v) {
137
+ return Object.prototype.toString.call(v) === '[object Function]';
138
+ }
139
+ /**
140
+ * @desc
141
+ * Checks if the value is has a property called 'name' with a non-empty value.
142
+ *
143
+ * @private
144
+ * @param {Answerable<any>} v
145
+ */
146
+ function hasName(v) {
147
+ return typeof v.name === 'string' && v.name !== '';
112
148
  }
113
149
  /**
114
150
  * @desc
@@ -1 +1 @@
1
- {"version":3,"file":"inspected.js","sourceRoot":"","sources":["../../src/io/inspected.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspected.js","sourceRoot":"","sources":["../../src/io/inspected.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,14 @@ import { Duration } from './Duration';
3
3
  export declare class Timestamp extends TinyType {
4
4
  readonly value: Date;
5
5
  static fromJSON(v: string): Timestamp;
6
- static fromMillisecondTimestamp(v: number): Timestamp;
6
+ static fromTimestampInSeconds(v: number): Timestamp;
7
+ static fromTimestampInMilliseconds(v: number): Timestamp;
7
8
  constructor(value?: Date);
8
9
  diff(another: Timestamp): Duration;
9
10
  plus(duration: Duration): Timestamp;
10
11
  less(duration: Duration): Timestamp;
11
- toMillisecondTimestamp(): number;
12
+ toMilliseconds(): number;
13
+ toSeconds(): number;
12
14
  toJSON(): string;
13
15
  toString(): string;
14
16
  }
@@ -13,7 +13,10 @@ class Timestamp extends tiny_types_1.TinyType {
13
13
  static fromJSON(v) {
14
14
  return new Timestamp(new Date((0, tiny_types_1.ensure)(Timestamp.name, v, isSerialisedISO8601Date())));
15
15
  }
16
- static fromMillisecondTimestamp(v) {
16
+ static fromTimestampInSeconds(v) {
17
+ return Timestamp.fromTimestampInMilliseconds(v * 1000);
18
+ }
19
+ static fromTimestampInMilliseconds(v) {
17
20
  return new Timestamp(moment(v).toDate());
18
21
  }
19
22
  diff(another) {
@@ -25,9 +28,12 @@ class Timestamp extends tiny_types_1.TinyType {
25
28
  less(duration) {
26
29
  return new Timestamp(moment(this.value).subtract(duration.inMilliseconds(), 'ms').toDate());
27
30
  }
28
- toMillisecondTimestamp() {
31
+ toMilliseconds() {
29
32
  return moment(this.value).valueOf();
30
33
  }
34
+ toSeconds() {
35
+ return moment(this.value).unix();
36
+ }
31
37
  toJSON() {
32
38
  return this.value.toJSON();
33
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Timestamp.js","sourceRoot":"","sources":["../../src/model/Timestamp.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,2CAAkF;AAElF,yCAAsC;AAEtC,MAAa,SAAU,SAAQ,qBAAQ;IASnC,YAA4B,QAAc,IAAI,IAAI,EAAE;QAChD,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAmB;QAEhD,IAAA,mBAAM,EAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,yBAAY,EAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAXD,MAAM,CAAC,QAAQ,CAAC,CAAS;QACrB,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,IAAA,mBAAM,EAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,CAAS;QACrC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAOD,IAAI,CAAC,OAAkB;QACnB,OAAO,IAAI,mBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,QAAkB;QACnB,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAC,QAAkB;QACnB,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,sBAAsB;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACJ;AArCD,8BAqCC;AAED,SAAS,uBAAuB;IAC5B,OAAO,sBAAS,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,KAAa,EAAE,EAAE,CACnE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"Timestamp.js","sourceRoot":"","sources":["../../src/model/Timestamp.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,2CAAkF;AAElF,yCAAsC;AAEtC,MAAa,SAAU,SAAQ,qBAAQ;IAanC,YAA4B,QAAc,IAAI,IAAI,EAAE;QAChD,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAmB;QAEhD,IAAA,mBAAM,EAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAA,sBAAS,GAAE,EAAE,IAAA,yBAAY,EAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAfD,MAAM,CAAC,QAAQ,CAAC,CAAS;QACrB,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,IAAA,mBAAM,EAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,CAAS;QACnC,OAAO,SAAS,CAAC,2BAA2B,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,2BAA2B,CAAC,CAAS;QACxC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAOD,IAAI,CAAC,OAAkB;QACnB,OAAO,IAAI,mBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,QAAkB;QACnB,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAC,QAAkB;QACnB,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,cAAc;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,SAAS;QACL,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACJ;AA7CD,8BA6CC;AAED,SAAS,uBAAuB;IAC5B,OAAO,sBAAS,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,KAAa,EAAE,EAAE,CACnE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -1,6 +1,5 @@
1
- import { Mappable } from '../io/collections';
2
1
  import { AnswersQuestions, UsesAbilities } from './actor';
3
- import { AnswerMappingFunction } from './questions/mappings';
2
+ import { Adapter } from './model';
4
3
  /**
5
4
  * @desc
6
5
  * Enables the {@link Actor} to query the system under test.
@@ -51,14 +50,6 @@ import { AnswerMappingFunction } from './questions/mappings';
51
50
  * @abstract
52
51
  */
53
52
  export declare abstract class Question<T> {
54
- protected subject: string;
55
- /**
56
- * @param {string} subject
57
- * The subject of this question
58
- *
59
- * @protected
60
- */
61
- protected constructor(subject: string);
62
53
  /**
63
54
  * @desc
64
55
  * Factory method that simplifies the process of defining custom questions.
@@ -74,7 +65,7 @@ export declare abstract class Question<T> {
74
65
  *
75
66
  * @returns {Question<R>}
76
67
  */
77
- static about<R>(description: string, body: (actor: AnswersQuestions & UsesAbilities) => R): Question<R>;
68
+ static about<R>(description: string, body: (actor: AnswersQuestions & UsesAbilities) => R): Question<R> & Adapter<Awaited<R>>;
78
69
  /**
79
70
  * @desc
80
71
  * Checks if the value is a {@link Question}.
@@ -93,7 +84,7 @@ export declare abstract class Question<T> {
93
84
  *
94
85
  * @returns {string}
95
86
  */
96
- toString(): string;
87
+ abstract toString(): string;
97
88
  /**
98
89
  * @desc
99
90
  * Changes the description of this question's subject.
@@ -101,79 +92,11 @@ export declare abstract class Question<T> {
101
92
  * @param {string} subject
102
93
  * @returns {Question<T>}
103
94
  */
104
- describedAs(subject: string): this;
105
- /**
106
- * @desc
107
- * Creates a new {@link Question}, which value is a result of applying the `mapping`
108
- * function to the value of this {@link Question}.
109
- *
110
- * @example <caption>Mapping a Question<Promise<string>> to Question<Promise<number>></caption>
111
- * import { Question, replace, toNumber } from '@serenity-js/core';
112
- *
113
- * Question.about('the price of some item', actor => '$3.99')
114
- * .map(replace('$', ''))
115
- * .map(toNumber)
116
- *
117
- * // => Question<Promise<number>>
118
- * // 3.99
119
- *
120
- * @example <caption>Mapping all items of Question<string[]> to Question<Promise<number>></caption>
121
- * import { Question, trim } from '@serenity-js/core';
122
- *
123
- * Question.about('things to do', actor => [ ' walk the dog ', ' read a book ' ])
124
- * .map(trim())
125
- *
126
- * // => Question<Promise<string[]>>
127
- * // [ 'walk the dog', 'read a book' ]
128
- *
129
- * @example <caption>Using a custom mapping function</caption>
130
- * import { Question } from '@serenity-js/core';
131
- *
132
- * Question.about('normalised percentages', actor => [ 0.1, 0.3, 0.6 ])
133
- * .map((actor: AnswersQuestions) => (value: number) => value * 100)
134
- *
135
- * // => Question<Promise<number[]>>
136
- * // [ 10, 30, 60 ]
137
- *
138
- * @example <caption>Extracting values from LastResponse.body()</caption>
139
- * import { Question } from '@serenity-js/core';
140
- * import { LastResponse } from '@serenity-js/rest';
141
- *
142
- * interface UserDetails {
143
- * id: number;
144
- * name: string;
145
- * }
146
- *
147
- * LastResponse.body<UserDetails>().map(actor => details => details.id)
148
- *
149
- * // => Question<number>
150
- *
151
- * @param {function(value: A, index?: number): Promise<O> | O} mapping
152
- * A mapping function that receives a value of type `<A>`, which is either:
153
- * - an answer to the original question, if the question is defined as `Question<Promise<A>>` or `Question<A>`
154
- * - or, if the question is defined as `Question<Promise<Mappable<A>>`, `Question<Mappable<A>>` - each item of the {@link Mappable} collection,
155
- *
156
- * @returns {Question<Promise<Mapped>>}
157
- * A new Question which value is a result of applying the `mapping` function
158
- * to the value of the current question, so that:
159
- * - if the answer to the current question is a `Mappable<A>`, the result becomes `Question<Promise<O[]>>`
160
- * - if the answer is a value `<A>` or `Promise<A>`, the result becomes `Question<Promise<O>>`
161
- *
162
- * @see {@link AnswerMappingFunction}
163
- * @see {@link Mappable}
164
- */
165
- map<O>(mapping: AnswerMappingFunction<AnswerOrItemOfMappableCollection<T>, O>): Question<Promise<Mapped<T, O>>>;
95
+ abstract describedAs(subject: string): this;
166
96
  /**
167
97
  * @abstract
98
+ * // todo check why api docs are not getting generated for this methods
168
99
  */
169
100
  abstract answeredBy(actor: AnswersQuestions & UsesAbilities): T;
101
+ as<O>(mapping: (answer: Awaited<T>) => Promise<O> | O): Question<Promise<O>>;
170
102
  }
171
- /**
172
- * @package
173
- */
174
- declare type AnswerOrItemOfMappableCollection<V> = V extends PromiseLike<infer PromisedValue> ? PromisedValue extends Mappable<infer Item> ? Item : PromisedValue : V extends Mappable<infer Item> ? Item : V;
175
- /**
176
- * @package
177
- */
178
- declare type Mapped<T, O> = T extends PromiseLike<infer PromisedValue> ? PromisedValue extends Mappable<infer Item> ? O[] : O : T extends Mappable<infer Item> ? O[] : O;
179
- export {};