metallic-app
Version:
Koa application for CARTO services
52 lines (41 loc) • 4.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _metallicInterfaces = require('metallic-interfaces');
var _metallicErrors = require('metallic-errors');
class HttpServer extends _metallicInterfaces.RunnerInterface {
constructor({ app, port }) {
super();
this.app = app;
this.port = port;
this.httpServer = null;
}
get provider() {
return this.app.provider;
}
run() {
return new Promise((resolve, reject) => {
this.httpServer = this.app.listen(this.port);
if (!this.httpServer) {
return reject(new _metallicErrors.NotReadyError('Server'));
}
this.httpServer.once('error', err => reject(err));
this.httpServer.once('listening', () => {
resolve(this.httpServer);
});
});
}
close() {
return new Promise((resolve, reject) => {
if (!this.httpServer) {
return resolve();
}
this.httpServer.once('close', () => resolve());
this.httpServer.once('error', err => reject(err));
this.httpServer.close();
});
}
}
exports.default = HttpServer;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odHRwLXNlcnZlci5qcyJdLCJuYW1lcyI6WyJIdHRwU2VydmVyIiwiY29uc3RydWN0b3IiLCJhcHAiLCJwb3J0IiwiaHR0cFNlcnZlciIsInByb3ZpZGVyIiwicnVuIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJsaXN0ZW4iLCJvbmNlIiwiZXJyIiwiY2xvc2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUVlLE1BQU1BLFVBQU4sNkNBQXlDO0FBQ3REQyxjQUFhLEVBQUVDLEdBQUYsRUFBT0MsSUFBUCxFQUFiLEVBQTRCO0FBQzFCO0FBQ0EsU0FBS0QsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNEOztBQUVELE1BQUlDLFFBQUosR0FBZ0I7QUFDZCxXQUFPLEtBQUtILEdBQUwsQ0FBU0csUUFBaEI7QUFDRDs7QUFFREMsUUFBTztBQUNMLFdBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUN0QyxXQUFLTCxVQUFMLEdBQWtCLEtBQUtGLEdBQUwsQ0FBU1EsTUFBVCxDQUFnQixLQUFLUCxJQUFyQixDQUFsQjs7QUFFQSxVQUFJLENBQUMsS0FBS0MsVUFBVixFQUFzQjtBQUNwQixlQUFPSyxPQUFPLGtDQUFrQixRQUFsQixDQUFQLENBQVA7QUFDRDs7QUFFRCxXQUFLTCxVQUFMLENBQWdCTyxJQUFoQixDQUFxQixPQUFyQixFQUE4QkMsT0FBT0gsT0FBT0csR0FBUCxDQUFyQzs7QUFFQSxXQUFLUixVQUFMLENBQWdCTyxJQUFoQixDQUFxQixXQUFyQixFQUFrQyxNQUFNO0FBQ3RDSCxnQkFBUSxLQUFLSixVQUFiO0FBQ0QsT0FGRDtBQUdELEtBWk0sQ0FBUDtBQWFEOztBQUVEUyxVQUFTO0FBQ1AsV0FBTyxJQUFJTixPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDLFVBQUksQ0FBQyxLQUFLTCxVQUFWLEVBQXNCO0FBQ3BCLGVBQU9JLFNBQVA7QUFDRDs7QUFFRCxXQUFLSixVQUFMLENBQWdCTyxJQUFoQixDQUFxQixPQUFyQixFQUE4QixNQUFNSCxTQUFwQztBQUNBLFdBQUtKLFVBQUwsQ0FBZ0JPLElBQWhCLENBQXFCLE9BQXJCLEVBQThCQyxPQUFPSCxPQUFPRyxHQUFQLENBQXJDO0FBQ0EsV0FBS1IsVUFBTCxDQUFnQlMsS0FBaEI7QUFDRCxLQVJNLENBQVA7QUFTRDtBQXRDcUQ7a0JBQW5DYixVIiwiZmlsZSI6Imh0dHAtc2VydmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVubmVySW50ZXJmYWNlIH0gZnJvbSAnbWV0YWxsaWMtaW50ZXJmYWNlcydcbmltcG9ydCB7IE5vdFJlYWR5RXJyb3IgfSBmcm9tICdtZXRhbGxpYy1lcnJvcnMnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBTZXJ2ZXIgZXh0ZW5kcyBSdW5uZXJJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvciAoeyBhcHAsIHBvcnQgfSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmFwcCA9IGFwcFxuICAgIHRoaXMucG9ydCA9IHBvcnRcbiAgICB0aGlzLmh0dHBTZXJ2ZXIgPSBudWxsXG4gIH1cblxuICBnZXQgcHJvdmlkZXIgKCkge1xuICAgIHJldHVybiB0aGlzLmFwcC5wcm92aWRlclxuICB9XG5cbiAgcnVuICgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwU2VydmVyID0gdGhpcy5hcHAubGlzdGVuKHRoaXMucG9ydClcblxuICAgICAgaWYgKCF0aGlzLmh0dHBTZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgTm90UmVhZHlFcnJvcignU2VydmVyJykpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuaHR0cFNlcnZlci5vbmNlKCdlcnJvcicsIGVyciA9PiByZWplY3QoZXJyKSlcblxuICAgICAgdGhpcy5odHRwU2VydmVyLm9uY2UoJ2xpc3RlbmluZycsICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmh0dHBTZXJ2ZXIpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjbG9zZSAoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5odHRwU2VydmVyKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5odHRwU2VydmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4gcmVzb2x2ZSgpKVxuICAgICAgdGhpcy5odHRwU2VydmVyLm9uY2UoJ2Vycm9yJywgZXJyID0+IHJlamVjdChlcnIpKVxuICAgICAgdGhpcy5odHRwU2VydmVyLmNsb3NlKClcbiAgICB9KVxuICB9XG59XG4iXX0=