@code-pushup/ci 0.69.5 → 0.71.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 +5 -4
- package/src/lib/cli/commands/collect.d.ts +3 -1
- package/src/lib/cli/commands/collect.js +4 -3
- package/src/lib/cli/commands/collect.js.map +1 -1
- package/src/lib/cli/index.d.ts +1 -1
- package/src/lib/cli/index.js +1 -1
- package/src/lib/cli/index.js.map +1 -1
- package/src/lib/cli/persist.d.ts +3 -2
- package/src/lib/cli/persist.js +7 -4
- package/src/lib/cli/persist.js.map +1 -1
- package/src/lib/portal/download.d.ts +2 -0
- package/src/lib/portal/download.js +16 -0
- package/src/lib/portal/download.js.map +1 -0
- package/src/lib/portal/index.d.ts +1 -0
- package/src/lib/portal/index.js +2 -0
- package/src/lib/portal/index.js.map +1 -0
- package/src/lib/portal/transform.d.ts +3 -0
- package/src/lib/portal/transform.js +179 -0
- package/src/lib/portal/transform.js.map +1 -0
- package/src/lib/run-monorepo.d.ts +4 -0
- package/src/lib/run-monorepo.js +23 -9
- package/src/lib/run-monorepo.js.map +1 -1
- package/src/lib/run-utils.d.ts +6 -5
- package/src/lib/run-utils.js +59 -20
- package/src/lib/run-utils.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/ci",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0",
|
|
4
4
|
"description": "CI automation logic for Code PushUp (provider-agnostic)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/ci#readme",
|
|
@@ -26,12 +26,13 @@
|
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@code-pushup/models": "0.
|
|
30
|
-
"@code-pushup/
|
|
29
|
+
"@code-pushup/models": "0.71.0",
|
|
30
|
+
"@code-pushup/portal-client": "^0.14.3",
|
|
31
|
+
"@code-pushup/utils": "0.71.0",
|
|
31
32
|
"glob": "^11.0.1",
|
|
32
33
|
"simple-git": "^3.20.0",
|
|
33
34
|
"yaml": "^2.5.1",
|
|
34
|
-
"zod": "^
|
|
35
|
+
"zod": "^4.0.5"
|
|
35
36
|
},
|
|
36
37
|
"module": "./src/index.js",
|
|
37
38
|
"main": "./src/index.js",
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import type { CommandContext } from '../context.js';
|
|
2
|
-
export declare function runCollect({ bin, config, directory, observer
|
|
2
|
+
export declare function runCollect({ bin, config, directory, observer }: CommandContext, { hasFormats }: {
|
|
3
|
+
hasFormats: boolean;
|
|
4
|
+
}): Promise<void>;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { DEFAULT_PERSIST_FORMAT } from '@code-pushup/models';
|
|
2
2
|
import { executeProcess, isVerbose } from '@code-pushup/utils';
|
|
3
|
-
export async function runCollect({ bin, config, directory, observer, }) {
|
|
3
|
+
export async function runCollect({ bin, config, directory, observer }, { hasFormats }) {
|
|
4
4
|
await executeProcess({
|
|
5
5
|
command: bin,
|
|
6
6
|
args: [
|
|
7
7
|
...(isVerbose() ? ['--verbose'] : []),
|
|
8
|
-
'--no-progress',
|
|
9
8
|
...(config ? [`--config=${config}`] : []),
|
|
10
|
-
...
|
|
9
|
+
...(hasFormats
|
|
10
|
+
? []
|
|
11
|
+
: DEFAULT_PERSIST_FORMAT.map(format => `--persist.format=${format}`)),
|
|
11
12
|
],
|
|
12
13
|
cwd: directory,
|
|
13
14
|
observer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../../../../../packages/ci/src/lib/cli/commands/collect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,UAAU,
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../../../../../packages/ci/src/lib/cli/commands/collect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAkB,EACpD,EAAE,UAAU,EAA2B;IAEvC,MAAM,cAAc,CAAC;QACnB,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE;YACJ,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,UAAU;gBACZ,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;SACxE;QACD,GAAG,EAAE,SAAS;QACd,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
|
package/src/lib/cli/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export { runCompare } from './commands/compare.js';
|
|
|
3
3
|
export { runMergeDiffs } from './commands/merge-diffs.js';
|
|
4
4
|
export { runPrintConfig } from './commands/print-config.js';
|
|
5
5
|
export { createCommandContext, type CommandContext } from './context.js';
|
|
6
|
-
export { persistedFilesFromConfig } from './persist.js';
|
|
6
|
+
export { parsePersistConfig, persistedFilesFromConfig, type EnhancedPersistConfig, } from './persist.js';
|
package/src/lib/cli/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { runCompare } from './commands/compare.js';
|
|
|
3
3
|
export { runMergeDiffs } from './commands/merge-diffs.js';
|
|
4
4
|
export { runPrintConfig } from './commands/print-config.js';
|
|
5
5
|
export { createCommandContext } from './context.js';
|
|
6
|
-
export { persistedFilesFromConfig } from './persist.js';
|
|
6
|
+
export { parsePersistConfig, persistedFilesFromConfig, } from './persist.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/src/lib/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAEzB,MAAM,cAAc,CAAC"}
|
package/src/lib/cli/persist.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type CoreConfig, type Format } from '@code-pushup/models';
|
|
2
|
-
export
|
|
2
|
+
export type EnhancedPersistConfig = Pick<CoreConfig, 'persist' | 'upload'>;
|
|
3
|
+
export declare function persistedFilesFromConfig(config: EnhancedPersistConfig, { isDiff, directory }: {
|
|
3
4
|
isDiff?: boolean;
|
|
4
5
|
directory: string;
|
|
5
6
|
}): Record<Format, string>;
|
|
6
|
-
export declare function parsePersistConfig(json: unknown): Promise<
|
|
7
|
+
export declare function parsePersistConfig(json: unknown): Promise<EnhancedPersistConfig>;
|
package/src/lib/cli/persist.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, persistConfigSchema, } from '@code-pushup/models';
|
|
4
|
-
import { objectFromEntries
|
|
3
|
+
import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, persistConfigSchema, uploadConfigSchema, } from '@code-pushup/models';
|
|
4
|
+
import { objectFromEntries } from '@code-pushup/utils';
|
|
5
5
|
export function persistedFilesFromConfig(config, { isDiff, directory }) {
|
|
6
6
|
const { persist: { outputDir = DEFAULT_PERSIST_OUTPUT_DIR, filename = DEFAULT_PERSIST_FILENAME, } = {}, } = config;
|
|
7
7
|
const dir = path.isAbsolute(outputDir)
|
|
@@ -14,10 +14,13 @@ export function persistedFilesFromConfig(config, { isDiff, directory }) {
|
|
|
14
14
|
]));
|
|
15
15
|
}
|
|
16
16
|
export async function parsePersistConfig(json) {
|
|
17
|
-
const schema = z.object({
|
|
17
|
+
const schema = z.object({
|
|
18
|
+
persist: persistConfigSchema.optional(),
|
|
19
|
+
upload: uploadConfigSchema.optional(),
|
|
20
|
+
});
|
|
18
21
|
const result = await schema.safeParseAsync(json);
|
|
19
22
|
if (result.error) {
|
|
20
|
-
throw new Error(`
|
|
23
|
+
throw new Error(`Code PushUp config is invalid:\n${z.prettifyError(result.error)}`);
|
|
21
24
|
}
|
|
22
25
|
return result.data;
|
|
23
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/persist.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAE1B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/cli/persist.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAE1B,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIvD,MAAM,UAAU,wBAAwB,CACtC,MAA6B,EAC7B,EAAE,MAAM,EAAE,SAAS,EAA2C;IAE9D,MAAM,EACJ,OAAO,EAAE,EACP,SAAS,GAAG,0BAA0B,EACtC,QAAQ,GAAG,wBAAwB,GACpC,GAAG,EAAE,GACP,GAAG,MAAM,CAAC;IAEX,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACpC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEpD,OAAO,iBAAiB,CACtB,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM;QACN,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;KACpC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAa;IAEb,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { downloadFromPortal, } from '@code-pushup/portal-client';
|
|
4
|
+
import { transformGQLReport } from './transform.js';
|
|
5
|
+
export async function downloadReportFromPortal(args) {
|
|
6
|
+
const gqlReport = await downloadFromPortal(args);
|
|
7
|
+
if (!gqlReport) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const report = transformGQLReport(gqlReport);
|
|
11
|
+
const outputFile = path.join('tmp', 'code-pushup', 'portal', args.parameters.organization, args.parameters.project, 'report.json');
|
|
12
|
+
await mkdir(path.dirname(outputFile), { recursive: true });
|
|
13
|
+
await writeFile(outputFile, JSON.stringify(report, null, 2));
|
|
14
|
+
return outputFile;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/portal/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAEL,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAwB;IAExB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,KAAK,EACL,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,aAAa,CACd,CAAC;IACF,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { downloadReportFromPortal } from './download.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/portal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { lowercase } from '@code-pushup/utils';
|
|
2
|
+
export function transformGQLReport(report) {
|
|
3
|
+
return {
|
|
4
|
+
commit: transformGQLCommit(report.commit),
|
|
5
|
+
plugins: report.plugins.map(plugin => transformGQLPlugin(plugin, report.issues?.edges.map(({ node }) => node) ?? [])),
|
|
6
|
+
categories: report.categories.map(transformGQLCategory),
|
|
7
|
+
// TODO: make report metadata required in Portal API?
|
|
8
|
+
packageName: report.packageName ?? 'unknown',
|
|
9
|
+
version: report.packageVersion ?? 'unknown',
|
|
10
|
+
date: report.commandStartDate ?? '',
|
|
11
|
+
duration: report.commandDuration ?? 0,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function transformGQLCommit(commit) {
|
|
15
|
+
return {
|
|
16
|
+
hash: commit.sha,
|
|
17
|
+
message: commit.message,
|
|
18
|
+
// TODO: make commit author and date required in Portal API?
|
|
19
|
+
author: commit.author
|
|
20
|
+
? `${commit.author.name} <${commit.author.email}>`
|
|
21
|
+
: 'unknown',
|
|
22
|
+
date: commit.date ? new Date(commit.date) : new Date(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function transformGQLCategory(category) {
|
|
26
|
+
return {
|
|
27
|
+
slug: category.slug,
|
|
28
|
+
title: category.title,
|
|
29
|
+
isBinary: category.isBinary,
|
|
30
|
+
...(category.description && { description: category.description }),
|
|
31
|
+
refs: category.refs.map(({ target, weight }) => ({
|
|
32
|
+
type: lowercase(target.__typename),
|
|
33
|
+
plugin: target.plugin.slug,
|
|
34
|
+
slug: target.slug,
|
|
35
|
+
weight,
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function transformGQLPlugin(plugin, issues) {
|
|
40
|
+
return {
|
|
41
|
+
slug: plugin.slug,
|
|
42
|
+
title: plugin.title,
|
|
43
|
+
icon: plugin.icon,
|
|
44
|
+
...(plugin.description && { description: plugin.description }),
|
|
45
|
+
...(plugin.docsUrl && { docsUrl: plugin.docsUrl }),
|
|
46
|
+
audits: plugin.audits.edges.map(({ node }) => transformGQLAudit(node, issues.filter(issue => issue.audit.plugin.slug === plugin.slug &&
|
|
47
|
+
issue.audit.slug === node.slug))),
|
|
48
|
+
groups: plugin.groups.map(transformGQLGroup),
|
|
49
|
+
...(plugin.packageName && { packageName: plugin.packageName }),
|
|
50
|
+
...(plugin.packageVersion && { version: plugin.packageVersion }),
|
|
51
|
+
// TODO: make plugin metadata required in Portal API?
|
|
52
|
+
date: plugin.runnerStartDate ?? '',
|
|
53
|
+
duration: plugin.runnerDuration ?? 0,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function transformGQLGroup(group) {
|
|
57
|
+
return {
|
|
58
|
+
slug: group.slug,
|
|
59
|
+
title: group.title,
|
|
60
|
+
...(group.description && { description: group.description }),
|
|
61
|
+
refs: group.refs.map(({ target, weight }) => ({
|
|
62
|
+
slug: target.slug,
|
|
63
|
+
weight,
|
|
64
|
+
})),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function transformGQLAudit(audit, issues) {
|
|
68
|
+
return {
|
|
69
|
+
slug: audit.slug,
|
|
70
|
+
title: audit.title,
|
|
71
|
+
...(audit.description && { description: audit.description }),
|
|
72
|
+
...(audit.docsUrl && { docsUrl: audit.docsUrl }),
|
|
73
|
+
score: audit.score,
|
|
74
|
+
value: audit.value,
|
|
75
|
+
...(audit.formattedValue && { displayValue: audit.formattedValue }),
|
|
76
|
+
...(audit.details?.enabled && {
|
|
77
|
+
details: {
|
|
78
|
+
...(issues.length > 0 && {
|
|
79
|
+
issues: issues.map(transformGQLIssue),
|
|
80
|
+
}),
|
|
81
|
+
...(audit.details.tables[0] && {
|
|
82
|
+
table: transformGQLTable(audit.details.tables[0]),
|
|
83
|
+
}),
|
|
84
|
+
...(audit.details.trees.length > 0 && {
|
|
85
|
+
trees: audit.details.trees.map(transformGQLTree),
|
|
86
|
+
}),
|
|
87
|
+
},
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function transformGQLIssue(issue) {
|
|
92
|
+
return {
|
|
93
|
+
message: issue.message,
|
|
94
|
+
severity: lowercase(issue.severity),
|
|
95
|
+
...(issue.source?.__typename === 'SourceCodeLocation' && {
|
|
96
|
+
source: {
|
|
97
|
+
file: issue.source.filePath,
|
|
98
|
+
position: {
|
|
99
|
+
startLine: issue.source.startLine ?? 0,
|
|
100
|
+
...(issue.source.startColumn != null && {
|
|
101
|
+
startColumn: issue.source.startColumn,
|
|
102
|
+
}),
|
|
103
|
+
...(issue.source.endLine != null && {
|
|
104
|
+
endLine: issue.source.endLine,
|
|
105
|
+
}),
|
|
106
|
+
...(issue.source.endColumn != null && {
|
|
107
|
+
endColumn: issue.source.endColumn,
|
|
108
|
+
}),
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
}),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function transformGQLTable(table) {
|
|
115
|
+
if (!table.header) {
|
|
116
|
+
return {
|
|
117
|
+
...(table.title && { title: table.title }),
|
|
118
|
+
rows: table.body.map(cells => cells.map(cell => cell.content)),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
...(table.title && { title: table.title }),
|
|
123
|
+
columns: table.header.map(({ content, alignment }, idx) => ({
|
|
124
|
+
key: idx.toString(),
|
|
125
|
+
label: content,
|
|
126
|
+
align: lowercase(alignment),
|
|
127
|
+
})),
|
|
128
|
+
rows: table.body.map(cells => Object.fromEntries(cells.map((cell, idx) => [idx, cell.content]))),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function transformGQLTree(tree) {
|
|
132
|
+
switch (tree.__typename) {
|
|
133
|
+
case 'BasicTree':
|
|
134
|
+
return {
|
|
135
|
+
type: 'basic',
|
|
136
|
+
...(tree.title && { title: tree.title }),
|
|
137
|
+
root: transformGQLBasicTreeNode(tree.root),
|
|
138
|
+
};
|
|
139
|
+
case 'CoverageTree':
|
|
140
|
+
return {
|
|
141
|
+
type: 'coverage',
|
|
142
|
+
...(tree.title && { title: tree.title }),
|
|
143
|
+
root: transformGQLCoverageTreeNode(tree.root),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function transformGQLBasicTreeNode(node) {
|
|
148
|
+
return {
|
|
149
|
+
name: node.name,
|
|
150
|
+
...(node.customValues && {
|
|
151
|
+
values: Object.fromEntries(node.customValues.map(({ key, value }) => [key, value])),
|
|
152
|
+
}),
|
|
153
|
+
...(node.children && {
|
|
154
|
+
children: node.children.map(transformGQLBasicTreeNode),
|
|
155
|
+
}),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function transformGQLCoverageTreeNode(node) {
|
|
159
|
+
return {
|
|
160
|
+
name: node.name,
|
|
161
|
+
values: {
|
|
162
|
+
coverage: node.values.coverage,
|
|
163
|
+
...(node.values.missing && {
|
|
164
|
+
missing: node.values.missing.map(missing => ({
|
|
165
|
+
...(missing.kind && { kind: missing.kind }),
|
|
166
|
+
...(missing.name && { name: missing.name }),
|
|
167
|
+
startLine: missing.startLine,
|
|
168
|
+
...(missing.startColumn && { startColumn: missing.startColumn }),
|
|
169
|
+
...(missing.endLine && { endLine: missing.endLine }),
|
|
170
|
+
...(missing.endColumn && { endColumn: missing.endColumn }),
|
|
171
|
+
})),
|
|
172
|
+
}),
|
|
173
|
+
},
|
|
174
|
+
...(node.children && {
|
|
175
|
+
children: node.children.map(transformGQLCoverageTreeNode),
|
|
176
|
+
}),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../../packages/ci/src/lib/portal/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { type EnhancedPersistConfig } from './cli/index.js';
|
|
1
2
|
import type { MonorepoRunResult } from './models.js';
|
|
2
3
|
import { type RunEnv } from './run-utils.js';
|
|
3
4
|
export declare function runInMonorepoMode(env: RunEnv): Promise<MonorepoRunResult>;
|
|
5
|
+
export declare function allProjectsHaveDefaultPersistFormats(projects: {
|
|
6
|
+
config: EnhancedPersistConfig;
|
|
7
|
+
}[]): boolean;
|
package/src/lib/run-monorepo.js
CHANGED
|
@@ -4,7 +4,7 @@ import { createCommandContext, persistedFilesFromConfig, runCollect, runMergeDif
|
|
|
4
4
|
import { commentOnPR } from './comment.js';
|
|
5
5
|
import { listMonorepoProjects, } from './monorepo/index.js';
|
|
6
6
|
import { saveOutputFiles } from './output-files.js';
|
|
7
|
-
import { checkPrintConfig, compareReports, loadCachedBaseReport, printPersistConfig, runInBaseBranch, runOnProject, saveReportFiles, } from './run-utils.js';
|
|
7
|
+
import { checkPrintConfig, compareReports, hasDefaultPersistFormats, loadCachedBaseReport, printPersistConfig, runInBaseBranch, runOnProject, saveReportFiles, } from './run-utils.js';
|
|
8
8
|
export async function runInMonorepoMode(env) {
|
|
9
9
|
const { api, settings } = env;
|
|
10
10
|
const { logger } = settings;
|
|
@@ -45,10 +45,20 @@ async function runProjectsInBulk(projects, runManyCommand, env) {
|
|
|
45
45
|
const { refs: { base }, settings, } = env;
|
|
46
46
|
const { logger } = settings;
|
|
47
47
|
logger.info(`Running on ${projects.length} projects in bulk (parallel: ${settings.parallel})`);
|
|
48
|
-
await
|
|
49
|
-
const currProjectReports = await asyncSequential(projects, async (project) => {
|
|
48
|
+
const currProjectConfigs = await asyncSequential(projects, async (project) => {
|
|
50
49
|
const ctx = createCommandContext(settings, project);
|
|
51
50
|
const config = await printPersistConfig(ctx);
|
|
51
|
+
return { project, config, ctx };
|
|
52
|
+
});
|
|
53
|
+
const hasFormats = allProjectsHaveDefaultPersistFormats(currProjectConfigs);
|
|
54
|
+
logger.debug([
|
|
55
|
+
`Loaded ${currProjectConfigs.length} persist and upload configs by running print-config command for each project.`,
|
|
56
|
+
hasFormats
|
|
57
|
+
? 'Every project has default persist formats.'
|
|
58
|
+
: 'Not all projects have default persist formats.',
|
|
59
|
+
].join(' '));
|
|
60
|
+
await collectMany(runManyCommand, env, { hasFormats });
|
|
61
|
+
const currProjectReports = await Promise.all(currProjectConfigs.map(async ({ project, config, ctx }) => {
|
|
52
62
|
const reports = await saveOutputFiles({
|
|
53
63
|
project,
|
|
54
64
|
type: 'current',
|
|
@@ -56,8 +66,7 @@ async function runProjectsInBulk(projects, runManyCommand, env) {
|
|
|
56
66
|
settings,
|
|
57
67
|
});
|
|
58
68
|
return { project, reports, config, ctx };
|
|
59
|
-
});
|
|
60
|
-
logger.debug(`Loaded ${currProjectReports.length} persist configs by running print-config command for each project`);
|
|
69
|
+
}));
|
|
61
70
|
if (base == null) {
|
|
62
71
|
return finalizeProjectReports(currProjectReports);
|
|
63
72
|
}
|
|
@@ -65,7 +74,7 @@ async function runProjectsInBulk(projects, runManyCommand, env) {
|
|
|
65
74
|
}
|
|
66
75
|
async function compareProjectsInBulk(currProjectReports, base, runManyCommand, env) {
|
|
67
76
|
const projectReportsWithCache = await Promise.all(currProjectReports.map(async ({ project, ctx, reports, config }) => {
|
|
68
|
-
const args = { project, base, ctx, env };
|
|
77
|
+
const args = { project, config, base, ctx, env };
|
|
69
78
|
const [currReport, prevReport] = await Promise.all([
|
|
70
79
|
readFile(reports.json, 'utf8').then((content) => ({
|
|
71
80
|
content,
|
|
@@ -122,8 +131,9 @@ async function collectPreviousReports(base, uncachedProjectReports, runManyComma
|
|
|
122
131
|
logger.info(`Skipping ${invalidProjects.length} projects which aren't configured in base branch ${base.ref}`);
|
|
123
132
|
}
|
|
124
133
|
if (onlyProjects.length > 0) {
|
|
134
|
+
const hasFormats = allProjectsHaveDefaultPersistFormats(validProjectConfigs);
|
|
125
135
|
logger.info(`Collecting previous reports for ${onlyProjects.length} projects`);
|
|
126
|
-
await collectMany(runManyCommand, env, onlyProjects);
|
|
136
|
+
await collectMany(runManyCommand, env, { hasFormats, onlyProjects });
|
|
127
137
|
}
|
|
128
138
|
const projectFiles = validProjectConfigs.map(args => savePreviousProjectReport({ ...args, settings }));
|
|
129
139
|
return Object.fromEntries(await Promise.all(projectFiles));
|
|
@@ -139,17 +149,21 @@ async function savePreviousProjectReport(args) {
|
|
|
139
149
|
});
|
|
140
150
|
return [name, files];
|
|
141
151
|
}
|
|
142
|
-
async function collectMany(runManyCommand, env,
|
|
152
|
+
async function collectMany(runManyCommand, env, options) {
|
|
143
153
|
const { settings } = env;
|
|
154
|
+
const { hasFormats, onlyProjects } = options;
|
|
144
155
|
const command = await runManyCommand(onlyProjects);
|
|
145
156
|
const ctx = {
|
|
146
157
|
...createCommandContext(settings, null),
|
|
147
158
|
bin: command,
|
|
148
159
|
};
|
|
149
|
-
await runCollect(ctx);
|
|
160
|
+
await runCollect(ctx, { hasFormats });
|
|
150
161
|
const countText = onlyProjects
|
|
151
162
|
? `${onlyProjects.length} previous`
|
|
152
163
|
: 'all current';
|
|
153
164
|
settings.logger.debug(`Collected ${countText} reports using command \`${command}\``);
|
|
154
165
|
}
|
|
166
|
+
export function allProjectsHaveDefaultPersistFormats(projects) {
|
|
167
|
+
return projects.every(({ config }) => hasDefaultPersistFormats(config));
|
|
168
|
+
}
|
|
155
169
|
//# sourceMappingURL=run-monorepo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-monorepo.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-monorepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-monorepo.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-monorepo.ts"],"names":[],"mappings":"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"}
|
package/src/lib/run-utils.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { SimpleGit } from 'simple-git';
|
|
2
|
-
import type
|
|
3
|
-
import { type CommandContext } from './cli/index.js';
|
|
2
|
+
import { type CommandContext, type EnhancedPersistConfig } from './cli/index.js';
|
|
4
3
|
import { type SourceFileIssue } from './issues.js';
|
|
5
4
|
import type { GitBranch, GitRefs, Options, OutputFiles, ProjectRunResult, ProviderAPIClient, Settings } from './models.js';
|
|
6
5
|
import type { ProjectConfig } from './monorepo/index.js';
|
|
@@ -20,10 +19,11 @@ export type CompareReportsArgs = {
|
|
|
20
19
|
base: GitBranch;
|
|
21
20
|
currReport: ReportData<'current'>;
|
|
22
21
|
prevReport: ReportData<'previous'>;
|
|
23
|
-
config:
|
|
22
|
+
config: EnhancedPersistConfig;
|
|
24
23
|
};
|
|
25
24
|
export type BaseReportArgs = {
|
|
26
25
|
project: ProjectConfig | null;
|
|
26
|
+
config: EnhancedPersistConfig;
|
|
27
27
|
env: RunEnv;
|
|
28
28
|
base: GitBranch;
|
|
29
29
|
ctx: CommandContext;
|
|
@@ -44,8 +44,9 @@ export declare function saveReportFiles<T extends 'current' | 'previous'>(args:
|
|
|
44
44
|
export declare function collectPreviousReport(args: BaseReportArgs): Promise<ReportData<'previous'> | null>;
|
|
45
45
|
export declare function loadCachedBaseReport(args: BaseReportArgs): Promise<ReportData<'previous'> | null>;
|
|
46
46
|
export declare function runInBaseBranch<T>(base: GitBranch, env: RunEnv, fn: () => Promise<T>): Promise<T>;
|
|
47
|
-
export declare function checkPrintConfig(args: BaseReportArgs): Promise<
|
|
48
|
-
export declare function printPersistConfig(ctx: CommandContext): Promise<
|
|
47
|
+
export declare function checkPrintConfig(args: BaseReportArgs): Promise<EnhancedPersistConfig | null>;
|
|
48
|
+
export declare function printPersistConfig(ctx: CommandContext): Promise<EnhancedPersistConfig>;
|
|
49
|
+
export declare function hasDefaultPersistFormats(config: EnhancedPersistConfig): boolean;
|
|
49
50
|
export declare function findNewIssues(args: CompareReportsArgs & {
|
|
50
51
|
diffFiles: OutputFiles;
|
|
51
52
|
}): Promise<SourceFileIssue[]>;
|
package/src/lib/run-utils.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { DEFAULT_PERSIST_FORMAT, } from '@code-pushup/models';
|
|
3
4
|
import { removeUndefinedAndEmptyProps, stringifyError, } from '@code-pushup/utils';
|
|
4
|
-
import { createCommandContext, persistedFilesFromConfig, runCollect, runCompare, runPrintConfig, } from './cli/index.js';
|
|
5
|
-
import { parsePersistConfig } from './cli/persist.js';
|
|
5
|
+
import { createCommandContext, parsePersistConfig, persistedFilesFromConfig, runCollect, runCompare, runPrintConfig, } from './cli/index.js';
|
|
6
6
|
import { DEFAULT_SETTINGS } from './constants.js';
|
|
7
7
|
import { listChangedFiles, normalizeGitRef } from './git.js';
|
|
8
8
|
import { filterRelevantIssues } from './issues.js';
|
|
9
9
|
import { saveOutputFiles } from './output-files.js';
|
|
10
|
+
import { downloadReportFromPortal } from './portal/download.js';
|
|
10
11
|
export async function createRunEnv(refs, api, options, git) {
|
|
12
|
+
const inferredVerbose = Boolean(options?.debug === true || options?.silent === false);
|
|
11
13
|
// eslint-disable-next-line functional/immutable-data
|
|
12
|
-
process.env['CP_VERBOSE'] =
|
|
14
|
+
process.env['CP_VERBOSE'] = `${inferredVerbose}`;
|
|
13
15
|
const [head, base] = await Promise.all([
|
|
14
16
|
normalizeGitRef(refs.head, git),
|
|
15
17
|
refs.base && normalizeGitRef(refs.base, git),
|
|
@@ -32,8 +34,8 @@ export async function runOnProject(project, env) {
|
|
|
32
34
|
logger.info(`Running Code PushUp on monorepo project ${project.name}`);
|
|
33
35
|
}
|
|
34
36
|
const config = await printPersistConfig(ctx);
|
|
35
|
-
logger.debug(`Loaded persist
|
|
36
|
-
await runCollect(ctx);
|
|
37
|
+
logger.debug(`Loaded persist and upload configs from print-config command - ${JSON.stringify(config)}`);
|
|
38
|
+
await runCollect(ctx, { hasFormats: hasDefaultPersistFormats(config) });
|
|
37
39
|
const currReport = await saveReportFiles({
|
|
38
40
|
project,
|
|
39
41
|
type: 'current',
|
|
@@ -49,7 +51,8 @@ export async function runOnProject(project, env) {
|
|
|
49
51
|
return noDiffOutput;
|
|
50
52
|
}
|
|
51
53
|
logger.info(`PR/MR detected, preparing to compare base branch ${base.ref} to head ${head.ref}`);
|
|
52
|
-
const
|
|
54
|
+
const baseArgs = { project, env, base, config, ctx };
|
|
55
|
+
const prevReport = await collectPreviousReport(baseArgs);
|
|
53
56
|
if (!prevReport) {
|
|
54
57
|
return noDiffOutput;
|
|
55
58
|
}
|
|
@@ -108,7 +111,7 @@ export async function collectPreviousReport(args) {
|
|
|
108
111
|
if (!config) {
|
|
109
112
|
return null;
|
|
110
113
|
}
|
|
111
|
-
await runCollect(ctx);
|
|
114
|
+
await runCollect(ctx, { hasFormats: hasDefaultPersistFormats(config) });
|
|
112
115
|
const report = await saveReportFiles({
|
|
113
116
|
project,
|
|
114
117
|
type: 'previous',
|
|
@@ -120,19 +123,9 @@ export async function collectPreviousReport(args) {
|
|
|
120
123
|
});
|
|
121
124
|
}
|
|
122
125
|
export async function loadCachedBaseReport(args) {
|
|
123
|
-
const { project, env: {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
.downloadReportArtifact?.(project?.name)
|
|
127
|
-
.catch((error) => {
|
|
128
|
-
logger.warn(`Error when downloading previous report artifact, skipping - ${stringifyError(error)}`);
|
|
129
|
-
});
|
|
130
|
-
if (api.downloadReportArtifact != null) {
|
|
131
|
-
logger.info(`Previous report artifact ${cachedBaseReport ? 'found' : 'not found'}`);
|
|
132
|
-
if (cachedBaseReport) {
|
|
133
|
-
logger.debug(`Previous report artifact downloaded to ${cachedBaseReport}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
126
|
+
const { project, env: { settings }, } = args;
|
|
127
|
+
const cachedBaseReport = (await loadCachedBaseReportFromPortal(args)) ??
|
|
128
|
+
(await loadCachedBaseReportFromArtifacts(args));
|
|
136
129
|
if (!cachedBaseReport) {
|
|
137
130
|
return null;
|
|
138
131
|
}
|
|
@@ -143,6 +136,47 @@ export async function loadCachedBaseReport(args) {
|
|
|
143
136
|
settings,
|
|
144
137
|
});
|
|
145
138
|
}
|
|
139
|
+
async function loadCachedBaseReportFromArtifacts(args) {
|
|
140
|
+
const { env: { api, settings }, project, } = args;
|
|
141
|
+
const { logger } = settings;
|
|
142
|
+
if (api.downloadReportArtifact == null) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const reportPath = await api
|
|
146
|
+
.downloadReportArtifact(project?.name)
|
|
147
|
+
.catch((error) => {
|
|
148
|
+
logger.warn(`Error when downloading previous report artifact, skipping - ${stringifyError(error)}`);
|
|
149
|
+
return null;
|
|
150
|
+
});
|
|
151
|
+
logger.info(`Previous report artifact ${reportPath ? 'found' : 'not found'}`);
|
|
152
|
+
if (reportPath) {
|
|
153
|
+
logger.debug(`Previous report artifact downloaded to ${reportPath}`);
|
|
154
|
+
}
|
|
155
|
+
return reportPath;
|
|
156
|
+
}
|
|
157
|
+
async function loadCachedBaseReportFromPortal(args) {
|
|
158
|
+
const { config, env: { settings }, } = args;
|
|
159
|
+
const { logger } = settings;
|
|
160
|
+
if (!config.upload) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
const reportPath = await downloadReportFromPortal({
|
|
164
|
+
server: config.upload.server,
|
|
165
|
+
apiKey: config.upload.apiKey,
|
|
166
|
+
parameters: {
|
|
167
|
+
organization: config.upload.organization,
|
|
168
|
+
project: config.upload.project,
|
|
169
|
+
},
|
|
170
|
+
}).catch((error) => {
|
|
171
|
+
logger.warn(`Error when downloading previous report from portal, skipping - ${stringifyError(error)}`);
|
|
172
|
+
return null;
|
|
173
|
+
});
|
|
174
|
+
logger.info(`Previous report ${reportPath ? 'found' : 'not found'} in Code PushUp portal`);
|
|
175
|
+
if (reportPath) {
|
|
176
|
+
logger.debug(`Previous report downloaded from portal to ${reportPath}`);
|
|
177
|
+
}
|
|
178
|
+
return reportPath;
|
|
179
|
+
}
|
|
146
180
|
export async function runInBaseBranch(base, env, fn) {
|
|
147
181
|
const { git, settings: { logger }, } = env;
|
|
148
182
|
await git.fetch('origin', base.ref, ['--depth=1']);
|
|
@@ -174,6 +208,11 @@ export async function printPersistConfig(ctx) {
|
|
|
174
208
|
const json = await runPrintConfig(ctx);
|
|
175
209
|
return parsePersistConfig(json);
|
|
176
210
|
}
|
|
211
|
+
export function hasDefaultPersistFormats(config) {
|
|
212
|
+
const formats = config.persist?.format;
|
|
213
|
+
return (formats == null ||
|
|
214
|
+
DEFAULT_PERSIST_FORMAT.every(format => formats.includes(format)));
|
|
215
|
+
}
|
|
177
216
|
export async function findNewIssues(args) {
|
|
178
217
|
const { base, currReport, prevReport, diffFiles, env: { git, settings: { logger }, }, } = args;
|
|
179
218
|
await git.fetch('origin', base.ref, ['--depth=1']);
|
package/src/lib/run-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-utils.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-utils.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-utils.js","sourceRoot":"","sources":["../../../../../packages/ci/src/lib/run-utils.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,sBAAsB,GAGvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,4BAA4B,EAC5B,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAwB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAWzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAoChE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAa,EACb,GAAsB,EACtB,OAA4B,EAC5B,GAAc;IAEd,MAAM,eAAe,GAAY,OAAO,CACtC,OAAO,EAAE,KAAK,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,CACrD,CAAC;IACF,qDAAqD;IACrD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,eAAe,EAAE,CAAC;IAEjD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;KAC7C,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;QACrC,GAAG;QACH,QAAQ,EAAE;YACR,GAAG,gBAAgB;YACnB,GAAG,CAAC,OAAO,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAC;SACtD;QACD,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA6B,EAC7B,GAAW;IAEX,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EACpB,QAAQ,GACT,GAAG,GAAG,CAAC;IACR,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CACV,iEAAiE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAC1F,CAAC;IAEF,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC;QACvC,OAAO;QACP,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC;QAC5C,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,+BAA+B,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAErE,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;QAC5B,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE;KACV,CAAC;IAE7B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,IAAI,CACT,oDAAoD,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,CACnF,CAAC;IAEF,MAAM,QAAQ,GAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAC3E,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAwB;IAExB,MAAM,EACJ,OAAO,EACP,GAAG,EAAE,EAAE,QAAQ,EAAE,EACjB,UAAU,EACV,UAAU,EACV,MAAM,GACP,GAAG,IAAI,CAAC;IACT,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,UAAU,CACd;QACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;QAC7B,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;QAC5B,KAAK,EAAE,OAAO,EAAE,IAAI;KACrB,EACD,GAAG,CACJ,CAAC;IACF,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,EAAE;QACjD,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,CAAC,2BAA2B,SAAS,CAAC,IAAI,QAAQ,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9E,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;QAC5B,KAAK,EAAE;YACL,OAAO,EAAE,UAAU,CAAC,KAAK;YACzB,QAAQ,EAAE,UAAU,CAAC,KAAK;YAC1B,UAAU,EAAE,MAAM,eAAe,CAAC;gBAChC,OAAO;gBACP,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,SAAS;gBAChB,QAAQ;aACT,CAAC;SACH;QACD,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI;YAC9B,SAAS,EAAE,MAAM,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC;SACvD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAmC,IAKvE;IACC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC;KACtB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAoB;IAEpB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,OAAO;YACP,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC;YAC5C,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAoB;IAEpB,MAAM,EACJ,OAAO,EACP,GAAG,EAAE,EAAE,QAAQ,EAAE,GAClB,GAAG,IAAI,CAAC;IAET,MAAM,gBAAgB,GACpB,CAAC,MAAM,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,MAAM,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;IAElD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,eAAe,CAAC;QACrB,OAAO;QACP,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;QACjC,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,IAAoB;IAEpB,MAAM,EACJ,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EACtB,OAAO,GACR,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,IAAI,GAAG,CAAC,sBAAsB,IAAI,IAAI,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,GAAG;SACzB,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC;SACrC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,MAAM,CAAC,IAAI,CACT,+DAA+D,cAAc,CAAC,KAAK,CAAC,EAAE,CACvF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,MAAM,CAAC,IAAI,CAAC,4BAA4B,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,IAAoB;IAEpB,MAAM,EACJ,MAAM,EACN,GAAG,EAAE,EAAE,QAAQ,EAAE,GAClB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QAC5B,UAAU,EAAE;YACV,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY;YACxC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;SAC/B;KACF,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC1B,MAAM,CAAC,IAAI,CACT,kEAAkE,cAAc,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,mBAAmB,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,wBAAwB,CAC9E,CAAC;IACF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6CAA6C,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAe,EACf,GAAW,EACX,EAAoB;IAEpB,MAAM,EACJ,GAAG,EACH,QAAQ,EAAE,EAAE,MAAM,EAAE,GACrB,GAAG,GAAG,CAAC;IAER,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;IAE1B,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAoB;IAEpB,MAAM,EACJ,OAAO,EACP,GAAG,EACH,IAAI,EACJ,GAAG,EAAE,EAAE,QAAQ,EAAE,GAClB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,SAAS,GAAG,OAAO;QACvB,CAAC,CAAC,sCAAsC,OAAO,CAAC,IAAI,EAAE;QACtD,CAAC,CAAC,wBAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CACV,GAAG,SAAS,kDAAkD,IAAI,CAAC,GAAG,EAAE,CACzE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CACT,GAAG,SAAS,8DAA8D,IAAI,CAAC,GAAG,0BAA0B,CAC7G,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IACvC,OAAO,CACL,OAAO,IAAI,IAAI;QACf,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAqD;IAErD,MAAM,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,GAAG,EAAE,EACH,GAAG,EACH,QAAQ,EAAE,EAAE,MAAM,EAAE,GACrB,GACF,GAAG,IAAI,CAAC;IAET,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CACzC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,EACpC,GAAG,CACJ,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAW;QACpD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAW;QACpD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAgB;QACnD,YAAY;KACb,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CACV,SAAS,MAAM,CAAC,MAAM,wBACpB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAC5B,gBAAgB,CACjB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,OAA6B;IAClD,OAAO,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC;AAC9B,CAAC"}
|