diff --git a/package.json b/package.json index 78ba8f1..b4d48b5 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "source-map-support": "^0.5.3", "tslib": "^1.8.1", "url-parse": "^1.2.0", - "wait-port": "^0.2.2", "walk-sync": "^0.3.2", "webpack": "^3.10.0" }, @@ -72,7 +71,7 @@ "pretest": "npm run build", "build": "rollup -c", "dev": "rollup -cw", - "prepublish": "npm test", + "prepublishOnly": "npm test", "update_mime_types": "curl http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types | grep -e \"^[^#]\" > src/middleware/mime-types.md" }, "repository": "https://github.com/sveltejs/sapper", diff --git a/src/cli/dev.ts b/src/cli/dev.ts index 0cc7798..2fa6375 100644 --- a/src/cli/dev.ts +++ b/src/cli/dev.ts @@ -144,7 +144,7 @@ export default async function dev() { deferreds.client.promise.then(() => { function restart() { - wait_for_port(3000, deferreds.server.fulfil); // TODO control port + wait_for_port(3000).then(deferreds.server.fulfil); // TODO control port } if (proc) { diff --git a/src/cli/export.ts b/src/cli/export.ts index 802c8b2..a5af63f 100644 --- a/src/cli/export.ts +++ b/src/cli/export.ts @@ -88,8 +88,7 @@ export default async function exporter(export_dir: string) { }); } - wait_for_port(port, () => { - handle(new URL(origin)) // TODO all static routes - .then(() => proc.kill()) - }); + wait_for_port(port) + .then(() => handle(new URL(origin))) // TODO all static routes + .then(() => proc.kill()); } \ No newline at end of file diff --git a/src/cli/utils.ts b/src/cli/utils.ts index a687784..0c1078e 100644 --- a/src/cli/utils.ts +++ b/src/cli/utils.ts @@ -1,24 +1,25 @@ -import waitPort from 'wait-port'; +import * as net from 'net'; -export function wait_for_port(port: number, cb: () => void) { - waitPort({ port }).then(cb); +export function wait_for_port(port: number, timeout = 5000) { + return new Promise((fulfil, reject) => { + get_connection(port, fulfil); + setTimeout(() => reject(new Error(`timed out waiting for connection`)), timeout); + }); } -// import * as net from 'net'; +export function get_connection(port: number, cb: () => void) { + const socket = net.createConnection(port, 'localhost', () => { + cb(); + socket.destroy(); + }); -// export function wait_for_port(port: number, cb: () => void) { -// const socket = net.createConnection(port, 'localhost', () => { -// cb(); -// socket.destroy(); -// }); + socket.on('error', err => { + setTimeout(() => { + get_connection(port, cb); + }, 10); + }); -// socket.on('error', err => { -// setTimeout(() => { -// wait_for_port(port, cb); -// }, 100); -// }); - -// setTimeout(() => { -// socket.destroy(); -// }, 100); -// } \ No newline at end of file + setTimeout(() => { + socket.destroy(); + }, 1000); +} \ No newline at end of file