npm-update-package 0.49.1 → 0.52.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/README.md +40 -4
- package/dist/package.json +2 -2
- package/dist/src/core/OutdatedPackageProcessor.js +2 -1
- package/dist/src/github/label/creator/LabelCreator.js +1 -0
- package/dist/src/github/pull-request/creator/PullRequestBodyCreator.js +23 -96
- package/dist/src/github/pull-request/creator/createFooter.js +11 -0
- package/dist/src/github/pull-request/creator/createMetadataSection.js +25 -0
- package/dist/src/github/pull-request/creator/createNotesSection.js +9 -0
- package/dist/src/github/pull-request/creator/createOutdatedPackagesTable.js +17 -0
- package/dist/src/github/pull-request/creator/createPackageDiffsSection.js +22 -0
- package/dist/src/github/pull-request/creator/createReleaseNotesSection.js +14 -0
- package/dist/src/github/releases/fetcher/ReleasesFetcher.js +12 -8
- package/dist/src/main.js +6 -3
- package/dist/src/ncu/Ncu.js +1 -1
- package/dist/src/options/OptionType.js +2 -0
- package/dist/src/options/Options.js +2 -0
- package/dist/src/options/cliOptions.js +14 -0
- package/dist/src/options/createOptions.js +1 -1
- package/dist/src/options/parseBooleanOption.js +15 -0
- package/dist/src/options/parseNumberOption.js +12 -0
- package/dist/src/options/toCommanderOption.js +14 -2
- package/dist/src/terminal/Terminal.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -60,7 +60,43 @@ Commit message template.
|
|
|
60
60
|
```sh
|
|
61
61
|
npx npm-update-package \
|
|
62
62
|
--github-token $GITHUB_TOKEN \
|
|
63
|
-
--commit-message "chore(
|
|
63
|
+
--commit-message "chore({{{dependencyType}}}): {{{level}}} update {{{packageName}}} from {{{currentVersion}}} to v{{{newVersion}}}"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### `--fetch-release-notes`
|
|
67
|
+
|
|
68
|
+
Whether to fetch release notes.
|
|
69
|
+
|
|
70
|
+
|Name|Value|
|
|
71
|
+
|---|---|
|
|
72
|
+
|type|boolean|
|
|
73
|
+
|required|false|
|
|
74
|
+
|default|`true`|
|
|
75
|
+
|
|
76
|
+
#### Example
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
npx npm-update-package \
|
|
80
|
+
--github-token $GITHUB_TOKEN \
|
|
81
|
+
--fetch-release-notes false
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### `--fetch-sleep-time`
|
|
85
|
+
|
|
86
|
+
Sleep time between fetching (ms).
|
|
87
|
+
|
|
88
|
+
|Name|Value|
|
|
89
|
+
|---|---|
|
|
90
|
+
|type|number|
|
|
91
|
+
|required|false|
|
|
92
|
+
|default|`1000`|
|
|
93
|
+
|
|
94
|
+
#### Example
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
npx npm-update-package \
|
|
98
|
+
--github-token $GITHUB_TOKEN \
|
|
99
|
+
--fetch-sleep-time 2000
|
|
64
100
|
```
|
|
65
101
|
|
|
66
102
|
### `--github-token`
|
|
@@ -116,7 +152,7 @@ Log level to show.
|
|
|
116
152
|
```sh
|
|
117
153
|
npx npm-update-package \
|
|
118
154
|
--github-token $GITHUB_TOKEN \
|
|
119
|
-
--log-level
|
|
155
|
+
--log-level debug
|
|
120
156
|
```
|
|
121
157
|
|
|
122
158
|
### `--package-manager`
|
|
@@ -141,7 +177,7 @@ Package manager of your project.
|
|
|
141
177
|
```sh
|
|
142
178
|
npx npm-update-package \
|
|
143
179
|
--github-token $GITHUB_TOKEN \
|
|
144
|
-
--package-manager
|
|
180
|
+
--package-manager yarn
|
|
145
181
|
```
|
|
146
182
|
|
|
147
183
|
### `--pr-body-notes`
|
|
@@ -186,7 +222,7 @@ Pull request title template.
|
|
|
186
222
|
```sh
|
|
187
223
|
npx npm-update-package \
|
|
188
224
|
--github-token $GITHUB_TOKEN \
|
|
189
|
-
--pr-title "chore(
|
|
225
|
+
--pr-title "chore({{{dependencyType}}}): {{{level}}} update {{{packageName}}} from {{{currentVersion}}} to v{{{newVersion}}}"
|
|
190
226
|
```
|
|
191
227
|
|
|
192
228
|
### `--reviewers`
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "npm-update-package",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
4
4
|
"description": "CLI tool for creating pull requests to update npm packages",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc --project tsconfig.build.json",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@types/parse-github-url": "1.0.0",
|
|
42
42
|
"@types/semver": "7.3.9",
|
|
43
43
|
"@typescript-eslint/eslint-plugin": "5.16.0",
|
|
44
|
-
"eslint": "8.
|
|
44
|
+
"eslint": "8.12.0",
|
|
45
45
|
"eslint-config-standard-with-typescript": "21.0.1",
|
|
46
46
|
"eslint-plugin-import": "2.25.4",
|
|
47
47
|
"eslint-plugin-jest": "26.1.3",
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OutdatedPackageProcessor = void 0;
|
|
4
4
|
const Either_1 = require("fp-ts/lib/Either");
|
|
5
5
|
const git_1 = require("../git");
|
|
6
|
-
// TODO:
|
|
6
|
+
// TODO: Add test
|
|
7
|
+
// TODO: Split into multiple classes and functions
|
|
7
8
|
class OutdatedPackageProcessor {
|
|
8
9
|
constructor({ git, packageManager, pullRequestCreator, branchFinder, logger, commitMessageCreator, pullRequestFinder, pullRequestsCloser, packageUpdater }) {
|
|
9
10
|
this.git = git;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LabelCreator = void 0;
|
|
4
4
|
const errors_1 = require("../../errors");
|
|
5
|
+
// TODO: Split into multiple classes and functions
|
|
5
6
|
class LabelCreator {
|
|
6
7
|
constructor({ github, gitRepo, logger }) {
|
|
7
8
|
this.github = github;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.PullRequestBodyCreator = void 0;
|
|
7
|
-
const package_json_1 = __importDefault(require("../../../../package.json"));
|
|
8
4
|
const file_1 = require("../../../file");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
5
|
+
const package_json_1 = require("../../../package-json");
|
|
6
|
+
const createFooter_1 = require("./createFooter");
|
|
7
|
+
const createMetadataSection_1 = require("./createMetadataSection");
|
|
8
|
+
const createNotesSection_1 = require("./createNotesSection");
|
|
9
|
+
const createOutdatedPackagesTable_1 = require("./createOutdatedPackagesTable");
|
|
10
|
+
const createPackageDiffsSection_1 = require("./createPackageDiffsSection");
|
|
11
|
+
const createReleaseNotesSection_1 = require("./createReleaseNotesSection");
|
|
13
12
|
// TODO: Split into multiple classes and functions
|
|
14
13
|
class PullRequestBodyCreator {
|
|
15
14
|
constructor({ options, releasesFetcher }) {
|
|
@@ -18,112 +17,40 @@ class PullRequestBodyCreator {
|
|
|
18
17
|
}
|
|
19
18
|
async create(outdatedPackage) {
|
|
20
19
|
const sections = [];
|
|
21
|
-
const outdatedPackagesTable =
|
|
20
|
+
const outdatedPackagesTable = (0, createOutdatedPackagesTable_1.createOutdatedPackagesTable)(outdatedPackage);
|
|
22
21
|
sections.push(`This PR updates these packages:\n\n${outdatedPackagesTable}`);
|
|
23
22
|
const gitRepo = await this.extractRepository(outdatedPackage);
|
|
24
|
-
const diffSection =
|
|
23
|
+
const diffSection = (0, createPackageDiffsSection_1.createPackageDiffsSection)({
|
|
25
24
|
outdatedPackage,
|
|
26
25
|
gitRepo
|
|
27
26
|
});
|
|
28
27
|
sections.push(diffSection);
|
|
29
|
-
if ((gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
if (this.options.fetchReleaseNotes && (gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
|
|
29
|
+
const releases = await this.releasesFetcher.fetch({
|
|
30
|
+
gitRepo,
|
|
31
|
+
packageName: outdatedPackage.name,
|
|
32
|
+
from: outdatedPackage.currentVersion,
|
|
33
|
+
to: outdatedPackage.newVersion
|
|
33
34
|
});
|
|
34
|
-
if (
|
|
35
|
+
if (releases.length > 0) {
|
|
36
|
+
const releaseNotesSection = (0, createReleaseNotesSection_1.createReleaseNotesSection)(releases);
|
|
35
37
|
sections.push(releaseNotesSection);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
if (this.options.prBodyNotes !== undefined) {
|
|
41
|
+
const notesSection = (0, createNotesSection_1.createNotesSection)(this.options.prBodyNotes);
|
|
40
42
|
sections.push(notesSection);
|
|
41
43
|
}
|
|
42
|
-
const metadataSection =
|
|
44
|
+
const metadataSection = (0, createMetadataSection_1.createMetadataSection)(outdatedPackage);
|
|
43
45
|
sections.push(`---\n${metadataSection}`);
|
|
44
|
-
const footer =
|
|
46
|
+
const footer = (0, createFooter_1.createFooter)();
|
|
45
47
|
sections.push(`---\n${footer}`);
|
|
46
48
|
return sections.join('\n\n');
|
|
47
49
|
}
|
|
48
|
-
createDiffSection({ outdatedPackage, gitRepo }) {
|
|
49
|
-
const packageName = outdatedPackage.name;
|
|
50
|
-
const currentVersion = outdatedPackage.currentVersion.version;
|
|
51
|
-
const newVersion = outdatedPackage.newVersion.version;
|
|
52
|
-
const links = [];
|
|
53
|
-
if ((gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
|
|
54
|
-
const url = `${gitRepo.url.toString()}/compare/v${currentVersion}...v${newVersion}`;
|
|
55
|
-
const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
|
|
56
|
-
links.push(`- [GitHub](${optimizedUrl})`);
|
|
57
|
-
}
|
|
58
|
-
links.push(`- [npmfs](https://npmfs.com/compare/${packageName}/${currentVersion}/${newVersion})`);
|
|
59
|
-
links.push(`- [Renovate Bot Package Diff](https://renovatebot.com/diffs/npm/${packageName}/${currentVersion}/${newVersion})`);
|
|
60
|
-
return `## Package diffs
|
|
61
|
-
|
|
62
|
-
${links.join('\n')}`;
|
|
63
|
-
}
|
|
64
|
-
createFooter() {
|
|
65
|
-
return `This PR has been generated by [${package_json_1.default.name}](${package_json_1.default.homepage}) v${package_json_1.default.version}`;
|
|
66
|
-
}
|
|
67
|
-
createOutdatedPackagesTable(outdatedPackage) {
|
|
68
|
-
const packageName = outdatedPackage.name;
|
|
69
|
-
const packageLink = `[${packageName}](https://www.npmjs.com/package/${packageName})`;
|
|
70
|
-
const dependencyType = outdatedPackage.dependencyType;
|
|
71
|
-
const level = outdatedPackage.level;
|
|
72
|
-
const currentVersion = outdatedPackage.currentVersion.version;
|
|
73
|
-
const currentVersionLink = `[\`${currentVersion}\`](https://www.npmjs.com/package/${packageName}/v/${currentVersion})`;
|
|
74
|
-
const newVersion = outdatedPackage.newVersion.version;
|
|
75
|
-
const newVersionLink = `[\`${newVersion}\`](https://www.npmjs.com/package/${packageName}/v/${newVersion})`;
|
|
76
|
-
return `|Package|Dependency type|Level|Current version|New version|
|
|
77
|
-
|---|---|---|---|---|
|
|
78
|
-
|${packageLink}|${dependencyType}|${level}|${currentVersionLink}|${newVersionLink}|`;
|
|
79
|
-
}
|
|
80
|
-
createNotesSection() {
|
|
81
|
-
if (this.options.prBodyNotes === undefined) {
|
|
82
|
-
return undefined;
|
|
83
|
-
}
|
|
84
|
-
return `## Notes
|
|
85
|
-
|
|
86
|
-
${this.options.prBodyNotes}`;
|
|
87
|
-
}
|
|
88
|
-
async createReleaseNotesSection({ outdatedPackage, gitRepo }) {
|
|
89
|
-
const releases = await this.releasesFetcher.fetch({
|
|
90
|
-
gitRepo,
|
|
91
|
-
packageName: outdatedPackage.name,
|
|
92
|
-
from: outdatedPackage.currentVersion,
|
|
93
|
-
to: outdatedPackage.newVersion
|
|
94
|
-
});
|
|
95
|
-
if (releases.length === 0) {
|
|
96
|
-
return undefined;
|
|
97
|
-
}
|
|
98
|
-
const items = releases.map(({ tag, url }) => {
|
|
99
|
-
const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
|
|
100
|
-
return `- [${tag}](${optimizedUrl})`;
|
|
101
|
-
});
|
|
102
|
-
return `## Release notes
|
|
103
|
-
|
|
104
|
-
${items.join('\n')}`;
|
|
105
|
-
}
|
|
106
50
|
async extractRepository(outdatedPackage) {
|
|
107
51
|
const packageJson = await (0, file_1.readFile)(`node_modules/${outdatedPackage.name}/package.json`);
|
|
108
|
-
const pkg = (0,
|
|
109
|
-
return (0,
|
|
110
|
-
}
|
|
111
|
-
createMetadataSection(outdatedPackage) {
|
|
112
|
-
const metadata = (0, metadata_1.createPullRequestMetadata)([outdatedPackage]);
|
|
113
|
-
const json = (0, json_1.toJSON)(metadata, { pretty: true });
|
|
114
|
-
return `<details>
|
|
115
|
-
<summary>Metadata</summary>
|
|
116
|
-
|
|
117
|
-
**Don't remove or edit this section because it will be used by npm-update-package.**
|
|
118
|
-
|
|
119
|
-
<div id="npm-update-package-metadata">
|
|
120
|
-
|
|
121
|
-
\`\`\`json
|
|
122
|
-
${json}
|
|
123
|
-
\`\`\`
|
|
124
|
-
|
|
125
|
-
</div>
|
|
126
|
-
</details>`;
|
|
52
|
+
const pkg = (0, package_json_1.parsePackageJson)(packageJson);
|
|
53
|
+
return (0, package_json_1.extractRepository)(pkg);
|
|
127
54
|
}
|
|
128
55
|
}
|
|
129
56
|
exports.PullRequestBodyCreator = PullRequestBodyCreator;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createFooter = void 0;
|
|
7
|
+
const package_json_1 = __importDefault(require("../../../../package.json"));
|
|
8
|
+
const createFooter = () => {
|
|
9
|
+
return `This PR has been generated by [${package_json_1.default.name}](${package_json_1.default.homepage}) v${package_json_1.default.version}`;
|
|
10
|
+
};
|
|
11
|
+
exports.createFooter = createFooter;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMetadataSection = void 0;
|
|
4
|
+
const json_1 = require("../../../json");
|
|
5
|
+
const metadata_1 = require("../metadata");
|
|
6
|
+
const createMetadataSection = (outdatedPackage) => {
|
|
7
|
+
const metadata = (0, metadata_1.createPullRequestMetadata)([outdatedPackage]);
|
|
8
|
+
const json = (0, json_1.toJSON)(metadata, {
|
|
9
|
+
pretty: true
|
|
10
|
+
});
|
|
11
|
+
return `<details>
|
|
12
|
+
<summary>Metadata</summary>
|
|
13
|
+
|
|
14
|
+
**Don't remove or edit this section because it will be used by npm-update-package.**
|
|
15
|
+
|
|
16
|
+
<div id="npm-update-package-metadata">
|
|
17
|
+
|
|
18
|
+
\`\`\`json
|
|
19
|
+
${json}
|
|
20
|
+
\`\`\`
|
|
21
|
+
|
|
22
|
+
</div>
|
|
23
|
+
</details>`;
|
|
24
|
+
};
|
|
25
|
+
exports.createMetadataSection = createMetadataSection;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOutdatedPackagesTable = void 0;
|
|
4
|
+
const createOutdatedPackagesTable = (outdatedPackage) => {
|
|
5
|
+
const packageName = outdatedPackage.name;
|
|
6
|
+
const packageLink = `[${packageName}](https://www.npmjs.com/package/${packageName})`;
|
|
7
|
+
const dependencyType = outdatedPackage.dependencyType;
|
|
8
|
+
const level = outdatedPackage.level;
|
|
9
|
+
const currentVersion = outdatedPackage.currentVersion.version;
|
|
10
|
+
const currentVersionLink = `[\`${currentVersion}\`](https://www.npmjs.com/package/${packageName}/v/${currentVersion})`;
|
|
11
|
+
const newVersion = outdatedPackage.newVersion.version;
|
|
12
|
+
const newVersionLink = `[\`${newVersion}\`](https://www.npmjs.com/package/${packageName}/v/${newVersion})`;
|
|
13
|
+
return `|Package|Dependency type|Level|Current version|New version|
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
|${packageLink}|${dependencyType}|${level}|${currentVersionLink}|${newVersionLink}|`;
|
|
16
|
+
};
|
|
17
|
+
exports.createOutdatedPackagesTable = createOutdatedPackagesTable;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPackageDiffsSection = void 0;
|
|
4
|
+
const optimizeGitHubUrl_1 = require("./optimizeGitHubUrl");
|
|
5
|
+
const createPackageDiffsSection = ({ outdatedPackage, gitRepo }) => {
|
|
6
|
+
const packageName = outdatedPackage.name;
|
|
7
|
+
const currentVersion = outdatedPackage.currentVersion.version;
|
|
8
|
+
const newVersion = outdatedPackage.newVersion.version;
|
|
9
|
+
const links = [];
|
|
10
|
+
if ((gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
|
|
11
|
+
const url = `${gitRepo.url.toString()}/compare/v${currentVersion}...v${newVersion}`;
|
|
12
|
+
const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
|
|
13
|
+
links.push(`- [GitHub](${optimizedUrl})`);
|
|
14
|
+
}
|
|
15
|
+
links.push(`- [npmfs](https://npmfs.com/compare/${packageName}/${currentVersion}/${newVersion})`);
|
|
16
|
+
links.push(`- [Package Diff](https://diff.intrinsic.com/${packageName}/${currentVersion}/${newVersion})`);
|
|
17
|
+
links.push(`- [Renovate Bot Package Diff](https://renovatebot.com/diffs/npm/${packageName}/${currentVersion}/${newVersion})`);
|
|
18
|
+
return `## Package diffs
|
|
19
|
+
|
|
20
|
+
${links.join('\n')}`;
|
|
21
|
+
};
|
|
22
|
+
exports.createPackageDiffsSection = createPackageDiffsSection;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createReleaseNotesSection = void 0;
|
|
4
|
+
const optimizeGitHubUrl_1 = require("./optimizeGitHubUrl");
|
|
5
|
+
const createReleaseNotesSection = (releases) => {
|
|
6
|
+
const items = releases.map(({ tag, url }) => {
|
|
7
|
+
const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
|
|
8
|
+
return `- [${tag}](${optimizedUrl})`;
|
|
9
|
+
});
|
|
10
|
+
return `## Release notes
|
|
11
|
+
|
|
12
|
+
${items.join('\n')}`;
|
|
13
|
+
};
|
|
14
|
+
exports.createReleaseNotesSection = createReleaseNotesSection;
|
|
@@ -7,9 +7,10 @@ exports.ReleasesFetcher = void 0;
|
|
|
7
7
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
8
8
|
const semver_1 = require("semver");
|
|
9
9
|
const sleep_promise_1 = __importDefault(require("sleep-promise"));
|
|
10
|
-
|
|
10
|
+
// TODO: Split into multiple classes and functions
|
|
11
11
|
class ReleasesFetcher {
|
|
12
|
-
constructor({ packageManager }) {
|
|
12
|
+
constructor({ options, packageManager }) {
|
|
13
|
+
this.options = options;
|
|
13
14
|
this.packageManager = packageManager;
|
|
14
15
|
}
|
|
15
16
|
async fetch({ gitRepo, packageName, from, to }) {
|
|
@@ -35,17 +36,20 @@ class ReleasesFetcher {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
async fetchReleasesByTags({ gitRepo, tags }) {
|
|
38
|
-
const releases =
|
|
39
|
+
const releases = [];
|
|
40
|
+
for (const [i, tag] of tags.entries()) {
|
|
39
41
|
if (i > 0) {
|
|
40
|
-
|
|
41
|
-
await (0, sleep_promise_1.default)(1000);
|
|
42
|
+
await (0, sleep_promise_1.default)(this.options.fetchSleepTime);
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
const release = await this.fetchReleaseByTag({
|
|
44
45
|
gitRepo,
|
|
45
46
|
tag
|
|
46
47
|
});
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
if (release !== undefined) {
|
|
49
|
+
releases.push(release);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return releases;
|
|
49
53
|
}
|
|
50
54
|
async getVersions({ packageName, from, to }) {
|
|
51
55
|
const versions = await this.packageManager.getVersions(packageName);
|
package/dist/src/main.js
CHANGED
|
@@ -8,7 +8,7 @@ const github_1 = require("./github");
|
|
|
8
8
|
const ncu_1 = require("./ncu");
|
|
9
9
|
const package_manager_1 = require("./package-manager");
|
|
10
10
|
const terminal_1 = require("./terminal");
|
|
11
|
-
// TODO:
|
|
11
|
+
// TODO: Add test
|
|
12
12
|
const main = async ({ options, logger }) => {
|
|
13
13
|
logger.debug(`options=${JSON.stringify({
|
|
14
14
|
...options,
|
|
@@ -68,7 +68,10 @@ const main = async ({ options, logger }) => {
|
|
|
68
68
|
packageManager: options.packageManager
|
|
69
69
|
});
|
|
70
70
|
const pullRequestTitleCreator = new github_1.PullRequestTitleCreator(options.prTitle);
|
|
71
|
-
const releasesFetcher = new github_1.ReleasesFetcher({
|
|
71
|
+
const releasesFetcher = new github_1.ReleasesFetcher({
|
|
72
|
+
options,
|
|
73
|
+
packageManager
|
|
74
|
+
});
|
|
72
75
|
const pullRequestBodyCreator = new github_1.PullRequestBodyCreator({
|
|
73
76
|
options,
|
|
74
77
|
releasesFetcher
|
|
@@ -125,7 +128,7 @@ const main = async ({ options, logger }) => {
|
|
|
125
128
|
logger.debug(`failedResults=${JSON.stringify(failedResults)}`);
|
|
126
129
|
const failedPackages = failedResults.map(({ outdatedPackage }) => outdatedPackage);
|
|
127
130
|
logger.debug(`failedPackages=${JSON.stringify(failedPackages)}`);
|
|
128
|
-
// TODO:
|
|
131
|
+
// TODO: Show as table
|
|
129
132
|
logger.info(`Processed ${succeededResults.length + failedPackages.length} packages:
|
|
130
133
|
- ${createdPackages.length} packages: created (${createdPackages.map(({ name }) => name).join(',')})
|
|
131
134
|
- ${skippedPackages.length} packages: skipped: (${skippedPackages.map(({ name }) => name).join(',')})
|
package/dist/src/ncu/Ncu.js
CHANGED
|
@@ -7,7 +7,7 @@ const file_1 = require("../file");
|
|
|
7
7
|
const package_json_1 = require("../package-json");
|
|
8
8
|
const semver_1 = require("../semver");
|
|
9
9
|
const NcuResult_1 = require("./NcuResult");
|
|
10
|
-
// TODO:
|
|
10
|
+
// TODO: Add test
|
|
11
11
|
class Ncu {
|
|
12
12
|
constructor({ options, logger }) {
|
|
13
13
|
this.options = options;
|
|
@@ -7,6 +7,8 @@ const package_manager_1 = require("../package-manager");
|
|
|
7
7
|
const Options = (0, io_ts_1.intersection)([
|
|
8
8
|
(0, io_ts_1.type)({
|
|
9
9
|
commitMessage: io_ts_1.string,
|
|
10
|
+
fetchReleaseNotes: io_ts_1.boolean,
|
|
11
|
+
fetchSleepTime: io_ts_1.number,
|
|
10
12
|
githubToken: io_ts_1.string,
|
|
11
13
|
logLevel: (0, io_ts_1.union)([
|
|
12
14
|
(0, io_ts_1.literal)(logger_1.LogLevel.Off),
|
|
@@ -18,6 +18,20 @@ exports.cliOptions = [
|
|
|
18
18
|
required: false,
|
|
19
19
|
default: 'chore(deps): {{{level}}} update {{{packageName}}} to v{{{newVersion}}}'
|
|
20
20
|
},
|
|
21
|
+
{
|
|
22
|
+
name: 'fetch-release-notes',
|
|
23
|
+
description: 'Whether to fetch release notes',
|
|
24
|
+
type: OptionType_1.OptionType.Boolean,
|
|
25
|
+
required: false,
|
|
26
|
+
default: true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'fetch-sleep-time',
|
|
30
|
+
description: 'Sleep time between fetching (ms)',
|
|
31
|
+
type: OptionType_1.OptionType.Number,
|
|
32
|
+
required: false,
|
|
33
|
+
default: 1000
|
|
34
|
+
},
|
|
21
35
|
{
|
|
22
36
|
name: 'github-token',
|
|
23
37
|
description: 'GitHub token',
|
|
@@ -8,7 +8,7 @@ const commander_1 = require("commander");
|
|
|
8
8
|
const package_json_1 = __importDefault(require("../../package.json"));
|
|
9
9
|
const Options_1 = require("./Options");
|
|
10
10
|
const toCommanderOption_1 = require("./toCommanderOption");
|
|
11
|
-
// TODO:
|
|
11
|
+
// TODO: Add test
|
|
12
12
|
const createOptions = (cliOptions) => {
|
|
13
13
|
commander_1.program.version(package_json_1.default.version);
|
|
14
14
|
cliOptions
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseBooleanOption = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const parseBooleanOption = (value) => {
|
|
6
|
+
switch (value) {
|
|
7
|
+
case 'true':
|
|
8
|
+
return true;
|
|
9
|
+
case 'false':
|
|
10
|
+
return false;
|
|
11
|
+
default:
|
|
12
|
+
throw new commander_1.InvalidArgumentError('Not a boolean.');
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
exports.parseBooleanOption = parseBooleanOption;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseNumberOption = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const parseNumberOption = (value) => {
|
|
6
|
+
const number = Number(value);
|
|
7
|
+
if (Number.isNaN(number)) {
|
|
8
|
+
throw new commander_1.InvalidArgumentError('Not a number.');
|
|
9
|
+
}
|
|
10
|
+
return number;
|
|
11
|
+
};
|
|
12
|
+
exports.parseNumberOption = parseNumberOption;
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.toCommanderOption = void 0;
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const OptionType_1 = require("./OptionType");
|
|
6
|
+
const parseBooleanOption_1 = require("./parseBooleanOption");
|
|
7
|
+
const parseNumberOption_1 = require("./parseNumberOption");
|
|
6
8
|
const toCommanderOption = (cliOption) => {
|
|
7
9
|
const argument = createArgumentString(cliOption);
|
|
8
10
|
const option = new commander_1.Option(`--${cliOption.name} ${argument}`, cliOption.description);
|
|
@@ -12,6 +14,12 @@ const toCommanderOption = (cliOption) => {
|
|
|
12
14
|
if (!cliOption.required && cliOption.default !== undefined) {
|
|
13
15
|
option.default(cliOption.default);
|
|
14
16
|
}
|
|
17
|
+
if (cliOption.type === OptionType_1.OptionType.Boolean) {
|
|
18
|
+
option.argParser(parseBooleanOption_1.parseBooleanOption);
|
|
19
|
+
}
|
|
20
|
+
if (cliOption.type === OptionType_1.OptionType.Number) {
|
|
21
|
+
option.argParser(parseNumberOption_1.parseNumberOption);
|
|
22
|
+
}
|
|
15
23
|
return option;
|
|
16
24
|
};
|
|
17
25
|
exports.toCommanderOption = toCommanderOption;
|
|
@@ -21,9 +29,13 @@ const createArgumentString = (cliOption) => {
|
|
|
21
29
|
};
|
|
22
30
|
const createArgumentNameString = (optionType) => {
|
|
23
31
|
switch (optionType) {
|
|
32
|
+
case OptionType_1.OptionType.Boolean:
|
|
33
|
+
return 'boolean';
|
|
34
|
+
case OptionType_1.OptionType.Number:
|
|
35
|
+
return 'number';
|
|
24
36
|
case OptionType_1.OptionType.String:
|
|
25
|
-
return '
|
|
37
|
+
return 'string';
|
|
26
38
|
case OptionType_1.OptionType.StringArray:
|
|
27
|
-
return '
|
|
39
|
+
return 'strings...';
|
|
28
40
|
}
|
|
29
41
|
};
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Terminal = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
|
-
// TODO:
|
|
8
|
+
// TODO: Add test
|
|
9
9
|
class Terminal {
|
|
10
10
|
async run(command, ...args) {
|
|
11
11
|
return await (0, execa_1.default)(command, args);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "npm-update-package",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
4
4
|
"description": "CLI tool for creating pull requests to update npm packages",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc --project tsconfig.build.json",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@types/parse-github-url": "1.0.0",
|
|
42
42
|
"@types/semver": "7.3.9",
|
|
43
43
|
"@typescript-eslint/eslint-plugin": "5.16.0",
|
|
44
|
-
"eslint": "8.
|
|
44
|
+
"eslint": "8.12.0",
|
|
45
45
|
"eslint-config-standard-with-typescript": "21.0.1",
|
|
46
46
|
"eslint-plugin-import": "2.25.4",
|
|
47
47
|
"eslint-plugin-jest": "26.1.3",
|