Skip to content

Commit 96b563b

Browse files
committed
bundle size
1 parent a1652dc commit 96b563b

32 files changed

+613
-38
lines changed

angular.json

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,119 @@
151151
}
152152
}
153153
}
154+
},
155+
"quickstart-demo": {
156+
"projectType": "application",
157+
"schematics": {},
158+
"root": "projects/quickstart-demo",
159+
"sourceRoot": "projects/quickstart-demo/src",
160+
"prefix": "app",
161+
"architect": {
162+
"build": {
163+
"builder": "@angular-devkit/build-angular:browser",
164+
"options": {
165+
"outputPath": "dist/quickstart-demo",
166+
"index": "projects/quickstart-demo/src/index.html",
167+
"main": "projects/quickstart-demo/src/main.ts",
168+
"polyfills": "projects/quickstart-demo/src/polyfills.ts",
169+
"tsConfig": "projects/quickstart-demo/tsconfig.app.json",
170+
"aot": false,
171+
"assets": [
172+
"projects/quickstart-demo/src/favicon.ico",
173+
"projects/quickstart-demo/src/assets"
174+
],
175+
"styles": [
176+
"projects/quickstart-demo/src/styles.css"
177+
],
178+
"scripts": []
179+
},
180+
"configurations": {
181+
"production": {
182+
"fileReplacements": [
183+
{
184+
"replace": "projects/quickstart-demo/src/environments/environment.ts",
185+
"with": "projects/quickstart-demo/src/environments/environment.prod.ts"
186+
}
187+
],
188+
"optimization": true,
189+
"outputHashing": "all",
190+
"sourceMap": false,
191+
"extractCss": true,
192+
"namedChunks": false,
193+
"aot": true,
194+
"extractLicenses": true,
195+
"vendorChunk": false,
196+
"buildOptimizer": true,
197+
"budgets": [
198+
{
199+
"type": "initial",
200+
"maximumWarning": "2mb",
201+
"maximumError": "5mb"
202+
}
203+
]
204+
}
205+
}
206+
},
207+
"serve": {
208+
"builder": "@angular-devkit/build-angular:dev-server",
209+
"options": {
210+
"browserTarget": "quickstart-demo:build"
211+
},
212+
"configurations": {
213+
"production": {
214+
"browserTarget": "quickstart-demo:build:production"
215+
}
216+
}
217+
},
218+
"extract-i18n": {
219+
"builder": "@angular-devkit/build-angular:extract-i18n",
220+
"options": {
221+
"browserTarget": "quickstart-demo:build"
222+
}
223+
},
224+
"test": {
225+
"builder": "@angular-devkit/build-angular:karma",
226+
"options": {
227+
"main": "projects/quickstart-demo/src/test.ts",
228+
"polyfills": "projects/quickstart-demo/src/polyfills.ts",
229+
"tsConfig": "projects/quickstart-demo/tsconfig.spec.json",
230+
"karmaConfig": "projects/quickstart-demo/karma.conf.js",
231+
"assets": [
232+
"projects/quickstart-demo/src/favicon.ico",
233+
"projects/quickstart-demo/src/assets"
234+
],
235+
"styles": [
236+
"projects/quickstart-demo/src/styles.css"
237+
],
238+
"scripts": []
239+
}
240+
},
241+
"lint": {
242+
"builder": "@angular-devkit/build-angular:tslint",
243+
"options": {
244+
"tsConfig": [
245+
"projects/quickstart-demo/tsconfig.app.json",
246+
"projects/quickstart-demo/tsconfig.spec.json",
247+
"projects/quickstart-demo/e2e/tsconfig.json"
248+
],
249+
"exclude": [
250+
"**/node_modules/**"
251+
]
252+
}
253+
},
254+
"e2e": {
255+
"builder": "@angular-devkit/build-angular:protractor",
256+
"options": {
257+
"protractorConfig": "projects/quickstart-demo/e2e/protractor.conf.js",
258+
"devServerTarget": "quickstart-demo:serve"
259+
},
260+
"configurations": {
261+
"production": {
262+
"devServerTarget": "quickstart-demo:serve:production"
263+
}
264+
}
265+
}
266+
}
154267
}
155268
},
156269
"schematics": {

package-lock.json

Lines changed: 6 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

projects/lib/src/angular-oauth-oidic.module.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { OAuthStorage, OAuthLogger } from './types';
22
import { NgModule, ModuleWithProviders } from '@angular/core';
33
import { CommonModule } from '@angular/common';
4-
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
4+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
55

66
import { OAuthService } from './oauth-service';
77
import { UrlHelperService } from './url-helper.service';
@@ -15,8 +15,7 @@ import { DefaultOAuthInterceptor } from './interceptors/default-oauth.intercepto
1515
import { ValidationHandler } from './token-validation/validation-handler';
1616
import { NullValidationHandler } from './token-validation/null-validation-handler';
1717
import { createDefaultLogger, createDefaultStorage } from './factories';
18-
import { CryptoHandler } from './token-validation/crypto-handler';
19-
import { JwksValidationHandler } from './token-validation/jwks-validation-handler';
18+
import { HashHandler, DefaultHashHandler } from './token-validation/hash-handler';
2019

2120
@NgModule({
2221
imports: [CommonModule],
@@ -36,7 +35,7 @@ export class OAuthModule {
3635
{ provide: OAuthLogger, useFactory: createDefaultLogger },
3736
{ provide: OAuthStorage, useFactory: createDefaultStorage },
3837
{ provide: ValidationHandler, useClass: validationHandlerClass},
39-
{ provide: CryptoHandler, useClass: JwksValidationHandler },
38+
{ provide: HashHandler, useClass: DefaultHashHandler },
4039
{
4140
provide: OAuthResourceServerErrorHandler,
4241
useClass: OAuthNoopResourceServerErrorHandler

projects/lib/src/oauth-service.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {
2626
import { b64DecodeUnicode, base64UrlEncode } from './base64-helper';
2727
import { AuthConfig } from './auth.config';
2828
import { WebHttpUrlEncodingCodec } from './encoder';
29-
import { CryptoHandler } from './token-validation/crypto-handler';
29+
import { HashHandler } from './token-validation/hash-handler';
3030

3131
/**
3232
* Service for logging in and logging out with
@@ -89,7 +89,7 @@ export class OAuthService extends AuthConfig implements OnDestroy {
8989
@Optional() protected config: AuthConfig,
9090
protected urlHelper: UrlHelperService,
9191
protected logger: OAuthLogger,
92-
@Optional() protected crypto: CryptoHandler,
92+
@Optional() protected crypto: HashHandler,
9393
) {
9494
super();
9595

@@ -217,15 +217,15 @@ export class OAuthService extends AuthConfig implements OnDestroy {
217217

218218
/**
219219
* Convenience method that first calls `loadDiscoveryDocumentAndTryLogin(...)`
220-
* and if then chains to `initImplicitFlow()`, but only if there is no valid
220+
* and if then chains to `initLoginFlow()`, but only if there is no valid
221221
* IdToken or no valid AccessToken.
222222
*
223223
* @param options LoginOptions to pass through to `tryLogin(...)`
224224
*/
225-
public loadDiscoveryDocumentAndLogin(options: LoginOptions = null): Promise<boolean> {
225+
public loadDiscoveryDocumentAndLogin(options: LoginOptions & { state?: string } = null): Promise<boolean> {
226226
return this.loadDiscoveryDocumentAndTryLogin(options).then(_ => {
227227
if (!this.hasValidIdToken() || !this.hasValidAccessToken()) {
228-
this.initImplicitFlow();
228+
this.initLoginFlow(options.state);
229229
return false;
230230
} else {
231231
return true;

projects/lib/src/token-validation/crypto-handler.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { Injectable } from '@angular/core';
2+
3+
/**
4+
* Abstraction for crypto algorithms
5+
*/
6+
export abstract class HashHandler {
7+
abstract calcHash(valueToHash: string, algorithm: string): Promise<string>;
8+
}
9+
10+
@Injectable()
11+
export class DefaultHashHandler implements HashHandler {
12+
13+
async calcHash(valueToHash: string, algorithm: string): Promise<string> {
14+
const encoder = new TextEncoder();
15+
const data = encoder.encode(valueToHash);
16+
const hashArray = await window.crypto.subtle.digest(algorithm, data);
17+
return this.toHashString(hashArray);
18+
}
19+
20+
toHashString(buffer: ArrayBuffer) {
21+
const byteArray = new Uint8Array(buffer);
22+
let result = '';
23+
for (let e of byteArray) {
24+
result += String.fromCharCode(e);
25+
}
26+
return result;
27+
}
28+
29+
// hexString(buffer) {
30+
// const byteArray = new Uint8Array(buffer);
31+
// const hexCodes = [...byteArray].map(value => {
32+
// const hexCode = value.toString(16);
33+
// const paddedHexCode = hexCode.padStart(2, '0');
34+
// return paddedHexCode;
35+
// });
36+
37+
// return hexCodes.join('');
38+
// }
39+
40+
// toHashString(hexString: string) {
41+
// let result = '';
42+
// for (let i = 0; i < hexString.length; i += 2) {
43+
// let hexDigit = hexString.charAt(i) + hexString.charAt(i + 1);
44+
// let num = parseInt(hexDigit, 16);
45+
// result += String.fromCharCode(num);
46+
// }
47+
// return result;
48+
// }
49+
50+
}

projects/lib/src/token-validation/jwks-validation-handler.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import {
66
// declare var require: any;
77
// let rs = require('jsrsasign');
88

9-
import * as rs from 'jsrsasign';
9+
//import * as rs from 'jsrsasign';
10+
import { KEYUTIL, KJUR } from 'jsrsasign';
1011

1112
/**
1213
* Validates the signature of an id_token against one
@@ -109,12 +110,12 @@ export class JwksValidationHandler extends AbstractValidationHandler {
109110
return Promise.reject(error);
110111
}
111112

112-
let keyObj = rs.KEYUTIL.getKey(key);
113+
let keyObj = /*#__PURE__*/ KEYUTIL.getKey(key);
113114
let validationOptions = {
114115
alg: this.allowedAlgorithms,
115116
gracePeriod: this.gracePeriodInSec
116117
};
117-
let isValid = rs.KJUR.jws.JWS.verifyJWT(
118+
let isValid = /*#__PURE__*/ KJUR.jws.JWS.verifyJWT(
118119
params.idToken,
119120
keyObj,
120121
validationOptions
@@ -139,7 +140,7 @@ export class JwksValidationHandler extends AbstractValidationHandler {
139140
}
140141

141142
calcHash(valueToHash: string, algorithm: string): Promise<string> {
142-
let hashAlg = new rs.KJUR.crypto.MessageDigest({ alg: algorithm });
143+
let hashAlg = new /*#__PURE__*/ KJUR.crypto.MessageDigest({ alg: algorithm });
143144
let result = hashAlg.digestString(valueToHash);
144145
let byteArrayAsString = this.toByteArrayAsString(result);
145146
return Promise.resolve(byteArrayAsString);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2+
# For additional information regarding the format and rule options, please see:
3+
# https://github.com/browserslist/browserslist#queries
4+
5+
# You can see what browsers were selected by your queries by running:
6+
# npx browserslist
7+
8+
> 0.5%
9+
last 2 versions
10+
Firefox ESR
11+
not dead
12+
not IE 9-11 # For IE 9-11 support, remove 'not'.

0 commit comments

Comments
 (0)