@code-pushup/core 0.84.0 → 0.85.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/core",
3
- "version": "0.84.0",
3
+ "version": "0.85.0",
4
4
  "license": "MIT",
5
5
  "description": "Core business logic for the used by the Code PushUp CLI",
6
6
  "homepage": "https://github.com/code-pushup/cli/tree/main/packages/core#readme",
@@ -39,8 +39,8 @@
39
39
  },
40
40
  "type": "module",
41
41
  "dependencies": {
42
- "@code-pushup/models": "0.84.0",
43
- "@code-pushup/utils": "0.84.0",
42
+ "@code-pushup/models": "0.85.0",
43
+ "@code-pushup/utils": "0.85.0",
44
44
  "ansis": "^3.3.0"
45
45
  },
46
46
  "peerDependencies": {
package/src/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  export { collectAndPersistReports, type CollectAndPersistReportsOptions, } from './lib/collect-and-persist.js';
2
2
  export { compareReportFiles, compareReports, type CompareOptions, } from './lib/compare.js';
3
- export { getRunnerOutputsPath, type ValidatedRunnerResult, } from './lib/implementation/runner.js';
3
+ export { getRunnerOutputsPath, type RunnerResult, } from './lib/implementation/runner.js';
4
4
  export { history, type HistoryOnlyOptions, type HistoryOptions, } from './lib/history.js';
5
5
  export { collect, type CollectOptions } from './lib/implementation/collect.js';
6
6
  export type { ReportsToCompare } from './lib/implementation/compare-scorables.js';
7
7
  export { executePlugin, executePlugins, } from './lib/implementation/execute-plugin.js';
8
- export { AuditOutputsMissingAuditError } from './lib/implementation/runner.js';
9
8
  export { PersistDirError, PersistError, persistReport, } from './lib/implementation/persist.js';
10
9
  export { autoloadRc, ConfigPathError, readRcByPath, } from './lib/implementation/read-rc-file.js';
10
+ export { AuditOutputsMissingAuditError } from './lib/implementation/runner.js';
11
11
  export { mergeDiffs } from './lib/merge-diffs.js';
12
12
  export type { GlobalOptions } from './lib/types.js';
13
13
  export { upload, type UploadOptions } from './lib/upload.js';
package/src/index.js CHANGED
@@ -4,9 +4,9 @@ export { getRunnerOutputsPath, } from './lib/implementation/runner.js';
4
4
  export { history, } from './lib/history.js';
5
5
  export { collect } from './lib/implementation/collect.js';
6
6
  export { executePlugin, executePlugins, } from './lib/implementation/execute-plugin.js';
7
- export { AuditOutputsMissingAuditError } from './lib/implementation/runner.js';
8
7
  export { PersistDirError, PersistError, persistReport, } from './lib/implementation/persist.js';
9
8
  export { autoloadRc, ConfigPathError, readRcByPath, } from './lib/implementation/read-rc-file.js';
9
+ export { AuditOutputsMissingAuditError } from './lib/implementation/runner.js';
10
10
  export { mergeDiffs } from './lib/merge-diffs.js';
11
11
  export { upload } from './lib/upload.js';
12
12
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kBAAkB,EAClB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,GAErB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,OAAO,GAGR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAuB,MAAM,iCAAiC,CAAC;AAE/E,OAAO,EACL,aAAa,EACb,cAAc,GACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAsB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kBAAkB,EAClB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,GAErB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,OAAO,GAGR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAuB,MAAM,iCAAiC,CAAC;AAE/E,OAAO,EACL,aAAa,EACb,cAAc,GACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAsB,MAAM,iBAAiB,CAAC"}
@@ -2,22 +2,17 @@ import { type AuditOutputs, type PluginConfig, type RunnerArgs, type RunnerConfi
2
2
  export type RunnerResult = {
3
3
  date: string;
4
4
  duration: number;
5
- audits: unknown;
6
- };
7
- export type ValidatedRunnerResult = Omit<RunnerResult, 'audits'> & {
8
5
  audits: AuditOutputs;
9
6
  };
10
- export declare function executeRunnerConfig(config: RunnerConfig, args: RunnerArgs): Promise<RunnerResult>;
11
- export declare function executeRunnerFunction(runner: RunnerFunction, args: RunnerArgs): Promise<RunnerResult>;
7
+ export declare function executeRunnerConfig(config: RunnerConfig, args: RunnerArgs): Promise<unknown>;
8
+ export declare function executeRunnerFunction(runner: RunnerFunction, args: RunnerArgs): Promise<unknown>;
12
9
  /**
13
10
  * Error thrown when plugin output is invalid.
14
11
  */
15
12
  export declare class AuditOutputsMissingAuditError extends Error {
16
13
  constructor(auditSlug: string);
17
14
  }
18
- export declare function executePluginRunner(pluginConfig: Pick<PluginConfig, 'audits' | 'runner'>, args: RunnerArgs): Promise<Omit<RunnerResult, 'audits'> & {
19
- audits: AuditOutputs;
20
- }>;
15
+ export declare function executePluginRunner(pluginConfig: Pick<PluginConfig, 'audits' | 'runner'>, args: RunnerArgs): Promise<RunnerResult>;
21
16
  export declare function getRunnerOutputsPath(pluginSlug: string, outputDir: string): string;
22
17
  /**
23
18
  * Save audit outputs to a file to be able to cache the results
@@ -25,5 +20,5 @@ export declare function getRunnerOutputsPath(pluginSlug: string, outputDir: stri
25
20
  * @param pluginSlug
26
21
  * @param outputDir
27
22
  */
28
- export declare function writeRunnerResults(pluginSlug: string, outputDir: string, runnerResult: ValidatedRunnerResult): Promise<void>;
29
- export declare function readRunnerResults(pluginSlug: string, outputDir: string): Promise<ValidatedRunnerResult | null>;
23
+ export declare function writeRunnerResults(pluginSlug: string, outputDir: string, runnerResult: RunnerResult): Promise<void>;
24
+ export declare function readRunnerResults(pluginSlug: string, outputDir: string): Promise<RunnerResult | null>;
@@ -2,21 +2,13 @@ import { bold } from 'ansis';
2
2
  import { writeFile } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { auditOutputsSchema, } from '@code-pushup/models';
5
- import { calcDuration, ensureDirectoryExists, executeProcess, fileExists, isVerbose, readJsonFile, removeDirectoryIfExists, runnerArgsToEnv, ui, } from '@code-pushup/utils';
5
+ import { calcDuration, ensureDirectoryExists, executeProcess, fileExists, readJsonFile, removeDirectoryIfExists, runnerArgsToEnv, } from '@code-pushup/utils';
6
6
  import { normalizeAuditOutputs } from '../normalize.js';
7
7
  export async function executeRunnerConfig(config, args) {
8
8
  const { outputFile, outputTransform } = config;
9
- const { duration, date } = await executeProcess({
9
+ await executeProcess({
10
10
  command: config.command,
11
11
  args: config.args,
12
- observer: {
13
- onStdout: stdout => {
14
- if (isVerbose()) {
15
- ui().logger.log(stdout);
16
- }
17
- },
18
- onStderr: stderr => ui().logger.error(stderr),
19
- },
20
12
  env: { ...process.env, ...runnerArgsToEnv(args) },
21
13
  });
22
14
  // read process output from the file system and parse it
@@ -25,24 +17,12 @@ export async function executeRunnerConfig(config, args) {
25
17
  await removeDirectoryIfExists(path.dirname(outputFile));
26
18
  // transform unknownAuditOutputs to auditOutputs
27
19
  const audits = outputTransform ? await outputTransform(outputs) : outputs;
28
- // create runner result
29
- return {
30
- duration,
31
- date,
32
- audits,
33
- };
20
+ return audits;
34
21
  }
35
22
  export async function executeRunnerFunction(runner, args) {
36
- const date = new Date().toISOString();
37
- const start = performance.now();
38
23
  // execute plugin runner
39
24
  const audits = await runner(args);
40
- // create runner result
41
- return {
42
- date,
43
- duration: calcDuration(start),
44
- audits,
45
- };
25
+ return audits;
46
26
  }
47
27
  /**
48
28
  * Error thrown when plugin output is invalid.
@@ -54,10 +34,12 @@ export class AuditOutputsMissingAuditError extends Error {
54
34
  }
55
35
  export async function executePluginRunner(pluginConfig, args) {
56
36
  const { audits: pluginConfigAudits, runner } = pluginConfig;
57
- const runnerResult = typeof runner === 'object'
37
+ const date = new Date().toISOString();
38
+ const start = performance.now();
39
+ const unvalidatedAuditOutputs = typeof runner === 'object'
58
40
  ? await executeRunnerConfig(runner, args)
59
41
  : await executeRunnerFunction(runner, args);
60
- const { audits: unvalidatedAuditOutputs, ...executionMeta } = runnerResult;
42
+ const duration = calcDuration(start);
61
43
  const result = auditOutputsSchema.safeParse(unvalidatedAuditOutputs);
62
44
  if (!result.success) {
63
45
  throw new Error(`Audit output is invalid: ${result.error.message}`);
@@ -65,7 +47,8 @@ export async function executePluginRunner(pluginConfig, args) {
65
47
  const auditOutputs = result.data;
66
48
  auditOutputsCorrelateWithPluginOutput(auditOutputs, pluginConfigAudits);
67
49
  return {
68
- ...executionMeta,
50
+ date,
51
+ duration,
69
52
  audits: await normalizeAuditOutputs(auditOutputs),
70
53
  };
71
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/lib/implementation/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/lib/implementation/runner.ts"],"names":[],"mappings":"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"}