@serenity-js/core 3.1.6 → 3.2.1
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 +25 -0
- package/README.md +29 -4
- package/lib/io/Path.d.ts +1 -0
- package/lib/io/Path.d.ts.map +1 -1
- package/lib/io/Path.js +63 -1
- package/lib/io/Path.js.map +1 -1
- package/lib/screenplay/debugging/Debug.d.ts.map +1 -1
- package/lib/screenplay/debugging/Debug.js +0 -1
- package/lib/screenplay/debugging/Debug.js.map +1 -1
- package/package.json +11 -11
- package/src/io/Path.ts +54 -1
- package/src/screenplay/debugging/Debug.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
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.2.1](https://github.com/serenity-js/serenity-js/compare/v3.2.0...v3.2.1) (2023-05-15)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @serenity-js/core
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [3.2.0](https://github.com/serenity-js/serenity-js/compare/v3.1.6...v3.2.0) (2023-05-05)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **core:** use "types" instead of "typings" in package.json files ([b83d922](https://github.com/serenity-js/serenity-js/commit/b83d922076242c6cd5d6f2da055a05aa5e77f11b)), closes [#1682](https://github.com/serenity-js/serenity-js/issues/1682)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* **core:** introduced support for Node.js 20, dropped support for Node.js 14 ([491fef8](https://github.com/serenity-js/serenity-js/commit/491fef8df672a2b40d247887b3da409dccbd26fd)), closes [#1678](https://github.com/serenity-js/serenity-js/issues/1678)
|
|
25
|
+
* **core:** new factory method to create Path.fromURI ([baed8c4](https://github.com/serenity-js/serenity-js/commit/baed8c4a86a2d7b114783574c2326d8102c1b0e9))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
6
31
|
## [3.1.6](https://github.com/serenity-js/serenity-js/compare/v3.1.5...v3.1.6) (2023-04-18)
|
|
7
32
|
|
|
8
33
|
|
package/README.md
CHANGED
|
@@ -5,16 +5,23 @@
|
|
|
5
5
|
[](https://matrix.to/#/#serenity-js:gitter.im)
|
|
6
6
|
[](https://github.com/sponsors/serenity-js)
|
|
7
7
|
|
|
8
|
-
[Serenity/JS](https://serenity-js.org) is an innovative framework designed to make acceptance and regression testing
|
|
8
|
+
[Serenity/JS](https://serenity-js.org) is an innovative open-source framework designed to make acceptance and regression testing
|
|
9
9
|
of complex software systems faster, more collaborative and easier to scale.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
⭐️ Get started with Serenity/JS!
|
|
12
|
+
- [Serenity/JS Handbook](https://serenity-js.org/handbook) and [tutorial](https://serenity-js.org/handbook/web-testing/your-first-web-scenario),
|
|
13
|
+
- [API documentation](https://serenity-js.org/api/core),
|
|
14
|
+
- [Serenity/JS project templates on GitHub](https://serenity-js.org/handbook/getting-started#serenityjs-project-templates).
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
👋 Join the Serenity/JS Community!
|
|
17
|
+
- Meet other Serenity/JS developers and maintainers on the [Serenity/JS Community chat channel](https://matrix.to/#/#serenity-js:gitter.im),
|
|
18
|
+
- Find answers to your Serenity/JS questions on the [Serenity/JS Forum](https://github.com/orgs/serenity-js/discussions/categories/how-do-i),
|
|
19
|
+
- Learn how to [contribute to Serenity/JS](https://serenity-js.org/contributing),
|
|
20
|
+
- Support the project and gain access to [Serenity/JS Playbooks](https://github.com/serenity-js/playbooks) by becoming a [Serenity/JS GitHub Sponsor](https://github.com/sponsors/serenity-js)!
|
|
14
21
|
|
|
15
22
|
## Serenity/JS Core
|
|
16
23
|
|
|
17
|
-
[`@serenity-js/core`](https://serenity-js.org/
|
|
24
|
+
[`@serenity-js/core`](https://serenity-js.org/api/core/) is the heart of the [Serenity/JS](https://serenity-js.org) framework.
|
|
18
25
|
It enables you to configure the framework, manage actors, and provides basic building blocks
|
|
19
26
|
to help you design high-quality acceptance tests.
|
|
20
27
|
|
|
@@ -25,3 +32,21 @@ To install this module, run the following command in your computer terminal:
|
|
|
25
32
|
```
|
|
26
33
|
npm install --save-dev @serenity-js/core
|
|
27
34
|
```
|
|
35
|
+
|
|
36
|
+
## 📣 Stay up to date
|
|
37
|
+
|
|
38
|
+
New features, tutorials, and demos are coming soon!
|
|
39
|
+
Follow [Serenity/JS on LinkedIn](https://www.linkedin.com/company/serenity-js),
|
|
40
|
+
subscribe to [Serenity/JS channel on YouTube](https://www.youtube.com/@serenity-js) and join the [Serenity/JS Community Chat](https://matrix.to/#/#serenity-js:gitter.im) to stay up to date!
|
|
41
|
+
Please also make sure to star ⭐️ [Serenity/JS on GitHub](https://github.com/serenity-js/serenity-js) to help others discover the framework!
|
|
42
|
+
|
|
43
|
+
[](https://www.linkedin.com/company/serenity-js)
|
|
44
|
+
[](https://www.youtube.com/@serenity-js)
|
|
45
|
+
[](https://matrix.to/#/#serenity-js:gitter.im)
|
|
46
|
+
[](https://github.com/serenity-js/serenity-js)
|
|
47
|
+
|
|
48
|
+
## 💛 Support Serenity/JS
|
|
49
|
+
|
|
50
|
+
If you appreciate all the effort that goes into making sophisticated tools easy to work with, please support our work and become a Serenity/JS GitHub Sponsor today!
|
|
51
|
+
|
|
52
|
+
[](https://github.com/sponsors/serenity-js)
|
package/lib/io/Path.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export declare class Path extends TinyType {
|
|
|
3
3
|
private static readonly Separator;
|
|
4
4
|
readonly value: string;
|
|
5
5
|
static fromJSON(v: string): Path;
|
|
6
|
+
static fromURI(uri: string): Path;
|
|
6
7
|
static from(...segments: string[]): Path;
|
|
7
8
|
static fromSanitisedString(value: string): Path;
|
|
8
9
|
constructor(value: string);
|
package/lib/io/Path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../src/io/Path.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGlF,qBAAa,IAAK,SAAQ,QAAQ;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAO;IACxC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIxC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;gBAenC,KAAK,EAAE,MAAM;IAOzB,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAIzB,KAAK,IAAI,MAAM,EAAE;IAMjB,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAI5B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAI7B,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,MAAM;IAIlB,UAAU,IAAI,OAAO;IAIrB,IAAI,IAAI,IAAI;CAGf"}
|
|
1
|
+
{"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../src/io/Path.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGlF,qBAAa,IAAK,SAAQ,QAAQ;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAO;IACxC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqDjC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIxC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;gBAenC,KAAK,EAAE,MAAM;IAOzB,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAIzB,KAAK,IAAI,MAAM,EAAE;IAMjB,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAI5B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAI7B,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,MAAM;IAIlB,UAAU,IAAI,OAAO;IAIrB,IAAI,IAAI,IAAI;CAGf"}
|
package/lib/io/Path.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
@@ -6,11 +29,50 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
29
|
exports.Path = void 0;
|
|
7
30
|
const filenamify_1 = __importDefault(require("filenamify"));
|
|
8
31
|
const tiny_types_1 = require("tiny-types");
|
|
9
|
-
const upath_1 =
|
|
32
|
+
const upath_1 = __importStar(require("upath"));
|
|
10
33
|
class Path extends tiny_types_1.TinyType {
|
|
11
34
|
static fromJSON(v) {
|
|
12
35
|
return new Path(v);
|
|
13
36
|
}
|
|
37
|
+
static fromURI(uri) {
|
|
38
|
+
// inspired by https://github.com/TooTallNate/file-uri-to-path
|
|
39
|
+
if (typeof uri !== 'string' ||
|
|
40
|
+
uri.length <= 7 ||
|
|
41
|
+
uri.slice(0, 7) !== 'file://') {
|
|
42
|
+
throw new TypeError(`A Path can be created only from URIs that start with 'file://'. Received: ${uri}`);
|
|
43
|
+
}
|
|
44
|
+
const rest = decodeURI(uri.slice(7));
|
|
45
|
+
const firstSlash = rest.indexOf('/');
|
|
46
|
+
let host = rest.slice(0, Math.max(0, firstSlash));
|
|
47
|
+
// 2. Scheme Definition
|
|
48
|
+
// As a special case, <host> can be the string "localhost" or the empty
|
|
49
|
+
// string; this is interpreted as "the machine from which the URL is being interpreted".
|
|
50
|
+
if (host === 'localhost') {
|
|
51
|
+
host = '';
|
|
52
|
+
}
|
|
53
|
+
if (host) {
|
|
54
|
+
host = upath_1.sep + upath_1.sep + host;
|
|
55
|
+
}
|
|
56
|
+
let path = rest.slice(Math.max(0, firstSlash + 1));
|
|
57
|
+
// Drives, drive letters, mount points, file system root
|
|
58
|
+
//
|
|
59
|
+
// Drive letters are mapped into the top of a file URI in various ways, depending on the implementation;
|
|
60
|
+
// some applications substitute vertical bar ("|") for the colon after the drive letter,
|
|
61
|
+
// yielding "file:///c|/tmp/test.txt".
|
|
62
|
+
// In some cases, the colon is left unchanged, as in "file:///c:/tmp/test.txt".
|
|
63
|
+
// In other cases, the colon is simply omitted, as in "file:///c/tmp/test.txt".
|
|
64
|
+
path = path.replace(/^(.+)\|/, '$1:');
|
|
65
|
+
// for Windows, we need to invert the path separators from what a URI uses
|
|
66
|
+
if (upath_1.sep === '\\') {
|
|
67
|
+
throw new Error('that used?');
|
|
68
|
+
// path = path.replace(/\//g, '\\');
|
|
69
|
+
}
|
|
70
|
+
if (!(/^.+:/.test(path))) {
|
|
71
|
+
// unix path, because there's no Windows drive at the beginning
|
|
72
|
+
path = upath_1.sep + path;
|
|
73
|
+
}
|
|
74
|
+
return new Path(host + path);
|
|
75
|
+
}
|
|
14
76
|
static from(...segments) {
|
|
15
77
|
return new Path(upath_1.default.joinSafe(...segments));
|
|
16
78
|
}
|
package/lib/io/Path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../src/io/Path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../src/io/Path.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Debug.d.ts","sourceRoot":"","sources":["../../../src/screenplay/debugging/Debug.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,qBAAa,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"Debug.d.ts","sourceRoot":"","sources":["../../../src/screenplay/debugging/Debug.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,qBAAa,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,SAAQ,WAAW;IAmCzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAIjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IArC3B;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,gBAAgB,EAAE,CACvE,OAAO,EAAE;SAAI,KAAK,IAAI,MAAM,MAAM,GAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE,EACtE,GAAG,OAAO,EAAE;SAAI,KAAK,IAAI,MAAM,MAAM,GAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE,KACjE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,WAAW;IAQ1D;;;;;;;;;OASG;IACH,SAAS,aACL,WAAW,EAAE,MAAM,EACF,gBAAgB,EAAE,CAC/B,gBAAgB,EAAE;SAAI,KAAK,IAAI,MAAM,MAAM,GAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE,EAC/E,GAAG,IAAI,EAAE;SAAI,KAAK,IAAI,MAAM,MAAM,GAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE,KAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACR,MAAM,EAAE,MAAM;IAKnC;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAuC9F"}
|
|
@@ -79,7 +79,6 @@ class Debug extends Interaction_1.Interaction {
|
|
|
79
79
|
* @param values
|
|
80
80
|
*/
|
|
81
81
|
static values(debuggerFunction, ...values) {
|
|
82
|
-
/* istanbul ignore next can't test using a debugger in an automated test */
|
|
83
82
|
return new Debug(`#actor debugs ${values.length} values`, debuggerFunction, values);
|
|
84
83
|
}
|
|
85
84
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Debug.js","sourceRoot":"","sources":["../../../src/screenplay/debugging/Debug.ts"],"names":[],"mappings":";;;AAAA,yCAA+C;AAC/C,iCAA6B;AAC7B,sDAAmD;AACnD,uCAA6C;AAK7C,gDAA6C;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAa,KAAiD,SAAQ,yBAAW;IAE7E;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,CAA4C,gBAGhC,EAAE,GAAG,MAAc;QACxC,
|
|
1
|
+
{"version":3,"file":"Debug.js","sourceRoot":"","sources":["../../../src/screenplay/debugging/Debug.ts"],"names":[],"mappings":";;;AAAA,yCAA+C;AAC/C,iCAA6B;AAC7B,sDAAmD;AACnD,uCAA6C;AAK7C,gDAA6C;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAa,KAAiD,SAAQ,yBAAW;IAE7E;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,CAA4C,gBAGhC,EAAE,GAAG,MAAc;QACxC,OAAO,IAAI,KAAK,CACZ,iBAAkB,MAAM,CAAC,MAAO,SAAS,EACzC,gBAAgB,EAChB,MAAM,CACT,CAAC;IACN,CAAC;IAED;;;;;;;;;OASG;IACH,YACI,WAAmB,EACF,gBAGQ,EACR,MAAc;QAE/B,KAAK,CAAC,WAAW,CAAC,CAAC;QANF,qBAAgB,GAAhB,gBAAgB,CAGR;QACR,WAAM,GAAN,MAAM,CAAQ;IAGnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAA2D;QAEvE,MAAM,OAAO,GAAG,EAAmE,CAAC;QAEpF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAE7B,MAAM,MAAM,GAA6B;gBACrC,WAAW,EAAE,IAAA,MAAC,EAAA,GAAI,KAAM,EAAE;gBAC1B,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,SAAS;aACnB,CAAC;YAEF,IAAI;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC5C;YACD,OAAO,KAAK,EAAE;gBACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;aACxB;YAED,KAAK,CAAC,OAAO,CACT,gBAAQ,CAAC,QAAQ,CAAC;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,KAAK,EAAE,IAAA,yBAAW,EAAC,MAAM,CAAC,KAAK,CAAC;oBAChC,KAAK,EAAE,MAAM,CAAC,KAAK;wBACf,CAAC,CAAC,wBAAe,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;wBACzC,CAAC,CAAC,MAAM,CAAC,KAAK;iBACrB,CAAC;aACL,CAAC,EACF,IAAI,YAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAC/B,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxB;QAED,IAAI,CAAC,gBAAgB,CACjB,OAAO,EACP,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAA2D,CACnG,CAAC;IACN,CAAC;CACJ;AAtFD,sBAsFC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/core",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "Serenity/JS Screenplay, reporting engine and core interfaces.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
18
|
"main": "lib/index.js",
|
|
19
|
-
"
|
|
19
|
+
"types": "lib/index.d.ts",
|
|
20
20
|
"keywords": [
|
|
21
21
|
"bdd",
|
|
22
22
|
"tdd",
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
],
|
|
28
28
|
"scripts": {
|
|
29
29
|
"clean": "rimraf target",
|
|
30
|
-
"test": "
|
|
30
|
+
"test": "c8 npm run test:no-coverage",
|
|
31
|
+
"test:no-coverage": "mocha --config ../../.mocharc.yml 'spec/**/*.spec.*'",
|
|
31
32
|
"compile": "rimraf lib && tsc --project tsconfig.build.json"
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|
|
@@ -39,23 +40,23 @@
|
|
|
39
40
|
"filenamify": "^4.3.0",
|
|
40
41
|
"graceful-fs": "^4.2.11",
|
|
41
42
|
"moment": "^2.29.4",
|
|
42
|
-
"semver": "^7.
|
|
43
|
+
"semver": "^7.5.1",
|
|
43
44
|
"tiny-types": "^1.19.1",
|
|
44
45
|
"upath": "^2.0.1",
|
|
45
46
|
"validate-npm-package-name": "^5.0.0"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
|
-
"@types/chai": "^4.3.
|
|
49
|
+
"@types/chai": "^4.3.5",
|
|
49
50
|
"@types/diff": "^5.0.3",
|
|
50
51
|
"@types/filenamify": "^2.0.2",
|
|
51
52
|
"@types/mocha": "^10.0.1",
|
|
52
|
-
"@types/semver": "^7.
|
|
53
|
+
"@types/semver": "^7.5.0",
|
|
53
54
|
"@types/validate-npm-package-name": "^4.0.0",
|
|
54
55
|
"assertion-error-formatter": "^3.0.0",
|
|
55
|
-
"
|
|
56
|
+
"c8": "7.13.0",
|
|
57
|
+
"memfs": "^3.5.1",
|
|
56
58
|
"mocha": "^10.2.0",
|
|
57
59
|
"mocha-multi": "^1.1.7",
|
|
58
|
-
"nyc": "15.1.0",
|
|
59
60
|
"ts-node": "^10.9.1",
|
|
60
61
|
"typescript": "^5.0.4"
|
|
61
62
|
},
|
|
@@ -68,8 +69,7 @@
|
|
|
68
69
|
"url": "https://github.com/serenity-js/serenity-js/issues"
|
|
69
70
|
},
|
|
70
71
|
"engines": {
|
|
71
|
-
"node": "^
|
|
72
|
-
"npm": "^6 || ^7 || ^8 || ^9"
|
|
72
|
+
"node": "^16.13 || ^18.12 || ^20"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "9a5a77e6e966c827c0331699bef34326905c16b6"
|
|
75
75
|
}
|
package/src/io/Path.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import filenamify from 'filenamify';
|
|
2
2
|
import { ensure, isDefined, isGreaterThan, property, TinyType } from 'tiny-types';
|
|
3
|
-
import path from 'upath';
|
|
3
|
+
import path, { sep } from 'upath';
|
|
4
4
|
|
|
5
5
|
export class Path extends TinyType {
|
|
6
6
|
private static readonly Separator = '/';
|
|
@@ -10,6 +10,59 @@ export class Path extends TinyType {
|
|
|
10
10
|
return new Path(v);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
static fromURI(uri: string): Path {
|
|
14
|
+
// inspired by https://github.com/TooTallNate/file-uri-to-path
|
|
15
|
+
if (
|
|
16
|
+
typeof uri !== 'string' ||
|
|
17
|
+
uri.length <= 7 ||
|
|
18
|
+
uri.slice(0, 7) !== 'file://'
|
|
19
|
+
) {
|
|
20
|
+
throw new TypeError(
|
|
21
|
+
`A Path can be created only from URIs that start with 'file://'. Received: ${ uri }`
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const rest = decodeURI(uri.slice(7));
|
|
26
|
+
const firstSlash = rest.indexOf('/');
|
|
27
|
+
|
|
28
|
+
let host = rest.slice(0, Math.max(0, firstSlash));
|
|
29
|
+
|
|
30
|
+
// 2. Scheme Definition
|
|
31
|
+
// As a special case, <host> can be the string "localhost" or the empty
|
|
32
|
+
// string; this is interpreted as "the machine from which the URL is being interpreted".
|
|
33
|
+
if (host === 'localhost') {
|
|
34
|
+
host = '';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (host) {
|
|
38
|
+
host = sep + sep + host;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let path = rest.slice(Math.max(0, firstSlash + 1));
|
|
42
|
+
|
|
43
|
+
// Drives, drive letters, mount points, file system root
|
|
44
|
+
//
|
|
45
|
+
// Drive letters are mapped into the top of a file URI in various ways, depending on the implementation;
|
|
46
|
+
// some applications substitute vertical bar ("|") for the colon after the drive letter,
|
|
47
|
+
// yielding "file:///c|/tmp/test.txt".
|
|
48
|
+
// In some cases, the colon is left unchanged, as in "file:///c:/tmp/test.txt".
|
|
49
|
+
// In other cases, the colon is simply omitted, as in "file:///c/tmp/test.txt".
|
|
50
|
+
path = path.replace(/^(.+)\|/, '$1:');
|
|
51
|
+
|
|
52
|
+
// for Windows, we need to invert the path separators from what a URI uses
|
|
53
|
+
if (sep === '\\') {
|
|
54
|
+
throw new Error('that used?')
|
|
55
|
+
// path = path.replace(/\//g, '\\');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (! (/^.+:/.test(path))) {
|
|
59
|
+
// unix path, because there's no Windows drive at the beginning
|
|
60
|
+
path = sep + path;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return new Path(host + path);
|
|
64
|
+
}
|
|
65
|
+
|
|
13
66
|
static from(...segments: string[]): Path {
|
|
14
67
|
return new Path(path.joinSafe(...segments));
|
|
15
68
|
}
|
|
@@ -87,7 +87,6 @@ export class Debug<Values extends Array<Answerable<unknown>>> extends Interactio
|
|
|
87
87
|
results: { [ Index in keyof Values ]: DebuggingResult<Values[Index]> },
|
|
88
88
|
...answers: { [ Index in keyof Values ]: Answered<Values[Index]> }
|
|
89
89
|
) => Promise<void> | void, ...values: Values): Interaction {
|
|
90
|
-
/* istanbul ignore next can't test using a debugger in an automated test */
|
|
91
90
|
return new Debug<Values>(
|
|
92
91
|
`#actor debugs ${ values.length } values`,
|
|
93
92
|
debuggerFunction,
|