edge-runtime
Advanced tools
Comparing version 2.1.2 to 2.1.3
@@ -41,3 +41,3 @@ #!/usr/bin/env node | ||
e: 'eval', | ||
h: 'help', | ||
h: 'host', | ||
l: 'listen', | ||
@@ -48,7 +48,8 @@ p: 'port', | ||
cwd: process.cwd(), | ||
eval: false, | ||
help: false, | ||
host: '127.0.0.1', | ||
listen: false, | ||
port: 3000, | ||
repl: false, | ||
eval: false, | ||
}, | ||
@@ -86,8 +87,23 @@ }); | ||
*/ | ||
const server = await (0, server_1.runServer)({ | ||
logger: logger, | ||
port: flags.port, | ||
runtime, | ||
}); | ||
(0, exit_hook_1.default)(() => server.close()); | ||
let server; | ||
let port = flags.port; | ||
while (server === undefined) { | ||
try { | ||
server = await (0, server_1.runServer)({ | ||
host: flags.host, | ||
logger: logger, | ||
port, | ||
runtime, | ||
}); | ||
} | ||
catch (error) { | ||
if ((error === null || error === void 0 ? void 0 : error.code) === 'EADDRINUSE') { | ||
logger.warn(`Port \`${port}\` already in use`); | ||
++port; | ||
} | ||
else | ||
throw error; | ||
} | ||
} | ||
(0, exit_hook_1.default)(() => server === null || server === void 0 ? void 0 : server.close()); | ||
logger(`Waiting incoming requests at ${logger.quotes(server.url)}`); | ||
@@ -94,0 +110,0 @@ } |
@@ -24,2 +24,3 @@ "use strict"; | ||
logger.debug = (message, opts) => print(message, { color: 'dim', ...opts }); | ||
logger.warn = (message, opts) => print(message, { color: 'yellow', ...opts }); | ||
logger.quotes = (str) => `\`${str}\``; | ||
@@ -26,0 +27,0 @@ return logger; |
export { consumeUint8ArrayReadableStream } from './body-streams'; | ||
export { createHandler } from './create-handler'; | ||
export { runServer } from './run-server'; | ||
export { runServer, type EdgeRuntimeServer } from './run-server'; |
@@ -0,11 +1,8 @@ | ||
/// <reference types="node" /> | ||
import { Options } from './create-handler'; | ||
import type { EdgeContext } from '@edge-runtime/vm'; | ||
import { Options } from './create-handler'; | ||
import type { ListenOptions } from 'net'; | ||
interface ServerOptions<T extends EdgeContext> extends Options<T> { | ||
/** | ||
* The port to start the server. If none is provided it will use a random | ||
* available port. | ||
*/ | ||
port?: number; | ||
} | ||
interface EdgeRuntimeServer { | ||
export interface EdgeRuntimeServer { | ||
/** | ||
@@ -29,3 +26,3 @@ * The server URL. | ||
*/ | ||
export declare function runServer<T extends EdgeContext>(options: ServerOptions<T>): Promise<EdgeRuntimeServer>; | ||
export declare function runServer<T extends EdgeContext>(options: ListenOptions & ServerOptions<T>): Promise<EdgeRuntimeServer>; | ||
export {}; |
@@ -8,3 +8,3 @@ "use strict"; | ||
const create_handler_1 = require("./create-handler"); | ||
const events_1 = require("events"); | ||
const async_listen_1 = __importDefault(require("async-listen")); | ||
const http_1 = __importDefault(require("http")); | ||
@@ -17,20 +17,9 @@ /** | ||
async function runServer(options) { | ||
if (options.port === undefined) | ||
options.port = 0; | ||
const { handler, waitUntil } = (0, create_handler_1.createHandler)(options); | ||
const server = http_1.default.createServer(handler); | ||
server.listen(options.port); | ||
try { | ||
await (0, events_1.once)(server, 'listening'); | ||
} | ||
catch (error) { | ||
if ((error === null || error === void 0 ? void 0 : error.code) === 'EADDRINUSE') { | ||
return runServer({ ...options, port: undefined }); | ||
} | ||
throw error; | ||
} | ||
const address = server.address(); | ||
const url = typeof address === 'string' || address == null | ||
? String(address) | ||
: `http://localhost:${address.port}`; | ||
const url = await (0, async_listen_1.default)(server, options); | ||
return { | ||
url, | ||
url: String(url), | ||
close: async () => { | ||
@@ -37,0 +26,0 @@ await waitUntil(); |
@@ -9,2 +9,3 @@ import type { Colors } from 'picocolors/types'; | ||
(message: string, opts?: LoggerOptions): void; | ||
warn(message: string, opts?: LoggerOptions): void; | ||
debug(message: string, opts?: LoggerOptions): void; | ||
@@ -11,0 +12,0 @@ error(message: string, opts?: LoggerOptions): void; |
@@ -5,3 +5,3 @@ { | ||
"homepage": "https://edge-runtime.vercel.app/packages/runtime", | ||
"version": "2.1.2", | ||
"version": "2.1.3", | ||
"main": "dist/index.js", | ||
@@ -30,2 +30,3 @@ "bin": { | ||
"@edge-runtime/vm": "2.1.2", | ||
"async-listen": "2.0.3", | ||
"exit-hook": "2.2.1", | ||
@@ -32,0 +33,0 @@ "mri": "1.2.0", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
AI detected anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
87916
779
4
9
+ Addedasync-listen@2.0.3
+ Addedasync-listen@2.0.3(transitive)