@form8ion/codecov 6.2.1 → 7.0.0-alpha.1
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/lib/index.js +20 -24
- package/lib/index.js.map +1 -1
- package/package.json +26 -34
- package/lib/index.mjs +0 -149
- package/lib/index.mjs.map +0 -1
package/lib/index.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var githubWorkflowsCore = require('@form8ion/github-workflows-core');
|
|
8
|
-
var got = require('got');
|
|
1
|
+
import deepmerge from 'deepmerge';
|
|
2
|
+
import { promises } from 'node:fs';
|
|
3
|
+
import { writePackageJson } from '@form8ion/javascript-core';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { loadWorkflowFile, writeWorkflowFile, workflowFileExists } from '@form8ion/github-workflows-core';
|
|
6
|
+
import got from 'got';
|
|
9
7
|
|
|
10
8
|
async function scaffold$2() {
|
|
11
9
|
return {};
|
|
@@ -57,19 +55,19 @@ function removeCodecovActionFrom(steps) {
|
|
|
57
55
|
}
|
|
58
56
|
|
|
59
57
|
function scaffold() {
|
|
60
|
-
return {uses: 'codecov/codecov-action@v5.
|
|
58
|
+
return {uses: 'codecov/codecov-action@v5.5.2'};
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
async function lift$1({projectRoot}) {
|
|
64
62
|
const ciWorkflowName = 'node-ci';
|
|
65
63
|
|
|
66
|
-
const workflowDetails = await
|
|
64
|
+
const workflowDetails = await loadWorkflowFile({projectRoot, name: ciWorkflowName});
|
|
67
65
|
const {jobs: {verify: {steps}}} = workflowDetails;
|
|
68
66
|
|
|
69
67
|
if (!findCodecovActionIn(steps)) {
|
|
70
68
|
const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);
|
|
71
69
|
|
|
72
|
-
await
|
|
70
|
+
await writeWorkflowFile({
|
|
73
71
|
projectRoot,
|
|
74
72
|
name: ciWorkflowName,
|
|
75
73
|
config: {
|
|
@@ -87,22 +85,22 @@ async function lift$1({projectRoot}) {
|
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
async function removeAction ({projectRoot}) {
|
|
90
|
-
const existingConfig = await
|
|
88
|
+
const existingConfig = await loadWorkflowFile({projectRoot, name: 'node-ci'});
|
|
91
89
|
existingConfig.jobs.verify.steps = removeCodecovActionFrom(existingConfig.jobs.verify.steps);
|
|
92
90
|
|
|
93
|
-
await
|
|
91
|
+
await writeWorkflowFile({projectRoot, name: 'node-ci', config: existingConfig});
|
|
94
92
|
}
|
|
95
93
|
|
|
96
|
-
function
|
|
97
|
-
return
|
|
94
|
+
function ciWorkflowExists({projectRoot}) {
|
|
95
|
+
return workflowFileExists({projectRoot, name: 'node-ci'});
|
|
98
96
|
}
|
|
99
97
|
|
|
100
|
-
async function
|
|
98
|
+
async function liftReporter({projectRoot, packageManager}) {
|
|
101
99
|
const pathToPackageJson = `${projectRoot}/package.json`;
|
|
102
100
|
|
|
103
101
|
const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
ciWorkflowExists({projectRoot}),
|
|
103
|
+
promises.readFile(pathToPackageJson, 'utf-8')
|
|
106
104
|
]);
|
|
107
105
|
const parsedPackageContents = JSON.parse(existingPackageContents);
|
|
108
106
|
const {scripts} = parsedPackageContents;
|
|
@@ -112,7 +110,7 @@ async function liftReporting ({projectRoot, packageManager}) {
|
|
|
112
110
|
|
|
113
111
|
if (scripts['coverage:report']) {
|
|
114
112
|
parsedPackageContents.scripts = otherScripts;
|
|
115
|
-
await
|
|
113
|
+
await writePackageJson({projectRoot, config: parsedPackageContents});
|
|
116
114
|
|
|
117
115
|
await execa(packageManager, ['remove', 'codecov']);
|
|
118
116
|
|
|
@@ -132,7 +130,7 @@ async function liftReporting ({projectRoot, packageManager}) {
|
|
|
132
130
|
|
|
133
131
|
async function lift({projectRoot, packageManager, vcs}) {
|
|
134
132
|
const [reportingResults, badgeResults] = await Promise.all([
|
|
135
|
-
|
|
133
|
+
liftReporter({projectRoot, packageManager}),
|
|
136
134
|
scaffold$1({vcs})
|
|
137
135
|
]);
|
|
138
136
|
|
|
@@ -140,14 +138,12 @@ async function lift({projectRoot, packageManager, vcs}) {
|
|
|
140
138
|
}
|
|
141
139
|
|
|
142
140
|
async function remover ({projectRoot}) {
|
|
143
|
-
if (await
|
|
141
|
+
if (await ciWorkflowExists({projectRoot})) {
|
|
144
142
|
await removeAction({projectRoot});
|
|
145
143
|
}
|
|
146
144
|
|
|
147
145
|
return {};
|
|
148
146
|
}
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
exports.remove = remover;
|
|
152
|
-
exports.scaffold = scaffold$2;
|
|
148
|
+
export { lift, remover as remove, scaffold$2 as scaffold };
|
|
153
149
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/scaffolder.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/reporter/ci-providers/github-workflows/codecov-action.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/ci-providers/github-workflows/remover.js","../src/reporter/ci-providers/github-workflows/predicate.js","../src/reporter/lifter.js","../src/lifter.js","../src/remover.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from '../../thirdparty-wrappers/got.js';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher.js';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","function stepIsCodecovAction(step) {\n if (!step.uses) return false;\n\n const [actionName] = step.uses.split('@');\n\n return 'codecov/codecov-action' === actionName;\n}\n\nexport function findCodecovActionIn(steps) {\n return steps.find(step => stepIsCodecovAction(step));\n}\n\nexport function removeCodecovActionFrom(steps) {\n return steps.filter(step => !stepIsCodecovAction(step));\n}\n\nexport function scaffold() {\n return {uses: 'codecov/codecov-action@v5.4.0'};\n}\n","import {loadWorkflowFile, writeWorkflowFile} from '@form8ion/github-workflows-core';\n\nimport {findCodecovActionIn, scaffold as scaffoldCodecov} from './codecov-action.js';\n\nexport async function lift({projectRoot}) {\n const ciWorkflowName = 'node-ci';\n\n const workflowDetails = await loadWorkflowFile({projectRoot, name: ciWorkflowName});\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!findCodecovActionIn(steps)) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await writeWorkflowFile({\n projectRoot,\n name: ciWorkflowName,\n config: {\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, scaffoldCodecov()]\n }\n }\n }\n });\n }\n}\n","import {loadWorkflowFile, writeWorkflowFile} from '@form8ion/github-workflows-core';\nimport {removeCodecovActionFrom} from './codecov-action.js';\n\nexport default async function ({projectRoot}) {\n const existingConfig = await loadWorkflowFile({projectRoot, name: 'node-ci'});\n existingConfig.jobs.verify.steps = removeCodecovActionFrom(existingConfig.jobs.verify.steps);\n\n await writeWorkflowFile({projectRoot, name: 'node-ci', config: existingConfig});\n}\n","import {workflowFileExists} from '@form8ion/github-workflows-core';\n\nexport default function ({projectRoot}) {\n return workflowFileExists({projectRoot, name: 'node-ci'});\n}\n","import {promises as fs} from 'node:fs';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport execa from '../../thirdparty-wrappers/execa.js';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers/index.js';\n\nexport default async function ({projectRoot, packageManager}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([\n ciProviderIsLiftable({projectRoot}),\n fs.readFile(pathToPackageJson, 'utf-8')\n ]);\n const parsedPackageContents = JSON.parse(existingPackageContents);\n const {scripts} = parsedPackageContents;\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n parsedPackageContents.scripts = otherScripts;\n await writePackageJson({projectRoot, config: parsedPackageContents});\n\n await execa(packageManager, ['remove', 'codecov']);\n\n return {\n ...!ciProviderCanBeLifted && {\n nextSteps: [{\n summary: 'Configure modern reporting to Codecov on your CI service',\n description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'\n + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'\n }]\n }\n };\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldBadge} from './badge/index.js';\nimport {lift as liftReporting} from './reporter/index.js';\n\nexport async function lift({projectRoot, packageManager, vcs}) {\n const [reportingResults, badgeResults] = await Promise.all([\n liftReporting({projectRoot, packageManager}),\n scaffoldBadge({vcs})\n ]);\n\n return deepmerge.all([reportingResults, badgeResults]);\n}\n","import {remove as removeAction, test as githubWorkflowExists} from './reporter/ci-providers/github-workflows/index.js';\n\nexport default async function ({projectRoot}) {\n if (await githubWorkflowExists({projectRoot})) {\n await removeAction({projectRoot});\n }\n\n return {};\n}\n"],"names":["scaffold","lift","loadWorkflowFile","writeWorkflowFile","scaffoldCodecov","workflowFileExists","ciProviderIsLiftable","fs","liftCiProvider","writePackageJson","scaffoldBadge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/scaffolder.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/reporter/ci-providers/github-workflows/codecov-action.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/ci-providers/github-workflows/remover.js","../src/reporter/ci-providers/github-workflows/predicate.js","../src/reporter/lifter.js","../src/lifter.js","../src/remover.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from 'got';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher.js';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","function stepIsCodecovAction(step) {\n if (!step.uses) return false;\n\n const [actionName] = step.uses.split('@');\n\n return 'codecov/codecov-action' === actionName;\n}\n\nexport function findCodecovActionIn(steps) {\n return steps.find(step => stepIsCodecovAction(step));\n}\n\nexport function removeCodecovActionFrom(steps) {\n return steps.filter(step => !stepIsCodecovAction(step));\n}\n\nexport function scaffold() {\n return {uses: 'codecov/codecov-action@v5.5.2'};\n}\n","import {loadWorkflowFile, writeWorkflowFile} from '@form8ion/github-workflows-core';\n\nimport {findCodecovActionIn, scaffold as scaffoldCodecov} from './codecov-action.js';\n\nexport async function lift({projectRoot}) {\n const ciWorkflowName = 'node-ci';\n\n const workflowDetails = await loadWorkflowFile({projectRoot, name: ciWorkflowName});\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!findCodecovActionIn(steps)) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await writeWorkflowFile({\n projectRoot,\n name: ciWorkflowName,\n config: {\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, scaffoldCodecov()]\n }\n }\n }\n });\n }\n}\n","import {loadWorkflowFile, writeWorkflowFile} from '@form8ion/github-workflows-core';\nimport {removeCodecovActionFrom} from './codecov-action.js';\n\nexport default async function ({projectRoot}) {\n const existingConfig = await loadWorkflowFile({projectRoot, name: 'node-ci'});\n existingConfig.jobs.verify.steps = removeCodecovActionFrom(existingConfig.jobs.verify.steps);\n\n await writeWorkflowFile({projectRoot, name: 'node-ci', config: existingConfig});\n}\n","import {workflowFileExists} from '@form8ion/github-workflows-core';\n\nexport default function ciWorkflowExists({projectRoot}) {\n return workflowFileExists({projectRoot, name: 'node-ci'});\n}\n","import {promises as fs} from 'node:fs';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport {execa} from 'execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers/index.js';\n\nexport default async function liftReporter({projectRoot, packageManager}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([\n ciProviderIsLiftable({projectRoot}),\n fs.readFile(pathToPackageJson, 'utf-8')\n ]);\n const parsedPackageContents = JSON.parse(existingPackageContents);\n const {scripts} = parsedPackageContents;\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n parsedPackageContents.scripts = otherScripts;\n await writePackageJson({projectRoot, config: parsedPackageContents});\n\n await execa(packageManager, ['remove', 'codecov']);\n\n return {\n ...!ciProviderCanBeLifted && {\n nextSteps: [{\n summary: 'Configure modern reporting to Codecov on your CI service',\n description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'\n + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'\n }]\n }\n };\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldBadge} from './badge/index.js';\nimport {lift as liftReporting} from './reporter/index.js';\n\nexport async function lift({projectRoot, packageManager, vcs}) {\n const [reportingResults, badgeResults] = await Promise.all([\n liftReporting({projectRoot, packageManager}),\n scaffoldBadge({vcs})\n ]);\n\n return deepmerge.all([reportingResults, badgeResults]);\n}\n","import {remove as removeAction, test as githubWorkflowExists} from './reporter/ci-providers/github-workflows/index.js';\n\nexport default async function ({projectRoot}) {\n if (await githubWorkflowExists({projectRoot})) {\n await removeAction({projectRoot});\n }\n\n return {};\n}\n"],"names":["scaffold","lift","scaffoldCodecov","ciProviderIsLiftable","fs","liftCiProvider","liftReporting","scaffoldBadge","githubWorkflowExists"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,33 +2,28 @@
|
|
|
2
2
|
"name": "@form8ion/codecov",
|
|
3
3
|
"description": "code coverage service plugin for form8ion",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "
|
|
6
|
-
"type": "
|
|
5
|
+
"version": "7.0.0-alpha.1",
|
|
6
|
+
"type": "module",
|
|
7
7
|
"engines": {
|
|
8
|
-
"node": "^
|
|
8
|
+
"node": "^20.19.0 || >=22.14.0"
|
|
9
9
|
},
|
|
10
10
|
"author": "Matt Travi <npm@travi.org> (https://matt.travi.org)",
|
|
11
11
|
"repository": "form8ion/codecov",
|
|
12
12
|
"bugs": "https://github.com/form8ion/codecov/issues",
|
|
13
13
|
"homepage": "https://npm.im/@form8ion/codecov",
|
|
14
14
|
"runkitExampleFilename": "./example.js",
|
|
15
|
-
"exports":
|
|
16
|
-
"require": "./lib/index.js",
|
|
17
|
-
"import": "./lib/index.mjs"
|
|
18
|
-
},
|
|
15
|
+
"exports": "./lib/index.js",
|
|
19
16
|
"main": "./lib/index.js",
|
|
20
|
-
"module": "./lib/index.mjs",
|
|
21
17
|
"sideEffects": false,
|
|
22
18
|
"scripts": {
|
|
23
19
|
"pretest": "run-s build",
|
|
24
|
-
"test": "npm-run-all --print-label
|
|
20
|
+
"test": "npm-run-all --print-label --parallel lint:* --parallel test:*",
|
|
25
21
|
"lint:lockfile": "lockfile-lint",
|
|
26
22
|
"lint:js": "eslint . --cache",
|
|
27
23
|
"lint:js:fix": "run-s 'lint:js -- --fix'",
|
|
28
24
|
"lint:md": "remark . --frail",
|
|
29
25
|
"generate:md": "remark . --output",
|
|
30
26
|
"pregenerate:md": "run-s build",
|
|
31
|
-
"lint:sensitive": "ban",
|
|
32
27
|
"prepare": "husky install",
|
|
33
28
|
"build:js": "rollup --config",
|
|
34
29
|
"watch": "run-s 'build:js -- --watch'",
|
|
@@ -37,12 +32,12 @@
|
|
|
37
32
|
"build": "npm-run-all --print-label --parallel build:*",
|
|
38
33
|
"prepack": "run-s build",
|
|
39
34
|
"test:unit": "cross-env NODE_ENV=test c8 run-s test:unit:base",
|
|
40
|
-
"test:unit:base": "DEBUG=any
|
|
35
|
+
"test:unit:base": "DEBUG=any vitest run",
|
|
41
36
|
"lint:peer": "npm ls >/dev/null",
|
|
42
37
|
"lint:gherkin": "gherkin-lint",
|
|
43
38
|
"test:integration": "run-s 'test:integration:base -- --profile noWip'",
|
|
44
39
|
"pretest:integration:base": "run-s build",
|
|
45
|
-
"test:integration:base": "NODE_OPTIONS=--enable-source-maps DEBUG=any cucumber-js test/integration
|
|
40
|
+
"test:integration:base": "NODE_OPTIONS=--enable-source-maps DEBUG=any cucumber-js test/integration",
|
|
46
41
|
"test:integration:debug": "DEBUG=test run-s test:integration",
|
|
47
42
|
"test:integration:wip": "run-s 'test:integration:base -- --profile wip'",
|
|
48
43
|
"test:integration:wip:debug": "DEBUG=test run-s 'test:integration:wip'",
|
|
@@ -58,49 +53,46 @@
|
|
|
58
53
|
"access": "public",
|
|
59
54
|
"provenance": true
|
|
60
55
|
},
|
|
61
|
-
"packageManager": "npm@11.
|
|
56
|
+
"packageManager": "npm@11.7.0+sha512.c22099a6fff8d5b2286c2a09df5352b4858a7c0c716320f58989d60ad8b29ecf2ce6fdfe97ccb41c23ffb1272e1fa079f868487dd6b81d02a2a9e199c095a117",
|
|
62
57
|
"dependencies": {
|
|
63
58
|
"@form8ion/core": "^4.6.1",
|
|
64
59
|
"@form8ion/github-workflows-core": "^5.3.0",
|
|
65
60
|
"@form8ion/javascript-core": "^11.0.0",
|
|
66
61
|
"deepmerge": "^4.3.1",
|
|
67
|
-
"execa": "^
|
|
62
|
+
"execa": "^6.1.0",
|
|
68
63
|
"got": "^11.8.5"
|
|
69
64
|
},
|
|
70
65
|
"devDependencies": {
|
|
71
|
-
"@babel/register": "7.25.9",
|
|
72
66
|
"@cucumber/cucumber": "10.9.0",
|
|
73
|
-
"@form8ion/
|
|
74
|
-
"@form8ion/
|
|
75
|
-
"@form8ion/eslint-config": "7.0.12",
|
|
67
|
+
"@form8ion/commitlint-config": "2.0.8",
|
|
68
|
+
"@form8ion/eslint-config": "7.0.13",
|
|
76
69
|
"@form8ion/eslint-config-cucumber": "1.4.1",
|
|
77
|
-
"@form8ion/eslint-config-
|
|
70
|
+
"@form8ion/eslint-config-vitest": "1.0.0",
|
|
78
71
|
"@form8ion/remark-lint-preset": "6.0.7",
|
|
79
|
-
"@rollup/plugin-node-resolve": "16.0.
|
|
80
|
-
"@travi/any": "3.1.
|
|
81
|
-
"ban-sensitive-files": "1.10.7",
|
|
72
|
+
"@rollup/plugin-node-resolve": "16.0.3",
|
|
73
|
+
"@travi/any": "3.1.3",
|
|
82
74
|
"c8": "10.1.3",
|
|
83
75
|
"chai": "4.5.0",
|
|
84
|
-
"cross-env": "
|
|
76
|
+
"cross-env": "10.1.0",
|
|
85
77
|
"cz-conventional-changelog": "3.3.0",
|
|
86
78
|
"gherkin-lint": "4.2.4",
|
|
87
79
|
"http-status-codes": "2.3.0",
|
|
88
80
|
"husky": "9.1.7",
|
|
89
|
-
"js-yaml": "4.1.
|
|
90
|
-
"lockfile-lint": "4.14.
|
|
91
|
-
"ls-engines": "0.9.
|
|
92
|
-
"mocha": "11.1.0",
|
|
81
|
+
"js-yaml": "4.1.1",
|
|
82
|
+
"lockfile-lint": "4.14.1",
|
|
83
|
+
"ls-engines": "0.9.4",
|
|
93
84
|
"mock-fs": "5.5.0",
|
|
94
|
-
"nock": "14.0.
|
|
95
|
-
"npm-run-all2": "
|
|
96
|
-
"publint": "0.3.
|
|
85
|
+
"nock": "14.0.10",
|
|
86
|
+
"npm-run-all2": "8.0.4",
|
|
87
|
+
"publint": "0.3.16",
|
|
97
88
|
"remark-cli": "12.0.1",
|
|
98
89
|
"remark-toc": "9.0.0",
|
|
99
90
|
"remark-usage": "11.0.1",
|
|
100
|
-
"rimraf": "6.
|
|
101
|
-
"rollup": "4.
|
|
91
|
+
"rimraf": "6.1.2",
|
|
92
|
+
"rollup": "4.54.0",
|
|
102
93
|
"rollup-plugin-auto-external": "2.0.0",
|
|
103
|
-
"
|
|
104
|
-
"
|
|
94
|
+
"testdouble": "3.20.2",
|
|
95
|
+
"vitest": "2.1.9",
|
|
96
|
+
"vitest-when": "0.10.0"
|
|
105
97
|
}
|
|
106
98
|
}
|
package/lib/index.mjs
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import deepmerge from 'deepmerge';
|
|
2
|
-
import { promises } from 'node:fs';
|
|
3
|
-
import { writePackageJson } from '@form8ion/javascript-core';
|
|
4
|
-
import execa from 'execa';
|
|
5
|
-
import { loadWorkflowFile, writeWorkflowFile, workflowFileExists } from '@form8ion/github-workflows-core';
|
|
6
|
-
import got from 'got';
|
|
7
|
-
|
|
8
|
-
async function scaffold$2() {
|
|
9
|
-
return {};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async function fetchRepositoryDetails ({vcs, apiAccessToken}) {
|
|
13
|
-
const {body: {repo}} = await got(
|
|
14
|
-
`https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,
|
|
15
|
-
{headers: {Authorization: apiAccessToken}, responseType: 'json'}
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
return repo;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async function scaffold$1({vcs, apiAccessToken}) {
|
|
22
|
-
return {
|
|
23
|
-
...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {
|
|
24
|
-
badges: {
|
|
25
|
-
status: {
|
|
26
|
-
coverage: {
|
|
27
|
-
img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${
|
|
28
|
-
apiAccessToken
|
|
29
|
-
? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`
|
|
30
|
-
: ''
|
|
31
|
-
}`,
|
|
32
|
-
link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,
|
|
33
|
-
text: 'Codecov'
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function stepIsCodecovAction(step) {
|
|
42
|
-
if (!step.uses) return false;
|
|
43
|
-
|
|
44
|
-
const [actionName] = step.uses.split('@');
|
|
45
|
-
|
|
46
|
-
return 'codecov/codecov-action' === actionName;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function findCodecovActionIn(steps) {
|
|
50
|
-
return steps.find(step => stepIsCodecovAction(step));
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function removeCodecovActionFrom(steps) {
|
|
54
|
-
return steps.filter(step => !stepIsCodecovAction(step));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function scaffold() {
|
|
58
|
-
return {uses: 'codecov/codecov-action@v5.4.0'};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
async function lift$1({projectRoot}) {
|
|
62
|
-
const ciWorkflowName = 'node-ci';
|
|
63
|
-
|
|
64
|
-
const workflowDetails = await loadWorkflowFile({projectRoot, name: ciWorkflowName});
|
|
65
|
-
const {jobs: {verify: {steps}}} = workflowDetails;
|
|
66
|
-
|
|
67
|
-
if (!findCodecovActionIn(steps)) {
|
|
68
|
-
const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);
|
|
69
|
-
|
|
70
|
-
await writeWorkflowFile({
|
|
71
|
-
projectRoot,
|
|
72
|
-
name: ciWorkflowName,
|
|
73
|
-
config: {
|
|
74
|
-
...workflowDetails,
|
|
75
|
-
jobs: {
|
|
76
|
-
...workflowDetails.jobs,
|
|
77
|
-
verify: {
|
|
78
|
-
...workflowDetails.jobs.verify,
|
|
79
|
-
steps: [...stepsWithLegacyReportingRemoved, scaffold()]
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
async function removeAction ({projectRoot}) {
|
|
88
|
-
const existingConfig = await loadWorkflowFile({projectRoot, name: 'node-ci'});
|
|
89
|
-
existingConfig.jobs.verify.steps = removeCodecovActionFrom(existingConfig.jobs.verify.steps);
|
|
90
|
-
|
|
91
|
-
await writeWorkflowFile({projectRoot, name: 'node-ci', config: existingConfig});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function githubWorkflowExists ({projectRoot}) {
|
|
95
|
-
return workflowFileExists({projectRoot, name: 'node-ci'});
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
async function liftReporting ({projectRoot, packageManager}) {
|
|
99
|
-
const pathToPackageJson = `${projectRoot}/package.json`;
|
|
100
|
-
|
|
101
|
-
const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([
|
|
102
|
-
githubWorkflowExists({projectRoot}),
|
|
103
|
-
promises.readFile(pathToPackageJson, 'utf-8')
|
|
104
|
-
]);
|
|
105
|
-
const parsedPackageContents = JSON.parse(existingPackageContents);
|
|
106
|
-
const {scripts} = parsedPackageContents;
|
|
107
|
-
const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;
|
|
108
|
-
|
|
109
|
-
if (ciProviderCanBeLifted) await lift$1({projectRoot});
|
|
110
|
-
|
|
111
|
-
if (scripts['coverage:report']) {
|
|
112
|
-
parsedPackageContents.scripts = otherScripts;
|
|
113
|
-
await writePackageJson({projectRoot, config: parsedPackageContents});
|
|
114
|
-
|
|
115
|
-
await execa(packageManager, ['remove', 'codecov']);
|
|
116
|
-
|
|
117
|
-
return {
|
|
118
|
-
...!ciProviderCanBeLifted && {
|
|
119
|
-
nextSteps: [{
|
|
120
|
-
summary: 'Configure modern reporting to Codecov on your CI service',
|
|
121
|
-
description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'
|
|
122
|
-
+ ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
|
|
123
|
-
}]
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return {};
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
async function lift({projectRoot, packageManager, vcs}) {
|
|
132
|
-
const [reportingResults, badgeResults] = await Promise.all([
|
|
133
|
-
liftReporting({projectRoot, packageManager}),
|
|
134
|
-
scaffold$1({vcs})
|
|
135
|
-
]);
|
|
136
|
-
|
|
137
|
-
return deepmerge.all([reportingResults, badgeResults]);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
async function remover ({projectRoot}) {
|
|
141
|
-
if (await githubWorkflowExists({projectRoot})) {
|
|
142
|
-
await removeAction({projectRoot});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return {};
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export { lift, remover as remove, scaffold$2 as scaffold };
|
|
149
|
-
//# sourceMappingURL=index.mjs.map
|
package/lib/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/scaffolder.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/reporter/ci-providers/github-workflows/codecov-action.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/ci-providers/github-workflows/remover.js","../src/reporter/ci-providers/github-workflows/predicate.js","../src/reporter/lifter.js","../src/lifter.js","../src/remover.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from '../../thirdparty-wrappers/got.js';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher.js';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","function stepIsCodecovAction(step) {\n if (!step.uses) return false;\n\n const [actionName] = step.uses.split('@');\n\n return 'codecov/codecov-action' === actionName;\n}\n\nexport function findCodecovActionIn(steps) {\n return steps.find(step => stepIsCodecovAction(step));\n}\n\nexport function removeCodecovActionFrom(steps) {\n return steps.filter(step => !stepIsCodecovAction(step));\n}\n\nexport function scaffold() {\n return {uses: 'codecov/codecov-action@v5.4.0'};\n}\n","import {loadWorkflowFile, writeWorkflowFile} from '@form8ion/github-workflows-core';\n\nimport {findCodecovActionIn, scaffold as scaffoldCodecov} from './codecov-action.js';\n\nexport async function lift({projectRoot}) {\n const ciWorkflowName = 'node-ci';\n\n const workflowDetails = await loadWorkflowFile({projectRoot, name: ciWorkflowName});\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!findCodecovActionIn(steps)) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await writeWorkflowFile({\n projectRoot,\n name: ciWorkflowName,\n config: {\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, scaffoldCodecov()]\n }\n }\n }\n });\n }\n}\n","import {loadWorkflowFile, writeWorkflowFile} from '@form8ion/github-workflows-core';\nimport {removeCodecovActionFrom} from './codecov-action.js';\n\nexport default async function ({projectRoot}) {\n const existingConfig = await loadWorkflowFile({projectRoot, name: 'node-ci'});\n existingConfig.jobs.verify.steps = removeCodecovActionFrom(existingConfig.jobs.verify.steps);\n\n await writeWorkflowFile({projectRoot, name: 'node-ci', config: existingConfig});\n}\n","import {workflowFileExists} from '@form8ion/github-workflows-core';\n\nexport default function ({projectRoot}) {\n return workflowFileExists({projectRoot, name: 'node-ci'});\n}\n","import {promises as fs} from 'node:fs';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport execa from '../../thirdparty-wrappers/execa.js';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers/index.js';\n\nexport default async function ({projectRoot, packageManager}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([\n ciProviderIsLiftable({projectRoot}),\n fs.readFile(pathToPackageJson, 'utf-8')\n ]);\n const parsedPackageContents = JSON.parse(existingPackageContents);\n const {scripts} = parsedPackageContents;\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n parsedPackageContents.scripts = otherScripts;\n await writePackageJson({projectRoot, config: parsedPackageContents});\n\n await execa(packageManager, ['remove', 'codecov']);\n\n return {\n ...!ciProviderCanBeLifted && {\n nextSteps: [{\n summary: 'Configure modern reporting to Codecov on your CI service',\n description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'\n + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'\n }]\n }\n };\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldBadge} from './badge/index.js';\nimport {lift as liftReporting} from './reporter/index.js';\n\nexport async function lift({projectRoot, packageManager, vcs}) {\n const [reportingResults, badgeResults] = await Promise.all([\n liftReporting({projectRoot, packageManager}),\n scaffoldBadge({vcs})\n ]);\n\n return deepmerge.all([reportingResults, badgeResults]);\n}\n","import {remove as removeAction, test as githubWorkflowExists} from './reporter/ci-providers/github-workflows/index.js';\n\nexport default async function ({projectRoot}) {\n if (await githubWorkflowExists({projectRoot})) {\n await removeAction({projectRoot});\n }\n\n return {};\n}\n"],"names":["scaffold","lift","scaffoldCodecov","ciProviderIsLiftable","fs","liftCiProvider","scaffoldBadge"],"mappings":";;;;;;;AAAO,eAAeA,UAAQ,GAAG;AACjC,EAAE,OAAO,EAAE;AACX;;ACAe,qCAAc,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE;AACtD,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG;AAClC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxD,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,YAAY,EAAE,MAAM;AACnE,GAAG;;AAEH,EAAE,OAAO,IAAI;AACb;;ACPO,eAAeA,UAAQ,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE;AACtD,EAAE,OAAO;AACT,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI;AAChE,MAAM,MAAM,EAAE;AACd,QAAQ,MAAM,EAAE;AAChB,UAAU,QAAQ,EAAE;AACpB,YAAY,GAAG,EAAE,CAAC,iCAAiC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa;AACpG,cAAc;AACd,kBAAkB,CAAC,OAAO,EAAE,CAAC,MAAM,sBAAsB,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC;AAC9F,kBAAkB;AAClB,aAAa,CAAC;AACd,YAAY,IAAI,EAAE,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,YAAY,IAAI,EAAE;AAClB;AACA;AACA;AACA;AACA,GAAG;AACH;;ACpBA,SAAS,mBAAmB,CAAC,IAAI,EAAE;AACnC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;;AAE9B,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAE3C,EAAE,OAAO,wBAAwB,KAAK,UAAU;AAChD;;AAEO,SAAS,mBAAmB,CAAC,KAAK,EAAE;AAC3C,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACtD;;AAEO,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACzD;;AAEO,SAAS,QAAQ,GAAG;AAC3B,EAAE,OAAO,CAAC,IAAI,EAAE,+BAA+B,CAAC;AAChD;;ACdO,eAAeC,MAAI,CAAC,CAAC,WAAW,CAAC,EAAE;AAC1C,EAAE,MAAM,cAAc,GAAG,SAAS;;AAElC,EAAE,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACrF,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe;;AAEnD,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACnC,IAAI,MAAM,+BAA+B,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,yBAAyB,KAAK,GAAG,CAAC;;AAEtG,IAAI,MAAM,iBAAiB,CAAC;AAC5B,MAAM,WAAW;AACjB,MAAM,IAAI,EAAE,cAAc;AAC1B,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,eAAe;AAC1B,QAAQ,IAAI,EAAE;AACd,UAAU,GAAG,eAAe,CAAC,IAAI;AACjC,UAAU,MAAM,EAAE;AAClB,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM;AAC1C,YAAY,KAAK,EAAE,CAAC,GAAG,+BAA+B,EAAEC,QAAe,EAAE;AACzE;AACA;AACA;AACA,KAAK,CAAC;AACN;AACA;;ACzBe,2BAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/E,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAE9F,EAAE,MAAM,iBAAiB,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACjF;;ACNe,6BAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;AACxC,EAAE,OAAO,kBAAkB,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D;;ACEe,4BAAc,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE;AAC9D,EAAE,MAAM,iBAAiB,GAAG,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC;;AAEzD,EAAE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC7E,IAAIC,oBAAoB,CAAC,CAAC,WAAW,CAAC,CAAC;AACvC,IAAIC,QAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO;AAC1C,GAAG,CAAC;AACJ,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACnE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,qBAAqB;AACzC,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,GAAG,YAAY,CAAC,GAAG,OAAO;;AAE5E,EAAE,IAAI,qBAAqB,EAAE,MAAMC,MAAc,CAAC,CAAC,WAAW,CAAC,CAAC;;AAEhE,EAAE,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAClC,IAAI,qBAAqB,CAAC,OAAO,GAAG,YAAY;AAChD,IAAI,MAAM,gBAAgB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;;AAExE,IAAI,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;;AAEtD,IAAI,OAAO;AACX,MAAM,GAAG,CAAC,qBAAqB,IAAI;AACnC,QAAQ,SAAS,EAAE,CAAC;AACpB,UAAU,OAAO,EAAE,0DAA0D;AAC7E,UAAU,WAAW,EAAE;AACvB,cAAc;AACd,SAAS;AACT;AACA,KAAK;AACL;;AAEA,EAAE,OAAO,EAAE;AACX;;AChCO,eAAe,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE;AAC/D,EAAE,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC7D,IAAI,aAAa,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAChD,IAAIC,UAAa,CAAC,CAAC,GAAG,CAAC;AACvB,GAAG,CAAC;;AAEJ,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACxD;;ACVe,sBAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,IAAI,MAAM,oBAAoB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AACjD,IAAI,MAAM,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;AACrC;;AAEA,EAAE,OAAO,EAAE;AACX;;;;"}
|