difit 1.1.7 → 1.1.8

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.
@@ -147,20 +147,30 @@ export async function startServer(options) {
147
147
  }
148
148
  async function startServerWithFallback(app, preferredPort) {
149
149
  return new Promise((resolve, reject) => {
150
- const server = app.listen(preferredPort, '127.0.0.1', () => {
151
- const port = server.address()?.port;
152
- const url = `http://localhost:${port}`;
153
- resolve({ port, url });
154
- });
155
- server.on('error', (err) => {
156
- if (err.code === 'EADDRINUSE') {
157
- console.log(`Port ${preferredPort} is busy, trying ${preferredPort + 1}...`);
158
- startServerWithFallback(app, preferredPort + 1)
159
- .then(resolve)
160
- .catch(reject);
150
+ // express's listen() method uses listen() method in node:net Server instance internally
151
+ // https://expressjs.com/en/5x/api.html#app.listen
152
+ // so, an error will be an instance of NodeJS.ErrnoException
153
+ app.listen(preferredPort, '127.0.0.1', (err) => {
154
+ const url = `http://localhost:${preferredPort}`;
155
+ if (!err) {
156
+ resolve({ port: preferredPort, url });
157
+ return;
161
158
  }
162
- else {
163
- reject(new Error(`Server error: ${err instanceof Error ? err.message : String(err)}`));
159
+ // Handling errors when failed to launch a server
160
+ switch (err.code) {
161
+ // Try another port until it succeeds
162
+ case 'EADDRINUSE': {
163
+ console.log(`Port ${preferredPort} is busy, trying ${preferredPort + 1}...`);
164
+ return startServerWithFallback(app, preferredPort + 1)
165
+ .then(({ port, url }) => {
166
+ resolve({ port, url });
167
+ })
168
+ .catch(reject);
169
+ }
170
+ // Unexpected error
171
+ default: {
172
+ reject(new Error(`Failed to launch a server: ${err.message}`));
173
+ }
164
174
  }
165
175
  });
166
176
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "difit",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "A lightweight command-line tool that spins up a local web server to display Git commit diffs in a GitHub-like Files changed view",
5
5
  "type": "module",
6
6
  "engines": {