{"version":3,"sources":["jsdelivr-header.js","/npm/@saltcorn/system-info@0.1.5/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,GAAK,QAAQ,sBACb,4BAAE,6BAAgC,QAAQ,gCAE1C,cAAgB,QAAQ,iBAE9B,SAAS,MAAM,EAAS,EAAM,EAAY,CAAC,GACzC,OAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,IAAI,EAAY,GAEhB,MAAM,EAAiB,cAAc,MAAM,EAAS,EAAM,GAE1D,IAAI,EAAO,GAEX,EAAe,GAAG,UAAW,QAAQ,KAErC,EAAe,OAAO,GAAG,QAAQ,IAE/B,GAAQ,EAAM,UAAU,IAG1B,EAAe,OAAO,GAAG,QAAQ,IAC/B,GAAa,EAAM,UAAU,IAG/B,EAAe,GAAG,SAAS,SAAU,GACnC,GAAI,EAAO,EACT,OAAO,EAAO,IAAI,MAAM,GAAG,0BAAkC,KAAW,EAAK,KAAK,UAGpF,EAAQ,EACV,IAEA,EAAe,GAAG,SAAS,SAAU,GACnC,EAAO,EACT,GAAE,GAEN,CAEA,MAAM,UAAY,CAChB,IAAK,gBACW,GAAG,eAAe,YAElC,SAAS,EACT,YAAa,kBACb,UAAW,IAGP,UAAY,6BAA4B,gBAC9B,GAAG,aAAa,MAC7B,CACD,CAAE,KAAM,MAAO,KAAM,UAAW,aAAa,GAC7C,CAAE,KAAM,OAAQ,KAAM,UACtB,CAAE,KAAM,MAAO,KAAM,SACrB,CAAE,KAAM,MAAO,KAAM,SACrB,CAAE,KAAM,OAAQ,KAAM,YAGlB,aAAe,6BACnB,OAAS,YACP,IAAI,GAAW,EACX,EAAK,CAAC,KAAM,QAWhB,GAVI,GAAO,MAAM,OACf,EAAG,KAAK,MAAO,EAAG,KAAK,EAAM,KAAK,QACzB,GAAO,OAChB,EAAG,KAAK,MAAO,EAAG,KAAK,EAAM,OAE3B,GAAO,WAAW,KACpB,EAAG,KAAK,WACR,EAAG,KAAK,GAAG,EAAM,UAAU,gBAC3B,GAAW,GAET,MAAM,QAAQ,GAAO,WACvB,IAAK,MAAM,KAAM,GAAO,UAClB,EAAG,KACL,EAAG,KAAK,WACR,EAAG,KAAK,GAAG,EAAG,gBACd,GAAW,GAIZ,IACH,EAAG,KAAK,WACR,EAAG,KAAK,eAEV,MAAM,QAAa,MAAM,aAAc,GACjC,EAAM,IAAI,KAgBhB,OAfa,EAAK,MAAM,MAAM,KAAK,IACjC,IAAI,EACJ,IACE,EAAI,KAAK,MAAM,EACjB,CACA,MAAO,GAAK,OAAO,IAAK,CACxB,MAAM,EAAO,IAAI,MAAM,EAAE,qBAAuB,KAChD,MAAO,CACL,mBAAoB,EAAE,qBACtB,KAAM,EAAE,kBACR,QAAS,EAAE,QACX,OACA,UAAW,KAAK,IAAI,EAAM,GAAQ,KACnC,IACA,QAAO,GAAK,GACR,GAET,CACE,CAAE,KAAM,qBAAsB,KAAM,SAAU,aAAa,GAC3D,CAAE,KAAM,OAAQ,KAAM,UACtB,CAAE,KAAM,UAAW,KAAM,UACzB,CAAE,KAAM,OAAQ,KAAM,QACtB,CAAE,KAAM,YAAa,KAAM,WAIzB,YAAc,CAClB,IAAK,UACH,MAAM,QAAc,GAAG,SACvB,IAAI,EAAO,EACP,EAAO,EAOX,OANA,EAAM,SAAS,IACT,GAAK,EAAE,MAAQ,EAAE,OACnB,GAAQ,EAAE,KACV,GAAQ,EAAE,KACZ,IAEY,EAAO,EAAd,GAAmB,EAE5B,SAAS,EACT,UAAW,GACX,YAAa,8BAET,UAAY,CAChB,IAAK,UACH,MAAM,QAAc,GAAG,MACvB,OAAO,IAAa,EAAM,UAAY,EAAM,MAA/B,GAAqC,EAEpD,YAAa,+BACb,SAAS,EACT,UAAW,IAGb,OAAO,QAAU,CACf,sBAAuB,EACvB,UAAW,CAAE,oBAAW,wBAAa,qBACrC,gBAAiB,CAAE,oBAAW","file":"/npm/@saltcorn/system-info@0.1.5/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@saltcorn/system-info@0.1.5/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","const si = require(\"systeminformation\");\nconst { json_list_to_external_table } = require(\"@saltcorn/data/plugin-helper\");\n\nconst child_process = require(\"child_process\");\n\nfunction spawn(command, args, spawnOpts = {}) {\n  return new Promise((resolve, reject) => {\n    let errorData = \"\";\n\n    const spawnedProcess = child_process.spawn(command, args, spawnOpts);\n\n    let data = \"\";\n\n    spawnedProcess.on(\"message\", console.log);\n\n    spawnedProcess.stdout.on(\"data\", chunk => {\n\n      data += chunk.toString();\n    });\n\n    spawnedProcess.stderr.on(\"data\", chunk => {\n      errorData += chunk.toString();\n    });\n\n    spawnedProcess.on(\"close\", function (code) {\n      if (code > 0) {\n        return reject(new Error(`${errorData} (Failed Instruction: ${command} ${args.join(\" \")})`));\n      }\n\n      resolve(data);\n    });\n\n    spawnedProcess.on(\"error\", function (err) {\n      reject(err);\n    });\n  });\n}\n\nconst cpu_usage = {\n  run: async () => {\n    return (await si.currentLoad()).currentLoad;\n  },\n  isAsync: true,\n  description: \"System CPU load\",\n  arguments: [],\n};\n\nconst processes = json_list_to_external_table(async () => {\n  return (await si.processes()).list;\n}, [\n  { name: \"pid\", type: \"Integer\", primary_key: true },\n  { name: \"name\", type: \"String\" },\n  { name: \"cpu\", type: \"Float\" },\n  { name: \"mem\", type: \"Float\" },\n  { name: \"user\", type: \"String\" },\n]);\n\nconst journald_log = json_list_to_external_table(\n  async ({ where }) => {\n    let setSince = false\n    let qs = [\"-o\", \"json\"];\n    if (where?.unit?.ilike) {\n      qs.push(\"-t\"); qs.push(where.unit.ilike);\n    } else if (where?.unit) {\n      qs.push(\"-t\"); qs.push(where.unit);\n    };\n    if (where?.hours_ago?.lt) {\n      qs.push(\"--since\")\n      qs.push(`${where.hours_ago.lt} hours ago`)\n      setSince = true\n    }\n    if (Array.isArray(where?.hours_ago)) {\n      for (const wh of where?.hours_ago) {\n        if (wh.lt) {\n          qs.push(\"--since\")\n          qs.push(`${wh.lt} hours ago`)\n          setSince = true\n        }\n      }\n    }\n    if (!setSince) {\n      qs.push(\"--since\")\n      qs.push(`1 hour ago`)\n    }\n    const sout = await spawn(`journalctl`, qs);\n    const now = new Date();\n    const rows = sout.split(\"\\n\").map((s) => {\n      let o\n      try {\n        o = JSON.parse(s);\n      }\n      catch (e) { return null }\n      const time = new Date(+o.__REALTIME_TIMESTAMP / 1000);\n      return {\n        realtime_timestamp: o.__REALTIME_TIMESTAMP,\n        unit: o.SYSLOG_IDENTIFIER,\n        message: o.MESSAGE,\n        time,\n        hours_ago: Math.abs(now - time) / 36e5,\n      };\n    }).filter(o => o);\n    return rows\n  },\n  [\n    { name: \"realtime_timestamp\", type: \"String\", primary_key: true },\n    { name: \"unit\", type: \"String\" },\n    { name: \"message\", type: \"String\" },\n    { name: \"time\", type: \"Date\" },\n    { name: \"hours_ago\", type: \"Float\" },\n  ]\n);\n\nconst drive_usage = {\n  run: async () => {\n    const disks = await si.fsSize();\n    let size = 0;\n    let used = 0;\n    disks.forEach((d) => {\n      if (d && d.used && d.size) {\n        size += d.size;\n        used += d.used;\n      }\n    });\n    return 100 * (used / size);\n  },\n  isAsync: true,\n  arguments: [],\n  description: \"System disk occupancy, (%)\",\n};\nconst mem_usage = {\n  run: async () => {\n    const simem = await si.mem();\n    return 100 - 100 * (simem.available / simem.total);\n  },\n  description: \"System memory occupancy, (%)\",\n  isAsync: true,\n  arguments: [],\n};\n\nmodule.exports = {\n  sc_plugin_api_version: 1,\n  functions: { cpu_usage, drive_usage, mem_usage },\n  external_tables: { processes, journald_log },\n};\n"]}