expressa 2.0.16 → 2.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.circleci/config.yml +21 -21
  2. package/.eslintrc.json +29 -29
  3. package/LICENSE +21 -21
  4. package/README.md +137 -137
  5. package/auth/index.js +76 -76
  6. package/auth/jwt.js +31 -31
  7. package/controllers/collections.js +260 -258
  8. package/controllers/install.js +105 -105
  9. package/controllers/status.js +43 -43
  10. package/controllers/users.js +52 -52
  11. package/cypress/fixtures/example.json +4 -4
  12. package/cypress/integration/0_install_spec.js +8 -8
  13. package/cypress/integration/custom_collections.js +28 -28
  14. package/cypress/integration/home.js +9 -9
  15. package/cypress/integration/settings.js +34 -34
  16. package/cypress/integration/users.js +61 -61
  17. package/cypress/plugins/index.js +17 -17
  18. package/cypress/screenshots/users.js/User Management -- Can log in as non-admin, but cannot create users (failed).png +0 -0
  19. package/cypress/support/commands.js +54 -54
  20. package/cypress/support/index.js +20 -20
  21. package/cypress/support/util.js +10 -10
  22. package/cypress.json +4 -4
  23. package/db/cached.js +40 -40
  24. package/db/file.js +112 -112
  25. package/db/memory.js +79 -79
  26. package/db/mongo.js +86 -86
  27. package/db/postgres.js +93 -93
  28. package/doc/authentication.md +38 -38
  29. package/doc/automatic-fields.md +12 -12
  30. package/doc/blogexample.md +16 -16
  31. package/doc/custom-endpoints.md +20 -20
  32. package/doc/database.md +23 -23
  33. package/doc/development.md +33 -33
  34. package/doc/listeners.md +103 -103
  35. package/doc/modules.md +8 -8
  36. package/doc/permissions.md +14 -14
  37. package/doc/relationships.md +65 -65
  38. package/doc/testing.md +47 -47
  39. package/doc/uploading-files.md +53 -53
  40. package/index.js +297 -297
  41. package/listeners.js +65 -65
  42. package/listeners_collection_permissions.js +29 -29
  43. package/listeners_users.js +96 -96
  44. package/listeners_validation.js +43 -43
  45. package/middleware/logging.js +30 -30
  46. package/middleware/permissions.js +41 -41
  47. package/modules/access_keys/access_keys.js +32 -32
  48. package/modules/admin/.babelrc +20 -12
  49. package/modules/admin/.editorconfig +14 -14
  50. package/modules/admin/.eslintignore +5 -5
  51. package/modules/admin/.eslintrc.js +197 -197
  52. package/modules/admin/.postcssrc.js +10 -10
  53. package/modules/admin/.travis.yml +5 -5
  54. package/modules/admin/LICENSE +21 -21
  55. package/modules/admin/README.md +88 -88
  56. package/modules/admin/build/build.js +45 -45
  57. package/modules/admin/build/check-versions.js +64 -64
  58. package/modules/admin/build/utils.js +108 -108
  59. package/modules/admin/build/vue-loader.conf.js +5 -5
  60. package/modules/admin/build/webpack.base.conf.js +112 -108
  61. package/modules/admin/build/webpack.dev.conf.js +95 -95
  62. package/modules/admin/build/webpack.prod.conf.js +112 -171
  63. package/modules/admin/config/dev.env.js +8 -8
  64. package/modules/admin/config/index.js +86 -86
  65. package/modules/admin/config/prod.env.js +5 -5
  66. package/modules/admin/dist/favicon.ico +0 -0
  67. package/modules/admin/dist/index.html +1 -0
  68. package/modules/admin/dist/index.html.gz +0 -0
  69. package/modules/admin/dist/static/css/app.9dd57eea.css +1 -0
  70. package/modules/admin/dist/static/css/app.9dd57eea.css.gz +0 -0
  71. package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css +1 -0
  72. package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css.gz +0 -0
  73. package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css +1 -0
  74. package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css.gz +0 -0
  75. package/modules/admin/dist/static/css/chunk-621e.b826be8d.css +1 -0
  76. package/modules/admin/dist/static/css/chunk-621e.b826be8d.css.gz +0 -0
  77. package/modules/admin/dist/static/css/chunk-656b.9c828b00.css +1 -0
  78. package/modules/admin/dist/static/css/chunk-656b.9c828b00.css.gz +0 -0
  79. package/modules/admin/dist/static/css/chunk-7291.13514e45.css +0 -0
  80. package/modules/admin/dist/static/css/chunk-7291.13514e45.css.gz +0 -0
  81. package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css +1 -0
  82. package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css.gz +0 -0
  83. package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css +1 -0
  84. package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css.gz +0 -0
  85. package/modules/admin/dist/static/css/chunk-b423.5f239333.css +0 -0
  86. package/modules/admin/dist/static/css/chunk-b423.5f239333.css.gz +0 -0
  87. package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css +1 -0
  88. package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css.gz +0 -0
  89. package/modules/admin/dist/static/css/chunk-e374.025d58bb.css +1 -0
  90. package/modules/admin/dist/static/css/chunk-e374.025d58bb.css.gz +0 -0
  91. package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css +1 -0
  92. package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css.gz +0 -0
  93. package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css +1 -0
  94. package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css.gz +0 -0
  95. package/modules/admin/dist/static/css/chunk-libs.327ad89e.css +14 -0
  96. package/modules/admin/dist/static/css/chunk-libs.327ad89e.css.gz +0 -0
  97. package/modules/admin/dist/static/fonts/element-icons.6f0a763.ttf +0 -0
  98. package/modules/admin/dist/static/img/404.a57b6f3.png +0 -0
  99. package/modules/admin/dist/static/js/app.e9461593.js +1 -0
  100. package/modules/admin/dist/static/js/app.e9461593.js.gz +0 -0
  101. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js +2 -0
  102. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt +13 -0
  103. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt.gz +0 -0
  104. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.gz +0 -0
  105. package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js +1 -0
  106. package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js.gz +0 -0
  107. package/modules/admin/dist/static/js/chunk-5b97.ac360086.js +1 -0
  108. package/modules/admin/dist/static/js/chunk-5b97.ac360086.js.gz +0 -0
  109. package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js +1 -0
  110. package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js.gz +0 -0
  111. package/modules/admin/dist/static/js/chunk-621e.ccf42393.js +1 -0
  112. package/modules/admin/dist/static/js/chunk-621e.ccf42393.js.gz +0 -0
  113. package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js +1 -0
  114. package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js.gz +0 -0
  115. package/modules/admin/dist/static/js/chunk-7291.590524e9.js +1 -0
  116. package/modules/admin/dist/static/js/chunk-7291.590524e9.js.gz +0 -0
  117. package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js +1 -0
  118. package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js.gz +0 -0
  119. package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js +1 -0
  120. package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js.gz +0 -0
  121. package/modules/admin/dist/static/js/chunk-b423.387c504c.js +1 -0
  122. package/modules/admin/dist/static/js/chunk-b423.387c504c.js.gz +0 -0
  123. package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js +1 -0
  124. package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js.gz +0 -0
  125. package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js +1 -0
  126. package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js.gz +0 -0
  127. package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js +1 -0
  128. package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js.gz +0 -0
  129. package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js +1 -0
  130. package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js.gz +0 -0
  131. package/modules/admin/dist/static/js/chunk-f075.315ceec1.js +1 -0
  132. package/modules/admin/dist/static/js/chunk-f075.315ceec1.js.gz +0 -0
  133. package/modules/admin/dist/static/js/chunk-libs.06c38828.js +2 -0
  134. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt +126 -0
  135. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt.gz +0 -0
  136. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.gz +0 -0
  137. package/modules/admin/index.html +16 -16
  138. package/modules/admin/package.json +101 -98
  139. package/modules/admin/src/App.vue +11 -11
  140. package/modules/admin/src/api/login.js +26 -26
  141. package/modules/admin/src/api/table.js +9 -9
  142. package/modules/admin/src/components/Breadcrumb/index.vue +79 -79
  143. package/modules/admin/src/components/Hamburger/index.vue +62 -62
  144. package/modules/admin/src/components/JSONEditor.vue +180 -180
  145. package/modules/admin/src/components/SvgIcon/index.vue +43 -43
  146. package/modules/admin/src/icons/index.js +9 -9
  147. package/modules/admin/src/icons/svgo.yml +22 -22
  148. package/modules/admin/src/main.js +42 -41
  149. package/modules/admin/src/permission.js +49 -49
  150. package/modules/admin/src/router/index.js +200 -200
  151. package/modules/admin/src/store/getters.js +11 -11
  152. package/modules/admin/src/store/index.js +17 -17
  153. package/modules/admin/src/store/modules/app.js +43 -43
  154. package/modules/admin/src/store/modules/user.js +104 -104
  155. package/modules/admin/src/styles/element-ui.scss +29 -29
  156. package/modules/admin/src/styles/index.scss +78 -78
  157. package/modules/admin/src/styles/mixin.scss +27 -27
  158. package/modules/admin/src/styles/sidebar.scss +133 -133
  159. package/modules/admin/src/styles/transition.scss +46 -46
  160. package/modules/admin/src/styles/variables.scss +4 -4
  161. package/modules/admin/src/utils/auth.js +15 -15
  162. package/modules/admin/src/utils/index.js +74 -74
  163. package/modules/admin/src/utils/request.js +48 -48
  164. package/modules/admin/src/utils/validate.js +31 -31
  165. package/modules/admin/src/views/404.vue +235 -235
  166. package/modules/admin/src/views/Dev.vue +33 -33
  167. package/modules/admin/src/views/EditDocument.vue +116 -116
  168. package/modules/admin/src/views/Endpoints.vue +279 -279
  169. package/modules/admin/src/views/Home.vue +84 -84
  170. package/modules/admin/src/views/Install.vue +79 -79
  171. package/modules/admin/src/views/ListDocuments.vue +72 -72
  172. package/modules/admin/src/views/ListDocuments2.vue +462 -462
  173. package/modules/admin/src/views/ManageListeners.vue +67 -67
  174. package/modules/admin/src/views/ManageMiddleware.vue +43 -43
  175. package/modules/admin/src/views/ManagePermissions.vue +75 -75
  176. package/modules/admin/src/views/ViewRequest.vue +77 -77
  177. package/modules/admin/src/views/form/index.vue +91 -91
  178. package/modules/admin/src/views/layout/Layout.vue +69 -69
  179. package/modules/admin/src/views/layout/components/AppMain.vue +41 -41
  180. package/modules/admin/src/views/layout/components/Navbar.vue +97 -97
  181. package/modules/admin/src/views/layout/components/Sidebar/Item.vue +29 -29
  182. package/modules/admin/src/views/layout/components/Sidebar/Link.vue +39 -39
  183. package/modules/admin/src/views/layout/components/Sidebar/SidebarItem.vue +103 -103
  184. package/modules/admin/src/views/layout/components/Sidebar/index.vue +62 -62
  185. package/modules/admin/src/views/layout/components/index.js +3 -3
  186. package/modules/admin/src/views/layout/mixin/ResizeHandler.js +41 -41
  187. package/modules/admin/src/views/login/index.vue +195 -195
  188. package/modules/admin/src/views/tree/index.vue +77 -77
  189. package/modules/collections/collections.js +39 -39
  190. package/modules/core/core.js +197 -197
  191. package/modules/logging/logging.js +88 -88
  192. package/modules/permissions/permissions.js +106 -106
  193. package/package.json +59 -59
  194. package/scripts/expressa +12 -12
  195. package/scripts/run_cypress_tests.sh +5 -5
  196. package/scripts/run_db_tests.sh +8 -8
  197. package/test/0-install.js +96 -96
  198. package/test/collections.js +431 -431
  199. package/test/collections.querying.js +288 -289
  200. package/test/db.js +258 -258
  201. package/test/db.strings.js +73 -73
  202. package/test/db.updating.js +144 -144
  203. package/test/logging.js +29 -29
  204. package/test/test.js +93 -94
  205. package/test/testserver.js +17 -17
  206. package/test/testutils.js +136 -136
  207. package/test/users.js +425 -425
  208. package/util.js +522 -522
@@ -1,171 +1,112 @@
1
- 'use strict'
2
- const path = require('path')
3
- const utils = require('./utils')
4
- const webpack = require('webpack')
5
- const config = require('../config')
6
- const merge = require('webpack-merge')
7
- const baseWebpackConfig = require('./webpack.base.conf')
8
- const CopyWebpackPlugin = require('copy-webpack-plugin')
9
- const HtmlWebpackPlugin = require('html-webpack-plugin')
10
- const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
11
- const MiniCssExtractPlugin = require('mini-css-extract-plugin')
12
- const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
13
- const TerserPlugin = require('terser-webpack-plugin');
14
-
15
- function resolve(dir) {
16
- return path.join(__dirname, '..', dir)
17
- }
18
-
19
- const env = require('../config/prod.env')
20
-
21
- // For NamedChunksPlugin
22
- const seen = new Set()
23
- const nameLength = 4
24
-
25
- const webpackConfig = merge(baseWebpackConfig, {
26
- mode: 'production',
27
- module: {
28
- rules: utils.styleLoaders({
29
- sourceMap: config.build.productionSourceMap,
30
- extract: true,
31
- usePostCSS: true
32
- })
33
- },
34
- devtool: config.build.productionSourceMap ? config.build.devtool : false,
35
- output: {
36
- path: config.build.assetsRoot,
37
- filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
38
- chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
39
- },
40
- plugins: [
41
- // http://vuejs.github.io/vue-loader/en/workflow/production.html
42
- new webpack.DefinePlugin({
43
- 'process.env': env
44
- }),
45
- // extract css into its own file
46
- new MiniCssExtractPlugin({
47
- filename: utils.assetsPath('css/[name].[contenthash:8].css'),
48
- chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
49
- }),
50
- // generate dist index.html with correct asset hash for caching.
51
- // you can customize output by editing /index.html
52
- // see https://github.com/ampedandwired/html-webpack-plugin
53
- new HtmlWebpackPlugin({
54
- filename: config.build.index,
55
- template: 'index.html',
56
- inject: true,
57
- favicon: resolve('favicon.ico'),
58
- title: 'vue-admin-template',
59
- minify: {
60
- removeComments: true,
61
- collapseWhitespace: true,
62
- removeAttributeQuotes: true
63
- // more options:
64
- // https://github.com/kangax/html-minifier#options-quick-reference
65
- }
66
- // default sort mode uses toposort which cannot handle cyclic deps
67
- // in certain cases, and in webpack 4, chunk order in HTML doesn't
68
- // matter anyway
69
- }),
70
- new ScriptExtHtmlWebpackPlugin({
71
- //`runtime` must same as runtimeChunk name. default is `runtime`
72
- inline: /runtime\..*\.js$/
73
- }),
74
- // keep chunk.id stable when chunk has no name
75
- new webpack.NamedChunksPlugin(chunk => {
76
- if (chunk.name) {
77
- return chunk.name
78
- }
79
- const modules = Array.from(chunk.modulesIterable)
80
- if (modules.length > 1) {
81
- const hash = require('hash-sum')
82
- const joinedHash = hash(modules.map(m => m.id).join('_'))
83
- let len = nameLength
84
- while (seen.has(joinedHash.substr(0, len))) len++
85
- seen.add(joinedHash.substr(0, len))
86
- return `chunk-${joinedHash.substr(0, len)}`
87
- } else {
88
- return modules[0].id
89
- }
90
- }),
91
- // keep module.id stable when vender modules does not change
92
- new webpack.HashedModuleIdsPlugin(),
93
- // copy custom static assets
94
- new CopyWebpackPlugin([
95
- {
96
- from: path.resolve(__dirname, '../static'),
97
- to: config.build.assetsSubDirectory,
98
- ignore: ['.*']
99
- }
100
- ])
101
- ],
102
- optimization: {
103
- splitChunks: {
104
- chunks: 'all',
105
- cacheGroups: {
106
- libs: {
107
- name: 'chunk-libs',
108
- test: /[\\/]node_modules[\\/]/,
109
- priority: 10,
110
- chunks: 'initial' // 只打包初始时依赖的第三方
111
- },
112
- elementUI: {
113
- name: 'chunk-elementUI', // 单独将 elementUI 拆包
114
- priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
115
- test: /[\\/]node_modules[\\/]element-ui[\\/]/
116
- }
117
- }
118
- },
119
- runtimeChunk: 'single',
120
- minimizer: [
121
- new TerserPlugin(),
122
- // Compress extracted CSS. We are using this plugin so that possible
123
- // duplicated CSS from different components can be deduped.
124
- new OptimizeCSSAssetsPlugin()
125
- ]
126
- }
127
- })
128
-
129
- if (config.build.productionGzip) {
130
- const CompressionWebpackPlugin = require('compression-webpack-plugin')
131
-
132
- webpackConfig.plugins.push(
133
- new CompressionWebpackPlugin({
134
- filename: '[path][base].gz',
135
- algorithm: 'gzip',
136
- test: new RegExp(
137
- '\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
138
- ),
139
- compressionOptions: {
140
- level: 9,
141
- },
142
- minRatio: Infinity,
143
- })
144
- )
145
- }
146
-
147
- if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
148
- const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
149
- .BundleAnalyzerPlugin
150
-
151
- if (config.build.bundleAnalyzerReport) {
152
- webpackConfig.plugins.push(
153
- new BundleAnalyzerPlugin({
154
- analyzerPort: 8080,
155
- generateStatsFile: false
156
- })
157
- )
158
- }
159
-
160
- if (config.build.generateAnalyzerReport) {
161
- webpackConfig.plugins.push(
162
- new BundleAnalyzerPlugin({
163
- analyzerMode: 'static',
164
- reportFilename: 'bundle-report.html',
165
- openAnalyzer: false
166
- })
167
- )
168
- }
169
- }
170
-
171
- module.exports = webpackConfig
1
+ 'use strict'
2
+ const path = require('path')
3
+ const utils = require('./utils')
4
+ const webpack = require('webpack')
5
+ const config = require('../config')
6
+ const merge = require('webpack-merge')
7
+ const baseWebpackConfig = require('./webpack.base.conf')
8
+ const CopyWebpackPlugin = require('copy-webpack-plugin')
9
+ const HtmlWebpackPlugin = require('html-webpack-plugin')
10
+ const MiniCssExtractPlugin = require('mini-css-extract-plugin')
11
+ const TerserPlugin = require('terser-webpack-plugin');
12
+
13
+ function resolve(dir) {
14
+ return path.join(__dirname, '..', dir)
15
+ }
16
+
17
+ const env = require('../config/prod.env')
18
+
19
+ const webpackConfig = merge(baseWebpackConfig, {
20
+ mode: 'production',
21
+ module: {
22
+ rules: utils.styleLoaders({
23
+ sourceMap: config.build.productionSourceMap,
24
+ extract: true,
25
+ usePostCSS: true
26
+ })
27
+ },
28
+ devtool: config.build.productionSourceMap ? config.build.devtool : false,
29
+ output: {
30
+ path: config.build.assetsRoot,
31
+ filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
32
+ chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
33
+ },
34
+ plugins: [
35
+ // http://vuejs.github.io/vue-loader/en/workflow/production.html
36
+ new webpack.DefinePlugin({
37
+ 'process.env': env
38
+ }),
39
+ // generate dist index.html with correct asset hash for caching.
40
+ // you can customize output by editing /index.html
41
+ // see https://github.com/ampedandwired/html-webpack-plugin
42
+ new HtmlWebpackPlugin({
43
+ filename: config.build.index,
44
+ template: 'index.html',
45
+ inject: true,
46
+ favicon: resolve('favicon.ico'),
47
+ title: 'vue-admin-template',
48
+ minify: {
49
+ removeComments: true,
50
+ collapseWhitespace: true,
51
+ removeAttributeQuotes: true
52
+ // more options:
53
+ // https://github.com/kangax/html-minifier#options-quick-reference
54
+ }
55
+ // default sort mode uses toposort which cannot handle cyclic deps
56
+ // in certain cases, and in webpack 4, chunk order in HTML doesn't
57
+ // matter anyway
58
+ }),
59
+ // copy custom static assets
60
+ new CopyWebpackPlugin([
61
+ {
62
+ from: path.resolve(__dirname, '../static'),
63
+ to: config.build.assetsSubDirectory,
64
+ ignore: ['.*']
65
+ }
66
+ ])
67
+ ],
68
+ })
69
+
70
+ if (config.build.productionGzip) {
71
+ const CompressionWebpackPlugin = require('compression-webpack-plugin')
72
+
73
+ webpackConfig.plugins.push(
74
+ new CompressionWebpackPlugin({
75
+ filename: '[path][base].gz',
76
+ algorithm: 'gzip',
77
+ test: new RegExp(
78
+ '\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
79
+ ),
80
+ compressionOptions: {
81
+ level: 9,
82
+ },
83
+ minRatio: Infinity,
84
+ })
85
+ )
86
+ }
87
+
88
+ if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
89
+ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
90
+ .BundleAnalyzerPlugin
91
+
92
+ if (config.build.bundleAnalyzerReport) {
93
+ webpackConfig.plugins.push(
94
+ new BundleAnalyzerPlugin({
95
+ analyzerPort: 8080,
96
+ generateStatsFile: false
97
+ })
98
+ )
99
+ }
100
+
101
+ if (config.build.generateAnalyzerReport) {
102
+ webpackConfig.plugins.push(
103
+ new BundleAnalyzerPlugin({
104
+ analyzerMode: 'static',
105
+ reportFilename: 'bundle-report.html',
106
+ openAnalyzer: false
107
+ })
108
+ )
109
+ }
110
+ }
111
+
112
+ module.exports = webpackConfig
@@ -1,8 +1,8 @@
1
- 'use strict'
2
- const merge = require('webpack-merge')
3
- const prodEnv = require('./prod.env')
4
-
5
- module.exports = merge(prodEnv, {
6
- NODE_ENV: '"development"',
7
- BASE_API: '"http://localhost:3000/api"',
8
- })
1
+ 'use strict'
2
+ const merge = require('webpack-merge')
3
+ const prodEnv = require('./prod.env')
4
+
5
+ module.exports = merge(prodEnv, {
6
+ NODE_ENV: '"development"',
7
+ BASE_API: '"http://localhost:3000/api"',
8
+ })
@@ -1,86 +1,86 @@
1
- 'use strict'
2
- // Template version: 1.2.6
3
- // see http://vuejs-templates.github.io/webpack for documentation.
4
-
5
- const path = require('path')
6
-
7
- module.exports = {
8
- dev: {
9
- // Paths
10
- assetsSubDirectory: 'static',
11
- assetsPublicPath: '/',
12
- proxyTable: {},
13
-
14
- // Various Dev Server settings
15
- host: 'localhost', // can be overwritten by process.env.HOST
16
- port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
17
- autoOpenBrowser: true,
18
- errorOverlay: true,
19
- notifyOnErrors: false,
20
- poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
21
-
22
- // Use Eslint Loader?
23
- // If true, your code will be linted during bundling and
24
- // linting errors and warnings will be shown in the console.
25
- useEslint: true,
26
- // If true, eslint errors and warnings will also be shown in the error overlay
27
- // in the browser.
28
- showEslintErrorsInOverlay: false,
29
-
30
- /**
31
- * Source Maps
32
- */
33
-
34
- // https://webpack.js.org/configuration/devtool/#development
35
- devtool: 'cheap-source-map',
36
-
37
- // CSS Sourcemaps off by default because relative paths are "buggy"
38
- // with this option, according to the CSS-Loader README
39
- // (https://github.com/webpack/css-loader#sourcemaps)
40
- // In our experience, they generally work as expected,
41
- // just be aware of this issue when enabling this option.
42
- cssSourceMap: false
43
- },
44
-
45
- build: {
46
- // Template for index.html
47
- index: path.resolve(__dirname, '../dist/index.html'),
48
-
49
- // Paths
50
- assetsRoot: path.resolve(__dirname, '../dist'),
51
- assetsSubDirectory: 'static',
52
-
53
- /**
54
- * You can set by youself according to actual condition
55
- * You will need to set this if you plan to deploy your site under a sub path,
56
- * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
57
- * then assetsPublicPath should be set to "/bar/".
58
- * In most cases please use '/' !!!
59
- */
60
- assetsPublicPath: '/admin/',
61
-
62
- /**
63
- * Source Maps
64
- */
65
-
66
- productionSourceMap: false,
67
- // https://webpack.js.org/configuration/devtool/#production
68
- devtool: 'source-map',
69
-
70
- // Gzip off by default as many popular static hosts such as
71
- // Surge or Netlify already gzip all static assets for you.
72
- // Before setting to `true`, make sure to:
73
- // npm install --save-dev compression-webpack-plugin
74
- productionGzip: true,
75
- productionGzipExtensions: ['json','js','js.map','css','html','svg','xml','txt'],
76
-
77
- // Run the build command with an extra argument to
78
- // View the bundle analyzer report after build finishes:
79
- // `npm run build --report`
80
- // Set to `true` or `false` to always turn it on or off
81
- bundleAnalyzerReport: process.env.npm_config_report || false,
82
-
83
- // `npm run build:prod --generate_report`
84
- generateAnalyzerReport: process.env.npm_config_generate_report || false
85
- }
86
- }
1
+ 'use strict'
2
+ // Template version: 1.2.6
3
+ // see http://vuejs-templates.github.io/webpack for documentation.
4
+
5
+ const path = require('path')
6
+
7
+ module.exports = {
8
+ dev: {
9
+ // Paths
10
+ assetsSubDirectory: 'static',
11
+ assetsPublicPath: '/',
12
+ proxyTable: {},
13
+
14
+ // Various Dev Server settings
15
+ host: 'localhost', // can be overwritten by process.env.HOST
16
+ port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
17
+ autoOpenBrowser: true,
18
+ errorOverlay: true,
19
+ notifyOnErrors: false,
20
+ poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
21
+
22
+ // Use Eslint Loader?
23
+ // If true, your code will be linted during bundling and
24
+ // linting errors and warnings will be shown in the console.
25
+ useEslint: true,
26
+ // If true, eslint errors and warnings will also be shown in the error overlay
27
+ // in the browser.
28
+ showEslintErrorsInOverlay: false,
29
+
30
+ /**
31
+ * Source Maps
32
+ */
33
+
34
+ // https://webpack.js.org/configuration/devtool/#development
35
+ devtool: 'cheap-source-map',
36
+
37
+ // CSS Sourcemaps off by default because relative paths are "buggy"
38
+ // with this option, according to the CSS-Loader README
39
+ // (https://github.com/webpack/css-loader#sourcemaps)
40
+ // In our experience, they generally work as expected,
41
+ // just be aware of this issue when enabling this option.
42
+ cssSourceMap: false
43
+ },
44
+
45
+ build: {
46
+ // Template for index.html
47
+ index: path.resolve(__dirname, '../dist/index.html'),
48
+
49
+ // Paths
50
+ assetsRoot: path.resolve(__dirname, '../dist'),
51
+ assetsSubDirectory: 'static',
52
+
53
+ /**
54
+ * You can set by youself according to actual condition
55
+ * You will need to set this if you plan to deploy your site under a sub path,
56
+ * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
57
+ * then assetsPublicPath should be set to "/bar/".
58
+ * In most cases please use '/' !!!
59
+ */
60
+ assetsPublicPath: '/admin/',
61
+
62
+ /**
63
+ * Source Maps
64
+ */
65
+
66
+ productionSourceMap: false,
67
+ // https://webpack.js.org/configuration/devtool/#production
68
+ devtool: 'source-map',
69
+
70
+ // Gzip off by default as many popular static hosts such as
71
+ // Surge or Netlify already gzip all static assets for you.
72
+ // Before setting to `true`, make sure to:
73
+ // npm install --save-dev compression-webpack-plugin
74
+ productionGzip: true,
75
+ productionGzipExtensions: ['json','js','js.map','css','html','svg','xml','txt'],
76
+
77
+ // Run the build command with an extra argument to
78
+ // View the bundle analyzer report after build finishes:
79
+ // `npm run build --report`
80
+ // Set to `true` or `false` to always turn it on or off
81
+ bundleAnalyzerReport: process.env.npm_config_report || false,
82
+
83
+ // `npm run build:prod --generate_report`
84
+ generateAnalyzerReport: process.env.npm_config_generate_report || false
85
+ }
86
+ }
@@ -1,5 +1,5 @@
1
- 'use strict'
2
- module.exports = {
3
- NODE_ENV: '"production"',
4
- BASE_API: '"/api"',
5
- }
1
+ 'use strict'
2
+ module.exports = {
3
+ NODE_ENV: '"production"',
4
+ BASE_API: '"/api"',
5
+ }
Binary file
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><script crossorigin src=https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js></script><script crossorigin src=https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js></script><link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel=stylesheet><script src=settings.js></script><title>Expressa Admin</title><link rel=icon href=/admin/favicon.ico><link href=/admin/static/css/chunk-elementUI.3d004d9f.css rel=stylesheet><link href=/admin/static/css/chunk-libs.327ad89e.css rel=stylesheet><link href=/admin/static/css/app.9dd57eea.css rel=stylesheet></head><body><div id=app></div><script>!function(e){function n(n){for(var r,c,a=n[0],f=n[1],i=n[2],h=0,d=[];h<a.length;h++)c=a[h],Object.prototype.hasOwnProperty.call(u,c)&&u[c]&&d.push(u[c][0]),u[c]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);for(l&&l(n);d.length;)d.shift()();return o.push.apply(o,i||[]),t()}function t(){for(var e,n=0;n<o.length;n++){for(var t=o[n],r=!0,c=1;c<t.length;c++){var f=t[c];0!==u[f]&&(r=!1)}r&&(o.splice(n--,1),e=a(a.s=t[0]))}return e}var r={},c={runtime:0},u={runtime:0},o=[];function a(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var n=[];c[e]?n.push(c[e]):0!==c[e]&&{"chunk-621e":1,"chunk-e374":1,"chunk-5061":1,"chunk-5b97":1,"chunk-656b":1,"chunk-7291":1,"chunk-7f29":1,"chunk-9a95":1,"chunk-b423":1,"chunk-bd5f":1,"chunk-f075":1}[e]&&n.push(c[e]=new Promise((function(n,t){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-09d8":"31d6cfe0","chunk-621e":"b826be8d","chunk-e374":"025d58bb","chunk-5061":"ce0e4bdb","chunk-5b97":"7f9cb53e","chunk-5e17":"31d6cfe0","chunk-656b":"9c828b00","chunk-7291":"13514e45","chunk-7f29":"9c828b00","chunk-9a95":"c647a2ef","chunk-b423":"5f239333","chunk-bd5f":"aefa49d7","chunk-e7c3":"31d6cfe0","chunk-f075":"3a895a1e"}[e]+".css",c=a.p+r,u=document.getElementsByTagName("link"),o=0;o<u.length;o++){var f=(h=u[o]).getAttribute("data-href")||h.getAttribute("href");if("stylesheet"===h.rel&&(f===r||f===c))return n()}var i=document.getElementsByTagName("style");for(o=0;o<i.length;o++){var h;if((f=(h=i[o]).getAttribute("data-href"))===r||f===c)return n()}var l=document.createElement("link");l.rel="stylesheet",l.type="text/css",l.onload=n,l.onerror=function(n){var r=n&&n.target&&n.target.src||c,u=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");u.request=r,t(u)},l.href=c,document.getElementsByTagName("head")[0].appendChild(l)})).then((function(){c[e]=0})));var t=u[e];if(0!==t)if(t)n.push(t[2]);else{var r=new Promise((function(n,r){t=u[e]=[n,r]}));n.push(t[2]=r);var o,f=document.createElement("script");f.charset="utf-8",f.timeout=120,a.nc&&f.setAttribute("nonce",a.nc),f.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{"chunk-09d8":"561880e0","chunk-621e":"ccf42393","chunk-e374":"7c87a0dd","chunk-5061":"83e6ccfa","chunk-5b97":"ac360086","chunk-5e17":"a2b69611","chunk-656b":"9d5b03c0","chunk-7291":"590524e9","chunk-7f29":"6ffc142e","chunk-9a95":"bdd76583","chunk-b423":"387c504c","chunk-bd5f":"e9509f10","chunk-e7c3":"e5df8ceb","chunk-f075":"315ceec1"}[e]+".js"}(e);var i=new Error;o=function(n){f.onerror=f.onload=null,clearTimeout(h);var t=u[e];if(0!==t){if(t){var r=n&&("load"===n.type?"missing":n.type),c=n&&n.target&&n.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",i.name="ChunkLoadError",i.type=r,i.request=c,t[1](i)}u[e]=void 0}};var h=setTimeout((function(){o({type:"timeout",target:f})}),12e4);f.onerror=f.onload=o,document.head.appendChild(f)}return Promise.all(n)},a.m=e,a.c=r,a.d=function(e,n,t){a.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,n){if(1&n&&(e=a(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)a.d(t,r,function(n){return e[n]}.bind(null,r));return t},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="/admin/",a.oe=function(e){throw console.error(e),e};var f=window.webpackJsonp=window.webpackJsonp||[],i=f.push.bind(f);f.push=n,f=f.slice();for(var h=0;h<f.length;h++)n(f[h]);var l=i;t()}([]);</script><script src=/admin/static/js/chunk-elementUI.b0c99c08.js></script><script src=/admin/static/js/chunk-libs.06c38828.js></script><script src=/admin/static/js/app.e9461593.js></script></body></html>
Binary file
@@ -0,0 +1 @@
1
+ .fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:180px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:180px!important;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:1001;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .scrollbar-wrapper .el-scrollbar__view{height:100%}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .hideSidebar .sidebar-container{width:36px!important}#app .hideSidebar .main-container{margin-left:36px}#app .hideSidebar .submenu-title-noDropdown{padding-left:10px!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0 10px!important}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding-left:10px!important}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:180px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .el-menu--collapse .el-menu .el-submenu{min-width:180px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:180px!important}#app .mobile.hideSidebar .sidebar-container{-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-180px,0,0);transform:translate3d(-180px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}a,a:active,a:focus,a:hover,div:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.app-main{min-height:100%}.app-container{padding:20px}.app-breadcrumb.el-breadcrumb[data-v-721dc8c4]{display:inline-block;font-size:14px;line-height:50px;margin-left:10px}.app-breadcrumb.el-breadcrumb .no-redirect[data-v-721dc8c4]{color:#97a8be;cursor:text}.hamburger[data-v-18b41ae9]{display:inline-block;cursor:pointer;width:20px;height:20px;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-transition:.38s;transition:.38s;-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.hamburger.is-active[data-v-18b41ae9]{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.navbar2[data-v-24a9ff24]{height:50px;line-height:50px;border-radius:0!important}.navbar2 .hamburger-container[data-v-24a9ff24]{line-height:58px;height:50px;float:left;padding:0 10px}.navbar2 .screenfull[data-v-24a9ff24]{position:absolute;right:90px;top:16px;color:red}.navbar2 .avatar-container[data-v-24a9ff24]{height:50px;display:inline-block;position:absolute;right:35px}.navbar2 .avatar-container .avatar-wrapper[data-v-24a9ff24]{cursor:pointer;margin-top:5px;position:relative;line-height:normal}.navbar2 .avatar-container .avatar-wrapper .user-avatar[data-v-24a9ff24]{width:40px;height:40px;border-radius:10px}.navbar2 .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-24a9ff24]{position:absolute;right:-20px;top:25px;font-size:12px}.app-main[data-v-58225820]{min-height:calc(100vh - 50px);position:relative;overflow:hidden}.app-wrapper[data-v-c895cf98]{position:relative;height:100%;width:100%}.app-wrapper[data-v-c895cf98]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-c895cf98]{position:fixed;top:0}.drawer-bg[data-v-c895cf98]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.svg-icon[data-v-75db6a7e]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}
@@ -0,0 +1 @@
1
+ .login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#eee;height:47px}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #2d3a4b inset!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container[data-v-f6d732ac]{position:fixed;height:100%;width:100%;background-color:#2d3a4b}.login-container .login-form[data-v-f6d732ac]{position:absolute;left:0;right:0;width:520px;max-width:100%;padding:35px 35px 15px;margin:120px auto}.login-container .tips[data-v-f6d732ac]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-f6d732ac]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-f6d732ac]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title[data-v-f6d732ac]{font-size:26px;font-weight:400;color:#eee;margin:0 auto 40px;text-align:center;font-weight:700}.login-container .show-pwd[data-v-f6d732ac]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
@@ -0,0 +1 @@
1
+ .el-table[data-v-568a7a58] th{background-color:#343a40!important;border-color:#454d55;color:#fff}.dashboard-container[data-v-5d163182]{margin:30px}.dashboard-text[data-v-5d163182]{font-size:30px;line-height:46px}a#settings-link[data-v-5d163182]{color:#35a;padding-left:25px}
@@ -0,0 +1 @@
1
+ .expandable-textarea{display:block;min-height:250px;min-width:250px;resize:both!important}.jsoneditor-vue img{border:1px solid #ddd;border-radius:4px;padding:5px;width:150px}.jsoneditor-vue img:hover{-webkit-box-shadow:0 0 2px 1px rgba(0,140,186,.5);box-shadow:0 0 2px 1px rgba(0,140,186,.5)}.jsoneditor-vue button.btn{font-size:14px!important;padding:3px}.jsoneditor-vue .form-control-label,label{font-weight:700}.jsoneditor-vue input[type=checkbox]{margin-right:5px;margin-top:3px}.error-message[data-v-3c5b79e9]{color:red}
@@ -0,0 +1 @@
1
+ .el-table[data-v-568a7a58] th{background-color:#343a40!important;border-color:#454d55;color:#fff}
@@ -0,0 +1 @@
1
+ .el-table[data-v-568a7a58] th{background-color:#343a40!important;border-color:#454d55;color:#fff}
@@ -0,0 +1 @@
1
+ .side-panel[data-v-c8717050]{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}
@@ -0,0 +1 @@
1
+ .wscn-http404-container[data-v-5ea65912]{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;top:40%;left:50%}.wscn-http404[data-v-5ea65912]{position:relative;width:1200px;padding:0 50px;overflow:hidden}.wscn-http404 .pic-404[data-v-5ea65912]{position:relative;float:left;width:600px;overflow:hidden}.wscn-http404 .pic-404__parent[data-v-5ea65912]{width:100%}.wscn-http404 .pic-404__child[data-v-5ea65912]{position:absolute}.wscn-http404 .pic-404__child.left[data-v-5ea65912]{width:80px;top:17px;left:220px;opacity:0;-webkit-animation-name:cloudLeft-data-v-5ea65912;animation-name:cloudLeft-data-v-5ea65912;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}.wscn-http404 .pic-404__child.mid[data-v-5ea65912]{width:46px;top:10px;left:420px;opacity:0;-webkit-animation-name:cloudMid-data-v-5ea65912;animation-name:cloudMid-data-v-5ea65912;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1.2s;animation-delay:1.2s}.wscn-http404 .pic-404__child.right[data-v-5ea65912]{width:62px;top:100px;left:500px;opacity:0;-webkit-animation-name:cloudRight-data-v-5ea65912;animation-name:cloudRight-data-v-5ea65912;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes cloudLeft-data-v-5ea65912{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@keyframes cloudLeft-data-v-5ea65912{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@-webkit-keyframes cloudMid-data-v-5ea65912{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@keyframes cloudMid-data-v-5ea65912{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@-webkit-keyframes cloudRight-data-v-5ea65912{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}@keyframes cloudRight-data-v-5ea65912{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}.wscn-http404 .bullshit[data-v-5ea65912]{position:relative;float:left;width:300px;padding:30px 0;overflow:hidden}.wscn-http404 .bullshit__oops[data-v-5ea65912]{font-size:32px;line-height:40px;color:#1482f0;margin-bottom:20px;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__headline[data-v-5ea65912],.wscn-http404 .bullshit__oops[data-v-5ea65912]{font-weight:700;opacity:0;-webkit-animation-name:slideUp-data-v-5ea65912;animation-name:slideUp-data-v-5ea65912;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__headline[data-v-5ea65912]{font-size:20px;line-height:24px;color:#222;margin-bottom:10px;-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-5ea65912]{font-size:13px;line-height:21px;color:grey;margin-bottom:30px;-webkit-animation-delay:.2s;animation-delay:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-5ea65912],.wscn-http404 .bullshit__return-home[data-v-5ea65912]{opacity:0;-webkit-animation-name:slideUp-data-v-5ea65912;animation-name:slideUp-data-v-5ea65912;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__return-home[data-v-5ea65912]{display:block;float:left;width:110px;height:36px;background:#1482f0;border-radius:100px;text-align:center;color:#fff;font-size:14px;line-height:36px;cursor:pointer;-webkit-animation-delay:.3s;animation-delay:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes slideUp-data-v-5ea65912{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideUp-data-v-5ea65912{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}
@@ -0,0 +1 @@
1
+ .expandable-textarea{display:block;min-height:250px;min-width:250px;resize:both!important}.jsoneditor-vue img{border:1px solid #ddd;border-radius:4px;padding:5px;width:150px}.jsoneditor-vue img:hover{-webkit-box-shadow:0 0 2px 1px rgba(0,140,186,.5);box-shadow:0 0 2px 1px rgba(0,140,186,.5)}.jsoneditor-vue button.btn{font-size:14px!important;padding:3px}.jsoneditor-vue .form-control-label,label{font-weight:700}.jsoneditor-vue input[type=checkbox]{margin-right:5px;margin-top:3px}.comment-link{margin-top:-15px}.error-message{color:red}