Skip to content

Commit a89c77b

Browse files
committed
chore: update version to 20
1 parent c724ad7 commit a89c77b

File tree

99 files changed

+22420
-20439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+22420
-20439
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ For using this library with **Azure Active Directory** (**Azure AD**), we recomm
2828

2929
Also, the Okta community created some guidelines on how to use this lib with Okta. See the links at the end of this page for more information.
3030

31+
**Angular 20**: Use 20.x versions of this library (**should also work with older Angular versions!**).
32+
3133
**Angular 19**: Use 19.x versions of this library (**should also work with older Angular versions!**).
3234

3335
**Angular 18**: Use 18.x versions of this library (**should also work with older Angular versions!**).

angular.json

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"prefix": "lib",
1111
"architect": {
1212
"build": {
13-
"builder": "@angular-devkit/build-angular:ng-packagr",
13+
"builder": "@angular/build:ng-packagr",
1414
"options": {
1515
"tsConfig": "projects/lib/tsconfig.lib.json",
1616
"project": "projects/lib/ng-package.json"
@@ -41,7 +41,7 @@
4141
"schematics": {},
4242
"architect": {
4343
"build": {
44-
"builder": "@angular-devkit/build-angular:application",
44+
"builder": "@angular/build:application",
4545
"options": {
4646
"outputPath": {
4747
"base": "dist/sample",
@@ -92,7 +92,7 @@
9292
"defaultConfiguration": ""
9393
},
9494
"serve": {
95-
"builder": "@angular-devkit/build-angular:dev-server",
95+
"builder": "@angular/build:dev-server",
9696
"options": {
9797
"buildTarget": "sample:build"
9898
},
@@ -103,13 +103,13 @@
103103
}
104104
},
105105
"extract-i18n": {
106-
"builder": "@angular-devkit/build-angular:extract-i18n",
106+
"builder": "@angular/build:extract-i18n",
107107
"options": {
108108
"buildTarget": "sample:build"
109109
}
110110
},
111111
"test": {
112-
"builder": "@angular-devkit/build-angular:karma",
112+
"builder": "@angular/build:karma",
113113
"options": {
114114
"main": "projects/sample/src/test.ts",
115115
"polyfills": "projects/sample/src/polyfills.ts",
@@ -136,7 +136,7 @@
136136
"prefix": "app",
137137
"architect": {
138138
"build": {
139-
"builder": "@angular-devkit/build-angular:application",
139+
"builder": "@angular/build:application",
140140
"options": {
141141
"outputPath": {
142142
"base": "dist/quickstart-demo",
@@ -186,7 +186,7 @@
186186
"defaultConfiguration": ""
187187
},
188188
"serve": {
189-
"builder": "@angular-devkit/build-angular:dev-server",
189+
"builder": "@angular/build:dev-server",
190190
"options": {
191191
"buildTarget": "quickstart-demo:build"
192192
},
@@ -197,13 +197,13 @@
197197
}
198198
},
199199
"extract-i18n": {
200-
"builder": "@angular-devkit/build-angular:extract-i18n",
200+
"builder": "@angular/build:extract-i18n",
201201
"options": {
202202
"buildTarget": "quickstart-demo:build"
203203
}
204204
},
205205
"test": {
206-
"builder": "@angular-devkit/build-angular:karma",
206+
"builder": "@angular/build:karma",
207207
"options": {
208208
"main": "projects/quickstart-demo/src/test.ts",
209209
"polyfills": "projects/quickstart-demo/src/polyfills.ts",
@@ -226,14 +226,14 @@
226226
"prefix": "lib",
227227
"architect": {
228228
"build": {
229-
"builder": "@angular-devkit/build-angular:ng-packagr",
229+
"builder": "@angular/build:ng-packagr",
230230
"options": {
231231
"tsConfig": "projects/angular-oauth2-oidc-jwks/tsconfig.lib.json",
232232
"project": "projects/angular-oauth2-oidc-jwks/ng-package.json"
233233
}
234234
},
235235
"test": {
236-
"builder": "@angular-devkit/build-angular:karma",
236+
"builder": "@angular/build:karma",
237237
"options": {
238238
"main": "projects/angular-oauth2-oidc-jwks/src/test.ts",
239239
"tsConfig": "projects/angular-oauth2-oidc-jwks/tsconfig.spec.json",
@@ -250,7 +250,7 @@
250250
"prefix": "app",
251251
"architect": {
252252
"build": {
253-
"builder": "@angular-devkit/build-angular:application",
253+
"builder": "@angular/build:application",
254254
"options": {
255255
"outputPath": {
256256
"base": "dist/quickstart-standalone",
@@ -297,7 +297,7 @@
297297
"defaultConfiguration": "production"
298298
},
299299
"serve": {
300-
"builder": "@angular-devkit/build-angular:dev-server",
300+
"builder": "@angular/build:dev-server",
301301
"configurations": {
302302
"production": {
303303
"buildTarget": "quickstart-standalone:build:production"
@@ -309,13 +309,13 @@
309309
"defaultConfiguration": "development"
310310
},
311311
"extract-i18n": {
312-
"builder": "@angular-devkit/build-angular:extract-i18n",
312+
"builder": "@angular/build:extract-i18n",
313313
"options": {
314314
"buildTarget": "quickstart-standalone:build"
315315
}
316316
},
317317
"test": {
318-
"builder": "@angular-devkit/build-angular:karma",
318+
"builder": "@angular/build:karma",
319319
"options": {
320320
"polyfills": [
321321
"zone.js",
@@ -337,7 +337,29 @@
337337
},
338338
"schematics": {
339339
"@schematics/angular:component": {
340-
"style": "css"
340+
"style": "css",
341+
"type": "component"
342+
},
343+
"@schematics/angular:directive": {
344+
"type": "directive"
345+
},
346+
"@schematics/angular:service": {
347+
"type": "service"
348+
},
349+
"@schematics/angular:guard": {
350+
"typeSeparator": "."
351+
},
352+
"@schematics/angular:interceptor": {
353+
"typeSeparator": "."
354+
},
355+
"@schematics/angular:module": {
356+
"typeSeparator": "."
357+
},
358+
"@schematics/angular:pipe": {
359+
"typeSeparator": "."
360+
},
361+
"@schematics/angular:resolver": {
362+
"typeSeparator": "."
341363
}
342364
},
343365
"cli": {

docs/additional-documentation/adapt-id_token-validation.html

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,61 @@
1212
<link rel="stylesheet" href="../styles/dark.css">
1313
</head>
1414
<body>
15-
16-
<div class="navbar navbar-default navbar-fixed-top d-block d-sm-none">
17-
<a href="../" class="navbar-brand">angular-oauth2-oidc</a>
18-
<button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
15+
<script>
16+
// Blocking script to avoid flickering dark mode
17+
// Dark mode toggle button
18+
var useDark = window.matchMedia('(prefers-color-scheme: dark)');
19+
var darkModeState = useDark.matches;
20+
var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
21+
var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
22+
var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');
23+
24+
function checkToggle(check) {
25+
for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
26+
$darkModeToggleSwitchers[i].checked = check;
27+
}
28+
}
29+
30+
function toggleDarkMode(state) {
31+
if (window.localStorage) {
32+
localStorage.setItem('compodoc_darkmode-state', state);
33+
}
34+
35+
checkToggle(state);
36+
37+
const hasClass = document.body.classList.contains('dark');
38+
39+
if (state) {
40+
for (var i = 0; i < $darkModeToggles.length; i++) {
41+
$darkModeToggles[i].classList.add('dark');
42+
}
43+
if (!hasClass) {
44+
document.body.classList.add('dark');
45+
}
46+
} else {
47+
for (var i = 0; i < $darkModeToggles.length; i++) {
48+
$darkModeToggles[i].classList.remove('dark');
49+
}
50+
if (hasClass) {
51+
document.body.classList.remove('dark');
52+
}
53+
}
54+
}
55+
56+
useDark.addEventListener('change', function (evt) {
57+
toggleDarkMode(evt.matches);
58+
});
59+
if (darkModeStateLocal) {
60+
darkModeState = darkModeStateLocal === 'true';
61+
}
62+
toggleDarkMode(darkModeState);
63+
</script>
64+
65+
<div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
66+
<div class="d-flex">
67+
<a href="../" class="navbar-brand">angular-oauth2-oidc</a>
68+
<button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
69+
</div>
1970
</div>
2071

2172
<div class="xs-menu menu" id="mobile-menu">
@@ -24,7 +75,7 @@
2475

2576
<div class="container-fluid main">
2677
<div class="row main">
27-
<div class="hidden-xs menu">
78+
<div class="d-none d-md-block menu">
2879
<compodoc-menu mode="normal"></compodoc-menu>
2980
</div>
3081
<!-- START CONTENT -->
@@ -58,14 +109,14 @@ <h1>Configure/ Adapt id_token Validation</h1>
58109
<li>NullValidationHandler</li>
59110
</ul>
60111
<p>The former one validates the signature against public keys received via the discovery document (property jwks) and the later one skips the validation on client side.</p>
61-
<div><pre class="line-numbers"><code class="language-TypeScript">import { JwksValidationHandler } from &#39;angular-oauth2-oidc&#39;;
112+
<b>Example :</b><div><pre class="line-numbers"><code class="language-TypeScript">import { JwksValidationHandler } from &#39;angular-oauth2-oidc&#39;;
62113

63114
[...]
64115

65116
this.oauthService.tokenValidationHandler = new JwksValidationHandler();</code></pre></div><p>In cases where no ValidationHandler is defined, you receive a warning on the console. This means that the library wants you to explicitly decide on this.</p>
66117
<h2>Dependency Injection</h2>
67118
<p>You can also setup a ValidationHandler by leveraging dependency injection:</p>
68-
<div><pre class="line-numbers"><code class="language-TypeScript">[...]
119+
<b>Example :</b><div><pre class="line-numbers"><code class="language-TypeScript">[...]
69120
providers: [
70121
{ provide: ValidationHandler, useClass: JwksValidationHandler },
71122
],
@@ -100,6 +151,19 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
100151
var MAX_SEARCH_RESULTS = 15;
101152
</script>
102153

154+
<script>
155+
$darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
156+
checkToggle(darkModeState);
157+
if ($darkModeToggleSwitchers.length > 0) {
158+
for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
159+
$darkModeToggleSwitchers[i].addEventListener('change', function (event) {
160+
darkModeState = !darkModeState;
161+
toggleDarkMode(darkModeState);
162+
});
163+
}
164+
}
165+
</script>
166+
103167
<script src="../js/libs/custom-elements.min.js"></script>
104168
<script src="../js/libs/lit-html.js"></script>
105169

docs/additional-documentation/authorization-servers.html

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,61 @@
1212
<link rel="stylesheet" href="../styles/dark.css">
1313
</head>
1414
<body>
15-
16-
<div class="navbar navbar-default navbar-fixed-top d-block d-sm-none">
17-
<a href="../" class="navbar-brand">angular-oauth2-oidc</a>
18-
<button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
15+
<script>
16+
// Blocking script to avoid flickering dark mode
17+
// Dark mode toggle button
18+
var useDark = window.matchMedia('(prefers-color-scheme: dark)');
19+
var darkModeState = useDark.matches;
20+
var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
21+
var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
22+
var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');
23+
24+
function checkToggle(check) {
25+
for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
26+
$darkModeToggleSwitchers[i].checked = check;
27+
}
28+
}
29+
30+
function toggleDarkMode(state) {
31+
if (window.localStorage) {
32+
localStorage.setItem('compodoc_darkmode-state', state);
33+
}
34+
35+
checkToggle(state);
36+
37+
const hasClass = document.body.classList.contains('dark');
38+
39+
if (state) {
40+
for (var i = 0; i < $darkModeToggles.length; i++) {
41+
$darkModeToggles[i].classList.add('dark');
42+
}
43+
if (!hasClass) {
44+
document.body.classList.add('dark');
45+
}
46+
} else {
47+
for (var i = 0; i < $darkModeToggles.length; i++) {
48+
$darkModeToggles[i].classList.remove('dark');
49+
}
50+
if (hasClass) {
51+
document.body.classList.remove('dark');
52+
}
53+
}
54+
}
55+
56+
useDark.addEventListener('change', function (evt) {
57+
toggleDarkMode(evt.matches);
58+
});
59+
if (darkModeStateLocal) {
60+
darkModeState = darkModeStateLocal === 'true';
61+
}
62+
toggleDarkMode(darkModeState);
63+
</script>
64+
65+
<div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
66+
<div class="d-flex">
67+
<a href="../" class="navbar-brand">angular-oauth2-oidc</a>
68+
<button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
69+
</div>
1970
</div>
2071

2172
<div class="xs-menu menu" id="mobile-menu">
@@ -24,7 +75,7 @@
2475

2576
<div class="container-fluid main">
2677
<div class="row main">
27-
<div class="hidden-xs menu">
78+
<div class="d-none d-md-block menu">
2879
<compodoc-menu mode="normal"></compodoc-menu>
2980
</div>
3081
<!-- START CONTENT -->
@@ -85,6 +136,19 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
85136
var MAX_SEARCH_RESULTS = 15;
86137
</script>
87138

139+
<script>
140+
$darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
141+
checkToggle(darkModeState);
142+
if ($darkModeToggleSwitchers.length > 0) {
143+
for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
144+
$darkModeToggleSwitchers[i].addEventListener('change', function (event) {
145+
darkModeState = !darkModeState;
146+
toggleDarkMode(darkModeState);
147+
});
148+
}
149+
}
150+
</script>
151+
88152
<script src="../js/libs/custom-elements.min.js"></script>
89153
<script src="../js/libs/lit-html.js"></script>
90154

0 commit comments

Comments
 (0)