From 35c0462efce8a5666dba6d988a412e83063fea06 Mon Sep 17 00:00:00 2001 From: Brian Kopp Date: Sun, 9 Dec 2018 14:40:19 -0700 Subject: [PATCH] Continuing initial setup --- package-lock.json | 82 +++++++++++++------ package.json | 16 ++-- .../src/lib/ngrx-cognito.module.ts | 4 +- .../src/lib/state/cognito.selectors.ts | 2 +- projects/ngrx-cognito/src/public_api.ts | 1 + src/app/app.component.spec.ts | 6 +- src/app/app.module.ts | 23 +++++- src/app/state/app.reducer.ts | 26 ++++++ src/environments/environment.prod.ts | 4 +- src/environments/environment.ts | 4 +- src/index.html | 27 +++--- 11 files changed, 141 insertions(+), 54 deletions(-) create mode 100644 src/app/state/app.reducer.ts diff --git a/package-lock.json b/package-lock.json index ab2ded2..48fa8d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,14 +95,6 @@ "source-map": "^0.5.6", "typescript": "~2.9.1", "webpack-sources": "^1.1.0" - }, - "dependencies": { - "typescript": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", - "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", - "dev": true - } } }, "@angular-devkit/core": { @@ -339,6 +331,25 @@ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tsickle": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.32.1.tgz", + "integrity": "sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw==", + "dev": true, + "requires": { + "jasmine-diff": "^0.1.3", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0", + "source-map-support": "^0.5.0" + } } } }, @@ -555,11 +566,22 @@ "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-6.1.2.tgz", "integrity": "sha512-RUuQ5/7ofxGEZnRRdlC1oE9ugVlTYGm92MVj7c6IirHrVN9W5yQjjMTYEYceVCDOYsiXP7Pyw0dcPp6J5wD2EQ==" }, + "@ngrx/router-store": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-6.1.2.tgz", + "integrity": "sha512-sj083ZYrx0aY+vU/t8Ub0KYDHcMpatXJIOJR/eDNSuH54fPiBM9MrdI3hs/XHoXHxSaHOJoZ7f6I8XcUeptxyA==" + }, "@ngrx/store": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-6.1.2.tgz", "integrity": "sha512-W9MbXrwhIRmN1BlINF9BT+rHR046e1HNk7GqykcDJrK9wW74PJW3aE5iuPb2sTPipBMjPHsXzc73E4U/+OTAyw==" }, + "@ngrx/store-devtools": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-6.1.2.tgz", + "integrity": "sha512-hvWMKcRIAtAFb2lb4woRenPHPgOiLFjy8R2PtCiw4uP3WrBVB4JHqUuP230/iRMcU5XmySp+LhNqhkk1zsoUqQ==", + "dev": true + }, "@ngtools/json-schema": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", @@ -586,6 +608,14 @@ "@angular-devkit/core": "0.6.8", "@angular-devkit/schematics": "0.6.8", "typescript": ">=2.6.2 <2.8" + }, + "dependencies": { + "typescript": { + "version": "2.7.2", + "resolved": "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "dev": true + } } }, "@schematics/update": { @@ -949,9 +979,9 @@ } }, "ajv-errors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", - "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", "dev": true }, "ajv-keywords": { @@ -9656,7 +9686,7 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, @@ -10151,16 +10181,14 @@ } }, "tsickle": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.32.1.tgz", - "integrity": "sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.34.0.tgz", + "integrity": "sha512-O3wCPRtL18Hc/ZBnaiKwmmjVzeCWTOTpsi0btfC7FWL3RnXpxLPxD6hoJ0QEXuSfG/0QJk+MWNjqT9N6fOyyIg==", "dev": true, "requires": { - "jasmine-diff": "^0.1.3", "minimist": "^1.2.0", "mkdirp": "^0.5.1", - "source-map": "^0.6.0", - "source-map-support": "^0.5.0" + "source-map": "^0.7.3" }, "dependencies": { "minimist": { @@ -10170,9 +10198,9 @@ "dev": true }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -10271,9 +10299,9 @@ "dev": true }, "typescript": { - "version": "2.7.2", - "resolved": "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", "dev": true }, "uglify-js": { @@ -11024,9 +11052,9 @@ } }, "webpack-merge": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", - "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.5.tgz", + "integrity": "sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ==", "dev": true, "requires": { "lodash": "^4.17.5" diff --git a/package.json b/package.json index 876518a..64a68d8 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@angular/platform-browser-dynamic": "^6.0.3", "@angular/router": "^6.0.3", "@ngrx/effects": "^6.1.2", + "@ngrx/router-store": "^6.1.2", "@ngrx/store": "^6.1.2", "amazon-cognito-identity-js": "^3.0.5", "core-js": "^2.5.4", @@ -28,15 +29,12 @@ "zone.js": "^0.8.26" }, "devDependencies": { - "@angular/compiler-cli": "^6.0.3", - "@angular-devkit/build-ng-packagr": "~0.6.8", "@angular-devkit/build-angular": "~0.6.8", - "ng-packagr": "^3.0.0-rc.2", - "tsickle": ">=0.25.5", - "tslib": "^1.7.1", - "typescript": "~2.7.2", + "@angular-devkit/build-ng-packagr": "~0.6.8", "@angular/cli": "~6.0.8", + "@angular/compiler-cli": "^6.0.3", "@angular/language-service": "^6.0.3", + "@ngrx/store-devtools": "^6.1.2", "@types/jasmine": "~2.8.6", "@types/jasminewd2": "~2.0.3", "@types/node": "~8.9.4", @@ -48,8 +46,12 @@ "karma-coverage-istanbul-reporter": "~2.0.0", "karma-jasmine": "~1.1.1", "karma-jasmine-html-reporter": "^0.2.2", + "ng-packagr": "^3.0.0-rc.2", "protractor": "^5.4.1", "ts-node": "~5.0.1", - "tslint": "~5.9.1" + "tsickle": ">=0.25.5", + "tslib": "^1.7.1", + "tslint": "~5.9.1", + "typescript": "^2.8.0" } } diff --git a/projects/ngrx-cognito/src/lib/ngrx-cognito.module.ts b/projects/ngrx-cognito/src/lib/ngrx-cognito.module.ts index d105a20..e57250b 100644 --- a/projects/ngrx-cognito/src/lib/ngrx-cognito.module.ts +++ b/projects/ngrx-cognito/src/lib/ngrx-cognito.module.ts @@ -9,9 +9,10 @@ import { cognitoReducer } from './state/cognito.reducer'; import { EffectsModule } from '@ngrx/effects'; import { CognitoEffects } from './state/cognito.effects'; import { CognitoFacade } from './state/cognito.facade'; +import { RouterModule } from '@angular/router'; @NgModule({ - imports: [StoreModule.forFeature('cognito', cognitoReducer), EffectsModule.forFeature([CognitoEffects])], + imports: [RouterModule, StoreModule.forFeature('cognito', cognitoReducer), EffectsModule.forFeature([CognitoEffects])], declarations: [], exports: [] }) @@ -23,6 +24,7 @@ export class NgrxCognitoModule { RequireLoggedInGuardService, RequireLoggedOutGuardService, CognitoFacade, + RouterModule, { provide: CognitoConfigService, useValue: cognitoConfig } ] }; diff --git a/projects/ngrx-cognito/src/lib/state/cognito.selectors.ts b/projects/ngrx-cognito/src/lib/state/cognito.selectors.ts index 227a69a..eb9b60b 100644 --- a/projects/ngrx-cognito/src/lib/state/cognito.selectors.ts +++ b/projects/ngrx-cognito/src/lib/state/cognito.selectors.ts @@ -4,7 +4,7 @@ import { CognitoStates } from '../model'; import { MemoizedSelector } from '@ngrx/store'; import { CognitoUser } from 'amazon-cognito-identity-js'; -const getCognito = createFeatureSelector('auth'); +const getCognito = createFeatureSelector('cognito'); const getCognitoState = createSelector( getCognito, diff --git a/projects/ngrx-cognito/src/public_api.ts b/projects/ngrx-cognito/src/public_api.ts index 7da5e96..8cb55bb 100644 --- a/projects/ngrx-cognito/src/public_api.ts +++ b/projects/ngrx-cognito/src/public_api.ts @@ -3,3 +3,4 @@ */ export * from './lib/ngrx-cognito.module'; +export { cognitoReducer, CognitoState } from './lib/state/cognito.reducer'; diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 78dcdfd..4d66835 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -3,9 +3,7 @@ import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], + declarations: [AppComponent] }).compileComponents(); })); it('should create the app', async(() => { @@ -22,6 +20,6 @@ describe('AppComponent', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const compiled = fixture.debugElement.nativeElement; - expect(compiled.querySelector('h1').textContent).toContain('Welcome to ngrx-cognito-app!'); + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); })); }); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2599f5c..83d9754 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,12 +1,33 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; +import { StoreModule } from '@ngrx/store'; +import { EffectsModule } from '@ngrx/effects'; +import { RouterModule } from '@angular/router'; +import { StoreRouterConnectingModule } from '@ngrx/router-store'; +import { StoreDevtoolsModule } from '@ngrx/store-devtools'; import { NgrxCognitoModule } from 'ngrx-cognito'; import { AppComponent } from './app.component'; +import { appReducers, metaReducers } from './state/app.reducer'; +import { environment } from '../environments/environment'; @NgModule({ declarations: [AppComponent], - imports: [BrowserModule, NgrxCognitoModule], + imports: [ + BrowserModule, + RouterModule.forRoot([{ path: '', component: AppComponent }]), + StoreModule.forRoot(appReducers, { metaReducers }), + EffectsModule.forRoot([]), + NgrxCognitoModule.forRoot({ + cognitoAppClientId: environment.cognitoAppClientId, + cognitoUserPoolId: environment.cognitoUserPoolId + }), + StoreRouterConnectingModule.forRoot(), + StoreDevtoolsModule.instrument({ + name: 'Cognito App', + logOnly: !environment.production + }) + ], providers: [], bootstrap: [AppComponent] }) diff --git a/src/app/state/app.reducer.ts b/src/app/state/app.reducer.ts new file mode 100644 index 0000000..8f9cce8 --- /dev/null +++ b/src/app/state/app.reducer.ts @@ -0,0 +1,26 @@ +import { ActionReducerMap, ActionReducer, MetaReducer } from '@ngrx/store'; +import { CognitoState, cognitoReducer } from 'ngrx-cognito'; +import { environment } from 'src/environments/environment'; + +export interface AppState { + cognito: CognitoState; +} + +export const appReducers: ActionReducerMap = { + cognito: cognitoReducer +}; + +// log all actions +export function logActions(reducer: ActionReducer): ActionReducer { + return (state: AppState, action: any): any => { + const result = reducer(state, action); + console.groupCollapsed(action.type); + console.log('prev state', state); + console.log('action', action); + console.log('next state', result); + console.groupEnd(); + return result; + }; +} + +export const metaReducers: MetaReducer[] = !environment.production ? [logActions] : []; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3612073..4998c1e 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,3 +1,5 @@ export const environment = { - production: true + production: true, + cognitoAppClientId: '', + cognitoUserPoolId: '' }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 012182e..9c8aa42 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -3,7 +3,9 @@ // The list of file replacements can be found in `angular.json`. export const environment = { - production: false + production: false, + cognitoAppClientId: '', + cognitoUserPoolId: '' }; /* diff --git a/src/index.html b/src/index.html index 011d070..65e4b54 100644 --- a/src/index.html +++ b/src/index.html @@ -1,14 +1,19 @@ - + - - - NgrxCognitoApp - + + + NgrxCognitoApp + - - - - - - + + + + + + +