@serenity-js/core 3.13.0 → 3.13.2
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 +22 -0
- package/lib/io/Path.d.ts +3 -1
- package/lib/io/Path.d.ts.map +1 -1
- package/lib/io/Path.js +12 -8
- package/lib/io/Path.js.map +1 -1
- package/package.json +9 -9
- package/src/io/Path.ts +16 -11
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
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.13.2](https://github.com/serenity-js/serenity-js/compare/v3.13.1...v3.13.2) (2023-11-14)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **cucumber:** resolve paths to "imports" as absolute file URLs ([fc9aefc](https://github.com/serenity-js/serenity-js/commit/fc9aefcdc2ec8e1dfe3ce38b03a1ff7fd7d3c6c6)), closes [#2060](https://github.com/serenity-js/serenity-js/issues/2060)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [3.13.1](https://github.com/serenity-js/serenity-js/compare/v3.13.0...v3.13.1) (2023-11-07)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **deps:** update dependency tiny-types to ^1.21.0 ([d4921f9](https://github.com/serenity-js/serenity-js/commit/d4921f9cedb502487c176216fbf15dd2ef83dcc4))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
# [3.13.0](https://github.com/serenity-js/serenity-js/compare/v3.12.0...v3.13.0) (2023-10-19)
|
|
7
29
|
|
|
8
30
|
**Note:** Version bump only for package @serenity-js/core
|
package/lib/io/Path.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { TinyType } from 'tiny-types';
|
|
2
3
|
export declare class Path extends TinyType {
|
|
3
4
|
private static readonly Separator;
|
|
4
5
|
readonly value: string;
|
|
5
6
|
static fromJSON(v: string): Path;
|
|
6
|
-
static
|
|
7
|
+
static fromFileURL(fileUrl: URL): Path;
|
|
7
8
|
static from(...segments: string[]): Path;
|
|
8
9
|
static fromSanitisedString(value: string): Path;
|
|
9
10
|
constructor(value: string);
|
|
@@ -15,5 +16,6 @@ export declare class Path extends TinyType {
|
|
|
15
16
|
basename(): string;
|
|
16
17
|
isAbsolute(): boolean;
|
|
17
18
|
root(): Path;
|
|
19
|
+
toFileURL(): URL;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=Path.d.ts.map
|
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,
|
|
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,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAiDtC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAOxC,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;IAIZ,SAAS,IAAI,GAAG;CAKnB"}
|
package/lib/io/Path.js
CHANGED
|
@@ -34,14 +34,13 @@ class Path extends tiny_types_1.TinyType {
|
|
|
34
34
|
static fromJSON(v) {
|
|
35
35
|
return new Path(v);
|
|
36
36
|
}
|
|
37
|
-
static
|
|
37
|
+
static fromFileURL(fileUrl) {
|
|
38
38
|
// inspired by https://github.com/TooTallNate/file-uri-to-path
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
uri.slice(0, 7) !== 'file://') {
|
|
42
|
-
throw new TypeError(`A Path can be created only from URIs that start with 'file://'. Received: ${uri}`);
|
|
39
|
+
if (fileUrl.protocol !== 'file:') {
|
|
40
|
+
throw new TypeError(`A Path can be created only from URLs that start with 'file://'. Received: ${fileUrl}`);
|
|
43
41
|
}
|
|
44
|
-
const
|
|
42
|
+
const url = fileUrl.toString();
|
|
43
|
+
const rest = decodeURI(url.slice(7));
|
|
45
44
|
const firstSlash = rest.indexOf('/');
|
|
46
45
|
let host = rest.slice(0, Math.max(0, firstSlash));
|
|
47
46
|
// 2. Scheme Definition
|
|
@@ -64,8 +63,7 @@ class Path extends tiny_types_1.TinyType {
|
|
|
64
63
|
path = path.replace(/^(.+)\|/, '$1:');
|
|
65
64
|
// for Windows, we need to invert the path separators from what a URI uses
|
|
66
65
|
if (upath_1.sep === '\\') {
|
|
67
|
-
|
|
68
|
-
// path = path.replace(/\//g, '\\');
|
|
66
|
+
path = path.replaceAll('/', '\\');
|
|
69
67
|
}
|
|
70
68
|
if (!(/^.+:/.test(path))) {
|
|
71
69
|
// unix path, because there's no Windows drive at the beginning
|
|
@@ -74,6 +72,9 @@ class Path extends tiny_types_1.TinyType {
|
|
|
74
72
|
return new Path(host + path);
|
|
75
73
|
}
|
|
76
74
|
static from(...segments) {
|
|
75
|
+
if (segments.length === 1 && segments[0].startsWith('file://')) {
|
|
76
|
+
return Path.fromFileURL(new URL(segments[0]));
|
|
77
|
+
}
|
|
77
78
|
return new Path(upath_1.default.joinSafe(...segments));
|
|
78
79
|
}
|
|
79
80
|
static fromSanitisedString(value) {
|
|
@@ -113,6 +114,9 @@ class Path extends tiny_types_1.TinyType {
|
|
|
113
114
|
root() {
|
|
114
115
|
return new Path(upath_1.default.parse(this.value).root);
|
|
115
116
|
}
|
|
117
|
+
toFileURL() {
|
|
118
|
+
return new URL(encodeURI(`file://${this.value}`).replaceAll(/[#?]/g, encodeURIComponent));
|
|
119
|
+
}
|
|
116
120
|
}
|
|
117
121
|
exports.Path = Path;
|
|
118
122
|
Path.Separator = '/';
|
package/lib/io/Path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../src/io/Path.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,2CAAkF;AAClF,+CAAkC;AAElC,MAAa,IAAK,SAAQ,qBAAQ;IAI9B,MAAM,CAAC,QAAQ,CAAC,CAAS;QACrB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../src/io/Path.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/core",
|
|
3
|
-
"version": "3.13.
|
|
3
|
+
"version": "3.13.2",
|
|
4
4
|
"description": "Serenity/JS Screenplay, reporting engine and core interfaces.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -36,22 +36,22 @@
|
|
|
36
36
|
"chalk": "^4.1.2",
|
|
37
37
|
"diff": "^5.1.0",
|
|
38
38
|
"error-stack-parser": "2.1.4",
|
|
39
|
-
"fast-glob": "^3.3.
|
|
39
|
+
"fast-glob": "^3.3.2",
|
|
40
40
|
"filenamify": "^4.3.0",
|
|
41
41
|
"graceful-fs": "^4.2.11",
|
|
42
42
|
"moment": "^2.29.4",
|
|
43
43
|
"semver": "^7.5.4",
|
|
44
|
-
"tiny-types": "^1.
|
|
44
|
+
"tiny-types": "^1.21.0",
|
|
45
45
|
"upath": "^2.0.1",
|
|
46
46
|
"validate-npm-package-name": "^5.0.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@types/chai": "^4.3.
|
|
50
|
-
"@types/diff": "^5.0.
|
|
49
|
+
"@types/chai": "^4.3.10",
|
|
50
|
+
"@types/diff": "^5.0.8",
|
|
51
51
|
"@types/filenamify": "^2.0.2",
|
|
52
|
-
"@types/mocha": "^10.0.
|
|
53
|
-
"@types/semver": "^7.5.
|
|
54
|
-
"@types/validate-npm-package-name": "^4.0.
|
|
52
|
+
"@types/mocha": "^10.0.4",
|
|
53
|
+
"@types/semver": "^7.5.5",
|
|
54
|
+
"@types/validate-npm-package-name": "^4.0.2",
|
|
55
55
|
"assertion-error-formatter": "^3.0.0",
|
|
56
56
|
"c8": "8.0.1",
|
|
57
57
|
"memfs": "^4.6.0",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"engines": {
|
|
72
72
|
"node": "^16.13 || ^18.12 || ^20"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "ed08db56c2c947c2c2ac4d9d4e95f9f68e90d2a4"
|
|
75
75
|
}
|
package/src/io/Path.ts
CHANGED
|
@@ -10,19 +10,16 @@ export class Path extends TinyType {
|
|
|
10
10
|
return new Path(v);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
static
|
|
13
|
+
static fromFileURL(fileUrl: URL): Path {
|
|
14
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
|
-
) {
|
|
15
|
+
if (fileUrl.protocol !== 'file:') {
|
|
20
16
|
throw new TypeError(
|
|
21
|
-
`A Path can be created only from
|
|
17
|
+
`A Path can be created only from URLs that start with 'file://'. Received: ${ fileUrl }`
|
|
22
18
|
);
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
const
|
|
21
|
+
const url = fileUrl.toString();
|
|
22
|
+
const rest = decodeURI(url.slice(7));
|
|
26
23
|
const firstSlash = rest.indexOf('/');
|
|
27
24
|
|
|
28
25
|
let host = rest.slice(0, Math.max(0, firstSlash));
|
|
@@ -51,8 +48,7 @@ export class Path extends TinyType {
|
|
|
51
48
|
|
|
52
49
|
// for Windows, we need to invert the path separators from what a URI uses
|
|
53
50
|
if (sep === '\\') {
|
|
54
|
-
|
|
55
|
-
// path = path.replace(/\//g, '\\');
|
|
51
|
+
path = path.replaceAll('/', '\\');
|
|
56
52
|
}
|
|
57
53
|
|
|
58
54
|
if (! (/^.+:/.test(path))) {
|
|
@@ -64,6 +60,9 @@ export class Path extends TinyType {
|
|
|
64
60
|
}
|
|
65
61
|
|
|
66
62
|
static from(...segments: string[]): Path {
|
|
63
|
+
if (segments.length === 1 && segments[0].startsWith('file://')) {
|
|
64
|
+
return Path.fromFileURL(new URL(segments[0]));
|
|
65
|
+
}
|
|
67
66
|
return new Path(path.joinSafe(...segments));
|
|
68
67
|
}
|
|
69
68
|
|
|
@@ -122,4 +121,10 @@ export class Path extends TinyType {
|
|
|
122
121
|
root(): Path {
|
|
123
122
|
return new Path(path.parse(this.value).root);
|
|
124
123
|
}
|
|
125
|
-
|
|
124
|
+
|
|
125
|
+
toFileURL(): URL {
|
|
126
|
+
return new URL(
|
|
127
|
+
encodeURI(`file://${this.value}`).replaceAll(/[#?]/g, encodeURIComponent)
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|