@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 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
- let vRegex = /([\d]+\.[\d]+\..*)/;
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
- let originalPrefix = (version.match(/([^\d]*).*/) || ["", ""])[1];
37
- let prefix = major ? ">=" : minor ? "^" : patch ? "~" : originalPrefix;
38
- let oldVersion = version.match(vRegex)[1];
39
- let newVersion = oldVersion;
40
- let vailds = versions.slice(versions.indexOf(oldVersion) + 1);
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
- let version = deps[packageName];
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
- let newVersion = fitVersion(versions$, version, commandOptions);
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
- let packageFolderNames = [];
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
- let version = target[packageName];
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
- let changed = await this.getPackageChanged();
190
+ const changed = await this.getPackageChanged();
195
191
  spinner.stop();
196
192
  let message = `deps updated
197
193
 
198
194
  `;
199
- let keys = Object.keys(changed);
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
- const packageFolderNames = all ? ["*"] : await this.updatePackageOptions(changed);
214
- message = `chore${packageFolderNames.length ? "(" : ""}${packageFolderNames.join(",")}${packageFolderNames.length ? ")" : ""}: ${message}`;
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
- let vRegex = /([\d]+\.[\d]+\..*)/;
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
- let originalPrefix = (version.match(/([^\d]*).*/) || ["", ""])[1];
14
- let prefix = major ? ">=" : minor ? "^" : patch ? "~" : originalPrefix;
15
- let oldVersion = version.match(vRegex)[1];
16
- let newVersion = oldVersion;
17
- let vailds = versions.slice(versions.indexOf(oldVersion) + 1);
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
- let version = deps[packageName];
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
- let newVersion = fitVersion(versions$, version, commandOptions);
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
- let packageFolderNames = [];
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
- let version = target[packageName];
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
- let changed = await this.getPackageChanged();
167
+ const changed = await this.getPackageChanged();
172
168
  spinner.stop();
173
169
  let message = `deps updated
174
170
 
175
171
  `;
176
- let keys = Object.keys(changed);
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
- const packageFolderNames = all ? ["*"] : await this.updatePackageOptions(changed);
191
- message = `chore${packageFolderNames.length ? "(" : ""}${packageFolderNames.join(",")}${packageFolderNames.length ? ")" : ""}: ${message}`;
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.6.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.6.2",
22
+ "@deot/dev-shared": "^2.8.0",
23
23
  "chalk": "^5.3.0",
24
- "fs-extra": "^11.1.1",
24
+ "fs-extra": "^11.2.0",
25
25
  "ora": "^7.0.1",
26
26
  "semver": "^7.5.4"
27
27
  }