@web/dev-server-core
Advanced tools
Comparing version 0.5.1 to 0.5.2
@@ -27,3 +27,3 @@ /// <reference types="node" /> | ||
app: Koa; | ||
server: Server; | ||
server?: Server; | ||
fileWatcher: FSWatcher; | ||
@@ -30,0 +30,0 @@ logger: Logger; |
@@ -9,3 +9,3 @@ import { Middleware } from 'koa'; | ||
*/ | ||
export declare function createMiddleware(config: DevServerCoreConfig, logger: Logger, fileWatcher: FSWatcher): Middleware<import("koa").DefaultState, import("koa").DefaultContext, any>[]; | ||
export declare function createMiddleware(config: DevServerCoreConfig, logger: Logger, fileWatcher: FSWatcher): Middleware[]; | ||
//# sourceMappingURL=createMiddleware.d.ts.map |
@@ -11,3 +11,6 @@ /// <reference types="node" /> | ||
*/ | ||
export declare function createServer(logger: Logger, cfg: DevServerCoreConfig, fileWatcher: FSWatcher): { | ||
export declare function createServer(logger: Logger, cfg: DevServerCoreConfig, fileWatcher: FSWatcher, middlewareMode?: boolean): { | ||
app: Koa<Koa.DefaultState, Koa.DefaultContext>; | ||
server?: undefined; | ||
} | { | ||
server: net.Server; | ||
@@ -14,0 +17,0 @@ app: Koa<Koa.DefaultState, Koa.DefaultContext>; |
@@ -28,3 +28,3 @@ "use strict"; | ||
*/ | ||
function createServer(logger, cfg, fileWatcher) { | ||
function createServer(logger, cfg, fileWatcher, middlewareMode = false) { | ||
const app = new koa_1.default(); | ||
@@ -55,2 +55,5 @@ app.silent = true; | ||
} | ||
if (middlewareMode) { | ||
return { app }; | ||
} | ||
let server; | ||
@@ -57,0 +60,0 @@ if (cfg.http2) { |
@@ -13,4 +13,4 @@ /// <reference types="node" /> | ||
koaApp: Koa; | ||
server: Server; | ||
webSockets: WebSocketsManager; | ||
server?: Server; | ||
webSockets?: WebSocketsManager; | ||
private started; | ||
@@ -17,0 +17,0 @@ private connections; |
@@ -22,12 +22,14 @@ "use strict"; | ||
throw new Error('Missing logger.'); | ||
const createResult = (0, createServer_1.createServer)(this.logger, this.config, this.fileWatcher); | ||
this.koaApp = createResult.app; | ||
this.server = createResult.server; | ||
this.webSockets = new WebSocketsManager_1.WebSocketsManager(this.server); | ||
this.server.on('connection', connection => { | ||
this.connections.add(connection); | ||
connection.on('close', () => { | ||
this.connections.delete(connection); | ||
const { app, server } = (0, createServer_1.createServer)(this.logger, this.config, this.fileWatcher, config.middlewareMode); | ||
this.koaApp = app; | ||
if (server) { | ||
this.server = server; | ||
this.webSockets = new WebSocketsManager_1.WebSocketsManager(this.server); | ||
this.server.on('connection', connection => { | ||
this.connections.add(connection); | ||
connection.on('close', () => { | ||
this.connections.delete(connection); | ||
}); | ||
}); | ||
}); | ||
} | ||
} | ||
@@ -37,10 +39,12 @@ async start() { | ||
this.started = true; | ||
await (0, util_1.promisify)(this.server.listen).bind(this.server)({ | ||
port: this.config.port, | ||
// in case of localhost the host should be undefined, otherwise some browsers | ||
// connect to it via local network. for example safari on browserstack | ||
host: ['localhost', '127.0.0.1'].includes(this.config.hostname) | ||
? undefined | ||
: this.config.hostname, | ||
}); | ||
if (this.server && this.config.hostname) { | ||
await (0, util_1.promisify)(this.server.listen).bind(this.server)({ | ||
port: this.config.port, | ||
// in case of localhost the host should be undefined, otherwise some browsers | ||
// connect to it via local network. for example safari on browserstack | ||
host: ['localhost', '127.0.0.1'].includes(this.config.hostname) | ||
? undefined | ||
: this.config.hostname, | ||
}); | ||
} | ||
for (const plugin of (_a = this.config.plugins) !== null && _a !== void 0 ? _a : []) { | ||
@@ -58,2 +62,5 @@ await ((_b = plugin.serverStart) === null || _b === void 0 ? void 0 : _b.call(plugin, { | ||
closeServer() { | ||
if (!this.server) { | ||
return; | ||
} | ||
// close all open connections | ||
@@ -60,0 +67,0 @@ for (const connection of this.connections) { |
@@ -8,3 +8,3 @@ import { Middleware } from 'koa'; | ||
*/ | ||
port: number; | ||
port?: number; | ||
/** | ||
@@ -19,3 +19,7 @@ * Root directory to serve files from. All served files must be accessible with | ||
*/ | ||
hostname: string; | ||
hostname?: string; | ||
/** | ||
* Whether to run server or not and allow to use as a middleware connected to another server. | ||
*/ | ||
middlewareMode?: boolean; | ||
basePath?: string; | ||
@@ -22,0 +26,0 @@ /** |
{ | ||
"name": "@web/dev-server-core", | ||
"version": "0.5.1", | ||
"version": "0.5.2", | ||
"publishConfig": { | ||
@@ -84,2 +84,3 @@ "access": "public" | ||
"abort-controller": "^3.0.0", | ||
"express": "^4.18.2", | ||
"nanoid": "^3.1.25", | ||
@@ -86,0 +87,0 @@ "node-fetch": "3.0.0-beta.9", |
@@ -23,3 +23,3 @@ import { FSWatcher } from 'chokidar'; | ||
app: Koa; | ||
server: Server; | ||
server?: Server; | ||
fileWatcher: FSWatcher; | ||
@@ -26,0 +26,0 @@ logger: Logger; |
@@ -28,3 +28,8 @@ import Koa from 'koa'; | ||
*/ | ||
export function createServer(logger: Logger, cfg: DevServerCoreConfig, fileWatcher: FSWatcher) { | ||
export function createServer( | ||
logger: Logger, | ||
cfg: DevServerCoreConfig, | ||
fileWatcher: FSWatcher, | ||
middlewareMode = false, | ||
) { | ||
const app = new Koa(); | ||
@@ -59,2 +64,6 @@ app.silent = true; | ||
if (middlewareMode) { | ||
return { app }; | ||
} | ||
let server: Server; | ||
@@ -61,0 +70,0 @@ if (cfg.http2) { |
@@ -13,4 +13,4 @@ import Koa from 'koa'; | ||
public koaApp: Koa; | ||
public server: Server; | ||
public webSockets; | ||
public server?: Server; | ||
public webSockets?: WebSocketsManager; | ||
private started = false; | ||
@@ -27,13 +27,19 @@ private connections = new Set<Socket>(); | ||
const createResult = createServer(this.logger, this.config, this.fileWatcher); | ||
this.koaApp = createResult.app; | ||
this.server = createResult.server; | ||
this.webSockets = new WebSocketsManager(this.server); | ||
this.server.on('connection', connection => { | ||
this.connections.add(connection); | ||
connection.on('close', () => { | ||
this.connections.delete(connection); | ||
const { app, server } = createServer( | ||
this.logger, | ||
this.config, | ||
this.fileWatcher, | ||
config.middlewareMode, | ||
); | ||
this.koaApp = app; | ||
if (server) { | ||
this.server = server; | ||
this.webSockets = new WebSocketsManager(this.server); | ||
this.server.on('connection', connection => { | ||
this.connections.add(connection); | ||
connection.on('close', () => { | ||
this.connections.delete(connection); | ||
}); | ||
}); | ||
}); | ||
} | ||
} | ||
@@ -43,10 +49,12 @@ | ||
this.started = true; | ||
await (promisify<ListenOptions>(this.server.listen).bind(this.server) as any)({ | ||
port: this.config.port, | ||
// in case of localhost the host should be undefined, otherwise some browsers | ||
// connect to it via local network. for example safari on browserstack | ||
host: ['localhost', '127.0.0.1'].includes(this.config.hostname) | ||
? undefined | ||
: this.config.hostname, | ||
}); | ||
if (this.server && this.config.hostname) { | ||
await (promisify<ListenOptions>(this.server.listen).bind(this.server) as any)({ | ||
port: this.config.port, | ||
// in case of localhost the host should be undefined, otherwise some browsers | ||
// connect to it via local network. for example safari on browserstack | ||
host: ['localhost', '127.0.0.1'].includes(this.config.hostname) | ||
? undefined | ||
: this.config.hostname, | ||
}); | ||
} | ||
@@ -66,2 +74,6 @@ for (const plugin of this.config.plugins ?? []) { | ||
private closeServer() { | ||
if (!this.server) { | ||
return; | ||
} | ||
// close all open connections | ||
@@ -73,3 +85,3 @@ for (const connection of this.connections) { | ||
return new Promise<void>(resolve => { | ||
this.server.close(err => { | ||
this.server!.close(err => { | ||
if (err) { | ||
@@ -76,0 +88,0 @@ console.error(err); |
@@ -10,3 +10,3 @@ import { Middleware } from 'koa'; | ||
*/ | ||
port: number; | ||
port?: number; | ||
/** | ||
@@ -21,3 +21,7 @@ * Root directory to serve files from. All served files must be accessible with | ||
*/ | ||
hostname: string; | ||
hostname?: string; | ||
/** | ||
* Whether to run server or not and allow to use as a middleware connected to another server. | ||
*/ | ||
middlewareMode?: boolean; | ||
basePath?: string; | ||
@@ -24,0 +28,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
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
299683
5751
9