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
package/dist/bin/slack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-report.d.ts","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-report.d.ts","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"AAMA,UAAU,wBAAwB;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAAU,oFAMrC,wBAAwB,kBAwF1B,CAAC"}
|
package/dist/bin/test-report.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
|
+
import { logger } from './logger.js';
|
|
2
3
|
import { sendSlackMessage } from './slack.js';
|
|
3
4
|
import { getEnvVar } from './utils.js';
|
|
4
5
|
export const reportTestResults = async ({ dryRun, reportSlackChannel, reportFile: jsonResultsPath, jobUrl, workflowName, }) => {
|
|
@@ -20,22 +21,22 @@ export const reportTestResults = async ({ dryRun, reportSlackChannel, reportFile
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
const failedAssertions = [];
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
logger.info();
|
|
25
|
+
logger.info(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
|
|
26
|
+
logger.info();
|
|
27
|
+
logger.info('**************************************************');
|
|
28
|
+
logger.info('* Successes *');
|
|
29
|
+
logger.info('**************************************************');
|
|
30
|
+
logger.info();
|
|
30
31
|
for (const [i, aResult] of passed.entries()) {
|
|
31
32
|
const { fullName } = aResult;
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
logger.info(`${i + 1}) ${fullName} ... ${aResult.meta.runLink}`);
|
|
34
|
+
logger.info();
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
logger.info('**************************************************');
|
|
37
|
+
logger.info('* Failures *');
|
|
38
|
+
logger.info('**************************************************');
|
|
39
|
+
logger.info();
|
|
39
40
|
for (const [i, aResult] of failed.entries()) {
|
|
40
41
|
const { failureMessages, fullName, meta } = aResult;
|
|
41
42
|
if (failureMessages) {
|
|
@@ -45,14 +46,14 @@ export const reportTestResults = async ({ dryRun, reportSlackChannel, reportFile
|
|
|
45
46
|
actorId: meta.actorId,
|
|
46
47
|
})));
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
logger.info(`${i + 1}) ${fullName} ... ${meta.runLink}`);
|
|
50
|
+
logger.info();
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
logger.info();
|
|
53
|
+
logger.info(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
|
|
54
|
+
logger.info();
|
|
54
55
|
if (!reportSlackChannel) {
|
|
55
|
-
|
|
56
|
+
logger.info(`Skipping slack notification. If you want to enable it, add --report-slack-channel flag and make sure SLACK_TOKEN_TESTS_BOT env variable is set.`);
|
|
56
57
|
return;
|
|
57
58
|
}
|
|
58
59
|
if (failedAssertions.length === 0) {
|
|
@@ -67,8 +68,8 @@ export const reportTestResults = async ({ dryRun, reportSlackChannel, reportFile
|
|
|
67
68
|
const blocks = failedAssertions
|
|
68
69
|
.slice(1)
|
|
69
70
|
.map(({ message, runLink, actorId }) => `• ${message} --- <${runLink}|${actorId}>`);
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
logger.info('SLACK:', slackMessage);
|
|
72
|
+
logger.info('\tblocks:', blocks.join('\n\t\t'));
|
|
72
73
|
if (!reportSlackChannel) {
|
|
73
74
|
return;
|
|
74
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACpC,MAAM,EACN,kBAAkB,EAClB,UAAU,EAAE,eAAe,EAC3B,MAAM,EACN,YAAY,GACW,EAAE,EAAE;IAC3B,MAAM,OAAO,GAAoB,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACxC,SAAS;QACb,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAA4D,EAAE,CAAC;IAErF,
|
|
1
|
+
{"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACpC,MAAM,EACN,kBAAkB,EAClB,UAAU,EAAE,eAAe,EAC3B,MAAM,EACN,YAAY,GACW,EAAE,EAAE;IAC3B,MAAM,OAAO,GAAoB,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACxC,SAAS;QACb,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAA4D,EAAE,CAAC;IAErF,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACpD,IAAI,eAAe,EAAE,CAAC;YAClB,gBAAgB,CAAC,IAAI,CACjB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACjC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC,CACN,CAAC;QACN,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,EAAE,CAAC;IAEd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CACP,iJAAiJ,CACpJ,CAAC;QACF,OAAO;IACX,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;IACX,CAAC;IAED,2BAA2B;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,YAAY,GAAG,KAAK,YAAY,IAAI,GAAG,IAAI,CAAC;IAChD,YAAY,IAAI,SAAS,gBAAgB,CAAC,MAAM,4CAA4C,MAAM,CAAC,MAAM,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;IAChI,YAAY,IAAI,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;IACzH,MAAM,MAAM,GAAG,gBAAgB;SAC1B,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,SAAS,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC;IAExF,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACjF,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ExistingFile, type RelativeDir, type RelativeFile } from '../path/repo-relative.js';
|
|
2
|
+
import type { ValidatedActorConfig } from './structures/base.js';
|
|
3
|
+
export interface ActorJsonPaths {
|
|
4
|
+
file: ExistingFile;
|
|
5
|
+
dockerContextDir: RelativeDir;
|
|
6
|
+
dockerfile?: RelativeFile;
|
|
7
|
+
readme?: RelativeFile;
|
|
8
|
+
changelog?: RelativeFile;
|
|
9
|
+
inputSchema?: RelativeFile;
|
|
10
|
+
outputSchema?: RelativeFile;
|
|
11
|
+
webServerSchema?: RelativeFile;
|
|
12
|
+
}
|
|
13
|
+
export declare function readActorJson(config: ValidatedActorConfig): ActorJsonPaths;
|
|
14
|
+
//# sourceMappingURL=actor-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-json.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/actor-json.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAgBjE,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,gBAAgB,EAAE,WAAW,CAAC;IAC9B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,YAAY,CAAC;CAClC;AAWD,wBAAgB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CA2C1E"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { safeReadJsonObjectFile } from '../json-file.js';
|
|
3
|
+
import { ExistingFile } from '../path/repo-relative.js';
|
|
4
|
+
const inlineOrPath = z.union([z.string(), z.record(z.string(), z.unknown())]).nullish();
|
|
5
|
+
const ActorJsonFieldsSchema = z.object({
|
|
6
|
+
dockerContextDir: z.string().default('..'),
|
|
7
|
+
dockerfile: z.string().optional(),
|
|
8
|
+
readme: z.string().nullish(),
|
|
9
|
+
changelog: z.string().nullish(),
|
|
10
|
+
input: inlineOrPath,
|
|
11
|
+
inputSchema: inlineOrPath,
|
|
12
|
+
output: inlineOrPath,
|
|
13
|
+
outputSchema: inlineOrPath,
|
|
14
|
+
webServerSchema: inlineOrPath,
|
|
15
|
+
});
|
|
16
|
+
const resolveFile = (actorJsonFile, field, value) => {
|
|
17
|
+
if (typeof value !== 'string')
|
|
18
|
+
return undefined;
|
|
19
|
+
try {
|
|
20
|
+
return actorJsonFile.joinFile(value);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new Error(`Invalid "${field}" in "${actorJsonFile}": ${error.message}`);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export function readActorJson(config) {
|
|
27
|
+
const actorJsonPath = config.folder.joinFile('.actor/actor.json');
|
|
28
|
+
let actorJsonFile;
|
|
29
|
+
try {
|
|
30
|
+
actorJsonFile = ExistingFile.initialize(actorJsonPath);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
throw new Error(`Cannot read "${actorJsonPath}". Every actor entry must have a corresponding .actor/actor.json file.`);
|
|
34
|
+
}
|
|
35
|
+
const json = safeReadJsonObjectFile(actorJsonFile);
|
|
36
|
+
if (!json.success)
|
|
37
|
+
throw new Error(`Cannot read "${actorJsonFile}". ${json.failure.message}`);
|
|
38
|
+
const parsed = ActorJsonFieldsSchema.safeParse(json.contents);
|
|
39
|
+
if (!parsed.success)
|
|
40
|
+
throw new Error(`Invalid "${actorJsonFile}": ${z.prettifyError(parsed.error)}`);
|
|
41
|
+
const fields = parsed.data;
|
|
42
|
+
let dockerContextDir;
|
|
43
|
+
try {
|
|
44
|
+
dockerContextDir = actorJsonFile.joinDir(fields.dockerContextDir);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw new Error(`Invalid "dockerContextDir" in "${actorJsonFile}": ${error.message}`);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
file: actorJsonFile,
|
|
51
|
+
dockerContextDir,
|
|
52
|
+
dockerfile: resolveFile(actorJsonFile, 'dockerfile', fields.dockerfile),
|
|
53
|
+
readme: resolveFile(actorJsonFile, 'readme', fields.readme),
|
|
54
|
+
changelog: resolveFile(actorJsonFile, 'changelog', fields.changelog),
|
|
55
|
+
inputSchema: resolveFile(actorJsonFile, fields.input != null ? 'input' : 'inputSchema', fields.input ?? fields.inputSchema),
|
|
56
|
+
outputSchema: resolveFile(actorJsonFile, fields.output != null ? 'output' : 'outputSchema', fields.output ?? fields.outputSchema),
|
|
57
|
+
webServerSchema: resolveFile(actorJsonFile, 'webServerSchema', fields.webServerSchema),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=actor-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-json.js","sourceRoot":"","sources":["../../../../bin/utils/config/actor-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import type { ActorConfig } from '../../types.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type ExistingDir, type RelativeDir } from '../path/repo-relative.js';
|
|
3
|
+
import { type ActorJsonPaths } from './actor-json.js';
|
|
4
|
+
import type { ValidatedActorConfig } from './structures/base.js';
|
|
3
5
|
export declare const CONFIG_FILE_NAME = "apify-test-tools.config.json";
|
|
6
|
+
export interface LoadedActorConfig {
|
|
7
|
+
actorFullName: string;
|
|
8
|
+
folder: ExistingDir;
|
|
9
|
+
tokenEnvVar: string;
|
|
10
|
+
actorJson: ActorJsonPaths;
|
|
11
|
+
dockerContextDir: RelativeDir;
|
|
12
|
+
contextPaths: RelativeDir[];
|
|
13
|
+
}
|
|
4
14
|
/**
|
|
5
15
|
* Stage 3 — resolves one normalized entry against the repo, reading the actor's `.actor/actor.json`
|
|
6
16
|
* for its `dockerContextDir` and deciding which paths count as the actor's context.
|
|
7
17
|
*/
|
|
8
|
-
export declare const loadActorConfig: (entry:
|
|
18
|
+
export declare const loadActorConfig: (entry: ValidatedActorConfig) => LoadedActorConfig;
|
|
9
19
|
export declare const readConfigFile: (selection: {
|
|
10
20
|
actors: string[];
|
|
11
21
|
ignore: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,KAAK,WAAW,EAAgB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,iBAAiB,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAyB/D,MAAM,WAAW,iBAAiB;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,WAAW,CAAC;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;CAC/B;AAqCD;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,KAAG,iBA4B7D,CAAC;AAYF,eAAO,MAAM,cAAc,GAAU,WAAW;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,OAAO,CAAC,WAAW,EAAE,CAW7G,CAAC"}
|
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
1
|
import { selectActors } from '../../actor-filtering.js';
|
|
3
|
-
import { isPathWithinScope } from '../../path-utils.js';
|
|
4
2
|
import { safeReadJsonObjectFile } from '../json-file.js';
|
|
3
|
+
import { ExistingFile } from '../path/repo-relative.js';
|
|
4
|
+
import { readActorJson } from './actor-json.js';
|
|
5
5
|
import { parseConfigFile } from './parser.js';
|
|
6
6
|
export const CONFIG_FILE_NAME = 'apify-test-tools.config.json';
|
|
7
7
|
// Reading the config happens in three stages, each one swappable on its own:
|
|
8
8
|
//
|
|
9
9
|
// 1. file -> plain object (safeReadJsonObjectFile)
|
|
10
|
-
// 2. plain object ->
|
|
10
|
+
// 2. plain object -> ValidatedActorConfig[] (parseConfigFile — picks a strategy, validates
|
|
11
11
|
// and normalizes; see ./parser.ts)
|
|
12
|
-
// 3.
|
|
12
|
+
// 3. ValidatedActorConfig -> LoadedActorConfig (loadActorConfig — reads .actor/actor.json)
|
|
13
13
|
// #region utils
|
|
14
14
|
const findOverlappingContextPaths = (contextPaths) => {
|
|
15
15
|
for (let i = 0; i < contextPaths.length; i++) {
|
|
16
16
|
for (let j = i + 1; j < contextPaths.length; j++) {
|
|
17
|
-
if (
|
|
18
|
-
isPathWithinScope(contextPaths[j], contextPaths[i])) {
|
|
17
|
+
if (contextPaths[i].contains(contextPaths[j]) || contextPaths[j].contains(contextPaths[i])) {
|
|
19
18
|
return [contextPaths[i], contextPaths[j]];
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
22
|
return undefined;
|
|
24
23
|
};
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
const displayFolder = (folder) => folder || '.';
|
|
24
|
+
// Downstream ActorConfig consumers still use "" for the repo root.
|
|
25
|
+
const legacyPath = (dir) => (dir.path === '.' ? '' : dir.path);
|
|
28
26
|
// #endregion
|
|
29
27
|
// #region stages
|
|
30
28
|
/** Stage 1 — the config file as a plain object, or a failure phrased for whoever wrote it. */
|
|
31
29
|
const readConfigFileContents = async () => {
|
|
32
|
-
|
|
30
|
+
let configFile;
|
|
31
|
+
try {
|
|
32
|
+
configFile = new ExistingFile(CONFIG_FILE_NAME);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new Error(`Config file "${CONFIG_FILE_NAME}" not found in the current directory. ` +
|
|
36
|
+
`Please create one with the required actor entries.`);
|
|
37
|
+
}
|
|
38
|
+
const file = safeReadJsonObjectFile(configFile);
|
|
33
39
|
if (file.success) {
|
|
34
40
|
return file.contents;
|
|
35
41
|
}
|
|
@@ -51,40 +57,35 @@ const readConfigFileContents = async () => {
|
|
|
51
57
|
*/
|
|
52
58
|
export const loadActorConfig = (entry) => {
|
|
53
59
|
const { folder } = entry;
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
throw new Error(`Cannot read "${actorJsonPath}". Every actor entry in "${CONFIG_FILE_NAME}" ` +
|
|
58
|
-
`must have a corresponding .actor/actor.json file.`);
|
|
59
|
-
}
|
|
60
|
-
const actorDotDir = folder ? `${folder}/.actor` : '.actor';
|
|
61
|
-
const rawDockerContextDir = typeof actorJson.contents.dockerContextDir === 'string' ? actorJson.contents.dockerContextDir : '..';
|
|
62
|
-
const resolved = path.resolve(process.cwd(), actorDotDir, rawDockerContextDir);
|
|
63
|
-
const dockerContextDir = path.relative(process.cwd(), resolved);
|
|
64
|
-
if (dockerContextDir.startsWith('..')) {
|
|
65
|
-
throw new Error(`"dockerContextDir" for folder "${displayFolder(folder)}" resolves outside the repository root. ` +
|
|
66
|
-
`Resolved path: "${dockerContextDir}".`);
|
|
67
|
-
}
|
|
68
|
-
const normalizedDockerContextDir = dockerContextDir === '.' ? '' : dockerContextDir;
|
|
69
|
-
const contextPaths = [...(entry.overrideActorContext ?? [normalizedDockerContextDir])];
|
|
60
|
+
const actorJson = readActorJson(entry);
|
|
61
|
+
const { dockerContextDir } = actorJson;
|
|
62
|
+
const contextPaths = [...(entry.overrideActorContext ?? [dockerContextDir])];
|
|
70
63
|
// The actor's own folder is always part of its context. When an explicit "overrideActorContext"
|
|
71
64
|
// doesn't already cover it, add it automatically instead of failing the workflow.
|
|
72
|
-
if (!contextPaths.some((contextPath) =>
|
|
65
|
+
if (!contextPaths.some((contextPath) => contextPath.contains(folder))) {
|
|
73
66
|
contextPaths.push(folder);
|
|
74
67
|
}
|
|
75
68
|
const overlap = findOverlappingContextPaths(contextPaths);
|
|
76
69
|
if (overlap) {
|
|
77
|
-
throw new Error(`Invalid context paths for folder "${
|
|
70
|
+
throw new Error(`Invalid context paths for folder "${folder}" in "${CONFIG_FILE_NAME}": ` +
|
|
78
71
|
`"${overlap[0]}" and "${overlap[1]}" overlap. Context paths must not be prefixes of one another.`);
|
|
79
72
|
}
|
|
80
73
|
return {
|
|
81
74
|
actorFullName: entry.actorFullName,
|
|
82
|
-
folder,
|
|
75
|
+
folder: entry.folder,
|
|
83
76
|
tokenEnvVar: entry.tokenEnvVar,
|
|
84
|
-
|
|
77
|
+
actorJson,
|
|
78
|
+
dockerContextDir,
|
|
85
79
|
contextPaths,
|
|
86
80
|
};
|
|
87
81
|
};
|
|
82
|
+
const toLegacyActorConfig = (entry) => ({
|
|
83
|
+
actorFullName: entry.actorFullName,
|
|
84
|
+
folder: legacyPath(entry.folder),
|
|
85
|
+
tokenEnvVar: entry.tokenEnvVar,
|
|
86
|
+
dockerContextDir: legacyPath(entry.dockerContextDir),
|
|
87
|
+
contextPaths: entry.contextPaths.map(legacyPath),
|
|
88
|
+
});
|
|
88
89
|
// #endregion
|
|
89
90
|
export const readConfigFile = async (selection) => {
|
|
90
91
|
const rawFileContents = await readConfigFileContents();
|
|
@@ -92,7 +93,7 @@ export const readConfigFile = async (selection) => {
|
|
|
92
93
|
const actorConfigs = [];
|
|
93
94
|
for (const parsed of parsedConfigs) {
|
|
94
95
|
// Sequential on purpose: the first actor with a problem should be the one reported.
|
|
95
|
-
actorConfigs.push(loadActorConfig(parsed));
|
|
96
|
+
actorConfigs.push(toLegacyActorConfig(loadActorConfig(parsed)));
|
|
96
97
|
}
|
|
97
98
|
return selectActors(selection, actorConfigs);
|
|
98
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import { type ResolvedActorConfig, type StrategyParser } from './structures/base.js';
|
|
1
|
+
import { type ResolvedActorConfig, type StrategyParser, type ValidatedActorConfig } from './structures/base.js';
|
|
2
2
|
declare function selectStrategy(mode: unknown): StrategyParser;
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
* cannot: that no two actors claim the same folder once normalized, nor the same actor on the
|
|
6
|
-
* platform. Collects every violation before throwing, so one run reports all of them rather than
|
|
7
|
-
* only the first.
|
|
8
|
-
*
|
|
9
|
-
* @returns the actors it vouched for, with their paths normalized.
|
|
10
|
-
* @throws Error listing every problem found.
|
|
11
|
-
*/
|
|
12
|
-
declare function verifyConfiguration(body: ResolvedActorConfig[]): ResolvedActorConfig[];
|
|
3
|
+
/** Normalize and validate paths, then check collisions using their final spelling. */
|
|
4
|
+
declare function verifyConfiguration(body: ResolvedActorConfig[]): ValidatedActorConfig[];
|
|
13
5
|
export declare const _privates: {
|
|
14
6
|
selectStrategy: typeof selectStrategy;
|
|
15
7
|
verifyConfiguration: typeof verifyConfiguration;
|
|
16
8
|
};
|
|
17
|
-
export declare function parseConfigFile(body: Record<string, unknown>):
|
|
9
|
+
export declare function parseConfigFile(body: Record<string, unknown>): ValidatedActorConfig[];
|
|
18
10
|
export {};
|
|
19
11
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC5B,MAAM,sBAAsB,CAAC;AAc9B,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAOrD;AAoBD,sFAAsF;AACtF,iBAAS,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,oBAAoB,EAAE,CA6BhF;AAGD,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,EAAE,CAMrF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { ExistingDirSchema, RelativeDirSchema } from '../path/schema.js';
|
|
3
|
+
import { CONFIG_FILE_STRATEGY, } from './structures/base.js';
|
|
3
4
|
import { GROUPED_PARSER } from './structures/grouped.js';
|
|
4
5
|
import { LEGACY_PARSER } from './structures/legacy.js';
|
|
5
6
|
const CONFIG_FILE_STRATEGIES = {
|
|
@@ -21,31 +22,32 @@ const normalizeFolder = (folder) => {
|
|
|
21
22
|
const stripped = stripTrailingSlash(folder);
|
|
22
23
|
return stripped === '.' ? '' : stripped;
|
|
23
24
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
* @throws Error listing every problem found.
|
|
32
|
-
*/
|
|
25
|
+
const ValidatedConfigSchema = z.array(z.object({
|
|
26
|
+
actorFullName: z.string(),
|
|
27
|
+
folder: ExistingDirSchema,
|
|
28
|
+
tokenEnvVar: z.string(),
|
|
29
|
+
overrideActorContext: z.array(RelativeDirSchema).optional(),
|
|
30
|
+
}));
|
|
31
|
+
/** Normalize and validate paths, then check collisions using their final spelling. */
|
|
33
32
|
function verifyConfiguration(body) {
|
|
34
|
-
const seenFolders = new Set();
|
|
35
|
-
const seenActorFullNames = new Set();
|
|
36
|
-
const errors = [];
|
|
37
33
|
const normalized = body.map((entry) => ({
|
|
38
34
|
...entry,
|
|
39
35
|
folder: normalizeFolder(entry.folder),
|
|
40
36
|
overrideActorContext: entry.overrideActorContext?.map(stripTrailingSlash),
|
|
41
37
|
}));
|
|
42
|
-
|
|
38
|
+
const parsed = ValidatedConfigSchema.safeParse(normalized);
|
|
39
|
+
if (!parsed.success)
|
|
40
|
+
throw new Error(z.prettifyError(parsed.error));
|
|
41
|
+
const seenFolders = new Set();
|
|
42
|
+
const seenActorFullNames = new Set();
|
|
43
|
+
const errors = [];
|
|
44
|
+
for (const [index, entry] of parsed.data.entries()) {
|
|
43
45
|
// TODO: drop folder uniqueness (this requires several changes on other places)
|
|
44
|
-
if (seenFolders.has(entry.folder)) {
|
|
46
|
+
if (seenFolders.has(entry.folder.path)) {
|
|
45
47
|
errors.push(`Duplicate folder "${body[index].folder}". Each actor must have a unique folder.`);
|
|
46
48
|
}
|
|
47
49
|
else {
|
|
48
|
-
seenFolders.add(entry.folder);
|
|
50
|
+
seenFolders.add(entry.folder.path);
|
|
49
51
|
}
|
|
50
52
|
if (seenActorFullNames.has(entry.actorFullName)) {
|
|
51
53
|
errors.push(`Duplicate actor "${entry.actorFullName}". Each entry must point at a different actor.`);
|
|
@@ -54,10 +56,9 @@ function verifyConfiguration(body) {
|
|
|
54
56
|
seenActorFullNames.add(entry.actorFullName);
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
|
-
if (errors.length > 0)
|
|
59
|
+
if (errors.length > 0)
|
|
58
60
|
throw new Error(errors.join('\n'));
|
|
59
|
-
|
|
60
|
-
return normalized;
|
|
61
|
+
return parsed.data;
|
|
61
62
|
}
|
|
62
63
|
// eslint-disable-next-line no-underscore-dangle
|
|
63
64
|
export const _privates = {
|
|
@@ -65,9 +66,9 @@ export const _privates = {
|
|
|
65
66
|
verifyConfiguration,
|
|
66
67
|
};
|
|
67
68
|
export function parseConfigFile(body) {
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
return
|
|
69
|
+
const { mode, ...rest } = body;
|
|
70
|
+
const strategy = selectStrategy({ mode });
|
|
71
|
+
const resolved = strategy.parse(rest);
|
|
72
|
+
return verifyConfiguration(resolved);
|
|
72
73
|
}
|
|
73
74
|
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ZodType } from 'zod';
|
|
2
|
+
import type { ExistingDir, RelativeDir } from '../../path/repo-relative.js';
|
|
2
3
|
export declare const ACTOR_FULL_NAME_REGEX: RegExp;
|
|
3
4
|
export interface ResolvedActorConfig {
|
|
4
5
|
actorFullName: string;
|
|
@@ -6,6 +7,10 @@ export interface ResolvedActorConfig {
|
|
|
6
7
|
tokenEnvVar: string;
|
|
7
8
|
overrideActorContext: string[] | undefined;
|
|
8
9
|
}
|
|
10
|
+
export interface ValidatedActorConfig extends Omit<ResolvedActorConfig, 'folder' | 'overrideActorContext'> {
|
|
11
|
+
folder: ExistingDir;
|
|
12
|
+
overrideActorContext?: RelativeDir[];
|
|
13
|
+
}
|
|
9
14
|
export declare enum CONFIG_FILE_STRATEGY {
|
|
10
15
|
LEGACY = "legacy",
|
|
11
16
|
GROUPED = "grouped"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../bin/utils/config/structures/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../bin/utils/config/structures/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAM5E,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAKF,MAAM,WAAW,mBAAmB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,sBAAsB,CAAC;IACtG,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;CACxC;AAED,oBAAY,oBAAoB;IAC5B,MAAM,WAAW;IACjB,OAAO,YAAY;CACtB;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,mBAAmB,EAAE,CAAC;CACnE,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS,oBAAoB,EAE/F,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,mBAAmB,EAAE;;IAIvC;;;;;;;;;;;;;;OAcG;kBACW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAQ5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../bin/utils/config/structures/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,KAAK,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../bin/utils/config/structures/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,KAAK,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIrD,SAAS,gBAAgB,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,MAAM,CAC3C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAC3F,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAChD,CAAC;AAiBF,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;AACvB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAOD,MAAM,UAAU,cAAc;AAC1B,mEAAmE;AACnE,IAAU,EACV,MAAkB,EAClB,OAA2C;IAE3C,OAAO;QACH,IAAI;QACJ;;;;;;;;;;;;;;WAcG;QACH,KAAK,EAAE,CAAC,IAA6B,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { ExistingFile } from './path/repo-relative.js';
|
|
1
2
|
/**
|
|
2
3
|
* Why a JSON object could not be produced from a path. Callers that already have their own
|
|
3
4
|
* user-facing wording (e.g. the config file reader) switch on this instead of re-deriving the
|
|
4
5
|
* cause from an error message.
|
|
5
6
|
*/
|
|
6
|
-
export type JsonObjectReadFailureReason = '
|
|
7
|
+
export type JsonObjectReadFailureReason = 'unreadable' | 'invalid-json' | 'not-an-object';
|
|
7
8
|
export type JsonObjectReadResult = {
|
|
8
9
|
success: true;
|
|
9
10
|
contents: Record<string, unknown>;
|
|
@@ -16,5 +17,5 @@ export type JsonObjectReadResult = {
|
|
|
16
17
|
* Reads a file and parses it as a JSON object, reporting every way that can go wrong as a value
|
|
17
18
|
* instead of a thrown error — the caller decides which failures are fatal and how to word them.
|
|
18
19
|
*/
|
|
19
|
-
export declare function safeReadJsonObjectFile(
|
|
20
|
+
export declare function safeReadJsonObjectFile(filePath: ExistingFile): JsonObjectReadResult;
|
|
20
21
|
//# sourceMappingURL=json-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../bin/utils/json-file.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../bin/utils/json-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1F,MAAM,MAAM,oBAAoB,GAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACpD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,2BAA2B,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAQ9E;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,oBAAoB,CA0BnF"}
|