From b927bb192508864c85d69394bad84601c93a60af Mon Sep 17 00:00:00 2001 From: Seth Davenport Date: Sun, 9 Jul 2017 21:57:21 -0400 Subject: [PATCH] Updates for stricter TSConfig settings. Unfortunately `noUnusedLocals` and `noUnusedParameters` cause propblems for AoT and `@Output`-related EventEmitters. See https://github.com/angular/angular/issues/17131 Once that's fixed in Angular itself then we can turn those checks back on here. Note that they work already in JiT mode. --- package-lock.json | 18 ++++----- package.json | 4 +- src/app/animals/animal/component.ts | 3 +- src/app/animals/animal/reducers.ts | 2 +- src/app/animals/api/epics.ts | 8 ++-- src/app/animals/api/reducer.ts | 2 +- src/app/elephants/page.ts | 1 - src/app/feedback/page.ts | 5 +-- src/app/lions/page.ts | 1 - src/app/store/epics.ts | 1 - src/app/store/model.ts | 3 +- src/app/store/module.ts | 1 - src/tsconfig.app.json | 9 ++++- src/tsconfig.json | 10 ++++- src/tsconfig.spec.json | 10 ++++- tsconfig.json | 10 ++++- yarn.lock | 59 +++++++++++++++++++---------- 17 files changed, 93 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8bea19..d5e67ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@angular-redux/form": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@angular-redux/form/-/form-6.5.0.tgz", - "integrity": "sha512-xj13T6918Vh9Qq8GVnWMNgrcTzNN71x4wYb62AVMG/b1dif2njTyTZBYinKW7bgCq1gLRbZ8H0eY7ZFqR6hByQ==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@angular-redux/form/-/form-6.5.2.tgz", + "integrity": "sha512-zTM1G5cMYApzD6fFS3ncb8VrcWgjQdte6IDaH/1a34oNjOup8JsAvUzKjsutSsyXdoI5VGthfrXwWTYSEGYDKg==" }, "@angular-redux/router": { "version": "6.3.1", @@ -14,9 +14,9 @@ "integrity": "sha512-n1B49Y4nATa5o/RMXjhcIc2C4B+hILI+R1z9CP+R2uOc1Kx4aq46gxgMRe4Xk5PV9tWiJCGRhK03Ewp5B+/sfw==" }, "@angular-redux/store": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@angular-redux/store/-/store-6.5.5.tgz", - "integrity": "sha512-/jsEnaZ1yNuyRvui5MZCDwoDOyoc6wtPEuwQthBhrOpZd0MNQQ0icySXGH3aFuWfCsBm+1LOg/XKuwlb6/aXqw==" + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@angular-redux/store/-/store-6.5.6.tgz", + "integrity": "sha512-TAIeo/oGWURQLTxBNx9nTy7rBv8P8CUI7UtQkDqmRuyjfcoFuV6bRtJEcZ70nWeKqSp3qQIjgoEwrnMsat0v4g==" }, "@angular/cli": { "version": "1.0.1", @@ -3558,9 +3558,9 @@ "dev": true }, "less-loader": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.4.tgz", - "integrity": "sha1-tKjEOEPmXGfS6i6xRltcQjPVAGo=", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", "dev": true, "dependencies": { "clone": { diff --git a/package.json b/package.json index 00eed4e..f3a96cc 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,9 @@ }, "private": true, "dependencies": { - "@angular-redux/form": "^6.3.0", + "@angular-redux/form": "^6.5.2", "@angular-redux/router": "^6.3.1", - "@angular-redux/store": "^6.5.5", + "@angular-redux/store": "^6.5.6", "@angular/common": "^4.1.0", "@angular/compiler": "^4.1.0", "@angular/core": "^4.1.0", diff --git a/src/app/animals/animal/component.ts b/src/app/animals/animal/component.ts index b19e843..420f2e0 100644 --- a/src/app/animals/animal/component.ts +++ b/src/app/animals/animal/component.ts @@ -1,8 +1,7 @@ import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; -import { NgRedux, dispatch, select, select$, WithSubStore } from '@angular-redux/store'; +import { dispatch, select, select$, WithSubStore } from '@angular-redux/store'; import { Observable } from 'rxjs/Observable'; -import { IAppState } from '../../store/model'; import { animalComponentReducer } from './reducers'; import { IAnimal } from '../model'; diff --git a/src/app/animals/animal/reducers.ts b/src/app/animals/animal/reducers.ts index 144d188..fa8676c 100644 --- a/src/app/animals/animal/reducers.ts +++ b/src/app/animals/animal/reducers.ts @@ -1,4 +1,4 @@ -import { Reducer, Action, combineReducers } from 'redux'; +import { Reducer, Action } from 'redux'; import { AnimalComponent } from './component'; export const ticketsReducer: Reducer = (state = 0, action: Action): number => { diff --git a/src/app/animals/api/epics.ts b/src/app/animals/api/epics.ts index 62f9eb2..aa5ed1a 100644 --- a/src/app/animals/api/epics.ts +++ b/src/app/animals/api/epics.ts @@ -7,12 +7,10 @@ import 'rxjs/add/operator/do'; import 'rxjs/add/operator/startWith'; import { IAppState } from '../../store/model'; -import { AnimalType, ANIMAL_TYPES } from '../model'; +import { AnimalType } from '../model'; import { AnimalAPIAction, AnimalAPIActions } from './actions'; import { AnimalAPIService } from './service'; -type Predicate = (any) => boolean; - const animalsNotAlreadyFetched = ( animalType: AnimalType, state: IAppState): boolean => !( @@ -35,12 +33,12 @@ export class AnimalAPIEpics { return createEpicMiddleware(this.createLoadAnimalEpic(animalType)); } - private createLoadAnimalEpic(animalType): Epic { + private createLoadAnimalEpic(animalType: AnimalType): Epic { return (action$, store) => action$ .ofType(AnimalAPIActions.LOAD_ANIMALS) .filter(action => actionIsForCorrectAnimalType(animalType)(action)) .filter(() => animalsNotAlreadyFetched(animalType, store.getState())) - .switchMap(a => this.service.getAll(animalType) + .switchMap(() => this.service.getAll(animalType) .map(data => this.actions.loadSucceeded(animalType, data)) .catch(response => of(this.actions.loadFailed(animalType, { status: '' + response.status, diff --git a/src/app/animals/api/reducer.ts b/src/app/animals/api/reducer.ts index 2fca8f2..c645333 100644 --- a/src/app/animals/api/reducer.ts +++ b/src/app/animals/api/reducer.ts @@ -1,5 +1,5 @@ import { AnimalAPIAction, AnimalAPIActions } from './actions'; -import { IAnimalList, IAnimal, AnimalType } from '../model'; +import { IAnimalList, AnimalType } from '../model'; import { indexBy, prop } from 'ramda'; import { Action } from 'redux'; diff --git a/src/app/elephants/page.ts b/src/app/elephants/page.ts index 1f63da7..a90fbf9 100644 --- a/src/app/elephants/page.ts +++ b/src/app/elephants/page.ts @@ -5,7 +5,6 @@ import { Observable } from 'rxjs/Observable'; import { AnimalAPIActions } from '../animals/api/actions'; import { ANIMAL_TYPES, IAnimal } from '../animals/model'; -import { IAppState } from '../store/model'; export const sortAnimals = (animalDictionary$: Observable<{}>) => animalDictionary$.map( diff --git a/src/app/feedback/page.ts b/src/app/feedback/page.ts index 9697774..c4a672f 100644 --- a/src/app/feedback/page.ts +++ b/src/app/feedback/page.ts @@ -1,9 +1,6 @@ import { Component, ChangeDetectionStrategy } from '@angular/core'; -import { Connect } from '@angular-redux/form'; -import { NgRedux, select$ } from '@angular-redux/store'; +import { select$ } from '@angular-redux/store'; import { Observable } from 'rxjs/Observable'; -import { of } from 'rxjs/observable/of'; -import { IAppState } from '../store/model'; const MAX_COMMENT_CHARS = 300; diff --git a/src/app/lions/page.ts b/src/app/lions/page.ts index 5395b90..fc39aa2 100644 --- a/src/app/lions/page.ts +++ b/src/app/lions/page.ts @@ -5,7 +5,6 @@ import { pipe, values, sortBy, prop } from 'ramda'; import { AnimalAPIActions } from '../animals/api/actions'; import { ANIMAL_TYPES, IAnimal } from '../animals/model'; -import { IAppState } from '../store/model'; export const sortAnimals = (animalDictionary$: Observable<{}>) => animalDictionary$.map( diff --git a/src/app/store/epics.ts b/src/app/store/epics.ts index eeca0e9..4e5b460 100644 --- a/src/app/store/epics.ts +++ b/src/app/store/epics.ts @@ -1,5 +1,4 @@ import { Injectable } from '@angular/core'; -import { combineEpics } from 'redux-observable'; import { ANIMAL_TYPES } from '../animals/model'; import { AnimalAPIEpics } from '../animals/api/epics'; diff --git a/src/app/store/model.ts b/src/app/store/model.ts index 1a097d0..b5e3785 100644 --- a/src/app/store/model.ts +++ b/src/app/store/model.ts @@ -1,8 +1,7 @@ import { IAnimalList } from '../animals/model'; export interface IAppState { - elephants?: IAnimalList; - lions?: IAnimalList; + [animalType: string]: IAnimalList; routes?: any; feedback?: any; } diff --git a/src/app/store/module.ts b/src/app/store/module.ts index dfafdf9..fe99962 100644 --- a/src/app/store/module.ts +++ b/src/app/store/module.ts @@ -10,7 +10,6 @@ import { provideReduxForms } from '@angular-redux/form'; // Redux ecosystem stuff. import { createLogger } from 'redux-logger'; -import { combineEpics, createEpicMiddleware } from 'redux-observable'; // The top-level reducers and epics that make up our app's logic. import { IAppState } from './model'; diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json index 9f12c4b..c76b08b 100644 --- a/src/tsconfig.app.json +++ b/src/tsconfig.app.json @@ -13,7 +13,14 @@ "target": "es5", "module": "es2015", "baseUrl": "", - "types": [] + "types": [], + + // Causes problems for @Outputs. See https://github.com/angular/angular/issues/17131. + // "noUnusedParameters": true, + // "noUnusedLocals": true, + + "forceConsistentCasingInFileNames": true, + "pretty": true }, "exclude": [ "test.ts", diff --git a/src/tsconfig.json b/src/tsconfig.json index 8e9fb52..201018a 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -14,6 +14,14 @@ "typeRoots": [ "../node_modules/@types" ], - "strict": true + "strict": true, + + // Causes problems for @Outputs with AoT. + // See https://github.com/angular/angular/issues/17131. + // "noUnusedParameters": true, + // "noUnusedLocals": true, + + "forceConsistentCasingInFileNames": true, + "pretty": true } } diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index 8e29761..10fc05b 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -16,7 +16,15 @@ "jasmine", "node" ], - "strict": true + "strict": true, + + // Causes problems for @Outputs with AoT. + // See https://github.com/angular/angular/issues/17131. + // "noUnusedParameters": true, + // "noUnusedLocals": true, + + "forceConsistentCasingInFileNames": true, + "pretty": true }, "files": [ "test.ts" diff --git a/tsconfig.json b/tsconfig.json index cde5e35..2cc1ac4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,14 @@ "experimentalDecorators": true, "lib": [ "es2016" - ] + ], + + // Causes problems for @Outputs with AoT. + // See https://github.com/angular/angular/issues/17131. + // "noUnusedParameters": true, + // "noUnusedLocals": true, + + "forceConsistentCasingInFileNames": true, + "pretty": true } } diff --git a/yarn.lock b/yarn.lock index 3174565..e9d12fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,9 +2,9 @@ # yarn lockfile v1 -"@angular-redux/form@^6.3.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@angular-redux/form/-/form-6.5.0.tgz#1c9dae68545197fd60915a90b4d89f6a687b9876" +"@angular-redux/form@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@angular-redux/form/-/form-6.5.2.tgz#bf400593f93bb2f809be5cedbff36ce6a65c2d09" dependencies: immutable "^3.8.1" @@ -12,9 +12,9 @@ version "6.3.1" resolved "https://registry.yarnpkg.com/@angular-redux/router/-/router-6.3.1.tgz#847f790b3e3b2d1c8bdad4d4bf3068cd4e0fbf07" -"@angular-redux/store@^6.5.5": - version "6.5.5" - resolved "https://registry.yarnpkg.com/@angular-redux/store/-/store-6.5.5.tgz#e1b5c09b42b5ba7d1b375372654e637e312bff31" +"@angular-redux/store@^6.5.6": + version "6.5.6" + resolved "https://registry.yarnpkg.com/@angular-redux/store/-/store-6.5.6.tgz#74fec2f7126c0023f9221710c11b9c2502006c9e" "@angular/cli@1.0.1": version "1.0.1" @@ -769,7 +769,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -779,7 +779,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1: +chalk@^2.0.0, chalk@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" dependencies: @@ -2233,11 +2233,11 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" inquirer@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.1.1.tgz#87621c4fba4072f48a8dd71c9f9df6f100b2d534" + version "3.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.0.tgz#45b44c2160c729d7578c54060b3eed94487bb42b" dependencies: ansi-escapes "^2.0.0" - chalk "^1.0.0" + chalk "^2.0.0" cli-cursor "^2.1.0" cli-width "^2.0.0" external-editor "^2.0.4" @@ -2247,8 +2247,8 @@ inquirer@^3.0.0: run-async "^2.2.0" rx-lite "^4.0.8" rx-lite-aggregates "^4.0.8" - string-width "^2.0.0" - strip-ansi "^3.0.0" + string-width "^2.1.0" + strip-ansi "^4.0.0" through "^2.3.6" interpret@^1.0.0: @@ -2737,8 +2737,8 @@ lcid@^1.0.0: invert-kv "^1.0.0" less-loader@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.4.tgz#b4a8c43843e65c67d2ea2eb1465b5c4233d5006a" + version "4.0.5" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz#ae155a7406cac6acd293d785587fcff0f478c4dd" dependencies: clone "^2.1.1" loader-utils "^1.1.0" @@ -2954,7 +2954,11 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: +"mime-db@>= 1.27.0 < 2": + version "1.28.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.28.0.tgz#fedd349be06d2865b7fc57d837c6de4f17d7ac3c" + +mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" @@ -3813,10 +3817,14 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@1.4.1, q@^1.1.2, q@^1.4.1: +q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" +q@^1.1.2, q@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" @@ -4544,7 +4552,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0" dependencies: @@ -5169,13 +5177,20 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -ws@1.1.2, ws@^1.0.1: +ws@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" dependencies: options ">=0.0.5" ultron "1.0.x" +ws@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" @@ -5198,7 +5213,11 @@ xml2js@^0.4.17: sax ">=0.6.0" xmlbuilder "^4.1.0" -xmlbuilder@>=1.0.0, xmlbuilder@^4.1.0: +xmlbuilder@>=1.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.1.tgz#91cd70897755363eba57c12ddeeab4a341a61f65" + +xmlbuilder@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" dependencies: