@form8ion/codecov 5.0.0-beta.1 → 5.0.0-beta.3

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/example.js CHANGED
@@ -4,7 +4,7 @@ import stubbedFs from 'mock-fs';
4
4
  import nock from 'nock';
5
5
  import {StatusCodes} from 'http-status-codes';
6
6
  import {packageManagers} from '@form8ion/javascript-core';
7
- import {scaffold, lift} from './lib/index.cjs';
7
+ import {scaffold, lift} from './lib/index';
8
8
 
9
9
  // remark-usage-ignore-next 5
10
10
  stubbedFs({'package.json': JSON.stringify({scripts: {}})});
package/lib/index.js ADDED
@@ -0,0 +1,120 @@
1
+ 'use strict';
2
+
3
+ var deepmerge = require('deepmerge');
4
+ var fs = require('fs');
5
+ var execa = require('execa');
6
+ var jsYaml = require('js-yaml');
7
+ var core = require('@form8ion/core');
8
+ var got = require('got');
9
+
10
+ async function scaffold$1() {
11
+ return {};
12
+ }
13
+
14
+ async function fetchRepositoryDetails ({vcs, apiAccessToken}) {
15
+ const {body: {repo}} = await got(
16
+ `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,
17
+ {headers: {Authorization: apiAccessToken}, responseType: 'json'}
18
+ );
19
+
20
+ return repo;
21
+ }
22
+
23
+ async function scaffold({vcs, apiAccessToken}) {
24
+ return {
25
+ ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {
26
+ badges: {
27
+ status: {
28
+ coverage: {
29
+ img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${
30
+ apiAccessToken
31
+ ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`
32
+ : ''
33
+ }`,
34
+ link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,
35
+ text: 'Codecov'
36
+ }
37
+ }
38
+ }
39
+ }
40
+ };
41
+ }
42
+
43
+ function getPathToWorkflowFile(projectRoot) {
44
+ return `${projectRoot}/.github/workflows/node-ci.yml`;
45
+ }
46
+
47
+ function test({projectRoot}) {
48
+ return core.fileExists(getPathToWorkflowFile(projectRoot));
49
+ }
50
+
51
+ async function lift$1({projectRoot}) {
52
+ const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
53
+
54
+ const workflowDetails = jsYaml.load(await fs.promises.readFile(pathToWorkflowFile, 'utf-8'));
55
+ const {jobs: {verify: {steps}}} = workflowDetails;
56
+
57
+ if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {
58
+ const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);
59
+
60
+ await fs.promises.writeFile(
61
+ pathToWorkflowFile,
62
+ jsYaml.dump({
63
+ ...workflowDetails,
64
+ jobs: {
65
+ ...workflowDetails.jobs,
66
+ verify: {
67
+ ...workflowDetails.jobs.verify,
68
+ steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v3'}]
69
+ }
70
+ }
71
+ })
72
+ );
73
+ }
74
+ }
75
+
76
+ async function liftReporting ({projectRoot, packageManager}) {
77
+ const pathToPackageJson = `${projectRoot}/package.json`;
78
+
79
+ const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([
80
+ test({projectRoot}),
81
+ fs.promises.readFile(pathToPackageJson, 'utf-8')
82
+ ]);
83
+ const parsedPackageContents = JSON.parse(existingPackageContents);
84
+ const {scripts} = parsedPackageContents;
85
+ const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;
86
+
87
+ if (ciProviderCanBeLifted) await lift$1({projectRoot});
88
+
89
+ if (scripts['coverage:report']) {
90
+ parsedPackageContents.scripts = otherScripts;
91
+ await fs.promises.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));
92
+
93
+ await execa(packageManager, ['remove', 'codecov']);
94
+
95
+ return {
96
+ ...!ciProviderCanBeLifted && {
97
+ nextSteps: [{
98
+ summary: 'Configure modern reporting to Codecov on your CI service',
99
+ description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'
100
+ + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
101
+ }]
102
+ }
103
+ };
104
+ }
105
+
106
+ return {};
107
+ }
108
+
109
+ async function lift({projectRoot, packageManager, vcs}) {
110
+ const [reportingResults, badgeResults] = await Promise.all([
111
+ liftReporting({projectRoot, packageManager}),
112
+ scaffold({vcs})
113
+ ]);
114
+
115
+ return deepmerge.all([reportingResults, badgeResults]);
116
+ }
117
+
118
+ exports.lift = lift;
119
+ exports.scaffold = scaffold$1;
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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/lifter.js","../src/reporter/lifter.js","../src/lifter.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from '../../thirdparty-wrappers/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';\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","import {promises as fs} from 'fs';\nimport {dump, load} from 'js-yaml';\nimport {fileExists} from '@form8ion/core';\n\nfunction getPathToWorkflowFile(projectRoot) {\n return `${projectRoot}/.github/workflows/node-ci.yml`;\n}\n\nexport function test({projectRoot}) {\n return fileExists(getPathToWorkflowFile(projectRoot));\n}\n\nexport async function lift({projectRoot}) {\n const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);\n\n const workflowDetails = load(await fs.readFile(pathToWorkflowFile, 'utf-8'));\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await fs.writeFile(\n pathToWorkflowFile,\n dump({\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v3'}]\n }\n }\n })\n );\n }\n}\n","import {promises as fs} from 'fs';\n\nimport execa from '../../thirdparty-wrappers/execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers';\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 fs.writeFile(pathToPackageJson, JSON.stringify(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';\nimport {lift as liftReporting} from './reporter';\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"],"names":["scaffold","fileExists","lift","load","fs","dump","ciProviderIsLiftable","liftCiProvider","scaffoldBadge"],"mappings":"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"}
package/lib/index.mjs ADDED
@@ -0,0 +1,117 @@
1
+ import deepmerge from 'deepmerge';
2
+ import { promises } from 'fs';
3
+ import execa from 'execa';
4
+ import { load, dump } from 'js-yaml';
5
+ import { fileExists } from '@form8ion/core';
6
+ import got from 'got';
7
+
8
+ async function scaffold$1() {
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({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 getPathToWorkflowFile(projectRoot) {
42
+ return `${projectRoot}/.github/workflows/node-ci.yml`;
43
+ }
44
+
45
+ function test({projectRoot}) {
46
+ return fileExists(getPathToWorkflowFile(projectRoot));
47
+ }
48
+
49
+ async function lift$1({projectRoot}) {
50
+ const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
51
+
52
+ const workflowDetails = load(await promises.readFile(pathToWorkflowFile, 'utf-8'));
53
+ const {jobs: {verify: {steps}}} = workflowDetails;
54
+
55
+ if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {
56
+ const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);
57
+
58
+ await promises.writeFile(
59
+ pathToWorkflowFile,
60
+ dump({
61
+ ...workflowDetails,
62
+ jobs: {
63
+ ...workflowDetails.jobs,
64
+ verify: {
65
+ ...workflowDetails.jobs.verify,
66
+ steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v3'}]
67
+ }
68
+ }
69
+ })
70
+ );
71
+ }
72
+ }
73
+
74
+ async function liftReporting ({projectRoot, packageManager}) {
75
+ const pathToPackageJson = `${projectRoot}/package.json`;
76
+
77
+ const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([
78
+ test({projectRoot}),
79
+ promises.readFile(pathToPackageJson, 'utf-8')
80
+ ]);
81
+ const parsedPackageContents = JSON.parse(existingPackageContents);
82
+ const {scripts} = parsedPackageContents;
83
+ const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;
84
+
85
+ if (ciProviderCanBeLifted) await lift$1({projectRoot});
86
+
87
+ if (scripts['coverage:report']) {
88
+ parsedPackageContents.scripts = otherScripts;
89
+ await promises.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));
90
+
91
+ await execa(packageManager, ['remove', 'codecov']);
92
+
93
+ return {
94
+ ...!ciProviderCanBeLifted && {
95
+ nextSteps: [{
96
+ summary: 'Configure modern reporting to Codecov on your CI service',
97
+ description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'
98
+ + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
99
+ }]
100
+ }
101
+ };
102
+ }
103
+
104
+ return {};
105
+ }
106
+
107
+ async function lift({projectRoot, packageManager, vcs}) {
108
+ const [reportingResults, badgeResults] = await Promise.all([
109
+ liftReporting({projectRoot, packageManager}),
110
+ scaffold({vcs})
111
+ ]);
112
+
113
+ return deepmerge.all([reportingResults, badgeResults]);
114
+ }
115
+
116
+ export { lift, scaffold$1 as scaffold };
117
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
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/lifter.js","../src/reporter/lifter.js","../src/lifter.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from '../../thirdparty-wrappers/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';\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","import {promises as fs} from 'fs';\nimport {dump, load} from 'js-yaml';\nimport {fileExists} from '@form8ion/core';\n\nfunction getPathToWorkflowFile(projectRoot) {\n return `${projectRoot}/.github/workflows/node-ci.yml`;\n}\n\nexport function test({projectRoot}) {\n return fileExists(getPathToWorkflowFile(projectRoot));\n}\n\nexport async function lift({projectRoot}) {\n const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);\n\n const workflowDetails = load(await fs.readFile(pathToWorkflowFile, 'utf-8'));\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await fs.writeFile(\n pathToWorkflowFile,\n dump({\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v3'}]\n }\n }\n })\n );\n }\n}\n","import {promises as fs} from 'fs';\n\nimport execa from '../../thirdparty-wrappers/execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers';\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 fs.writeFile(pathToPackageJson, JSON.stringify(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';\nimport {lift as liftReporting} from './reporter';\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"],"names":["scaffold","lift","fs","ciProviderIsLiftable","liftCiProvider","scaffoldBadge"],"mappings":"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"}
package/package.json CHANGED
@@ -2,19 +2,24 @@
2
2
  "name": "@form8ion/codecov",
3
3
  "description": "code coverage service plugin for form8ion",
4
4
  "license": "MIT",
5
- "version": "5.0.0-beta.1",
5
+ "version": "5.0.0-beta.3",
6
6
  "engines": {
7
- "node": ">=16"
7
+ "node": "^16.14 || >=18"
8
8
  },
9
9
  "author": "Matt Travi <npm@travi.org> (https://matt.travi.org)",
10
10
  "repository": "form8ion/codecov",
11
11
  "bugs": "https://github.com/form8ion/codecov/issues",
12
12
  "homepage": "https://npm.im/@form8ion/codecov",
13
13
  "runkitExampleFilename": "./example.js",
14
- "main": "lib/index.cjs.js",
15
- "module": "lib/index.es.js",
14
+ "main": "./lib/index.js",
15
+ "module": "./lib/index.mjs",
16
+ "exports": {
17
+ "require": "./lib/index.js",
18
+ "import": "./lib/index.mjs"
19
+ },
16
20
  "sideEffects": false,
17
21
  "scripts": {
22
+ "pretest": "run-s build",
18
23
  "test": "npm-run-all --print-label build --parallel lint:* --parallel test:*",
19
24
  "lint:lockfile": "lockfile-lint",
20
25
  "lint:js": "eslint . --cache",
@@ -34,7 +39,7 @@
34
39
  "test:unit:base": "DEBUG=any mocha 'src/**/*-test.js'",
35
40
  "lint:peer": "npm ls >/dev/null",
36
41
  "lint:gherkin": "gherkin-lint",
37
- "pretest:integration": "preview",
42
+ "pretest:integration": "run-s build",
38
43
  "test:integration": "run-s 'test:integration:base -- --profile noWip'",
39
44
  "test:integration:base": "NODE_OPTIONS=--enable-source-maps DEBUG=any cucumber-js test/integration --profile base",
40
45
  "test:integration:debug": "DEBUG=test run-s test:integration",
@@ -42,7 +47,7 @@
42
47
  "test:integration:wip:debug": "DEBUG=test run-s 'test:integration:wip'",
43
48
  "test:integration:focus": "run-s 'test:integration:base -- --profile focus'",
44
49
  "lint:engines": "ls-engines",
45
- "lint:publish": "publint"
50
+ "lint:publish": "publint --strict"
46
51
  },
47
52
  "files": [
48
53
  "example.js",
@@ -53,7 +58,7 @@
53
58
  "provenance": true
54
59
  },
55
60
  "dependencies": {
56
- "@form8ion/core": "^2.0.0",
61
+ "@form8ion/core": "^3.2.0",
57
62
  "deepmerge": "^4.3.1",
58
63
  "execa": "^5.1.1",
59
64
  "got": "^11.8.5",
@@ -69,7 +74,6 @@
69
74
  "@form8ion/eslint-config-mocha": "3.0.0",
70
75
  "@form8ion/javascript-core": "10.0.1",
71
76
  "@form8ion/remark-lint-preset": "6.0.0",
72
- "@rollup/plugin-babel": "6.0.3",
73
77
  "@rollup/plugin-node-resolve": "15.1.0",
74
78
  "@travi/any": "2.1.8",
75
79
  "ban-sensitive-files": "1.9.19",
@@ -86,7 +90,6 @@
86
90
  "mock-fs": "5.2.0",
87
91
  "nock": "13.3.2",
88
92
  "npm-run-all": "4.1.5",
89
- "package-preview": "4.0.0",
90
93
  "publint": "0.2.0",
91
94
  "remark-cli": "11.0.0",
92
95
  "remark-toc": "8.0.1",
@@ -95,6 +98,6 @@
95
98
  "rollup": "3.27.2",
96
99
  "rollup-plugin-auto-external": "2.0.0",
97
100
  "sinon": "15.2.0",
98
- "testdouble": "3.16.7"
101
+ "testdouble": "3.18.0"
99
102
  }
100
103
  }
package/lib/index.cjs.js DELETED
@@ -1,214 +0,0 @@
1
- 'use strict';
2
-
3
- var deepmerge = require('deepmerge');
4
- var fs = require('fs');
5
- var execa = require('execa');
6
- var jsYaml = require('js-yaml');
7
- var core = require('@form8ion/core');
8
- var got = require('got');
9
-
10
- async function scaffold$1() {
11
- return {};
12
- }
13
-
14
- function ownKeys(object, enumerableOnly) {
15
- var keys = Object.keys(object);
16
- if (Object.getOwnPropertySymbols) {
17
- var symbols = Object.getOwnPropertySymbols(object);
18
- enumerableOnly && (symbols = symbols.filter(function (sym) {
19
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
20
- })), keys.push.apply(keys, symbols);
21
- }
22
- return keys;
23
- }
24
- function _objectSpread2(target) {
25
- for (var i = 1; i < arguments.length; i++) {
26
- var source = null != arguments[i] ? arguments[i] : {};
27
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
28
- _defineProperty(target, key, source[key]);
29
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
30
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
31
- });
32
- }
33
- return target;
34
- }
35
- function _defineProperty(obj, key, value) {
36
- key = _toPropertyKey(key);
37
- if (key in obj) {
38
- Object.defineProperty(obj, key, {
39
- value: value,
40
- enumerable: true,
41
- configurable: true,
42
- writable: true
43
- });
44
- } else {
45
- obj[key] = value;
46
- }
47
- return obj;
48
- }
49
- function _objectWithoutPropertiesLoose(source, excluded) {
50
- if (source == null) return {};
51
- var target = {};
52
- var sourceKeys = Object.keys(source);
53
- var key, i;
54
- for (i = 0; i < sourceKeys.length; i++) {
55
- key = sourceKeys[i];
56
- if (excluded.indexOf(key) >= 0) continue;
57
- target[key] = source[key];
58
- }
59
- return target;
60
- }
61
- function _objectWithoutProperties(source, excluded) {
62
- if (source == null) return {};
63
- var target = _objectWithoutPropertiesLoose(source, excluded);
64
- var key, i;
65
- if (Object.getOwnPropertySymbols) {
66
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
67
- for (i = 0; i < sourceSymbolKeys.length; i++) {
68
- key = sourceSymbolKeys[i];
69
- if (excluded.indexOf(key) >= 0) continue;
70
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
71
- target[key] = source[key];
72
- }
73
- }
74
- return target;
75
- }
76
- function _toPrimitive(input, hint) {
77
- if (typeof input !== "object" || input === null) return input;
78
- var prim = input[Symbol.toPrimitive];
79
- if (prim !== undefined) {
80
- var res = prim.call(input, hint || "default");
81
- if (typeof res !== "object") return res;
82
- throw new TypeError("@@toPrimitive must return a primitive value.");
83
- }
84
- return (hint === "string" ? String : Number)(input);
85
- }
86
- function _toPropertyKey(arg) {
87
- var key = _toPrimitive(arg, "string");
88
- return typeof key === "symbol" ? key : String(key);
89
- }
90
-
91
- async function fetchRepositoryDetails ({
92
- vcs,
93
- apiAccessToken
94
- }) {
95
- const {
96
- body: {
97
- repo
98
- }
99
- } = await got(`https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`, {
100
- headers: {
101
- Authorization: apiAccessToken
102
- },
103
- responseType: 'json'
104
- });
105
- return repo;
106
- }
107
-
108
- async function scaffold({
109
- vcs,
110
- apiAccessToken
111
- }) {
112
- return _objectSpread2({}, ['github', 'gitlab', 'bitbucket'].includes(vcs === null || vcs === void 0 ? void 0 : vcs.host) && {
113
- badges: {
114
- status: {
115
- coverage: {
116
- img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${apiAccessToken ? `&token=${(await fetchRepositoryDetails({
117
- vcs,
118
- apiAccessToken
119
- })).image_token}` : ''}`,
120
- link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,
121
- text: 'Codecov'
122
- }
123
- }
124
- }
125
- });
126
- }
127
-
128
- function getPathToWorkflowFile(projectRoot) {
129
- return `${projectRoot}/.github/workflows/node-ci.yml`;
130
- }
131
- function test({
132
- projectRoot
133
- }) {
134
- return core.fileExists(getPathToWorkflowFile(projectRoot));
135
- }
136
- async function lift$1({
137
- projectRoot
138
- }) {
139
- const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
140
- const workflowDetails = jsYaml.load(await fs.promises.readFile(pathToWorkflowFile, 'utf-8'));
141
- const {
142
- jobs: {
143
- verify: {
144
- steps
145
- }
146
- }
147
- } = workflowDetails;
148
- if (!steps.find(step => {
149
- var _step$uses;
150
- return (_step$uses = step.uses) === null || _step$uses === void 0 ? void 0 : _step$uses.startsWith('codecov/codecov-action');
151
- })) {
152
- const stepsWithLegacyReportingRemoved = steps.filter(({
153
- run
154
- }) => 'npm run coverage:report' !== run);
155
- await fs.promises.writeFile(pathToWorkflowFile, jsYaml.dump(_objectSpread2(_objectSpread2({}, workflowDetails), {}, {
156
- jobs: _objectSpread2(_objectSpread2({}, workflowDetails.jobs), {}, {
157
- verify: _objectSpread2(_objectSpread2({}, workflowDetails.jobs.verify), {}, {
158
- steps: [...stepsWithLegacyReportingRemoved, {
159
- uses: 'codecov/codecov-action@v3'
160
- }]
161
- })
162
- })
163
- })));
164
- }
165
- }
166
-
167
- const _excluded = ["coverage:report"];
168
- async function liftReporting ({
169
- projectRoot,
170
- packageManager
171
- }) {
172
- const pathToPackageJson = `${projectRoot}/package.json`;
173
- const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([test({
174
- projectRoot
175
- }), fs.promises.readFile(pathToPackageJson, 'utf-8')]);
176
- const parsedPackageContents = JSON.parse(existingPackageContents);
177
- const {
178
- scripts
179
- } = parsedPackageContents;
180
- const otherScripts = _objectWithoutProperties(scripts, _excluded);
181
- if (ciProviderCanBeLifted) await lift$1({
182
- projectRoot
183
- });
184
- if (scripts['coverage:report']) {
185
- parsedPackageContents.scripts = otherScripts;
186
- await fs.promises.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));
187
- await execa(packageManager, ['remove', 'codecov']);
188
- return _objectSpread2({}, !ciProviderCanBeLifted && {
189
- nextSteps: [{
190
- summary: 'Configure modern reporting to Codecov on your CI service',
191
- description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately' + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
192
- }]
193
- });
194
- }
195
- return {};
196
- }
197
-
198
- async function lift({
199
- projectRoot,
200
- packageManager,
201
- vcs
202
- }) {
203
- const [reportingResults, badgeResults] = await Promise.all([liftReporting({
204
- projectRoot,
205
- packageManager
206
- }), scaffold({
207
- vcs
208
- })]);
209
- return deepmerge.all([reportingResults, badgeResults]);
210
- }
211
-
212
- exports.lift = lift;
213
- exports.scaffold = scaffold$1;
214
- //# sourceMappingURL=index.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/scaffolder.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/lifter.js","../src/lifter.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from '../../thirdparty-wrappers/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';\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","import {promises as fs} from 'fs';\nimport {dump, load} from 'js-yaml';\nimport {fileExists} from '@form8ion/core';\n\nfunction getPathToWorkflowFile(projectRoot) {\n return `${projectRoot}/.github/workflows/node-ci.yml`;\n}\n\nexport function test({projectRoot}) {\n return fileExists(getPathToWorkflowFile(projectRoot));\n}\n\nexport async function lift({projectRoot}) {\n const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);\n\n const workflowDetails = load(await fs.readFile(pathToWorkflowFile, 'utf-8'));\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await fs.writeFile(\n pathToWorkflowFile,\n dump({\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v3'}]\n }\n }\n })\n );\n }\n}\n","import {promises as fs} from 'fs';\n\nimport execa from '../../thirdparty-wrappers/execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers';\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 fs.writeFile(pathToPackageJson, JSON.stringify(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';\nimport {lift as liftReporting} from './reporter';\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"],"names":["scaffold","vcs","apiAccessToken","body","repo","got","owner","name","headers","Authorization","responseType","_objectSpread","includes","host","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","getPathToWorkflowFile","projectRoot","test","fileExists","lift","pathToWorkflowFile","workflowDetails","load","fs","readFile","jobs","verify","steps","find","step","_step$uses","uses","startsWith","stepsWithLegacyReportingRemoved","filter","run","writeFile","dump","packageManager","pathToPackageJson","ciProviderCanBeLifted","existingPackageContents","Promise","all","ciProviderIsLiftable","parsedPackageContents","JSON","parse","scripts","otherScripts","_objectWithoutProperties","_excluded","liftCiProvider","stringify","execa","nextSteps","summary","description","reportingResults","badgeResults","liftReporting","scaffoldBadge","deepmerge"],"mappings":"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"}
package/lib/index.es.js DELETED
@@ -1,211 +0,0 @@
1
- import deepmerge from 'deepmerge';
2
- import { promises } from 'fs';
3
- import execa from 'execa';
4
- import { load, dump } from 'js-yaml';
5
- import { fileExists } from '@form8ion/core';
6
- import got from 'got';
7
-
8
- async function scaffold$1() {
9
- return {};
10
- }
11
-
12
- function ownKeys(object, enumerableOnly) {
13
- var keys = Object.keys(object);
14
- if (Object.getOwnPropertySymbols) {
15
- var symbols = Object.getOwnPropertySymbols(object);
16
- enumerableOnly && (symbols = symbols.filter(function (sym) {
17
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
18
- })), keys.push.apply(keys, symbols);
19
- }
20
- return keys;
21
- }
22
- function _objectSpread2(target) {
23
- for (var i = 1; i < arguments.length; i++) {
24
- var source = null != arguments[i] ? arguments[i] : {};
25
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
26
- _defineProperty(target, key, source[key]);
27
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
28
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
29
- });
30
- }
31
- return target;
32
- }
33
- function _defineProperty(obj, key, value) {
34
- key = _toPropertyKey(key);
35
- if (key in obj) {
36
- Object.defineProperty(obj, key, {
37
- value: value,
38
- enumerable: true,
39
- configurable: true,
40
- writable: true
41
- });
42
- } else {
43
- obj[key] = value;
44
- }
45
- return obj;
46
- }
47
- function _objectWithoutPropertiesLoose(source, excluded) {
48
- if (source == null) return {};
49
- var target = {};
50
- var sourceKeys = Object.keys(source);
51
- var key, i;
52
- for (i = 0; i < sourceKeys.length; i++) {
53
- key = sourceKeys[i];
54
- if (excluded.indexOf(key) >= 0) continue;
55
- target[key] = source[key];
56
- }
57
- return target;
58
- }
59
- function _objectWithoutProperties(source, excluded) {
60
- if (source == null) return {};
61
- var target = _objectWithoutPropertiesLoose(source, excluded);
62
- var key, i;
63
- if (Object.getOwnPropertySymbols) {
64
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
65
- for (i = 0; i < sourceSymbolKeys.length; i++) {
66
- key = sourceSymbolKeys[i];
67
- if (excluded.indexOf(key) >= 0) continue;
68
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
69
- target[key] = source[key];
70
- }
71
- }
72
- return target;
73
- }
74
- function _toPrimitive(input, hint) {
75
- if (typeof input !== "object" || input === null) return input;
76
- var prim = input[Symbol.toPrimitive];
77
- if (prim !== undefined) {
78
- var res = prim.call(input, hint || "default");
79
- if (typeof res !== "object") return res;
80
- throw new TypeError("@@toPrimitive must return a primitive value.");
81
- }
82
- return (hint === "string" ? String : Number)(input);
83
- }
84
- function _toPropertyKey(arg) {
85
- var key = _toPrimitive(arg, "string");
86
- return typeof key === "symbol" ? key : String(key);
87
- }
88
-
89
- async function fetchRepositoryDetails ({
90
- vcs,
91
- apiAccessToken
92
- }) {
93
- const {
94
- body: {
95
- repo
96
- }
97
- } = await got(`https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`, {
98
- headers: {
99
- Authorization: apiAccessToken
100
- },
101
- responseType: 'json'
102
- });
103
- return repo;
104
- }
105
-
106
- async function scaffold({
107
- vcs,
108
- apiAccessToken
109
- }) {
110
- return _objectSpread2({}, ['github', 'gitlab', 'bitbucket'].includes(vcs === null || vcs === void 0 ? void 0 : vcs.host) && {
111
- badges: {
112
- status: {
113
- coverage: {
114
- img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${apiAccessToken ? `&token=${(await fetchRepositoryDetails({
115
- vcs,
116
- apiAccessToken
117
- })).image_token}` : ''}`,
118
- link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,
119
- text: 'Codecov'
120
- }
121
- }
122
- }
123
- });
124
- }
125
-
126
- function getPathToWorkflowFile(projectRoot) {
127
- return `${projectRoot}/.github/workflows/node-ci.yml`;
128
- }
129
- function test({
130
- projectRoot
131
- }) {
132
- return fileExists(getPathToWorkflowFile(projectRoot));
133
- }
134
- async function lift$1({
135
- projectRoot
136
- }) {
137
- const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
138
- const workflowDetails = load(await promises.readFile(pathToWorkflowFile, 'utf-8'));
139
- const {
140
- jobs: {
141
- verify: {
142
- steps
143
- }
144
- }
145
- } = workflowDetails;
146
- if (!steps.find(step => {
147
- var _step$uses;
148
- return (_step$uses = step.uses) === null || _step$uses === void 0 ? void 0 : _step$uses.startsWith('codecov/codecov-action');
149
- })) {
150
- const stepsWithLegacyReportingRemoved = steps.filter(({
151
- run
152
- }) => 'npm run coverage:report' !== run);
153
- await promises.writeFile(pathToWorkflowFile, dump(_objectSpread2(_objectSpread2({}, workflowDetails), {}, {
154
- jobs: _objectSpread2(_objectSpread2({}, workflowDetails.jobs), {}, {
155
- verify: _objectSpread2(_objectSpread2({}, workflowDetails.jobs.verify), {}, {
156
- steps: [...stepsWithLegacyReportingRemoved, {
157
- uses: 'codecov/codecov-action@v3'
158
- }]
159
- })
160
- })
161
- })));
162
- }
163
- }
164
-
165
- const _excluded = ["coverage:report"];
166
- async function liftReporting ({
167
- projectRoot,
168
- packageManager
169
- }) {
170
- const pathToPackageJson = `${projectRoot}/package.json`;
171
- const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([test({
172
- projectRoot
173
- }), promises.readFile(pathToPackageJson, 'utf-8')]);
174
- const parsedPackageContents = JSON.parse(existingPackageContents);
175
- const {
176
- scripts
177
- } = parsedPackageContents;
178
- const otherScripts = _objectWithoutProperties(scripts, _excluded);
179
- if (ciProviderCanBeLifted) await lift$1({
180
- projectRoot
181
- });
182
- if (scripts['coverage:report']) {
183
- parsedPackageContents.scripts = otherScripts;
184
- await promises.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));
185
- await execa(packageManager, ['remove', 'codecov']);
186
- return _objectSpread2({}, !ciProviderCanBeLifted && {
187
- nextSteps: [{
188
- summary: 'Configure modern reporting to Codecov on your CI service',
189
- description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately' + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
190
- }]
191
- });
192
- }
193
- return {};
194
- }
195
-
196
- async function lift({
197
- projectRoot,
198
- packageManager,
199
- vcs
200
- }) {
201
- const [reportingResults, badgeResults] = await Promise.all([liftReporting({
202
- projectRoot,
203
- packageManager
204
- }), scaffold({
205
- vcs
206
- })]);
207
- return deepmerge.all([reportingResults, badgeResults]);
208
- }
209
-
210
- export { lift, scaffold$1 as scaffold };
211
- //# sourceMappingURL=index.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/scaffolder.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/lifter.js","../src/lifter.js"],"sourcesContent":["export async function scaffold() {\n return {};\n}\n","import got from '../../thirdparty-wrappers/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';\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","import {promises as fs} from 'fs';\nimport {dump, load} from 'js-yaml';\nimport {fileExists} from '@form8ion/core';\n\nfunction getPathToWorkflowFile(projectRoot) {\n return `${projectRoot}/.github/workflows/node-ci.yml`;\n}\n\nexport function test({projectRoot}) {\n return fileExists(getPathToWorkflowFile(projectRoot));\n}\n\nexport async function lift({projectRoot}) {\n const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);\n\n const workflowDetails = load(await fs.readFile(pathToWorkflowFile, 'utf-8'));\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await fs.writeFile(\n pathToWorkflowFile,\n dump({\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v3'}]\n }\n }\n })\n );\n }\n}\n","import {promises as fs} from 'fs';\n\nimport execa from '../../thirdparty-wrappers/execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers';\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 fs.writeFile(pathToPackageJson, JSON.stringify(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';\nimport {lift as liftReporting} from './reporter';\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"],"names":["scaffold","vcs","apiAccessToken","body","repo","got","owner","name","headers","Authorization","responseType","_objectSpread","includes","host","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","getPathToWorkflowFile","projectRoot","test","fileExists","lift","pathToWorkflowFile","workflowDetails","load","fs","readFile","jobs","verify","steps","find","step","_step$uses","uses","startsWith","stepsWithLegacyReportingRemoved","filter","run","writeFile","dump","packageManager","pathToPackageJson","ciProviderCanBeLifted","existingPackageContents","Promise","all","ciProviderIsLiftable","parsedPackageContents","JSON","parse","scripts","otherScripts","_objectWithoutProperties","_excluded","liftCiProvider","stringify","execa","nextSteps","summary","description","reportingResults","badgeResults","liftReporting","scaffoldBadge","deepmerge"],"mappings":"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"}