UNPKG

@wdio/static-server-service

Version:
51 lines (49 loc) 1.53 kB
// src/launcher.ts import fs from "node:fs"; import { join, resolve } from "node:path"; import { promisify } from "node:util"; import express from "express"; import morgan from "morgan"; import logger from "@wdio/logger"; var log = logger("@wdio/static-server-service"); var DEFAULT_LOG_NAME = "wdio-static-server-service.log"; var StaticServerLauncher = class { _folders; _port; _middleware; _server; constructor({ folders, port = 4567, middleware = [] }) { this._folders = folders ? Array.isArray(folders) ? folders : [folders] : null; this._port = port; this._middleware = middleware; } async onPrepare({ outputDir }) { if (!this._folders) { return; } this._server = express(); if (outputDir) { const file = join(outputDir, DEFAULT_LOG_NAME); const stream = fs.createWriteStream(file); this._server.use(morgan("tiny", { stream })); } this._folders.forEach((folder) => { log.info("Mounting folder `%s` at `%s`", resolve(folder.path), folder.mount); this._server.use(folder.mount, express.static(folder.path)); }); this._middleware.forEach( (ware) => this._server.use(ware.mount, ware.middleware) ); const listen = promisify(this._server.listen.bind(this._server)); await listen(this._port); log.info(`Static server running at http://localhost:${this._port}`); } }; // src/index.ts var StaticServerService = class { }; var launcher = StaticServerLauncher; export { StaticServerService as default, launcher };