Forráskód Böngészése

Fixed up problems that came as a result of updating to the latest webpack, and fixed linting and build errors when compiling for development and production.

jalbr74 7 éve
szülő
commit
ee072cd8e1

+ 71 - 71
client/package.json

@@ -1,73 +1,73 @@
 {
-  "name": "ng1-webpack",
-  "version": "0.0.1",
-  "description": "",
-  "main": "index.js",
-  "engines": {
-    "node": ">=6.2",
-    "npm": ">=3.9"
-  },
-  "scripts": {
-    "build": "webpack --config=webpack.build.js",
-    "clean": "rimraf dist/",
-    "test": "karma start",
-    "test-single-run": "karma start --singleRun --no-auto-watch",
-    "start": "webpack-dev-server --config=webpack.dev.js --colors",
-    "sync": "webpack --config=webpack.build.js --output-path=../server/target/pwm-1.8.0-SNAPSHOT/public/resources/webjars/pwm-client --watch --colors"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {},
-  "devDependencies": {
-    "@types/angular": "1.6.42",
-    "@types/angular-mocks": "1.5.11",
-    "@types/angular-translate": "2.15.1",
-    "@types/angular-ui-router": "1.1.40",
-    "@types/jasmine": "2.8.6",
-    "@types/node": "9.4.2",
-    "@uirouter/angularjs": "1.0.14",
-    "angular": "1.6.9",
-    "angular-mocks": "1.6.9",
-    "angular-translate": "2.17.0",
-    "autoprefixer": "7.2.5",
-    "copy-webpack-plugin": "4.4.1",
-    "css-loader": "0.28.9",
-    "file-loader": "1.1.6",
-    "fontgen-loader": "0.2.1",
-    "html-loader": "0.5.5",
-    "html-webpack-plugin": "2.30.1",
-    "ignore-loader": "0.1.2",
-    "jasmine": "3.0.0",
-    "jasmine-core": "^2.99.1",
-    "jshint": "2.9.5",
-    "jshint-loader": "0.8.4",
-    "json-loader": "0.5.7",
-    "karma": "2.0.0",
-    "karma-chrome-launcher": "2.2.0",
-    "karma-jasmine": "1.1.1",
-    "karma-jasmine-html-reporter": "0.2.2",
-    "karma-phantomjs-launcher": "1.0.4",
-    "karma-sourcemap-loader": "0.3.7",
-    "karma-spec-reporter": "0.0.32",
-    "karma-webpack": "2.0.9",
-    "ngtemplate-loader": "2.0.1",
-    "node-sass": "4.7.2",
-    "phantomjs": "2.1.7",
-    "phantomjs-prebuilt": "2.1.16",
-    "postcss-loader": "2.1.0",
-    "raw-loader": "0.5.1",
-    "rimraf": "2.6.2",
-    "sass-loader": "6.0.6",
-    "string-replace-loader": "1.3.0",
-    "style-loader": "0.20.1",
-    "ts-loader": "3.5.0",
-    "tslint": "^5.9.1",
-    "tslint-loader": "3.5.3",
-    "typescript": "2.7.1",
-    "url-loader": "0.6.2",
-    "webpack": "3.10.0",
-    "webpack-dev-server": "2.11.1",
-    "webpack-merge": "4.1.1",
-    "write-file-webpack-plugin": "4.2.0"
-  }
+    "name": "ng1-webpack",
+    "version": "0.0.1",
+    "description": "",
+    "main": "index.js",
+    "engines": {
+        "node": ">=6.2",
+        "npm": ">=3.9"
+    },
+    "scripts": {
+        "build": "webpack --config=webpack.build.js",
+        "clean": "rimraf dist/",
+        "test": "karma start",
+        "test-single-run": "karma start --singleRun --no-auto-watch",
+        "start": "webpack-dev-server --config=webpack.dev.js --colors",
+        "sync": "webpack --config=webpack.build.js --output-path=../server/target/pwm-1.8.0-SNAPSHOT/public/resources/webjars/pwm-client --watch --colors"
+    },
+    "author": "",
+    "license": "ISC",
+    "dependencies": {},
+    "devDependencies": {
+        "@types/angular": "1.6.42",
+        "@types/angular-mocks": "1.5.11",
+        "@types/angular-translate": "2.15.1",
+        "@types/angular-ui-router": "1.1.40",
+        "@types/jasmine": "2.8.6",
+        "@types/node": "9.4.2",
+        "@uirouter/angularjs": "1.0.14",
+        "angular": "1.6.9",
+        "angular-mocks": "1.6.9",
+        "angular-translate": "2.17.0",
+        "autoprefixer": "7.2.5",
+        "copy-webpack-plugin": "4.4.1",
+        "css-loader": "0.28.9",
+        "file-loader": "1.1.6",
+        "fontgen-loader": "0.2.1",
+        "html-loader": "0.5.5",
+        "html-webpack-plugin": "2.30.1",
+        "ignore-loader": "0.1.2",
+        "jasmine": "3.0.0",
+        "jasmine-core": "^2.99.1",
+        "jshint": "2.9.5",
+        "jshint-loader": "0.8.4",
+        "json-loader": "0.5.7",
+        "karma": "2.0.0",
+        "karma-chrome-launcher": "2.2.0",
+        "karma-jasmine": "1.1.1",
+        "karma-jasmine-html-reporter": "0.2.2",
+        "karma-phantomjs-launcher": "1.0.4",
+        "karma-sourcemap-loader": "0.3.7",
+        "karma-spec-reporter": "0.0.32",
+        "karma-webpack": "2.0.9",
+        "ngtemplate-loader": "2.0.1",
+        "node-sass": "4.7.2",
+        "phantomjs": "2.1.7",
+        "phantomjs-prebuilt": "2.1.16",
+        "postcss-loader": "2.1.0",
+        "raw-loader": "0.5.1",
+        "rimraf": "2.6.2",
+        "sass-loader": "6.0.6",
+        "string-replace-loader": "1.3.0",
+        "style-loader": "0.20.1",
+        "ts-loader": "3.5.0",
+        "tslint": "^5.9.1",
+        "tslint-loader": "3.5.3",
+        "typescript": "2.7.1",
+        "url-loader": "0.6.2",
+        "webpack": "3.10.0",
+        "webpack-dev-server": "2.11.1",
+        "webpack-merge": "4.1.1",
+        "write-file-webpack-plugin": "4.2.0"
+    }
 }

+ 1 - 1
client/src/changepassword/type-change-password.controller.ts

@@ -40,7 +40,7 @@ export default class TypeChangePasswordController {
     passwordUiMode: string;
     passwordSuggestions: string[];
     showStrengthMeter: boolean;
-    strength: string = 'Very Strong';
+    strength = 'Very Strong';
 
     static $inject = [
         '$q',

+ 1 - 1
client/src/helpdesk/helpdesk-search.component.ts

@@ -79,7 +79,7 @@ export default class HelpDeskSearchComponent {
         }
     }
 
-    private fetchSearchData(): IPromise<SearchResult> {
+    private fetchSearchData(): IPromise<void | SearchResult> {
         // this.abortPendingRequests();
         this.searchResult = null;
 

+ 4 - 4
client/src/helpdesk/helpdesk.module.ts

@@ -21,7 +21,7 @@
  */
 
 
-import { module } from 'angular';
+import {IComponentOptions, module} from 'angular';
 import { DateFilter } from './date.filters';
 import HelpDeskDetailComponent from './helpdesk-detail.component';
 import HelpDeskSearchComponent from './helpdesk-search.component';
@@ -45,9 +45,9 @@ module(moduleName, [
     uxModule
 ])
 
-    .component('helpDeskSearch', HelpDeskSearchComponent)
-    .component('helpDeskDetail', HelpDeskDetailComponent)
-    .component('personCard', PersonCardComponent)
+    .component('helpDeskSearch', HelpDeskSearchComponent as IComponentOptions)
+    .component('helpDeskDetail', HelpDeskDetailComponent as IComponentOptions)
+    .component('personCard', PersonCardComponent as IComponentOptions)
     .controller('AutogenChangePasswordController', AutogenChangePasswordController)
     .controller('RandomChangePasswordController', RandomChangePasswordController)
     .controller('RecentVerificationsDialogController', RecentVerificationsDialogController)

+ 2 - 2
client/src/pages/changepassword/changepassword.controller.ts

@@ -34,7 +34,7 @@ require("pages/changepassword/password-suggestions.scss");
 export default class ChangePasswordController {
     static $inject = ["$scope", "$compile", "$templateCache"];
     constructor(
-            private $scope: IScope,
+            private $scope: IScope | any,
             private $compile: ICompileService,
             private $templateCache: ITemplateCacheService
     ) {
@@ -59,7 +59,7 @@ export default class ChangePasswordController {
 
     populateDialog() {
         this.$scope.$ctrl = this;
-        const passwordSuggestionsElement: JQuery<HTMLElement> = this.$compile(this.$templateCache.get(PW_SUGGESTIONS_TEMPLATE) as string)(this.$scope);
+        const passwordSuggestionsElement: JQuery = this.$compile(this.$templateCache.get(PW_SUGGESTIONS_TEMPLATE) as string)(this.$scope);
 
         var myElement = element( document.querySelector( '#dialogPopup .dialogBody, #html5Dialog .dialogBody' ) );
         myElement.replaceWith(passwordSuggestionsElement);

+ 1 - 1
client/src/services/helpdesk.service.dev.ts

@@ -472,7 +472,7 @@ export default class HelpDeskService implements IHelpDeskService {
             deferred.resolve();
         });
 
-        return deferred.promise;
+        return deferred.promise as IPromise<T>;
     }
 
     unlockIntruder(userKey: string): IPromise<ISuccessResponse> {

+ 1 - 1
client/src/services/helpdesk.service.ts

@@ -64,7 +64,7 @@ type IRecentVerification = {
     username: string,
     timestamp: string,
     method: string
-}
+};
 
 export interface IRandomPasswordResponse {
     password: string;

+ 1 - 1
client/src/services/local-storage.service.ts

@@ -32,7 +32,7 @@ const KEYS = {
 
 export default class LocalStorageService {
     keys: any = KEYS;
-    private localStorageEnabled: boolean = true;
+    private localStorageEnabled = true;
 
     static $inject = [ '$log', '$window' ];
     constructor($log: ILogService, private $window: IWindowService) {

+ 1 - 1
client/src/services/people.service.dev.ts

@@ -179,7 +179,7 @@ export default class PeopleService implements IPeopleService {
             deferred.resolve();
         });
 
-        return deferred.promise;
+        return deferred.promise as IPromise<SearchResult>;
     }
 
     private findDirectReports(id: string): IPerson[] {

+ 1 - 1
client/src/services/peoplesearch-config.service.dev.ts

@@ -47,5 +47,5 @@ export default class ConfigService
 
     orgChartEnabled(): IPromise<boolean> {
         return this.$q.resolve(true);
-    };
+    }
 }

+ 2 - 2
client/src/ux/auto-complete.component.ts

@@ -45,7 +45,7 @@ import { IAttributes, IAugmentedJQuery, IDocumentService, IPromise, IScope } fro
             return `
                 <mf-search-bar input-debounce="$ctrl.inputDebounce"
                                search-text="$ctrl.searchText"
-                               on-search-text-change="$ctrl.onSearchBarTextChange(value)"                           
+                               on-search-text-change="$ctrl.onSearchBarTextChange(value)"
                                on-key-down="$ctrl.onSearchBarKeyDown($event)"
                                ng-click="$ctrl.onSearchBarClick($event)"
                                auto-focus></mf-search-bar>
@@ -55,7 +55,7 @@ import { IAttributes, IAugmentedJQuery, IDocumentService, IPromise, IScope } fro
                        ng-class="{ \'selected\': $index == $ctrl.selectedIndex }\">` +
                 contentTemplate.html().replace(new RegExp($attrs['item'], 'g'), 'item') +
                     `</li>
-                    <li class="search-message" 
+                    <li class="search-message"
                         ng-if="$ctrl.show && $ctrl.searchText && !$ctrl.loading && !$ctrl.items.length">
                         <span translate="Display_SearchResultsNone"></span>
                     </li>

+ 3 - 3
client/src/ux/table-column.directive.ts

@@ -25,8 +25,8 @@ import { IAttributes, IAugmentedJQuery, IDirective, IScope } from 'angular';
 import TableDirectiveController from './table.directive.controller';
 
 class TableColumnDirective implements IDirective {
-    require: string = '^mfTable';
-    restrict: string = 'E';
+    require = '^mfTable';
+    restrict = 'E';
 
     constructor() {}
 
@@ -43,4 +43,4 @@ class TableColumnDirective implements IDirective {
 TableColumnDirectiveFactory.$inject = [];
 export default function TableColumnDirectiveFactory(): IDirective {
     return new TableColumnDirective();
-};
+}

+ 2 - 2
client/src/ux/table.directive.controller.ts

@@ -32,9 +32,9 @@ export default class TableDirectiveController {
     itemName: string;
     onClickItem: (scope: IScope, locals: any) => void;
     searchHighlight: string;
-    showConfiguration: boolean = false;
+    showConfiguration = false;
     sortColumn: Column;
-    reverseSort: boolean = false;
+    reverseSort = false;
 
     static $inject = [ '$filter', '$scope' ];
     constructor(private $filter: IFilterService, private $scope: IScope) {

+ 1 - 1
client/src/ux/table.directive.ts

@@ -95,4 +95,4 @@ class TableDirective implements IDirective {
 TableDirectiveFactory.$inject = [ '$document', '$parse' ];
 export default function TableDirectiveFactory($document: IDocumentService, $parse: IParseService): IDirective {
     return new TableDirective($document, $parse);
-};
+}

+ 1 - 1
client/src/ux/tabset.directive.ts

@@ -33,7 +33,7 @@ export class TabsetController implements ITabsetController {
 
     activateTab(tabIndex): void {
         this.activeTab = tabIndex;
-    };
+    }
 }
 
 require('ux/tabset.directive.scss');

+ 20 - 21
client/webpack.common.js

@@ -31,7 +31,7 @@ var outDir = path.resolve(__dirname, 'dist');
 module.exports = {
     devServer: {
         contentBase: outDir,
-        outputPath: outDir,
+        // outputPath: outDir,
         port: 4000,
         historyApiFallback: true
     },
@@ -44,39 +44,45 @@ module.exports = {
         'angular-translate': 'window["angular-translate"]'
     },
     module: {
-        preLoaders: [
+        rules: [
             {
                 test: /\.ts$/,
-                loader: 'tslint'
-            }
-        ],
-        loaders: [
+                enforce: 'pre',
+                loader: 'tslint-loader'
+            },
             {
                 test: /\.ts$/,
-                loader: 'ts',
+                loader: 'ts-loader',
                 exclude: /node_modules/
             },
             {
                 test: /index\.html$/,
-                loader: 'html',
+                loader: 'html-loader',
                 exclude: /node_modules/
             },
             {
                 test: /\.html$/,
-                loader: 'ngtemplate?relativeTo=' + (path.resolve(__dirname, './src')) + '/!html',
+                loader: 'ngtemplate-loader?relativeTo=' + (path.resolve(__dirname, './src')) + '/!html-loader',
                 exclude: /index\.html$/
             },
             {
                 test: /\.scss$/,
-                loaders: [ 'style', 'css', 'sass', 'postcss' ]
+                loaders: [ 'style-loader', 'css-loader', 'sass-loader', {
+                    loader: 'postcss-loader',
+                    options: {
+                        plugins: function () {
+                            return [autoPrefixer('last 2 versions')]
+                        }
+                    }
+                }]
             },
             {
                 test: /\.json/,
-                loaders: [ 'json' ]
+                loaders: [ 'json-loader' ]
             },
             {
                 test: /\.(png|jpg|jpeg|gif|svg)$/,
-                loaders: [ 'url?limit=25000' ]
+                loaders: [ 'url-loader?limit=25000' ]
             }
         ]
     },
@@ -101,15 +107,8 @@ module.exports = {
             inject: 'body'
         })
     ],
-    postcss: function() {
-        return [
-            autoPrefixer({
-                browsers: ['last 2 versions']
-            })
-        ];
-    },
     resolve: {
-        extensions: [ '', '.ts', '.js', '.json' ],
-        modulesDirectories: ['./src', './vendor', 'node_modules']
+        extensions: [ '.ts', '.js', '.json' ],
+        modules: ['./src', './vendor', 'node_modules']
     }
 };