{"code":"import webpack from 'webpack';\r\nimport express from 'express';\r\nimport findUp from 'find-up';\r\nimport middleware from 'webpack-dev-middleware';\r\nimport workdirPidManager from '@yolodev/workdir-pid';\r\nconst env = (name, defaultValue, map) => {\r\n    const envVal = process.env[name];\r\n    if (envVal !== null) {\r\n        try {\r\n            return map(envVal);\r\n        }\r\n        catch (_) { }\r\n    }\r\n    return defaultValue;\r\n};\r\nconst getPublicPath = (compiler) => {\r\n    if (!compiler.options) {\r\n        return null;\r\n    }\r\n    if (!compiler.options.output) {\r\n        return null;\r\n    }\r\n    if (!compiler.options.output.publicPath) {\r\n        return null;\r\n    }\r\n    return compiler.options.output.publicPath;\r\n};\r\nconst defaultDevServerConfig = {\r\n    hot: true,\r\n    port: env('PORT', 3000, v => parseInt(v, 10)),\r\n};\r\nconst delay = (n) => new Promise(resolve => setTimeout(resolve, n));\r\nconst run = async () => {\r\n    const mgr = workdirPidManager('webpack');\r\n    mgr.connect();\r\n    const webpackConfPath = await findUp('webpack.config.js');\r\n    if (!webpackConfPath) {\r\n        process.send({\r\n            error: `No 'webpack.config.js' found relative to '${process.cwd()}'.`,\r\n        });\r\n        await delay(500);\r\n        return;\r\n    }\r\n    try {\r\n        const config = require(webpackConfPath);\r\n        const { devServer = defaultDevServerConfig } = config;\r\n        const compiler = webpack(config);\r\n        const app = express();\r\n        app.use(middleware(compiler, {\r\n            ...(config.devServer || {}),\r\n        }));\r\n        const server = app.listen(typeof devServer.port === 'number'\r\n            ? devServer.port\r\n            : defaultDevServerConfig.port, () => {\r\n            process.send({\r\n                data: {\r\n                    address: server.address,\r\n                    path: getPublicPath(compiler),\r\n                },\r\n            });\r\n        });\r\n    }\r\n    catch (e) {\r\n        process.send({ error: String(e.stack || e) });\r\n        await delay(500);\r\n        return;\r\n    }\r\n};\r\nexport default run;\r\n","map":{"mappings":""}}
