{"version":3,"sources":["jsdelivr-header.js","/npm/docker-dashboard-app@1.4.8/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;ACLA,IAAI,QAAU,QAAQ,WAClB,KAAO,QAAQ,QACf,KAAO,QAAQ,QAAQ,KACvB,IAAM,UACN,OAAS,QAAQ,QAAQ,OAAO,KAChC,GAAK,QAAQ,YAAR,CAAqB,QAC1B,KAAO,QAAQ,QACnB,MAAM,KAAO,QAAQ,IAAI,MAAQ,IAC3B,OAAS,QAAQ,eA2DvB,SAAS,oBACL,OAAO,eAAe,CAAE,KAAK,IAAQ,CAAC,EAAK,KACvC,GAAG,KAAK,kBAAmB,EAAU,GAE7C,CACA,SAAS,gBACL,OAAO,WAAW,CAAE,KAAK,IAAS,CAAC,EAAK,KACpC,GAAG,KAAK,cAAe,EAAM,GAErC,CACA,SAAS,kBACL,OAAO,aAAa,CAAE,KAAK,IAAQ,CAAC,EAAK,KACrC,GAAG,KAAK,gBAAiB,EAAQ,GAEzC,CAEA,SAAS,qBAAoB,SAAE,EAAQ,YAAE,EAAW,eAAE,EAAc,kBAAE,IAIlE,OAHe,EAAW,IACR,EAAiB,GACI,GAE3C,CAEA,eAAe,wBACX,IAAI,QAAmB,OAAO,eAAe,CAAE,KAAK,IACpD,GAAI,EAAY,CACZ,IAAI,QAAwB,EAAW,QAAO,MAAO,EAAK,KACtD,IAAI,EAAkB,OAAO,aAAa,EAAU,IAChD,QAAY,EAAgB,MAAM,CAAE,QAAQ,IAChD,GAAI,EAAK,CACL,IAAI,EAAW,EAAI,UAAU,UAAU,YACnC,EAAc,EAAI,aAAa,UAAU,YACzC,EAAiB,EAAI,UAAU,iBAC/B,EAAoB,EAAI,aAAa,iBACzC,MAAM,QAAoB,EAmB1B,OAlBK,EAAY,aACb,EAAY,WAAa,GAE7B,EAAY,YAAc,oBAAoB,CAC1C,WACA,cACA,iBACA,sBAGC,EAAY,EAAU,MAAM,GAAG,OAAO,MACvC,EAAY,EAAU,MAAM,GAAG,OAAO,IAAM,oBAAoB,CAC5D,WACA,cACA,iBACA,uBAGD,CACX,IACD,CAAC,GACJ,GAAG,KAAK,kBAAmB,EAC/B,CACJ,CAnHA,IAAI,IAAI,QAER,IAAI,IAAI,QAAQ,OAAO,KAAK,UAAW,UAEvC,IAAI,IAAI,MAAM,CAAC,EAAK,EAAK,KACrB,EAAI,SAAS,KAAK,UAAW,mBAAkB,IAGnD,OAAO,OAAO,MAAM,KAChB,QAAQ,IAAI,2CAA4C,MACxD,KAAK,wBAAuB,IAGhC,GAAG,GAAG,cAAe,IACjB,EAAO,GAAG,mBAAmB,KACzB,mBAAkB,IAEtB,EAAO,GAAG,eAAe,KACrB,eAAc,IAElB,EAAO,GAAG,iBAAiB,KACvB,iBAAgB,IAKpB,EAAO,GAAG,mBAAmB,KACzB,uBAAsB,IAE1B,EAAO,GAAG,mBAAoB,IAC1B,MAAM,EAAY,OAAO,aAAa,EAAK,IACvC,GACA,EAAU,OAAM,CAAC,EAAK,IAAS,qBACnC,IAEJ,EAAO,GAAG,kBAAmB,IACzB,MAAM,EAAY,OAAO,aAAa,EAAK,IACvC,GACA,EAAU,MAAK,CAAC,EAAK,IAAS,qBAClC,IAEJ,EAAO,GAAG,qBAAsB,IAC5B,MAAM,EAAY,OAAO,aAAa,EAAK,IACvC,GACA,EAAU,SAAQ,CAAC,EAAK,IAAS,qBACrC,IAEJ,EAAO,GAAG,oBAAqB,IAC3B,MAAM,EAAY,OAAO,aAAa,EAAK,IACvC,GACA,EAAU,MAAK,CAAC,EAAK,KACjB,EAAU,QAAO,CAAC,EAAK,IAAS,qBAAmB,GAE3D,GACH,IAgGL,YAAY,sBAAuB,MACnC,YAAY,kBAAmB,KAC/B,YAAY,cAAe,KAC3B,YAAY,gBAAiB","file":"/npm/docker-dashboard-app@1.4.8/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/docker-dashboard-app@1.4.8/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\nlet express = require('express')\nlet open = require('open')\nlet join = require('path').join\nlet app = express()\nlet server = require('http').Server(app)\nlet io = require('socket.io')(server)\nlet cors = require('cors')\nconst PORT = process.env.PORT || 8000\nconst docker = require('./dockerapi')\n\napp.use(cors())\n\napp.use(express.static(join(__dirname, 'dist')))\n\napp.get('/*', (req, res, next) => {\n    res.sendFile(join(__dirname, 'dist/index.html'))\n})\n\nserver.listen(PORT, () => {\n    console.log('Docker Dashboard Server running on port ', PORT)\n    open('http://localhost:8000')\n})\n\nio.on('connection', (socket) => {\n    socket.on('containers.list', () => {\n        refreshContainers()\n    })\n    socket.on('images.list', () => {\n        refreshImages()\n    })\n    socket.on('networks.list', () => {\n        refreshNetworks()\n    })\n    /*socket.on('cpu.usage', () => {\n        refreshCpuUsage()\n    })*/\n    socket.on('container.usage', () => {\n        refreshContainerUsage()\n    })\n    socket.on('container.start', (args) => {\n        const container = docker.getContainer(args.id)\n        if (container) {\n            container.start((err, data) => refreshContainers())\n        }\n    })\n    socket.on('container.stop', (args) => {\n        const container = docker.getContainer(args.id)\n        if (container) {\n            container.stop((err, data) => refreshContainers())\n        }\n    })\n    socket.on('container.restart', (args) => {\n        const container = docker.getContainer(args.id)\n        if (container) {\n            container.restart((err, data) => refreshContainers())\n        }\n    })\n    socket.on('container.remove', (args) => {\n        const container = docker.getContainer(args.id)\n        if (container) {\n            container.stop((err, data) => {\n                container.remove((err, data) => refreshContainers())\n            })\n        }\n    })\n})\n\nfunction refreshContainers() {\n    docker.listContainers({ all: true }, (err, containers) => {\n        io.emit('containers.list', containers)\n    })\n}\nfunction refreshImages() {\n    docker.listImages({ all: false }, (err, images) => {\n        io.emit('images.list', images)\n    })\n}\nfunction refreshNetworks() {\n    docker.listNetworks({ all: true }, (err, networks) => {\n        io.emit('networks.list', networks)\n    })\n}\n\nfunction calculatePercentage({ cpuStats, preCpuStats, systemCpuStats, systemPreCpuStats }) {\n    let cpuDelta = cpuStats - preCpuStats\n    let systemDelta = systemCpuStats - systemPreCpuStats\n    let usage = (cpuDelta / systemDelta) * 100\n    return usage\n}\n\nasync function refreshContainerUsage() {\n    let containers = await docker.listContainers({ all: true })\n    if (containers) {\n        let containersUsage = await containers.reduce(async (agg, container) => {\n            let dockerContainer = docker.getContainer(container.Id)\n            let res = await dockerContainer.stats({ stream: false })\n            if (res) {\n                let cpuStats = res.cpu_stats.cpu_usage.total_usage\n                let preCpuStats = res.precpu_stats.cpu_usage.total_usage\n                let systemCpuStats = res.cpu_stats.system_cpu_usage\n                let systemPreCpuStats = res.precpu_stats.system_cpu_usage\n                const resolvedAgg = await agg\n                if (!resolvedAgg.totalUsage) {\n                    resolvedAgg.totalUsage = 0\n                }\n                resolvedAgg.totalUsage += calculatePercentage({\n                    cpuStats,\n                    preCpuStats,\n                    systemCpuStats,\n                    systemPreCpuStats,\n                })\n\n                if (!resolvedAgg[container.Names[0].substr(1)]) {\n                    resolvedAgg[container.Names[0].substr(1)] = calculatePercentage({\n                        cpuStats,\n                        preCpuStats,\n                        systemCpuStats,\n                        systemPreCpuStats,\n                    })\n                }\n                return resolvedAgg\n            }\n        }, {})\n        io.emit('container.usage', containersUsage)\n    }\n}\n\n/*function refreshCpuUsage() {\n    docker.listContainers({ all: true }, (err, containers) => {\n        if (containers) {\n            let totalUsage = containers.reduce(\n                (prev, current) => {\n                    let dockerContainer = docker.getContainer(current.Id)\n                    dockerContainer.stats({ stream: false }, (err, res) => {\n                        if (err) {\n                            console.log(err)\n                        } else if (res) {\n                            prev.cpuStats += res.cpu_stats.cpu_usage.total_usage\n                            prev.preCpuStats += res.precpu_stats.cpu_usage.total_usage\n                            prev.systemCpuStats += res.cpu_stats.system_cpu_usage\n                            prev.systemPreCpuStats += res.precpu_stats.system_cpu_usage\n                            console.log('prev', prev)\n                        } else {\n                            return prev\n                        }\n                    })\n                    return prev\n                },\n                {\n                    cpuStats: 0,\n                    preCpuStats: 0,\n                    systemCpuStats: 0,\n                    systemPreCpuStats: 0,\n                },\n            )\n            io.emit('cpu.usage', calculatePercentage(totalUsage))\n        }\n    })\n}*/\n//setInterval(refreshCpuUsage, 2000)\nsetInterval(refreshContainerUsage, 2500)\nsetInterval(refreshContainers, 2000)\nsetInterval(refreshImages, 2000)\nsetInterval(refreshNetworks, 2000)\n"]}