{"version":3,"sources":["jsdelivr-header.js","/npm/dvan@2.5.4/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,KAAO,QAAQ,QACf,MAAQ,QAAQ,gBAChB,YAAc,QAAQ,gBACtB,IAAM,QAAQ,OACd,OAAS,QAAQ,gBACjB,YAAc,QAAQ,+BACtB,MAAQ,QAAQ,WAChB,WAAa,QAAQ,sBACrB,YAAc,QAAQ,uBACtB,UAAY,QAAQ,qBACpB,eAAiB,QAAQ,0BAE/B,OAAO,QAAU,MACf,WAAA,CAAY,EAAU,QAAQ,MA4B5B,GA3BA,KAAK,MAAQ,IAAI,MACjB,KAAK,QAAU,EACf,KAAK,KAAO,UAAU,GACtB,KAAK,OAAS,OAEV,KAAK,KAAK,IAAI,UAChB,OAAO,WAAW,CAAE,OAAO,IAG7B,KAAK,KACH,KAAK,KAAK,IAAI,SAAW,KAAK,KAAK,IAAI,cACnC,aACA,KAAK,KAAK,IAAI,SAAW,cAE/B,OAAO,MAAM,cAAc,KAAK,aAEhC,KAAK,IAAM,KAAK,KAAK,IAAI,OACpB,KAAK,MACR,KAAK,IAAM,QAAQ,OAGrB,KAAK,IAAM,WAAW,CACpB,MAAO,CAAC,gBACR,IAAK,KAAK,MAGZ,KAAK,OAAS,CAAC,EACX,KAAK,KAAK,IAAI,aAChB,OAAO,MAAM,gCACR,CACL,MAAM,EAAS,WACb,CACE,MAAO,CAAC,gBACR,QAAS,CAAC,gBAAiB,YAC3B,IAAK,KAAK,IACV,WAAY,QAEd,OAEI,WAAE,GAAe,EACnB,EACF,OAAO,MACL,kBAAkB,QAAQ,uBAAR,CAChB,KAAK,SAAS,QAIlB,OAAO,MAAM,6BAGf,KAAK,OAAS,OAAO,OACnB,EACA,KAAK,KAAK,IAAI,UACV,QAAQ,KAAK,WAAW,KAAK,KAAK,IAAI,YACtC,CAAC,EAET,CAKK,QAAQ,IAAI,WACf,QAAQ,IAAI,SAAW,KAAK,MAE9B,QAAQ,IAAI,SAAW,KAAK,cAAc,OAAS,MAAQ,QAG3D,KAAK,cAGL,KAAK,UAGL,KAAK,cAGL,KAAK,cACP,CAEA,UAAI,GACF,MAAqB,eAAd,KAAK,IACd,CAEA,WAAI,GACF,OAAO,KAAK,KAAK,IAAI,MAAQ,KAAK,KAAK,IAAI,QAC7C,CAEA,UAAA,IAAc,GACZ,OAAO,KAAK,QAAQ,KAAK,OAAQ,EACnC,CAEA,UAAA,IAAc,GACZ,OAAO,KAAK,WAAW,KAAK,OAAO,UAAW,EAChD,CAEA,aAAA,IAAiB,GACf,OAAO,KAAK,WAAW,KAAK,OAAO,OAAO,OAAQ,EACpD,CAEA,OAAA,GACE,MAAM,EAAO,KAAK,IAAM,MAExB,KAAK,QAAU,EACZ,QAAQ,eAAgB,sBAAuB,CAC9C,0BAA0B,IAE3B,MAAM,0BACN,QAAO,UACN,OAAO,MAAM,wBACb,MAAM,EAAQ,KAAK,qBACb,EAAW,KAAK,sBAAsB,EAAM,kBAC5C,YAAY,EAAQ,IAG9B,KAAK,YAKL,EACG,OAAO,gBAAiB,WAAY,CAAE,QAAS,gBAC/C,OAAO,uBAAwB,+BAC/B,OAAO,UAAW,mBAClB,OAAO,kBAAmB,uBAC1B,OAAO,cAAe,uBACtB,OAAO,aAAc,iDACrB,OAAO,qBAAsB,wBAC7B,QAAQ,QAAQ,mBAAmB,SACnC,OAEH,KAAK,IAAI,MAAM,KAAK,QAAS,CAAE,KAAK,IAEpC,OAAO,MAAM,eAAgB,KAAK,IAAI,MACtC,OAAO,MAAM,kBAAmB,KAAK,IAAI,QAC3C,CAEA,wBAAA,GACE,MAAM,OACJ,EAAM,UACN,EAAS,aACT,EAAY,KACZ,EAAI,UACJ,EAAS,SACT,EAAQ,UACR,EAAS,KACT,EAAI,IACJ,EAAG,KACH,EAAI,KACJ,EAAI,WACJ,EAAU,IACV,EAAG,MACH,GACE,KAAK,IAAI,QAEb,MAAO,CACL,MAAO,KAAK,IAAI,KAAK,OAAS,EAAI,KAAK,IAAI,UAAO,EAClD,SACA,OAAQ,CACN,YACA,YACA,WACA,QAEF,eACA,YACA,UAAW,CACT,KAAM,EAAQ,YAAc,EAC5B,MACA,OACA,QAEF,aACA,MAEJ,CAEA,aAAA,CAAc,GACZ,MAAO,IACF,OAAO,KAAK,KAAK,IAAI,cAAgB,CAAC,MACtC,OAAO,KAAK,KAAK,IAAI,iBAAmB,CAAC,IAC5C,SAAS,EACb,CAEA,kBAAA,CAAmB,GACjB,KAAK,qBAAuB,EAC5B,MAAM,iBAAE,GAAqB,KAAK,OAE5B,EAAe,QAAQ,iBAE7B,EAAO,OAAO,OAAO,CAAE,KAAM,UAAY,GAEzC,MAAM,EAAS,IAAI,EAgBnB,OAdA,QAAQ,2BAAR,CAAoC,EAAQ,MAE5C,KAAK,MAAM,OAAO,qBAAsB,EAAQ,GAE5C,KAAK,OAAO,cACd,KAAK,OAAO,aAAa,EAAQ,GAGH,mBAArB,EACT,KAAK,KAAK,uBAAwB,GACG,iBAArB,GAChB,EAAO,MAAM,GAGR,CACT,CAEA,qBAAA,CAAsB,GAEpB,OADA,KAAK,MAAM,OAAO,uBAAwB,EAAQ,KAAK,sBAChD,QAAQ,UAAR,CAAmB,EAC5B,CAEA,WAAA,GACE,KAAK,QAAU,CACb,QAAQ,mCACR,QAAQ,mBAKR,QAAQ,+BAKR,QAAQ,yBACR,QAAQ,0BACR,QAAQ,wBACR,QAAQ,wBACR,QAAQ,yBACR,QAAQ,0BACR,QAAQ,0BACR,QAAQ,iCAEZ,CAEA,SAAA,GACE,IAAK,MAAM,KAAU,KAAK,QACpB,EAAO,KACT,EAAO,IAAI,KAGjB,CAEA,YAAA,GACE,IAAI,EAAU,KAAK,QAAQ,QAAO,IACxB,EAAO,MAAQ,EAAO,KAAK,SAGhC,KAAK,OAAO,SAAW,IAAI,OAAS,IACvC,EAAU,KAAK,QAAQ,OAAO,YAAY,KAAM,KAAK,OAAO,WAG9D,IAAK,MAAM,KAAU,EACf,EAAO,QACT,OAAO,MAAM,kBAAkB,EAAO,SAEtC,EAAO,MAAM,MAGnB,CAEA,WAAA,GACE,MAAM,EAAY,KAAK,2BACvB,OAAO,MAAM,8BAA+B,GAE5C,KAAK,OAAS,eAAe,KAAM,MAAM,CAAC,EAAG,KAAK,OAAQ,GAC5D,CAEA,IAAA,CAAK,EAAM,GACT,OAAO,KAAK,MAAM,IAAI,EAAM,EAC9B,CAEA,SAAM,SACE,KAAK,IAAI,mBACjB,CAEA,YAAA,CAAa,EAAM,EAAM,KAAK,KAC5B,OAAO,YAAY,OAAO,EAAK,EACjC,CAEA,YAAA,CAAa,EAAM,GACjB,MAAM,EAAW,KAAK,aAAa,EAAM,GACzC,OAAO,EAAW,QAAQ,GAAY,IACxC","file":"/npm/dvan@2.5.4/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/dvan@2.5.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","const path = require('path')\nconst merge = require('lodash.merge')\nconst resolveFrom = require('resolve-from')\nconst cac = require('cac')\nconst logger = require('@dvan/logger')\nconst runCompiler = require('@dvan/dev-utils/runCompiler')\nconst Hooks = require('./Hooks')\nconst loadConfig = require('./utils/loadConfig')\nconst loadPlugins = require('./utils/loadPlugins')\nconst parseArgs = require('./utils/parseArgs')\nconst validateConfig = require('./utils/validateConfig')\n\nmodule.exports = class DvanCore {\n  constructor(rawArgs = process.argv) {\n    this.hooks = new Hooks()\n    this.rawArgs = rawArgs\n    this.args = parseArgs(rawArgs)\n    this.logger = logger\n\n    if (this.args.has('debug')) {\n      logger.setOptions({ debug: true })\n    }\n\n    this.mode =\n      this.args.has('prod') || this.args.has('production')\n        ? 'production'\n        : this.args.get('mode') || 'development'\n\n    logger.debug(`Running in ${this.mode} mode`)\n\n    this.cwd = this.args.get('cwd')\n    if (!this.cwd) {\n      this.cwd = process.cwd()\n    }\n\n    this.pkg = loadConfig({\n      files: ['package.json'],\n      dir: this.cwd\n    })\n\n    this.config = {}\n    if (this.args.has('no-config')) {\n      logger.debug('Config file was disabled')\n    } else {\n      const config = loadConfig(\n        {\n          files: ['package.json'],\n          matches: ['dvan.config.*', '.dvanrc*'],\n          dir: this.cwd,\n          packageKey: 'dvan'\n        },\n        this\n      )\n      const { configPath } = config\n      if (configPath) {\n        logger.debug(\n          `Using config: '${require('./utils/colorfulFile')(\n            path.basename(configPath)\n          )}'`\n        )\n      } else {\n        logger.debug('Not using any config file')\n      }\n\n      this.config = Object.assign(\n        config,\n        this.args.has('config')\n          ? require(this.resolveCwd(this.args.get('config')))\n          : {}\n      )\n    }\n\n    /**\n     * Set process.env\n     */\n    if (!process.env.NODE_ENV) {\n      process.env.NODE_ENV = this.mode\n    }\n    process.env.DVAN_APP = this.hasDependency('vue') ? 'vue' : 'react'\n\n    // init plugins\n    this.initPlugins()\n\n    // init CLI instance, call plugin.cli parse CLI args\n    this.initCLI()\n\n    // merge CLI config with config file\n    this.mergeConfig()\n\n    // call plugin.apply\n    this.applyPlugins()\n  }\n\n  get isProd() {\n    return this.mode === 'production'\n  }\n\n  get isServe() {\n    return this.args.has('s') || this.args.has('serve')\n  }\n\n  resolveCwd(...args) {\n    return path.resolve(this.cwd, ...args)\n  }\n\n  resolveSrc(...args) {\n    return this.resolveCwd(this.config.srcDir, ...args)\n  }\n\n  resolveOutDir(...args) {\n    return this.resolveCwd(this.config.output.dir, ...args)\n  }\n\n  initCLI() {\n    const cli = (this.cli = cac())\n\n    this.command = cli\n      .command('[...entries]', 'Entry files for App', {\n        ignoreOptionDefaultValue: true\n      })\n      .usage('[...entries] [options]')\n      .action(async () => {\n        logger.debug('Using default action')\n        const chain = this.createWebpackChain()\n        const compiler = this.createWebpackCompiler(chain.toConfig())\n        await runCompiler(compiler)\n      })\n\n    this.extendCLI()\n\n    /**\n     * Global cli options\n     */\n    cli\n      .option('--mode <mode>', 'Set mode', { default: 'development' })\n      .option('--prod, --production', 'Alias for --mode production')\n      .option('--debug', 'Show debug logs')\n      .option('--config [path]', 'Specify config file')\n      .option('--no-config', 'Disable config file')\n      .option('--no-clean', 'Do not clean output directory before bundling')\n      .option('--no-clear-console', 'Do not clear console')\n      .version(require('../package.json').version)\n      .help()\n\n    this.cli.parse(this.rawArgs, { run: false })\n\n    logger.debug('Command args', this.cli.args)\n    logger.debug('Command options', this.cli.options)\n  }\n\n  initConfigFromCLIOptions() {\n    const {\n      srcDir,\n      publicUrl,\n      publicFolder,\n      html,\n      sourceMap,\n      minimize,\n      constants,\n      host,\n      hot,\n      port,\n      open,\n      extractCss,\n      jsx,\n      local\n    } = this.cli.options\n\n    return {\n      entry: this.cli.args.length > 0 ? this.cli.args : undefined,\n      srcDir,\n      output: {\n        publicUrl,\n        sourceMap,\n        minimize,\n        html\n      },\n      publicFolder,\n      constants,\n      devServer: {\n        host: local ? 'localhost' : host,\n        hot,\n        port,\n        open\n      },\n      extractCss,\n      jsx\n    }\n  }\n\n  hasDependency(name) {\n    return [\n      ...Object.keys(this.pkg.dependencies || {}),\n      ...Object.keys(this.pkg.devDependencies || {})\n    ].includes(name)\n  }\n\n  createWebpackChain(opts) {\n    this.createWebpackOptions = opts\n    const { configureWebpack } = this.config\n\n    const WebpackChain = require('webpack-chain')\n\n    opts = Object.assign({ type: 'client' }, opts)\n\n    const config = new WebpackChain()\n\n    require('./webpack/webpack.config')(config, this)\n\n    this.hooks.invoke('createWebpackChain', config, opts)\n\n    if (this.config.chainWebpack) {\n      this.config.chainWebpack(config, opts)\n    }\n\n    if (typeof configureWebpack === 'function') {\n      this.hook('resolveWebpackConfig', configureWebpack)\n    } else if (typeof configureWebpack === 'object') {\n      config.merge(configureWebpack)\n    }\n\n    return config\n  }\n\n  createWebpackCompiler(config) {\n    this.hooks.invoke('resolveWebpackConfig', config, this.createWebpackOptions)\n    return require('webpack')(config)\n  }\n\n  initPlugins() {\n    this.plugins = [\n      require('./plugins/config/commandOptions'),\n      require('./plugins/serve'),\n\n      /**\n       * Cli commands\n       */\n      require('./plugins/command/ejectHtml'),\n\n      /**\n       * Webpack config\n       */\n      require('./plugins/config/html'),\n      require('./plugins/config/babel'),\n      require('./plugins/config/css'),\n      require('./plugins/config/vue'),\n      require('./plugins/config/font'),\n      require('./plugins/config/image'),\n      require('./plugins/config/video'),\n      require('./plugins/config/misc-loaders')\n    ]\n  }\n\n  extendCLI() {\n    for (const plugin of this.plugins) {\n      if (plugin.cli) {\n        plugin.cli(this)\n      }\n    }\n  }\n\n  applyPlugins() {\n    let plugins = this.plugins.filter(plugin => {\n      return !plugin.when || plugin.when(this)\n    })\n\n    if ((this.config.plugins || []).length > 0) {\n      plugins = this.plugins.concat(loadPlugins(this, this.config.plugins))\n    }\n\n    for (const plugin of plugins) {\n      if (plugin.apply) {\n        logger.debug(`Apply plugin: '${plugin.name}'`)\n\n        plugin.apply(this)\n      }\n    }\n  }\n\n  mergeConfig() {\n    const cliConfig = this.initConfigFromCLIOptions()\n    logger.debug('Config from command options', cliConfig)\n\n    this.config = validateConfig(this, merge({}, this.config, cliConfig))\n  }\n\n  hook(name, fn) {\n    return this.hooks.add(name, fn)\n  }\n\n  async run() {\n    await this.cli.runMatchedCommand()\n  }\n\n  localResolve(name, cwd = this.cwd) {\n    return resolveFrom.silent(cwd, name)\n  }\n\n  localRequire(name, cwd) {\n    const resolved = this.localResolve(name, cwd)\n    return resolved ? require(resolved) : null\n  }\n}\n"]}