@deot/dev-updater 2.2.1 → 2.3.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.js CHANGED
@@ -54,13 +54,13 @@ class Update {
54
54
  commandOptions;
55
55
  constructor(commandOptions) {
56
56
  const locals = devShared.Locals.impl();
57
- const { packageDir } = locals;
57
+ const { rootPackageOptions, packageDir, cwd } = locals;
58
58
  const packageOptionsMap = {
59
+ [cwd]: rootPackageOptions,
59
60
  ...Object.keys(locals.packageOptionsMap).reduce((result, key) => {
60
61
  result[path__namespace.resolve(packageDir, key)] = locals.packageOptionsMap[key];
61
62
  return result;
62
- }, {}),
63
- [packageDir]: locals.packageOptions
63
+ }, {})
64
64
  };
65
65
  this.packageOptionsMap = packageOptionsMap;
66
66
  this.commandOptions = commandOptions;
@@ -80,11 +80,16 @@ class Update {
80
80
  });
81
81
  });
82
82
  await Promise.all(Object.keys(packageNames).map((packageName) => {
83
- return new Promise((resolve) => {
84
- devShared.Shell.exec("npm", ["view", packageName, "versions"]).then(({ stdout }) => {
85
- let versions = JSON.parse(stdout.replace(/'/g, '"'));
83
+ return new Promise(async (resolve) => {
84
+ try {
85
+ const { stdout: stdout1 } = await devShared.Shell.exec("npm", ["view", packageName, "versions", "--json"]);
86
+ const { stdout: stdout2 } = await devShared.Shell.exec("npm", ["view", packageName, "version", "--json"]);
87
+ const versions = JSON.parse(stdout1);
88
+ const lastVersion = JSON.parse(stdout2);
89
+ const lastIndex = versions.indexOf(lastVersion);
90
+ const versions$ = versions.slice(0, lastIndex == -1 ? versions.length : lastIndex + 1);
86
91
  Object.keys(packageNames[packageName]).forEach((version) => {
87
- let newVersion = fitVersion(versions, version, commandOptions);
92
+ let newVersion = fitVersion(versions$, version, commandOptions);
88
93
  if (newVersion === version) {
89
94
  delete packageNames[packageName][version];
90
95
  } else {
@@ -95,16 +100,17 @@ class Update {
95
100
  delete packageNames[packageName];
96
101
  }
97
102
  resolve();
98
- }).catch(() => {
103
+ } catch (e) {
99
104
  delete packageNames[packageName];
100
105
  resolve();
101
- });
106
+ }
102
107
  });
103
108
  }));
104
109
  return packageNames;
105
110
  }
106
111
  async updatePackageOptions(changed) {
107
112
  const { packageOptionsMap, commandOptions } = this;
113
+ let packageFolderNames = [];
108
114
  Object.keys(packageOptionsMap).forEach((packageDir) => {
109
115
  const packageOptions = packageOptionsMap[packageDir];
110
116
  const { devDependencies = {}, dependencies = {} } = packageOptions;
@@ -119,14 +125,19 @@ class Update {
119
125
  });
120
126
  });
121
127
  if (isChanged) {
128
+ const locals = devShared.Locals.impl();
129
+ const { cwd } = locals;
130
+ if (packageDir !== cwd) {
131
+ packageFolderNames.push(packageDir.split("/").pop());
132
+ }
122
133
  if (commandOptions.dryRun) {
123
- const locals = devShared.Locals.impl();
124
- devShared.Logger.log(chalk.magenta(`CHANGED: `) + chalk.yellow(`Skipping ${path__namespace.relative(locals.cwd, packageDir)} Update`));
134
+ devShared.Logger.log(chalk.magenta(`CHANGED: `) + chalk.yellow(`Skipping ${path__namespace.relative(cwd, packageDir)} Update`));
125
135
  } else {
126
136
  fs.outputFileSync(`${packageDir}/package.json`, JSON.stringify(packageOptions, null, 2));
127
137
  }
128
138
  }
129
139
  });
140
+ return packageFolderNames;
130
141
  }
131
142
  async updateLock() {
132
143
  if (this.commandOptions.dryRun) {
@@ -182,7 +193,7 @@ ${message}`);
182
193
  spinner.start();
183
194
  let changed = await this.getPackageChanged();
184
195
  spinner.stop();
185
- let message = `chore: deps updated
196
+ let message = `deps updated
186
197
 
187
198
  `;
188
199
  let keys = Object.keys(changed);
@@ -198,7 +209,8 @@ ${message}`);
198
209
  devShared.Logger.log(`${chalk.cyan(key)}: ${chalk.yellow(version)} -> ${chalk.green(changed[key][version])}`);
199
210
  });
200
211
  });
201
- await this.updatePackageOptions(changed);
212
+ const packageFolderNames = await this.updatePackageOptions(changed);
213
+ message = `chore${packageFolderNames.length ? "(" : ""}${packageFolderNames.join(",")}${packageFolderNames.length ? ")" : ""}: ${message}`;
202
214
  await this.updateLock();
203
215
  await this.test();
204
216
  await this.commit(message);
package/dist/index.es.js CHANGED
@@ -31,13 +31,13 @@ class Update {
31
31
  commandOptions;
32
32
  constructor(commandOptions) {
33
33
  const locals = Locals.impl();
34
- const { packageDir } = locals;
34
+ const { rootPackageOptions, packageDir, cwd } = locals;
35
35
  const packageOptionsMap = {
36
+ [cwd]: rootPackageOptions,
36
37
  ...Object.keys(locals.packageOptionsMap).reduce((result, key) => {
37
38
  result[path.resolve(packageDir, key)] = locals.packageOptionsMap[key];
38
39
  return result;
39
- }, {}),
40
- [packageDir]: locals.packageOptions
40
+ }, {})
41
41
  };
42
42
  this.packageOptionsMap = packageOptionsMap;
43
43
  this.commandOptions = commandOptions;
@@ -57,11 +57,16 @@ class Update {
57
57
  });
58
58
  });
59
59
  await Promise.all(Object.keys(packageNames).map((packageName) => {
60
- return new Promise((resolve) => {
61
- Shell.exec("npm", ["view", packageName, "versions"]).then(({ stdout }) => {
62
- let versions = JSON.parse(stdout.replace(/'/g, '"'));
60
+ return new Promise(async (resolve) => {
61
+ try {
62
+ const { stdout: stdout1 } = await Shell.exec("npm", ["view", packageName, "versions", "--json"]);
63
+ const { stdout: stdout2 } = await Shell.exec("npm", ["view", packageName, "version", "--json"]);
64
+ const versions = JSON.parse(stdout1);
65
+ const lastVersion = JSON.parse(stdout2);
66
+ const lastIndex = versions.indexOf(lastVersion);
67
+ const versions$ = versions.slice(0, lastIndex == -1 ? versions.length : lastIndex + 1);
63
68
  Object.keys(packageNames[packageName]).forEach((version) => {
64
- let newVersion = fitVersion(versions, version, commandOptions);
69
+ let newVersion = fitVersion(versions$, version, commandOptions);
65
70
  if (newVersion === version) {
66
71
  delete packageNames[packageName][version];
67
72
  } else {
@@ -72,16 +77,17 @@ class Update {
72
77
  delete packageNames[packageName];
73
78
  }
74
79
  resolve();
75
- }).catch(() => {
80
+ } catch (e) {
76
81
  delete packageNames[packageName];
77
82
  resolve();
78
- });
83
+ }
79
84
  });
80
85
  }));
81
86
  return packageNames;
82
87
  }
83
88
  async updatePackageOptions(changed) {
84
89
  const { packageOptionsMap, commandOptions } = this;
90
+ let packageFolderNames = [];
85
91
  Object.keys(packageOptionsMap).forEach((packageDir) => {
86
92
  const packageOptions = packageOptionsMap[packageDir];
87
93
  const { devDependencies = {}, dependencies = {} } = packageOptions;
@@ -96,14 +102,19 @@ class Update {
96
102
  });
97
103
  });
98
104
  if (isChanged) {
105
+ const locals = Locals.impl();
106
+ const { cwd } = locals;
107
+ if (packageDir !== cwd) {
108
+ packageFolderNames.push(packageDir.split("/").pop());
109
+ }
99
110
  if (commandOptions.dryRun) {
100
- const locals = Locals.impl();
101
- Logger.log(chalk.magenta(`CHANGED: `) + chalk.yellow(`Skipping ${path.relative(locals.cwd, packageDir)} Update`));
111
+ Logger.log(chalk.magenta(`CHANGED: `) + chalk.yellow(`Skipping ${path.relative(cwd, packageDir)} Update`));
102
112
  } else {
103
113
  fs.outputFileSync(`${packageDir}/package.json`, JSON.stringify(packageOptions, null, 2));
104
114
  }
105
115
  }
106
116
  });
117
+ return packageFolderNames;
107
118
  }
108
119
  async updateLock() {
109
120
  if (this.commandOptions.dryRun) {
@@ -159,7 +170,7 @@ ${message}`);
159
170
  spinner.start();
160
171
  let changed = await this.getPackageChanged();
161
172
  spinner.stop();
162
- let message = `chore: deps updated
173
+ let message = `deps updated
163
174
 
164
175
  `;
165
176
  let keys = Object.keys(changed);
@@ -175,7 +186,8 @@ ${message}`);
175
186
  Logger.log(`${chalk.cyan(key)}: ${chalk.yellow(version)} -> ${chalk.green(changed[key][version])}`);
176
187
  });
177
188
  });
178
- await this.updatePackageOptions(changed);
189
+ const packageFolderNames = await this.updatePackageOptions(changed);
190
+ message = `chore${packageFolderNames.length ? "(" : ""}${packageFolderNames.join(",")}${packageFolderNames.length ? ")" : ""}: ${message}`;
179
191
  await this.updateLock();
180
192
  await this.test();
181
193
  await this.commit(message);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deot/dev-updater",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "main": "dist/index.es.js",
5
5
  "module": "dist/index.es.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,7 +13,7 @@
13
13
  "access": "public"
14
14
  },
15
15
  "dependencies": {
16
- "@deot/dev-shared": "^2.2.0",
16
+ "@deot/dev-shared": "^2.3.0",
17
17
  "chalk": "^5.3.0",
18
18
  "fs-extra": "^11.1.1",
19
19
  "ora": "^6.3.1",