├── .babelrc ├── .editorconfig ├── .gitignore ├── README.md ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── dist ├── index.html ├── static │ ├── css │ │ ├── app.dfca11727ccf9e74f393b0c223db19ce.css │ │ └── app.dfca11727ccf9e74f393b0c223db19ce.css.map │ └── js │ │ ├── app.5e00c296524f290cacb0.js │ │ ├── app.5e00c296524f290cacb0.js.map │ │ ├── manifest.9f3f70a527d83ac947d7.js │ │ ├── manifest.9f3f70a527d83ac947d7.js.map │ │ ├── vendor.5e62edad0a628d2cb47f.js │ │ └── vendor.5e62edad0a628d2cb47f.js.map └── vue-electron.html ├── elect.js ├── index.html ├── package.json ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ └── Hello.vue └── main.js ├── static └── .gitkeep └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false, 5 | "env": { 6 | "test": { 7 | "plugins": [ "istanbul" ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | app/ 4 | bin/ 5 | include/ 6 | lib/ 7 | share/ 8 | npm-debug.log 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-electron 2 | 3 | > A Vue.js project packaged with electron, built for scotch.io 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # install electron globally 12 | sudo npm install -g electron 13 | 14 | # run the application 15 | electron . 16 | ``` 17 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | // https://github.com/shelljs/shelljs 2 | require('./check-versions')() 3 | require('shelljs/global') 4 | env.NODE_ENV = 'production' 5 | 6 | var path = require('path') 7 | var config = require('../config') 8 | var ora = require('ora') 9 | var webpack = require('webpack') 10 | var webpackConfig = require('./webpack.prod.conf') 11 | 12 | console.log( 13 | ' Tip:\n' + 14 | ' Built files are meant to be served over an HTTP server.\n' + 15 | ' Opening index.html over file:// won\'t work.\n' 16 | ) 17 | 18 | var spinner = ora('building for production...') 19 | spinner.start() 20 | 21 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 22 | rm('-rf', assetsPath) 23 | mkdir('-p', assetsPath) 24 | cp('-R', 'static/*', assetsPath) 25 | 26 | webpack(webpackConfig, function (err, stats) { 27 | spinner.stop() 28 | if (err) throw err 29 | process.stdout.write(stats.toString({ 30 | colors: true, 31 | modules: false, 32 | children: false, 33 | chunks: false, 34 | chunkModules: false 35 | }) + '\n') 36 | }) 37 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var semver = require('semver') 2 | var chalk = require('chalk') 3 | var packageConfig = require('../package.json') 4 | var exec = function (cmd) { 5 | return require('child_process') 6 | .execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | { 16 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | var config = require('../config') 3 | if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 4 | var path = require('path') 5 | var express = require('express') 6 | var webpack = require('webpack') 7 | var opn = require('opn') 8 | var proxyMiddleware = require('http-proxy-middleware') 9 | var webpackConfig = require('./webpack.dev.conf') 10 | 11 | // default port where dev server listens for incoming traffic 12 | var port = process.env.PORT || config.dev.port 13 | // Define HTTP proxies to your custom API backend 14 | // https://github.com/chimurai/http-proxy-middleware 15 | var proxyTable = config.dev.proxyTable 16 | 17 | var app = express() 18 | var compiler = webpack(webpackConfig) 19 | 20 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 21 | publicPath: webpackConfig.output.publicPath, 22 | quiet: true 23 | }) 24 | 25 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 26 | log: () => {} 27 | }) 28 | // force page reload when html-webpack-plugin template changes 29 | compiler.plugin('compilation', function (compilation) { 30 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 31 | hotMiddleware.publish({ action: 'reload' }) 32 | cb() 33 | }) 34 | }) 35 | 36 | // proxy api requests 37 | Object.keys(proxyTable).forEach(function (context) { 38 | var options = proxyTable[context] 39 | if (typeof options === 'string') { 40 | options = { target: options } 41 | } 42 | app.use(proxyMiddleware(context, options)) 43 | }) 44 | 45 | // handle fallback for HTML5 history API 46 | app.use(require('connect-history-api-fallback')()) 47 | 48 | // serve webpack bundle output 49 | app.use(devMiddleware) 50 | 51 | // enable hot-reload and state-preserving 52 | // compilation error display 53 | app.use(hotMiddleware) 54 | 55 | // serve pure static assets 56 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 57 | app.use(staticPath, express.static('./static')) 58 | 59 | var uri = 'http://localhost:' + port 60 | 61 | devMiddleware.waitUntilValid(function () { 62 | console.log('> Listening at ' + uri + '\n') 63 | }) 64 | 65 | module.exports = app.listen(port, function (err) { 66 | if (err) { 67 | console.log(err) 68 | return 69 | } 70 | 71 | // when env is testing, don't need open it 72 | if (process.env.NODE_ENV !== 'testing') { 73 | opn(uri) 74 | } 75 | }) 76 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | // Extract CSS when that option is specified 29 | // (which is the case during production build) 30 | if (options.extract) { 31 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 32 | } else { 33 | return ['vue-style-loader', sourceLoader].join('!') 34 | } 35 | } 36 | 37 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 38 | return { 39 | css: generateLoaders(['css']), 40 | postcss: generateLoaders(['css']), 41 | less: generateLoaders(['css', 'less']), 42 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 43 | scss: generateLoaders(['css', 'sass']), 44 | stylus: generateLoaders(['css', 'stylus']), 45 | styl: generateLoaders(['css', 'stylus']) 46 | } 47 | } 48 | 49 | // Generate loaders for standalone style files (outside of .vue) 50 | exports.styleLoaders = function (options) { 51 | var output = [] 52 | var loaders = exports.cssLoaders(options) 53 | for (var extension in loaders) { 54 | var loader = loaders[extension] 55 | output.push({ 56 | test: new RegExp('\\.' + extension + '$'), 57 | loader: loader 58 | }) 59 | } 60 | return output 61 | } 62 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var projectRoot = path.resolve(__dirname, '../') 5 | 6 | var env = process.env.NODE_ENV 7 | // check env & config/index.js to decide whether to enable CSS source maps for the 8 | // various preprocessor loaders added to vue-loader at the end of this file 9 | var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) 10 | var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap) 11 | var useCssSourceMap = cssSourceMapDev || cssSourceMapProd 12 | 13 | module.exports = { 14 | entry: { 15 | app: './src/main.js' 16 | }, 17 | output: { 18 | path: config.build.assetsRoot, 19 | publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, 20 | filename: '[name].js' 21 | }, 22 | resolve: { 23 | extensions: ['', '.js', '.vue', '.json'], 24 | fallback: [path.join(__dirname, '../node_modules')], 25 | alias: { 26 | 'vue$': 'vue/dist/vue.common.js', 27 | 'src': path.resolve(__dirname, '../src'), 28 | 'assets': path.resolve(__dirname, '../src/assets'), 29 | 'components': path.resolve(__dirname, '../src/components') 30 | } 31 | }, 32 | resolveLoader: { 33 | fallback: [path.join(__dirname, '../node_modules')] 34 | }, 35 | module: { 36 | loaders: [ 37 | { 38 | test: /\.vue$/, 39 | loader: 'vue' 40 | }, 41 | { 42 | test: /\.js$/, 43 | loader: 'babel', 44 | include: [ 45 | path.join(projectRoot, 'src') 46 | ], 47 | exclude: /node_modules/ 48 | }, 49 | { 50 | test: /\.json$/, 51 | loader: 'json' 52 | }, 53 | { 54 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 55 | loader: 'url', 56 | query: { 57 | limit: 10000, 58 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 59 | } 60 | }, 61 | { 62 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 63 | loader: 'url', 64 | query: { 65 | limit: 10000, 66 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 67 | } 68 | } 69 | ] 70 | }, 71 | vue: { 72 | loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }), 73 | postcss: [ 74 | require('autoprefixer')({ 75 | browsers: ['last 2 versions'] 76 | }) 77 | ] 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var webpack = require('webpack') 3 | var merge = require('webpack-merge') 4 | var utils = require('./utils') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrors = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // eval-source-map is faster for development 19 | devtool: '#eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.optimize.OccurrenceOrderPlugin(), 26 | new webpack.HotModuleReplacementPlugin(), 27 | new webpack.NoErrorsPlugin(), 28 | // https://github.com/ampedandwired/html-webpack-plugin 29 | new HtmlWebpackPlugin({ 30 | filename: 'index.html', 31 | template: 'index.html', 32 | inject: true 33 | }), 34 | new FriendlyErrors() 35 | ] 36 | }) 37 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var env = config.build.env 10 | 11 | var webpackConfig = merge(baseWebpackConfig, { 12 | module: { 13 | loaders: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true }) 14 | }, 15 | devtool: config.build.productionSourceMap ? '#source-map' : false, 16 | output: { 17 | path: config.build.assetsRoot, 18 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 19 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 20 | }, 21 | vue: { 22 | loaders: utils.cssLoaders({ 23 | sourceMap: config.build.productionSourceMap, 24 | extract: true 25 | }) 26 | }, 27 | plugins: [ 28 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 29 | new webpack.DefinePlugin({ 30 | 'process.env': env 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | } 36 | }), 37 | new webpack.optimize.OccurrenceOrderPlugin(), 38 | // extract css into its own file 39 | new ExtractTextPlugin(utils.assetsPath('css/[name].[contenthash].css')), 40 | // generate dist index.html with correct asset hash for caching. 41 | // you can customize output by editing /index.html 42 | // see https://github.com/ampedandwired/html-webpack-plugin 43 | new HtmlWebpackPlugin({ 44 | filename: config.build.index, 45 | template: 'index.html', 46 | inject: true, 47 | minify: { 48 | removeComments: true, 49 | collapseWhitespace: true, 50 | removeAttributeQuotes: true 51 | // more options: 52 | // https://github.com/kangax/html-minifier#options-quick-reference 53 | }, 54 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 55 | chunksSortMode: 'dependency' 56 | }), 57 | // split vendor js into its own file 58 | new webpack.optimize.CommonsChunkPlugin({ 59 | name: 'vendor', 60 | minChunks: function (module, count) { 61 | // any required modules inside node_modules are extracted to vendor 62 | return ( 63 | module.resource && 64 | /\.js$/.test(module.resource) && 65 | module.resource.indexOf( 66 | path.join(__dirname, '../node_modules') 67 | ) === 0 68 | ) 69 | } 70 | }), 71 | // extract webpack runtime and module manifest to its own file in order to 72 | // prevent vendor hash from being updated whenever app bundle is updated 73 | new webpack.optimize.CommonsChunkPlugin({ 74 | name: 'manifest', 75 | chunks: ['vendor'] 76 | }) 77 | ] 78 | }) 79 | 80 | if (config.build.productionGzip) { 81 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 82 | 83 | webpackConfig.plugins.push( 84 | new CompressionWebpackPlugin({ 85 | asset: '[path].gz[query]', 86 | algorithm: 'gzip', 87 | test: new RegExp( 88 | '\\.(' + 89 | config.build.productionGzipExtensions.join('|') + 90 | ')$' 91 | ), 92 | threshold: 10240, 93 | minRatio: 0.8 94 | }) 95 | ) 96 | } 97 | 98 | module.exports = webpackConfig 99 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'] 18 | }, 19 | dev: { 20 | env: require('./dev.env'), 21 | port: 8080, 22 | assetsSubDirectory: 'static', 23 | assetsPublicPath: '/', 24 | proxyTable: {}, 25 | // CSS Sourcemaps off by default because relative paths are "buggy" 26 | // with this option, according to the CSS-Loader README 27 | // (https://github.com/webpack/css-loader#sourcemaps) 28 | // In our experience, they generally work as expected, 29 | // just be aware of this issue when enabling this option. 30 | cssSourceMap: false 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | mail_list
-------------------------------------------------------------------------------- /dist/static/css/app.dfca11727ccf9e74f393b0c223db19ce.css: -------------------------------------------------------------------------------- 1 | #app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px} 2 | /*# sourceMappingURL=app.dfca11727ccf9e74f393b0c223db19ce.css.map*/ -------------------------------------------------------------------------------- /dist/static/css/app.dfca11727ccf9e74f393b0c223db19ce.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack:///src/App.vue"],"names":[],"mappings":"AACA,KACE,8CACA,mCACA,kCACA,kBACA,cACA,eAAiB","file":"static/css/app.dfca11727ccf9e74f393b0c223db19ce.css","sourcesContent":["\n#app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-align: center;\n color: #2c3e50;\n margin-top: 60px;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/App.vue"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/app.5e00c296524f290cacb0.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([2,0],[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=n(7),a=r(i),o=n(3),s=r(o),c=n(6);a.default.use(c),a.default.http.options.root="/root",a.default.http.headers.common["Access-Control-Allow-Origin"]="*",new a.default({el:"#app",template:"",components:{App:s.default}})},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=[{category:"Entertainment: Film",type:"multiple",difficulty:"easy",question:"Who directed "E.T. the Extra-Terrestrial" (1982)?",correct_answer:"Steven Spielberg",incorrect_answers:["Steven Spielberg","Stanley Kubrick","James Cameron","Tim Burton"]},{category:"Entertainment: Video Games",type:"multiple",difficulty:"medium",question:"What is the main character of Metal Gear Solid 2?",correct_answer:"Raiden",incorrect_answers:["Raiden","Solidus Snake","Big Boss","Venom Snake"]},{category:"Science & Nature",type:"multiple",difficulty:"easy",question:"What is the hottest planet in the Solar System?",correct_answer:"Venus",incorrect_answers:["Venus","Mars","Mercury","Jupiter"]},{category:"Entertainment: Books",type:"multiple",difficulty:"hard",question:"What is Ron Weasley's middle name?",correct_answer:"Bilius",incorrect_answers:["Bilius","Arthur","John","Dominic"]},{category:"Politics",type:"multiple",difficulty:"medium",question:"Before 2011, "True Capitalist Radio" was known by a different name. What was that name?",correct_answer:"True Conservative Radio",incorrect_answers:["True Conservative Radio","True Republican Radio","Texan Capitalist Radio","United Capitalists"]},{category:"Entertainment: Film",type:"multiple",difficulty:"medium",question:"This movie contains the quote, "I love the smell of napalm in the morning!"",correct_answer:"Apocalypse Now",incorrect_answers:["Apocalypse Now","Platoon","The Deer Hunter","Full Metal Jacket"]},{category:"History",type:"multiple",difficulty:"medium",question:"The Herero genocide was perpetrated in Africa by which of the following colonial nations?",correct_answer:"Germany",incorrect_answers:["Germany","Britain","Belgium","France"]},{category:"Entertainment: Music",type:"boolean",difficulty:"medium",question:"Ashley Frangipane performs under the stage name Halsey.",correct_answer:"True",incorrect_answers:["True","False"]},{category:"Entertainment: Books",type:"multiple",difficulty:"easy",question:"Under what pseudonym did Stephen King publish five novels between 1977 and 1984?",correct_answer:"Richard Bachman",incorrect_answers:["Richard Bachman","J. D. Robb","Mark Twain","Lewis Carroll"]},{category:"History",type:"multiple",difficulty:"medium",question:"In what prison was Adolf Hitler held in 1924?",correct_answer:"Landsberg Prison",incorrect_answers:["Landsberg Prison","Spandau Prison","Ebrach Abbey","Hohenasperg"]}];t.default={name:"app",data:function(){return{questionindex:0,quizez:n,answers:Array(n.length).fill("")}},methods:{next:function(){this.questionindex++},prev:function(){this.questionindex--}},computed:{score:function(){for(var e=0,t=0;t0?n("button",{on:{click:e.prev}},[e._v("\n prev\n ")]):e._e(),e._v(" "),n("button",{on:{click:e.next}},[e._v("\n next\n")])]):e._e(),e._v(" "),e.questionindex==e.quizez.length?n("span",[e._v("Your Total score is "+e._s(e.score)+" / "+e._s(e.quizez.length))]):e._e()],2)},staticRenderFns:[]}}]); 2 | //# sourceMappingURL=app.5e00c296524f290cacb0.js.map -------------------------------------------------------------------------------- /dist/static/js/app.5e00c296524f290cacb0.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///static/js/app.5e00c296524f290cacb0.js","webpack:///./src/main.js","webpack:///App.vue","webpack:///./src/App.vue","webpack:///./src/App.vue?244e"],"names":["webpackJsonp","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","_vue","_vue2","_App","_App2","VueResource","use","http","options","root","headers","common","el","template","components","App","Object","defineProperty","value","quiz_questions","category","type","difficulty","question","correct_answer","incorrect_answers","name","data","questionindex","quizez","answers","Array","length","fill","methods","next","this","prev","computed","score","total","i","Component","render","_vm","_h","$createElement","_c","_self","attrs","id","_l","quiz","index","directives","rawName","expression","_v","_s","answer","domProps","checked","_q","on","click","$event","$$exp","$$idx","isArray","splice","_e","staticRenderFns"],"mappings":"AAAAA,cAAc,EAAE,IAEV,SAASC,EAAQC,EAASC,GAE/B,YAUA,SAASC,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GCZxF,GAAAG,GAAAL,EAAA,GDMKM,EAAQL,EAAuBI,GCLpCE,EAAAP,EAAA,GDSKQ,EAAQP,EAAuBM,GCPhCE,EAAcT,EAAQ,EAE1BM,GAAAF,QAAIM,IAAID,GACRH,EAAAF,QAAIO,KAAKC,QAAQC,KAAO,QACxBP,EAAAF,QAAIO,KAAKG,QAAQC,OAAO,+BAAiC,IAIzD,GAAAT,GAAAF,SACEY,GAAI,OACJC,SAAU,SACVC,YAAcC,kBDcV,SAASrB,EAAQC,GAEtB,YAEAqB,QAAOC,eAAetB,EAAS,cAC7BuB,OAAO,GEHV,IAAAC,KFQGC,SELH,sBFMGC,KELH,WFMGC,WELH,OFMGC,SELH,8DFMGC,eELH,mBFMGC,mBEJH,mBACA,kBACA,gBAGA,gBFCGL,SECH,6BFAGC,KECH,WFAGC,WECH,SFAGC,SECH,oDFAGC,eECH,SFAGC,mBEEH,SACA,gBACA,WAGA,iBFLGL,SEOH,mBFNGC,KEOH,WFNGC,WEOH,OFNGC,SEOH,kDFNGC,eEOH,QFNGC,mBEQH,QACA,OACA,UAGA,aFXGL,SEaH,uBFZGC,KEaH,WFZGC,WEaH,OFZGC,SEaH,0CFZGC,eEaH,SFZGC,mBEcH,SACA,SACA,OAGA,aFjBGL,SEmBH,WFlBGC,KEmBH,WFlBGC,WEmBH,SFlBGC,SEmBH,oGFlBGC,eEmBH,0BFlBGC,mBEoBH,0BACA,wBACA,yBAGA,wBFvBGL,SEyBH,sBFxBGC,KEyBH,WFxBGC,WEyBH,SFxBGC,SEyBH,wFFxBGC,eEyBH,iBFxBGC,mBE0BH,iBACA,UACA,kBAGA,uBF7BGL,SE+BH,UF9BGC,KE+BH,WF9BGC,WE+BH,SF9BGC,SE+BH,4FF9BGC,eE+BH,UF9BGC,mBEgCH,UACA,UACA,UAGA,YFnCGL,SEqCH,uBFpCGC,KEqCH,UFpCGC,WEqCH,SFpCGC,SEqCH,0DFpCGC,eEqCH,OFpCGC,mBEsCH,OAGA,WFvCGL,SEyCH,uBFxCGC,KEyCH,WFxCGC,WEyCH,OFxCGC,SEyCH,mFFxCGC,eEyCH,kBFxCGC,mBE0CH,kBACA,aACA,aAGA,mBF7CGL,SE+CH,UF9CGC,KE+CH,WF9CGC,WE+CH,SF9CGC,SE+CH,gDF9CGC,eE+CH,mBF9CGC,mBEgDH,mBACA,iBACA,eAKA,gBFpDC9B,GAAQK,SACN0B,KEqDH,MFpDGC,KAAM,WACJ,OACEC,cEqDP,EFpDOC,OAAQV,EEqDfW,QAAAC,MAAAZ,EAAAa,QAAAC,KAEA,MFnDGC,SACEC,KAAM,WACJC,KEsDPR,iBFnDKS,KAAM,WACJD,KEsDPR,kBFnDGU,UACEC,MAAO,WAEL,IAAK,GADDC,GEsDX,EFrDgBC,EAAI,EAAGA,EAAIL,KAAKN,QAAQE,OAAQS,IACnCL,KAAKN,QAAQW,IAAML,KAAKP,OAAOY,GAAGjB,iBACpCgB,GEsDX,EFnDO,OEsDPA,OF/CM,SAAS9C,EAAQC,KAMjB,SAASD,EAAQC,EAASC,GGpJhCA,EAAA,EAEA,IAAA8C,GAAA9C,EAAA,GAEA,MAEAA,EAAA,GAEAA,EAAA,GAEA,KAEA,KAGAF,GAAAC,QAAA+C,EAAA/C,SH4JO,CAED,SAASD,EAAQC,GI/KvBD,EAAAC,SAAgBgD,OAAA,WAAmB,GAAAC,GAAAR,KAAaS,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,CAC1E,OAAAE,GAAA,OACAE,OACAC,GAAA,SAEGN,EAAAO,GAAAP,EAAA,gBAAAQ,EAAAC,GACH,MAAAN,GAAA,OACAO,aACA5B,KAAA,OACA6B,QAAA,SACArC,MAAAmC,IAAAT,EAAAhB,cACA4B,WAAA,8BAEKT,EAAA,MAAAH,EAAAa,GAAAb,EAAAc,GAAAN,EAAAhC,aAAAwB,EAAAa,GAAA,KAAAV,EAAA,MAAAH,EAAAa,GAAAb,EAAAc,GAAAN,EAAA7B,aAAAqB,EAAAa,GAAA,KAAAV,EAAA,KAAAH,EAAAO,GAAAC,EAAA,2BAAAO,GACL,MAAAZ,GAAA,MAAAA,EAAA,SAAAA,EAAA,SACAO,aACA5B,KAAA,QACA6B,QAAA,UACArC,MAAA0B,EAAAd,QAAAuB,GACAG,WAAA,mBAEAP,OACA5B,KAAA,QACAK,KAAA,UAEAkC,UACA1C,MAAAyC,EACAE,QAAAjB,EAAAkB,GAAAlB,EAAAd,QAAAuB,GAAAM,IAEAI,IACAC,MAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAd,QACAqC,EAAAd,CACAtB,OAAAqC,QAAAF,GAGAA,EAAAG,OAAAF,EAAA,EAAAR,GAFAf,EAAAd,QAAAuB,GAAAM,MAMOf,EAAAa,GAAA,IAAAb,EAAAc,GAAAC,GAAA,2BAEJf,EAAAa,GAAA,KAAAb,EAAAhB,cAAAgB,EAAAf,OAAAG,OAAAe,EAAA,OAAAH,EAAAhB,cAAA,EAAAmB,EAAA,UACHgB,IACAC,MAAApB,EAAAP,QAEGO,EAAAa,GAAA,4BAAAb,EAAA0B,KAAA1B,EAAAa,GAAA,KAAAV,EAAA,UACHgB,IACAC,MAAApB,EAAAT,QAEGS,EAAAa,GAAA,wBAAAb,EAAA0B,KAAA1B,EAAAa,GAAA,KAAAb,EAAAhB,eAAAgB,EAAAf,OAAAG,OAAAe,EAAA,QAAAH,EAAAa,GAAA,uBAAAb,EAAAc,GAAAd,EAAAL,OAAA,MAAAK,EAAAc,GAAAd,EAAAf,OAAAG,WAAAY,EAAA0B,MAAA,IACFC","file":"static/js/app.5e00c296524f290cacb0.js","sourcesContent":["webpackJsonp([2,0],[\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _vue = __webpack_require__(7);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _App = __webpack_require__(3);\n\t\n\tvar _App2 = _interopRequireDefault(_App);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar VueResource = __webpack_require__(6);\n\t\n\t_vue2.default.use(VueResource);\n\t_vue2.default.http.options.root = '/root';\n\t_vue2.default.http.headers.common['Access-Control-Allow-Origin'] = '*';\n\t\n\tnew _vue2.default({\n\t el: '#app',\n\t template: '',\n\t components: { App: _App2.default }\n\t});\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\t\n\tvar quiz_questions = [{\n\t \"category\": \"Entertainment: Film\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"easy\",\n\t \"question\": \"Who directed "E.T. the Extra-Terrestrial" (1982)?\",\n\t \"correct_answer\": \"Steven Spielberg\",\n\t \"incorrect_answers\": [\"Steven Spielberg\", \"Stanley Kubrick\", \"James Cameron\", \"Tim Burton\"]\n\t}, {\n\t \"category\": \"Entertainment: Video Games\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"medium\",\n\t \"question\": \"What is the main character of Metal Gear Solid 2?\",\n\t \"correct_answer\": \"Raiden\",\n\t \"incorrect_answers\": [\"Raiden\", \"Solidus Snake\", \"Big Boss\", \"Venom Snake\"]\n\t}, {\n\t \"category\": \"Science & Nature\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"easy\",\n\t \"question\": \"What is the hottest planet in the Solar System?\",\n\t \"correct_answer\": \"Venus\",\n\t \"incorrect_answers\": [\"Venus\", \"Mars\", \"Mercury\", \"Jupiter\"]\n\t}, {\n\t \"category\": \"Entertainment: Books\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"hard\",\n\t \"question\": \"What is Ron Weasley's middle name?\",\n\t \"correct_answer\": \"Bilius\",\n\t \"incorrect_answers\": [\"Bilius\", \"Arthur\", \"John\", \"Dominic\"]\n\t}, {\n\t \"category\": \"Politics\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"medium\",\n\t \"question\": \"Before 2011, "True Capitalist Radio" was known by a different name. What was that name?\",\n\t \"correct_answer\": \"True Conservative Radio\",\n\t \"incorrect_answers\": [\"True Conservative Radio\", \"True Republican Radio\", \"Texan Capitalist Radio\", \"United Capitalists\"]\n\t}, {\n\t \"category\": \"Entertainment: Film\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"medium\",\n\t \"question\": \"This movie contains the quote, "I love the smell of napalm in the morning!"\",\n\t \"correct_answer\": \"Apocalypse Now\",\n\t \"incorrect_answers\": [\"Apocalypse Now\", \"Platoon\", \"The Deer Hunter\", \"Full Metal Jacket\"]\n\t}, {\n\t \"category\": \"History\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"medium\",\n\t \"question\": \"The Herero genocide was perpetrated in Africa by which of the following colonial nations?\",\n\t \"correct_answer\": \"Germany\",\n\t \"incorrect_answers\": [\"Germany\", \"Britain\", \"Belgium\", \"France\"]\n\t}, {\n\t \"category\": \"Entertainment: Music\",\n\t \"type\": \"boolean\",\n\t \"difficulty\": \"medium\",\n\t \"question\": \"Ashley Frangipane performs under the stage name Halsey.\",\n\t \"correct_answer\": \"True\",\n\t \"incorrect_answers\": [\"True\", \"False\"]\n\t}, {\n\t \"category\": \"Entertainment: Books\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"easy\",\n\t \"question\": \"Under what pseudonym did Stephen King publish five novels between 1977 and 1984?\",\n\t \"correct_answer\": \"Richard Bachman\",\n\t \"incorrect_answers\": [\"Richard Bachman\", \"J. D. Robb\", \"Mark Twain\", \"Lewis Carroll\"]\n\t}, {\n\t \"category\": \"History\",\n\t \"type\": \"multiple\",\n\t \"difficulty\": \"medium\",\n\t \"question\": \"In what prison was Adolf Hitler held in 1924?\",\n\t \"correct_answer\": \"Landsberg Prison\",\n\t \"incorrect_answers\": [\"Landsberg Prison\", \"Spandau Prison\", \"Ebrach Abbey\", \"Hohenasperg\"]\n\t}];\n\t\n\texports.default = {\n\t name: 'app',\n\t data: function data() {\n\t return {\n\t questionindex: 0,\n\t quizez: quiz_questions,\n\t answers: Array(quiz_questions.length).fill('')\n\t };\n\t },\n\t methods: {\n\t next: function next() {\n\t this.questionindex++;\n\t },\n\t\n\t prev: function prev() {\n\t this.questionindex--;\n\t }\n\t },\n\t computed: {\n\t score: function score() {\n\t var total = 0;\n\t for (var i = 0; i < this.answers.length; i++) {\n\t if (this.answers[i] == this.quizez[i].correct_answer) {\n\t total += 1;\n\t }\n\t }\n\t return total;\n\t }\n\t }\n\t};\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\n\t/* styles */\n\t__webpack_require__(2)\n\t\n\tvar Component = __webpack_require__(4)(\n\t /* name */\n\t \"App\",\n\t /* script */\n\t __webpack_require__(1),\n\t /* template */\n\t __webpack_require__(5),\n\t /* scopeId */\n\t null,\n\t /* cssModules */\n\t null\n\t)\n\t\n\tmodule.exports = Component.exports\n\n\n/***/ },\n/* 4 */,\n/* 5 */\n/***/ function(module, exports) {\n\n\tmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n\t return _c('div', {\n\t attrs: {\n\t \"id\": \"app\"\n\t }\n\t }, [_vm._l((_vm.quizez), function(quiz, index) {\n\t return _c('div', {\n\t directives: [{\n\t name: \"show\",\n\t rawName: \"v-show\",\n\t value: (index === _vm.questionindex),\n\t expression: \"index === questionindex\"\n\t }]\n\t }, [_c('h1', [_vm._v(_vm._s(quiz.category))]), _vm._v(\" \"), _c('h2', [_vm._v(_vm._s(quiz.question))]), _vm._v(\" \"), _c('ol', _vm._l((quiz.incorrect_answers), function(answer) {\n\t return _c('li', [_c('label', [_c('input', {\n\t directives: [{\n\t name: \"model\",\n\t rawName: \"v-model\",\n\t value: (_vm.answers[index]),\n\t expression: \"answers[index]\"\n\t }],\n\t attrs: {\n\t \"type\": \"radio\",\n\t \"name\": \"answer\"\n\t },\n\t domProps: {\n\t \"value\": answer,\n\t \"checked\": _vm._q(_vm.answers[index], answer)\n\t },\n\t on: {\n\t \"click\": function($event) {\n\t var $$exp = _vm.answers,\n\t $$idx = index;\n\t if (!Array.isArray($$exp)) {\n\t _vm.answers[index] = answer\n\t } else {\n\t $$exp.splice($$idx, 1, answer)\n\t }\n\t }\n\t }\n\t }), _vm._v(\" \" + _vm._s(answer) + \"\\n \")])])\n\t }))])\n\t }), _vm._v(\" \"), (_vm.questionindex < _vm.quizez.length) ? _c('div', [(_vm.questionindex > 0) ? _c('button', {\n\t on: {\n\t \"click\": _vm.prev\n\t }\n\t }, [_vm._v(\"\\n prev\\n \")]) : _vm._e(), _vm._v(\" \"), _c('button', {\n\t on: {\n\t \"click\": _vm.next\n\t }\n\t }, [_vm._v(\"\\n next\\n\")])]) : _vm._e(), _vm._v(\" \"), (_vm.questionindex == _vm.quizez.length) ? _c('span', [_vm._v(\"Your Total score is \" + _vm._s(_vm.score) + \" / \" + _vm._s(_vm.quizez.length))]) : _vm._e()], 2)\n\t},staticRenderFns: []}\n\n/***/ }\n]);\n\n\n// WEBPACK FOOTER //\n// static/js/app.5e00c296524f290cacb0.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\n//require the vu resource library\nvar VueResource = require('vue-resource');\n//tell vue to use vue resource\nVue.use(VueResource);\nVue.http.options.root = '/root';\nVue.http.headers.common['Access-Control-Allow-Origin'] = '*';\n\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n template: '',\n components: { App }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// App.vue?83d0ce70","\n/* styles */\nrequire(\"!!./../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"extract\\\":true,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!vue-loader/lib/style-rewriter?id=data-v-337073a2!vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n\nvar Component = require(\"vue-loader/lib/component-normalizer\")(\n /* name */\n \"App\",\n /* script */\n require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./App.vue\"),\n /* template */\n require(\"!!vue-loader/lib/template-compiler?id=data-v-337073a2!vue-loader/lib/selector?type=template&index=0!./App.vue\"),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = 3\n// module chunks = 2","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_vm._l((_vm.quizez), function(quiz, index) {\n return _c('div', {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: (index === _vm.questionindex),\n expression: \"index === questionindex\"\n }]\n }, [_c('h1', [_vm._v(_vm._s(quiz.category))]), _vm._v(\" \"), _c('h2', [_vm._v(_vm._s(quiz.question))]), _vm._v(\" \"), _c('ol', _vm._l((quiz.incorrect_answers), function(answer) {\n return _c('li', [_c('label', [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.answers[index]),\n expression: \"answers[index]\"\n }],\n attrs: {\n \"type\": \"radio\",\n \"name\": \"answer\"\n },\n domProps: {\n \"value\": answer,\n \"checked\": _vm._q(_vm.answers[index], answer)\n },\n on: {\n \"click\": function($event) {\n var $$exp = _vm.answers,\n $$idx = index;\n if (!Array.isArray($$exp)) {\n _vm.answers[index] = answer\n } else {\n $$exp.splice($$idx, 1, answer)\n }\n }\n }\n }), _vm._v(\" \" + _vm._s(answer) + \"\\n \")])])\n }))])\n }), _vm._v(\" \"), (_vm.questionindex < _vm.quizez.length) ? _c('div', [(_vm.questionindex > 0) ? _c('button', {\n on: {\n \"click\": _vm.prev\n }\n }, [_vm._v(\"\\n prev\\n \")]) : _vm._e(), _vm._v(\" \"), _c('button', {\n on: {\n \"click\": _vm.next\n }\n }, [_vm._v(\"\\n next\\n\")])]) : _vm._e(), _vm._v(\" \"), (_vm.questionindex == _vm.quizez.length) ? _c('span', [_vm._v(\"Your Total score is \" + _vm._s(_vm.score) + \" / \" + _vm._s(_vm.quizez.length))]) : _vm._e()], 2)\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-337073a2!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = 5\n// module chunks = 2"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/manifest.9f3f70a527d83ac947d7.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(n){if(a[n])return a[n].exports;var r=a[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n=window.webpackJsonp;window.webpackJsonp=function(c,o){for(var p,s,l=0,i=[];l=200&&o<300,this.status=o||0,this.statusText=i||"",this.headers=new wt(r),this.body=t,l(t)?this.bodyText=t:h(t)&&(this.bodyBlob=t,U(t)&&(this.bodyText=R(t)))};$t.prototype.blob=function(){return g(this.bodyBlob)},$t.prototype.text=function(){return g(this.bodyText)},$t.prototype.json=function(){return g(this.text(),function(t){return JSON.parse(t)})};var xt=function(t){this.body=null,this.params={},rt(this,t,{method:c(t.method||"GET")}),this.headers instanceof wt||(this.headers=new wt(this.headers))};xt.prototype.getUrl=function(){return j(this)},xt.prototype.getBody=function(){return this.body},xt.prototype.respondWith=function(t,e){return new $t(t,rt(e||{},{url:this.getUrl()}))};var Ct={"X-Requested-With":"XMLHttpRequest"},kt={Accept:"application/json, text/plain, */*"},Ot={"Content-Type":"application/json;charset=utf-8"};H.options={},H.headers={put:Ot,post:Ot,patch:Ot,delete:Ot,custom:Ct,common:kt},H.interceptors=[mt,gt,dt,ht,yt,pt],["get","delete","head","jsonp"].forEach(function(t){H[t]=function(e,n){return this(rt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){H[t]=function(e,n,r){return this(rt(r||{},{url:e,method:t,body:n}))}}),F.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(J),t.exports=J},function(t,e,n){(function(e){/*! 7 | * Vue.js v2.1.10 8 | * (c) 2014-2017 Evan You 9 | * Released under the MIT License. 10 | */ 11 | "use strict";function n(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function r(t){var e=parseFloat(t);return isNaN(e)?t:e}function o(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}function a(t,e){return ao.call(t,e)}function s(t){return"string"==typeof t||"number"==typeof t}function u(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}function c(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function l(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function f(t,e){for(var n in e)t[n]=e[n];return t}function p(t){return null!==t&&"object"==typeof t}function d(t){return po.call(t)===vo}function v(t){for(var e={},n=0;n1?l(n):n;for(var r=l(arguments,1),o=0,i=n.length;o=0&&Qo[n].id>t.id;)n--;Qo.splice(Math.max(n,ri)+1,0,t)}else Qo.push(t);ei||(ei=!0,So(Ot))}}function Tt(t){ai.clear(),St(t,ai)}function St(t,e){var n,r,o=Array.isArray(t);if((o||p(t))&&Object.isExtensible(t)){if(t.__ob__){var i=t.__ob__.dep.id;if(e.has(i))return;e.add(i)}if(o)for(n=t.length;n--;)St(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)St(t[r[n]],e)}}function Et(t){t._watchers=[];var e=t.$options;e.props&&jt(t,e.props),e.methods&&Lt(t,e.methods),e.data?Pt(t):A(t._data={},!0),e.computed&&It(t,e.computed),e.watch&&Mt(t,e.watch)}function jt(t,e){var n=t.$options.propsData||{},r=t.$options._propKeys=Object.keys(e),o=!t.$parent;Ro.shouldConvert=o;for(var i=function(o){var i=r[o];T(t,i,U(i,e,n,t))},a=0;a-1:t.test(e)}function Xt(t,e){for(var n in t){var r=t[n];if(r){var o=Wt(r.componentOptions);o&&!e(o)&&(Zt(r),t[n]=null)}}}function Zt(t){t&&(t.componentInstance._inactive||Ct(t.componentInstance,"deactivated"),t.componentInstance.$destroy())}function Yt(t){var e={};e.get=function(){return go},Object.defineProperty(t,"config",e),t.util=Bo,t.set=S,t.delete=E,t.nextTick=So,t.options=Object.create(null),go._assetTypes.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,f(t.options.components,fi),Vt(t),qt(t),zt(t),Kt(t)}function Qt(t){for(var e=t.data,n=t,r=t;r.componentInstance;)r=r.componentInstance._vnode,r.data&&(e=te(r.data,e));for(;n=n.parent;)n.data&&(e=te(e,n.data));return ee(e)}function te(t,e){return{staticClass:ne(t.staticClass,e.staticClass),class:t.class?[t.class,e.class]:e.class}}function ee(t){var e=t.class,n=t.staticClass;return n||e?ne(n,re(e)):""}function ne(t,e){return t?e?t+" "+e:t:e||""}function re(t){var e="";if(!t)return e;if("string"==typeof t)return t;if(Array.isArray(t)){for(var n,r=0,o=t.length;r-1?Ai[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Ai[t]=/HTMLUnknownElement/.test(e.toString())}function ae(t){if("string"==typeof t){if(t=document.querySelector(t),!t)return document.createElement("div")}return t}function se(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&"multiple"in e.data.attrs&&n.setAttribute("multiple","multiple"),n)}function ue(t,e){return document.createElementNS($i[t],e)}function ce(t){return document.createTextNode(t)}function le(t){return document.createComment(t)}function fe(t,e,n){t.insertBefore(e,n)}function pe(t,e){t.removeChild(e)}function de(t,e){t.appendChild(e)}function ve(t){return t.parentNode}function he(t){return t.nextSibling}function me(t){return t.tagName}function ge(t,e){t.textContent=e}function ye(t,e,n){t.setAttribute(e,n)}function be(t,e){var n=t.data.ref;if(n){var r=t.context,o=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?i(a[n],o):a[n]===o&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(o)<0?a[n].push(o):a[n]=[o]:a[n]=o}}function _e(t){return null==t}function we(t){return null!=t}function $e(t,e){return t.key===e.key&&t.tag===e.tag&&t.isComment===e.isComment&&!t.data==!e.data}function xe(t,e,n){var r,o,i={};for(r=e;r<=n;++r)o=t[r].key,we(o)&&(i[o]=r);return i}function Ce(t){function e(t){return new Jo(A.tagName(t).toLowerCase(),{},[],void 0,t)}function n(t,e){function n(){0===--n.listeners&&r(t)}return n.listeners=e,n}function r(t){var e=A.parentNode(t);e&&A.removeChild(e,t)}function i(t,e,n,r,o){if(t.isRootInsert=!o,!a(t,e,n,r)){var i=t.data,s=t.children,u=t.tag;we(u)?(t.elm=t.ns?A.createElementNS(t.ns,u):A.createElement(u,t),v(t),f(t,s,e),we(i)&&d(t,e),l(n,t.elm,r)):t.isComment?(t.elm=A.createComment(t.text),l(n,t.elm,r)):(t.elm=A.createTextNode(t.text),l(n,t.elm,r))}}function a(t,e,n,r){var o=t.data;if(we(o)){var i=we(t.componentInstance)&&o.keepAlive;if(we(o=o.hook)&&we(o=o.init)&&o(t,!1,n,r),we(t.componentInstance))return u(t,e),i&&c(t,e,n,r),!0}}function u(t,e){t.data.pendingInsert&&e.push.apply(e,t.data.pendingInsert),t.elm=t.componentInstance.$el,p(t)?(d(t,e),v(t)):(be(t),e.push(t))}function c(t,e,n,r){for(var o,i=t;i.componentInstance;)if(i=i.componentInstance._vnode,we(o=i.data)&&we(o=o.transition)){for(o=0;op?(c=_e(n[m+1])?null:n[m+1].elm,h(t,c,n,f,m,r)):f>m&&g(t,e,l,p)}function _(t,e,n,r){if(t!==e){if(e.isStatic&&t.isStatic&&e.key===t.key&&(e.isCloned||e.isOnce))return e.elm=t.elm,void(e.componentInstance=t.componentInstance);var o,i=e.data,a=we(i);a&&we(o=i.hook)&&we(o=o.prepatch)&&o(t,e);var s=e.elm=t.elm,u=t.children,c=e.children;if(a&&p(e)){for(o=0;o-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+t.getAttribute("class")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function qe(t,e){if(e&&e.trim())if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e);else{for(var n=" "+t.getAttribute("class")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");t.setAttribute("class",n.trim())}}function ze(t){Qi(function(){Qi(t)})}function Ke(t,e){(t._transitionClasses||(t._transitionClasses=[])).push(e),Ve(t,e)}function We(t,e){t._transitionClasses&&i(t._transitionClasses,e),qe(t,e)}function Ge(t,e,n){var r=Xe(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Ki?Xi:Yi,u=0,c=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++u>=a&&c()};setTimeout(function(){u0&&(n=Ki,l=a,f=i.length):e===Wi?c>0&&(n=Wi,l=c,f=u.length):(l=Math.max(a,c),n=l>0?a>c?Ki:Wi:null,f=n?n===Ki?i.length:u.length:0);var p=n===Ki&&ta.test(r[Gi+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:p}}function Ze(t,e){for(;t.length1,P=n._enterCb=nn(function(){E&&(We(n,k),We(n,C)),P.cancelled?(E&&We(n,x),S&&S(n)):T&&T(n),n._enterCb=null});t.data.show||ot(t.data.hook||(t.data.hook={}),"insert",function(){var e=n.parentNode,r=e&&e._pending&&e._pending[t.key];r&&r.tag===t.tag&&r.elm._leaveCb&&r.elm._leaveCb(),A&&A(n,P)},"transition-insert"),O&&O(n),E&&(Ke(n,x),Ke(n,C),ze(function(){Ke(n,k),We(n,x),P.cancelled||j||Ge(n,i,P)})),t.data.show&&(e&&e(),A&&A(n,P)),E||j||P()}}}function tn(t,e){function n(){g.cancelled||(t.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[t.key]=t),l&&l(r),h&&(Ke(r,s),Ke(r,c),ze(function(){Ke(r,u),We(r,s),g.cancelled||m||Ge(r,a,g)})),f&&f(r,g),h||m||g())}var r=t.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var o=en(t.data.transition);if(!o)return e();if(!r._leaveCb&&1===r.nodeType){var i=o.css,a=o.type,s=o.leaveClass,u=o.leaveToClass,c=o.leaveActiveClass,l=o.beforeLeave,f=o.leave,p=o.afterLeave,d=o.leaveCancelled,v=o.delayLeave,h=i!==!1&&!xo,m=f&&(f._length||f.length)>1,g=r._leaveCb=nn(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[t.key]=null),h&&(We(r,u),We(r,c)),g.cancelled?(h&&We(r,s),d&&d(r)):(e(),p&&p(r)),r._leaveCb=null});v?v(n):n()}}function en(t){if(t){if("object"==typeof t){var e={};return t.css!==!1&&f(e,ea(t.name||"v")),f(e,t),e}return"string"==typeof t?ea(t):void 0}}function nn(t){var e=!1;return function(){e||(e=!0,t())}}function rn(t,e){e.data.show||Qe(e)}function on(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,u=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(g(sn(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function an(t,e){for(var n=0,r=e.length;n',n.innerHTML.indexOf(e)>0}function wn(t){return va=va||document.createElement("div"),va.innerHTML=t,va.textContent}function $n(t,e){return e&&(t=t.replace(ss,"\n")),t.replace(is,"<").replace(as,">").replace(us,"&").replace(cs,'"')}function xn(t,e){function n(e){f+=e,t=t.substring(e)}function r(){var e=t.match(ka);if(e){var r={tagName:e[1],attrs:[],start:f};n(e[0].length);for(var o,i;!(o=t.match(Oa))&&(i=t.match($a));)n(i[0].length),r.attrs.push(i);if(o)return r.unarySlash=o[1],n(o[0].length),r.end=f,r}}function o(t){var n=t.tagName,r=t.unarySlash;c&&("p"===s&&ya(n)&&i(s),ga(n)&&s===n&&i(n));for(var o=l(n)||"html"===n&&"head"===s||!!r,a=t.attrs.length,f=new Array(a),p=0;p=0&&u[o].lowerCasedTag!==i;o--);else o=0;if(o>=0){for(var a=u.length-1;a>=o;a--)e.end&&e.end(u[a].tag,n,r);u.length=o,s=o&&u[o-1].tag}else"br"===i?e.start&&e.start(t,[],!0,n,r):"p"===i&&(e.start&&e.start(t,[],!1,n,r),e.end&&e.end(t,n,r))}for(var a,s,u=[],c=e.expectHTML,l=e.isUnaryTag||ho,f=0;t;){if(a=t,s&&rs(s)){var p=s.toLowerCase(),d=os[p]||(os[p]=new RegExp("([\\s\\S]*?)(]*>)","i")),v=0,h=t.replace(d,function(t,n,r){return v=r.length,"script"!==p&&"style"!==p&&"noscript"!==p&&(n=n.replace(//g,"$1").replace(//g,"$1")),e.chars&&e.chars(n),""});f+=t.length-h.length,t=h,i(p,f-v,f)}else{var m=t.indexOf("<");if(0===m){if(Sa.test(t)){var g=t.indexOf("-->");if(g>=0){n(g+3);continue}}if(Ea.test(t)){var y=t.indexOf("]>");if(y>=0){n(y+2);continue}}var b=t.match(Ta);if(b){n(b[0].length);continue}var _=t.match(Aa);if(_){var w=f;n(_[0].length),i(_[1],w,f);continue}var $=r();if($){o($);continue}}var x=void 0,C=void 0,k=void 0;if(m>0){for(C=t.slice(m);!(Aa.test(C)||ka.test(C)||Sa.test(C)||Ea.test(C)||(k=C.indexOf("<",1),k<0));)m+=k,C=t.slice(m);x=t.substring(0,m),n(m)}m<0&&(x=t,t=""),e.chars&&x&&e.chars(x)}if(t===a&&e.chars){e.chars(t);break}}i()}function Cn(t){function e(){(a||(a=[])).push(t.slice(v,o).trim()),v=o+1}var n,r,o,i,a,s=!1,u=!1,c=!1,l=!1,f=0,p=0,d=0,v=0;for(o=0;o=0&&(m=t.charAt(h)," "===m);h--);m&&/[\w$]/.test(m)||(l=!0)}}else void 0===i?(v=o+1,i=t.slice(0,o).trim()):e();if(void 0===i?i=t.slice(0,o).trim():0!==v&&e(),a)for(o=0;oa&&i.push(JSON.stringify(t.slice(a,o)));var s=Cn(r[1].trim());i.push("_s("+s+")"),a=o+r[0].length}return a=Pa}function Rn(t){return 34===t||39===t}function Un(t){var e=1;for(Ma=La;!Dn();)if(t=Mn(),Rn(t))Hn(t);else if(91===t&&e++,93===t&&e--,0===e){Da=La;break}}function Hn(t){for(var e=t;!Dn()&&(t=Mn(),t!==e););}function Fn(t,e){Ra=e.warn||An,Ua=e.getTagNamespace||ho,Ha=e.mustUseProp||ho,Fa=e.isPreTag||ho,Ba=Tn(e.modules,"preTransformNode"),Ja=Tn(e.modules,"transformNode"),Va=Tn(e.modules,"postTransformNode"),qa=e.delimiters;var n,r,o=[],i=e.preserveWhitespace!==!1,a=!1,s=!1;return xn(t,{expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,shouldDecodeNewlines:e.shouldDecodeNewlines,start:function(t,i,u){function c(t){}var l=r&&r.ns||Ua(t);$o&&"svg"===l&&(i=ir(i));var f={type:1,tag:t,attrsList:i,attrsMap:rr(i),parent:r,children:[]};l&&(f.ns=l),or(f)&&!Ao()&&(f.forbidden=!0);for(var p=0;p-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),Pn(t,"click","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+e+"=$$a.concat($$v))}else{$$i>-1&&("+e+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+e+"=$$c}",null,!0)}function Kr(t,e,n){var r=n&&n.number,o=In(t,"value")||"null";o=r?"_n("+o+")":o,Sn(t,"checked","_q("+e+","+o+")"),Pn(t,"click",Xr(e,o),null,!0)}function Wr(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,u=i||$o&&"range"===r?"change":"input",c=!i&&"range"!==r,l="input"===t.tag||"textarea"===t.tag,f=l?"$event.target.value"+(s?".trim()":""):s?"(typeof $event === 'string' ? $event.trim() : $event)":"$event";f=a||"number"===r?"_n("+f+")":f;var p=Xr(e,f);l&&c&&(p="if($event.target.composing)return;"+p),Sn(t,"value",l?"_s("+e+")":"("+e+")"),Pn(t,u,p,null,!0),(s||a||"number"===r)&&Pn(t,"blur","$forceUpdate()")}function Gr(t,e,n){var r=n&&n.number,o='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})"+(null==t.attrsMap.multiple?"[0]":""),i=Xr(e,o);Pn(t,"change",i,null,!0)}function Xr(t,e){var n=Ln(t);return null===n.idx?t+"="+e:"var $$exp = "+n.exp+", $$idx = "+n.idx+";if (!Array.isArray($$exp)){"+t+"="+e+"}else{$$exp.splice($$idx, 1, "+e+")}"}function Zr(t,e){e.value&&Sn(t,"textContent","_s("+e.value+")")}function Yr(t,e){e.value&&Sn(t,"innerHTML","_s("+e.value+")")}function Qr(t,e){return e=e?f(f({},Ns),e):Ns,Hr(t,e)}function to(t,e,n){var r=(e&&e.warn||jo,e&&e.delimiters?String(e.delimiters)+t:t);if(Is[r])return Is[r];var o={},i=Qr(t,e);o.render=eo(i.render);var a=i.staticRenderFns.length;o.staticRenderFns=new Array(a);for(var s=0;s0,Co=wo&&wo.indexOf("edge/")>0,ko=wo&&wo.indexOf("android")>0,Oo=wo&&/iphone|ipad|ipod|ios/.test(wo),Ao=function(){return void 0===ro&&(ro=!_o&&"undefined"!=typeof e&&"server"===e.process.env.VUE_ENV),ro},To=_o&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,So=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e1&&(e[n[0].trim()]=n[1].trim())}}),e}),Hi=/^--/,Fi=/\s*!important$/,Bi=function(t,e,n){Hi.test(e)?t.style.setProperty(e,n):Fi.test(n)?t.style.setProperty(e,n.replace(Fi,""),"important"):t.style[Vi(e)]=n},Ji=["Webkit","Moz","ms"],Vi=u(function(t){if(di=di||document.createElement("div"),t=uo(t),"filter"!==t&&t in di.style)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n\/=]+)/,_a=/(?:=)/,wa=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],$a=new RegExp("^\\s*"+ba.source+"(?:\\s*("+_a.source+")\\s*(?:"+wa.join("|")+"))?"),xa="[a-zA-Z_][\\w\\-\\.]*",Ca="((?:"+xa+"\\:)?"+xa+")",ka=new RegExp("^<"+Ca),Oa=/^\s*(\/?)>/,Aa=new RegExp("^<\\/"+Ca+"[^>]*>"),Ta=/^]+>/i,Sa=/^ 10 | 11 | 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-vue", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project", 5 | "author": "samuelayo ", 6 | "private": true, 7 | "main": "elect.js", 8 | "scripts": { 9 | "dev": "node build/dev-server.js", 10 | "build": "node build/build.js" 11 | }, 12 | "dependencies": { 13 | "vue": "^2.1.0", 14 | "vue-resource": "^1.1.0" 15 | }, 16 | "devDependencies": { 17 | "autoprefixer": "^6.4.0", 18 | "babel-core": "^6.0.0", 19 | "babel-loader": "^6.0.0", 20 | "babel-plugin-transform-runtime": "^6.0.0", 21 | "babel-preset-es2015": "^6.0.0", 22 | "babel-preset-stage-2": "^6.0.0", 23 | "babel-register": "^6.0.0", 24 | "chalk": "^1.1.3", 25 | "connect-history-api-fallback": "^1.1.0", 26 | "css-loader": "^0.25.0", 27 | "electron": "^1.4.15", 28 | "eventsource-polyfill": "^0.9.6", 29 | "express": "^4.13.3", 30 | "extract-text-webpack-plugin": "^1.0.1", 31 | "file-loader": "^0.9.0", 32 | "friendly-errors-webpack-plugin": "^1.1.2", 33 | "function-bind": "^1.0.2", 34 | "html-webpack-plugin": "^2.8.1", 35 | "http-proxy-middleware": "^0.17.2", 36 | "json-loader": "^0.5.4", 37 | "opn": "^4.0.2", 38 | "ora": "^0.3.0", 39 | "semver": "^5.3.0", 40 | "shelljs": "^0.7.4", 41 | "url-loader": "^0.5.7", 42 | "vue-loader": "^10.0.0", 43 | "vue-style-loader": "^1.0.0", 44 | "vue-template-compiler": "^2.1.0", 45 | "webpack": "^1.13.2", 46 | "webpack-dev-middleware": "^1.8.3", 47 | "webpack-hot-middleware": "^2.12.2", 48 | "webpack-merge": "^0.14.1" 49 | }, 50 | "engines": { 51 | "node": ">= 4.0.0", 52 | "npm": ">= 3.0.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 196 | 197 | 207 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samuelayo/vue-electron/554356fdc1b4f8a04c9d65555c0a4aeb3b0c313e/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/Hello.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 33 | 34 | 35 | 54 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | //require the vu resource library 6 | var VueResource = require('vue-resource'); 7 | //tell vue to use vue resource 8 | Vue.use(VueResource); 9 | Vue.http.options.root = '/root'; 10 | Vue.http.headers.common['Access-Control-Allow-Origin'] = '*'; 11 | 12 | 13 | /* eslint-disable no-new */ 14 | new Vue({ 15 | el: '#app', 16 | template: '', 17 | components: { App } 18 | }) 19 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samuelayo/vue-electron/554356fdc1b4f8a04c9d65555c0a4aeb3b0c313e/static/.gitkeep --------------------------------------------------------------------------------