{"version":3,"sources":["jsdelivr-header.js","/npm/wow-cli@0.0.4/lib/index.js"],"names":[],"mappings":"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","file":"/npm/wow-cli@0.0.4/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/wow-cli@0.0.4/lib/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","'use strict';\nvar downloader = require('./downloader');\nvar async = require('async');\nvar log = require('npmlog');\nvar fs = require('fs');\nvar path = require('path');\nvar rimraf = require('rimraf');\nlog.heading = 'wow';\n\nvar sources = {\n  'curse': require('./curse'),\n  'tukui': require('./tukui'), \n  'wowinterface': require('./wowinterface')\n};\n\nmodule.exports = function(wowpath) {\n  var wowdir = wowpath;\n  var addonsdir = path.join(wowdir, 'Interface', 'AddOns');\n  var cachedir = path.join(wowdir, 'Interface', 'ZipFiles');\n  require('mkdirp').sync(cachedir);\n  var savefile = path.join(wowdir, '.addons.json');\n  var save = require('../lib/save')(savefile);\n  \n  var wow = {};\n  \n  wow.version = require('../package.json').version;\n\n  wow._install = function(url, source, addon, version, nocache, callback) {\n    async.waterfall([\n      downloader.obtainZipFile.bind(null, source, addon, url, nocache, cachedir),\n      function(file, cb) {\n        cb(null, file, addonsdir);\n      },\n      downloader.extractZip,\n      function(folders, cb) {\n        save._read(function(err, data) {\n          if (err) cb(err);\n          if (!data.addons) data.addons = {};\n          data.addons[addon] = {\n            source: source,\n            version: version,\n            folders: folders\n          };\n          save._update(data, function(err) {\n            cb(err);\n          });\n        });\n      }\n    ], callback);\n  };\n\n  wow.install = function(source, addon, version, nocache, callback) {\n    if (!nocache) {\n      callback = nocache;\n      nocache = false;\n    }\n    if (!callback) {\n      callback = version;\n      version = null;\n    }\n    sources[source].getDownloadURL(addon, version, function(err, url, v) {\n      if (err) return callback(err);\n      wow._install(url, source, addon, v, nocache, callback);\n    });\n  };\n  \n  wow.update = function(addon, callback) {\n    wow.checkupdate(addon, function(err, result, source, url, version){\n      if (err) callback(err);\n      if (!result) {\n        callback(null, false);\n      } else {\n        wow._install(url, source, addon, version, false, function(err) {\n          callback(err, true);\n        });\n      }\n    });\n  };\n\n  wow.checkupdate = function(addon, callback) {\n    save._read(function(err, savefile) {\n      if (err) callback(err);\n      var source = savefile.addons[addon].source;\n      sources[source].getDownloadURL(addon, null, function(err, url, version) {\n        if (err) return callback(err);\n        var oldversion = savefile.addons[addon].version;\n        log.info('version', '%s:%s cur: %s, latest: %s%s', source, addon, oldversion, version, (version !== oldversion ? '!':''));\n        if (oldversion !== version) {\n          /**\n           * We're assuming that a new version # means a new version\n           * This is because some addon places (looking at you tukui.org)\n           * don't have a standardized method of update numbers.\n           */\n          callback(null, true, source, url, version);\n        } else {\n          callback(null, false);\n        }\n      });\n    });\n  };\n\n  wow.uninstall = function(addon, callback) {\n    save._read(function(err, data) {\n      if (err) return callback(err);\n      if (!data.addons[addon]) {\n        return callback('notfound');\n      }\n      async.each(data.addons[addon].folders, function(foldername, cb) {\n        var folder = path.join(addonsdir, foldername);\n        var needed = false;\n        Object.keys(data.addons).forEach(function(name) {\n          if (!needed && data.addons[name].folders.indexOf(foldername) !== -1 && name !== addon) {\n            log.fs('delete', 'folder %s needed by %s, not deleting', foldername, name);\n            needed = true;\n          }\n        });\n        if (!needed) {\n          log.fs('delete', folder);\n          rimraf(folder, cb);\n        } else {\n          cb(null);\n        }\n      }, function(err) {\n        if (err) return callback(err);\n        delete data.addons[addon];\n        save._update(data, function(err) {\n          callback(err);\n        });\n      });\n    });\n  };\n\n  wow.blame = function(folder, callback) {\n    save._read(function(err, data) {\n      if (err) return callback(err);\n      var addons = [];\n      Object.keys(data.addons).forEach(function(addon) {\n        if (data.addons[addon].folders.indexOf(folder) !== -1) {\n          addons.push(data.addons[addon].source + ':' + addon);\n        }\n      });\n      callback(null, addons);\n    });\n  };\n\n\n  wow.sources = Object.keys.bind(Object, sources);\n\n  return wow;\n};"]}