From 9f37e8daa5984d05350c8588b0b0c865abd3d993 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 1 Jun 2018 23:17:36 +0200 Subject: [PATCH] Webpack dev --- src/Squidex/app-config/fix-coverage-loader.js | 47 ------------------- src/Squidex/app-config/karma.coverage.conf.js | 2 +- src/Squidex/app-config/webpack.run.dev.js | 2 + src/Squidex/app-config/webpack.run.prod.js | 13 +---- .../app-config/webpack.test.coverage.js | 41 ---------------- src/Squidex/app-config/webpack.test.js | 2 + src/Squidex/app/app.ts | 9 ++++ .../content/content-history.component.ts | 11 +++-- .../shared/components/history.component.ts | 10 ++-- src/Squidex/app/theme/theme.scss | 9 ---- src/Squidex/package-lock.json | 35 +++++++++++--- src/Squidex/package.json | 7 +-- src/Squidex/tslint.json | 9 +++- 13 files changed, 67 insertions(+), 130 deletions(-) delete mode 100644 src/Squidex/app-config/fix-coverage-loader.js delete mode 100644 src/Squidex/app-config/webpack.test.coverage.js diff --git a/src/Squidex/app-config/fix-coverage-loader.js b/src/Squidex/app-config/fix-coverage-loader.js deleted file mode 100644 index d5e5f2ff9..000000000 --- a/src/Squidex/app-config/fix-coverage-loader.js +++ /dev/null @@ -1,47 +0,0 @@ -function fixCoverage(contents) { - this.cacheable(); - - var ignores = [ - { name: 'arguments', line: 'var _a' }, - { name: 'decorate', line: 'var __decorate =', }, - { name: 'metadata', line: 'var __metadata =', }, - { name: 'extends', line: 'var __extends =', }, - { name: 'export', line: 'function __export' } - ]; - - var updates = 0; - var rows = contents.split('\n'); - - for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) { - var row = rows[rowIndex].trim(); - - for (var ignoreIndex = 0; ignoreIndex < ignores.length; ignoreIndex++) { - var ignore = ignores[ignoreIndex]; - - if (row.indexOf(ignore.line) >= 0) { - rows.splice(rowIndex, 0, '/* istanbul ignore next: TypeScript ' + ignore.name + ' */'); - rowIndex++; - updates++; - break; - } - } - - if (row.indexOf('hasOwnProperty') >= 0) { - rows.splice(rowIndex, 0, '/* istanbul ignore else */'); - rowIndex++; - updates++; - } - - if (updates === ignores.length) { - break; - } - } - - if (updates > 0) { - return rows.join('\n'); - } else { - return contents; - } -} - -module.exports = fixCoverage; \ No newline at end of file diff --git a/src/Squidex/app-config/karma.coverage.conf.js b/src/Squidex/app-config/karma.coverage.conf.js index 6ee5490b3..3c68d229e 100644 --- a/src/Squidex/app-config/karma.coverage.conf.js +++ b/src/Squidex/app-config/karma.coverage.conf.js @@ -1,4 +1,4 @@ -var webpackConfig = require('./webpack.test.coverage'); +var webpackConfig = require('./webpack.test'); module.exports = function (config) { var _config = { diff --git a/src/Squidex/app-config/webpack.run.dev.js b/src/Squidex/app-config/webpack.run.dev.js index 21a138e16..55d568cad 100644 --- a/src/Squidex/app-config/webpack.run.dev.js +++ b/src/Squidex/app-config/webpack.run.dev.js @@ -4,6 +4,8 @@ helpers = require('./helpers'); module.exports = webpackMerge(runConfig, { + mode: 'development', + /** * Developer tool to enhance debugging * diff --git a/src/Squidex/app-config/webpack.run.prod.js b/src/Squidex/app-config/webpack.run.prod.js index 6e1e076db..bec371193 100644 --- a/src/Squidex/app-config/webpack.run.prod.js +++ b/src/Squidex/app-config/webpack.run.prod.js @@ -10,6 +10,8 @@ var ENV = process.env.NODE_ENV = process.env.ENV = 'production'; helpers.removeLoaders(runConfig, ['scss', 'ts']); module.exports = webpackMerge(runConfig, { + mode: 'production', + devtool: 'source-map', output: { @@ -94,17 +96,6 @@ module.exports = webpackMerge(runConfig, { * See: https://github.com/webpack/extract-text-webpack-plugin */ new ExtractTextPlugin('[name].css'), - - new webpack.optimize.UglifyJsPlugin({ - beautify: false, - mangle: { - screw_ie8: true, keep_fnames: true - }, - compress: { - screw_ie8: true, warnings: false - }, - comments: false - }), new ngToolsWebpack.AngularCompilerPlugin({ tsConfigPath: './tsconfig.json', diff --git a/src/Squidex/app-config/webpack.test.coverage.js b/src/Squidex/app-config/webpack.test.coverage.js deleted file mode 100644 index 4bfdb9654..000000000 --- a/src/Squidex/app-config/webpack.test.coverage.js +++ /dev/null @@ -1,41 +0,0 @@ - -var webpackMerge = require('webpack-merge'), - path = require('path'), - helpers = require('./helpers'), - testConfig = require('./webpack.test.js'); - -helpers.removeLoaders(testConfig, ['ts']); - -module.exports = webpackMerge(testConfig, { - module: { - /** - * An array of Rules which are matched to requests when modules are created. - * - * See: https://webpack.js.org/configuration/module/#module-rules - */ - rules: [ - { - test: /\.ts$/, - use: [{ - loader: 'awesome-typescript-loader' - }], - include: [/\.(e2e|spec)\.ts$/], - - }, { - test: /\.ts$/, - use: [{ - loader: 'istanbul-instrumenter-loader' - }, { - loader: helpers.root('app-config', 'fix-coverage-loader') - }, { - loader: 'awesome-typescript-loader' - }, { - loader: 'angular2-router-loader' - }, { - loader: 'angular2-template-loader' - }], - exclude: [/\.(e2e|spec)\.ts$/] - } - ] - } -}); \ No newline at end of file diff --git a/src/Squidex/app-config/webpack.test.js b/src/Squidex/app-config/webpack.test.js index 04955323e..a18a4fbac 100644 --- a/src/Squidex/app-config/webpack.test.js +++ b/src/Squidex/app-config/webpack.test.js @@ -4,6 +4,8 @@ commonConfig = require('./webpack.config.js'), helpers = require('./helpers'); module.exports = webpackMerge(commonConfig, { + mode: 'development', + /** * Source map for Karma from the help of karma-sourcemap-loader & karma-webpack * diff --git a/src/Squidex/app/app.ts b/src/Squidex/app/app.ts index bb9ddbbf5..d1370c11f 100644 --- a/src/Squidex/app/app.ts +++ b/src/Squidex/app/app.ts @@ -7,6 +7,15 @@ import './theme/theme.scss'; +// icomoon +import './theme/icomoon/style.css'; + +// Pikaday +import 'pikaday/css/pikaday.css'; + +// Dragula +import 'dragula/dist/dragula.css'; + import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; diff --git a/src/Squidex/app/features/content/pages/content/content-history.component.ts b/src/Squidex/app/features/content/pages/content/content-history.component.ts index 0588b0023..09763dc08 100644 --- a/src/Squidex/app/features/content/pages/content/content-history.component.ts +++ b/src/Squidex/app/features/content/pages/content/content-history.component.ts @@ -7,8 +7,8 @@ import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { Observable, timer } from 'rxjs'; -import { delay, merge, switchMap } from 'rxjs/operators'; +import { merge, Observable, timer } from 'rxjs'; +import { delay, switchMap } from 'rxjs/operators'; import { allParams, @@ -49,9 +49,10 @@ export class ContentHistoryComponent { } public events: Observable = - timer(0, 10000).pipe( - merge(this.messageBus.of(HistoryChannelUpdated) - .pipe(delay(1000))), + merge( + timer(0, 10000), + this.messageBus.of(HistoryChannelUpdated).pipe(delay(1000)) + ).pipe( switchMap(app => this.historyService.getHistory(this.appsState.appName, this.channel))); constructor( diff --git a/src/Squidex/app/shared/components/history.component.ts b/src/Squidex/app/shared/components/history.component.ts index 76c6ee48d..727e53247 100644 --- a/src/Squidex/app/shared/components/history.component.ts +++ b/src/Squidex/app/shared/components/history.component.ts @@ -7,8 +7,8 @@ import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { Observable, timer } from 'rxjs'; -import { delay, merge, switchMap } from 'rxjs/operators'; +import { merge, Observable, timer } from 'rxjs'; +import { delay, switchMap } from 'rxjs/operators'; import { allParams, @@ -28,8 +28,10 @@ export class HistoryComponent { private readonly channel = this.calculateChannel(); public events: Observable = - timer(0, 10000).pipe( - merge(this.messageBus.of(HistoryChannelUpdated).pipe(delay(1000))), + merge( + timer(0, 10000), + this.messageBus.of(HistoryChannelUpdated).pipe(delay(1000)) + ).pipe( switchMap(app => this.historyService.getHistory(this.appsState.appName, this.channel))); constructor( diff --git a/src/Squidex/app/theme/theme.scss b/src/Squidex/app/theme/theme.scss index 3dca4d75d..f2329079c 100644 --- a/src/Squidex/app/theme/theme.scss +++ b/src/Squidex/app/theme/theme.scss @@ -3,18 +3,9 @@ // Bootstrap @import '~bootstrap/scss/bootstrap.scss'; -// Pikaday -@import '~pikaday/css/pikaday.css'; - -// Dragula -@import '~dragula/dist/dragula.css'; - // Bootstrap Overrides @import '_bootstrap.scss'; -// icomoon -@import './icomoon/style.css'; - @import '_common'; @import '_panels'; @import '_forms'; diff --git a/src/Squidex/package-lock.json b/src/Squidex/package-lock.json index 571f6852a..d9c84af96 100644 --- a/src/Squidex/package-lock.json +++ b/src/Squidex/package-lock.json @@ -536,9 +536,9 @@ "dev": true }, "@types/node": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.0.tgz", - "integrity": "sha512-hWzNviaVFIr1TqcRA8ou49JaSHp+Rfabmnqg2kNvusKqLhPU0rIsGPUj5WJJ7ld4Bb7qdgLmIhLfCD1qS08IVA==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", + "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==", "dev": true }, "@types/react": { @@ -556,7 +556,7 @@ "integrity": "sha512-ony2hEYlGXCLWNAWWgbsHR7qVvDbeMRFc5b43+7dhj3n+zXzxz81HV9Yjpc3JD8vLCiwYoSLqFCI6bD0+0zG2Q==", "dev": true, "requires": { - "@types/node": "10.3.0", + "@types/node": "10.1.2", "@types/react": "16.3.16" } }, @@ -12882,6 +12882,27 @@ "tslib": "1.9.2" } }, + "rxjs-tslint": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/rxjs-tslint/-/rxjs-tslint-0.1.4.tgz", + "integrity": "sha512-7wW9shBod8G9qQXAvfFeIpC7R29HjAbkn9RyeY59N05R8s10OPNJeQhHFmllzqnLycgq7YUJQB6CyC2HBxvWOg==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "optimist": "0.6.1", + "tslint": "5.10.0", + "tsutils": "2.27.1", + "typescript": "2.9.1" + }, + "dependencies": { + "typescript": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", + "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -14511,9 +14532,9 @@ } }, "typescript": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", - "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", "dev": true }, "ua-parser-js": { diff --git a/src/Squidex/package.json b/src/Squidex/package.json index e8e7c4b1d..5dc7a1e6d 100644 --- a/src/Squidex/package.json +++ b/src/Squidex/package.json @@ -8,12 +8,12 @@ "test": "karma start", "test:coverage": "karma start karma.coverage.conf.js", "test:clean": "rimraf _test-output", - "dev": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/ && webpack-dev-server --config app-config/webpack.run.dev.js --mode development --inline --port 3000", + "dev": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/ && webpack-dev-server --config app-config/webpack.run.dev.js --inline --port 3000", "build": "webpack --config app-config/webpack.run.prod.js --display-error-details --bail --display-optimization-bailout", "build:nobail": "webpack --config app-config/webpack.run.prod.js --display-error-details", "build:copy": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/", "build:clean": "rimraf wwwroot/build", - "tslint": "tslint app/**/*.ts" + "tslint": "tslint -c tslint.json -p tsconfig.json app/**/*.ts" }, "dependencies": { "@angular/animations": "6.0.3", @@ -83,6 +83,7 @@ "null-loader": "0.1.1", "raw-loader": "0.5.1", "rimraf": "2.6.2", + "rxjs-tslint": "^0.1.4", "sass-lint": "1.12.1", "sass-loader": "7.0.1", "style-loader": "0.21.0", @@ -90,7 +91,7 @@ "tslint": "5.10.0", "tslint-loader": "3.6.0", "typemoq": "2.1.0", - "typescript": "2.9.1", + "typescript": "2.7.2", "underscore": "1.9.1", "webpack": "4.10.2", "webpack-cli": "^2.1.5", diff --git a/src/Squidex/tslint.json b/src/Squidex/tslint.json index 1dff2ae30..95dd43adb 100644 --- a/src/Squidex/tslint.json +++ b/src/Squidex/tslint.json @@ -1,6 +1,7 @@ { "rulesDirectory": [ - "node_modules/codelyzer" + "node_modules/codelyzer", + "node_modules/rxjs-tslint" ], "rules": { "angular-whitespace": false, @@ -69,7 +70,7 @@ "no-switch-case-fall-through": true, "no-trailing-whitespace": true, "no-unused-expression": true, - "no-use-before-declare": true, + "no-use-before-declare": false, "no-var-keyword": true, "object-literal-sort-keys": false, "one-line": [ @@ -97,6 +98,10 @@ "single" ], "radix": true, + "rxjs-collapse-imports": true, + "rxjs-pipeable-operators-only": true, + "rxjs-no-static-observable-methods": true, + "rxjs-proper-imports": true, "semicolon": [ true, "always"