Pārlūkot izejas kodu

智慧照明控制系统 v1.0.0

4 gadi atpakaļ
vecāks
revīzija
f219032956
100 mainītis faili ar 27959 papildinājumiem un 1 dzēšanām
  1. 21 1
      README.md
  2. 41 0
      build/build.js
  3. 54 0
      build/check-versions.js
  4. 111 0
      build/utils.js
  5. 22 0
      build/vue-loader.conf.js
  6. 82 0
      build/webpack.base.conf.js
  7. 96 0
      build/webpack.dev.conf.js
  8. 146 0
      build/webpack.prod.conf.js
  9. 7 0
      config/dev.env.js
  10. 79 0
      config/index.js
  11. 4 0
      config/prod.env.js
  12. 38 0
      dist/index.html
  13. 2 0
      dist/static/css/app.62ba660f152e43d53b5acfc1bfb08279.css
  14. 1 0
      dist/static/css/app.62ba660f152e43d53b5acfc1bfb08279.css.map
  15. BIN
      dist/static/favicon.ico
  16. BIN
      dist/static/fonts/element-icons.535877f.woff
  17. BIN
      dist/static/fonts/element-icons.732389d.ttf
  18. BIN
      dist/static/image/bg.png
  19. BIN
      dist/static/image/close.png
  20. BIN
      dist/static/image/exit.png
  21. BIN
      dist/static/image/off.png
  22. BIN
      dist/static/image/on.png
  23. BIN
      dist/static/img/bg.ab00b94.png
  24. 2 0
      dist/static/js/app.0ed387897320737b80d5.js
  25. 1 0
      dist/static/js/app.0ed387897320737b80d5.js.map
  26. 2 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js
  27. 1 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  28. 27 0
      dist/static/js/vendor.7c537a9aacc48b2e7ed0.js
  29. 1 0
      dist/static/js/vendor.7c537a9aacc48b2e7ed0.js.map
  30. 14 0
      index.html
  31. 1 0
      node_modules/.bin/acorn
  32. 1 0
      node_modules/.bin/ansi-html
  33. 1 0
      node_modules/.bin/atob
  34. 1 0
      node_modules/.bin/autoprefixer-info
  35. 1 0
      node_modules/.bin/babylon
  36. 1 0
      node_modules/.bin/browserslist
  37. 1 0
      node_modules/.bin/cssesc
  38. 1 0
      node_modules/.bin/csso
  39. 1 0
      node_modules/.bin/errno
  40. 1 0
      node_modules/.bin/esparse
  41. 1 0
      node_modules/.bin/esvalidate
  42. 1 0
      node_modules/.bin/he
  43. 1 0
      node_modules/.bin/html-minifier
  44. 1 0
      node_modules/.bin/import-local-fixture
  45. 1 0
      node_modules/.bin/internal-ip
  46. 1 0
      node_modules/.bin/js-yaml
  47. 1 0
      node_modules/.bin/jsesc
  48. 1 0
      node_modules/.bin/json5
  49. 1 0
      node_modules/.bin/loose-envify
  50. 1 0
      node_modules/.bin/miller-rabin
  51. 1 0
      node_modules/.bin/mime
  52. 1 0
      node_modules/.bin/mkdirp
  53. 1 0
      node_modules/.bin/multicast-dns
  54. 1 0
      node_modules/.bin/opener
  55. 1 0
      node_modules/.bin/prettier
  56. 1 0
      node_modules/.bin/px2rem
  57. 1 0
      node_modules/.bin/regjsparser
  58. 1 0
      node_modules/.bin/rimraf
  59. 1 0
      node_modules/.bin/semver
  60. 1 0
      node_modules/.bin/sha.js
  61. 1 0
      node_modules/.bin/shjs
  62. 1 0
      node_modules/.bin/strip-indent
  63. 1 0
      node_modules/.bin/svgo
  64. 1 0
      node_modules/.bin/uglifyjs
  65. 1 0
      node_modules/.bin/uuid
  66. 1 0
      node_modules/.bin/webpack
  67. 1 0
      node_modules/.bin/webpack-bundle-analyzer
  68. 1 0
      node_modules/.bin/webpack-dev-server
  69. 1 0
      node_modules/.bin/which
  70. 14463 0
      node_modules/.package-lock.json
  71. 21 0
      node_modules/@types/q/LICENSE
  72. 16 0
      node_modules/@types/q/README.md
  73. 603 0
      node_modules/@types/q/index.d.ts
  74. 45 0
      node_modules/@types/q/package.json
  75. 236 0
      node_modules/accepts/HISTORY.md
  76. 23 0
      node_modules/accepts/LICENSE
  77. 142 0
      node_modules/accepts/README.md
  78. 238 0
      node_modules/accepts/index.js
  79. 47 0
      node_modules/accepts/package.json
  80. 19 0
      node_modules/acorn-dynamic-import/CHANGELOG.md
  81. 21 0
      node_modules/acorn-dynamic-import/LICENSE
  82. 33 0
      node_modules/acorn-dynamic-import/README.md
  83. 17 0
      node_modules/acorn-dynamic-import/lib/index.js
  84. 70 0
      node_modules/acorn-dynamic-import/lib/inject.js
  85. 1 0
      node_modules/acorn-dynamic-import/node_modules/.bin/acorn
  86. 10 0
      node_modules/acorn-dynamic-import/node_modules/acorn/.npmignore
  87. 62 0
      node_modules/acorn-dynamic-import/node_modules/acorn/AUTHORS
  88. 286 0
      node_modules/acorn-dynamic-import/node_modules/acorn/CHANGELOG.md
  89. 19 0
      node_modules/acorn-dynamic-import/node_modules/acorn/LICENSE
  90. 409 0
      node_modules/acorn-dynamic-import/node_modules/acorn/README.md
  91. 67 0
      node_modules/acorn-dynamic-import/node_modules/acorn/bin/acorn
  92. 0 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/.keep
  93. 3401 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn.es.js
  94. 3433 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn.js
  95. 1364 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn_loose.es.js
  96. 1374 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn_loose.js
  97. 342 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/walk.es.js
  98. 360 0
      node_modules/acorn-dynamic-import/node_modules/acorn/dist/walk.js
  99. 46 0
      node_modules/acorn-dynamic-import/node_modules/acorn/package.json
  100. 0 0
      node_modules/acorn-dynamic-import/node_modules/acorn/src/bin/acorn.js

+ 21 - 1
README.md

@@ -1 +1,21 @@
-#plcWebManager
+# webplcmanager
+
+> 
+
+## Build Setup
+
+``` bash
+# install dependencies
+npm install
+
+# serve with hot reload at localhost:8080
+npm run dev
+
+# build for production with minification
+npm run build
+
+# build for production and view the bundle analyzer report
+npm run build --report
+```
+
+For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).

+ 41 - 0
build/build.js

@@ -0,0 +1,41 @@
+'use strict'
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+const ora = require('ora')
+const rm = require('rimraf')
+const path = require('path')
+const chalk = require('chalk')
+const webpack = require('webpack')
+const config = require('../config')
+const webpackConfig = require('./webpack.prod.conf')
+
+const spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+  if (err) throw err
+  webpack(webpackConfig, (err, stats) => {
+    spinner.stop()
+    if (err) throw err
+    process.stdout.write(stats.toString({
+      colors: true,
+      modules: false,
+      children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
+      chunks: false,
+      chunkModules: false
+    }) + '\n\n')
+
+    if (stats.hasErrors()) {
+      console.log(chalk.red('  Build failed with errors.\n'))
+      process.exit(1)
+    }
+
+    console.log(chalk.cyan('  Build complete.\n'))
+    console.log(chalk.yellow(
+      '  Tip: built files are meant to be served over an HTTP server.\n' +
+      '  Opening index.html over file:// won\'t work.\n'
+    ))
+  })
+})

+ 54 - 0
build/check-versions.js

@@ -0,0 +1,54 @@
+'use strict'
+const chalk = require('chalk')
+const semver = require('semver')
+const packageConfig = require('../package.json')
+const shell = require('shelljs')
+
+function exec (cmd) {
+  return require('child_process').execSync(cmd).toString().trim()
+}
+
+const versionRequirements = [
+  {
+    name: 'node',
+    currentVersion: semver.clean(process.version),
+    versionRequirement: packageConfig.engines.node
+  }
+]
+
+if (shell.which('npm')) {
+  versionRequirements.push({
+    name: 'npm',
+    currentVersion: exec('npm --version'),
+    versionRequirement: packageConfig.engines.npm
+  })
+}
+
+module.exports = function () {
+  const warnings = []
+
+  for (let i = 0; i < versionRequirements.length; i++) {
+    const mod = versionRequirements[i]
+
+    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+      warnings.push(mod.name + ': ' +
+        chalk.red(mod.currentVersion) + ' should be ' +
+        chalk.green(mod.versionRequirement)
+      )
+    }
+  }
+
+  if (warnings.length) {
+    console.log('')
+    console.log(chalk.yellow('To use this template, you must update following to modules:'))
+    console.log()
+
+    for (let i = 0; i < warnings.length; i++) {
+      const warning = warnings[i]
+      console.log('  ' + warning)
+    }
+
+    console.log()
+    process.exit(1)
+  }
+}

+ 111 - 0
build/utils.js

@@ -0,0 +1,111 @@
+'use strict'
+const path = require('path')
+const config = require('../config')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const packageConfig = require('../package.json')
+
+exports.assetsPath = function(_path) {
+  const assetsSubDirectory = process.env.NODE_ENV === 'production' ?
+    config.build.assetsSubDirectory :
+    config.dev.assetsSubDirectory
+
+  return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function(options) {
+  options = options || {}
+
+  const cssLoader = {
+    loader: 'css-loader',
+    options: {
+      sourceMap: options.sourceMap
+    }
+  }
+
+  const px2remLoader = {
+    loader: 'px2rem-loader',
+    options: {
+      remUnit: 144,
+      remPrecision: 5
+    }
+  }
+
+  const postcssLoader = {
+    loader: 'postcss-loader',
+    options: {
+      sourceMap: options.sourceMap
+    }
+  }
+
+  // generate loader string to be used with extract text plugin
+  function generateLoaders(loader, loaderOptions) {
+    const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader, px2remLoader]
+
+    if (loader) {
+      loaders.push({
+        loader: loader + '-loader',
+        options: Object.assign({}, loaderOptions, {
+          sourceMap: options.sourceMap
+        })
+      })
+    }
+
+    // Extract CSS when that option is specified
+    // (which is the case during production build)
+    if (options.extract) {
+      return ExtractTextPlugin.extract({
+        use: loaders,
+        fallback: 'vue-style-loader'
+      })
+    } else {
+      return ['vue-style-loader'].concat(loaders)
+    }
+  }
+
+  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
+  return {
+    css: generateLoaders(),
+    postcss: generateLoaders(),
+    less: generateLoaders('less'),
+    sass: generateLoaders('sass', {
+      indentedSyntax: true
+    }),
+    scss: generateLoaders('sass'),
+    stylus: generateLoaders('stylus'),
+    styl: generateLoaders('stylus')
+  }
+}
+
+// Generate loaders for standalone style files (outside of .vue)
+exports.styleLoaders = function(options) {
+  const output = []
+  const loaders = exports.cssLoaders(options)
+
+  for (const extension in loaders) {
+    const loader = loaders[extension]
+    output.push({
+      test: new RegExp('\\.' + extension + '$'),
+      use: loader
+    })
+  }
+
+  return output
+}
+
+exports.createNotifierCallback = () => {
+  const notifier = require('node-notifier')
+
+  return (severity, errors) => {
+    if (severity !== 'error') return
+
+    const error = errors[0]
+    const filename = error.file && error.file.split('!').pop()
+
+    notifier.notify({
+      title: packageConfig.name,
+      message: severity + ': ' + error.name,
+      subtitle: filename || '',
+      icon: path.join(__dirname, 'logo.png')
+    })
+  }
+}

+ 22 - 0
build/vue-loader.conf.js

@@ -0,0 +1,22 @@
+'use strict'
+const utils = require('./utils')
+const config = require('../config')
+const isProduction = process.env.NODE_ENV === 'production'
+const sourceMapEnabled = isProduction
+  ? config.build.productionSourceMap
+  : config.dev.cssSourceMap
+
+module.exports = {
+  loaders: utils.cssLoaders({
+    sourceMap: sourceMapEnabled,
+    extract: isProduction
+  }),
+  cssSourceMap: sourceMapEnabled,
+  cacheBusting: config.dev.cacheBusting,
+  transformToRequire: {
+    video: ['src', 'poster'],
+    source: 'src',
+    img: 'src',
+    image: 'xlink:href'
+  }
+}

+ 82 - 0
build/webpack.base.conf.js

@@ -0,0 +1,82 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const config = require('../config')
+const vueLoaderConfig = require('./vue-loader.conf')
+
+function resolve (dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+
+
+module.exports = {
+  context: path.resolve(__dirname, '../'),
+  entry: {
+    app: './src/main.js'
+  },
+  output: {
+    path: config.build.assetsRoot,
+    filename: '[name].js',
+    publicPath: process.env.NODE_ENV === 'production'
+      ? config.build.assetsPublicPath
+      : config.dev.assetsPublicPath
+  },
+  resolve: {
+    extensions: ['.js', '.vue', '.json'],
+    alias: {
+      'vue$': 'vue/dist/vue.esm.js',
+      '@': resolve('src'),
+    }
+  },
+  module: {
+    rules: [
+      {
+        test: /\.vue$/,
+        loader: 'vue-loader',
+        options: vueLoaderConfig
+      },
+      {
+        test: /\.js$/,
+        loader: 'babel-loader',
+        include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('img/[name].[hash:7].[ext]')
+        }
+      },
+      {
+        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('media/[name].[hash:7].[ext]')
+        }
+      },
+      {
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+        }
+      }
+    ]
+  },
+  node: {
+    // prevent webpack from injecting useless setImmediate polyfill because Vue
+    // source contains it (although only uses it if it's native).
+    setImmediate: false,
+    // prevent webpack from injecting mocks to Node native modules
+    // that does not make sense for the client
+    dgram: 'empty',
+    fs: 'empty',
+    net: 'empty',
+    tls: 'empty',
+    child_process: 'empty'
+  }
+}

+ 96 - 0
build/webpack.dev.conf.js

@@ -0,0 +1,96 @@
+'use strict'
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const path = require('path')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+const portfinder = require('portfinder')
+
+const HOST = process.env.HOST
+const PORT = process.env.PORT && Number(process.env.PORT)
+
+const devWebpackConfig = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
+  },
+  // cheap-module-eval-source-map is faster for development
+  devtool: config.dev.devtool,
+
+  // these devServer options should be customized in /config/index.js
+  devServer: {
+    clientLogLevel: 'warning',
+    historyApiFallback: {
+      rewrites: [
+        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
+      ],
+    },
+    hot: true,
+    contentBase: false, // since we use CopyWebpackPlugin.
+    compress: true,
+    host: HOST || config.dev.host,
+    port: PORT || config.dev.port,
+    open: config.dev.autoOpenBrowser,
+    overlay: config.dev.errorOverlay
+      ? { warnings: false, errors: true }
+      : false,
+    publicPath: config.dev.assetsPublicPath,
+    proxy: config.dev.proxyTable,
+    quiet: true, // necessary for FriendlyErrorsPlugin
+    watchOptions: {
+      poll: config.dev.poll,
+    }
+  },
+  plugins: [
+    new webpack.DefinePlugin({
+      'process.env': require('../config/dev.env')
+    }),
+    new webpack.HotModuleReplacementPlugin(),
+    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
+    new webpack.NoEmitOnErrorsPlugin(),
+    // https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: 'index.html',
+      inject: true,
+      favicon: './static/favicon.ico' //新增
+    }),
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.dev.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ]
+})
+
+module.exports = new Promise((resolve, reject) => {
+  portfinder.basePort = process.env.PORT || config.dev.port
+  portfinder.getPort((err, port) => {
+    if (err) {
+      reject(err)
+    } else {
+      // publish the new Port, necessary for e2e tests
+      process.env.PORT = port
+      // add port to devServer config
+      devWebpackConfig.devServer.port = port
+
+      // Add FriendlyErrorsPlugin
+      devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
+        compilationSuccessInfo: {
+          messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
+        },
+        onErrors: config.dev.notifyOnErrors
+        ? utils.createNotifierCallback()
+        : undefined
+      }))
+
+      resolve(devWebpackConfig)
+    }
+  })
+})

+ 146 - 0
build/webpack.prod.conf.js

@@ -0,0 +1,146 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+
+const env = require('../config/prod.env')
+
+const webpackConfig = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.build.productionSourceMap,
+      extract: true,
+      usePostCSS: true
+    })
+  },
+  devtool: config.build.productionSourceMap ? config.build.devtool : false,
+  output: {
+    path: config.build.assetsRoot,
+    filename: utils.assetsPath('js/[name].[chunkhash].js'),
+    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+  },
+  plugins: [
+    // http://vuejs.github.io/vue-loader/en/workflow/production.html
+    new webpack.DefinePlugin({
+      'process.env': env
+    }),
+    new UglifyJsPlugin({
+      uglifyOptions: {
+        compress: {
+          warnings: false
+        }
+      },
+      sourceMap: config.build.productionSourceMap,
+      parallel: true
+    }),
+    // extract css into its own file
+    new ExtractTextPlugin({
+      filename: utils.assetsPath('css/[name].[contenthash].css'),
+      // Setting the following option to `false` will not extract CSS from codesplit chunks.
+      // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
+      // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
+      // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
+      allChunks: true,
+    }),
+    // Compress extracted CSS. We are using this plugin so that possible
+    // duplicated CSS from different components can be deduped.
+    new OptimizeCSSPlugin({
+      cssProcessorOptions: config.build.productionSourceMap
+        ? { safe: true, map: { inline: false } }
+        : { safe: true }
+    }),
+    // generate dist index.html with correct asset hash for caching.
+    // you can customize output by editing /index.html
+    // see https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: config.build.index,
+      template: 'index.html',
+      inject: true,
+      favicon: './static/favicon.ico', //新增
+      minify: {
+        removeComments: true,
+        collapseWhitespace: true,
+        removeAttributeQuotes: true
+        // more options:
+        // https://github.com/kangax/html-minifier#options-quick-reference
+      },
+      // necessary to consistently work with multiple chunks via CommonsChunkPlugin
+      chunksSortMode: 'dependency'
+    }),
+    // keep module.id stable when vendor modules does not change
+    new webpack.HashedModuleIdsPlugin(),
+    // enable scope hoisting
+    new webpack.optimize.ModuleConcatenationPlugin(),
+    // split vendor js into its own file
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'vendor',
+      minChunks (module) {
+        // any required modules inside node_modules are extracted to vendor
+        return (
+          module.resource &&
+          /\.js$/.test(module.resource) &&
+          module.resource.indexOf(
+            path.join(__dirname, '../node_modules')
+          ) === 0
+        )
+      }
+    }),
+    // extract webpack runtime and module manifest to its own file in order to
+    // prevent vendor hash from being updated whenever app bundle is updated
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'manifest',
+      minChunks: Infinity
+    }),
+    // This instance extracts shared chunks from code splitted chunks and bundles them
+    // in a separate chunk, similar to the vendor chunk
+    // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'app',
+      async: 'vendor-async',
+      children: true,
+      minChunks: 3
+    }),
+
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.build.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ]
+})
+
+if (config.build.productionGzip) {
+  const CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+  webpackConfig.plugins.push(
+    new CompressionWebpackPlugin({
+      asset: '[path].gz[query]',
+      algorithm: 'gzip',
+      test: new RegExp(
+        '\\.(' +
+        config.build.productionGzipExtensions.join('|') +
+        ')$'
+      ),
+      threshold: 10240,
+      minRatio: 0.8
+    })
+  )
+}
+
+if (config.build.bundleAnalyzerReport) {
+  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig

+ 7 - 0
config/dev.env.js

@@ -0,0 +1,7 @@
+'use strict'
+const merge = require('webpack-merge')
+const prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+  NODE_ENV: '"development"'
+})

+ 79 - 0
config/index.js

@@ -0,0 +1,79 @@
+'use strict'
+// Template version: 1.3.1
+// see http://vuejs-templates.github.io/webpack for documentation.
+
+const path = require('path')
+
+module.exports = {
+  dev: {
+
+    // Paths
+    assetsSubDirectory: 'static',
+    assetsPublicPath: '/',
+     proxyTable: {
+          "/api": {
+            target: "http://117.162.153.5:7004", // 你请求的第三方接口
+            // target: 'http://baibai.natapp1.cc', // 你请求的第三方接口
+            changeOrigin: true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
+            pathRewrite: {
+              // 路径重写,
+              "^/api": "" // 替换target中的请求地址,也就是说以后你在请求http://api.douban.com/v2/XXXXX这个地址的时候直接写成/api即可。
+            }
+          }
+        },
+
+    // Various Dev Server settings
+    host: 'localhost', // can be overwritten by process.env.HOST
+    port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
+    autoOpenBrowser: false,
+    errorOverlay: true,
+    notifyOnErrors: true,
+    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
+
+
+    /**
+     * Source Maps
+     */
+
+    // https://webpack.js.org/configuration/devtool/#development
+    devtool: 'cheap-module-eval-source-map',
+
+    // If you have problems debugging vue-files in devtools,
+    // set this to false - it *may* help
+    // https://vue-loader.vuejs.org/en/options.html#cachebusting
+    cacheBusting: true,
+
+    cssSourceMap: true
+  },
+
+  build: {
+    // Template for index.html
+    index: path.resolve(__dirname, '../dist/index.html'),
+
+    // Paths
+    assetsRoot: path.resolve(__dirname, '../dist'),
+    assetsSubDirectory: 'static',
+    assetsPublicPath: '/',
+
+    /**
+     * Source Maps
+     */
+
+    productionSourceMap: true,
+    // https://webpack.js.org/configuration/devtool/#production
+    devtool: '#source-map',
+
+    // Gzip off by default as many popular static hosts such as
+    // Surge or Netlify already gzip all static assets for you.
+    // Before setting to `true`, make sure to:
+    // npm install --save-dev compression-webpack-plugin
+    productionGzip: false,
+    productionGzipExtensions: ['js', 'css'],
+
+    // Run the build command with an extra argument to
+    // View the bundle analyzer report after build finishes:
+    // `npm run build --report`
+    // Set to `true` or `false` to always turn it on or off
+    bundleAnalyzerReport: process.env.npm_config_report
+  }
+}

+ 4 - 0
config/prod.env.js

@@ -0,0 +1,4 @@
+'use strict'
+module.exports = {
+  NODE_ENV: '"production"'
+}

+ 38 - 0
dist/index.html

@@ -0,0 +1,38 @@
+Html Webpack Plugin:
+<pre>
+  Error: HtmlWebpackPlugin: could not load file /Users/liran/webplcmanager/favic  on.ico
+  
+  - index.js:312 
+    [webplcmanager]/[html-webpack-plugin]/index.js:312:27
+  
+  - util.js:16 tryCatcher
+    [webplcmanager]/[bluebird]/js/release/util.js:16:23
+  
+  - promise.js:547 Promise._settlePromiseFromHandler
+    [webplcmanager]/[bluebird]/js/release/promise.js:547:31
+  
+  - promise.js:604 Promise._settlePromise
+    [webplcmanager]/[bluebird]/js/release/promise.js:604:18
+  
+  - promise.js:649 Promise._settlePromise0
+    [webplcmanager]/[bluebird]/js/release/promise.js:649:10
+  
+  - promise.js:725 Promise._settlePromises
+    [webplcmanager]/[bluebird]/js/release/promise.js:725:18
+  
+  - async.js:93 _drainQueueStep
+    [webplcmanager]/[bluebird]/js/release/async.js:93:12
+  
+  - async.js:86 _drainQueue
+    [webplcmanager]/[bluebird]/js/release/async.js:86:9
+  
+  - async.js:102 Async._drainQueues
+    [webplcmanager]/[bluebird]/js/release/async.js:102:5
+  
+  - async.js:15 Immediate.Async.drainQueues [as _onImmediate]
+    [webplcmanager]/[bluebird]/js/release/async.js:15:14
+  
+  - timers.js:461 processImmediate
+    internal/timers.js:461:21
+  
+</pre>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2 - 0
dist/static/css/app.62ba660f152e43d53b5acfc1bfb08279.css


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
dist/static/css/app.62ba660f152e43d53b5acfc1bfb08279.css.map


BIN
dist/static/favicon.ico


BIN
dist/static/fonts/element-icons.535877f.woff


BIN
dist/static/fonts/element-icons.732389d.ttf


BIN
dist/static/image/bg.png


BIN
dist/static/image/close.png


BIN
dist/static/image/exit.png


BIN
dist/static/image/off.png


BIN
dist/static/image/on.png


BIN
dist/static/img/bg.ab00b94.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2 - 0
dist/static/js/app.0ed387897320737b80d5.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
dist/static/js/app.0ed387897320737b80d5.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 27 - 0
dist/static/js/vendor.7c537a9aacc48b2e7ed0.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
dist/static/js/vendor.7c537a9aacc48b2e7ed0.js.map


+ 14 - 0
index.html

@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <title>智慧照明控制系统</title>
+      <link rel="icon" href="./static/favicon.ico" type="image/x-icon" />
+      <link rel="shortcut icon" href="./static/favicon.ico" type="image/x-icon"  /><!-- 必须 -->
+  </head>
+  <body>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

+ 1 - 0
node_modules/.bin/acorn

@@ -0,0 +1 @@
+../acorn/bin/acorn

+ 1 - 0
node_modules/.bin/ansi-html

@@ -0,0 +1 @@
+../ansi-html/bin/ansi-html

+ 1 - 0
node_modules/.bin/atob

@@ -0,0 +1 @@
+../atob/bin/atob.js

+ 1 - 0
node_modules/.bin/autoprefixer-info

@@ -0,0 +1 @@
+../autoprefixer/bin/autoprefixer-info

+ 1 - 0
node_modules/.bin/babylon

@@ -0,0 +1 @@
+../babylon/bin/babylon.js

+ 1 - 0
node_modules/.bin/browserslist

@@ -0,0 +1 @@
+../browserslist/cli.js

+ 1 - 0
node_modules/.bin/cssesc

@@ -0,0 +1 @@
+../cssesc/bin/cssesc

+ 1 - 0
node_modules/.bin/csso

@@ -0,0 +1 @@
+../csso/bin/csso

+ 1 - 0
node_modules/.bin/errno

@@ -0,0 +1 @@
+../errno/cli.js

+ 1 - 0
node_modules/.bin/esparse

@@ -0,0 +1 @@
+../esprima/bin/esparse.js

+ 1 - 0
node_modules/.bin/esvalidate

@@ -0,0 +1 @@
+../esprima/bin/esvalidate.js

+ 1 - 0
node_modules/.bin/he

@@ -0,0 +1 @@
+../he/bin/he

+ 1 - 0
node_modules/.bin/html-minifier

@@ -0,0 +1 @@
+../html-minifier/cli.js

+ 1 - 0
node_modules/.bin/import-local-fixture

@@ -0,0 +1 @@
+../import-local/fixtures/cli.js

+ 1 - 0
node_modules/.bin/internal-ip

@@ -0,0 +1 @@
+../internal-ip/cli.js

+ 1 - 0
node_modules/.bin/js-yaml

@@ -0,0 +1 @@
+../js-yaml/bin/js-yaml.js

+ 1 - 0
node_modules/.bin/jsesc

@@ -0,0 +1 @@
+../jsesc/bin/jsesc

+ 1 - 0
node_modules/.bin/json5

@@ -0,0 +1 @@
+../json5/lib/cli.js

+ 1 - 0
node_modules/.bin/loose-envify

@@ -0,0 +1 @@
+../loose-envify/cli.js

+ 1 - 0
node_modules/.bin/miller-rabin

@@ -0,0 +1 @@
+../miller-rabin/bin/miller-rabin

+ 1 - 0
node_modules/.bin/mime

@@ -0,0 +1 @@
+../mime/cli.js

+ 1 - 0
node_modules/.bin/mkdirp

@@ -0,0 +1 @@
+../mkdirp/bin/cmd.js

+ 1 - 0
node_modules/.bin/multicast-dns

@@ -0,0 +1 @@
+../multicast-dns/cli.js

+ 1 - 0
node_modules/.bin/opener

@@ -0,0 +1 @@
+../opener/bin/opener-bin.js

+ 1 - 0
node_modules/.bin/prettier

@@ -0,0 +1 @@
+../prettier/bin-prettier.js

+ 1 - 0
node_modules/.bin/px2rem

@@ -0,0 +1 @@
+../px2rem/bin/px2rem.js

+ 1 - 0
node_modules/.bin/regjsparser

@@ -0,0 +1 @@
+../regjsparser/bin/parser

+ 1 - 0
node_modules/.bin/rimraf

@@ -0,0 +1 @@
+../rimraf/bin.js

+ 1 - 0
node_modules/.bin/semver

@@ -0,0 +1 @@
+../semver/bin/semver

+ 1 - 0
node_modules/.bin/sha.js

@@ -0,0 +1 @@
+../sha.js/bin.js

+ 1 - 0
node_modules/.bin/shjs

@@ -0,0 +1 @@
+../shelljs/bin/shjs

+ 1 - 0
node_modules/.bin/strip-indent

@@ -0,0 +1 @@
+../strip-indent/cli.js

+ 1 - 0
node_modules/.bin/svgo

@@ -0,0 +1 @@
+../svgo/bin/svgo

+ 1 - 0
node_modules/.bin/uglifyjs

@@ -0,0 +1 @@
+../uglify-js/bin/uglifyjs

+ 1 - 0
node_modules/.bin/uuid

@@ -0,0 +1 @@
+../uuid/bin/uuid

+ 1 - 0
node_modules/.bin/webpack

@@ -0,0 +1 @@
+../webpack/bin/webpack.js

+ 1 - 0
node_modules/.bin/webpack-bundle-analyzer

@@ -0,0 +1 @@
+../webpack-bundle-analyzer/lib/bin/analyzer.js

+ 1 - 0
node_modules/.bin/webpack-dev-server

@@ -0,0 +1 @@
+../webpack-dev-server/bin/webpack-dev-server.js

+ 1 - 0
node_modules/.bin/which

@@ -0,0 +1 @@
+../which/bin/which

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 14463 - 0
node_modules/.package-lock.json


+ 21 - 0
node_modules/@types/q/LICENSE

@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE

+ 16 - 0
node_modules/@types/q/README.md

@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/q`
+
+# Summary
+This package contains type definitions for Q (https://github.com/kriskowal/q).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/q.
+
+### Additional Details
+ * Last updated: Wed, 07 Jul 2021 17:02:41 GMT
+ * Dependencies: none
+ * Global values: `Q`
+
+# Credits
+These definitions were written by [Barrie Nemetchek](https://github.com/bnemetchek), [Andrew Gaspar](https://github.com/AndrewGaspar), [John Reilly](https://github.com/johnnyreilly), [Michel Boudreau](https://github.com/mboudreau), and [TeamworkGuy2](https://github.com/TeamworkGuy2).

+ 603 - 0
node_modules/@types/q/index.d.ts

@@ -0,0 +1,603 @@
+// Type definitions for Q 1.5
+// Project: https://github.com/kriskowal/q
+// Definitions by: Barrie Nemetchek <https://github.com/bnemetchek>
+//                 Andrew Gaspar <https://github.com/AndrewGaspar>
+//                 John Reilly <https://github.com/johnnyreilly>
+//                 Michel Boudreau <https://github.com/mboudreau>
+//                 TeamworkGuy2 <https://github.com/TeamworkGuy2>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+// TypeScript Version: 2.3
+
+export = Q;
+export as namespace Q;
+
+/**
+ * If value is a Q promise, returns the promise.
+ * If value is a promise from another library it is coerced into a Q promise (where possible).
+ * If value is not a promise, returns a promise that is fulfilled with value.
+ */
+declare function Q<T>(promise: PromiseLike<T> | T): Q.Promise<T>;
+/**
+ * Calling with nothing at all creates a void promise
+ */
+declare function Q(): Q.Promise<void>;
+
+declare namespace Q {
+    export type IWhenable<T> = PromiseLike<T> | T;
+    export type IPromise<T> = PromiseLike<T>;
+
+    export interface Deferred<T> {
+        promise: Promise<T>;
+
+        /**
+         * Calling resolve with a pending promise causes promise to wait on the passed promise, becoming fulfilled with its
+         * fulfillment value or rejected with its rejection reason (or staying pending forever, if the passed promise does).
+         * Calling resolve with a rejected promise causes promise to be rejected with the passed promise's rejection reason.
+         * Calling resolve with a fulfilled promise causes promise to be fulfilled with the passed promise's fulfillment value.
+         * Calling resolve with a non-promise value causes promise to be fulfilled with that value.
+         */
+        resolve(value?: IWhenable<T>): void;
+
+        /**
+         * Calling reject with a reason causes promise to be rejected with that reason.
+         */
+        reject(reason?: any): void;
+
+        /**
+         * Calling notify with a value causes promise to be notified of progress with that value. That is, any onProgress
+         * handlers registered with promise or promises derived from promise will be called with the progress value.
+         */
+        notify(value: any): void;
+
+        /**
+         * Returns a function suitable for passing to a Node.js API. That is, it has a signature (err, result) and will
+         * reject deferred.promise with err if err is given, or fulfill it with result if that is given.
+         */
+        makeNodeResolver(): (reason: any, value: T) => void;
+    }
+
+    export interface Promise<T> {
+        /**
+         * The then method from the Promises/A+ specification, with an additional progress handler.
+         */
+        then<U>(onFulfill?: ((value: T) => IWhenable<U>) | null, onReject?: ((error: any) => IWhenable<U>) | null, onProgress?: ((progress: any) => any) | null): Promise<U>;
+        then<U = T, V = never>(onFulfill?: ((value: T) => IWhenable<U>) | null, onReject?: ((error: any) => IWhenable<V>) | null, onProgress?: ((progress: any) => any) | null): Promise<U | V>;
+        /**
+         * Like a finally clause, allows you to observe either the fulfillment or rejection of a promise, but to do so
+         * without modifying the final value. This is useful for collecting resources regardless of whether a job succeeded,
+         * like closing a database connection, shutting a server down, or deleting an unneeded key from an object.
+         * finally returns a promise, which will become resolved with the same fulfillment value or rejection reason
+         * as promise. However, if callback returns a promise, the resolution of the returned promise will be delayed
+         * until the promise returned from callback is finished. Furthermore, if the returned promise rejects, that
+         * rejection will be passed down the chain instead of the previous result.
+         */
+        finally(finallyCallback: () => any): Promise<T>;
+
+        /**
+         * Alias for finally() (for non-ES5 browsers)
+         */
+        fin(finallyCallback: () => any): Promise<T>;
+
+        /**
+         * Like then, but "spreads" the array into a variadic fulfillment handler. If any of the promises in the array are
+         * rejected, instead calls onRejected with the first rejected promise's rejection reason.
+         * This is especially useful in conjunction with all
+         */
+        spread<U>(onFulfill: (...args: any[]) => IWhenable<U>, onReject?: (reason: any) => IWhenable<U>): Promise<U>;
+
+        /**
+         * A sugar method, equivalent to promise.then(undefined, onRejected).
+         */
+        catch<U>(onRejected: (reason: any) => IWhenable<U>): Promise<U>;
+
+        /**
+         * Alias for catch() (for non-ES5 browsers)
+         */
+        fail<U>(onRejected: (reason: any) => IWhenable<U>): Promise<U>;
+
+        /**
+         * A sugar method, equivalent to promise.then(undefined, undefined, onProgress).
+         */
+        progress(onProgress: (progress: any) => any): Promise<T>;
+
+        /**
+         * Much like then, but with different behavior around unhandled rejection. If there is an unhandled rejection,
+         * either because promise is rejected and no onRejected callback was provided, or because onFulfilled or onRejected
+         * threw an error or returned a rejected promise, the resulting rejection reason is thrown as an exception in a
+         * future turn of the event loop.
+         * This method should be used to terminate chains of promises that will not be passed elsewhere. Since exceptions
+         * thrown in then callbacks are consumed and transformed into rejections, exceptions at the end of the chain are
+         * easy to accidentally, silently ignore. By arranging for the exception to be thrown in a future turn of the
+         * event loop, so that it won't be caught, it causes an onerror event on the browser window, or an uncaughtException
+         * event on Node.js's process object.
+         * Exceptions thrown by done will have long stack traces, if Q.longStackSupport is set to true. If Q.onerror is set,
+         * exceptions will be delivered there instead of thrown in a future turn.
+         * The Golden Rule of done vs. then usage is: either return your promise to someone else, or if the chain ends
+         * with you, call done to terminate it. Terminating with catch is not sufficient because the catch handler may
+         * itself throw an error.
+         */
+        done(onFulfilled?: ((value: T) => any) | null, onRejected?: ((reason: any) => any) | null, onProgress?: ((progress: any) => any) | null): void;
+
+        /**
+         * If callback is a function, assumes it's a Node.js-style callback, and calls it as either callback(rejectionReason)
+         * when/if promise becomes rejected, or as callback(null, fulfillmentValue) when/if promise becomes fulfilled.
+         * If callback is not a function, simply returns promise.
+         */
+        nodeify(callback: (reason: any, value: any) => void): Promise<T>;
+
+        /**
+         * Returns a promise to get the named property of an object. Essentially equivalent to
+         *
+         * @example
+         * promise.then(function (o) { return o[propertyName]; });
+         */
+        get<U>(propertyName: string): Promise<U>;
+
+        set<U>(propertyName: string, value: any): Promise<U>;
+
+        delete<U>(propertyName: string): Promise<U>;
+
+        /**
+         * Returns a promise for the result of calling the named method of an object with the given array of arguments.
+         * The object itself is this in the function, just like a synchronous method call. Essentially equivalent to
+         *
+         * @example
+         * promise.then(function (o) { return o[methodName].apply(o, args); });
+         */
+        post<U>(methodName: string, args: any[]): Promise<U>;
+
+        /**
+         * Returns a promise for the result of calling the named method of an object with the given variadic arguments.
+         * The object itself is this in the function, just like a synchronous method call.
+         */
+        invoke<U>(methodName: string, ...args: any[]): Promise<U>;
+
+        /**
+         * Returns a promise for an array of the property names of an object. Essentially equivalent to
+         *
+         * @example
+         * promise.then(function (o) { return Object.keys(o); });
+         */
+        keys(): Promise<string[]>;
+
+        /**
+         * Returns a promise for the result of calling a function, with the given array of arguments. Essentially equivalent to
+         *
+         * @example
+         * promise.then(function (f) {
+         *     return f.apply(undefined, args);
+         * });
+         */
+        fapply<U>(args: any[]): Promise<U>;
+
+        /**
+         * Returns a promise for the result of calling a function, with the given variadic arguments. Has the same return
+         * value/thrown exception translation as explained above for fbind.
+         * In its static form, it is aliased as Q.try, since it has semantics similar to a try block (but handling both
+         * synchronous exceptions and asynchronous rejections). This allows code like
+         *
+         * @example
+         * Q.try(function () {
+         *     if (!isConnectedToCloud()) {
+         *         throw new Error("The cloud is down!");
+         *     }
+         *     return syncToCloud();
+         * })
+         * .catch(function (error) {
+         *     console.error("Couldn't sync to the cloud", error);
+         * });
+         */
+        fcall<U>(...args: any[]): Promise<U>;
+
+        /**
+         * A sugar method, equivalent to promise.then(function () { return value; }).
+         */
+        thenResolve<U>(value: U): Promise<U>;
+
+        /**
+         * A sugar method, equivalent to promise.then(function () { throw reason; }).
+         */
+        thenReject<U = T>(reason?: any): Promise<U>;
+
+        /**
+         * Attaches a handler that will observe the value of the promise when it becomes fulfilled, returning a promise for
+         * that same value, perhaps deferred but not replaced by the promise returned by the onFulfilled handler.
+         */
+        tap(onFulfilled: (value: T) => any): Promise<T>;
+
+        /**
+         * Returns a promise that will have the same result as promise, except that if promise is not fulfilled or rejected
+         * before ms milliseconds, the returned promise will be rejected with an Error with the given message. If message
+         * is not supplied, the message will be "Timed out after " + ms + " ms".
+         */
+        timeout(ms: number, message?: string): Promise<T>;
+
+        /**
+         * Returns a promise that will have the same result as promise, but will only be fulfilled or rejected after at least
+         * ms milliseconds have passed.
+         */
+        delay(ms: number): Promise<T>;
+
+        /**
+         * Returns whether a given promise is in the fulfilled state. When the static version is used on non-promises, the
+         * result is always true.
+         */
+        isFulfilled(): boolean;
+
+        /**
+         * Returns whether a given promise is in the rejected state. When the static version is used on non-promises, the
+         * result is always false.
+         */
+        isRejected(): boolean;
+
+        /**
+         * Returns whether a given promise is in the pending state. When the static version is used on non-promises, the
+         * result is always false.
+         */
+        isPending(): boolean;
+
+        valueOf(): any;
+
+        /**
+         * Returns a "state snapshot" object, which will be in one of three forms:
+         *
+         * - { state: "pending" }
+         * - { state: "fulfilled", value: <fulfllment value> }
+         * - { state: "rejected", reason: <rejection reason> }
+         */
+        inspect(): PromiseState<T>;
+    }
+
+    export interface PromiseState<T> {
+        state: "fulfilled" | "rejected" | "pending";
+        value?: T | undefined;
+        reason?: any;
+    }
+
+    /**
+     * Returns a "deferred" object with a:
+     * promise property
+     * resolve(value) method
+     * reject(reason) method
+     * notify(value) method
+     * makeNodeResolver() method
+     */
+    export function defer<T>(): Deferred<T>;
+
+    /**
+     * Calling resolve with a pending promise causes promise to wait on the passed promise, becoming fulfilled with its
+     * fulfillment value or rejected with its rejection reason (or staying pending forever, if the passed promise does).
+     * Calling resolve with a rejected promise causes promise to be rejected with the passed promise's rejection reason.
+     * Calling resolve with a fulfilled promise causes promise to be fulfilled with the passed promise's fulfillment value.
+     * Calling resolve with a non-promise value causes promise to be fulfilled with that value.
+     */
+    export function resolve<T>(object?: IWhenable<T>): Promise<T>;
+
+    /**
+     * Returns a promise that is rejected with reason.
+     */
+    export function reject<T>(reason?: any): Promise<T>;
+
+    // If no value provided, returned promise will be of void type
+    export function when(): Promise<void>;
+
+    // if no fulfill, reject, or progress provided, returned promise will be of same type
+    export function when<T>(value: IWhenable<T>): Promise<T>;
+
+    // If a non-promise value is provided, it will not reject or progress
+    export function when<T, U>(
+        value: IWhenable<T>,
+        onFulfilled: (val: T) => IWhenable<U>,
+        onRejected?: ((reason: any) => IWhenable<U>) | null,
+        onProgress?: ((progress: any) => any) | null
+    ): Promise<U>;
+
+    /**
+     * (Deprecated) Returns a new function that calls a function asynchronously with the given variadic arguments, and returns a promise.
+     * Notably, any synchronous return values or thrown exceptions are transformed, respectively, into fulfillment values
+     * or rejection reasons for the promise returned by this new function.
+     * This method is especially useful in its static form for wrapping functions to ensure that they are always
+     * asynchronous, and that any thrown exceptions (intentional or accidental) are appropriately transformed into a
+     * returned rejected promise. For example:
+     *
+     * @example
+     * var getUserData = Q.fbind(function (userName) {
+     *     if (!userName) {
+     *         throw new Error("userName must be truthy!");
+     *     }
+     *     if (localCache.has(userName)) {
+     *         return localCache.get(userName);
+     *     }
+     *     return getUserFromCloud(userName);
+     * });
+     */
+    export function fbind<T>(method: (...args: any[]) => IWhenable<T>, ...args: any[]): (...args: any[]) => Promise<T>;
+
+    /**
+     * Returns a promise for the result of calling a function, with the given variadic arguments. Has the same return
+     * value/thrown exception translation as explained above for fbind.
+     * In its static form, it is aliased as Q.try, since it has semantics similar to a try block (but handling both synchronous
+     * exceptions and asynchronous rejections). This allows code like
+     *
+     * @example
+     * Q.try(function () {
+     *     if (!isConnectedToCloud()) {
+     *         throw new Error("The cloud is down!");
+     *     }
+     *     return syncToCloud();
+     * })
+     * .catch(function (error) {
+     *     console.error("Couldn't sync to the cloud", error);
+     * });
+     */
+    export function fcall<T>(method: (...args: any[]) => T, ...args: any[]): Promise<T>;
+
+    // but 'try' is a reserved word.  This is the only way to get around this
+    /**
+     * Alias for fcall()
+     */
+    export { fcall as try };
+
+    /**
+     * Returns a promise for the result of calling the named method of an object with the given variadic arguments.
+     * The object itself is this in the function, just like a synchronous method call.
+     */
+    export function invoke<T>(obj: any, functionName: string, ...args: any[]): Promise<T>;
+
+    /**
+     * Alias for invoke()
+     */
+    export function send<T>(obj: any, functionName: string, ...args: any[]): Promise<T>;
+
+    /**
+     * Alias for invoke()
+     */
+    export function mcall<T>(obj: any, functionName: string, ...args: any[]): Promise<T>;
+
+    /**
+     * Creates a promise-returning function from a Node.js-style function, optionally binding it with the given
+     * variadic arguments. An example:
+     *
+     * @example
+     * var readFile = Q.nfbind(FS.readFile);
+     * readFile("foo.txt", "utf-8").done(function (text) {
+     *     //...
+     * });
+     *
+     * Note that if you have a method that uses the Node.js callback pattern, as opposed to just a function, you will
+     * need to bind its this value before passing it to nfbind, like so:
+     *
+     * @example
+     * var Kitty = mongoose.model("Kitty");
+     * var findKitties = Q.nfbind(Kitty.find.bind(Kitty));
+     *
+     * The better strategy for methods would be to use Q.nbind, as shown below.
+     */
+    export function nfbind<T>(nodeFunction: (...args: any[]) => any, ...args: any[]): (...args: any[]) => Promise<T>;
+
+    /**
+     * Alias for nfbind()
+     */
+    export function denodeify<T>(nodeFunction: (...args: any[]) => any, ...args: any[]): (...args: any[]) => Promise<T>;
+
+    /**
+     * Creates a promise-returning function from a Node.js-style method, optionally binding it with the given
+     * variadic arguments. An example:
+     *
+     * @example
+     * var Kitty = mongoose.model("Kitty");
+     * var findKitties = Q.nbind(Kitty.find, Kitty);
+     * findKitties({ cute: true }).done(function (theKitties) {
+     *     //...
+     * });
+     */
+    export function nbind<T>(nodeFunction: (...args: any[]) => any, thisArg: any, ...args: any[]): (...args: any[]) => Promise<T>;
+
+    /**
+     * Calls a Node.js-style function with the given array of arguments, returning a promise that is fulfilled if the
+     * Node.js function calls back with a result, or rejected if it calls back with an error
+     * (or throws one synchronously). An example:
+     *
+     * @example
+     * Q.nfapply(FS.readFile, ["foo.txt", "utf-8"]).done(function (text) {
+     * });
+     *
+     * Note that this example only works because FS.readFile is a function exported from a module, not a method on
+     * an object. For methods, e.g. redisClient.get, you must bind the method to an instance before passing it to
+     * Q.nfapply (or, generally, as an argument to any function call):
+     *
+     * @example
+     * Q.nfapply(redisClient.get.bind(redisClient), ["user:1:id"]).done(function (user) {
+     * });
+     *
+     * The better strategy for methods would be to use Q.npost, as shown below.
+     */
+    export function nfapply<T>(nodeFunction: (...args: any[]) => any, args: any[]): Promise<T>;
+
+    /**
+     * Calls a Node.js-style function with the given variadic arguments, returning a promise that is fulfilled if the
+     * Node.js function calls back with a result, or rejected if it calls back with an error
+     * (or throws one synchronously). An example:
+     *
+     * @example
+     * Q.nfcall(FS.readFile, "foo.txt", "utf-8").done(function (text) {
+     * });
+     *
+     * The same warning about functions vs. methods applies for nfcall as it does for nfapply. In this case, the better
+     * strategy would be to use Q.ninvoke.
+     */
+    export function nfcall<T>(nodeFunction: (...args: any[]) => any, ...args: any[]): Promise<T>;
+
+    /**
+     * Calls a Node.js-style method with the given arguments array, returning a promise that is fulfilled if the method
+     * calls back with a result, or rejected if it calls back with an error (or throws one synchronously). An example:
+     *
+     * @example
+     * Q.npost(redisClient, "get", ["user:1:id"]).done(function (user) {
+     * });
+     */
+    export function npost<T>(nodeModule: any, functionName: string, args: any[]): Promise<T>;
+
+    /**
+     * Calls a Node.js-style method with the given variadic arguments, returning a promise that is fulfilled if the
+     * method calls back with a result, or rejected if it calls back with an error (or throws one synchronously). An example:
+     *
+     * @example
+     * Q.ninvoke(redisClient, "get", "user:1:id").done(function (user) {
+     * });
+     */
+    export function ninvoke<T>(nodeModule: any, functionName: string, ...args: any[]): Promise<T>;
+
+    /**
+     * Alias for ninvoke()
+     */
+    export function nsend<T>(nodeModule: any, functionName: string, ...args: any[]): Promise<T>;
+
+    /**
+     * Returns a promise that is fulfilled with an array containing the fulfillment value of each promise, or is rejected with the same rejection reason as the first promise to be rejected.
+     */
+    export function all<A, B, C, D, E, F>(promises: IWhenable<[IWhenable<A>, IWhenable<B>, IWhenable<C>, IWhenable<D>, IWhenable<E>, IWhenable<F>]>): Promise<[A, B, C, D, E, F]>;
+    /**
+     * Returns a promise that is fulfilled with an array containing the fulfillment value of each promise, or is rejected with the same rejection reason as the first promise to be rejected.
+     */
+    export function all<A, B, C, D, E>(promises: IWhenable<[IWhenable<A>, IWhenable<B>, IWhenable<C>, IWhenable<D>, IWhenable<E>]>): Promise<[A, B, C, D, E]>;
+    /**
+     * Returns a promise that is fulfilled with an array containing the fulfillment value of each promise, or is rejected with the same rejection reason as the first promise to be rejected.
+     */
+    export function all<A, B, C, D>(promises: IWhenable<[IWhenable<A>, IWhenable<B>, IWhenable<C>, IWhenable<D>]>): Promise<[A, B, C, D]>;
+    /**
+     * Returns a promise that is fulfilled with an array containing the fulfillment value of each promise, or is rejected with the same rejection reason as the first promise to be rejected.
+     */
+    export function all<A, B, C>(promises: IWhenable<[IWhenable<A>, IWhenable<B>, IWhenable<C>]>): Promise<[A, B, C]>;
+    /**
+     * Returns a promise that is fulfilled with an array containing the fulfillment value of each promise, or is rejected with the same rejection reason as the first promise to be rejected.
+     */
+    export function all<A, B>(promises: IWhenable<[IPromise<A>, IPromise<B>]>): Promise<[A, B]>;
+    export function all<A, B>(promises: IWhenable<[A, IPromise<B>]>): Promise<[A, B]>;
+    export function all<A, B>(promises: IWhenable<[IPromise<A>, B]>): Promise<[A, B]>;
+    export function all<A, B>(promises: IWhenable<[A, B]>): Promise<[A, B]>;
+    /**
+     * Returns a promise that is fulfilled with an array containing the fulfillment value of each promise, or is rejected with the same rejection reason as the first promise to be rejected.
+     */
+    export function all<T>(promises: IWhenable<Array<IWhenable<T>>>): Promise<T[]>;
+
+    /**
+     * Returns a promise for the first of an array of promises to become settled.
+     */
+    export function race<T>(promises: Array<IWhenable<T>>): Promise<T>;
+
+    /**
+     * Returns a promise that is fulfilled with an array of promise state snapshots, but only after all the original promises
+     * have settled, i.e. become either fulfilled or rejected.
+     */
+    export function allSettled<T>(promises: IWhenable<Array<IWhenable<T>>>): Promise<Array<PromiseState<T>>>;
+
+    /**
+     * Deprecated Alias for allSettled()
+     */
+    export function allResolved<T>(promises: IWhenable<Array<IWhenable<T>>>): Promise<Array<Promise<T>>>;
+
+    /**
+     * Like then, but "spreads" the array into a variadic fulfillment handler. If any of the promises in the array are
+     * rejected, instead calls onRejected with the first rejected promise's rejection reason. This is especially useful
+     * in conjunction with all.
+     */
+    export function spread<T, U>(promises: Array<IWhenable<T>>, onFulfilled: (...args: T[]) => IWhenable<U>, onRejected?: (reason: any) => IWhenable<U>): Promise<U>;
+
+    /**
+     * Returns a promise that will have the same result as promise, except that if promise is not fulfilled or rejected
+     * before ms milliseconds, the returned promise will be rejected with an Error with the given message. If message
+     * is not supplied, the message will be "Timed out after " + ms + " ms".
+     */
+    export function timeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T>;
+
+    /**
+     * Returns a promise that will have the same result as promise, but will only be fulfilled or rejected after at least ms milliseconds have passed.
+     */
+    export function delay<T>(promiseOrValue: Promise<T> | T, ms: number): Promise<T>;
+    /**
+     * Returns a promise that will be fulfilled with undefined after at least ms milliseconds have passed.
+     */
+    export function delay(ms: number): Promise<void>;
+
+    /**
+     * Returns whether a given promise is in the fulfilled state. When the static version is used on non-promises, the result is always true.
+     */
+    export function isFulfilled(promise: Promise<any>): boolean;
+
+    /**
+     * Returns whether a given promise is in the rejected state. When the static version is used on non-promises, the result is always false.
+     */
+    export function isRejected(promise: Promise<any>): boolean;
+
+    /**
+     * Returns whether a given promise is in the pending state. When the static version is used on non-promises, the result is always false.
+     */
+    export function isPending(promiseOrObject: Promise<any> | any): boolean;
+
+    /**
+     * Synchronously calls resolver(resolve, reject, notify) and returns a promise whose state is controlled by the
+     * functions passed to resolver. This is an alternative promise-creation API that has the same power as the deferred
+     * concept, but without introducing another conceptual entity.
+     * If resolver throws an exception, the returned promise will be rejected with that thrown exception as the rejection reason.
+     * note: In the latest github, this method is called Q.Promise, but if you are using the npm package version 0.9.7
+     * or below, the method is called Q.promise (lowercase vs uppercase p).
+     */
+    export function Promise<T>(resolver: (resolve: (val?: IWhenable<T>) => void, reject: (reason?: any) => void, notify: (progress: any) => void) => void): Promise<T>;
+
+    /**
+     * Creates a new version of func that accepts any combination of promise and non-promise values, converting them to their
+     * fulfillment values before calling the original func. The returned version also always returns a promise: if func does
+     * a return or throw, then Q.promised(func) will return fulfilled or rejected promise, respectively.
+     * This can be useful for creating functions that accept either promises or non-promise values, and for ensuring that
+     * the function always returns a promise even in the face of unintentional thrown exceptions.
+     */
+    export function promised<T>(callback: (...args: any[]) => T): (...args: any[]) => Promise<T>;
+
+    /**
+     * Returns whether the given value is a Q promise.
+     */
+    export function isPromise(object: any): object is Promise<any>;
+
+    /**
+     * Returns whether the given value is a promise (i.e. it's an object with a then function).
+     */
+    export function isPromiseAlike(object: any): object is IPromise<any>;
+
+    /**
+     * If an object is not a promise, it is as "near" as possible.
+     * If a promise is rejected, it is as "near" as possible too.
+     * If it's a fulfilled promise, the fulfillment value is nearer.
+     * If it's a deferred promise and the deferred has been resolved, the
+     * resolution is "nearer".
+     */
+    export function nearer<T>(promise: Promise<T>): T;
+
+    /**
+     * This is an experimental tool for converting a generator function into a deferred function. This has the potential
+     * of reducing nested callbacks in engines that support yield.
+     */
+    export function async<T>(generatorFunction: any): (...args: any[]) => Promise<T>;
+
+    export function nextTick(callback: (...args: any[]) => any): void;
+
+    /**
+     * A settable property that will intercept any uncaught errors that would otherwise be thrown in the next tick of the
+     * event loop, usually as a result of done. Can be useful for getting the full
+     * stack trace of an error in browsers, which is not usually possible with window.onerror.
+     */
+    export let onerror: (reason: any) => void;
+    /**
+     * A settable property that lets you turn on long stack trace support. If turned on, "stack jumps" will be tracked
+     * across asynchronous promise operations, so that if an uncaught error is thrown by done or a rejection reason's stack
+     * property is inspected in a rejection callback, a long stack trace is produced.
+     */
+    export let longStackSupport: boolean;
+
+    /**
+     * Resets the global "Q" variable to the value it has before Q was loaded.
+     * This will either be undefined if there was no version or the version of Q which was already loaded before.
+     * @returns The last version of Q.
+     */
+    export function noConflict(): typeof Q;
+}

+ 45 - 0
node_modules/@types/q/package.json

@@ -0,0 +1,45 @@
+{
+    "name": "@types/q",
+    "version": "1.5.5",
+    "description": "TypeScript definitions for Q",
+    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/q",
+    "license": "MIT",
+    "contributors": [
+        {
+            "name": "Barrie Nemetchek",
+            "url": "https://github.com/bnemetchek",
+            "githubUsername": "bnemetchek"
+        },
+        {
+            "name": "Andrew Gaspar",
+            "url": "https://github.com/AndrewGaspar",
+            "githubUsername": "AndrewGaspar"
+        },
+        {
+            "name": "John Reilly",
+            "url": "https://github.com/johnnyreilly",
+            "githubUsername": "johnnyreilly"
+        },
+        {
+            "name": "Michel Boudreau",
+            "url": "https://github.com/mboudreau",
+            "githubUsername": "mboudreau"
+        },
+        {
+            "name": "TeamworkGuy2",
+            "url": "https://github.com/TeamworkGuy2",
+            "githubUsername": "TeamworkGuy2"
+        }
+    ],
+    "main": "",
+    "types": "index.d.ts",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+        "directory": "types/q"
+    },
+    "scripts": {},
+    "dependencies": {},
+    "typesPublisherContentHash": "e35c02431c6153cb4f7280c296d68c5dead5ce1584c60e4fe11b5132cbf41b3f",
+    "typeScriptVersion": "3.6"
+}

+ 236 - 0
node_modules/accepts/HISTORY.md

@@ -0,0 +1,236 @@
+1.3.7 / 2019-04-29
+==================
+
+  * deps: negotiator@0.6.2
+    - Fix sorting charset, encoding, and language with extra parameters
+
+1.3.6 / 2019-04-28
+==================
+
+  * deps: mime-types@~2.1.24
+    - deps: mime-db@~1.40.0
+
+1.3.5 / 2018-02-28
+==================
+
+  * deps: mime-types@~2.1.18
+    - deps: mime-db@~1.33.0
+
+1.3.4 / 2017-08-22
+==================
+
+  * deps: mime-types@~2.1.16
+    - deps: mime-db@~1.29.0
+
+1.3.3 / 2016-05-02
+==================
+
+  * deps: mime-types@~2.1.11
+    - deps: mime-db@~1.23.0
+  * deps: negotiator@0.6.1
+    - perf: improve `Accept` parsing speed
+    - perf: improve `Accept-Charset` parsing speed
+    - perf: improve `Accept-Encoding` parsing speed
+    - perf: improve `Accept-Language` parsing speed
+
+1.3.2 / 2016-03-08
+==================
+
+  * deps: mime-types@~2.1.10
+    - Fix extension of `application/dash+xml`
+    - Update primary extension for `audio/mp4`
+    - deps: mime-db@~1.22.0
+
+1.3.1 / 2016-01-19
+==================
+
+  * deps: mime-types@~2.1.9
+    - deps: mime-db@~1.21.0
+
+1.3.0 / 2015-09-29
+==================
+
+  * deps: mime-types@~2.1.7
+    - deps: mime-db@~1.19.0
+  * deps: negotiator@0.6.0
+    - Fix including type extensions in parameters in `Accept` parsing
+    - Fix parsing `Accept` parameters with quoted equals
+    - Fix parsing `Accept` parameters with quoted semicolons
+    - Lazy-load modules from main entry point
+    - perf: delay type concatenation until needed
+    - perf: enable strict mode
+    - perf: hoist regular expressions
+    - perf: remove closures getting spec properties
+    - perf: remove a closure from media type parsing
+    - perf: remove property delete from media type parsing
+
+1.2.13 / 2015-09-06
+===================
+
+  * deps: mime-types@~2.1.6
+    - deps: mime-db@~1.18.0
+
+1.2.12 / 2015-07-30
+===================
+
+  * deps: mime-types@~2.1.4
+    - deps: mime-db@~1.16.0
+
+1.2.11 / 2015-07-16
+===================
+
+  * deps: mime-types@~2.1.3
+    - deps: mime-db@~1.15.0
+
+1.2.10 / 2015-07-01
+===================
+
+  * deps: mime-types@~2.1.2
+    - deps: mime-db@~1.14.0
+
+1.2.9 / 2015-06-08
+==================
+
+  * deps: mime-types@~2.1.1
+    - perf: fix deopt during mapping
+
+1.2.8 / 2015-06-07
+==================
+
+  * deps: mime-types@~2.1.0
+    - deps: mime-db@~1.13.0
+  * perf: avoid argument reassignment & argument slice
+  * perf: avoid negotiator recursive construction
+  * perf: enable strict mode
+  * perf: remove unnecessary bitwise operator
+
+1.2.7 / 2015-05-10
+==================
+
+  * deps: negotiator@0.5.3
+    - Fix media type parameter matching to be case-insensitive
+
+1.2.6 / 2015-05-07
+==================
+
+  * deps: mime-types@~2.0.11
+    - deps: mime-db@~1.9.1
+  * deps: negotiator@0.5.2
+    - Fix comparing media types with quoted values
+    - Fix splitting media types with quoted commas
+
+1.2.5 / 2015-03-13
+==================
+
+  * deps: mime-types@~2.0.10
+    - deps: mime-db@~1.8.0
+
+1.2.4 / 2015-02-14
+==================
+
+  * Support Node.js 0.6
+  * deps: mime-types@~2.0.9
+    - deps: mime-db@~1.7.0
+  * deps: negotiator@0.5.1
+    - Fix preference sorting to be stable for long acceptable lists
+
+1.2.3 / 2015-01-31
+==================
+
+  * deps: mime-types@~2.0.8
+    - deps: mime-db@~1.6.0
+
+1.2.2 / 2014-12-30
+==================
+
+  * deps: mime-types@~2.0.7
+    - deps: mime-db@~1.5.0
+
+1.2.1 / 2014-12-30
+==================
+
+  * deps: mime-types@~2.0.5
+    - deps: mime-db@~1.3.1
+
+1.2.0 / 2014-12-19
+==================
+
+  * deps: negotiator@0.5.0
+    - Fix list return order when large accepted list
+    - Fix missing identity encoding when q=0 exists
+    - Remove dynamic building of Negotiator class
+
+1.1.4 / 2014-12-10
+==================
+
+  * deps: mime-types@~2.0.4
+    - deps: mime-db@~1.3.0
+
+1.1.3 / 2014-11-09
+==================
+
+  * deps: mime-types@~2.0.3
+    - deps: mime-db@~1.2.0
+
+1.1.2 / 2014-10-14
+==================
+
+  * deps: negotiator@0.4.9
+    - Fix error when media type has invalid parameter
+
+1.1.1 / 2014-09-28
+==================
+
+  * deps: mime-types@~2.0.2
+    - deps: mime-db@~1.1.0
+  * deps: negotiator@0.4.8
+    - Fix all negotiations to be case-insensitive
+    - Stable sort preferences of same quality according to client order
+
+1.1.0 / 2014-09-02
+==================
+
+  * update `mime-types`
+
+1.0.7 / 2014-07-04
+==================
+
+  * Fix wrong type returned from `type` when match after unknown extension
+
+1.0.6 / 2014-06-24
+==================
+
+  * deps: negotiator@0.4.7
+
+1.0.5 / 2014-06-20
+==================
+
+ * fix crash when unknown extension given
+
+1.0.4 / 2014-06-19
+==================
+
+  * use `mime-types`
+
+1.0.3 / 2014-06-11
+==================
+
+  * deps: negotiator@0.4.6
+    - Order by specificity when quality is the same
+
+1.0.2 / 2014-05-29
+==================
+
+  * Fix interpretation when header not in request
+  * deps: pin negotiator@0.4.5
+
+1.0.1 / 2014-01-18
+==================
+
+  * Identity encoding isn't always acceptable
+  * deps: negotiator@~0.4.0
+
+1.0.0 / 2013-12-27
+==================
+
+  * Genesis

+ 23 - 0
node_modules/accepts/LICENSE

@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
+Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 142 - 0
node_modules/accepts/README.md

@@ -0,0 +1,142 @@
+# accepts
+
+[![NPM Version][npm-version-image]][npm-url]
+[![NPM Downloads][npm-downloads-image]][npm-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
+Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
+
+In addition to negotiator, it allows:
+
+- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])`
+  as well as `('text/html', 'application/json')`.
+- Allows type shorthands such as `json`.
+- Returns `false` when no types match
+- Treats non-existent headers as `*`
+
+## Installation
+
+This is a [Node.js](https://nodejs.org/en/) module available through the
+[npm registry](https://www.npmjs.com/). Installation is done using the
+[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
+
+```sh
+$ npm install accepts
+```
+
+## API
+
+<!-- eslint-disable no-unused-vars -->
+
+```js
+var accepts = require('accepts')
+```
+
+### accepts(req)
+
+Create a new `Accepts` object for the given `req`.
+
+#### .charset(charsets)
+
+Return the first accepted charset. If nothing in `charsets` is accepted,
+then `false` is returned.
+
+#### .charsets()
+
+Return the charsets that the request accepts, in the order of the client's
+preference (most preferred first).
+
+#### .encoding(encodings)
+
+Return the first accepted encoding. If nothing in `encodings` is accepted,
+then `false` is returned.
+
+#### .encodings()
+
+Return the encodings that the request accepts, in the order of the client's
+preference (most preferred first).
+
+#### .language(languages)
+
+Return the first accepted language. If nothing in `languages` is accepted,
+then `false` is returned.
+
+#### .languages()
+
+Return the languages that the request accepts, in the order of the client's
+preference (most preferred first).
+
+#### .type(types)
+
+Return the first accepted type (and it is returned as the same text as what
+appears in the `types` array). If nothing in `types` is accepted, then `false`
+is returned.
+
+The `types` array can contain full MIME types or file extensions. Any value
+that is not a full MIME types is passed to `require('mime-types').lookup`.
+
+#### .types()
+
+Return the types that the request accepts, in the order of the client's
+preference (most preferred first).
+
+## Examples
+
+### Simple type negotiation
+
+This simple example shows how to use `accepts` to return a different typed
+respond body based on what the client wants to accept. The server lists it's
+preferences in order and will get back the best match between the client and
+server.
+
+```js
+var accepts = require('accepts')
+var http = require('http')
+
+function app (req, res) {
+  var accept = accepts(req)
+
+  // the order of this list is significant; should be server preferred order
+  switch (accept.type(['json', 'html'])) {
+    case 'json':
+      res.setHeader('Content-Type', 'application/json')
+      res.write('{"hello":"world!"}')
+      break
+    case 'html':
+      res.setHeader('Content-Type', 'text/html')
+      res.write('<b>hello, world!</b>')
+      break
+    default:
+      // the fallback is text/plain, so no need to specify it above
+      res.setHeader('Content-Type', 'text/plain')
+      res.write('hello, world!')
+      break
+  }
+
+  res.end()
+}
+
+http.createServer(app).listen(3000)
+```
+
+You can test this out with the cURL program:
+```sh
+curl -I -H'Accept: text/html' http://localhost:3000/
+```
+
+## License
+
+[MIT](LICENSE)
+
+[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
+[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
+[node-version-image]: https://badgen.net/npm/node/accepts
+[node-version-url]: https://nodejs.org/en/download
+[npm-downloads-image]: https://badgen.net/npm/dm/accepts
+[npm-url]: https://npmjs.org/package/accepts
+[npm-version-image]: https://badgen.net/npm/v/accepts
+[travis-image]: https://badgen.net/travis/jshttp/accepts/master
+[travis-url]: https://travis-ci.org/jshttp/accepts

+ 238 - 0
node_modules/accepts/index.js

@@ -0,0 +1,238 @@
+/*!
+ * accepts
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var Negotiator = require('negotiator')
+var mime = require('mime-types')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = Accepts
+
+/**
+ * Create a new Accepts object for the given req.
+ *
+ * @param {object} req
+ * @public
+ */
+
+function Accepts (req) {
+  if (!(this instanceof Accepts)) {
+    return new Accepts(req)
+  }
+
+  this.headers = req.headers
+  this.negotiator = new Negotiator(req)
+}
+
+/**
+ * Check if the given `type(s)` is acceptable, returning
+ * the best match when true, otherwise `undefined`, in which
+ * case you should respond with 406 "Not Acceptable".
+ *
+ * The `type` value may be a single mime type string
+ * such as "application/json", the extension name
+ * such as "json" or an array `["json", "html", "text/plain"]`. When a list
+ * or array is given the _best_ match, if any is returned.
+ *
+ * Examples:
+ *
+ *     // Accept: text/html
+ *     this.types('html');
+ *     // => "html"
+ *
+ *     // Accept: text/*, application/json
+ *     this.types('html');
+ *     // => "html"
+ *     this.types('text/html');
+ *     // => "text/html"
+ *     this.types('json', 'text');
+ *     // => "json"
+ *     this.types('application/json');
+ *     // => "application/json"
+ *
+ *     // Accept: text/*, application/json
+ *     this.types('image/png');
+ *     this.types('png');
+ *     // => undefined
+ *
+ *     // Accept: text/*;q=.5, application/json
+ *     this.types(['html', 'json']);
+ *     this.types('html', 'json');
+ *     // => "json"
+ *
+ * @param {String|Array} types...
+ * @return {String|Array|Boolean}
+ * @public
+ */
+
+Accepts.prototype.type =
+Accepts.prototype.types = function (types_) {
+  var types = types_
+
+  // support flattened arguments
+  if (types && !Array.isArray(types)) {
+    types = new Array(arguments.length)
+    for (var i = 0; i < types.length; i++) {
+      types[i] = arguments[i]
+    }
+  }
+
+  // no types, return all requested types
+  if (!types || types.length === 0) {
+    return this.negotiator.mediaTypes()
+  }
+
+  // no accept header, return first given type
+  if (!this.headers.accept) {
+    return types[0]
+  }
+
+  var mimes = types.map(extToMime)
+  var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))
+  var first = accepts[0]
+
+  return first
+    ? types[mimes.indexOf(first)]
+    : false
+}
+
+/**
+ * Return accepted encodings or best fit based on `encodings`.
+ *
+ * Given `Accept-Encoding: gzip, deflate`
+ * an array sorted by quality is returned:
+ *
+ *     ['gzip', 'deflate']
+ *
+ * @param {String|Array} encodings...
+ * @return {String|Array}
+ * @public
+ */
+
+Accepts.prototype.encoding =
+Accepts.prototype.encodings = function (encodings_) {
+  var encodings = encodings_
+
+  // support flattened arguments
+  if (encodings && !Array.isArray(encodings)) {
+    encodings = new Array(arguments.length)
+    for (var i = 0; i < encodings.length; i++) {
+      encodings[i] = arguments[i]
+    }
+  }
+
+  // no encodings, return all requested encodings
+  if (!encodings || encodings.length === 0) {
+    return this.negotiator.encodings()
+  }
+
+  return this.negotiator.encodings(encodings)[0] || false
+}
+
+/**
+ * Return accepted charsets or best fit based on `charsets`.
+ *
+ * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
+ * an array sorted by quality is returned:
+ *
+ *     ['utf-8', 'utf-7', 'iso-8859-1']
+ *
+ * @param {String|Array} charsets...
+ * @return {String|Array}
+ * @public
+ */
+
+Accepts.prototype.charset =
+Accepts.prototype.charsets = function (charsets_) {
+  var charsets = charsets_
+
+  // support flattened arguments
+  if (charsets && !Array.isArray(charsets)) {
+    charsets = new Array(arguments.length)
+    for (var i = 0; i < charsets.length; i++) {
+      charsets[i] = arguments[i]
+    }
+  }
+
+  // no charsets, return all requested charsets
+  if (!charsets || charsets.length === 0) {
+    return this.negotiator.charsets()
+  }
+
+  return this.negotiator.charsets(charsets)[0] || false
+}
+
+/**
+ * Return accepted languages or best fit based on `langs`.
+ *
+ * Given `Accept-Language: en;q=0.8, es, pt`
+ * an array sorted by quality is returned:
+ *
+ *     ['es', 'pt', 'en']
+ *
+ * @param {String|Array} langs...
+ * @return {Array|String}
+ * @public
+ */
+
+Accepts.prototype.lang =
+Accepts.prototype.langs =
+Accepts.prototype.language =
+Accepts.prototype.languages = function (languages_) {
+  var languages = languages_
+
+  // support flattened arguments
+  if (languages && !Array.isArray(languages)) {
+    languages = new Array(arguments.length)
+    for (var i = 0; i < languages.length; i++) {
+      languages[i] = arguments[i]
+    }
+  }
+
+  // no languages, return all requested languages
+  if (!languages || languages.length === 0) {
+    return this.negotiator.languages()
+  }
+
+  return this.negotiator.languages(languages)[0] || false
+}
+
+/**
+ * Convert extnames to mime.
+ *
+ * @param {String} type
+ * @return {String}
+ * @private
+ */
+
+function extToMime (type) {
+  return type.indexOf('/') === -1
+    ? mime.lookup(type)
+    : type
+}
+
+/**
+ * Check if mime is valid.
+ *
+ * @param {String} type
+ * @return {String}
+ * @private
+ */
+
+function validMime (type) {
+  return typeof type === 'string'
+}

+ 47 - 0
node_modules/accepts/package.json

@@ -0,0 +1,47 @@
+{
+  "name": "accepts",
+  "description": "Higher-level content negotiation",
+  "version": "1.3.7",
+  "contributors": [
+    "Douglas Christopher Wilson <doug@somethingdoug.com>",
+    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+  ],
+  "license": "MIT",
+  "repository": "jshttp/accepts",
+  "dependencies": {
+    "mime-types": "~2.1.24",
+    "negotiator": "0.6.2"
+  },
+  "devDependencies": {
+    "deep-equal": "1.0.1",
+    "eslint": "5.16.0",
+    "eslint-config-standard": "12.0.0",
+    "eslint-plugin-import": "2.17.2",
+    "eslint-plugin-markdown": "1.0.0",
+    "eslint-plugin-node": "8.0.1",
+    "eslint-plugin-promise": "4.1.1",
+    "eslint-plugin-standard": "4.0.0",
+    "mocha": "6.1.4",
+    "nyc": "14.0.0"
+  },
+  "files": [
+    "LICENSE",
+    "HISTORY.md",
+    "index.js"
+  ],
+  "engines": {
+    "node": ">= 0.6"
+  },
+  "scripts": {
+    "lint": "eslint --plugin markdown --ext js,md .",
+    "test": "mocha --reporter spec --check-leaks --bail test/",
+    "test-cov": "nyc --reporter=html --reporter=text npm test",
+    "test-travis": "nyc --reporter=text npm test"
+  },
+  "keywords": [
+    "content",
+    "negotiation",
+    "accept",
+    "accepts"
+  ]
+}

+ 19 - 0
node_modules/acorn-dynamic-import/CHANGELOG.md

@@ -0,0 +1,19 @@
+# 2.0.2
+
+- Fixing parsing of `yield import()`.
+
+# 2.0.1
+
+- Removing unnecessary `in-publish` dependency.
+
+# 2.0.0
+
+- Updating acorn version to >= 4.
+
+# 1.0.1
+
+- Fixes for publishing the module.
+
+# 1.0.0
+
+- Initial release of plugin.

+ 21 - 0
node_modules/acorn-dynamic-import/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Jordan Gensler
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 33 - 0
node_modules/acorn-dynamic-import/README.md

@@ -0,0 +1,33 @@
+# Dynamic import support in acorn
+
+This is plugin for [Acorn](http://marijnhaverbeke.nl/acorn/) - a tiny, fast JavaScript parser, written completely in JavaScript.
+
+For more information, check out the [proposal repo](https://github.com/tc39/proposal-dynamic-import).
+
+## Usage
+
+You can use this module directly in order to get Acorn instance with plugin installed:
+
+```js
+import acorn from 'acorn-dynamic-import';
+// or...
+const acorn = require('acorn-dynamic-import').default;
+```
+
+Or you can use `inject.js` for injecting plugin into your own version of Acorn like this:
+
+```js
+const acorn = require('acorn-dynamic-import/lib/inject').default(require('./custom-acorn'));
+```
+
+Then, use the `plugins` option whenever you need to support dynamicImport while parsing:
+
+```js
+const ast = acorn.parse(code, {
+  plugins: { dynamicImport: true }
+});
+```
+
+## License
+
+This plugin is issued under the [MIT license](./LICENSE).

+ 17 - 0
node_modules/acorn-dynamic-import/lib/index.js

@@ -0,0 +1,17 @@
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _acorn = require('acorn');
+
+var acorn = _interopRequireWildcard(_acorn);
+
+var _inject = require('./inject');
+
+var _inject2 = _interopRequireDefault(_inject);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+exports['default'] = (0, _inject2['default'])(acorn);

+ 70 - 0
node_modules/acorn-dynamic-import/lib/inject.js

@@ -0,0 +1,70 @@
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports['default'] = injectDynamicImport;
+/* eslint-disable no-underscore-dangle */
+
+function injectDynamicImport(acorn) {
+  var tt = acorn.tokTypes;
+
+  // NOTE: This allows `yield import()` to parse correctly.
+  tt._import.startsExpr = true;
+
+  function parseDynamicImport() {
+    var node = this.startNode();
+    this.next();
+    if (this.type !== tt.parenL) {
+      this.unexpected();
+    }
+    return this.finishNode(node, 'Import');
+  }
+
+  function peekNext() {
+    return this.input[this.pos];
+  }
+
+  // eslint-disable-next-line no-param-reassign
+  acorn.plugins.dynamicImport = function () {
+    function dynamicImportPlugin(instance) {
+      instance.extend('parseStatement', function (nextMethod) {
+        return function () {
+          function parseStatement() {
+            var node = this.startNode();
+            if (this.type === tt._import) {
+              var nextToken = peekNext.call(this);
+              if (nextToken === tt.parenL.label) {
+                var expr = this.parseExpression();
+                return this.parseExpressionStatement(node, expr);
+              }
+            }
+
+            for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+              args[_key] = arguments[_key];
+            }
+
+            return nextMethod.apply(this, args);
+          }
+
+          return parseStatement;
+        }();
+      });
+
+      instance.extend('parseExprAtom', function (nextMethod) {
+        return function () {
+          function parseExprAtom(refDestructuringErrors) {
+            if (this.type === tt._import) {
+              return parseDynamicImport.call(this);
+            }
+            return nextMethod.call(this, refDestructuringErrors);
+          }
+
+          return parseExprAtom;
+        }();
+      });
+    }
+
+    return dynamicImportPlugin;
+  }();
+
+  return acorn;
+}

+ 1 - 0
node_modules/acorn-dynamic-import/node_modules/.bin/acorn

@@ -0,0 +1 @@
+../acorn/bin/acorn

+ 10 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/.npmignore

@@ -0,0 +1,10 @@
+/.tern-port
+/test
+/local
+/rollup
+/bin/generate-identifier-regex.js
+/bin/update_authors.sh
+.editorconfig
+.gitattributes
+.tern-project
+.travis.yml

+ 62 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/AUTHORS

@@ -0,0 +1,62 @@
+List of Acorn contributors. Updated before every release.
+
+Adrian Rakovsky
+Alistair Braidwood
+Amila Welihinda
+Andres Suarez
+Angelo
+Aparajita Fishman
+Arian Stolwijk
+Artem Govorov
+Brandon Mills
+Charles Hughes
+Conrad Irwin
+Daniel Tschinder
+David Bonnet
+Domenico Matteo
+Forbes Lindesay
+Gilad Peleg
+impinball
+Ingvar Stepanyan
+Jackson Ray Hamilton
+Jesse McCarthy
+Jiaxing Wang
+Joel Kemp
+Johannes Herr
+Jordan Klassen
+Jürg Lehni
+Kai Cataldo
+keeyipchan
+Keheliya Gallaba
+Kevin Irish
+Kevin Kwok
+krator
+Marijn Haverbeke
+Martin Carlberg
+Mat Garcia
+Mathias Bynens
+Mathieu 'p01' Henri
+Matthew Bastien
+Max Schaefer
+Max Zerzouri
+Mihai Bazon
+Mike Rennie
+naoh
+Nicholas C. Zakas
+Nick Fitzgerald
+Olivier Thomann
+Oskar Schöldström
+Paul Harper
+Peter Rust
+PlNG
+Prayag Verma
+ReadmeCritic
+r-e-d
+Richard Gibson
+Rich Harris
+Sebastian McKenzie
+Simen Bekkhus
+Timothy Gu
+Toru Nagashima
+Wexpo Lyu
+zsjforcn

+ 286 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/CHANGELOG.md

@@ -0,0 +1,286 @@
+## 4.0.11 (2017-02-07)
+
+### Bug fixes
+
+Allow all forms of member expressions to be parenthesized as lvalue.
+
+## 4.0.10 (2017-02-07)
+
+### Bug fixes
+
+Don't expect semicolons after default-exported functions or classes,
+even when they are expressions.
+
+Check for use of `'use strict'` directives in non-simple parameter
+functions, even when already in strict mode.
+
+## 4.0.9 (2017-02-06)
+
+### Bug fixes
+
+Fix incorrect error raised for parenthesized simple assignment
+targets, so that `(x) = 1` parses again.
+
+## 4.0.8 (2017-02-03)
+
+### Bug fixes
+
+Solve spurious parenthesized pattern errors by temporarily erring on
+the side of accepting programs that our delayed errors don't handle
+correctly yet.
+
+## 4.0.7 (2017-02-02)
+
+### Bug fixes
+
+Accept invalidly rejected code like `(x).y = 2` again.
+
+Don't raise an error when a function _inside_ strict code has a
+non-simple parameter list.
+
+## 4.0.6 (2017-02-02)
+
+### Bug fixes
+
+Fix exponential behavior (manifesting itself as a complete hang for
+even relatively small source files) introduced by the new 'use strict'
+check.
+
+## 4.0.5 (2017-02-02)
+
+### Bug fixes
+
+Disallow parenthesized pattern expressions.
+
+Allow keywords as export names.
+
+Don't allow the `async` keyword to be parenthesized.
+
+Properly raise an error when a keyword contains a character escape.
+
+Allow `"use strict"` to appear after other string literal expressions.
+
+Disallow labeled declarations.
+
+## 4.0.4 (2016-12-19)
+
+### Bug fixes
+
+Fix issue with loading acorn_loose.js with an AMD loader.
+
+Fix crash when `export` was followed by a keyword that can't be
+exported.
+
+## 4.0.3 (2016-08-16)
+
+### Bug fixes
+
+Allow regular function declarations inside single-statement `if`
+branches in loose mode. Forbid them entirely in strict mode.
+
+Properly parse properties named `async` in ES2017 mode.
+
+Fix bug where reserved words were broken in ES2017 mode.
+
+## 4.0.2 (2016-08-11)
+
+### Bug fixes
+
+Don't ignore period or 'e' characters after octal numbers.
+
+Fix broken parsing for call expressions in default parameter values
+of arrow functions.
+
+## 4.0.1 (2016-08-08)
+
+### Bug fixes
+
+Fix false positives in duplicated export name errors.
+
+## 4.0.0 (2016-08-07)
+
+### Breaking changes
+
+The default `ecmaVersion` option value is now 7.
+
+A number of internal method signatures changed, so plugins might need
+to be updated.
+
+### Bug fixes
+
+The parser now raises errors on duplicated export names.
+
+`arguments` and `eval` can now be used in shorthand properties.
+
+Duplicate parameter names in non-simple argument lists now always
+produce an error.
+
+### New features
+
+The `ecmaVersion` option now also accepts year-style version numbers
+(2015, etc).
+
+Support for `async`/`await` syntax when `ecmaVersion` is >= 8.
+
+Support for trailing commas in call expressions when `ecmaVersion`
+is >= 8.
+
+## 3.3.0 (2016-07-25)
+
+### Bug fixes
+
+Fix bug in tokenizing of regexp operator after a function declaration.
+
+Fix parser crash when parsing an array pattern with a hole.
+
+### New features
+
+Implement check against complex argument lists in functions that
+enable strict mode in ES7.
+
+## 3.2.0 (2016-06-07)
+
+### Bug fixes
+
+Improve handling of lack of unicode regexp support in host
+environment.
+
+Properly reject shorthand properties whose name is a keyword.
+
+Don't crash when the loose parser is called without options object.
+
+### New features
+
+Visitors created with `visit.make` now have their base as _prototype_,
+rather than copying properties into a fresh object.
+
+Make it possible to use `visit.ancestor` with a walk state.
+
+## 3.1.0 (2016-04-18)
+
+### Bug fixes
+
+Fix issue where the loose parser created invalid TemplateElement nodes
+for unclosed template literals.
+
+Properly tokenize the division operator directly after a function
+expression.
+
+Allow trailing comma in destructuring arrays.
+
+### New features
+
+The walker now allows defining handlers for `CatchClause` nodes.
+
+## 3.0.4 (2016-02-25)
+
+### Fixes
+
+Allow update expressions as left-hand-side of the ES7 exponential
+operator.
+
+## 3.0.2 (2016-02-10)
+
+### Fixes
+
+Fix bug that accidentally made `undefined` a reserved word when
+parsing ES7.
+
+## 3.0.0 (2016-02-10)
+
+### Breaking changes
+
+The default value of the `ecmaVersion` option is now 6 (used to be 5).
+
+Support for comprehension syntax (which was dropped from the draft
+spec) has been removed.
+
+### Fixes
+
+`let` and `yield` are now “contextual keywords”, meaning you can
+mostly use them as identifiers in ES5 non-strict code.
+
+A parenthesized class or function expression after `export default` is
+now parsed correctly.
+
+### New features
+
+When `ecmaVersion` is set to 7, Acorn will parse the exponentiation
+operator (`**`).
+
+The identifier character ranges are now based on Unicode 8.0.0.
+
+Plugins can now override the `raiseRecoverable` method to override the
+way non-critical errors are handled.
+
+## 2.7.0 (2016-01-04)
+
+### Fixes
+
+Stop allowing rest parameters in setters.
+
+Make sure the loose parser always attaches a `local` property to
+`ImportNamespaceSpecifier` nodes.
+
+Disallow `y` rexexp flag in ES5.
+
+Disallow `\00` and `\000` escapes in strict mode.
+
+Raise an error when an import name is a reserved word.
+
+## 2.6.4 (2015-11-12)
+
+### Fixes
+
+Fix crash in loose parser when parsing invalid object pattern.
+
+### New features
+
+Support plugins in the loose parser.
+
+## 2.6.2 (2015-11-10)
+
+### Fixes
+
+Don't crash when no options object is passed.
+
+## 2.6.0 (2015-11-09)
+
+### Fixes
+
+Add `await` as a reserved word in module sources.
+
+Disallow `yield` in a parameter default value for a generator.
+
+Forbid using a comma after a rest pattern in an array destructuring.
+
+### New features
+
+Support parsing stdin in command-line tool.
+
+## 2.5.2 (2015-10-27)
+
+### Fixes
+
+Fix bug where the walker walked an exported `let` statement as an
+expression.
+
+## 2.5.0 (2015-10-27)
+
+### Fixes
+
+Fix tokenizer support in the command-line tool.
+
+In the loose parser, don't allow non-string-literals as import
+sources.
+
+Stop allowing `new.target` outside of functions.
+
+Remove legacy `guard` and `guardedHandler` properties from try nodes.
+
+Stop allowing multiple `__proto__` properties on an object literal in
+strict mode.
+
+Don't allow rest parameters to be non-identifier patterns.
+
+Check for duplicate paramter names in arrow functions.

+ 19 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/LICENSE

@@ -0,0 +1,19 @@
+Copyright (C) 2012-2016 by various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 409 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/README.md

@@ -0,0 +1,409 @@
+# Acorn
+
+[![Build Status](https://travis-ci.org/ternjs/acorn.svg?branch=master)](https://travis-ci.org/ternjs/acorn)
+[![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn)
+[![CDNJS](https://img.shields.io/cdnjs/v/acorn.svg)](https://cdnjs.com/libraries/acorn)  
+[Author funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?force)](https://marijnhaverbeke.nl/fund/)
+
+A tiny, fast JavaScript parser, written completely in JavaScript.
+
+## Community
+
+Acorn is open source software released under an
+[MIT license](https://github.com/ternjs/acorn/blob/master/LICENSE).
+
+You are welcome to
+[report bugs](https://github.com/ternjs/acorn/issues) or create pull
+requests on [github](https://github.com/ternjs/acorn). For questions
+and discussion, please use the
+[Tern discussion forum](https://discuss.ternjs.net).
+
+## Installation
+
+The easiest way to install acorn is with [`npm`][npm].
+
+[npm]: https://www.npmjs.com/
+
+```sh
+npm install acorn
+```
+
+Alternately, download the source.
+
+```sh
+git clone https://github.com/ternjs/acorn.git
+```
+
+## Components
+
+When run in a CommonJS (node.js) or AMD environment, exported values
+appear in the interfaces exposed by the individual files, as usual.
+When loaded in the browser (Acorn works in any JS-enabled browser more
+recent than IE5) without any kind of module management, a single
+global object `acorn` will be defined, and all the exported properties
+will be added to that.
+
+### Main parser
+
+This is implemented in `dist/acorn.js`, and is what you get when you
+`require("acorn")` in node.js.
+
+**parse**`(input, options)` is used to parse a JavaScript program.
+The `input` parameter is a string, `options` can be undefined or an
+object setting some of the options listed below. The return value will
+be an abstract syntax tree object as specified by the
+[ESTree spec][estree].
+
+When  encountering   a  syntax   error,  the   parser  will   raise  a
+`SyntaxError` object with a meaningful  message. The error object will
+have a `pos` property that indicates the character offset at which the
+error occurred,  and a `loc`  object that contains a  `{line, column}`
+object referring to that same position.
+
+[estree]: https://github.com/estree/estree
+
+- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be
+  either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support for strict
+  mode, the set of reserved words, and support for new syntax features.
+  Default is 7.
+
+  **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being
+  implemented by Acorn.
+
+- **sourceType**: Indicate the mode the code should be parsed in. Can be
+  either `"script"` or `"module"`. This influences global strict mode
+  and parsing of `import` and `export` declarations.
+
+- **onInsertedSemicolon**: If given a callback, that callback will be
+  called whenever a missing semicolon is inserted by the parser. The
+  callback will be given the character offset of the point where the
+  semicolon is inserted as argument, and if `locations` is on, also a
+  `{line, column}` object representing this position.
+
+- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing
+  commas.
+
+- **allowReserved**: If `false`, using a reserved word will generate
+  an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher
+  versions. When given the value `"never"`, reserved words and
+  keywords can also not be used as property names (as in Internet
+  Explorer's old parser).
+
+- **allowReturnOutsideFunction**: By default, a return statement at
+  the top level raises an error. Set this to `true` to accept such
+  code.
+
+- **allowImportExportEverywhere**: By default, `import` and `export`
+  declarations can only appear at a program's top level. Setting this
+  option to `true` allows them anywhere where a statement is allowed.
+
+- **allowHashBang**: When this is enabled (off by default), if the
+  code starts with the characters `#!` (as in a shellscript), the
+  first line will be treated as a comment.
+
+- **locations**: When `true`, each node has a `loc` object attached
+  with `start` and `end` subobjects, each of which contains the
+  one-based line and zero-based column numbers in `{line, column}`
+  form. Default is `false`.
+
+- **onToken**: If a function is passed for this option, each found
+  token will be passed in same format as tokens returned from
+  `tokenizer().getToken()`.
+
+  If array is passed, each found token is pushed to it.
+
+  Note that you are not allowed to call the parser from the
+  callback—that will corrupt its internal state.
+
+- **onComment**: If a function is passed for this option, whenever a
+  comment is encountered the function will be called with the
+  following parameters:
+
+  - `block`: `true` if the comment is a block comment, false if it
+    is a line comment.
+  - `text`: The content of the comment.
+  - `start`: Character offset of the start of the comment.
+  - `end`: Character offset of the end of the comment.
+
+  When the `locations` options is on, the `{line, column}` locations
+  of the comment’s start and end are passed as two additional
+  parameters.
+
+  If array is passed for this option, each found comment is pushed
+  to it as object in Esprima format:
+
+  ```javascript
+  {
+    "type": "Line" | "Block",
+    "value": "comment text",
+    "start": Number,
+    "end": Number,
+    // If `locations` option is on:
+    "loc": {
+      "start": {line: Number, column: Number}
+      "end": {line: Number, column: Number}
+    },
+    // If `ranges` option is on:
+    "range": [Number, Number]
+  }
+  ```
+
+  Note that you are not allowed to call the parser from the
+  callback—that will corrupt its internal state.
+
+- **ranges**: Nodes have their start and end characters offsets
+  recorded in `start` and `end` properties (directly on the node,
+  rather than the `loc` object, which holds line/column data. To also
+  add a [semi-standardized][range] `range` property holding a
+  `[start, end]` array with the same numbers, set the `ranges` option
+  to `true`.
+
+- **program**: It is possible to parse multiple files into a single
+  AST by passing the tree produced by parsing the first file as the
+  `program` option in subsequent parses. This will add the toplevel
+  forms of the parsed file to the "Program" (top) node of an existing
+  parse tree.
+
+- **sourceFile**: When the `locations` option is `true`, you can pass
+  this option to add a `source` attribute in every node’s `loc`
+  object. Note that the contents of this option are not examined or
+  processed in any way; you are free to use whatever format you
+  choose.
+
+- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property
+  will be added (regardless of the `location` option) directly to the
+  nodes, rather than the `loc` object.
+
+- **preserveParens**: If this option is `true`, parenthesized expressions
+  are represented by (non-standard) `ParenthesizedExpression` nodes
+  that have a single `expression` property containing the expression
+  inside parentheses.
+
+[range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
+
+**parseExpressionAt**`(input, offset, options)` will parse a single
+expression in a string, and return its AST. It will not complain if
+there is more of the string left after the expression.
+
+**getLineInfo**`(input, offset)` can be used to get a `{line,
+column}` object for a given program string and character offset.
+
+**tokenizer**`(input, options)` returns an object with a `getToken`
+method that can be called repeatedly to get the next token, a `{start,
+end, type, value}` object (with added `loc` property when the
+`locations` option is enabled and `range` property when the `ranges`
+option is enabled). When the token's type is `tokTypes.eof`, you
+should stop calling the method, since it will keep returning that same
+token forever.
+
+In ES6 environment, returned result can be used as any other
+protocol-compliant iterable:
+
+```javascript
+for (let token of acorn.tokenizer(str)) {
+  // iterate over the tokens
+}
+
+// transform code to array of tokens:
+var tokens = [...acorn.tokenizer(str)];
+```
+
+**tokTypes** holds an object mapping names to the token type objects
+that end up in the `type` properties of tokens.
+
+#### Note on using with [Escodegen][escodegen]
+
+Escodegen supports generating comments from AST, attached in
+Esprima-specific format. In order to simulate same format in
+Acorn, consider following example:
+
+```javascript
+var comments = [], tokens = [];
+
+var ast = acorn.parse('var x = 42; // answer', {
+	// collect ranges for each node
+	ranges: true,
+	// collect comments in Esprima's format
+	onComment: comments,
+	// collect token ranges
+	onToken: tokens
+});
+
+// attach comments using collected information
+escodegen.attachComments(ast, comments, tokens);
+
+// generate code
+console.log(escodegen.generate(ast, {comment: true}));
+// > 'var x = 42;    // answer'
+```
+
+[escodegen]: https://github.com/estools/escodegen
+
+### dist/acorn_loose.js ###
+
+This file implements an error-tolerant parser. It exposes a single
+function. The loose parser is accessible in node.js via `require("acorn/dist/acorn_loose")`.
+
+**parse_dammit**`(input, options)` takes the same arguments and
+returns the same syntax tree as the `parse` function in `acorn.js`,
+but never raises an error, and will do its best to parse syntactically
+invalid code in as meaningful a way as it can. It'll insert identifier
+nodes with name `"✖"` as placeholders in places where it can't make
+sense of the input. Depends on `acorn.js`, because it uses the same
+tokenizer.
+
+### dist/walk.js ###
+
+Implements an abstract syntax tree walker. Will store its interface in
+`acorn.walk` when loaded without a module system.
+
+**simple**`(node, visitors, base, state)` does a 'simple' walk over
+a tree. `node` should be the AST node to walk, and `visitors` an
+object with properties whose names correspond to node types in the
+[ESTree spec][estree]. The properties should contain functions
+that will be called with the node object and, if applicable the state
+at that point. The last two arguments are optional. `base` is a walker
+algorithm, and `state` is a start state. The default walker will
+simply visit all statements and expressions and not produce a
+meaningful state. (An example of a use of state is to track scope at
+each point in the tree.)
+
+**ancestor**`(node, visitors, base, state)` does a 'simple' walk over
+a tree, building up an array of ancestor nodes (including the current node)
+and passing the array to the callbacks as a third parameter.
+
+**recursive**`(node, state, functions, base)` does a 'recursive'
+walk, where the walker functions are responsible for continuing the
+walk on the child nodes of their target node. `state` is the start
+state, and `functions` should contain an object that maps node types
+to walker functions. Such functions are called with `(node, state, c)`
+arguments, and can cause the walk to continue on a sub-node by calling
+the `c` argument on it with `(node, state)` arguments. The optional
+`base` argument provides the fallback walker functions for node types
+that aren't handled in the `functions` object. If not given, the
+default walkers will be used.
+
+**make**`(functions, base)` builds a new walker object by using the
+walker functions in `functions` and filling in the missing ones by
+taking defaults from `base`.
+
+**findNodeAt**`(node, start, end, test, base, state)` tries to
+locate a node in a tree at the given start and/or end offsets, which
+satisfies the predicate `test`. `start` and `end` can be either `null`
+(as wildcard) or a number. `test` may be a string (indicating a node
+type) or a function that takes `(nodeType, node)` arguments and
+returns a boolean indicating whether this node is interesting. `base`
+and `state` are optional, and can be used to specify a custom walker.
+Nodes are tested from inner to outer, so if two nodes match the
+boundaries, the inner one will be preferred.
+
+**findNodeAround**`(node, pos, test, base, state)` is a lot like
+`findNodeAt`, but will match any node that exists 'around' (spanning)
+the given position.
+
+**findNodeAfter**`(node, pos, test, base, state)` is similar to
+`findNodeAround`, but will match all nodes *after* the given position
+(testing outer nodes before inner nodes).
+
+## Command line interface
+
+The `bin/acorn` utility can be used to parse a file from the command
+line. It accepts as arguments its input file and the following
+options:
+
+- `--ecma3|--ecma5|--ecma6|--ecma7`: Sets the ECMAScript version to parse. Default is
+  version 5.
+
+- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise.
+
+- `--locations`: Attaches a "loc" object to each node with "start" and
+  "end" subobjects, each of which contains the one-based line and
+  zero-based column numbers in `{line, column}` form.
+
+- `--allow-hash-bang`: If the code starts with the characters #! (as in a shellscript), the first line will be treated as a comment.
+
+- `--compact`: No whitespace is used in the AST output.
+
+- `--silent`: Do not output the AST, just return the exit status.
+
+- `--help`: Print the usage information and quit.
+
+The utility spits out the syntax tree as JSON data.
+
+## Build system
+
+Acorn is written in ECMAScript 6, as a set of small modules, in the
+project's `src` directory, and compiled down to bigger ECMAScript 3
+files in `dist` using [Browserify](http://browserify.org) and
+[Babel](http://babeljs.io/). If you are already using Babel, you can
+consider including the modules directly.
+
+The command-line test runner (`npm test`) uses the ES6 modules. The
+browser-based test page (`test/index.html`) uses the compiled modules.
+The `bin/build-acorn.js` script builds the latter from the former.
+
+If you are working on Acorn, you'll probably want to try the code out
+directly, without an intermediate build step. In your scripts, you can
+register the Babel require shim like this:
+
+    require("babel-core/register")
+
+That will allow you to directly `require` the ES6 modules.
+
+## Plugins
+
+Acorn is designed support allow plugins which, within reasonable
+bounds, redefine the way the parser works. Plugins can add new token
+types and new tokenizer contexts (if necessary), and extend methods in
+the parser object. This is not a clean, elegant API—using it requires
+an understanding of Acorn's internals, and plugins are likely to break
+whenever those internals are significantly changed. But still, it is
+_possible_, in this way, to create parsers for JavaScript dialects
+without forking all of Acorn. And in principle it is even possible to
+combine such plugins, so that if you have, for example, a plugin for
+parsing types and a plugin for parsing JSX-style XML literals, you
+could load them both and parse code with both JSX tags and types.
+
+A plugin should register itself by adding a property to
+`acorn.plugins`, which holds a function. Calling `acorn.parse`, a
+`plugins` option can be passed, holding an object mapping plugin names
+to configuration values (or just `true` for plugins that don't take
+options). After the parser object has been created, the initialization
+functions for the chosen plugins are called with `(parser,
+configValue)` arguments. They are expected to use the `parser.extend`
+method to extend parser methods. For example, the `readToken` method
+could be extended like this:
+
+```javascript
+parser.extend("readToken", function(nextMethod) {
+  return function(code) {
+    console.log("Reading a token!")
+    return nextMethod.call(this, code)
+  }
+})
+```
+
+The `nextMethod` argument passed to `extend`'s second argument is the
+previous value of this method, and should usually be called through to
+whenever the extended method does not handle the call itself.
+
+Similarly, the loose parser allows plugins to register themselves via
+`acorn.pluginsLoose`.  The extension mechanism is the same as for the
+normal parser:
+
+```javascript
+looseParser.extend("readToken", function(nextMethod) {
+  return function() {
+    console.log("Reading a token in the loose parser!")
+    return nextMethod.call(this)
+  }
+})
+```
+
+### Existing plugins
+
+ - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx)
+ - [`acorn-es7-plugin`](https://github.com/MatAtBread/acorn-es7-plugin/): Parse [async/await syntax proposal](https://github.com/tc39/ecmascript-asyncawait)
+ - [`acorn-object-spread`](https://github.com/UXtemple/acorn-object-spread): Parse [object spread syntax proposal](https://github.com/sebmarkbage/ecmascript-rest-spread)
+ - [`acorn-es7`](https://www.npmjs.com/package/acorn-es7): Parse [decorator syntax proposal](https://github.com/wycats/javascript-decorators)
+ - [`acorn-objj`](https://www.npmjs.com/package/acorn-objj): [Objective-J](http://www.cappuccino-project.org/learn/objective-j.html) language parser built as Acorn plugin

+ 67 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/bin/acorn

@@ -0,0 +1,67 @@
+#!/usr/bin/env node
+'use strict';
+
+var path = require('path');
+var fs = require('fs');
+var acorn = require('../dist/acorn.js');
+
+var infile;
+var forceFile;
+var silent = false;
+var compact = false;
+var tokenize = false;
+var options = {}
+
+function help(status) {
+  var print = (status == 0) ? console.log : console.error
+  print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|...|--ecma2015|--ecma2016|...]")
+  print("        [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]")
+  process.exit(status)
+}
+
+for (var i = 2; i < process.argv.length; ++i) {
+  var arg = process.argv[i]
+  if ((arg == "-" || arg[0] != "-") && !infile) infile = arg
+  else if (arg == "--" && !infile && i + 2 == process.argv.length) forceFile = infile = process.argv[++i]
+  else if (arg == "--locations") options.locations = true
+  else if (arg == "--allow-hash-bang") options.allowHashBang = true
+  else if (arg == "--silent") silent = true
+  else if (arg == "--compact") compact = true
+  else if (arg == "--help") help(0)
+  else if (arg == "--tokenize") tokenize = true
+  else if (arg == "--module") options.sourceType = 'module'
+  else {
+    var match = arg.match(/^--ecma(\d+)$/)
+    if (match)
+      options.ecmaVersion = +match[1]
+    else
+      help(1)
+  }
+}
+
+function run(code) {
+  var result
+  if (!tokenize) {
+    try { result = acorn.parse(code, options) }
+    catch(e) { console.error(e.message); process.exit(1) }
+  } else {
+    result = []
+    var tokenizer = acorn.tokenizer(code, options), token
+    while (true) {
+      try { token = tokenizer.getToken() }
+      catch(e) { console.error(e.message); process.exit(1) }
+      result.push(token)
+      if (token.type == acorn.tokTypes.eof) break
+    }
+  }
+  if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2))
+}
+
+if (forceFile || infile && infile != "-") {
+  run(fs.readFileSync(infile, "utf8"))
+} else {
+  var code = ""
+  process.stdin.resume()
+  process.stdin.on("data", function (chunk) { return code += chunk; })
+  process.stdin.on("end", function () { return run(code); })
+}

+ 0 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/.keep


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 3401 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn.es.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 3433 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1364 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn_loose.es.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1374 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn_loose.js


+ 342 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/walk.es.js

@@ -0,0 +1,342 @@
+// AST walker module for Mozilla Parser API compatible trees
+
+// A simple walk is one where you simply specify callbacks to be
+// called on specific nodes. The last two arguments are optional. A
+// simple use would be
+//
+//     walk.simple(myTree, {
+//         Expression: function(node) { ... }
+//     });
+//
+// to do something with all expressions. All Parser API node types
+// can be used to identify node types, as well as Expression,
+// Statement, and ScopeBody, which denote categories of nodes.
+//
+// The base argument can be used to pass a custom (recursive)
+// walker, and state can be used to give this walked an initial
+// state.
+
+function simple(node, visitors, base, state, override) {
+  if (!base) base = exports.base
+  ;(function c(node, st, override) {
+    var type = override || node.type, found = visitors[type]
+    base[type](node, st, c)
+    if (found) found(node, st)
+  })(node, state, override)
+}
+
+// An ancestor walk keeps an array of ancestor nodes (including the
+// current node) and passes them to the callback as third parameter
+// (and also as state parameter when no other state is present).
+function ancestor(node, visitors, base, state) {
+  if (!base) base = exports.base
+  var ancestors = []
+  ;(function c(node, st, override) {
+    var type = override || node.type, found = visitors[type]
+    var isNew = node != ancestors[ancestors.length - 1]
+    if (isNew) ancestors.push(node)
+    base[type](node, st, c)
+    if (found) found(node, st || ancestors, ancestors)
+    if (isNew) ancestors.pop()
+  })(node, state)
+}
+
+// A recursive walk is one where your functions override the default
+// walkers. They can modify and replace the state parameter that's
+// threaded through the walk, and can opt how and whether to walk
+// their child nodes (by calling their third argument on these
+// nodes).
+function recursive(node, state, funcs, base, override) {
+  var visitor = funcs ? exports.make(funcs, base) : base
+  ;(function c(node, st, override) {
+    visitor[override || node.type](node, st, c)
+  })(node, state, override)
+}
+
+function makeTest(test) {
+  if (typeof test == "string")
+    return function (type) { return type == test; }
+  else if (!test)
+    return function () { return true; }
+  else
+    return test
+}
+
+var Found = function Found(node, state) { this.node = node; this.state = state };
+
+// Find a node with a given start, end, and type (all are optional,
+// null can be used as wildcard). Returns a {node, state} object, or
+// undefined when it doesn't find a matching node.
+function findNodeAt(node, start, end, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  try {
+    ;(function c(node, st, override) {
+      var type = override || node.type
+      if ((start == null || node.start <= start) &&
+          (end == null || node.end >= end))
+        base[type](node, st, c)
+      if ((start == null || node.start == start) &&
+          (end == null || node.end == end) &&
+          test(type, node))
+        throw new Found(node, st)
+    })(node, state)
+  } catch (e) {
+    if (e instanceof Found) return e
+    throw e
+  }
+}
+
+// Find the innermost node of a given type that contains the given
+// position. Interface similar to findNodeAt.
+function findNodeAround(node, pos, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  try {
+    ;(function c(node, st, override) {
+      var type = override || node.type
+      if (node.start > pos || node.end < pos) return
+      base[type](node, st, c)
+      if (test(type, node)) throw new Found(node, st)
+    })(node, state)
+  } catch (e) {
+    if (e instanceof Found) return e
+    throw e
+  }
+}
+
+// Find the outermost matching node after a given position.
+function findNodeAfter(node, pos, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  try {
+    ;(function c(node, st, override) {
+      if (node.end < pos) return
+      var type = override || node.type
+      if (node.start >= pos && test(type, node)) throw new Found(node, st)
+      base[type](node, st, c)
+    })(node, state)
+  } catch (e) {
+    if (e instanceof Found) return e
+    throw e
+  }
+}
+
+// Find the outermost matching node before a given position.
+function findNodeBefore(node, pos, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  var max
+  ;(function c(node, st, override) {
+    if (node.start > pos) return
+    var type = override || node.type
+    if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))
+      max = new Found(node, st)
+    base[type](node, st, c)
+  })(node, state)
+  return max
+}
+
+// Fallback to an Object.create polyfill for older environments.
+var create = Object.create || function(proto) {
+  function Ctor() {}
+  Ctor.prototype = proto
+  return new Ctor
+}
+
+// Used to create a custom walker. Will fill in all missing node
+// type properties with the defaults.
+function make(funcs, base) {
+  if (!base) base = exports.base
+  var visitor = create(base)
+  for (var type in funcs) visitor[type] = funcs[type]
+  return visitor
+}
+
+function skipThrough(node, st, c) { c(node, st) }
+function ignore(_node, _st, _c) {}
+
+// Node walkers.
+
+var base = {}
+
+base.Program = base.BlockStatement = function (node, st, c) {
+  for (var i = 0; i < node.body.length; ++i)
+    c(node.body[i], st, "Statement")
+}
+base.Statement = skipThrough
+base.EmptyStatement = ignore
+base.ExpressionStatement = base.ParenthesizedExpression =
+  function (node, st, c) { return c(node.expression, st, "Expression"); }
+base.IfStatement = function (node, st, c) {
+  c(node.test, st, "Expression")
+  c(node.consequent, st, "Statement")
+  if (node.alternate) c(node.alternate, st, "Statement")
+}
+base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); }
+base.BreakStatement = base.ContinueStatement = ignore
+base.WithStatement = function (node, st, c) {
+  c(node.object, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.SwitchStatement = function (node, st, c) {
+  c(node.discriminant, st, "Expression")
+  for (var i = 0; i < node.cases.length; ++i) {
+    var cs = node.cases[i]
+    if (cs.test) c(cs.test, st, "Expression")
+    for (var j = 0; j < cs.consequent.length; ++j)
+      c(cs.consequent[j], st, "Statement")
+  }
+}
+base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {
+  if (node.argument) c(node.argument, st, "Expression")
+}
+base.ThrowStatement = base.SpreadElement =
+  function (node, st, c) { return c(node.argument, st, "Expression"); }
+base.TryStatement = function (node, st, c) {
+  c(node.block, st, "Statement")
+  if (node.handler) c(node.handler, st)
+  if (node.finalizer) c(node.finalizer, st, "Statement")
+}
+base.CatchClause = function (node, st, c) {
+  c(node.param, st, "Pattern")
+  c(node.body, st, "ScopeBody")
+}
+base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
+  c(node.test, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.ForStatement = function (node, st, c) {
+  if (node.init) c(node.init, st, "ForInit")
+  if (node.test) c(node.test, st, "Expression")
+  if (node.update) c(node.update, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.ForInStatement = base.ForOfStatement = function (node, st, c) {
+  c(node.left, st, "ForInit")
+  c(node.right, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.ForInit = function (node, st, c) {
+  if (node.type == "VariableDeclaration") c(node, st)
+  else c(node, st, "Expression")
+}
+base.DebuggerStatement = ignore
+
+base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); }
+base.VariableDeclaration = function (node, st, c) {
+  for (var i = 0; i < node.declarations.length; ++i)
+    c(node.declarations[i], st)
+}
+base.VariableDeclarator = function (node, st, c) {
+  c(node.id, st, "Pattern")
+  if (node.init) c(node.init, st, "Expression")
+}
+
+base.Function = function (node, st, c) {
+  if (node.id) c(node.id, st, "Pattern")
+  for (var i = 0; i < node.params.length; i++)
+    c(node.params[i], st, "Pattern")
+  c(node.body, st, node.expression ? "ScopeExpression" : "ScopeBody")
+}
+// FIXME drop these node types in next major version
+// (They are awkward, and in ES6 every block can be a scope.)
+base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); }
+base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); }
+
+base.Pattern = function (node, st, c) {
+  if (node.type == "Identifier")
+    c(node, st, "VariablePattern")
+  else if (node.type == "MemberExpression")
+    c(node, st, "MemberPattern")
+  else
+    c(node, st)
+}
+base.VariablePattern = ignore
+base.MemberPattern = skipThrough
+base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); }
+base.ArrayPattern =  function (node, st, c) {
+  for (var i = 0; i < node.elements.length; ++i) {
+    var elt = node.elements[i]
+    if (elt) c(elt, st, "Pattern")
+  }
+}
+base.ObjectPattern = function (node, st, c) {
+  for (var i = 0; i < node.properties.length; ++i)
+    c(node.properties[i].value, st, "Pattern")
+}
+
+base.Expression = skipThrough
+base.ThisExpression = base.Super = base.MetaProperty = ignore
+base.ArrayExpression = function (node, st, c) {
+  for (var i = 0; i < node.elements.length; ++i) {
+    var elt = node.elements[i]
+    if (elt) c(elt, st, "Expression")
+  }
+}
+base.ObjectExpression = function (node, st, c) {
+  for (var i = 0; i < node.properties.length; ++i)
+    c(node.properties[i], st)
+}
+base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration
+base.SequenceExpression = base.TemplateLiteral = function (node, st, c) {
+  for (var i = 0; i < node.expressions.length; ++i)
+    c(node.expressions[i], st, "Expression")
+}
+base.UnaryExpression = base.UpdateExpression = function (node, st, c) {
+  c(node.argument, st, "Expression")
+}
+base.BinaryExpression = base.LogicalExpression = function (node, st, c) {
+  c(node.left, st, "Expression")
+  c(node.right, st, "Expression")
+}
+base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {
+  c(node.left, st, "Pattern")
+  c(node.right, st, "Expression")
+}
+base.ConditionalExpression = function (node, st, c) {
+  c(node.test, st, "Expression")
+  c(node.consequent, st, "Expression")
+  c(node.alternate, st, "Expression")
+}
+base.NewExpression = base.CallExpression = function (node, st, c) {
+  c(node.callee, st, "Expression")
+  if (node.arguments) for (var i = 0; i < node.arguments.length; ++i)
+    c(node.arguments[i], st, "Expression")
+}
+base.MemberExpression = function (node, st, c) {
+  c(node.object, st, "Expression")
+  if (node.computed) c(node.property, st, "Expression")
+}
+base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
+  if (node.declaration)
+    c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression")
+  if (node.source) c(node.source, st, "Expression")
+}
+base.ExportAllDeclaration = function (node, st, c) {
+  c(node.source, st, "Expression")
+}
+base.ImportDeclaration = function (node, st, c) {
+  for (var i = 0; i < node.specifiers.length; i++)
+    c(node.specifiers[i], st)
+  c(node.source, st, "Expression")
+}
+base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore
+
+base.TaggedTemplateExpression = function (node, st, c) {
+  c(node.tag, st, "Expression")
+  c(node.quasi, st)
+}
+base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); }
+base.Class = function (node, st, c) {
+  if (node.id) c(node.id, st, "Pattern")
+  if (node.superClass) c(node.superClass, st, "Expression")
+  for (var i = 0; i < node.body.body.length; i++)
+    c(node.body.body[i], st)
+}
+base.MethodDefinition = base.Property = function (node, st, c) {
+  if (node.computed) c(node.key, st, "Expression")
+  c(node.value, st, "Expression")
+}
+
+export { simple, ancestor, recursive, findNodeAt, findNodeAround, findNodeAfter, findNodeBefore, make, base };

+ 360 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/dist/walk.js

@@ -0,0 +1,360 @@
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+  typeof define === 'function' && define.amd ? define(['exports'], factory) :
+  (factory((global.acorn = global.acorn || {}, global.acorn.walk = global.acorn.walk || {})));
+}(this, (function (exports) { 'use strict';
+
+// AST walker module for Mozilla Parser API compatible trees
+
+// A simple walk is one where you simply specify callbacks to be
+// called on specific nodes. The last two arguments are optional. A
+// simple use would be
+//
+//     walk.simple(myTree, {
+//         Expression: function(node) { ... }
+//     });
+//
+// to do something with all expressions. All Parser API node types
+// can be used to identify node types, as well as Expression,
+// Statement, and ScopeBody, which denote categories of nodes.
+//
+// The base argument can be used to pass a custom (recursive)
+// walker, and state can be used to give this walked an initial
+// state.
+
+function simple(node, visitors, base, state, override) {
+  if (!base) base = exports.base
+  ;(function c(node, st, override) {
+    var type = override || node.type, found = visitors[type]
+    base[type](node, st, c)
+    if (found) found(node, st)
+  })(node, state, override)
+}
+
+// An ancestor walk keeps an array of ancestor nodes (including the
+// current node) and passes them to the callback as third parameter
+// (and also as state parameter when no other state is present).
+function ancestor(node, visitors, base, state) {
+  if (!base) base = exports.base
+  var ancestors = []
+  ;(function c(node, st, override) {
+    var type = override || node.type, found = visitors[type]
+    var isNew = node != ancestors[ancestors.length - 1]
+    if (isNew) ancestors.push(node)
+    base[type](node, st, c)
+    if (found) found(node, st || ancestors, ancestors)
+    if (isNew) ancestors.pop()
+  })(node, state)
+}
+
+// A recursive walk is one where your functions override the default
+// walkers. They can modify and replace the state parameter that's
+// threaded through the walk, and can opt how and whether to walk
+// their child nodes (by calling their third argument on these
+// nodes).
+function recursive(node, state, funcs, base, override) {
+  var visitor = funcs ? exports.make(funcs, base) : base
+  ;(function c(node, st, override) {
+    visitor[override || node.type](node, st, c)
+  })(node, state, override)
+}
+
+function makeTest(test) {
+  if (typeof test == "string")
+    return function (type) { return type == test; }
+  else if (!test)
+    return function () { return true; }
+  else
+    return test
+}
+
+var Found = function Found(node, state) { this.node = node; this.state = state };
+
+// Find a node with a given start, end, and type (all are optional,
+// null can be used as wildcard). Returns a {node, state} object, or
+// undefined when it doesn't find a matching node.
+function findNodeAt(node, start, end, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  try {
+    ;(function c(node, st, override) {
+      var type = override || node.type
+      if ((start == null || node.start <= start) &&
+          (end == null || node.end >= end))
+        base[type](node, st, c)
+      if ((start == null || node.start == start) &&
+          (end == null || node.end == end) &&
+          test(type, node))
+        throw new Found(node, st)
+    })(node, state)
+  } catch (e) {
+    if (e instanceof Found) return e
+    throw e
+  }
+}
+
+// Find the innermost node of a given type that contains the given
+// position. Interface similar to findNodeAt.
+function findNodeAround(node, pos, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  try {
+    ;(function c(node, st, override) {
+      var type = override || node.type
+      if (node.start > pos || node.end < pos) return
+      base[type](node, st, c)
+      if (test(type, node)) throw new Found(node, st)
+    })(node, state)
+  } catch (e) {
+    if (e instanceof Found) return e
+    throw e
+  }
+}
+
+// Find the outermost matching node after a given position.
+function findNodeAfter(node, pos, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  try {
+    ;(function c(node, st, override) {
+      if (node.end < pos) return
+      var type = override || node.type
+      if (node.start >= pos && test(type, node)) throw new Found(node, st)
+      base[type](node, st, c)
+    })(node, state)
+  } catch (e) {
+    if (e instanceof Found) return e
+    throw e
+  }
+}
+
+// Find the outermost matching node before a given position.
+function findNodeBefore(node, pos, test, base, state) {
+  test = makeTest(test)
+  if (!base) base = exports.base
+  var max
+  ;(function c(node, st, override) {
+    if (node.start > pos) return
+    var type = override || node.type
+    if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))
+      max = new Found(node, st)
+    base[type](node, st, c)
+  })(node, state)
+  return max
+}
+
+// Fallback to an Object.create polyfill for older environments.
+var create = Object.create || function(proto) {
+  function Ctor() {}
+  Ctor.prototype = proto
+  return new Ctor
+}
+
+// Used to create a custom walker. Will fill in all missing node
+// type properties with the defaults.
+function make(funcs, base) {
+  if (!base) base = exports.base
+  var visitor = create(base)
+  for (var type in funcs) visitor[type] = funcs[type]
+  return visitor
+}
+
+function skipThrough(node, st, c) { c(node, st) }
+function ignore(_node, _st, _c) {}
+
+// Node walkers.
+
+var base = {}
+
+base.Program = base.BlockStatement = function (node, st, c) {
+  for (var i = 0; i < node.body.length; ++i)
+    c(node.body[i], st, "Statement")
+}
+base.Statement = skipThrough
+base.EmptyStatement = ignore
+base.ExpressionStatement = base.ParenthesizedExpression =
+  function (node, st, c) { return c(node.expression, st, "Expression"); }
+base.IfStatement = function (node, st, c) {
+  c(node.test, st, "Expression")
+  c(node.consequent, st, "Statement")
+  if (node.alternate) c(node.alternate, st, "Statement")
+}
+base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); }
+base.BreakStatement = base.ContinueStatement = ignore
+base.WithStatement = function (node, st, c) {
+  c(node.object, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.SwitchStatement = function (node, st, c) {
+  c(node.discriminant, st, "Expression")
+  for (var i = 0; i < node.cases.length; ++i) {
+    var cs = node.cases[i]
+    if (cs.test) c(cs.test, st, "Expression")
+    for (var j = 0; j < cs.consequent.length; ++j)
+      c(cs.consequent[j], st, "Statement")
+  }
+}
+base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {
+  if (node.argument) c(node.argument, st, "Expression")
+}
+base.ThrowStatement = base.SpreadElement =
+  function (node, st, c) { return c(node.argument, st, "Expression"); }
+base.TryStatement = function (node, st, c) {
+  c(node.block, st, "Statement")
+  if (node.handler) c(node.handler, st)
+  if (node.finalizer) c(node.finalizer, st, "Statement")
+}
+base.CatchClause = function (node, st, c) {
+  c(node.param, st, "Pattern")
+  c(node.body, st, "ScopeBody")
+}
+base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
+  c(node.test, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.ForStatement = function (node, st, c) {
+  if (node.init) c(node.init, st, "ForInit")
+  if (node.test) c(node.test, st, "Expression")
+  if (node.update) c(node.update, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.ForInStatement = base.ForOfStatement = function (node, st, c) {
+  c(node.left, st, "ForInit")
+  c(node.right, st, "Expression")
+  c(node.body, st, "Statement")
+}
+base.ForInit = function (node, st, c) {
+  if (node.type == "VariableDeclaration") c(node, st)
+  else c(node, st, "Expression")
+}
+base.DebuggerStatement = ignore
+
+base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); }
+base.VariableDeclaration = function (node, st, c) {
+  for (var i = 0; i < node.declarations.length; ++i)
+    c(node.declarations[i], st)
+}
+base.VariableDeclarator = function (node, st, c) {
+  c(node.id, st, "Pattern")
+  if (node.init) c(node.init, st, "Expression")
+}
+
+base.Function = function (node, st, c) {
+  if (node.id) c(node.id, st, "Pattern")
+  for (var i = 0; i < node.params.length; i++)
+    c(node.params[i], st, "Pattern")
+  c(node.body, st, node.expression ? "ScopeExpression" : "ScopeBody")
+}
+// FIXME drop these node types in next major version
+// (They are awkward, and in ES6 every block can be a scope.)
+base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); }
+base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); }
+
+base.Pattern = function (node, st, c) {
+  if (node.type == "Identifier")
+    c(node, st, "VariablePattern")
+  else if (node.type == "MemberExpression")
+    c(node, st, "MemberPattern")
+  else
+    c(node, st)
+}
+base.VariablePattern = ignore
+base.MemberPattern = skipThrough
+base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); }
+base.ArrayPattern =  function (node, st, c) {
+  for (var i = 0; i < node.elements.length; ++i) {
+    var elt = node.elements[i]
+    if (elt) c(elt, st, "Pattern")
+  }
+}
+base.ObjectPattern = function (node, st, c) {
+  for (var i = 0; i < node.properties.length; ++i)
+    c(node.properties[i].value, st, "Pattern")
+}
+
+base.Expression = skipThrough
+base.ThisExpression = base.Super = base.MetaProperty = ignore
+base.ArrayExpression = function (node, st, c) {
+  for (var i = 0; i < node.elements.length; ++i) {
+    var elt = node.elements[i]
+    if (elt) c(elt, st, "Expression")
+  }
+}
+base.ObjectExpression = function (node, st, c) {
+  for (var i = 0; i < node.properties.length; ++i)
+    c(node.properties[i], st)
+}
+base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration
+base.SequenceExpression = base.TemplateLiteral = function (node, st, c) {
+  for (var i = 0; i < node.expressions.length; ++i)
+    c(node.expressions[i], st, "Expression")
+}
+base.UnaryExpression = base.UpdateExpression = function (node, st, c) {
+  c(node.argument, st, "Expression")
+}
+base.BinaryExpression = base.LogicalExpression = function (node, st, c) {
+  c(node.left, st, "Expression")
+  c(node.right, st, "Expression")
+}
+base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {
+  c(node.left, st, "Pattern")
+  c(node.right, st, "Expression")
+}
+base.ConditionalExpression = function (node, st, c) {
+  c(node.test, st, "Expression")
+  c(node.consequent, st, "Expression")
+  c(node.alternate, st, "Expression")
+}
+base.NewExpression = base.CallExpression = function (node, st, c) {
+  c(node.callee, st, "Expression")
+  if (node.arguments) for (var i = 0; i < node.arguments.length; ++i)
+    c(node.arguments[i], st, "Expression")
+}
+base.MemberExpression = function (node, st, c) {
+  c(node.object, st, "Expression")
+  if (node.computed) c(node.property, st, "Expression")
+}
+base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
+  if (node.declaration)
+    c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression")
+  if (node.source) c(node.source, st, "Expression")
+}
+base.ExportAllDeclaration = function (node, st, c) {
+  c(node.source, st, "Expression")
+}
+base.ImportDeclaration = function (node, st, c) {
+  for (var i = 0; i < node.specifiers.length; i++)
+    c(node.specifiers[i], st)
+  c(node.source, st, "Expression")
+}
+base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore
+
+base.TaggedTemplateExpression = function (node, st, c) {
+  c(node.tag, st, "Expression")
+  c(node.quasi, st)
+}
+base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); }
+base.Class = function (node, st, c) {
+  if (node.id) c(node.id, st, "Pattern")
+  if (node.superClass) c(node.superClass, st, "Expression")
+  for (var i = 0; i < node.body.body.length; i++)
+    c(node.body.body[i], st)
+}
+base.MethodDefinition = base.Property = function (node, st, c) {
+  if (node.computed) c(node.key, st, "Expression")
+  c(node.value, st, "Expression")
+}
+
+exports.simple = simple;
+exports.ancestor = ancestor;
+exports.recursive = recursive;
+exports.findNodeAt = findNodeAt;
+exports.findNodeAround = findNodeAround;
+exports.findNodeAfter = findNodeAfter;
+exports.findNodeBefore = findNodeBefore;
+exports.make = make;
+exports.base = base;
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+})));

+ 46 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/package.json

@@ -0,0 +1,46 @@
+{
+  "name": "acorn",
+  "description": "ECMAScript parser",
+  "homepage": "https://github.com/ternjs/acorn",
+  "main": "dist/acorn.js",
+  "jsnext:main": "dist/acorn.es.js",
+  "version": "4.0.13",
+  "engines": {
+    "node": ">=0.4.0"
+  },
+  "maintainers": [
+    {
+      "name": "Marijn Haverbeke",
+      "email": "marijnh@gmail.com",
+      "web": "http://marijnhaverbeke.nl"
+    },
+    {
+      "name": "Ingvar Stepanyan",
+      "email": "me@rreverser.com",
+      "web": "http://rreverser.com/"
+    }
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/ternjs/acorn.git"
+  },
+  "license": "MIT",
+  "scripts": {
+    "prepublish": "npm test",
+    "test": "node test/run.js",
+    "pretest": "npm run build",
+    "build": "npm run build:main && npm run build:walk && npm run build:loose && npm run build:bin",
+    "build:main": "rollup -c rollup/config.main.js",
+    "build:walk": "rollup -c rollup/config.walk.js",
+    "build:loose": "rollup -c rollup/config.loose.js",
+    "build:bin": "rollup -c rollup/config.bin.js"
+  },
+  "bin": {
+    "acorn": "./bin/acorn"
+  },
+  "devDependencies": {
+    "rollup": "^0.34.1",
+    "rollup-plugin-buble": "^0.11.0",
+    "unicode-9.0.0": "^0.7.0"
+  }
+}

+ 0 - 0
node_modules/acorn-dynamic-import/node_modules/acorn/src/bin/acorn.js


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels