apify-test-tools 0.10.1-beta.3 → 0.10.1-beta.4
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/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +7 -2
- package/CHANGELOG.md +6 -0
- package/CONTRIBUTING.md +9 -0
- package/bin/build-from-local.ts +8 -7
- package/bin/build.ts +22 -21
- package/bin/diff-changes.ts +11 -10
- package/bin/diff-json-schema.ts +14 -12
- package/bin/git.ts +90 -43
- package/bin/logger.ts +23 -0
- package/bin/main.ts +49 -35
- package/bin/output.ts +6 -0
- package/bin/slack.ts +8 -7
- package/bin/test-report.ts +22 -21
- package/bin/utils/config/actor-json.ts +84 -0
- package/bin/utils/config/load-config.ts +46 -46
- package/bin/utils/config/parser.ts +33 -28
- package/bin/utils/config/structures/base.ts +7 -0
- package/bin/utils/json-file.ts +11 -14
- package/bin/utils/path/repo-relative.ts +156 -0
- package/bin/utils/path/schema.ts +18 -0
- package/bin/utils.ts +61 -34
- package/dist/bin/build-from-local.d.ts +1 -1
- package/dist/bin/build-from-local.d.ts.map +1 -1
- package/dist/bin/build-from-local.js +8 -7
- package/dist/bin/build-from-local.js.map +1 -1
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +22 -21
- package/dist/bin/build.js.map +1 -1
- package/dist/bin/diff-changes.d.ts +1 -1
- package/dist/bin/diff-changes.d.ts.map +1 -1
- package/dist/bin/diff-changes.js +9 -8
- package/dist/bin/diff-changes.js.map +1 -1
- package/dist/bin/diff-json-schema.d.ts +1 -1
- package/dist/bin/diff-json-schema.d.ts.map +1 -1
- package/dist/bin/diff-json-schema.js +13 -12
- package/dist/bin/diff-json-schema.js.map +1 -1
- package/dist/bin/git.d.ts +10 -10
- package/dist/bin/git.d.ts.map +1 -1
- package/dist/bin/git.js +78 -37
- package/dist/bin/git.js.map +1 -1
- package/dist/bin/logger.d.ts +11 -0
- package/dist/bin/logger.d.ts.map +1 -0
- package/dist/bin/logger.js +20 -0
- package/dist/bin/logger.js.map +1 -0
- package/dist/bin/main.d.ts +1 -1
- package/dist/bin/main.js +48 -35
- package/dist/bin/main.js.map +1 -1
- package/dist/bin/output.d.ts +3 -0
- package/dist/bin/output.d.ts.map +1 -0
- package/dist/bin/output.js +6 -0
- package/dist/bin/output.js.map +1 -0
- package/dist/bin/slack.d.ts.map +1 -1
- package/dist/bin/slack.js +8 -7
- package/dist/bin/slack.js.map +1 -1
- package/dist/bin/test-report.d.ts.map +1 -1
- package/dist/bin/test-report.js +22 -21
- package/dist/bin/test-report.js.map +1 -1
- package/dist/bin/utils/config/actor-json.d.ts +14 -0
- package/dist/bin/utils/config/actor-json.d.ts.map +1 -0
- package/dist/bin/utils/config/actor-json.js +60 -0
- package/dist/bin/utils/config/actor-json.js.map +1 -0
- package/dist/bin/utils/config/load-config.d.ts +12 -2
- package/dist/bin/utils/config/load-config.d.ts.map +1 -1
- package/dist/bin/utils/config/load-config.js +32 -31
- package/dist/bin/utils/config/load-config.js.map +1 -1
- package/dist/bin/utils/config/parser.d.ts +4 -12
- package/dist/bin/utils/config/parser.d.ts.map +1 -1
- package/dist/bin/utils/config/parser.js +24 -23
- package/dist/bin/utils/config/parser.js.map +1 -1
- package/dist/bin/utils/config/structures/base.d.ts +5 -0
- package/dist/bin/utils/config/structures/base.d.ts.map +1 -1
- package/dist/bin/utils/config/structures/base.js.map +1 -1
- package/dist/bin/utils/json-file.d.ts +3 -2
- package/dist/bin/utils/json-file.d.ts.map +1 -1
- package/dist/bin/utils/json-file.js +8 -13
- package/dist/bin/utils/json-file.js.map +1 -1
- package/dist/bin/utils/path/repo-relative.d.ts +35 -0
- package/dist/bin/utils/path/repo-relative.d.ts.map +1 -0
- package/dist/bin/utils/path/repo-relative.js +137 -0
- package/dist/bin/utils/path/repo-relative.js.map +1 -0
- package/dist/bin/utils/path/schema.d.ts +7 -0
- package/dist/bin/utils/path/schema.d.ts.map +1 -0
- package/dist/bin/utils/path/schema.js +16 -0
- package/dist/bin/utils/path/schema.js.map +1 -0
- package/dist/bin/utils.d.ts +14 -3
- package/dist/bin/utils.d.ts.map +1 -1
- package/dist/bin/utils.js +52 -29
- package/dist/bin/utils.js.map +1 -1
- package/dist/test/unit/bin/build-from-local.test.js +3 -39
- package/dist/test/unit/bin/build-from-local.test.js.map +1 -1
- package/dist/test/unit/bin/diff-changes.test.js +97 -96
- package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
- package/dist/test/unit/bin/diff.test.js +52 -48
- package/dist/test/unit/bin/diff.test.js.map +1 -1
- package/dist/test/unit/bin/git-command.test.d.ts +2 -0
- package/dist/test/unit/bin/git-command.test.d.ts.map +1 -0
- package/dist/test/unit/bin/git-command.test.js +54 -0
- package/dist/test/unit/bin/git-command.test.js.map +1 -0
- package/dist/test/unit/bin/git.test.js +211 -92
- package/dist/test/unit/bin/git.test.js.map +1 -1
- package/dist/test/unit/bin/logger.test.d.ts +2 -0
- package/dist/test/unit/bin/logger.test.d.ts.map +1 -0
- package/dist/test/unit/bin/logger.test.js +44 -0
- package/dist/test/unit/bin/logger.test.js.map +1 -0
- package/dist/test/unit/bin/logging.test.d.ts +2 -0
- package/dist/test/unit/bin/logging.test.d.ts.map +1 -0
- package/dist/test/unit/bin/logging.test.js +43 -0
- package/dist/test/unit/bin/logging.test.js.map +1 -0
- package/dist/test/unit/bin/utils/config/load-config.test.js +47 -25
- package/dist/test/unit/bin/utils/config/load-config.test.js.map +1 -1
- package/dist/test/unit/bin/utils/config/parser.test.js +64 -19
- package/dist/test/unit/bin/utils/config/parser.test.js.map +1 -1
- package/dist/test/unit/bin/utils/files.test.js +16 -27
- package/dist/test/unit/bin/utils/files.test.js.map +1 -1
- package/dist/test/unit/bin/utils/path/repo-relative.test.d.ts +2 -0
- package/dist/test/unit/bin/utils/path/repo-relative.test.d.ts.map +1 -0
- package/dist/test/unit/bin/utils/path/repo-relative.test.js +196 -0
- package/dist/test/unit/bin/utils/path/repo-relative.test.js.map +1 -0
- package/dist/test/unit/bin/utils/path/schema.test.d.ts +2 -0
- package/dist/test/unit/bin/utils/path/schema.test.d.ts.map +1 -0
- package/dist/test/unit/bin/utils/path/schema.test.js +52 -0
- package/dist/test/unit/bin/utils/path/schema.test.js.map +1 -0
- package/dist/test/unit/should-built-and-test.test.js +40 -38
- package/dist/test/unit/should-built-and-test.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.mjs +9 -1
- package/package.json +4 -4
- package/test/unit/bin/build-from-local.test.ts +3 -53
- package/test/unit/bin/diff-changes.test.ts +97 -96
- package/test/unit/bin/diff.test.ts +53 -48
- package/test/unit/bin/git-command.test.ts +71 -0
- package/test/unit/bin/git.test.ts +246 -89
- package/test/unit/bin/logger.test.ts +55 -0
- package/test/unit/bin/logging.test.ts +52 -0
- package/test/unit/bin/utils/config/load-config.test.ts +63 -26
- package/test/unit/bin/utils/config/parser.test.ts +81 -27
- package/test/unit/bin/utils/files.test.ts +19 -33
- package/test/unit/bin/utils/path/repo-relative.test.ts +250 -0
- package/test/unit/bin/utils/path/schema.test.ts +65 -0
- package/test/unit/should-built-and-test.test.ts +40 -38
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
2
|
const failed = (reason, message) => ({
|
|
3
3
|
success: false,
|
|
4
4
|
reason,
|
|
@@ -8,34 +8,29 @@ const failed = (reason, message) => ({
|
|
|
8
8
|
* Reads a file and parses it as a JSON object, reporting every way that can go wrong as a value
|
|
9
9
|
* instead of a thrown error — the caller decides which failures are fatal and how to word them.
|
|
10
10
|
*/
|
|
11
|
-
export function safeReadJsonObjectFile(
|
|
11
|
+
export function safeReadJsonObjectFile(filePath) {
|
|
12
12
|
let file;
|
|
13
13
|
try {
|
|
14
|
-
|
|
15
|
-
const stats = statSync(path);
|
|
16
|
-
if (!stats.isFile()) {
|
|
17
|
-
return failed('not-a-file', `Expected ${path} to be a file`);
|
|
18
|
-
}
|
|
19
|
-
file = readFileSync(path, 'utf8');
|
|
14
|
+
file = readFileSync(filePath.path, 'utf8');
|
|
20
15
|
}
|
|
21
16
|
catch {
|
|
22
|
-
return failed('unreadable', `Expected ${
|
|
17
|
+
return failed('unreadable', `Expected ${filePath} to exist or be readable`);
|
|
23
18
|
}
|
|
24
19
|
let parsed;
|
|
25
20
|
try {
|
|
26
21
|
parsed = JSON.parse(file);
|
|
27
22
|
}
|
|
28
23
|
catch (err) {
|
|
29
|
-
return failed('invalid-json', `Failed to parse ${
|
|
24
|
+
return failed('invalid-json', `Failed to parse ${filePath}: ${err}`);
|
|
30
25
|
}
|
|
31
26
|
if (parsed === null) {
|
|
32
|
-
return failed('not-an-object', `Expected ${
|
|
27
|
+
return failed('not-an-object', `Expected ${filePath} to be a JSON object, not null`);
|
|
33
28
|
}
|
|
34
29
|
if (Array.isArray(parsed)) {
|
|
35
|
-
return failed('not-an-object', `Expected ${
|
|
30
|
+
return failed('not-an-object', `Expected ${filePath} to be a JSON object, not an array`);
|
|
36
31
|
}
|
|
37
32
|
if (typeof parsed !== 'object') {
|
|
38
|
-
return failed('not-an-object', `Expected ${
|
|
33
|
+
return failed('not-an-object', `Expected ${filePath} to be a JSON object`);
|
|
39
34
|
}
|
|
40
35
|
return { success: true, contents: parsed };
|
|
41
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../bin/utils/json-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../bin/utils/json-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAevC,MAAM,MAAM,GAAG,CAAC,MAAmC,EAAE,OAAe,EAAwB,EAAE,CAAC,CAAC;IAC5F,OAAO,EAAE,KAAK;IACd,MAAM;IACN,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;CAC9B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAsB;IACzD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACD,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,MAAM,CAAC,YAAY,EAAE,YAAY,QAAQ,0BAA0B,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,cAAc,EAAE,mBAAmB,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,eAAe,EAAE,YAAY,QAAQ,gCAAgC,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,eAAe,EAAE,YAAY,QAAQ,oCAAoC,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,eAAe,EAAE,YAAY,QAAQ,sBAAsB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAiC,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare abstract class AbstractPath {
|
|
2
|
+
#private;
|
|
3
|
+
constructor(rawPath: string);
|
|
4
|
+
isEqualTo(other: AbstractPath): boolean;
|
|
5
|
+
get path(): string;
|
|
6
|
+
toString(): string;
|
|
7
|
+
toJSON(): string;
|
|
8
|
+
private assertNoEscape;
|
|
9
|
+
}
|
|
10
|
+
export declare class RelativeDir extends AbstractPath {
|
|
11
|
+
static readonly ROOT: RelativeDir;
|
|
12
|
+
joinDir(relativePath: string): RelativeDir;
|
|
13
|
+
joinFile(relativePath: string): RelativeFile;
|
|
14
|
+
contains(other: AbstractPath): boolean;
|
|
15
|
+
isStrictAncestorOf(other: AbstractPath): boolean;
|
|
16
|
+
assertIsDir(): this;
|
|
17
|
+
private join;
|
|
18
|
+
}
|
|
19
|
+
export declare class ExistingDir extends RelativeDir {
|
|
20
|
+
constructor(rawPath: string);
|
|
21
|
+
static initialize(dir: RelativeDir): ExistingDir;
|
|
22
|
+
}
|
|
23
|
+
export declare class RelativeFile extends AbstractPath {
|
|
24
|
+
constructor(rawPath: string);
|
|
25
|
+
get parent(): RelativeDir;
|
|
26
|
+
joinDir(relativePath: string): RelativeDir;
|
|
27
|
+
joinFile(relativePath: string): RelativeFile;
|
|
28
|
+
isWithin(scope: RelativeDir): boolean;
|
|
29
|
+
assertIsFile(): this;
|
|
30
|
+
}
|
|
31
|
+
export declare class ExistingFile extends RelativeFile {
|
|
32
|
+
constructor(rawPath: string);
|
|
33
|
+
static initialize(file: RelativeFile): ExistingFile;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=repo-relative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-relative.d.ts","sourceRoot":"","sources":["../../../../bin/utils/path/repo-relative.ts"],"names":[],"mappings":"AAgBA,8BAAsB,YAAY;;gBAElB,OAAO,EAAE,MAAM;IAW3B,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAMvC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;IAIhB,OAAO,CAAC,cAAc;CAKzB;AAED,qBAAa,WAAY,SAAQ,YAAY;IACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAwB;IAE5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAI1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAO5C,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAMtC,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAOhD,WAAW,IAAI,IAAI;IAQnB,OAAO,CAAC,IAAI;CAOf;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC5B,OAAO,EAAE,MAAM;IAK3B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;CAGnD;AAED,qBAAa,YAAa,SAAQ,YAAY;gBAC9B,OAAO,EAAE,MAAM;IAM3B,IAAI,MAAM,IAAI,WAAW,CAExB;IAID,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAK1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAI5C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAMrC,YAAY,IAAI,IAAI;CAOvB;AAED,qBAAa,YAAa,SAAQ,YAAY;gBAC9B,OAAO,EAAE,MAAM;IAK3B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY;CAGtD"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/* eslint-disable max-classes-per-file */
|
|
2
|
+
import { statSync } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
// Git and the config file always use "/", so paths are POSIX regardless of the host OS.
|
|
5
|
+
const { posix } = path;
|
|
6
|
+
// A file path cannot end in "/", ".", "..", or be empty: each of those names a directory.
|
|
7
|
+
const assertNamesFile = (rawPath) => {
|
|
8
|
+
const lastSegment = rawPath.slice(rawPath.lastIndexOf('/') + 1);
|
|
9
|
+
if (lastSegment === '' || lastSegment === '.' || lastSegment === '..') {
|
|
10
|
+
throw new Error(`Expected a file path, got directory path "${rawPath}".`);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
// Shared by the file and directory paths. Use it as a parameter type where either kind is fine.
|
|
14
|
+
export class AbstractPath {
|
|
15
|
+
#path;
|
|
16
|
+
constructor(rawPath) {
|
|
17
|
+
if (posix.isAbsolute(rawPath)) {
|
|
18
|
+
throw new Error(`Expected a relative path, got absolute path "${rawPath}".`);
|
|
19
|
+
}
|
|
20
|
+
const normalized = posix.normalize(rawPath);
|
|
21
|
+
// normalize keeps a trailing slash ("actors/foo/"), which would make equal paths compare unequal.
|
|
22
|
+
this.#path = normalized.endsWith('/') ? normalized.slice(0, -1) : normalized;
|
|
23
|
+
this.assertNoEscape(rawPath);
|
|
24
|
+
}
|
|
25
|
+
// A file and a directory are never equal, even when spelled the same.
|
|
26
|
+
isEqualTo(other) {
|
|
27
|
+
// inheritance safe check, at least one of the two is a subclass of the other
|
|
28
|
+
const isRelativeOf = this instanceof other.constructor || other instanceof this.constructor;
|
|
29
|
+
return isRelativeOf && this.#path === other.#path;
|
|
30
|
+
}
|
|
31
|
+
get path() {
|
|
32
|
+
return this.#path;
|
|
33
|
+
}
|
|
34
|
+
toString() {
|
|
35
|
+
return this.path;
|
|
36
|
+
}
|
|
37
|
+
toJSON() {
|
|
38
|
+
return this.path;
|
|
39
|
+
}
|
|
40
|
+
assertNoEscape(raw) {
|
|
41
|
+
if (this.#path === '..' || this.#path.startsWith('../')) {
|
|
42
|
+
throw new Error(`Path "${raw}" escapes the repo root.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export class RelativeDir extends AbstractPath {
|
|
47
|
+
static ROOT = new RelativeDir('.');
|
|
48
|
+
joinDir(relativePath) {
|
|
49
|
+
return new RelativeDir(this.join(relativePath));
|
|
50
|
+
}
|
|
51
|
+
joinFile(relativePath) {
|
|
52
|
+
// Must be checked before joining: posix.join('actors/foo', '.') is "actors/foo", which looks like a file.
|
|
53
|
+
assertNamesFile(relativePath);
|
|
54
|
+
return new RelativeFile(this.join(relativePath));
|
|
55
|
+
}
|
|
56
|
+
// True when `other` is this directory itself or lies inside it.
|
|
57
|
+
contains(other) {
|
|
58
|
+
// the root contains every path
|
|
59
|
+
if (this.path === '.')
|
|
60
|
+
return true;
|
|
61
|
+
return this.isEqualTo(other) || other.path.startsWith(`${this.path}/`);
|
|
62
|
+
}
|
|
63
|
+
isStrictAncestorOf(other) {
|
|
64
|
+
// you are not an ancestor of yourself
|
|
65
|
+
return !this.isEqualTo(other) && this.contains(other);
|
|
66
|
+
}
|
|
67
|
+
// Throws unless this path exists and is a directory. Paths resolve against the process working
|
|
68
|
+
// directory, which is the repo root.
|
|
69
|
+
assertIsDir() {
|
|
70
|
+
// `stat`, not `lstat`: a symlink must resolve to its target, matching what reading it does.
|
|
71
|
+
const stats = statSync(this.path, { throwIfNoEntry: false });
|
|
72
|
+
if (!stats)
|
|
73
|
+
throw new Error(`Expected directory "${this}" to exist.`);
|
|
74
|
+
if (!stats.isDirectory())
|
|
75
|
+
throw new Error(`Expected "${this}" to be a directory.`);
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
join(relativePath) {
|
|
79
|
+
// Must be checked here: posix.join('.', '/etc') is "etc", so the constructor would not catch it.
|
|
80
|
+
if (posix.isAbsolute(relativePath)) {
|
|
81
|
+
throw new Error(`Expected a relative path to join with "${this}", got absolute path "${relativePath}".`);
|
|
82
|
+
}
|
|
83
|
+
return posix.join(this.path, relativePath);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export class ExistingDir extends RelativeDir {
|
|
87
|
+
constructor(rawPath) {
|
|
88
|
+
super(rawPath);
|
|
89
|
+
this.assertIsDir();
|
|
90
|
+
}
|
|
91
|
+
static initialize(dir) {
|
|
92
|
+
return new ExistingDir(dir.path);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export class RelativeFile extends AbstractPath {
|
|
96
|
+
constructor(rawPath) {
|
|
97
|
+
assertNamesFile(rawPath);
|
|
98
|
+
super(rawPath);
|
|
99
|
+
}
|
|
100
|
+
// The directory containing this file.
|
|
101
|
+
get parent() {
|
|
102
|
+
return new RelativeDir(posix.dirname(this.path));
|
|
103
|
+
}
|
|
104
|
+
// Resolves against the file's directory, the way a path written inside the file is meant
|
|
105
|
+
// (e.g. `dockerContextDir: ".."` in `.actor/actor.json` is the actor folder).
|
|
106
|
+
joinDir(relativePath) {
|
|
107
|
+
return this.parent.joinDir(relativePath);
|
|
108
|
+
}
|
|
109
|
+
// Resolves against the file's directory, e.g. a sibling file.
|
|
110
|
+
joinFile(relativePath) {
|
|
111
|
+
return this.parent.joinFile(relativePath);
|
|
112
|
+
}
|
|
113
|
+
isWithin(scope) {
|
|
114
|
+
return scope.contains(this);
|
|
115
|
+
}
|
|
116
|
+
// Throws unless this path exists and is a file. Paths resolve against the process working
|
|
117
|
+
// directory, which is the repo root.
|
|
118
|
+
assertIsFile() {
|
|
119
|
+
// `stat`, not `lstat`: a symlink must resolve to its target, matching what reading it does.
|
|
120
|
+
const stats = statSync(this.path, { throwIfNoEntry: false });
|
|
121
|
+
if (!stats)
|
|
122
|
+
throw new Error(`Expected file "${this}" to exist.`);
|
|
123
|
+
if (!stats.isFile())
|
|
124
|
+
throw new Error(`Expected "${this}" to be a file.`);
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export class ExistingFile extends RelativeFile {
|
|
129
|
+
constructor(rawPath) {
|
|
130
|
+
super(rawPath);
|
|
131
|
+
this.assertIsFile();
|
|
132
|
+
}
|
|
133
|
+
static initialize(file) {
|
|
134
|
+
return new ExistingFile(file.path);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=repo-relative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-relative.js","sourceRoot":"","sources":["../../../../bin/utils/path/repo-relative.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { ExistingDir, ExistingFile, RelativeDir, RelativeFile } from './repo-relative.js';
|
|
3
|
+
export declare const RelativeDirSchema: z.ZodPipe<z.ZodString, z.ZodTransform<RelativeDir, string>>;
|
|
4
|
+
export declare const ExistingDirSchema: z.ZodPipe<z.ZodString, z.ZodTransform<ExistingDir, string>>;
|
|
5
|
+
export declare const RelativeFileSchema: z.ZodPipe<z.ZodString, z.ZodTransform<RelativeFile, string>>;
|
|
6
|
+
export declare const ExistingFileSchema: z.ZodPipe<z.ZodString, z.ZodTransform<ExistingFile, string>>;
|
|
7
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../bin/utils/path/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAY1F,eAAO,MAAM,iBAAiB,6DAA+C,CAAC;AAC9E,eAAO,MAAM,iBAAiB,6DAA+C,CAAC;AAC9E,eAAO,MAAM,kBAAkB,8DAAgD,CAAC;AAChF,eAAO,MAAM,kBAAkB,8DAAgD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { ExistingDir, ExistingFile, RelativeDir, RelativeFile } from './repo-relative.js';
|
|
3
|
+
const parsePath = (construct) => z.string().transform((value, ctx) => {
|
|
4
|
+
try {
|
|
5
|
+
return construct(value);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
ctx.addIssue({ code: 'custom', message: error instanceof Error ? error.message : String(error) });
|
|
9
|
+
return z.NEVER;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
export const RelativeDirSchema = parsePath((value) => new RelativeDir(value));
|
|
13
|
+
export const ExistingDirSchema = parsePath((value) => new ExistingDir(value));
|
|
14
|
+
export const RelativeFileSchema = parsePath((value) => new RelativeFile(value));
|
|
15
|
+
export const ExistingFileSchema = parsePath((value) => new ExistingFile(value));
|
|
16
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../bin/utils/path/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1F,MAAM,SAAS,GAAG,CAAI,SAA+B,EAAE,EAAE,CACrD,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAsB,EAAE;IACpD,IAAI,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,CAAC,KAAK,CAAC;IACnB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
package/dist/bin/utils.d.ts
CHANGED
|
@@ -6,19 +6,30 @@ export declare const isOutsideDir: (childPath: string, parentPath: string) => bo
|
|
|
6
6
|
* to keep, e.g. because .actor/ must survive even if .gitignore would otherwise exclude it.
|
|
7
7
|
* This also means .git/ itself is never walked, since git never lists its own internals here.
|
|
8
8
|
*/
|
|
9
|
-
export declare const listRepoFilePaths: (repoRoot: string, subDir: string) => string[]
|
|
9
|
+
export declare const listRepoFilePaths: (repoRoot: string, subDir: string) => Promise<string[]>;
|
|
10
10
|
/**
|
|
11
11
|
* Given paths relative to the repo root, returns the subset that `git` would exclude because of
|
|
12
12
|
* .gitignore rules (including nested .gitignore files, `.git/info/exclude`, and global excludes —
|
|
13
13
|
* anything `git` itself respects). Delegating to `git check-ignore` avoids re-implementing gitignore
|
|
14
14
|
* pattern matching.
|
|
15
15
|
*/
|
|
16
|
-
export declare const getGitignoredPaths: (relativePaths: string[]) => Set<string
|
|
16
|
+
export declare const getGitignoredPaths: (relativePaths: string[], cwd?: string) => Promise<Set<string>>;
|
|
17
17
|
export type SourceFile = {
|
|
18
18
|
name: string;
|
|
19
19
|
content: Buffer;
|
|
20
20
|
};
|
|
21
21
|
export declare const readSourceFile: (absPath: string, rootDir: string) => Promise<SourceFile>;
|
|
22
|
-
export declare
|
|
22
|
+
export declare class GitCommandError extends Error {
|
|
23
|
+
readonly args: readonly string[];
|
|
24
|
+
readonly gitError: string;
|
|
25
|
+
readonly exitCode?: number;
|
|
26
|
+
readonly cause: unknown;
|
|
27
|
+
constructor(args: readonly string[], error: unknown, operation?: string);
|
|
28
|
+
}
|
|
29
|
+
/** Runs Git asynchronously, passing each argument directly to Git without a shell. */
|
|
30
|
+
export declare const runGitCommand: (args: string[], { cwd, operation }?: {
|
|
31
|
+
cwd?: string;
|
|
32
|
+
operation?: string;
|
|
33
|
+
}) => Promise<string>;
|
|
23
34
|
export declare const getEnvVar: (varName: string, defaultValue?: string) => string;
|
|
24
35
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/bin/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,EAAE,YAAY,MAAM,KAAG,OACZ,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAO1F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,eAAe,MAAM,EAAE,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAiBnG,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,UAAU,CAGxF,CAAC;AAEH,qBAAa,eAAgB,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;gBAEZ,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM;CAmB1E;AAED,sFAAsF;AACtF,eAAO,MAAM,aAAa,GACtB,MAAM,MAAM,EAAE,EACd,qBAAoB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,KAC9D,OAAO,CAAC,MAAM,CAUhB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAMlE,CAAC"}
|
package/dist/bin/utils.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
import { logger } from './logger.js';
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
4
7
|
// Returns true when `childPath` is not inside `parentPath`.
|
|
5
8
|
// Used to detect monorepo actors whose dockerContextDir escapes the actor directory.
|
|
6
9
|
export const isOutsideDir = (childPath, parentPath) => path.relative(parentPath, childPath).startsWith('..');
|
|
@@ -11,16 +14,13 @@ export const isOutsideDir = (childPath, parentPath) => path.relative(parentPath,
|
|
|
11
14
|
* to keep, e.g. because .actor/ must survive even if .gitignore would otherwise exclude it.
|
|
12
15
|
* This also means .git/ itself is never walked, since git never lists its own internals here.
|
|
13
16
|
*/
|
|
14
|
-
export const listRepoFilePaths = (repoRoot, subDir) => {
|
|
17
|
+
export const listRepoFilePaths = async (repoRoot, subDir) => {
|
|
15
18
|
const relSubDir = path.relative(repoRoot, subDir).split(path.sep).join('/') || '.';
|
|
16
|
-
const
|
|
19
|
+
const output = await runGitCommand(['ls-files', '--cached', '--others', '-z', '--', relSubDir], {
|
|
17
20
|
cwd: repoRoot,
|
|
18
|
-
|
|
21
|
+
operation: 'list repository files for the local build',
|
|
19
22
|
});
|
|
20
|
-
|
|
21
|
-
throw new Error(`[Command failed]: git ls-files\n${result.stderr.toString()}`);
|
|
22
|
-
}
|
|
23
|
-
return result.stdout.toString().split('\0').filter(Boolean);
|
|
23
|
+
return output.split('\0').filter(Boolean);
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
26
26
|
* Given paths relative to the repo root, returns the subset that `git` would exclude because of
|
|
@@ -28,37 +28,60 @@ export const listRepoFilePaths = (repoRoot, subDir) => {
|
|
|
28
28
|
* anything `git` itself respects). Delegating to `git check-ignore` avoids re-implementing gitignore
|
|
29
29
|
* pattern matching.
|
|
30
30
|
*/
|
|
31
|
-
export const getGitignoredPaths = (relativePaths) => {
|
|
31
|
+
export const getGitignoredPaths = async (relativePaths, cwd) => {
|
|
32
32
|
if (relativePaths.length === 0)
|
|
33
33
|
return new Set();
|
|
34
|
-
const result = spawnSync('git', ['check-ignore', '--stdin'], {
|
|
35
|
-
input: relativePaths.join('\n'),
|
|
36
|
-
maxBuffer: 100 * 1024 * 1024,
|
|
37
|
-
});
|
|
38
34
|
// Exit code 1 means none of the given paths are ignored - not an error. Anything else
|
|
39
35
|
// (e.g. 128 for "not a git repository") is a real failure.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
return runGitCommand(['check-ignore', '--', ...relativePaths], {
|
|
37
|
+
cwd,
|
|
38
|
+
operation: 'check which repository paths are ignored',
|
|
39
|
+
})
|
|
40
|
+
.then((output) => new Set(output.split('\n').filter(Boolean)))
|
|
41
|
+
.catch((error) => {
|
|
42
|
+
// exit code 1 means none of the given paths are ignored - not an error
|
|
43
|
+
if (error instanceof GitCommandError && error.exitCode === 1) {
|
|
44
|
+
return new Set();
|
|
45
|
+
}
|
|
46
|
+
throw error;
|
|
47
|
+
});
|
|
44
48
|
};
|
|
45
49
|
export const readSourceFile = async (absPath, rootDir) => ({
|
|
46
50
|
name: path.relative(rootDir, absPath).split(path.sep).join('/'),
|
|
47
51
|
content: await fs.readFile(absPath),
|
|
48
52
|
});
|
|
49
|
-
export
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
export class GitCommandError extends Error {
|
|
54
|
+
args;
|
|
55
|
+
gitError;
|
|
56
|
+
exitCode;
|
|
57
|
+
cause;
|
|
58
|
+
constructor(args, error, operation) {
|
|
59
|
+
const stderr = typeof error === 'object' && error !== null && 'stderr' in error && typeof error.stderr === 'string'
|
|
60
|
+
? error.stderr.trim()
|
|
61
|
+
: '';
|
|
62
|
+
const gitError = stderr || (error instanceof Error ? error.message : String(error));
|
|
63
|
+
const exitCode = typeof error === 'object' && error !== null && 'code' in error && typeof error.code === 'number'
|
|
64
|
+
? error.code
|
|
65
|
+
: undefined;
|
|
66
|
+
const command = `git ${args.map((arg) => JSON.stringify(arg)).join(' ')}`;
|
|
67
|
+
const operationContext = operation ? `Failed to ${operation}.\n` : '';
|
|
68
|
+
super(`${operationContext}Command: ${command}\nGit error: ${gitError}`);
|
|
69
|
+
this.name = 'GitCommandError';
|
|
70
|
+
this.args = [...args];
|
|
71
|
+
this.gitError = gitError;
|
|
72
|
+
this.exitCode = exitCode;
|
|
73
|
+
this.cause = error;
|
|
60
74
|
}
|
|
61
|
-
|
|
75
|
+
}
|
|
76
|
+
/** Runs Git asynchronously, passing each argument directly to Git without a shell. */
|
|
77
|
+
export const runGitCommand = async (args, { cwd, operation } = {}) => {
|
|
78
|
+
logger.debug('git', args);
|
|
79
|
+
const { stdout } = await execFileAsync('git', args, { cwd, encoding: 'utf8', maxBuffer: 100 * 1024 * 1024 }).catch((error) => {
|
|
80
|
+
const err = new GitCommandError(args, error, operation);
|
|
81
|
+
logger.debug('git command failed:\n', err);
|
|
82
|
+
throw err;
|
|
83
|
+
});
|
|
84
|
+
return stdout.trim();
|
|
62
85
|
};
|
|
63
86
|
export const getEnvVar = (varName, defaultValue) => {
|
|
64
87
|
const value = process.env[varName] ?? defaultValue;
|
package/dist/bin/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { afterEach,
|
|
5
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
6
6
|
import { collectNonIgnoredFiles, collectSourceFiles, flattenMonorepoContext, rewriteActorJsonPaths,
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
8
|
// @ts-ignore: editor-only TS6059 — test/tsconfig.json's rootDir doesn't span bin/, but the root
|
|
@@ -37,8 +37,8 @@ describe('build-from-local helpers', () => {
|
|
|
37
37
|
await fs.writeFile(path.join(rootDir, 'sub', 'ignored.log'), 'log');
|
|
38
38
|
// Only the gitignore side is mocked — isSecretFile runs for real, so this also
|
|
39
39
|
// proves the secret-pattern backstop applies independently of .gitignore.
|
|
40
|
-
vi.spyOn(Utils, 'getGitignoredPaths').mockImplementation((relativePaths) => new Set(relativePaths.filter((p) => p.endsWith('.log'))));
|
|
41
|
-
const result = collectNonIgnoredFiles(rootDir, rootDir);
|
|
40
|
+
vi.spyOn(Utils, 'getGitignoredPaths').mockImplementation(async (relativePaths) => new Set(relativePaths.filter((p) => p.endsWith('.log'))));
|
|
41
|
+
const result = await collectNonIgnoredFiles(rootDir, rootDir);
|
|
42
42
|
expect(result).toStrictEqual([path.join(rootDir, 'main.js')]);
|
|
43
43
|
});
|
|
44
44
|
});
|
|
@@ -141,40 +141,4 @@ describe('build-from-local helpers', () => {
|
|
|
141
141
|
});
|
|
142
142
|
});
|
|
143
143
|
});
|
|
144
|
-
describe('getGitignoredPaths', () => {
|
|
145
|
-
beforeEach(() => {
|
|
146
|
-
vi.mocked(spawnSync).mockReset();
|
|
147
|
-
});
|
|
148
|
-
it('returns an empty set without calling git when given no paths', () => {
|
|
149
|
-
const result = Utils.getGitignoredPaths([]);
|
|
150
|
-
expect(result).toStrictEqual(new Set());
|
|
151
|
-
expect(spawnSync).not.toHaveBeenCalled();
|
|
152
|
-
});
|
|
153
|
-
it('returns the paths git reports as ignored, feeding all candidates via stdin', () => {
|
|
154
|
-
vi.mocked(spawnSync).mockReturnValue({
|
|
155
|
-
status: 0,
|
|
156
|
-
stdout: 'node_modules/foo.js\n.env\n',
|
|
157
|
-
stderr: '',
|
|
158
|
-
});
|
|
159
|
-
const result = Utils.getGitignoredPaths(['node_modules/foo.js', 'bin/build.ts', '.env']);
|
|
160
|
-
expect(result).toStrictEqual(new Set(['node_modules/foo.js', '.env']));
|
|
161
|
-
expect(spawnSync).toHaveBeenCalledWith('git', ['check-ignore', '--stdin'], expect.objectContaining({ input: 'node_modules/foo.js\nbin/build.ts\n.env' }));
|
|
162
|
-
});
|
|
163
|
-
it('returns an empty set when git reports nothing is ignored (exit code 1)', () => {
|
|
164
|
-
vi.mocked(spawnSync).mockReturnValue({
|
|
165
|
-
status: 1,
|
|
166
|
-
stdout: '',
|
|
167
|
-
stderr: '',
|
|
168
|
-
});
|
|
169
|
-
expect(Utils.getGitignoredPaths(['bin/build.ts'])).toStrictEqual(new Set());
|
|
170
|
-
});
|
|
171
|
-
it('throws on an unexpected git failure instead of silently including/excluding files', () => {
|
|
172
|
-
vi.mocked(spawnSync).mockReturnValue({
|
|
173
|
-
status: 128,
|
|
174
|
-
stdout: '',
|
|
175
|
-
stderr: 'fatal: not a git repository',
|
|
176
|
-
});
|
|
177
|
-
expect(() => Utils.getGitignoredPaths(['bin/build.ts'])).toThrow('git check-ignore');
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
144
|
//# sourceMappingURL=build-from-local.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-from-local.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/build-from-local.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-from-local.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/build-from-local.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,OAAO,EACH,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB;AACrB,6DAA6D;AAC7D,gGAAgG;AAChG,kGAAkG;EACrG,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,gGAAgG;AAChG,8FAA8F;AAC9F,mGAAmG;AACnG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,cAAc,EAA6B,CAAC;IACjE,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;IAChC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,WAAW,CAAC,OAAO,CAAC,CAAC;YAErB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACpE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;YAEpE,+EAA+E;YAC/E,0EAA0E;YAC1E,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,kBAAkB,CACpD,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACpF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC1E,+EAA+E;YAC/E,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAExB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YACrE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAE5D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5F,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAClD,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAE1C,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;YAExF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAA4B,CAAC;YAElG,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,sBAAsB,CACrE,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,gBAAgB,CACnB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE5B,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAChG,MAAM,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClG,MAAM,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACzG,MAAM,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC1F,MAAM,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACvE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAC7E,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;YACpF,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YACxF,oFAAoF;YACpF,+EAA+E;YAC/E,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAExB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAErF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5F,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,MAAM,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAE9E,0FAA0F;YAC1F,wFAAwF;YACxF,sEAAsE;YACtE,MAAM,gBAAgB,GAAG,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;YAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAA4B,CAAC;YAElG,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,sBAAsB,CACrE,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,gBAAgB,CACnB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC5G,MAAM,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,oHAAoH,EAAE,KAAK,IAAI,EAAE;YAChI,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,kCAAkC,CAAC,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,wHAAwH;YACxH,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBACzD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,MAAM,EAAE,CAAC,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CACzF,CAAC;gBACF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;gBAEzD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAChF,CAAC;oBAAS,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,6BAA6B,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACjE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,MAAM,SAAS,GAAG;gBACd,kBAAkB,EAAE,CAAC;gBACrB,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,qBAAqB,EAAE,6BAA6B;gBAChE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB;gBACjD,SAAS,EAAE,gBAAgB,EAAE,uBAAuB;aACvD,CAAC;YAEF,MAAM,qBAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YAE5E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CACxB,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CACnD,CAAC;YAE5B,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|