From c42b7f00c20c16833a8f974c493341a5dbf69bfe Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 12 Jan 2018 19:12:31 +0100 Subject: [PATCH 1/2] Typescript-vue TodoMVC request (Victor Garcia) --- examples/typescript-vue/.gitignore | 80 ++++ examples/typescript-vue/README.md | 57 +++ examples/typescript-vue/Server.js | 33 ++ examples/typescript-vue/config/helpers.js | 10 + .../config/webpack.config.base.js | 86 ++++ .../config/webpack.config.dev.js | 73 ++++ .../config/webpack.config.prod.js | 126 ++++++ .../typescript-vue/environment/dev.env.js | 6 + .../typescript-vue/environment/prod.env.js | 6 + examples/typescript-vue/nodemon.json | 11 + examples/typescript-vue/package.json | 81 ++++ examples/typescript-vue/postcss.config.js | 1 + examples/typescript-vue/src/App.vue | 48 +++ .../typescript-vue/src/assets/images/logo.png | Bin 0 -> 6849 bytes .../typescript-vue/src/components/Footer.vue | 38 ++ .../typescript-vue/src/components/Header.vue | 33 ++ .../src/components/TodoItem.vue | 63 +++ .../src/components/TodoList.vue | 39 ++ .../typescript-vue/src/components/index.ts | 4 + examples/typescript-vue/src/index.html | 11 + examples/typescript-vue/src/main.ts | 7 + .../typescript-vue/src/store/TodoStore.ts | 84 ++++ examples/typescript-vue/src/store/index.ts | 17 + examples/typescript-vue/src/styles/main.css | 371 ++++++++++++++++++ examples/typescript-vue/src/typings/Todo.d.ts | 12 + examples/typescript-vue/src/typings/index.ts | 1 + .../src/typings/libs/vue.typescript.d.ts | 4 + .../src/typings/libs/vuelidate.d.ts | 245 ++++++++++++ examples/typescript-vue/src/utils/filters.ts | 28 ++ examples/typescript-vue/src/utils/methods.ts | 40 ++ .../typescript-vue/src/utils/validators.ts | 9 + examples/typescript-vue/tsconfig.json | 41 ++ examples/typescript-vue/webpack.config.js | 1 + 33 files changed, 1666 insertions(+) create mode 100644 examples/typescript-vue/.gitignore create mode 100644 examples/typescript-vue/README.md create mode 100644 examples/typescript-vue/Server.js create mode 100644 examples/typescript-vue/config/helpers.js create mode 100644 examples/typescript-vue/config/webpack.config.base.js create mode 100644 examples/typescript-vue/config/webpack.config.dev.js create mode 100644 examples/typescript-vue/config/webpack.config.prod.js create mode 100644 examples/typescript-vue/environment/dev.env.js create mode 100644 examples/typescript-vue/environment/prod.env.js create mode 100644 examples/typescript-vue/nodemon.json create mode 100644 examples/typescript-vue/package.json create mode 100644 examples/typescript-vue/postcss.config.js create mode 100644 examples/typescript-vue/src/App.vue create mode 100644 examples/typescript-vue/src/assets/images/logo.png create mode 100644 examples/typescript-vue/src/components/Footer.vue create mode 100644 examples/typescript-vue/src/components/Header.vue create mode 100644 examples/typescript-vue/src/components/TodoItem.vue create mode 100644 examples/typescript-vue/src/components/TodoList.vue create mode 100644 examples/typescript-vue/src/components/index.ts create mode 100644 examples/typescript-vue/src/index.html create mode 100644 examples/typescript-vue/src/main.ts create mode 100644 examples/typescript-vue/src/store/TodoStore.ts create mode 100644 examples/typescript-vue/src/store/index.ts create mode 100644 examples/typescript-vue/src/styles/main.css create mode 100644 examples/typescript-vue/src/typings/Todo.d.ts create mode 100644 examples/typescript-vue/src/typings/index.ts create mode 100644 examples/typescript-vue/src/typings/libs/vue.typescript.d.ts create mode 100644 examples/typescript-vue/src/typings/libs/vuelidate.d.ts create mode 100644 examples/typescript-vue/src/utils/filters.ts create mode 100644 examples/typescript-vue/src/utils/methods.ts create mode 100644 examples/typescript-vue/src/utils/validators.ts create mode 100644 examples/typescript-vue/tsconfig.json create mode 100644 examples/typescript-vue/webpack.config.js diff --git a/examples/typescript-vue/.gitignore b/examples/typescript-vue/.gitignore new file mode 100644 index 0000000000..577366bc44 --- /dev/null +++ b/examples/typescript-vue/.gitignore @@ -0,0 +1,80 @@ +/.web-server-pid +/app/config/parameters.yml +/build/ +/phpunit.xml +/var/* +!/var/cache +/var/cache/* +!var/cache/.gitkeep +!/var/logs +/var/logs/* +!var/logs/.gitkeep +!/var/sessions +/var/sessions/* +!var/sessions/.gitkeep +!var/SymfonyRequirements.php +/vendor/ +/web/bundles/ +/.idea/ + + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +dist + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + diff --git a/examples/typescript-vue/README.md b/examples/typescript-vue/README.md new file mode 100644 index 0000000000..3c9afcc08e --- /dev/null +++ b/examples/typescript-vue/README.md @@ -0,0 +1,57 @@ +# Vue.js + Typescript + Vuex • [TodoMVC](http://todomvc.com) + +> The Progressive JavaScript Framework + +> Javascript that scales + + +## Resources + +To work with Typescript those npm package were really usefull: + +- [Vue-class-component](https://github.com/vuejs/vue-class-component) +- [Vue-property-decorator](https://github.com/kaorun343/vue-property-decorator) +- [Vuex-class](https://github.com/ktsn/vuex-class) + + +*Let us [know](https://github.com/tastejs/todomvc/issues) if you discover anything worth sharing.* + + +## Implementation + +TodoMVC written in Vue 2.5, Webpack 3, Typescript 2.6 and Vuex. + +The app was written from the TodoMVC Vue.js app by Evan You. +I splited the app between components and put all the logic inside the Vuex store management! + +## To discover more + +* [Components](https://github.com/victorgarciaesgi/Vue-Typescript-TodoMvc/tree/master/src/components) +* [Webpack config](https://github.com/victorgarciaesgi/Vue-Typescript-TodoMvc/tree/master/config) +* [Vuex module](https://github.com/victorgarciaesgi/Vue-Typescript-TodoMvc/blob/master/src/store/TodoStore.ts) + +## Credit + +Created by [Victor Garcia](http://garciavictor.fr) + +# Installation + +```bash +$ npm install +``` + +``` +$ yarn +``` + +## Development + +```bash +npm run dev +``` + +## Production build + +```bash +npm run prod +``` \ No newline at end of file diff --git a/examples/typescript-vue/Server.js b/examples/typescript-vue/Server.js new file mode 100644 index 0000000000..4053736252 --- /dev/null +++ b/examples/typescript-vue/Server.js @@ -0,0 +1,33 @@ +const express = require('express'); +const morgan = require('morgan'); +const path = require('path'); +const fs = require('fs') + +const app = express(); +const PORT = process.env.PORT || 5000; + + +app.use(morgan('tiny')); +app.get('*.js', function (req, res, next) { + if (process.env.NODE_ENV === 'production'){ + + var url = req.url + '.gz'; + if (fs.existsSync(`./dist${url}`)){ + req.url = url; + res.set('Content-Encoding', 'gzip'); + } + + //Renvoie le fichier js zippé en production + } + next(); +}); + +app.use(express.static(path.resolve(__dirname ,'dist'))); + +app.get('/*', (req, res) => { + res.sendFile(path.resolve(__dirname, './dist/index.html')); +}); + +app.listen(PORT, () => { + console.log(`App listening on port ${PORT}`); +}); diff --git a/examples/typescript-vue/config/helpers.js b/examples/typescript-vue/config/helpers.js new file mode 100644 index 0000000000..0e93a5ae37 --- /dev/null +++ b/examples/typescript-vue/config/helpers.js @@ -0,0 +1,10 @@ +const path = require('path'); + +const ROOT = path.resolve(__dirname, '..'); + +function root(args) { + args = Array.prototype.slice.call(arguments, 0); + return path.join.apply(path, [ROOT].concat(args)); +} + +exports.root = root; \ No newline at end of file diff --git a/examples/typescript-vue/config/webpack.config.base.js b/examples/typescript-vue/config/webpack.config.base.js new file mode 100644 index 0000000000..f74b760a8f --- /dev/null +++ b/examples/typescript-vue/config/webpack.config.base.js @@ -0,0 +1,86 @@ +const path = require('path'); +const helpers = require('./helpers'); +const FaviconsWebpackPlugin = require('favicons-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); + +const baseConfig = { + entry: { + 'bundle': helpers.root('/src/main.ts') + }, + output: { + filename: '[name].js', + publicPath: '/', + path: helpers.root('dist') + }, + resolve: { + extensions: [ + '.ts', '.js', '.vue', + ], + alias: { + '@components': helpers.root('src/components/index.ts'), + '@src': helpers.root('src'), + '@icons': helpers.root('src/assets/icons'), + '@images': helpers.root('src/assets/images'), + '@fonts': helpers.root('src/assets/fonts'), + '@views': helpers.root('src/components/views/index.ts'), + '@validators': helpers.root('src/utils/validators.ts'), + '@methods': helpers.root('src/utils/methods.ts'), + '@filters': helpers.root('src/utils/filters.ts'), + '@types': helpers.root('src/typings/index.ts'), + '@store': helpers.root('src/store/index.ts'), + } + }, + module: { + rules: [{ + test: /\.vue$/, + use: { + loader: 'vue-loader', + options: { + loaders: { + scss: ['vue-style-loader', 'css-loader', 'postcss-loader', 'sass-loader', { + loader: 'sass-resources-loader', + options: { + resources: helpers.root('src/styles/variables.scss'), + esModule: true + } + }], + ts: 'ts-loader', + } + } + } + }, { + test: /\.ts$/, + exclude: /node_modules/, + loader: 'ts-loader', + options: { + appendTsSuffixTo: [/\.vue$/], + } + }] + }, + plugins: [ + new FaviconsWebpackPlugin({ + logo: helpers.root('src/assets/images/logo.png'), + prefix: 'icons-[hash]/', + persistentCache: true, + inject: true, + background: '#fff', + icons: { + android: false, + appleIcon: false, + appleStartup: false, + coast: false, + favicons: true, + firefox: false, + opengraph: false, + twitter: false, + yandex: false, + windows: false + } + }), + new CopyWebpackPlugin([{ + from: helpers.root('src/assets') + }]) + ], +}; + +module.exports = baseConfig; \ No newline at end of file diff --git a/examples/typescript-vue/config/webpack.config.dev.js b/examples/typescript-vue/config/webpack.config.dev.js new file mode 100644 index 0000000000..044a4c7e6d --- /dev/null +++ b/examples/typescript-vue/config/webpack.config.dev.js @@ -0,0 +1,73 @@ +const webpackBaseConfig = require('./webpack.config.base'); +const env = require('../environment/dev.env'); +const webpack = require('webpack') +const path = require('path'); +const helpers = require('./helpers'); +const merge = require('webpack-merge') +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin'); +const DefinePlugin = require('webpack/lib/DefinePlugin'); +const autoprefixer = require('autoprefixer'); + +const webpackDevConfig = { + module: { + rules: [{ + test: /\.s?css$/, + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + options: { + minimize: false, + sourceMap: true, + importLoaders: 2 + } + }, { + loader: 'postcss-loader', + options: { + plugins: () => [autoprefixer], + sourceMap: true + } + }, { + loader: 'sass-loader', + options: { + outputStyle: 'expanded', + sourceMap: true, + sourceMapContents: true + } + } + ], + }, { + test: /\.(jpe?g|png|ttf|eot|svg|ico|woff(2)?)(\?[a-z0-9=&.]+)?$/, + use: 'base64-inline-loader?limit=1000&name=[name].[ext]' + }] + }, + plugins: [ + new HtmlWebpackPlugin({ + inject: true, + template: helpers.root('/src/index.html'), + filename: 'index.html' + }), + new DefinePlugin({ + 'process.env': env + }), + new FriendlyErrorsPlugin(), + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin(), + new webpack.NoEmitOnErrorsPlugin() + ], + devServer: { + contentBase: path.join(__dirname, "dist"), + port: 5000, + historyApiFallback: true, + hot: true, + quiet: true, + open: true, + inline: true + }, + devtool: 'cheap-module-eval-source-map' +} + +const devExport = merge(webpackBaseConfig, webpackDevConfig); + +module.exports = devExport; \ No newline at end of file diff --git a/examples/typescript-vue/config/webpack.config.prod.js b/examples/typescript-vue/config/webpack.config.prod.js new file mode 100644 index 0000000000..f11a474d6e --- /dev/null +++ b/examples/typescript-vue/config/webpack.config.prod.js @@ -0,0 +1,126 @@ +const path = require('path'); +const webpack = require('webpack'); +const merge = require('webpack-merge'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const CompressionPlugin = require('compression-webpack-plugin'); +const ExtractTextPlugin = require('extract-text-webpack-plugin'); +const autoprefixer = require('autoprefixer'); +const webpackConfig = require('./webpack.config.base'); +const helpers = require('./helpers'); +const DefinePlugin = require('webpack/lib/DefinePlugin'); +const env = require('../environment/prod.env'); + +const extractSass = new ExtractTextPlugin({ + filename: 'css/[name].[contenthash].css', + disable: process.env.NODE_ENV === 'development' +}); + + + +const configProd = { + output: { + filename: "[name].[hash].js", + chunkFilename: "[id].[hash].js" + }, + module: { + rules: [ + { + test: /\.s?css$/, + use: extractSass.extract({ + use: [{ + loader: 'css-loader', + options: { + minimize: true, + importLoaders: 2 + } + }, + { + loader: 'postcss-loader', + options: { + plugins: () => [autoprefixer] + } + }, + { + loader: 'sass-loader', + options: { + outputStyle: 'compressed', + sourceMap: false, + sourceMapContents: false + } + } + ], + fallback: 'style-loader' + }) + }, { + test: /\.(jpe?g|png|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/, + use: 'base64-inline-loader?limit=1000&name=[name].[ext]' + } + ] + }, + plugins: [ + new DefinePlugin({ + 'process.env': env + }), + new webpack.optimize.UglifyJsPlugin({ + include: /\.js$/, + mangle: { keep_fnames: false, screw_ie8: true }, + compress: { keep_fnames: false, screw_ie8: true, warnings: false }, + sourceMap: false, + removeComments: true, + beautify: false + }), + extractSass, + new HtmlWebpackPlugin({ + inject: true, + template: helpers.root('/src/index.html'), + minify: { + removeComments: true, + collapseWhitespace: true, + removeRedundantAttributes: true, + useShortDoctype: true, + removeEmptyAttributes: true, + removeStyleLinkTypeAttributes: true, + keepClosingSlash: true, + minifyJS: true, + minifyCSS: true, + minifyURLs: true + }, + chunksSortMode: 'dependency', + }), + + new webpack.HashedModuleIdsPlugin(), + new webpack.optimize.ModuleConcatenationPlugin(), + 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 + ) + } + }), + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + minChunks: Infinity + }), + new webpack.optimize.CommonsChunkPlugin({ + name: 'app', + async: 'vendor-async', + children: true, + minChunks: 3 + }), + new CompressionPlugin({ + asset: "[path].gz[query]", + algorithm: "gzip", + test: /\.js$/, + threshold: 10240, + minRatio: 0.8 + }), + ] +} + + module.exports = merge(webpackConfig, configProd); \ No newline at end of file diff --git a/examples/typescript-vue/environment/dev.env.js b/examples/typescript-vue/environment/dev.env.js new file mode 100644 index 0000000000..32ed194ba7 --- /dev/null +++ b/examples/typescript-vue/environment/dev.env.js @@ -0,0 +1,6 @@ +module.exports = { + ENV: '"development"', + NODE_ENV: '"development"', + DEBUG_MODE: true, + API_KEY: '"XXXX-XXXXX-XXXX-XXXX"', +} \ No newline at end of file diff --git a/examples/typescript-vue/environment/prod.env.js b/examples/typescript-vue/environment/prod.env.js new file mode 100644 index 0000000000..226afa44f1 --- /dev/null +++ b/examples/typescript-vue/environment/prod.env.js @@ -0,0 +1,6 @@ +module.exports = { + ENV: '"production"', + NODE_ENV: '"production"', + DEBUG_MODE: false, + API_KEY: '"XXXX-XXXXX-XXXX-XXXX"', +} \ No newline at end of file diff --git a/examples/typescript-vue/nodemon.json b/examples/typescript-vue/nodemon.json new file mode 100644 index 0000000000..b4eb6d8e94 --- /dev/null +++ b/examples/typescript-vue/nodemon.json @@ -0,0 +1,11 @@ +{ + "restartable": "rs", + "ignore": [ + ".git", + "node_modules/**/node_modules", + "src/", + "dist/" + ], + "verbose": false, + "ext": "js json" +} \ No newline at end of file diff --git a/examples/typescript-vue/package.json b/examples/typescript-vue/package.json new file mode 100644 index 0000000000..6c39d08f21 --- /dev/null +++ b/examples/typescript-vue/package.json @@ -0,0 +1,81 @@ +{ + "name": "moving_mate", + "version": "1.0.0", + "main": "index.js", + "author": "Victor Garcia ", + "license": "MIT", + "scripts": { + "dev": "webpack-dev-server --inline --progress", + "server:prod": "cross-env NODE_ENV=production nodemon Server.js", + "prod": "concurrently --kill-others \"cross-env NODE_ENV=production npm run clean && npm run build:prod\" \"npm run server:prod\"", + "clean": "rimraf dist", + "build:prod": "webpack --display-entrypoints --config config/webpack.config.prod.js --progress" + }, + "dependencies": { + "axios": "^0.16.2", + "jquery": "^3.2.1", + "jwt-decode": "^2.2.0", + "lodash": "^4.17.4", + "todomvc-app-css": "^2.1.0", + "vue": "2.5.13", + "vue-class-component": "6.1.2", + "vue-property-decorator": "6.0.0", + "vue-router": "3.0.1", + "vuelidate": "^0.6.1", + "vuex": "3.0.1", + "vuex-class": "0.3.0", + "vuex-router-sync": "5.0.0", + "webpack-merge": "^4.1.1" + }, + "devDependencies": { + "@types/axios": "^0.14.0", + "@types/express": "^4.0.37", + "@types/lodash": "^4.14.76", + "@types/node": "^8.0.30", + "@types/vue": "^2.0.0", + "@types/vue-resource": "^0.9.33", + "@types/vue-router": "^2.0.0", + "autoprefixer": "^7.1.5", + "base64-inline-loader": "^1.1.0", + "compression-webpack-plugin": "^1.0.1", + "concurrently": "^3.5.0", + "copy-webpack-plugin": "^4.2.0", + "cross-env": "^5.1.0", + "css-loader": "^0.28.7", + "express": "^4.16.2", + "extract-text-webpack-plugin": "^3.0.1", + "favicons-webpack-plugin": "^0.0.7", + "file-loader": "^0.11.2", + "friendly-errors-webpack-plugin": "^1.6.1", + "fs": "^0.0.1-security", + "glob": "^7.1.2", + "html-webpack-plugin": "^2.30.1", + "image-webpack-loader": "^3.4.2", + "morgan": "^1.9.0", + "node-sass": "^4.7.2", + "path": "^0.12.7", + "postcss-loader": "^2.0.6", + "prerender-spa-plugin": "^2.1.0", + "purify-css": "^1.2.5", + "purifycss-webpack": "^0.7.0", + "rimraf": "^2.6.2", + "sass-lint": "^1.12.1", + "sass-loader": "^6.0.6", + "sass-resources-loader": "^1.3.1", + "source-map-loader": "^0.2.2", + "style-loader": "^0.18.2", + "svg-url-loader": "^2.2.0", + "ts-loader": "^2.3.7", + "typescript": "2.6.2", + "url": "^0.11.0", + "url-loader": "^0.6.2", + "vue-loader": "^13.3.0", + "vue-style-loader": "^3.0.3", + "vue-template-compiler": "^2.5.13", + "vue-ts-loader": "0.0.3", + "vuex-typescript": "^3.0.2", + "webpack": "3.8.1", + "webpack-dashboard": "^1.0.0", + "webpack-dev-server": "^2.9.7" + } +} diff --git a/examples/typescript-vue/postcss.config.js b/examples/typescript-vue/postcss.config.js new file mode 100644 index 0000000000..a099545376 --- /dev/null +++ b/examples/typescript-vue/postcss.config.js @@ -0,0 +1 @@ +module.exports = {}; \ No newline at end of file diff --git a/examples/typescript-vue/src/App.vue b/examples/typescript-vue/src/App.vue new file mode 100644 index 0000000000..a393a59e09 --- /dev/null +++ b/examples/typescript-vue/src/App.vue @@ -0,0 +1,48 @@ + + + + diff --git a/examples/typescript-vue/src/assets/images/logo.png b/examples/typescript-vue/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 +
+ + {{ remaining }} {{ remaining | pluralize }} left + + + +
+ + + + \ No newline at end of file diff --git a/examples/typescript-vue/src/components/Header.vue b/examples/typescript-vue/src/components/Header.vue new file mode 100644 index 0000000000..1bad2d3d5b --- /dev/null +++ b/examples/typescript-vue/src/components/Header.vue @@ -0,0 +1,33 @@ + + + + diff --git a/examples/typescript-vue/src/components/TodoItem.vue b/examples/typescript-vue/src/components/TodoItem.vue new file mode 100644 index 0000000000..9e0a0cdf11 --- /dev/null +++ b/examples/typescript-vue/src/components/TodoItem.vue @@ -0,0 +1,63 @@ + + + diff --git a/examples/typescript-vue/src/components/TodoList.vue b/examples/typescript-vue/src/components/TodoList.vue new file mode 100644 index 0000000000..b658d72811 --- /dev/null +++ b/examples/typescript-vue/src/components/TodoList.vue @@ -0,0 +1,39 @@ + + + + diff --git a/examples/typescript-vue/src/components/index.ts b/examples/typescript-vue/src/components/index.ts new file mode 100644 index 0000000000..442a49441d --- /dev/null +++ b/examples/typescript-vue/src/components/index.ts @@ -0,0 +1,4 @@ +export {default as Header} from './Header.vue'; +export {default as TodoItem} from './TodoItem.vue'; +export {default as TodoList} from './TodoList.vue'; +export {default as Footer} from './Footer.vue'; \ No newline at end of file diff --git a/examples/typescript-vue/src/index.html b/examples/typescript-vue/src/index.html new file mode 100644 index 0000000000..d9e859fa20 --- /dev/null +++ b/examples/typescript-vue/src/index.html @@ -0,0 +1,11 @@ + + + + + Vue.js + Typescript TodoMVC + + + +
Loading...
+ + \ No newline at end of file diff --git a/examples/typescript-vue/src/main.ts b/examples/typescript-vue/src/main.ts new file mode 100644 index 0000000000..24a0793d8b --- /dev/null +++ b/examples/typescript-vue/src/main.ts @@ -0,0 +1,7 @@ +import Vue from 'vue'; +import App from './App.vue'; +import { store } from '@store'; + +require('@src/styles/main.css'); + +new App().$mount('#app'); \ No newline at end of file diff --git a/examples/typescript-vue/src/store/TodoStore.ts b/examples/typescript-vue/src/store/TodoStore.ts new file mode 100644 index 0000000000..d82f9a7d84 --- /dev/null +++ b/examples/typescript-vue/src/store/TodoStore.ts @@ -0,0 +1,84 @@ +import { Store, GetterTree, MutationTree, ActionTree, Module } from 'vuex'; +import { ITodosState, ITodo } from '@types'; +import { RootState } from './index'; + +export const state: ITodosState = { + todos: [], + visibility: 'all', + count: 0 +} + +export const getters: GetterTree = { + all(state) { + return state.todos; + }, + active(state) { + return state.todos.filter(todo => !todo.completed); + }, + completed(state) { + return state.todos.filter(todo => todo.completed); + }, + remaining(state, getters) { + return getters.active.length; + }, + filteredTodos(state, getters) { + return getters[state.visibility]; + }, +} + +export const mutations: MutationTree = { + addTodo(state, todo: ITodo) { + state.todos.push(todo); + state.count++; + }, + setVisibility(state, payload: ITodosState["visibility"]) { + state.visibility = payload; + }, + removeCompleted(state, { getters }) { + state.todos = state.todos.filter(todo => !todo.completed); + }, + setAll(state, payload: boolean) { + state.todos.map(item => { + item.completed = payload; + }); + }, + removeTodo(state, todo: ITodo) { + state.todos.splice(state.todos.indexOf(todo), 1) + }, + editTodoMutation(state, todo: ITodo) { + todo = state.todos.find(item => todo.id == item.id); + todo.title = todo.title.trim(); + } +} + +export const actions: ActionTree = { + addTodoAction({ state, commit }, todoTitle: string) { + let todo: ITodo = { + completed: false, + id: state.count, + title: todoTitle + }; + commit('addTodo', todo); + }, + + editTodoAction({ state, commit }, todo: ITodo) { + commit('editTodoMutation', todo); + if (!todo.title) { + commit('removeTodo', todo); + } + }, + changeVisibility({state, commit, getters}, payload: ITodosState["visibility"]) { + if (getters[payload]) { + commit('setVisibility', payload); + } else { + window.location.hash = '' + commit('setVisibility', 'all'); + } + } +} + +export const TodoModule: Module = { + state, getters, mutations, actions, namespaced: true +} + + diff --git a/examples/typescript-vue/src/store/index.ts b/examples/typescript-vue/src/store/index.ts new file mode 100644 index 0000000000..38ebc36df9 --- /dev/null +++ b/examples/typescript-vue/src/store/index.ts @@ -0,0 +1,17 @@ +import Vuex from 'vuex'; +import Vue from 'vue'; + +import { ITodosState } from '@types'; +import { TodoModule } from './TodoStore'; + +Vue.use(Vuex); + +export interface RootState { + LoginModule: ITodosState, +} + +export const store = new Vuex.Store({ + modules: { + TodoModule + } +}) \ No newline at end of file diff --git a/examples/typescript-vue/src/styles/main.css b/examples/typescript-vue/src/styles/main.css new file mode 100644 index 0000000000..1e8ed52cbc --- /dev/null +++ b/examples/typescript-vue/src/styles/main.css @@ -0,0 +1,371 @@ + +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #4d4d4d; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +:focus { + outline: 0; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp h1 { + position: absolute; + top: -155px; + width: 100%; + font-size: 100px; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, 0.15); + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + border: 0; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +label[for='toggle-all'] { + display: none; +} + +.toggle-all { + position: absolute; + top: -55px; + left: -12px; + width: 60px; + height: 34px; + text-align: center; + border: none; /* Mobile Safari */ +} + +.toggle-all:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; +} + +.toggle-all:checked:before { + color: #737373; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: 506px; + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li .toggle:checked:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 60px 15px 15px; + margin-left: 45px; + display: block; + line-height: 1.2; + transition: color 0.4s; +} + +.todo-list li.completed label { + color: #d9d9d9; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover { + color: #af5b5e; +} + +.todo-list li .destroy:after { + content: '×'; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + color: #777; + padding: 10px 15px; + height: 20px; + text-align: center; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +.filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #bfbfbf; + font-size: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } + + .toggle-all { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-appearance: none; + appearance: none; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} diff --git a/examples/typescript-vue/src/typings/Todo.d.ts b/examples/typescript-vue/src/typings/Todo.d.ts new file mode 100644 index 0000000000..923674d001 --- /dev/null +++ b/examples/typescript-vue/src/typings/Todo.d.ts @@ -0,0 +1,12 @@ +export interface ITodosState { + todos: ITodo[], + visibility: 'all'|'completed'|'active', + count: number +} + + +export interface ITodo { + title: string, + id: number, + completed: boolean +} \ No newline at end of file diff --git a/examples/typescript-vue/src/typings/index.ts b/examples/typescript-vue/src/typings/index.ts new file mode 100644 index 0000000000..caaed92d91 --- /dev/null +++ b/examples/typescript-vue/src/typings/index.ts @@ -0,0 +1 @@ +export * from './Todo.d'; \ No newline at end of file diff --git a/examples/typescript-vue/src/typings/libs/vue.typescript.d.ts b/examples/typescript-vue/src/typings/libs/vue.typescript.d.ts new file mode 100644 index 0000000000..8f6f410263 --- /dev/null +++ b/examples/typescript-vue/src/typings/libs/vue.typescript.d.ts @@ -0,0 +1,4 @@ +declare module '*.vue' { + import Vue from 'vue'; + export default Vue; +} diff --git a/examples/typescript-vue/src/typings/libs/vuelidate.d.ts b/examples/typescript-vue/src/typings/libs/vuelidate.d.ts new file mode 100644 index 0000000000..e99712fdce --- /dev/null +++ b/examples/typescript-vue/src/typings/libs/vuelidate.d.ts @@ -0,0 +1,245 @@ +declare module "vuelidate" { + + import _Vue = require("vue"); + + /** + * @module augmentation to ComponentOptions defined by Vue.js + */ + module "vue/types/options" { + + interface ComponentOptions { + validations?: ValidationRuleset<{}>; + } + } + + module "vue/types/vue" { + interface Vue { + $v: Vuelidate; + } + } + + /** + * Represents an instance of validator class at runtime + */ + export interface IValidator { + /** + * Indicates the state of validation for given model. becomes true when any of it's child validators specified in options returns a falsy value. In case of validation groups, all grouped validators are considered. + */ + readonly $invalid: boolean; + /** + * A flag representing if the field under validation was touched by the user at least once. Usually it is used to decide if the message is supposed to be displayed to the end user. Flag is managed manually. You have to use $touch and $reset methods to manipulate it. The $dirty flag is considered true if given model was $touched or all of it's children are $dirty. + */ + $dirty: boolean; + /** + * Convenience flag to easily decide if a message should be displayed. It is a shorthand to $invalid && $dirty. + */ + readonly $error: boolean; + /** + * Indicates if any child async validator is currently pending. Always false if all validators are synchronous. + */ + $pending: boolean; + + $params: any; + + /** + * Sets the $dirty flag of the model and all its children to true recursively. + */ + $touch(): void; + /** + * Sets the $dirty flag of the model and all its children to false recursively. + */ + $reset(): void; + $flattenParams(): void; + } + + /** + * Builtin validators + */ + interface IDefaultValidators { + /** + * Accepts only alphabet characters. + */ + alpha?: boolean; + /** + * Accepts only alphanumerics. + */ + alphaNum?: boolean; + /** + * Checks if a number is in specified bounds. Min and max are both inclusive. + */ + between?: boolean; + /** + * Accepts valid email addresses. Keep in mind you still have to carefully verify it on your server, as it is impossible to tell if the address is real without sending verification email. + */ + email?: boolean; + /** + * Requires the input to have a maximum specified length, inclusive. Works with arrays. + */ + maxLength?: boolean; + /** + * Requires the input to have a minimum specified length, inclusive. Works with arrays. + */ + minLength?: boolean; + /** + * Requires non-empty data. Checks for empty arrays and strings containing only whitespaces. + */ + required?: boolean; + /** + * Checks for equality with a given property. Locator might be either a sibling property name or a function, that will get your component as this and nested model which sibling properties under second parameter. + */ + sameAs?: boolean; + /** + * Passes when at least one of provided validators passes. + */ + or?: boolean; + /** + * Passes when all of provided validators passes. + */ + and?: boolean; + } + + type EachByKey = { + [K in keyof T]: Validator + } + + /** + * Holds all validation models of collection validator. Always preserves the keys of original model, so it can be safely referenced in the v-for loop iterating over your data using the same index. + */ + type Each = + & { [key: number]: EachByKey } + & { $trackBy: string | Function } + & IValidator + + global { + interface Array { + /** + * Holds all validation models of collection validator. Always preserves the keys of original model, so it can be safely referenced in the v-for loop iterating over your data using the same index. + */ + $each: Each & Vuelidate; + } + } + + /** + * Represents an instance of validator class at runtime + */ + type Validator = IValidator & IDefaultValidators & Each; + + interface IPredicate { + (value: any, parentVm?: IValidationRule): boolean | Promise + } + + interface IPredicateGenerator { + (...args: any[]): IPredicate + } + + interface IValidationRule { + [key: string]: ValidationPredicate | IValidationRule | IValidationRule[]; + } + + export type ValidationPredicate = IPredicateGenerator | IPredicate; + + /** + * Represents mixin data exposed by Vuelidate instance + */ + export type Vuelidate = { + [K in keyof T]?: Vuelidate & Validator; + }; + + /** + * Represents component options used by Vuelidate + */ + export type ValidationRuleset = { + [K in keyof T]?: ValidationPredicate | IValidationRule | IValidationRule[] | string[]; + } + + /** + * Represents Vuelidate mixin data extending a Vue component instance. Have your Vue component options implement this + * @param {Type} T - The interface or type being used to store model data requiring validation + * + * @example + * export class Foo implements IVuelidate { + * data() { + * return { bar: { length: 0 } }; + * } + * validations: { + * bar: { + * length: { + * between: between(1,5) + * } + * } + * } + * $v: Vuelidate; + * } + */ + export interface IVuelidate { + $v: Vuelidate; + } + + /** + * Mixin object for supplying directly to components + */ + export const validationMixin: { + beforeCreate(): void; + }; + + /** + * Vuelidate function that creates a validator directly, given a model, and a set of rules + */ + export const validateModel: { + (model: T, validations: ValidationRuleset): IVuelidate; + } + + /** + * Vue plugin object + */ + export function Validation(Vue: typeof _Vue): void; + + export default Validation; +} + + +declare module "vuelidate/lib/validators" { + + import { ValidationPredicate } from "vuelidate"; + + /** + * Accepts only alphabet characters. + */ + function alpha(value: any): boolean; + /** + * Accepts only alphanumerics. + */ + function alphaNum(value: any): boolean; + /** + * Checks if a number is in specified bounds. Min and max are both inclusive. + */ + function between(min: number, max: number): (value: any) => boolean; + /** + * Accepts valid email addresses. Keep in mind you still have to carefully verify it on your server, as it is impossible to tell if the address is real without sending verification email. + */ + function email(value: any): boolean; + /** + * Requires the input to have a maximum specified length, inclusive. Works with arrays. + */ + function maxLength(max: number): (value: any) => boolean; + /** + * Requires the input to have a minimum specified length, inclusive. Works with arrays. + */ + function minLength(min: number): (value: any) => boolean; + /** + * Requires non-empty data. Checks for empty arrays and strings containing only whitespaces. + */ + function required(value: any): boolean; + /** + * Checks for equality with a given property. Locator might be either a sibling property name or a function, that will get your component as this and nested model which sibling properties under second parameter. + */ + function sameAs(locator: string): (value: any, vm?: any) => boolean; + /** + * Passes when at least one of provided validators passes. + */ + function or(...validators: ValidationPredicate[]): () => boolean; + /** + * Passes when all of provided validators passes. + */ + function and(...validators: ValidationPredicate[]): () => boolean; +} \ No newline at end of file diff --git a/examples/typescript-vue/src/utils/filters.ts b/examples/typescript-vue/src/utils/filters.ts new file mode 100644 index 0000000000..9e99499e73 --- /dev/null +++ b/examples/typescript-vue/src/utils/filters.ts @@ -0,0 +1,28 @@ + +export const numberFilter = (value: number, format: number): number => { + return Number(value.toPrecision(format)); +} + +export const capitalize = (value: string): string => { + if (!value && typeof value !== 'string') { + return ''; + }; + let newValue = value.toString(); + return newValue.charAt(0).toUpperCase() + newValue.slice(1); +} + +export const uppercase = (value: string): string => { + if (!value && typeof value !== 'string') { + return ''; + }; + let newValue = value.toString(); + return newValue.toUpperCase(); +} + +export const lowercase = (value: string): string => { + if (!value && typeof value !== 'string') { + return ''; + }; + let newValue = value.toString(); + return newValue.toLowerCase(); +} \ No newline at end of file diff --git a/examples/typescript-vue/src/utils/methods.ts b/examples/typescript-vue/src/utils/methods.ts new file mode 100644 index 0000000000..44b2cf0768 --- /dev/null +++ b/examples/typescript-vue/src/utils/methods.ts @@ -0,0 +1,40 @@ +import $ from 'jquery'; + +export const timeout = (duration: number): Promise<{}> => { + return new Promise((resolve, reject) => { + setTimeout(() => {resolve()}, duration); + }) +}; + +export const calculatePopupPosition = (origin: HTMLElement, target: HTMLElement) => { + let $origin = $(origin); + let $target = $(target); + let originWidth: number = $origin.outerWidth(); + let originHeight: number = $origin.outerHeight(); + let viewportOffset = origin.getBoundingClientRect(); + let position = { + left: Math.round(viewportOffset.left), + top: Math.round(viewportOffset.top) + } + let popupWidth: number = $target.width(); + let outputLeft: number | string = position.left + originWidth / 2 - popupWidth / 2; + let outputTop: number | string = position.top + originHeight + 15 + "px"; + let outputBottom: number | string = 'auto'; + let windowWidth: number = $(window).width(); + + if ((outputLeft + popupWidth) > (windowWidth - 15)) { + outputLeft = windowWidth - popupWidth - 15 + "px"; + } else if ((outputLeft < 15) ) { + outputLeft = 15 + "px"; + } + if ((outputTop + 300) > $(window).height()){ + outputTop = 'auto'; + outputBottom = $(window).height() - position.top + 15 + "px"; + } + + return { + left: outputLeft, + top: outputTop , + bottom: outputBottom + } +} \ No newline at end of file diff --git a/examples/typescript-vue/src/utils/validators.ts b/examples/typescript-vue/src/utils/validators.ts new file mode 100644 index 0000000000..0199788937 --- /dev/null +++ b/examples/typescript-vue/src/utils/validators.ts @@ -0,0 +1,9 @@ +export namespace Validators { + const Regs = { + link: /(https?|ftp):\/\/(-\.)?([^\s/?\.#-]+\.?)+(\/[^\s]*)?$@iS/ + } + + export const LinkValidator = (value, component) => { + return Regs.link.test(value); + } +} \ No newline at end of file diff --git a/examples/typescript-vue/tsconfig.json b/examples/typescript-vue/tsconfig.json new file mode 100644 index 0000000000..a0d92ecb27 --- /dev/null +++ b/examples/typescript-vue/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "module": "es6", + "target": "es5", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "removeComments": true, + "noImplicitAny": false, + "pretty": true, + "lib": [ + "dom", + "es5", + "es2015", + "es2015.promise" + ], + "baseUrl": "./src", + "paths": { + "@src/*": ["./*"], + "@components": ["./components/index.ts"], + "@images/*": ["./assets/images/*"], + "@icons/*": ["./assets/icons/*"], + "@views": ["./components/views/index.ts"], + "@validators": ["./utils/validators.ts"], + "@methods": ["./utils/methods.ts"], + "@filters": ["./utils/filters.ts"], + "@types": ["./typings/index.ts"], + "@store": ["./store/index.ts"] + }, + "sourceMap": true, + "allowJs": true, + "skipLibCheck": true + }, + "exclude": [ + "typings/browser.d.ts", + "typings/browser", + "node_modules" + ], + "compileOnSave": true +} \ No newline at end of file diff --git a/examples/typescript-vue/webpack.config.js b/examples/typescript-vue/webpack.config.js new file mode 100644 index 0000000000..4e1a594ad0 --- /dev/null +++ b/examples/typescript-vue/webpack.config.js @@ -0,0 +1 @@ +module.exports = require("./config/webpack.config.dev"); \ No newline at end of file From d784bb6a30ff9a3c8292b12a0864de1224c183c2 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 28 Feb 2018 19:50:48 +0100 Subject: [PATCH 2/2] Typescript-Vue proposal --- examples/typescript-vue/.gitignore | 80 ------------------ examples/typescript-vue/Server.js | 2 +- .../config/webpack.config.dev.js | 2 +- .../dist/bundle.e4572c9934168f6fa43c.js | 1 + .../dist/bundle.e4572c9934168f6fa43c.js.gz | Bin 0 -> 3190 bytes ...undle.53ad82fb360e9e454ca4dd2c27c2f8cc.css | 1 + .../.cache | 1 + .../favicon-16x16.png | Bin 0 -> 485 bytes .../favicon-32x32.png | Bin 0 -> 902 bytes .../favicon.ico | Bin 0 -> 33310 bytes examples/typescript-vue/dist/images/logo.png | Bin 0 -> 6849 bytes examples/typescript-vue/dist/index.html | 1 + .../dist/manifest.e4572c9934168f6fa43c.js | 1 + .../dist/vendor.e4572c9934168f6fa43c.js | 30 +++++++ .../dist/vendor.e4572c9934168f6fa43c.js.gz | Bin 0 -> 32842 bytes examples/typescript-vue/package.json | 18 +--- 16 files changed, 39 insertions(+), 98 deletions(-) delete mode 100644 examples/typescript-vue/.gitignore create mode 100644 examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js create mode 100644 examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js.gz create mode 100644 examples/typescript-vue/dist/css/bundle.53ad82fb360e9e454ca4dd2c27c2f8cc.css create mode 100644 examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/.cache create mode 100644 examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon-16x16.png create mode 100644 examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon-32x32.png create mode 100644 examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon.ico create mode 100644 examples/typescript-vue/dist/images/logo.png create mode 100644 examples/typescript-vue/dist/index.html create mode 100644 examples/typescript-vue/dist/manifest.e4572c9934168f6fa43c.js create mode 100644 examples/typescript-vue/dist/vendor.e4572c9934168f6fa43c.js create mode 100644 examples/typescript-vue/dist/vendor.e4572c9934168f6fa43c.js.gz diff --git a/examples/typescript-vue/.gitignore b/examples/typescript-vue/.gitignore deleted file mode 100644 index 577366bc44..0000000000 --- a/examples/typescript-vue/.gitignore +++ /dev/null @@ -1,80 +0,0 @@ -/.web-server-pid -/app/config/parameters.yml -/build/ -/phpunit.xml -/var/* -!/var/cache -/var/cache/* -!var/cache/.gitkeep -!/var/logs -/var/logs/* -!var/logs/.gitkeep -!/var/sessions -/var/sessions/* -!var/sessions/.gitkeep -!var/SymfonyRequirements.php -/vendor/ -/web/bundles/ -/.idea/ - - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -dist - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - diff --git a/examples/typescript-vue/Server.js b/examples/typescript-vue/Server.js index 4053736252..c17b7f294c 100644 --- a/examples/typescript-vue/Server.js +++ b/examples/typescript-vue/Server.js @@ -4,7 +4,7 @@ const path = require('path'); const fs = require('fs') const app = express(); -const PORT = process.env.PORT || 5000; +const PORT = process.env.PORT || 7000; app.use(morgan('tiny')); diff --git a/examples/typescript-vue/config/webpack.config.dev.js b/examples/typescript-vue/config/webpack.config.dev.js index 044a4c7e6d..5058800970 100644 --- a/examples/typescript-vue/config/webpack.config.dev.js +++ b/examples/typescript-vue/config/webpack.config.dev.js @@ -58,7 +58,7 @@ const webpackDevConfig = { ], devServer: { contentBase: path.join(__dirname, "dist"), - port: 5000, + port: 7000, historyApiFallback: true, hot: true, quiet: true, diff --git a/examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js b/examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js new file mode 100644 index 0000000000..4af6d6aa8b --- /dev/null +++ b/examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js @@ -0,0 +1 @@ +webpackJsonp([1],{asJK:function(t,e){},x35b:function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=o("/5sW"),i=o("c+8m"),r=o.n(i),c=o("NYxO"),a={todos:[],visibility:"all",count:0},s={all:function(t){return t.todos},active:function(t){return t.todos.filter(function(t){return!t.completed})},completed:function(t){return t.todos.filter(function(t){return t.completed})},remaining:function(t,e){return e.active.length},filteredTodos:function(t,e){return e[t.visibility]}},l={addTodo:function(t,e){t.todos.push(e),t.count++},setVisibility:function(t,e){t.visibility=e},removeCompleted:function(t,e){e.getters;t.todos=t.todos.filter(function(t){return!t.completed})},setAll:function(t,e){t.todos.map(function(t){t.completed=e})},removeTodo:function(t,e){t.todos.splice(t.todos.indexOf(e),1)},editTodoMutation:function(t,e){e=t.todos.find(function(t){return e.id==t.id}),e.title=e.title.trim()}},d={addTodoAction:function(t,e){var o=t.state;(0,t.commit)("addTodo",{completed:!1,id:o.count,title:e})},editTodoAction:function(t,e){var o=(t.state,t.commit);o("editTodoMutation",e),e.title||o("removeTodo",e)},changeVisibility:function(t,e){var o=(t.state,t.commit);t.getters[e]?o("setVisibility",e):(window.location.hash="",o("setVisibility","all"))}},u={state:a,getters:s,mutations:l,actions:d,namespaced:!0};n.default.use(c.a);var p=new c.a.Store({modules:{TodoModule:u}}),f=o("ipus"),v=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])};return function(e,o){function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}}(),h=this&&this.__decorate||function(t,e,o,n){var i,r=arguments.length,c=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(t,e,o,n);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(c=(r<3?i(c):r>3?i(e,o,c):i(e,o))||c);return r>3&&c&&Object.defineProperty(e,o,c),c},_=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},y=Object(f.e)("TodoModule",f.a),m=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.newTodo="",e}return v(e,t),e.prototype.add=function(){this.newTodo.length&&(this.addTodoAction(this.newTodo.trim()),this.newTodo="")},h([y,_("design:type",Object)],e.prototype,"addTodoAction",void 0),e=h([r()({})],e)}(n.default),b=m,g=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("header",{staticClass:"header"},[o("h1",[t._v("todos")]),t._v(" "),o("input",{directives:[{name:"model",rawName:"v-model",value:t.newTodo,expression:"newTodo"}],staticClass:"new-todo",attrs:{autofocus:"",autocomplete:"off",placeholder:"What needs to be done?"},domProps:{value:t.newTodo},on:{keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"enter",13,e.key))return null;t.add(e)},input:function(e){e.target.composing||(t.newTodo=e.target.value)}}})])},O=[];g._withStripped=!0;var T={render:g,staticRenderFns:O},j=T,w=o("VU/8"),R=w(b,j,!1,null,null,null);R.options.__file="src/components/Header.vue";var C=R.exports,P=o("EOM2"),k=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])};return function(e,o){function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}}(),x=this&&this.__decorate||function(t,e,o,n){var i,r=arguments.length,c=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(t,e,o,n);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(c=(r<3?i(c):r>3?i(e,o,c):i(e,o))||c);return r>3&&c&&Object.defineProperty(e,o,c),c},A=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},S=Object(f.e)("TodoModule",f.c),D=Object(f.e)("TodoModule",f.a),E=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.beforeEdit="",e.editedTodo=null,e}return k(e,t),e.prototype.editTodo=function(t){this.beforeEdit=t.title,this.editedTodo=t},e.prototype.doneEdit=function(t){this.editedTodo&&(this.editedTodo=null,this.editTodoAction(t))},e.prototype.cancelEdit=function(t){this.todo.title=this.beforeEdit},x([Object(P.Prop)({required:!0}),A("design:type",Object)],e.prototype,"todo",void 0),x([S,A("design:type",Object)],e.prototype,"removeTodo",void 0),x([D,A("design:type",Object)],e.prototype,"editTodoAction",void 0),e=x([r()({components:{},directives:{"todo-focus":function(t,e){e.value&&t.focus()}}})],e)}(n.default),M=E,V=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("li",{staticClass:"todo",class:{completed:t.todo.completed,editing:t.todo==t.editedTodo}},[o("div",{staticClass:"view"},[o("input",{directives:[{name:"model",rawName:"v-model",value:t.todo.completed,expression:"todo.completed"}],staticClass:"toggle",attrs:{type:"checkbox"},domProps:{checked:Array.isArray(t.todo.completed)?t._i(t.todo.completed,null)>-1:t.todo.completed},on:{change:function(e){var o=t.todo.completed,n=e.target,i=!!n.checked;if(Array.isArray(o)){var r=t._i(o,null);n.checked?r<0&&(t.todo.completed=o.concat([null])):r>-1&&(t.todo.completed=o.slice(0,r).concat(o.slice(r+1)))}else t.$set(t.todo,"completed",i)}}}),t._v(" "),o("label",{on:{dblclick:function(e){t.editTodo(t.todo)}}},[t._v(t._s(t.todo.title))]),t._v(" "),o("button",{staticClass:"destroy",on:{click:function(e){t.removeTodo(t.todo)}}})]),t._v(" "),o("input",{directives:[{name:"model",rawName:"v-model",value:t.todo.title,expression:"todo.title"},{name:"todo-focus",rawName:"v-todo-focus",value:t.todo==t.editedTodo,expression:"todo == editedTodo"}],staticClass:"edit",attrs:{type:"text"},domProps:{value:t.todo.title},on:{blur:function(e){t.doneEdit(t.todo)},keyup:[function(e){if(!("button"in e)&&t._k(e.keyCode,"enter",13,e.key))return null;t.doneEdit(t.todo)},function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27,e.key))return null;t.cancelEdit(t.todo)}],input:function(e){e.target.composing||t.$set(t.todo,"title",e.target.value)}}})])},N=[];V._withStripped=!0;var $={render:V,staticRenderFns:N},F=$,H=o("VU/8"),U=H(M,F,!1,null,null,null);U.options.__file="src/components/TodoItem.vue";var L=U.exports,I=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])};return function(e,o){function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}}(),J=this&&this.__decorate||function(t,e,o,n){var i,r=arguments.length,c=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(t,e,o,n);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(c=(r<3?i(c):r>3?i(e,o,c):i(e,o))||c);return r>3&&c&&Object.defineProperty(e,o,c),c},W=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},z=Object(f.e)("TodoModule",f.b),K=Object(f.e)("TodoModule",f.c),q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return I(e,t),Object.defineProperty(e.prototype,"allDone",{get:function(){return 0===this.remaining},set:function(t){this.setAll(t)},enumerable:!0,configurable:!0}),J([Object(f.d)("TodoModule"),W("design:type",Object)],e.prototype,"TodoState",void 0),J([z,W("design:type",Object)],e.prototype,"filteredTodos",void 0),J([z,W("design:type",Object)],e.prototype,"remaining",void 0),J([K,W("design:type",Object)],e.prototype,"setAll",void 0),e=J([r()({components:{TodoItem:L}})],e)}(n.default),G=q,Y=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("section",{directives:[{name:"show",rawName:"v-show",value:t.TodoState.todos.length,expression:"TodoState.todos.length"}],staticClass:"main"},[o("input",{directives:[{name:"model",rawName:"v-model",value:t.allDone,expression:"allDone"}],staticClass:"toggle-all",attrs:{type:"checkbox"},domProps:{checked:Array.isArray(t.allDone)?t._i(t.allDone,null)>-1:t.allDone},on:{change:function(e){var o=t.allDone,n=e.target,i=!!n.checked;if(Array.isArray(o)){var r=t._i(o,null);n.checked?r<0&&(t.allDone=o.concat([null])):r>-1&&(t.allDone=o.slice(0,r).concat(o.slice(r+1)))}else t.allDone=i}}}),t._v(" "),o("ul",{staticClass:"todo-list"},t._l(t.filteredTodos,function(t){return o("TodoItem",{key:t.id,attrs:{todo:t}})}))])},B=[];Y._withStripped=!0;var Q={render:Y,staticRenderFns:B},X=Q,Z=o("VU/8"),tt=Z(G,X,!1,null,null,null);tt.options.__file="src/components/TodoList.vue";var et=tt.exports,ot=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])};return function(e,o){function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}}(),nt=this&&this.__decorate||function(t,e,o,n){var i,r=arguments.length,c=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(t,e,o,n);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(c=(r<3?i(c):r>3?i(e,o,c):i(e,o))||c);return r>3&&c&&Object.defineProperty(e,o,c),c},it=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},rt=Object(f.e)("TodoModule",f.b),ct=Object(f.e)("TodoModule",f.c),at=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return ot(e,t),nt([Object(f.d)("TodoModule"),it("design:type",Object)],e.prototype,"TodoState",void 0),nt([rt,it("design:type",Object)],e.prototype,"remaining",void 0),nt([ct,it("design:type",Object)],e.prototype,"removeCompleted",void 0),e=nt([r()({filters:{pluralize:function(t){return 1===t?"item":"items"}}})],e)}(n.default),st=at,lt=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("footer",{directives:[{name:"show",rawName:"v-show",value:t.TodoState.todos.length,expression:"TodoState.todos.length"}],staticClass:"footer"},[o("span",{staticClass:"todo-count"},[o("strong",[t._v(t._s(t.remaining))]),t._v(" "+t._s(t._f("pluralize")(t.remaining))+" left\n ")]),t._v(" "),o("ul",{staticClass:"filters"},[o("li",[o("a",{class:{selected:"all"==t.TodoState.visibility},attrs:{href:"#/all"}},[t._v("All")])]),t._v(" "),o("li",[o("a",{class:{selected:"active"==t.TodoState.visibility},attrs:{href:"#/active"}},[t._v("Active")])]),t._v(" "),o("li",[o("a",{class:{selected:"completed"==t.TodoState.visibility},attrs:{href:"#/completed"}},[t._v("Completed")])])]),t._v(" "),o("button",{directives:[{name:"show",rawName:"v-show",value:t.TodoState.todos.length>t.remaining,expression:"TodoState.todos.length > remaining"}],staticClass:"clear-completed",on:{click:t.removeCompleted}},[t._v("\n Clear completed\n ")])])},dt=[];lt._withStripped=!0;var ut={render:lt,staticRenderFns:dt},pt=ut,ft=o("VU/8"),vt=ft(st,pt,!1,null,null,null);vt.options.__file="src/components/Footer.vue";var ht=vt.exports,_t=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])};return function(e,o){function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}}(),yt=this&&this.__decorate||function(t,e,o,n){var i,r=arguments.length,c=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(t,e,o,n);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(c=(r<3?i(c):r>3?i(e,o,c):i(e,o))||c);return r>3&&c&&Object.defineProperty(e,o,c),c},mt=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},bt=Object(f.e)("TodoModule",f.a),gt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _t(e,t),e.prototype.mounted=function(){window.addEventListener("hashchange",this.onHashChange),this.onHashChange()},e.prototype.onHashChange=function(){var t=window.location.hash.replace(/#\/?/,"");this.changeVisibility(t)},yt([bt,mt("design:type",Object)],e.prototype,"changeVisibility",void 0),e=yt([r()({components:{Header:C,TodoList:et,Footer:ht},store:p})],e)}(n.default),Ot=gt,Tt=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{attrs:{id:"app"}},[o("section",{staticClass:"todoapp"},[o("Header"),t._v(" "),o("TodoList"),t._v(" "),o("Footer")],1),t._v(" "),t._m(0)])},jt=[function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("footer",{staticClass:"info"},[o("p",[t._v("Double-click to edit a todo")]),t._v(" "),o("p",[t._v("Written by "),o("a",{attrs:{href:"https://github.com/victorgarciaesgi"}},[t._v("Victor Garcia")])]),t._v(" "),o("p",[t._v("Part of "),o("a",{attrs:{href:"http://todomvc.com"}},[t._v("TodoMVC")])])])}];Tt._withStripped=!0;var wt={render:Tt,staticRenderFns:jt},Rt=wt,Ct=o("VU/8"),Pt=Ct(Ot,Rt,!1,null,null,null);Pt.options.__file="src/App.vue";var kt=Pt.exports;o("asJK"),(new kt).$mount("#app")}},["x35b"]); \ No newline at end of file diff --git a/examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js.gz b/examples/typescript-vue/dist/bundle.e4572c9934168f6fa43c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..550ee99ffd683b0776afd24c2f6d3c07893e8d25 GIT binary patch literal 3190 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 c=')}.todo-list li .toggle:checked:after{content:url('data:image/svg+xml;utf8,')}.todo-list li label{word-break:break-all;padding:15px 60px 15px 15px;margin-left:45px;display:block;line-height:1.2;-webkit-transition:color .4s;transition:color .4s}.todo-list li.completed label{color:#d9d9d9;text-decoration:line-through}.todo-list li .destroy{display:none;position:absolute;top:0;right:10px;bottom:0;width:40px;height:40px;margin:auto 0;font-size:30px;color:#cc9a9a;margin-bottom:11px;-webkit-transition:color .2s ease-out;transition:color .2s ease-out}.todo-list li .destroy:hover{color:#af5b5e}.todo-list li .destroy:after{content:"\D7"}.todo-list li:hover .destroy{display:block}.todo-list li .edit{display:none}.todo-list li.editing:last-child{margin-bottom:-1px}.footer{color:#777;padding:10px 15px;height:20px;text-align:center;border-top:1px solid #e6e6e6}.footer:before{content:"";position:absolute;right:0;bottom:0;left:0;height:50px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2)}.todo-count{float:left;text-align:left}.todo-count strong{font-weight:300}.filters{margin:0;padding:0;list-style:none;position:absolute;right:0;left:0}.filters li{display:inline}.filters li a{color:inherit;margin:3px;padding:3px 7px;text-decoration:none;border:1px solid transparent;border-radius:3px}.filters li a:hover{border-color:rgba(175,47,47,.1)}.filters li a.selected{border-color:rgba(175,47,47,.2)}.clear-completed,html .clear-completed:active{float:right;position:relative;line-height:20px;text-decoration:none;cursor:pointer}.clear-completed:hover{text-decoration:underline}.info{margin:65px auto 0;color:#bfbfbf;font-size:10px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);text-align:center}.info p{line-height:1}.info a{color:inherit;text-decoration:none;font-weight:400}.info a:hover{text-decoration:underline}@media screen and (-webkit-min-device-pixel-ratio:0){.todo-list li .toggle,.toggle-all{background:none}.todo-list li .toggle{height:40px}.toggle-all{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-appearance:none;-moz-appearance:none;appearance:none}}@media (max-width:430px){.footer{height:50px}.filters{bottom:10px}} \ No newline at end of file diff --git a/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/.cache b/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/.cache new file mode 100644 index 0000000000..db0434e76a --- /dev/null +++ b/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/.cache @@ -0,0 +1 @@ +{"hash":"82b9c7a5a3f405032b1db71a25f67021","version":"0.0.7","optionHash":"d088566a4222118ec0d6fd8e04862c78","result":{"outputFilePrefix":"icons-82b9c7a5a3f405032b1db71a25f67021/","html":["","",""],"files":["icons-82b9c7a5a3f405032b1db71a25f67021/favicon-16x16.png","icons-82b9c7a5a3f405032b1db71a25f67021/favicon-32x32.png","icons-82b9c7a5a3f405032b1db71a25f67021/favicon.ico"]}} \ No newline at end of file diff --git a/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon-16x16.png b/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..d2922595e5980d0f23f612219deae9a049e5e31b GIT binary patch literal 485 zcmV{>WT^0FCb5ozRSb!tqxc9|=Y#;Y5Mp_NhoKfi5S&}r zQGA3U8Q2C6F`QC>J3YZU_xc1*DZn}ewy`9Zj^YGZ!cupO;0kaB>Ryo{OFD`ZEQcZO zrv6Z_*Jgofp(JEE&QySV?Gn~o9mNfXxcqLJoCgS$KU?6JoF0N@MmUUUH}&W8quOQQ z4pM*=oD#gyQT&<_lJPcx4g(!vgE1sy=qT<2D-5jYDDE9}4^VL>k bp8x45aNlsQ8VJT>00000NkvXXu0mjfczM|^ literal 0 HcmV?d00001 diff --git a/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon-32x32.png b/examples/typescript-vue/dist/icons-82b9c7a5a3f405032b1db71a25f67021/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..40addb2fcba8257af3f6745fd6479031cc771f2b GIT binary patch literal 902 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.js + Typescript TodoMVC
Loading...
\ No newline at end of file diff --git a/examples/typescript-vue/dist/manifest.e4572c9934168f6fa43c.js b/examples/typescript-vue/dist/manifest.e4572c9934168f6fa43c.js new file mode 100644 index 0000000000..9018787d7e --- /dev/null +++ b/examples/typescript-vue/dist/manifest.e4572c9934168f6fa43c.js @@ -0,0 +1 @@ +!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,u){for(var a,i,f,l=0,s=[];l=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function h(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}function y(t,e){return vr.call(t,e)}function m(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function _(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 g(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function b(t,e){for(var n in e)t[n]=e[n];return t}function w(t){for(var e={},n=0;n0&&(a=mt(a,(e||"")+"_"+n),yt(a[0])&&yt(u)&&(f[c]=M(u.text+a[0].text),a.shift()),f.push.apply(f,a)):s(a)?yt(u)?f[c]=M(u.text+a):""!==a&&f.push(M(a)):yt(a)&&yt(u)?f[c]=M(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),f.push(a)));return f}function _t(t,e){return(t.__esModule||zr&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function gt(t,e,n,r,o){var i=Zr();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}function bt(t,e,n){if(i(t.error)&&o(t.errorComp))return t.errorComp;if(o(t.resolved))return t.resolved;if(i(t.loading)&&o(t.loadingComp))return t.loadingComp;if(!o(t.contexts)){var a=t.contexts=[n],s=!0,u=function(){for(var t=0,e=a.length;tAo&&go[n].id>t.id;)n--;go.splice(n+1,0,t)}else go.push(t);Oo||(Oo=!0,at(Ut))}}function Bt(t,e,n){ko.get=function(){return this[e][n]},ko.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ko)}function Ht(t){t._watchers=[];var e=t.$options;e.props&&zt(t,e.props),e.methods&&Yt(t,e.methods),e.data?Wt(t):N(t._data={},!0),e.computed&&Kt(t,e.computed),e.watch&&e.watch!==Ur&&Zt(t,e.watch)}function zt(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;no.shouldConvert=i;for(var a in e)!function(i){o.push(i);var a=Y(i,e,n,t);U(r,i,a),i in t||Bt(t,"_props",i)}(a);no.shouldConvert=!0}function Wt(t){var e=t.$options.data;e=t._data="function"==typeof e?Gt(e,t):e||{},u(e)||(e={});for(var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);o--;){var i=n[o];r&&y(r,i)||$(i)||Bt(t,"_data",i)}N(e,!0)}function Gt(t,e){try{return t.call(e,e)}catch(t){return et(t,e,"data()"),{}}}function Kt(t,e){var n=t._computedWatchers=Object.create(null),r=Br();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;r||(n[o]=new $o(t,a||O,O,Eo)),o in t||qt(t,o,i)}}function qt(t,e,n){var r=!Br();"function"==typeof n?(ko.get=r?Jt(e):n,ko.set=O):(ko.get=n.get?r&&!1!==n.cache?Jt(e):n.get:O,ko.set=n.set?n.set:O),Object.defineProperty(t,e,ko)}function Jt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),Kr.target&&e.depend(),e.value}}function Yt(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?O:_(e[n],t)}function Zt(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o=0||n.indexOf(t[o])<0)&&r.push(t[o]);return r}return t}function Te(t){this._init(t)}function Se(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=g(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}function Me(t){t.mixin=function(t){return this.options=q(this.options,t),this}}function Ie(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=q(n.options,t),a.super=n,a.options.props&&Pe(a),a.options.computed&&Le(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,Ar.forEach(function(t){a[t]=n[t]}),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=b({},a.options),o[r]=a,a}}function Pe(t){var e=t.options.props;for(var n in e)Bt(t.prototype,"_props",n)}function Le(t){var e=t.options.computed;for(var n in e)qt(t.prototype,n,e[n])}function De(t){Ar.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function Ne(t){return t&&(t.Ctor.options.name||t.tag)}function Ue(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Re(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=Ne(a.componentOptions);s&&!e(s)&&Xe(n,i,r,o)}}}function Xe(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,v(n,e)}function Fe(t){for(var e=t.data,n=t,r=t;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Ve(r.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Ve(e,n.data));return Be(e.staticClass,e.class)}function Ve(t,e){return{staticClass:He(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Be(t,e){return o(t)||o(e)?He(t,ze(e)):""}function He(t,e){return t?e?t+" "+e:t:e||""}function ze(t){return Array.isArray(t)?We(t):c(t)?Ge(t):"string"==typeof t?t:""}function We(t){for(var e,n="",r=0,i=t.length;r-1?Zo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Zo[t]=/HTMLUnknownElement/.test(e.toString())}function Je(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Ye(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Ze(t,e){return document.createElementNS(Ko[t],e)}function Qe(t){return document.createTextNode(t)}function tn(t){return document.createComment(t)}function en(t,e,n){t.insertBefore(e,n)}function nn(t,e){t.removeChild(e)}function rn(t,e){t.appendChild(e)}function on(t){return t.parentNode}function an(t){return t.nextSibling}function sn(t){return t.tagName}function cn(t,e){t.textContent=e}function un(t,e,n){t.setAttribute(e,n)}function fn(t,e){var n=t.data.ref;if(n){var r=t.context,o=t.componentInstance||t.elm,i=r.$refs;e?Array.isArray(i[n])?v(i[n],o):i[n]===o&&(i[n]=void 0):t.data.refInFor?Array.isArray(i[n])?i[n].indexOf(o)<0&&i[n].push(o):i[n]=[o]:i[n]=o}}function ln(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&pn(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function pn(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||Qo(r)&&Qo(i)}function dn(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function hn(t,e){(t.data.directives||e.data.directives)&&vn(t,e)}function vn(t,e){var n,r,o,i=t===ni,a=e===ni,s=yn(t.data.directives,t.context),c=yn(e.data.directives,e.context),u=[],f=[];for(n in c)r=s[n],o=c[n],r?(o.oldValue=r.value,_n(o,"update",e,t),o.def&&o.def.componentUpdated&&f.push(o)):(_n(o,"bind",e,t),o.def&&o.def.inserted&&u.push(o));if(u.length){var l=function(){for(var n=0;n-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 Dn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Nn(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&b(e,bi(t.name||"v")),b(e,t),e}return"string"==typeof t?bi(t):void 0}}function Un(t){Ei(function(){Ei(t)})}function Rn(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Ln(t,e))}function Xn(t,e){t._transitionClasses&&v(t._transitionClasses,e),Dn(t,e)}function Fn(t,e,n){var r=Vn(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Oi?xi:ki,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=Oi,f=a,l=i.length):e===Ci?u>0&&(n=Ci,f=u,l=c.length):(f=Math.max(a,u),n=f>0?a>u?Oi:Ci:null,l=n?n===Oi?i.length:c.length:0),{type:n,timeout:f,propCount:l,hasTransform:n===Oi&&ji.test(r[Ai+"Property"])}}function Bn(t,e){for(;t.length1}function qn(t,e){!0!==e.data.show&&zn(e)}function Jn(t,e,n){Yn(t,e,n),(Ir||Lr)&&setTimeout(function(){Yn(t,e,n)},0)}function Yn(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(C(Qn(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Zn(t,e){return e.every(function(e){return!C(e,t)})}function Qn(t){return"_value"in t?t._value:t.value}function tr(t){t.target.composing=!0}function er(t){t.target.composing&&(t.target.composing=!1,nr(t.target,"input"))}function nr(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function rr(t){return!t.componentInstance||t.data&&t.data.transition?t:rr(t.componentInstance._vnode)}function or(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?or(Ot(e.children)):t}function ir(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[mr(i)]=o[i];return e}function ar(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function sr(t){for(;t=t.parent;)if(t.data.transition)return!0}function cr(t,e){return e.key===t.key&&e.tag===t.tag}function ur(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function fr(t){t.data.newPos=t.elm.getBoundingClientRect()}function lr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}/*! + * Vue.js v2.5.13 + * (c) 2014-2017 Evan You + * Released under the MIT License. + */ +var pr=Object.freeze({}),dr=Object.prototype.toString,hr=(h("slot,component",!0),h("key,ref,slot,slot-scope,is")),vr=Object.prototype.hasOwnProperty,yr=/-(\w)/g,mr=m(function(t){return t.replace(yr,function(t,e){return e?e.toUpperCase():""})}),_r=m(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),gr=/\B([A-Z])/g,br=m(function(t){return t.replace(gr,"-$1").toLowerCase()}),wr=function(t,e,n){return!1},Or=function(t){return t},Cr="data-server-rendered",Ar=["component","directive","filter"],xr=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],$r={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:wr,isReservedAttr:wr,isUnknownElement:wr,getTagNamespace:O,parsePlatformTagName:Or,mustUseProp:wr,_lifecycleHooks:xr},kr=/[^\w.$]/,Er="__proto__"in{},jr="undefined"!=typeof window,Tr="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,Sr=Tr&&WXEnvironment.platform.toLowerCase(),Mr=jr&&window.navigator.userAgent.toLowerCase(),Ir=Mr&&/msie|trident/.test(Mr),Pr=Mr&&Mr.indexOf("msie 9.0")>0,Lr=Mr&&Mr.indexOf("edge/")>0,Dr=Mr&&Mr.indexOf("android")>0||"android"===Sr,Nr=Mr&&/iphone|ipad|ipod|ios/.test(Mr)||"ios"===Sr,Ur=(Mr&&/chrome\/\d+/.test(Mr),{}.watch),Rr=!1;if(jr)try{var Xr={};Object.defineProperty(Xr,"passive",{get:function(){Rr=!0}}),window.addEventListener("test-passive",null,Xr)}catch(t){}var Fr,Vr,Br=function(){return void 0===Fr&&(Fr=!jr&&void 0!==t&&"server"===t.process.env.VUE_ENV),Fr},Hr=jr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,zr="undefined"!=typeof Symbol&&j(Symbol)&&"undefined"!=typeof Reflect&&j(Reflect.ownKeys);Vr="undefined"!=typeof Set&&j(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var Wr=O,Gr=0,Kr=function(){this.id=Gr++,this.subs=[]};Kr.prototype.addSub=function(t){this.subs.push(t)},Kr.prototype.removeSub=function(t){v(this.subs,t)},Kr.prototype.depend=function(){Kr.target&&Kr.target.addDep(this)},Kr.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e1?g(n):n;for(var r=g(arguments,1),o=0,i=n.length;oparseInt(this.max)&&Xe(c,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Do={KeepAlive:Lo};!function(t){var e={};e.get=function(){return $r},Object.defineProperty(t,"config",e),t.util={warn:Wr,extend:b,mergeOptions:q,defineReactive:U},t.set=R,t.delete=X,t.nextTick=at,t.options=Object.create(null),Ar.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,b(t.options.components,Do),Se(t),Me(t),Ie(t),De(t)}(Te),Object.defineProperty(Te.prototype,"$isServer",{get:Br}),Object.defineProperty(Te.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Te.version="2.5.13";var No,Uo,Ro=h("style,class"),Xo=h("input,textarea,option,select,progress"),Fo=function(t,e,n){return"value"===n&&Xo(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Vo=h("contenteditable,draggable,spellcheck"),Bo=h("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Ho="http://www.w3.org/1999/xlink",zo=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Wo=function(t){return zo(t)?t.slice(6,t.length):""},Go=function(t){return null==t||!1===t},Ko={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},qo=h("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Jo=h("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Yo=function(t){return qo(t)||Jo(t)},Zo=Object.create(null),Qo=h("text,number,password,search,email,tel,url"),ti=Object.freeze({createElement:Ye,createElementNS:Ze,createTextNode:Qe,createComment:tn,insertBefore:en,removeChild:nn,appendChild:rn,parentNode:on,nextSibling:an,tagName:sn,setTextContent:cn,setAttribute:un}),ei={create:function(t,e){fn(e)},update:function(t,e){t.data.ref!==e.data.ref&&(fn(t,!0),fn(e))},destroy:function(t){fn(t,!0)}},ni=new Jr("",{},[]),ri=["create","activate","update","remove","destroy"],oi={create:hn,update:hn,destroy:function(t){hn(t,ni)}},ii=Object.create(null),ai=[ei,oi],si={create:gn,update:gn},ci={create:wn,update:wn},ui="__r",fi="__c",li={create:$n,update:$n},pi={create:kn,update:kn},di=m(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}),hi=/^--/,vi=/\s*!important$/,yi=function(t,e,n){if(hi.test(e))t.style.setProperty(e,n);else if(vi.test(n))t.style.setProperty(e,n.replace(vi,""),"important");else{var r=_i(e);if(Array.isArray(n))for(var o=0,i=n.length;oh?(l=r(n[m+1])?null:n[m+1].elm,_(t,l,n,d,m,i)):d>m&&b(t,e,p,h)}function C(t,e,n,r){for(var i=n;i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n("mypn"),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(e,n("DuR2"))},DuR2:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},EOM2:function(t,e,n){!function(t,r){r(e,n("/5sW"),n("c+8m"),n("I8yv"))}(0,function(t,e,n){"use strict";function r(t){return n.createDecorator(function(e,n){void 0===e.inject&&(e.inject={}),Array.isArray(e.inject)||(e.inject[n]=t||n)})}function o(t){return n.createDecorator(function(e,n){var r=e.provide;if("function"!=typeof r||!r.managed){var o=e.provide;r=e.provide=function(){var t=Object.create(("function"==typeof o?o.call(this):o)||null);for(var e in r.managed)t[r.managed[e]]=this[e];return t},r.managed={}}r.managed[n]=t||n})}function i(t,e){return void 0===e&&(e={}),function(r,o){Array.isArray(e)||void 0!==e.type||(e.type=Reflect.getMetadata("design:type",r,o)),n.createDecorator(function(n,r){(n.props||(n.props={}))[r]=e,n.model={prop:r,event:t||r}})(r,o)}}function a(t){return void 0===t&&(t={}),function(e,r){Array.isArray(t)||void 0!==t.type||(t.type=Reflect.getMetadata("design:type",e,r)),n.createDecorator(function(e,n){(e.props||(e.props={}))[n]=t})(e,r)}}function s(t,e){void 0===e&&(e={});var r=e.deep,o=void 0!==r&&r,i=e.immediate,a=void 0!==i&&i;return n.createDecorator(function(e,n){"object"!=typeof e.watch&&(e.watch=Object.create(null)),e.watch[t]={handler:n,deep:o,immediate:a}})}function c(t){return function(e,n,r){n=l(n);var o=r.value;r.value=function(){for(var e=[],r=0;r0)return!0;var o=nt.get(e);return o.delete(n),o.size>0||(nt.delete(e),!0)}function p(t,e){for(var n=t.length-1;n>=0;--n){var r=t[n],o=r(e);if(!C(o)&&!A(o)){if(!P(o))throw new TypeError;e=o}}return e}function d(t,e,n,r){for(var o=t.length-1;o>=0;--o){var i=t[o],a=i(e,n,r);if(!C(a)&&!A(a)){if(!$(a))throw new TypeError;r=a}}return r}function h(t,e,n){var r=nt.get(t);if(C(r)){if(!n)return;r=new Q,nt.set(t,r)}var o=r.get(e);if(C(o)){if(!n)return;o=new Q,r.set(e,o)}return o}function v(t,e,n){if(y(t,e,n))return!0;var r=F(e);return!A(r)&&v(t,r,n)}function y(t,e,n){var r=h(e,n,!1);return!C(r)&&j(r.has(t))}function m(t,e,n){if(y(t,e,n))return _(t,e,n);var r=F(e);return A(r)?void 0:m(t,r,n)}function _(t,e,n){var r=h(e,n,!1);if(!C(r))return r.get(t)}function g(t,e,n,r){h(n,r,!0).set(t,e)}function b(t,e){var n=w(t,e),r=F(t);if(null===r)return n;var o=b(r,e);if(o.length<=0)return n;if(n.length<=0)return o;for(var i=new tt,a=[],s=0,c=n;s=0&&t=this._keys.length?(this._index=-1,this._keys=o,this._values=o):this._index++,{value:e,done:!1}}return{value:void 0,done:!0}},t.prototype.throw=function(t){throw this._index>=0&&(this._index=-1,this._keys=o,this._values=o),t},t.prototype.return=function(t){return this._index>=0&&(this._index=-1,this._keys=o,this._values=o),{value:t,done:!0}},t}();return function(){function o(){this._keys=[],this._values=[],this._cacheKey=r,this._cacheIndex=-2}return Object.defineProperty(o.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),o.prototype.has=function(t){return this._find(t,!1)>=0},o.prototype.get=function(t){var e=this._find(t,!1);return e>=0?this._values[e]:void 0},o.prototype.set=function(t,e){var n=this._find(t,!0);return this._values[n]=e,this},o.prototype.delete=function(t){var e=this._find(t,!1);if(e>=0){for(var n=this._keys.length,o=e+1;o=0&&g.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",u(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",u(e,t.attrs),i(t,e),e}function u(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function f(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var u=_++;n=m||(m=s(e)),r=l.bind(null,n,u,!1),o=l.bind(null,n,u,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),r=d.bind(null,n,e),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),r=p.bind(null,n),o=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}function l(t,e,n,r){var o=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=w(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function p(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute("media",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function d(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=b(r)),o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var h={},v=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),y=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),m=null,_=0,g=[],b=n("mJPh");t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=v()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=o(t,e);return r(n,e),function(t){for(var i=[],a=0;a-1&&e.splice(n,1)}}function u(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;l(t,n,[],t._modules.root,!0),f(t,n,e)}function f(t,e,n){var r=t._vm;t.getters={};var i=t._wrappedGetters,a={};o(i,function(e,n){a[n]=function(){return e(t)},Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})});var s=j.config.silent;j.config.silent=!0,t._vm=new j({data:{$$state:e},computed:a}),j.config.silent=s,t.strict&&m(t),r&&(n&&t._withCommit(function(){r._data.$$state=null}),j.nextTick(function(){return r.$destroy()}))}function l(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a]=r),!i&&!o){var s=_(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit(function(){j.set(s,c,r.state)})}var u=r.context=p(t,a,n);r.forEachMutation(function(e,n){h(t,a+n,e,u)}),r.forEachAction(function(e,n){var r=e.root?n:a+n,o=e.handler||e;v(t,r,o,u)}),r.forEachGetter(function(e,n){y(t,a+n,e,u)}),r.forEachChild(function(r,i){l(t,e,n.concat(i),r,o)})}function p(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=g(n,r,o),a=i.payload,s=i.options,c=i.type;return s&&s.root||(c=e+c),t.dispatch(c,a)},commit:r?t.commit:function(n,r,o){var i=g(n,r,o),a=i.payload,s=i.options,c=i.type;s&&s.root||(c=e+c),t.commit(c,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return d(t,e)}},state:{get:function(){return _(t.state,n)}}}),o}function d(t,e){var n={},r=e.length;return Object.keys(t.getters).forEach(function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}}),n}function h(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push(function(e){n.call(t,r.state,e)})}function v(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push(function(e,o){var i=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e,o);return a(i)||(i=Promise.resolve(i)),t._devtoolHook?i.catch(function(e){throw t._devtoolHook.emit("vuex:error",e),e}):i})}function y(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function m(t){t._vm.$watch(function(){return this._data.$$state},function(){},{deep:!0,sync:!0})}function _(t,e){return e.length?e.reduce(function(t,e){return t[e]},t):t}function g(t,e,n){return i(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function b(t){j&&t===j||(j=t,A(j))}function w(t){return Array.isArray(t)?t.map(function(t){return{key:t,val:t}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}})}function O(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function C(t,e,n){return t._modulesNamespaceMap[n]}n.d(e,"e",function(){return M}),n.d(e,"d",function(){return I}),n.d(e,"c",function(){return P}),n.d(e,"b",function(){return L});/** + * vuex v3.0.1 + * (c) 2017 Evan You + * @license MIT + */ +var A=function(t){function e(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}if(Number(t.version.split(".")[0])>=2)t.mixin({beforeCreate:e});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[e].concat(t.init):e,n.call(this,t)}}},x="undefined"!=typeof window&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,$=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},k={namespaced:{configurable:!0}};k.namespaced.get=function(){return!!this._rawModule.namespaced},$.prototype.addChild=function(t,e){this._children[t]=e},$.prototype.removeChild=function(t){delete this._children[t]},$.prototype.getChild=function(t){return this._children[t]},$.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},$.prototype.forEachChild=function(t){o(this._children,t)},$.prototype.forEachGetter=function(t){this._rawModule.getters&&o(this._rawModule.getters,t)},$.prototype.forEachAction=function(t){this._rawModule.actions&&o(this._rawModule.actions,t)},$.prototype.forEachMutation=function(t){this._rawModule.mutations&&o(this._rawModule.mutations,t)},Object.defineProperties($.prototype,k);var E=function(t){this.register([],t,!1)};E.prototype.get=function(t){return t.reduce(function(t,e){return t.getChild(e)},this.root)},E.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")},"")},E.prototype.update=function(t){s([],this.root,t)},E.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var i=new $(e,n);if(0===t.length)this.root=i;else{this.get(t.slice(0,-1)).addChild(t[t.length-1],i)}e.modules&&o(e.modules,function(e,o){r.register(t.concat(o),e,n)})},E.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var j,T=function(t){var e=this;void 0===t&&(t={}),!j&&"undefined"!=typeof window&&window.Vue&&b(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var o=t.strict;void 0===o&&(o=!1);var i=t.state;void 0===i&&(i={}),"function"==typeof i&&(i=i()||{}),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new E(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new j;var a=this,s=this,c=s.dispatch,u=s.commit;this.dispatch=function(t,e){return c.call(a,t,e)},this.commit=function(t,e,n){return u.call(a,t,e,n)},this.strict=o,l(this,i,[],this._modules.root),f(this,i),n.forEach(function(t){return t(e)}),j.config.devtools&&r(this)},S={state:{configurable:!0}};S.state.get=function(){return this._vm._data.$$state},S.state.set=function(t){},T.prototype.commit=function(t,e,n){var r=this,o=g(t,e,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),c=this._mutations[i];c&&(this._withCommit(function(){c.forEach(function(t){t(a)})}),this._subscribers.forEach(function(t){return t(s,r.state)}))},T.prototype.dispatch=function(t,e){var n=this,r=g(t,e),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s)return this._actionSubscribers.forEach(function(t){return t(a,n.state)}),s.length>1?Promise.all(s.map(function(t){return t(i)})):s[0](i)},T.prototype.subscribe=function(t){return c(t,this._subscribers)},T.prototype.subscribeAction=function(t){return c(t,this._actionSubscribers)},T.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch(function(){return t(r.state,r.getters)},e,n)},T.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._vm._data.$$state=t})},T.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),l(this,this.state,t,this._modules.get(t),n.preserveState),f(this,this.state)},T.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var n=_(e.state,t.slice(0,-1));j.delete(n,t[t.length-1])}),u(this)},T.prototype.hotUpdate=function(t){this._modules.update(t),u(this,!0)},T.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(T.prototype,S);var M=O(function(t,e){var n={};return w(e).forEach(function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=C(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0}),n}),I=O(function(t,e){var n={};return w(e).forEach(function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=C(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}}),n}),P=O(function(t,e){var n={};return w(e).forEach(function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||C(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0}),n}),L=O(function(t,e){var n={};return w(e).forEach(function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=C(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}}),n}),D=function(t){return{mapState:M.bind(null,t),mapGetters:P.bind(null,t),mapMutations:I.bind(null,t),mapActions:L.bind(null,t)}},N={Store:T,install:b,version:"3.0.1",mapState:M,mapMutations:I,mapGetters:P,mapActions:L,createNamespacedHelpers:D};e.a=N},"VU/8":function(t,e){t.exports=function(t,e,n,r,o,i){var a,s=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(a=t,s=t.default);var u="function"==typeof s?s.options:s;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=o);var f;if(i?(f=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},u._ssrRegister=f):r&&(f=r),f){var l=u.functional,p=l?u.render:u.beforeCreate;l?(u._injectStyles=f,u.render=function(t,e){return f.call(e),p(t,e)}):u.beforeCreate=p?[].concat(p,f):[f]}return{esModule:a,exports:s,options:u}}},W2nU:function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(t){if(f===setTimeout)return setTimeout(t,0);if((f===n||!f)&&setTimeout)return f=setTimeout,setTimeout(t,0);try{return f(t,0)}catch(e){try{return f.call(null,t,0)}catch(e){return f.call(this,t,0)}}}function i(t){if(l===clearTimeout)return clearTimeout(t);if((l===r||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(t);try{return l(t)}catch(e){try{return l.call(null,t)}catch(e){return l.call(this,t)}}}function a(){v&&d&&(v=!1,d.length?h=d.concat(h):y=-1,h.length&&s())}function s(){if(!v){var t=o(a);v=!0;for(var e=h.length;e;){for(d=h,h=[];++y1)for(var n=1;n-1)return void(e[t]=n[t]);var r=Object.getOwnPropertyDescriptor(n,t);"function"==typeof r.value?(e.methods||(e.methods={}))[t]=r.value:(r.get||r.set)&&((e.computed||(e.computed={}))[t]={get:r.get,set:r.set})}}),(e.mixins||(e.mixins=[])).push({data:function(){return i(this,t)}});var r=t.__decorators__;r&&(r.forEach(function(t){return t(e)}),delete t.__decorators__);var o=Object.getPrototypeOf(t.prototype),a=o instanceof u?o.constructor:u,c=a.extend(e);return s(c,t,a),c}function s(t,e,n){Object.getOwnPropertyNames(e).forEach(function(r){if("prototype"!==r){var i=Object.getOwnPropertyDescriptor(t,r);if(!i||i.configurable){var a=Object.getOwnPropertyDescriptor(e,r);if(!f){if("cid"===r)return;var s=Object.getOwnPropertyDescriptor(n,r);if(!o(a.value)&&s&&s.value===a.value)return}Object.defineProperty(t,r,a)}}})}function c(t){return"function"==typeof t?a(t):function(e){return a(e,t)}}/** + * vue-class-component v6.1.2 + * (c) 2015-2017 Evan You + * @license MIT + */ +Object.defineProperty(e,"__esModule",{value:!0});var u=function(t){return t&&"object"==typeof t&&"default"in t?t.default:t}(n("/5sW")),f={__proto__:[]}instanceof Array,l=["data","beforeCreate","created","beforeMount","mounted","beforeDestroy","destroyed","beforeUpdate","updated","activated","deactivated","render","errorCaptured"];!function(t){function e(t){l.push.apply(l,t)}t.registerHooks=e}(c||(c={}));var p=c;e.default=p,e.createDecorator=r},ipus:function(t,e,n){"use strict";function r(t,e){function n(n,r){if("string"==typeof r){var o=r,i=n;return e(o,{namespace:t})(i,o)}var s=n,c=a(r||{},{namespace:t});return e(s,c)}return n}function o(t,e){function n(n,r){return Object(s.createDecorator)(function(o,i){o[t]||(o[t]={});var a=(s={},s[i]=n,s);o[t][i]=void 0!==r?e(r,a)[i]:e(a)[i];var s})}function r(t,e){if("string"==typeof e){var r=e,o=t;return n(r,void 0)(o,r)}return n(t,i(e))}return r}function i(t){var e=t&&t.namespace;if("string"==typeof e)return"/"!==e[e.length-1]?e+"/":e}function a(t,e){var n={};return[t,e].forEach(function(t){Object.keys(t).forEach(function(e){n[e]=t[e]})}),n}var s=n("c+8m"),c=n("NYxO"),u=o("computed",c.e),f=o("computed",c.c),l=o("methods",c.b),p=o("methods",c.d);n.d(e,"d",function(){return u}),n.d(e,"b",function(){return f}),n.d(e,"a",function(){return l}),n.d(e,"c",function(){return p}),n.d(e,"e",function(){return r})},mJPh:function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var n=e.protocol+"//"+e.host,r=n+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(t,e){var o=e.trim().replace(/^"(.*)"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(o))return t;var i;return i=0===o.indexOf("//")?o:0===o.indexOf("/")?n+o:r+o.replace(/^\.\//,""),"url("+JSON.stringify(i)+")"})}},mypn:function(t,e,n){(function(t,e){!function(t,n){"use strict";function r(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),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", - "license": "MIT", "scripts": { "dev": "webpack-dev-server --inline --progress", "server:prod": "cross-env NODE_ENV=production nodemon Server.js", - "prod": "concurrently --kill-others \"cross-env NODE_ENV=production npm run clean && npm run build:prod\" \"npm run server:prod\"", + "prod": "npm run clean && npm run build:prod && npm run server:prod", "clean": "rimraf dist", "build:prod": "webpack --display-entrypoints --config config/webpack.config.prod.js --progress" }, "dependencies": { - "axios": "^0.16.2", - "jquery": "^3.2.1", - "jwt-decode": "^2.2.0", - "lodash": "^4.17.4", "todomvc-app-css": "^2.1.0", "vue": "2.5.13", "vue-class-component": "6.1.2", "vue-property-decorator": "6.0.0", - "vue-router": "3.0.1", - "vuelidate": "^0.6.1", "vuex": "3.0.1", "vuex-class": "0.3.0", - "vuex-router-sync": "5.0.0", "webpack-merge": "^4.1.1" }, "devDependencies": { - "@types/axios": "^0.14.0", - "@types/express": "^4.0.37", "@types/lodash": "^4.14.76", "@types/node": "^8.0.30", "@types/vue": "^2.0.0", - "@types/vue-resource": "^0.9.33", - "@types/vue-router": "^2.0.0", "autoprefixer": "^7.1.5", "base64-inline-loader": "^1.1.0", "compression-webpack-plugin": "^1.0.1",