{"version":3,"sources":["jsdelivr-header.js","/npm/discordcmd@1.1.0/index.js"],"names":[],"mappings":"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","file":"/npm/discordcmd@1.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/discordcmd@1.1.0/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","let stuff = null;\r\n\r\nconst { watch } = require('chokidar');\r\nconst { readdirSync } = require('fs');\r\n\r\nlet Collection;\r\ntry {\r\n  Collection = require('discord.js').Collection\r\n} catch { }\r\n\r\nconst types = {\r\n  'collection': Collection,\r\n  'json': Object,\r\n  'class': Collection\r\n};\r\n\r\nconst register = {\r\n  json(key, value, event, options) {\r\n    stuff[key] = value;\r\n    log(key, event, options);\r\n  },\r\n\r\n  collection(key, value, event, options) {\r\n    stuff.set(key, value);\r\n    log(key, event, options);\r\n  },\r\n\r\n  class(key, value, event, options) {\r\n    stuff.set(key, value);\r\n    log(key, event, options);\r\n  }\r\n}\r\n\r\nconst unregister = {\r\n  json(key, event, options) {\r\n    delete stuff[key];\r\n    log(key, event, options);\r\n  },\r\n\r\n  collection(key, event, options) {\r\n    stuff.delete(key);\r\n    log(key, event, options);\r\n  },\r\n\r\n  class(key, event, options) {\r\n    stuff.delete(key);\r\n    log(key, event, options);\r\n  }\r\n}\r\n\r\n/**\r\n * \r\n * @param {Object} options Options\r\n * @param {string} options.type Type of command handler (collection, class, json) [Default = collection]\r\n * @param {string} options.path Path to your commands folder relative to entry point [Default = ./commands]\r\n * @param {string} options.name The exported name variable for your commands, set to null for none [Default = name]\r\n * @param {string} options.alias The exported alias array variable for your commands, set to null for none [Default = aliases]\r\n * @param {string} options.logging The logging format, set to null for none (Variables: {event}, {name}) [Default = {event} Command [{name}]]\r\n * @param {string} options.static Whether it detects when a file is modified (Disable for deployment) [Default = false]\r\n * \r\n * @example discordcmd({\r\n *      type: \"collection\",\r\n *      path: \"./cmds\",\r\n *      name: \"trigger\",\r\n *      alias: \"alias\",\r\n *      logging: \"Command {name} has been {event}\",\r\n *      static: false\r\n * })\r\n */\r\n\r\nfunction init(options = {}) {\r\n  if (typeof options === 'string') options = { path: options }\r\n  options = {\r\n    type: types[options.type] ? options.type : 'collection',\r\n    path: typeof options.path === 'string' ? options.path : './commands',\r\n    name: typeof options.name === 'string' ? options.name : 'name',\r\n    alias: typeof options.alias === 'string' ? options.alias : 'aliases',\r\n    logging: options.logging === false ? options.logging : typeof options.logging === 'string' ? options.logging : '{event} Command [{name}]',\r\n    static: options.static === true ? true : false\r\n  };\r\n\r\n  stuff = new types[options.type]\r\n\r\n  if (options.static) load(options.path, options);\r\n  else watch(options.path)\r\n    .on('add', path => add(path, options))\r\n    .on('change', path => edit(path, options))\r\n    .on('unlink', path => remove(path, options))\r\n    .on('error', () => log('Unknown Error', 'Error', options))\r\n\r\n  return stuff;\r\n}\r\n\r\nfunction add(path, options) {\r\n  if (!path.endsWith('.js')) return;\r\n\r\n  let cmd;\r\n  try {\r\n    cmd = require('../../' + path);\r\n  } catch {\r\n    return log(path.replace(/^.+[\\/\\\\]/, '').replace(/\\.js$/, ''), 'Error', options)\r\n  }\r\n\r\n  cmd.path = '../../' + path;\r\n\r\n  register[options.type](cmd[options.name] || path.replace(/^.+[\\/\\\\]/, '').replace(/\\.js$/, ''), cmd, 'Loaded', options);\r\n  if (Array.isArray(cmd[options.alias])) cmd[options.alias].forEach(alias => register[options.type](alias, cmd, 'Loaded', options));\r\n}\r\n\r\nfunction edit(path, options) {\r\n  if (!path.endsWith('.js')) return;\r\n\r\n  delete require.cache[require.resolve('../../' + path)];\r\n\r\n  let cmd;\r\n  try {\r\n    cmd = require('../../' + path);\r\n  } catch {\r\n    return log(path.replace(/^.+[\\/\\\\]/, '').replace(/\\.js$/, ''), 'Error', options)\r\n  }\r\n\r\n  if (Array.isArray(cmd[options.alias])) cmd[options.alias]\r\n    .forEach(alias => register[options.type]\r\n      (alias, cmd, 'Loaded', options));\r\n\r\n  register[options.type]\r\n    (cmd[options.name] || path.replace(/^.+[\\/\\\\]/, '').replace(/\\.js$/, ''), cmd, 'Reloaded', options);\r\n}\r\n\r\nfunction remove(path, options) {\r\n  if (!path.endsWith('.js')) return;\r\n\r\n  [...stuff\r\n    .filter(cmd => cmd.path.endsWith(path))\r\n    .keys()\r\n  ]\r\n    .forEach(cmd => unregister[options.type](cmd, 'Deleted', options));\r\n}\r\n\r\nfunction log(key, event, options) {\r\n  if (typeof options.logging === 'string') console.log(\r\n    options.logging\r\n      .replace(/\\{event\\}/gi, event)\r\n      .replace(/\\{name\\}/gi, key)\r\n  );\r\n}\r\n\r\nfunction load(path, options) {\r\n  readdirSync(path)\r\n    .forEach(file => {\r\n      if (file.endsWith('.js')) add(path + '/' + file, options)\r\n      else if (!file.includes('.')) load(path + '/' + file, options)\r\n    })\r\n}\r\n\r\nmodule.exports = init;\r\n"]}