@deot/dev-updater 2.6.2 → 2.8.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/dist/index.cjs +20 -22
- package/dist/index.js +20 -22
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -29,23 +29,15 @@ function _interopNamespaceDefault(e) {
|
|
|
29
29
|
const path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
30
30
|
|
|
31
31
|
const fitVersion = (versions, version, commandOptions) => {
|
|
32
|
-
|
|
32
|
+
const vRegex = /([\d]+\.[\d]+\..*)/;
|
|
33
33
|
if (!vRegex.test(version))
|
|
34
34
|
return version;
|
|
35
35
|
const { major = false, minor = false, patch = false } = commandOptions || {};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
for (let i = 0; i < vailds.length; i++) {
|
|
42
|
-
if (!semver.satisfies(vailds[i], prefix + oldVersion)) {
|
|
43
|
-
newVersion = i - 1 < 0 ? oldVersion : vailds[i - 1];
|
|
44
|
-
break;
|
|
45
|
-
} else {
|
|
46
|
-
newVersion = vailds[i];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
36
|
+
const originalPrefix = (version.match(/([^\d]*).*/) || ["", ""])[1];
|
|
37
|
+
const prefix = major ? ">=" : minor ? "^" : patch ? "~" : originalPrefix;
|
|
38
|
+
const oldVersion = version.match(vRegex)[1];
|
|
39
|
+
const vailds = versions.slice(versions.indexOf(oldVersion) + 1);
|
|
40
|
+
const newVersion = semver.maxSatisfying(vailds, prefix + oldVersion) || oldVersion;
|
|
49
41
|
return `${originalPrefix}${newVersion}`;
|
|
50
42
|
};
|
|
51
43
|
|
|
@@ -72,7 +64,7 @@ class Update {
|
|
|
72
64
|
const { dependencies = {}, devDependencies = {} } = packageOptionsMap[key];
|
|
73
65
|
const deps = { ...dependencies, ...devDependencies };
|
|
74
66
|
Object.keys(deps).forEach((packageName) => {
|
|
75
|
-
|
|
67
|
+
const version = deps[packageName];
|
|
76
68
|
packageNames[packageName] = packageNames[packageName] || {};
|
|
77
69
|
if (typeof packageNames[packageName][version] !== "string") {
|
|
78
70
|
packageNames[packageName][version] = "";
|
|
@@ -89,7 +81,7 @@ class Update {
|
|
|
89
81
|
const lastIndex = versions.indexOf(lastVersion);
|
|
90
82
|
const versions$ = versions.slice(0, lastIndex == -1 ? versions.length : lastIndex + 1);
|
|
91
83
|
Object.keys(packageNames[packageName]).forEach((version) => {
|
|
92
|
-
|
|
84
|
+
const newVersion = fitVersion(versions$, version, commandOptions);
|
|
93
85
|
if (newVersion === version) {
|
|
94
86
|
delete packageNames[packageName][version];
|
|
95
87
|
} else {
|
|
@@ -110,14 +102,14 @@ class Update {
|
|
|
110
102
|
}
|
|
111
103
|
async updatePackageOptions(changed) {
|
|
112
104
|
const { packageOptionsMap, commandOptions } = this;
|
|
113
|
-
|
|
105
|
+
const packageFolderNames = [];
|
|
114
106
|
Object.keys(packageOptionsMap).forEach((packageDir) => {
|
|
115
107
|
const packageOptions = packageOptionsMap[packageDir];
|
|
116
108
|
const { devDependencies = {}, dependencies = {} } = packageOptions;
|
|
117
109
|
let isChanged = false;
|
|
118
110
|
[devDependencies, dependencies].forEach((target) => {
|
|
119
111
|
Object.keys(target).forEach((packageName) => {
|
|
120
|
-
|
|
112
|
+
const version = target[packageName];
|
|
121
113
|
if (changed[packageName]?.[version]) {
|
|
122
114
|
isChanged = true;
|
|
123
115
|
target[packageName] = changed[packageName][version];
|
|
@@ -133,6 +125,7 @@ class Update {
|
|
|
133
125
|
if (commandOptions.dryRun) {
|
|
134
126
|
devShared.Logger.log(chalk.magenta(`CHANGED: `) + chalk.yellow(`Skipping ${path__namespace.relative(cwd, packageDir)} Update`));
|
|
135
127
|
} else {
|
|
128
|
+
fs.removeSync(`${packageDir}/node_modules`);
|
|
136
129
|
fs.outputFileSync(`${packageDir}/package.json`, JSON.stringify(packageOptions, null, 2));
|
|
137
130
|
}
|
|
138
131
|
}
|
|
@@ -144,6 +137,9 @@ class Update {
|
|
|
144
137
|
devShared.Logger.log(chalk.yellow(`Skipping pnpm-lock.yaml Update`));
|
|
145
138
|
} else {
|
|
146
139
|
devShared.Logger.log(chalk.magenta(`CHANGED: `) + `pnpm-lock.yaml`);
|
|
140
|
+
const locals = devShared.Locals.impl();
|
|
141
|
+
const { cwd } = locals;
|
|
142
|
+
await fs.remove(`${cwd}/node_modules`);
|
|
147
143
|
await devShared.Shell.spawn("npx", ["pnpm", "install", "--lockfile-only"]);
|
|
148
144
|
}
|
|
149
145
|
}
|
|
@@ -191,12 +187,12 @@ ${message}`);
|
|
|
191
187
|
async process() {
|
|
192
188
|
const spinner = ora(`Analyze ...`);
|
|
193
189
|
spinner.start();
|
|
194
|
-
|
|
190
|
+
const changed = await this.getPackageChanged();
|
|
195
191
|
spinner.stop();
|
|
196
192
|
let message = `deps updated
|
|
197
193
|
|
|
198
194
|
`;
|
|
199
|
-
|
|
195
|
+
const keys = Object.keys(changed);
|
|
200
196
|
if (!keys.length) {
|
|
201
197
|
devShared.Logger.log(chalk.red(`No Package Update Found.`));
|
|
202
198
|
return;
|
|
@@ -210,8 +206,10 @@ ${message}`);
|
|
|
210
206
|
});
|
|
211
207
|
});
|
|
212
208
|
const { all } = this.commandOptions;
|
|
213
|
-
|
|
214
|
-
|
|
209
|
+
let packageFolderNames = await this.updatePackageOptions(changed);
|
|
210
|
+
const hasChanged = packageFolderNames.length;
|
|
211
|
+
packageFolderNames = hasChanged && all ? ["*"] : packageFolderNames;
|
|
212
|
+
message = `chore${hasChanged ? "(" : ""}${packageFolderNames.join(",")}${hasChanged ? ")" : ""}: ${message}`;
|
|
215
213
|
await this.updateLock();
|
|
216
214
|
await this.test();
|
|
217
215
|
await this.commit(message);
|
package/dist/index.js
CHANGED
|
@@ -6,23 +6,15 @@ import ora from 'ora';
|
|
|
6
6
|
import semver from 'semver';
|
|
7
7
|
|
|
8
8
|
const fitVersion = (versions, version, commandOptions) => {
|
|
9
|
-
|
|
9
|
+
const vRegex = /([\d]+\.[\d]+\..*)/;
|
|
10
10
|
if (!vRegex.test(version))
|
|
11
11
|
return version;
|
|
12
12
|
const { major = false, minor = false, patch = false } = commandOptions || {};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
for (let i = 0; i < vailds.length; i++) {
|
|
19
|
-
if (!semver.satisfies(vailds[i], prefix + oldVersion)) {
|
|
20
|
-
newVersion = i - 1 < 0 ? oldVersion : vailds[i - 1];
|
|
21
|
-
break;
|
|
22
|
-
} else {
|
|
23
|
-
newVersion = vailds[i];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
13
|
+
const originalPrefix = (version.match(/([^\d]*).*/) || ["", ""])[1];
|
|
14
|
+
const prefix = major ? ">=" : minor ? "^" : patch ? "~" : originalPrefix;
|
|
15
|
+
const oldVersion = version.match(vRegex)[1];
|
|
16
|
+
const vailds = versions.slice(versions.indexOf(oldVersion) + 1);
|
|
17
|
+
const newVersion = semver.maxSatisfying(vailds, prefix + oldVersion) || oldVersion;
|
|
26
18
|
return `${originalPrefix}${newVersion}`;
|
|
27
19
|
};
|
|
28
20
|
|
|
@@ -49,7 +41,7 @@ class Update {
|
|
|
49
41
|
const { dependencies = {}, devDependencies = {} } = packageOptionsMap[key];
|
|
50
42
|
const deps = { ...dependencies, ...devDependencies };
|
|
51
43
|
Object.keys(deps).forEach((packageName) => {
|
|
52
|
-
|
|
44
|
+
const version = deps[packageName];
|
|
53
45
|
packageNames[packageName] = packageNames[packageName] || {};
|
|
54
46
|
if (typeof packageNames[packageName][version] !== "string") {
|
|
55
47
|
packageNames[packageName][version] = "";
|
|
@@ -66,7 +58,7 @@ class Update {
|
|
|
66
58
|
const lastIndex = versions.indexOf(lastVersion);
|
|
67
59
|
const versions$ = versions.slice(0, lastIndex == -1 ? versions.length : lastIndex + 1);
|
|
68
60
|
Object.keys(packageNames[packageName]).forEach((version) => {
|
|
69
|
-
|
|
61
|
+
const newVersion = fitVersion(versions$, version, commandOptions);
|
|
70
62
|
if (newVersion === version) {
|
|
71
63
|
delete packageNames[packageName][version];
|
|
72
64
|
} else {
|
|
@@ -87,14 +79,14 @@ class Update {
|
|
|
87
79
|
}
|
|
88
80
|
async updatePackageOptions(changed) {
|
|
89
81
|
const { packageOptionsMap, commandOptions } = this;
|
|
90
|
-
|
|
82
|
+
const packageFolderNames = [];
|
|
91
83
|
Object.keys(packageOptionsMap).forEach((packageDir) => {
|
|
92
84
|
const packageOptions = packageOptionsMap[packageDir];
|
|
93
85
|
const { devDependencies = {}, dependencies = {} } = packageOptions;
|
|
94
86
|
let isChanged = false;
|
|
95
87
|
[devDependencies, dependencies].forEach((target) => {
|
|
96
88
|
Object.keys(target).forEach((packageName) => {
|
|
97
|
-
|
|
89
|
+
const version = target[packageName];
|
|
98
90
|
if (changed[packageName]?.[version]) {
|
|
99
91
|
isChanged = true;
|
|
100
92
|
target[packageName] = changed[packageName][version];
|
|
@@ -110,6 +102,7 @@ class Update {
|
|
|
110
102
|
if (commandOptions.dryRun) {
|
|
111
103
|
Logger.log(chalk.magenta(`CHANGED: `) + chalk.yellow(`Skipping ${path.relative(cwd, packageDir)} Update`));
|
|
112
104
|
} else {
|
|
105
|
+
fs.removeSync(`${packageDir}/node_modules`);
|
|
113
106
|
fs.outputFileSync(`${packageDir}/package.json`, JSON.stringify(packageOptions, null, 2));
|
|
114
107
|
}
|
|
115
108
|
}
|
|
@@ -121,6 +114,9 @@ class Update {
|
|
|
121
114
|
Logger.log(chalk.yellow(`Skipping pnpm-lock.yaml Update`));
|
|
122
115
|
} else {
|
|
123
116
|
Logger.log(chalk.magenta(`CHANGED: `) + `pnpm-lock.yaml`);
|
|
117
|
+
const locals = Locals.impl();
|
|
118
|
+
const { cwd } = locals;
|
|
119
|
+
await fs.remove(`${cwd}/node_modules`);
|
|
124
120
|
await Shell.spawn("npx", ["pnpm", "install", "--lockfile-only"]);
|
|
125
121
|
}
|
|
126
122
|
}
|
|
@@ -168,12 +164,12 @@ ${message}`);
|
|
|
168
164
|
async process() {
|
|
169
165
|
const spinner = ora(`Analyze ...`);
|
|
170
166
|
spinner.start();
|
|
171
|
-
|
|
167
|
+
const changed = await this.getPackageChanged();
|
|
172
168
|
spinner.stop();
|
|
173
169
|
let message = `deps updated
|
|
174
170
|
|
|
175
171
|
`;
|
|
176
|
-
|
|
172
|
+
const keys = Object.keys(changed);
|
|
177
173
|
if (!keys.length) {
|
|
178
174
|
Logger.log(chalk.red(`No Package Update Found.`));
|
|
179
175
|
return;
|
|
@@ -187,8 +183,10 @@ ${message}`);
|
|
|
187
183
|
});
|
|
188
184
|
});
|
|
189
185
|
const { all } = this.commandOptions;
|
|
190
|
-
|
|
191
|
-
|
|
186
|
+
let packageFolderNames = await this.updatePackageOptions(changed);
|
|
187
|
+
const hasChanged = packageFolderNames.length;
|
|
188
|
+
packageFolderNames = hasChanged && all ? ["*"] : packageFolderNames;
|
|
189
|
+
message = `chore${hasChanged ? "(" : ""}${packageFolderNames.join(",")}${hasChanged ? ")" : ""}: ${message}`;
|
|
192
190
|
await this.updateLock();
|
|
193
191
|
await this.test();
|
|
194
192
|
await this.commit(message);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deot/dev-updater",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@deot/dev-shared": "^2.
|
|
22
|
+
"@deot/dev-shared": "^2.8.0",
|
|
23
23
|
"chalk": "^5.3.0",
|
|
24
|
-
"fs-extra": "^11.
|
|
24
|
+
"fs-extra": "^11.2.0",
|
|
25
25
|
"ora": "^7.0.1",
|
|
26
26
|
"semver": "^7.5.4"
|
|
27
27
|
}
|