@react-router/serve 8.0.1 → 8.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # `@react-router/serve`
2
2
 
3
+ ## v8.2.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies:
8
+ - [`react-router@8.2.0`](https://github.com/remix-run/react-router/releases/tag/react-router@8.2.0)
9
+ - [`@react-router/express@8.2.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/express@8.2.0)
10
+ - [`@react-router/node@8.2.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@8.2.0)
11
+
12
+ ## v8.1.0
13
+
14
+ ### Patch Changes
15
+
16
+ - Use Node's built-in networking APIs to find an available port and remove the `get-port` dependency ([#15239](https://github.com/remix-run/react-router/pull/15239))
17
+ - Updated dependencies:
18
+ - [`react-router@8.1.0`](https://github.com/remix-run/react-router/releases/tag/react-router@8.1.0)
19
+ - [`@react-router/express@8.1.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/express@8.1.0)
20
+ - [`@react-router/node@8.1.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@8.1.0)
21
+
3
22
  ## v8.0.1
4
23
 
5
24
  ### Patch Changes
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/serve v8.0.1
3
+ * @react-router/serve v8.2.0
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -10,6 +10,7 @@
10
10
  * @license MIT
11
11
  */
12
12
  import fs from "node:fs";
13
+ import net from "node:net";
13
14
  import os from "node:os";
14
15
  import path from "node:path";
15
16
  import url from "node:url";
@@ -19,7 +20,6 @@ import compression from "compression";
19
20
  import express from "express";
20
21
  import morgan from "morgan";
21
22
  import sourceMapSupport from "source-map-support";
22
- import getPort from "get-port";
23
23
  //#region cli.ts
24
24
  process.env.NODE_ENV = process.env.NODE_ENV ?? "production";
25
25
  sourceMapSupport.install({ retrieveSourceMap: function(source) {
@@ -42,6 +42,33 @@ function parseNumber(raw) {
42
42
  if (Number.isNaN(maybe)) return void 0;
43
43
  return maybe;
44
44
  }
45
+ async function getAvailablePort(preferredPort, host) {
46
+ let availablePort = await checkPort(preferredPort, host) ?? await checkPort(0, host);
47
+ if (availablePort === void 0) throw new Error("No available port found");
48
+ return availablePort;
49
+ }
50
+ function checkPort(port, host) {
51
+ return new Promise((resolve, reject) => {
52
+ let server = net.createServer();
53
+ let listenOptions = host ? {
54
+ port,
55
+ host
56
+ } : { port };
57
+ server.unref();
58
+ server.once("error", (error) => {
59
+ if (error.code === "EADDRINUSE" || error.code === "EACCES") resolve(void 0);
60
+ else reject(error);
61
+ });
62
+ server.listen(listenOptions, () => {
63
+ let address = server.address();
64
+ let availablePort = typeof address === "object" && address ? address.port : port;
65
+ server.close((error) => {
66
+ if (error) reject(error);
67
+ else resolve(availablePort);
68
+ });
69
+ });
70
+ });
71
+ }
45
72
  function getExpressPath(publicPath) {
46
73
  let pathname;
47
74
  try {
@@ -52,7 +79,7 @@ function getExpressPath(publicPath) {
52
79
  return pathname.startsWith("/") ? pathname : `/${pathname}`;
53
80
  }
54
81
  async function run() {
55
- let port = parseNumber(process.env.PORT) ?? await getPort({ port: 3e3 });
82
+ let port = parseNumber(process.env.PORT) ?? await getAvailablePort(3e3, process.env.HOST);
56
83
  let buildPathArg = process.argv[2];
57
84
  if (!buildPathArg) {
58
85
  console.error(`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-router/serve",
3
3
  "type": "module",
4
- "version": "8.0.1",
4
+ "version": "8.2.0",
5
5
  "description": "Production application server for React Router",
6
6
  "bugs": {
7
7
  "url": "https://github.com/remix-run/react-router/issues"
@@ -37,14 +37,13 @@
37
37
  "@remix-run/node-fetch-server": "^0.13.3",
38
38
  "compression": "^1.8.1",
39
39
  "express": "^5.2.1",
40
- "get-port": "7.2.0",
41
40
  "morgan": "^1.10.1",
42
41
  "source-map-support": "^0.5.21",
43
- "@react-router/express": "8.0.1",
44
- "@react-router/node": "8.0.1"
42
+ "@react-router/express": "8.2.0",
43
+ "@react-router/node": "8.2.0"
45
44
  },
46
45
  "peerDependencies": {
47
- "react-router": "8.0.1"
46
+ "react-router": "8.2.0"
48
47
  },
49
48
  "devDependencies": {
50
49
  "@types/compression": "^1.8.1",