{"version":3,"sources":["jsdelivr-header.js","/npm/sgo@3.0.3/lib/server.js"],"names":[],"mappings":"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","file":"/npm/sgo@3.0.3/lib/server.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/sgo@3.0.3/lib/server.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst http_1 = __importDefault(require(\"http\"));\nconst chokidar_1 = __importDefault(require(\"chokidar\"));\nconst child_process_1 = __importDefault(require(\"child_process\"));\nconst get_port_1 = __importDefault(require(\"get-port\"));\nconst path_1 = __importDefault(require(\"path\"));\nconst os_1 = __importDefault(require(\"os\"));\nconst url_1 = __importDefault(require(\"url\"));\nconst fs_extra_1 = __importDefault(require(\"fs-extra\"));\nconst utils_1 = require(\"./utils\");\nconst notFound_1 = __importDefault(require(\"./utils/notFound\"));\nexports.default = async (args) => {\n    const reloadPort = await (0, get_port_1.default)({ port: args['reload-port'] });\n    const port = await (0, get_port_1.default)({ port: args.port });\n    const rootDir = path_1.default.resolve(process.cwd(), args.dir || '');\n    if (port !== args.port) {\n        console.log(' \\x1b[43;1m', 'Warning:', '\\x1b[0m', `fall back to a random port ${port}`);\n    }\n    let watchRes;\n    // Initialize watcher.\n    // Watch the target directory for changes and trigger reload\n    const watcher = chokidar_1.default.watch(rootDir, {\n        ignored: /(^|[\\/\\\\])\\../,\n        persistent: true\n    });\n    watcher.on('change', (path, stats) => {\n        if (watchRes && args.reload) {\n            (0, utils_1.sendMessage)(watchRes, 'message', 'reloading page');\n            console.log('\\n \\x1b[44m', 'RELOADING', '\\x1b[0m ', path.replace(rootDir, ''));\n        }\n    });\n    /**\n     * Start file watching server\n     */\n    http_1.default.createServer((req, res) => {\n        // Open the event stream for live reload\n        res.writeHead(200, {\n            Connection: 'keep-alive',\n            'Content-Type': 'text/event-stream',\n            'Cache-Control': 'no-cache',\n            'Access-Control-Allow-Origin': '*'\n        });\n        // Send an initial ack event to stop request pending\n        (0, utils_1.sendMessage)(res, 'connected', 'awaiting change');\n        // Send a ping event every minute to prevent console errors\n        setInterval(utils_1.sendMessage, 60000, res, 'ping', 'still waiting');\n        if (args.reload) {\n            watchRes = res;\n        }\n    }).listen(reloadPort);\n    http_1.default.createServer(async (req, res) => {\n        let pathname = url_1.default.parse(req.url || '').pathname || '';\n        let filePath = path_1.default.join(rootDir, pathname);\n        const isExists = await fs_extra_1.default.pathExists(filePath);\n        res.projectDir = rootDir;\n        res.pathname = pathname;\n        if (!isExists) {\n            if (args.fallback) {\n                console.log('\\n \\x1b[44m', 'Fallback', '\\x1b[0m\\n');\n                let fileStr = await fs_extra_1.default.readFile(path_1.default.join(rootDir, args.fallback), 'binary');\n                return (0, utils_1.sendFile)(res, pathname, 200, fileStr, 'html');\n            }\n            return (0, notFound_1.default)(res, pathname, 'Not Found');\n        }\n        const stat = await fs_extra_1.default.stat(filePath);\n        if (stat.isDirectory()) {\n            const isIndexExists = await fs_extra_1.default.pathExists(path_1.default.join(filePath, 'index.html'));\n            if (!isIndexExists) {\n                res.fileDir = filePath;\n                return (0, notFound_1.default)(res, path_1.default.join(pathname, 'index.html'));\n            }\n            filePath = path_1.default.join(filePath, 'index.html');\n            pathname = path_1.default.join(pathname, 'index.html');\n        }\n        let fileStr = await fs_extra_1.default.readFile(filePath, 'binary');\n        const ext = (0, utils_1.getExt)(filePath);\n        (0, utils_1.sendFile)(res, pathname, 200, ext === 'html' ? fileStr + (0, utils_1.reloadScript)(reloadPort) : fileStr, ext);\n    }).listen(port);\n    // ----------------------------------\n    // Get available IP addresses\n    // ----------------------------------\n    const interfaces = os_1.default.networkInterfaces();\n    const ips = Object.values(interfaces)\n        .reduce((a, b) => [...a, ...b], [])\n        .filter(ip => ip.family === 'IPv4' && ip.internal === false)\n        .map(ip => `http://${ip.address}:${port}`);\n    console.log(`\\n 🗂  Serving files from\\x1b[33;1m ./${args.dir}\\x1b[0m on \\x1b[32;1m http://localhost:${port} \\x1b[0m`);\n    ips.length > 0 && console.log(` 📡 Exposed to the network on \\x1b[32;1m ${ips[0]}\\x1b[0m`);\n    console.log(` 🖥  Using\\x1b[32;1m index.html\\x1b[0m as the fallback for route requests`);\n    console.log(` ♻️  Reloading the browser when files under\\x1b[33;1m ./${args.dir}\\x1b[0m change\\n`);\n    const open = process.platform == 'darwin' ? 'open' : process.platform == 'win32' ? 'start' : 'xdg-open';\n    args.browser && child_process_1.default.exec(`${open} http://localhost:${port}`);\n};\n"]}