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.
Files changed (140) hide show
  1. package/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +7 -2
  2. package/CHANGELOG.md +6 -0
  3. package/CONTRIBUTING.md +9 -0
  4. package/bin/build-from-local.ts +8 -7
  5. package/bin/build.ts +22 -21
  6. package/bin/diff-changes.ts +11 -10
  7. package/bin/diff-json-schema.ts +14 -12
  8. package/bin/git.ts +90 -43
  9. package/bin/logger.ts +23 -0
  10. package/bin/main.ts +49 -35
  11. package/bin/output.ts +6 -0
  12. package/bin/slack.ts +8 -7
  13. package/bin/test-report.ts +22 -21
  14. package/bin/utils/config/actor-json.ts +84 -0
  15. package/bin/utils/config/load-config.ts +46 -46
  16. package/bin/utils/config/parser.ts +33 -28
  17. package/bin/utils/config/structures/base.ts +7 -0
  18. package/bin/utils/json-file.ts +11 -14
  19. package/bin/utils/path/repo-relative.ts +156 -0
  20. package/bin/utils/path/schema.ts +18 -0
  21. package/bin/utils.ts +61 -34
  22. package/dist/bin/build-from-local.d.ts +1 -1
  23. package/dist/bin/build-from-local.d.ts.map +1 -1
  24. package/dist/bin/build-from-local.js +8 -7
  25. package/dist/bin/build-from-local.js.map +1 -1
  26. package/dist/bin/build.d.ts.map +1 -1
  27. package/dist/bin/build.js +22 -21
  28. package/dist/bin/build.js.map +1 -1
  29. package/dist/bin/diff-changes.d.ts +1 -1
  30. package/dist/bin/diff-changes.d.ts.map +1 -1
  31. package/dist/bin/diff-changes.js +9 -8
  32. package/dist/bin/diff-changes.js.map +1 -1
  33. package/dist/bin/diff-json-schema.d.ts +1 -1
  34. package/dist/bin/diff-json-schema.d.ts.map +1 -1
  35. package/dist/bin/diff-json-schema.js +13 -12
  36. package/dist/bin/diff-json-schema.js.map +1 -1
  37. package/dist/bin/git.d.ts +10 -10
  38. package/dist/bin/git.d.ts.map +1 -1
  39. package/dist/bin/git.js +78 -37
  40. package/dist/bin/git.js.map +1 -1
  41. package/dist/bin/logger.d.ts +11 -0
  42. package/dist/bin/logger.d.ts.map +1 -0
  43. package/dist/bin/logger.js +20 -0
  44. package/dist/bin/logger.js.map +1 -0
  45. package/dist/bin/main.d.ts +1 -1
  46. package/dist/bin/main.js +48 -35
  47. package/dist/bin/main.js.map +1 -1
  48. package/dist/bin/output.d.ts +3 -0
  49. package/dist/bin/output.d.ts.map +1 -0
  50. package/dist/bin/output.js +6 -0
  51. package/dist/bin/output.js.map +1 -0
  52. package/dist/bin/slack.d.ts.map +1 -1
  53. package/dist/bin/slack.js +8 -7
  54. package/dist/bin/slack.js.map +1 -1
  55. package/dist/bin/test-report.d.ts.map +1 -1
  56. package/dist/bin/test-report.js +22 -21
  57. package/dist/bin/test-report.js.map +1 -1
  58. package/dist/bin/utils/config/actor-json.d.ts +14 -0
  59. package/dist/bin/utils/config/actor-json.d.ts.map +1 -0
  60. package/dist/bin/utils/config/actor-json.js +60 -0
  61. package/dist/bin/utils/config/actor-json.js.map +1 -0
  62. package/dist/bin/utils/config/load-config.d.ts +12 -2
  63. package/dist/bin/utils/config/load-config.d.ts.map +1 -1
  64. package/dist/bin/utils/config/load-config.js +32 -31
  65. package/dist/bin/utils/config/load-config.js.map +1 -1
  66. package/dist/bin/utils/config/parser.d.ts +4 -12
  67. package/dist/bin/utils/config/parser.d.ts.map +1 -1
  68. package/dist/bin/utils/config/parser.js +24 -23
  69. package/dist/bin/utils/config/parser.js.map +1 -1
  70. package/dist/bin/utils/config/structures/base.d.ts +5 -0
  71. package/dist/bin/utils/config/structures/base.d.ts.map +1 -1
  72. package/dist/bin/utils/config/structures/base.js.map +1 -1
  73. package/dist/bin/utils/json-file.d.ts +3 -2
  74. package/dist/bin/utils/json-file.d.ts.map +1 -1
  75. package/dist/bin/utils/json-file.js +8 -13
  76. package/dist/bin/utils/json-file.js.map +1 -1
  77. package/dist/bin/utils/path/repo-relative.d.ts +35 -0
  78. package/dist/bin/utils/path/repo-relative.d.ts.map +1 -0
  79. package/dist/bin/utils/path/repo-relative.js +137 -0
  80. package/dist/bin/utils/path/repo-relative.js.map +1 -0
  81. package/dist/bin/utils/path/schema.d.ts +7 -0
  82. package/dist/bin/utils/path/schema.d.ts.map +1 -0
  83. package/dist/bin/utils/path/schema.js +16 -0
  84. package/dist/bin/utils/path/schema.js.map +1 -0
  85. package/dist/bin/utils.d.ts +14 -3
  86. package/dist/bin/utils.d.ts.map +1 -1
  87. package/dist/bin/utils.js +52 -29
  88. package/dist/bin/utils.js.map +1 -1
  89. package/dist/test/unit/bin/build-from-local.test.js +3 -39
  90. package/dist/test/unit/bin/build-from-local.test.js.map +1 -1
  91. package/dist/test/unit/bin/diff-changes.test.js +97 -96
  92. package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
  93. package/dist/test/unit/bin/diff.test.js +52 -48
  94. package/dist/test/unit/bin/diff.test.js.map +1 -1
  95. package/dist/test/unit/bin/git-command.test.d.ts +2 -0
  96. package/dist/test/unit/bin/git-command.test.d.ts.map +1 -0
  97. package/dist/test/unit/bin/git-command.test.js +54 -0
  98. package/dist/test/unit/bin/git-command.test.js.map +1 -0
  99. package/dist/test/unit/bin/git.test.js +211 -92
  100. package/dist/test/unit/bin/git.test.js.map +1 -1
  101. package/dist/test/unit/bin/logger.test.d.ts +2 -0
  102. package/dist/test/unit/bin/logger.test.d.ts.map +1 -0
  103. package/dist/test/unit/bin/logger.test.js +44 -0
  104. package/dist/test/unit/bin/logger.test.js.map +1 -0
  105. package/dist/test/unit/bin/logging.test.d.ts +2 -0
  106. package/dist/test/unit/bin/logging.test.d.ts.map +1 -0
  107. package/dist/test/unit/bin/logging.test.js +43 -0
  108. package/dist/test/unit/bin/logging.test.js.map +1 -0
  109. package/dist/test/unit/bin/utils/config/load-config.test.js +47 -25
  110. package/dist/test/unit/bin/utils/config/load-config.test.js.map +1 -1
  111. package/dist/test/unit/bin/utils/config/parser.test.js +64 -19
  112. package/dist/test/unit/bin/utils/config/parser.test.js.map +1 -1
  113. package/dist/test/unit/bin/utils/files.test.js +16 -27
  114. package/dist/test/unit/bin/utils/files.test.js.map +1 -1
  115. package/dist/test/unit/bin/utils/path/repo-relative.test.d.ts +2 -0
  116. package/dist/test/unit/bin/utils/path/repo-relative.test.d.ts.map +1 -0
  117. package/dist/test/unit/bin/utils/path/repo-relative.test.js +196 -0
  118. package/dist/test/unit/bin/utils/path/repo-relative.test.js.map +1 -0
  119. package/dist/test/unit/bin/utils/path/schema.test.d.ts +2 -0
  120. package/dist/test/unit/bin/utils/path/schema.test.d.ts.map +1 -0
  121. package/dist/test/unit/bin/utils/path/schema.test.js +52 -0
  122. package/dist/test/unit/bin/utils/path/schema.test.js.map +1 -0
  123. package/dist/test/unit/should-built-and-test.test.js +40 -38
  124. package/dist/test/unit/should-built-and-test.test.js.map +1 -1
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/eslint.config.mjs +9 -1
  127. package/package.json +4 -4
  128. package/test/unit/bin/build-from-local.test.ts +3 -53
  129. package/test/unit/bin/diff-changes.test.ts +97 -96
  130. package/test/unit/bin/diff.test.ts +53 -48
  131. package/test/unit/bin/git-command.test.ts +71 -0
  132. package/test/unit/bin/git.test.ts +246 -89
  133. package/test/unit/bin/logger.test.ts +55 -0
  134. package/test/unit/bin/logging.test.ts +52 -0
  135. package/test/unit/bin/utils/config/load-config.test.ts +63 -26
  136. package/test/unit/bin/utils/config/parser.test.ts +81 -27
  137. package/test/unit/bin/utils/files.test.ts +19 -33
  138. package/test/unit/bin/utils/path/repo-relative.test.ts +250 -0
  139. package/test/unit/bin/utils/path/schema.test.ts +65 -0
  140. package/test/unit/should-built-and-test.test.ts +40 -38
@@ -1 +1 @@
1
- {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"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"}
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":"AAKA,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"}
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"}
@@ -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
- console.error();
24
- console.error(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
25
- console.error();
26
- console.error('**************************************************');
27
- console.error('* Successes *');
28
- console.error('**************************************************');
29
- console.error();
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
- console.error(`${i + 1}) ${fullName} ... ${aResult.meta.runLink}`);
33
- console.error();
33
+ logger.info(`${i + 1}) ${fullName} ... ${aResult.meta.runLink}`);
34
+ logger.info();
34
35
  }
35
- console.error('**************************************************');
36
- console.error('* Failures *');
37
- console.error('**************************************************');
38
- console.error();
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
- console.error(`${i + 1}) ${fullName} ... ${meta.runLink}`);
49
- console.error();
49
+ logger.info(`${i + 1}) ${fullName} ... ${meta.runLink}`);
50
+ logger.info();
50
51
  }
51
- console.error();
52
- console.error(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
53
- console.error();
52
+ logger.info();
53
+ logger.info(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
54
+ logger.info();
54
55
  if (!reportSlackChannel) {
55
- console.error(`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
+ 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
- console.error('SLACK:', slackMessage);
71
- console.error('\tblocks:', blocks.join('\n\t\t'));
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":"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"}
1
+ {"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"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"}
@@ -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 { ResolvedActorConfig } from './structures/base.js';
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: ResolvedActorConfig) => ActorConfig;
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":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAuD/D;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,mBAAmB,KAAG,WAiD5D,CAAC;AAIF,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
+ {"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 -> ResolvedActorConfig[] (parseConfigFile — picks a strategy, validates
10
+ // 2. plain object -> ValidatedActorConfig[] (parseConfigFile — picks a strategy, validates
11
11
  // and normalizes; see ./parser.ts)
12
- // 3. ResolvedActorConfig -> ActorConfig (loadActorConfig — merges in .actor/actor.json)
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 (isPathWithinScope(contextPaths[i], contextPaths[j]) ||
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
- // The repo root is spelled "" internally but "." in a config file, so report it the way a reader
26
- // would have written it.
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
- const file = safeReadJsonObjectFile(CONFIG_FILE_NAME);
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 actorJsonPath = folder ? `${folder}/.actor/actor.json` : '.actor/actor.json';
55
- const actorJson = safeReadJsonObjectFile(actorJsonPath);
56
- if (!actorJson.success) {
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) => isPathWithinScope(folder, 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 "${displayFolder(folder)}" in "${CONFIG_FILE_NAME}": ` +
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
- dockerContextDir: normalizedDockerContextDir,
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":"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"}
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
- * Normalizes the paths the user wrote and checks the cross-entry invariants a per-entry schema
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>): ResolvedActorConfig[];
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":"AAEA,OAAO,EAAwB,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAc3G,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAOrD;AAWD;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CA+B/E;AAGD,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,EAAE,CAMpF"}
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 { CONFIG_FILE_STRATEGY } from './structures/base.js';
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
- * Normalizes the paths the user wrote and checks the cross-entry invariants a per-entry schema
26
- * cannot: that no two actors claim the same folder once normalized, nor the same actor on the
27
- * platform. Collects every violation before throwing, so one run reports all of them rather than
28
- * only the first.
29
- *
30
- * @returns the actors it vouched for, with their paths normalized.
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
- for (const [index, entry] of normalized.entries()) {
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 strategy = selectStrategy(body);
69
- const resolved = strategy.parse(body);
70
- const validated = verifyConfiguration(resolved);
71
- return validated;
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":"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"}
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;AAQlD,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,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
+ {"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;AAErD,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;AAYF,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
+ {"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 = 'not-a-file' | 'unreadable' | 'invalid-json' | 'not-an-object';
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(path: string): JsonObjectReadResult;
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,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAEzG,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,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA+BzE"}
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"}