oidc-spa 8.2.10 → 8.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +156 -22
- package/core/createOidc.js +1 -1
- package/esm/core/createOidc.js +1 -1
- package/esm/react-spa/createOidcSpaApi.js +1 -1
- package/esm/react-spa/createOidcSpaApi.js.map +1 -1
- package/esm/react-spa/types.d.ts +5 -5
- package/esm/tanstack-start/react/createOidcSpaApi.js +107 -88
- package/esm/tanstack-start/react/createOidcSpaApi.js.map +1 -1
- package/esm/tanstack-start/react/types.d.ts +43 -21
- package/package.json +1 -1
- package/react-spa/createOidcSpaApi.js +1 -1
- package/react-spa/createOidcSpaApi.js.map +1 -1
- package/react-spa/types.d.ts +5 -5
- package/src/react-spa/createOidcSpaApi.tsx +1 -1
- package/src/react-spa/types.tsx +5 -5
- package/src/tanstack-start/react/createOidcSpaApi.tsx +145 -153
- package/src/tanstack-start/react/types.tsx +40 -29
package/README.md
CHANGED
|
@@ -24,37 +24,170 @@
|
|
|
24
24
|
<a href="https://docs.oidc-spa.dev">Documentation</a>
|
|
25
25
|
</p>
|
|
26
26
|
|
|
27
|
+
## At a glance
|
|
28
|
+
|
|
29
|
+
The Framework Agnostic Adapter:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import { createOidc } from "oidc-spa/core";
|
|
33
|
+
import { z } from "zod";
|
|
34
|
+
|
|
35
|
+
const oidc = await createOidc({
|
|
36
|
+
issuerUri: "https://auth.my-domain.net/realms/myrealm",
|
|
37
|
+
//issuerUri: "https://login.microsoftonline.com/...",
|
|
38
|
+
//issuerUri: "https://xxx.us.auth0.com/..."
|
|
39
|
+
//issuerUri: "https://accounts.google.com/o/oauth2/v2/auth"
|
|
40
|
+
clientId: "myclient",
|
|
41
|
+
decodedIdTokenSchema: z.object({
|
|
42
|
+
name: z.string(),
|
|
43
|
+
picture: z.string().optional(),
|
|
44
|
+
email: z.string(),
|
|
45
|
+
realm_access: z.object({ roles: z.array(z.string()) })
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if (!oidc.isUserLoggedIn) {
|
|
50
|
+
oidc.login();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const { name, realm_access } = oidc.getDecodedIdToken();
|
|
55
|
+
|
|
56
|
+
console.log(`Hello ${name}`);
|
|
57
|
+
|
|
58
|
+
const { accessToken } = await oidc.getTokens();
|
|
59
|
+
|
|
60
|
+
await fetch("https://my-domain.net/api/todos", {
|
|
61
|
+
headers: {
|
|
62
|
+
Authorization: `Bearer ${accessToken}`
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
if (realm_access.roles.includes("realm-admin")) {
|
|
67
|
+
// User is an admin
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Higher level adapters, example with React + TanStack Router:
|
|
72
|
+
|
|
73
|
+
<img width="1835" height="942" alt="Image" src="https://github.com/user-attachments/assets/a7a18bbc-998a-459c-8cfa-93b599a45524" />
|
|
74
|
+
|
|
27
75
|
## What this is
|
|
28
76
|
|
|
29
|
-
oidc-spa is
|
|
77
|
+
oidc-spa is a framework-agnostic OpenID Connect client for browser-centric web applications implementing the [Authorization Code Flow with PKCE](https://docs.oidc-spa.dev/resources/why-no-client-secret).
|
|
30
78
|
|
|
31
|
-
|
|
79
|
+
It work with any spec compliant OIDC provider like [Keycloak](https://www.keycloak.org/), [Auth0](https://auth0.com/) or [Microsoft EntraID](https://www.microsoft.com/fr-fr/security/business/identity-access/microsoft-entra-id) and replace provider-specific SDKs like [keycloak-js](https://www.npmjs.com/package/keycloak-js), [auth0-spa-js](https://www.npmjs.com/package/@auth0/auth0-spa-js), or [@azure/msal-browser](https://www.npmjs.com/package/@azure/msal-browser) with one unified API, freeing your app from vendor lock-in and making it deployable in any IT system.
|
|
80
|
+
Concretely this mean that it let you build an app and sell it to different companies ensuring they will be able to deploy it in their environment regardless of what auth platform they use internally.  
|
|
32
81
|
|
|
33
|
-
oidc-spa provides strong guarantees regarding the
|
|
82
|
+
oidc-spa provides strong guarantees regarding the protection of your tokens [**even in case of successful XSS or supply chain attacks**](https://docs.oidc-spa.dev/v/v8/resources/xss-and-supply-chain-attack-protection). No other implementation can currently claim that.  
|
|
34
83
|
|
|
35
|
-
|
|
84
|
+
It is uncompromising in terms of performance, security, DX, and UX. You get a state-of-the-art authentication and authorization system out of the box with zero glue code to write and no knobs to adjust.
|
|
36
85
|
|
|
37
|
-
Unlike server-centric solutions such as [
|
|
86
|
+
Unlike server-centric solutions such as [Auth.js](https://authjs.dev/), oidc-spa makes the frontend the OIDC client in your IdP model's representation.
|
|
38
87
|
|
|
39
|
-
Your backend becomes a simple OAuth2 resource server
|
|
88
|
+
Your backend becomes a simple OAuth2 resource server that you frontend query with the access token attached as Authorization header. oidc-spa also provides the tools for token validation on the server side:
|
|
40
89
|
|
|
41
|
-
|
|
90
|
+
- As an unified solution for [TanStack Start](https://tanstack.com/router/latest) 
|
|
91
|
+
- Or, as [a separate adapter](integration-guides/tanstack-router-+-node-rest-api.md) for creating authed APIs with [tRCP](https://trpc.io/), [Express](https://expressjs.com/), [Hono](https://hono.dev/), [Nest.js](https://nestjs.com/), ect.
|
|
42
92
|
|
|
43
|
-
|
|
93
|
+
That means **no database,** no session store, and **enterprise-grade UX** out of the box, while scaling naturally to edge runtimes.
|
|
94
|
+
|
|
95
|
+
oidc-spa exposes real OIDC primitives, decoded ID tokens, access tokens, and claims, instead of hiding them behind a “user” object, helping you understand and control your security posture.
|
|
44
96
|
|
|
45
97
|
It’s infra-light, open-standard, transparent, and ready to work in minutes.
|
|
46
98
|
|
|
47
|
-
|
|
99
|
+
<details>
|
|
100
|
+
|
|
101
|
+
<summary>But in details? I want to understand the tradeoffs.</summary>
|
|
102
|
+
<br />
|
|
103
|
+
|
|
104
|
+
In the modern tech ecosystem, no one “rolls their own auth” anymore, not even OpenAI or Vercel.\
|
|
105
|
+
Authentication has become a **platform concern**. Whether you host your own identity provider like **Keycloak**, or use a service such as **Auth0** or **Microsoft Entra ID**, authentication today means **redirecting users to your auth provider**.
|
|
48
106
|
|
|
49
|
-
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
**Why not** [**BetterAuth**](https://www.better-auth.com/) **or** [**Auth.js**](https://authjs.dev/)
|
|
110
|
+
|
|
111
|
+
These are great for what they are, but they’re “roll your own auth” solutions.\
|
|
112
|
+
With oidc-spa, you delegate authentication to a specialized identity provider such as Keycloak, Auth0, Okta, or Clerk.
|
|
113
|
+
|
|
114
|
+
With BetterAuth, your backend _is_ the authorization server, even if you can integrate third party identity providers id doesn't change that fact.\
|
|
115
|
+
That’s very battery-included, but also far heavier infrastructure-wise.\
|
|
116
|
+
Today, very few companies still roll their own auth, not even OpenAI or Vercel.
|
|
117
|
+
|
|
118
|
+
Another big difference: oidc-spa is **browser-centric**. The token exchange happens on the client,\
|
|
119
|
+
and the backend server is merely an OAuth2 resource server in the OIDC model.
|
|
120
|
+
|
|
121
|
+
If you use BetterAuth to provide login via Keycloak, your backend becomes the OIDC client application,\
|
|
122
|
+
which has some security benefits over browser token exchange, but at the cost of centralization and requiring backend infrastructure.
|
|
50
123
|
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
124
|
+
One clear advantage BetterAuth has over oidc-spa is more natural SSR support. In the oidc-spa model, the server doesn’t know the authentication state of the user at all time, which makes it difficult to integrate with traditional full-stack frameworks that rely on server-side rendering.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
**Server Side Rendering**
|
|
129
|
+
|
|
130
|
+
The only SSR-capable framework we currently support is [TanStack Start](https://tanstack.com/start/latest), because it provides the low-level primitives needed to render as much as possible on the server while deferring rendering of auth aware components to the client.
|
|
131
|
+
|
|
132
|
+
This approach achieves a similar UX and performance to server-centric frameworks, but it’s inherently less transparent than streaming fully authenticated components to the client.
|
|
133
|
+
|
|
134
|
+
Try the TansStack Start example deployment with JavaScript disabled to get a feel of what can and can't be SSR'd: [https://example-tanstack-start.oidc-spa.dev/](https://example-tanstack-start.oidc-spa.dev/)
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**Security and XSS resilience**
|
|
139
|
+
|
|
140
|
+
Yes; client-side authentication raises valid security concerns.\
|
|
141
|
+
But this isn’t a fatal flaw; it’s an **engineering challenge**, and oidc-spa addresses it head-on.
|
|
142
|
+
|
|
143
|
+
It treats the browser as a **hostile environment**, going to great lengths to protect tokens even under **XSS or supply-chain attacks**.\
|
|
144
|
+
These mitigations [are documented here](resources/why-no-client-secret.md).
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
**Limitations regarding backend delegation**
|
|
149
|
+
|
|
150
|
+
The main limitation is with **long-running background operations**.\
|
|
151
|
+
If your backend must call third-party APIs **on behalf of the user** while they’re offline, you’ll need **service accounts** for those APIs or take charge of rotating tokens yourself which [can be tricky](https://authjs.dev/guides/refresh-token-rotation).\
|
|
152
|
+
Beyond that, everything else scalability, DX, performance, works in your favor.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
If that all sounds good to you…\
|
|
157
|
+
**Let’s get started.**
|
|
158
|
+
|
|
159
|
+
</details>
|
|
160
|
+
|
|
161
|
+
## Integration
|
|
162
|
+
|
|
163
|
+
- Full Stack - all in one auth solution:
|
|
164
|
+
- [TanStack Start](https://docs.oidc-spa.dev/integration-guides/tanstack-start)
|
|
165
|
+
- Single Page Apps (SPAs):
|
|
166
|
+
- [Framework Agnostic](https://docs.oidc-spa.dev/integration-guides/usage)
|
|
167
|
+
- [React Router](https://docs.oidc-spa.dev/integration-guides/react-router)
|
|
168
|
+
- [Tanstack Router](https://docs.oidc-spa.dev/integration-guides/tanstack-router-start/react-router)
|
|
169
|
+
- [Angular](https://docs.oidc-spa.dev/integration-guides/angular)
|
|
170
|
+
- ...More to come...
|
|
171
|
+
- Backend: [Express, Hono, tRPC, Nest.js ...](https://docs.oidc-spa.dev/integration-guides/tanstack-router-+-node-rest-api)
|
|
55
172
|
|
|
56
173
|
## Comparison with Existing Libraries
|
|
57
174
|
|
|
175
|
+
With other OIDC clients, you'll get something that works in the happy path.
|
|
176
|
+
But then you will face issues like:
|
|
177
|
+
|
|
178
|
+
- The user cannot navigate back from the login page to your app.
|
|
179
|
+
- User get hit with "your session has expired please login again" after spending an hours filling your form.
|
|
180
|
+
- User logged out or logged in on one tabe but the state is not propagated to the other tabs.
|
|
181
|
+
- Random 401 from your API with "token expired"
|
|
182
|
+
- You can't run E2E test without having to actually connect to a real server.
|
|
183
|
+
|
|
184
|
+
Plus you'll realize that your configuration works with one provider in one devloppement configuration,
|
|
185
|
+
try to switch IdP and the all thing fall appart, you'll be met with criptic errors and have to spend
|
|
186
|
+
days tweeking knobs again.
|
|
187
|
+
|
|
188
|
+
With oidc-spa, there's no knobs to adjust, things just work out of the box.
|
|
189
|
+
And you get XSS and suply chain attack protection, unlike with any other client side solution.
|
|
190
|
+
|
|
58
191
|
### [oidc-client-ts](https://github.com/authts/oidc-client-ts)
|
|
59
192
|
|
|
60
193
|
It is a great low-level implementation of the OIDC primitives.
|
|
@@ -65,12 +198,13 @@ code that has no business living in application-level logic.
|
|
|
65
198
|
Example of what you get out of the box with oidc-spa:
|
|
66
199
|
|
|
67
200
|
- **Login/logout propagation** across tabs
|
|
68
|
-
- **
|
|
201
|
+
- **SSO that just works**, regardless of the deployment configuration.
|
|
69
202
|
- **Seamless browser back/forward cache (bfcache) management**
|
|
70
|
-
- **Auto logout
|
|
203
|
+
- **Auto logout**: avoid "your session has expired please login again" after the used just spend an hour filling your form.
|
|
71
204
|
- **Never getting an expired access token error**, even after waking from sleep
|
|
72
205
|
- **Graceful handling when the provider lacks refresh tokens or a logout endpoint** (e.g. Google OAuth)
|
|
73
206
|
- **Mock support**, run with a mock identity without contacting a server
|
|
207
|
+
- **Helpfull debug logs** important if you sell your solution, to streamline deployment.
|
|
74
208
|
|
|
75
209
|
oidc-spa just works. You provide the few parameters required to talk to your IdP, and that’s it.
|
|
76
210
|
|
|
@@ -115,27 +249,27 @@ oidc-spa exposes an Angular adapter: [oidc-spa/angular](https://docs.oidc-spa.de
|
|
|
115
249
|
This is a solid generic OIDC adapter.
|
|
116
250
|
However, `oidc-spa/angular` still has several advantages:
|
|
117
251
|
|
|
118
|
-
- [Better security guarantees](https://docs.oidc-spa.dev/resources/
|
|
119
|
-
-
|
|
252
|
+
- [Better security guarantees](https://docs.oidc-spa.dev/resources/xss-and-supply-chain-attack-protection) (angular-oauth2-oidc does not protect tokens from XSS or supply-chain attacks)
|
|
253
|
+
- DX more aligned with modern Angular.
|
|
120
254
|
- Auto logout overlay (“Are you still there?” countdown)
|
|
121
255
|
- Stronger type safety with propagated user profile types
|
|
122
256
|
- Ability to start rendering before session restoration settles
|
|
123
257
|
- Support for multiple resource servers
|
|
124
258
|
- Clearer and more actionable error messages for misconfiguration
|
|
125
259
|
|
|
126
|
-
### [BetterAuth](https://www.better-auth.com/) / [
|
|
260
|
+
### [BetterAuth](https://www.better-auth.com/) / [Auth.js](https://authjs.dev/)
|
|
127
261
|
|
|
128
|
-
These are great for what they are
|
|
262
|
+
These are great for what they are, but they’re “roll your own auth” solutions.
|
|
129
263
|
With oidc-spa, you delegate authentication to a specialized identity provider such as Keycloak, Auth0, Okta, or Clerk.
|
|
130
264
|
|
|
131
|
-
With BetterAuth, your backend _is_ the authorization server.
|
|
265
|
+
With BetterAuth, your backend _is_ the authorization server. (even if you can integrate third party provider).
|
|
132
266
|
That’s very battery-included, but also far heavier infrastructure-wise.
|
|
133
267
|
Today, very few companies still roll their own auth—including OpenAI and Vercel.
|
|
134
268
|
|
|
135
269
|
Another big difference: oidc-spa is **browser-centric**. The token exchange happens on the client,
|
|
136
270
|
and the backend server is merely an OAuth2 resource server in the OIDC model.
|
|
137
271
|
|
|
138
|
-
If you use BetterAuth to provide login via Keycloak, your backend becomes the OIDC client application
|
|
272
|
+
If you use BetterAuth to provide login via Keycloak, your backend becomes the OIDC client application,
|
|
139
273
|
which has some security benefits over browser token exchange, but at the cost of centralization and requiring backend infrastructure.
|
|
140
274
|
|
|
141
275
|
One clear advantage BetterAuth has over oidc-spa is SSR support.
|
package/core/createOidc.js
CHANGED
|
@@ -71,7 +71,7 @@ const instancesThatCantUseIframes_1 = require("./instancesThatCantUseIframes");
|
|
|
71
71
|
const desiredPostLoginRedirectUrl_1 = require("./desiredPostLoginRedirectUrl");
|
|
72
72
|
const homeAndRedirectUri_1 = require("./homeAndRedirectUri");
|
|
73
73
|
// NOTE: Replaced at build time
|
|
74
|
-
const VERSION = "8.2.
|
|
74
|
+
const VERSION = "8.2.11";
|
|
75
75
|
const globalContext = {
|
|
76
76
|
prOidcByConfigId: new Map(),
|
|
77
77
|
hasLogoutBeenCalled: (0, id_1.id)(false)
|
package/esm/core/createOidc.js
CHANGED
|
@@ -34,7 +34,7 @@ import { evtIsThereMoreThanOneInstanceThatCantUserIframes, notifyNewInstanceThat
|
|
|
34
34
|
import { getDesiredPostLoginRedirectUrl } from "./desiredPostLoginRedirectUrl";
|
|
35
35
|
import { getHomeAndRedirectUri } from "./homeAndRedirectUri";
|
|
36
36
|
// NOTE: Replaced at build time
|
|
37
|
-
const VERSION = "8.2.
|
|
37
|
+
const VERSION = "8.2.11";
|
|
38
38
|
const globalContext = {
|
|
39
39
|
prOidcByConfigId: new Map(),
|
|
40
40
|
hasLogoutBeenCalled: id(false)
|
|
@@ -76,7 +76,7 @@ export function createOidcSpaApi(params) {
|
|
|
76
76
|
break check_assertion;
|
|
77
77
|
}
|
|
78
78
|
const getMessage = (v) => [
|
|
79
|
-
"There is a logic error in the application.",
|
|
79
|
+
"oidc-spa: There is a logic error in the application.",
|
|
80
80
|
`If this component is mounted the user is supposed ${v}.`,
|
|
81
81
|
"An explicit assertion was made in this sense."
|
|
82
82
|
].join(" ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOidcSpaApi.js","sourceRoot":"","sources":["../../src/react-spa/createOidcSpaApi.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAsC,MAAM,OAAO,CAAC;AAI5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAe,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,UAAU,gBAAgB,CAG9B,MAMD;IACG,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IAExE,MAAM,kBAAkB,GAAG,IAAI,QAAQ,EAAgD,CAAC;IAExF,MAAM,8BAA8B,GAAG,IAAI,QAAQ,EAEhD,CAAC;IAEJ,MAAM,kBAAkB,GAAG,iBAAiB,CACxC,GAAG,EAAE,CAAC,CAAC;QACH,oBAAoB,EAAE,KAAK;KAC9B,CAAC,CACL,CAAC;IAEF,8BAA8B,CAAC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE;QACnE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAEhF,MAAM,CAAC,WAAW,CAAC,CAAC;QAEpB,IAAI,iBAAiB,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YAC9C,OAAO;QACX,CAAC;QACD,MAA+D,CAAC;QAEhE,MAAM,EAAE,+BAA+B,GAAG,EAAE,EAAE,GAAG,iBAAiB,CAAC;QAEnE,IACI,6BAA6B,KAAK,SAAS;YAC3C,6BAA6B,YAAY,uBAAuB,EAClE,CAAC;YACC,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,6BAA6B,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,QAAQ,CAAC,8BAA8B,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAsD,CAAC,GAAG,EAAE;gBACtE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC5B,OAAO;wBACH,oBAAoB,EAAE,KAAK;qBAC9B,CAAC;gBACN,CAAC;gBAED,IAAI,WAAW,GAAG,+BAA+B,EAAE,CAAC;oBAChD,OAAO;wBACH,oBAAoB,EAAE,KAAK;qBAC9B,CAAC;gBACN,CAAC;gBAED,OAAO;oBACH,oBAAoB,EAAE,IAAI;oBAC1B,2BAA2B,EAAE,WAAW;iBAC3C,CAAC;YACN,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBACrF,OAAO;YACX,CAAC;YAED,kBAAkB,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,SAAS,OAAO,CAAC,MAEhB;QACG,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAE/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACX;gBACI,kDAAkD;gBAClD,6DAA6D;gBAC7D,gDAAgD;aACnD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;QACN,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,QAAQ,EAAE,CAAC;QAEnF,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,8BAA8B,CAAC,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,QAAQ,YAAY,uBAAuB,EAAE,CAAC;YAC9C,MAAM,QAAQ,CAAC;QACnB,CAAC;QAED,eAAe,EAAE,CAAC;YACd,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,eAAe,CAAC;YAC1B,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAC7B;gBACI,4CAA4C;gBAC5C,qDAAqD,CAAC,GAAG;gBACzD,+CAA+C;aAClD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhB,QAAQ,aAAa,EAAE,CAAC;gBACpB,KAAK,gBAAgB;oBACjB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC,CAAC;oBAC5E,CAAC;oBACD,MAAM;gBACV,KAAK,oBAAoB;oBACrB,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,4CAA4C,CAAC,CAAC,CAAC;oBAC9E,CAAC;oBACD,MAAM;gBACV;oBACI,MAAM,CAAsC,KAAK,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAE,+BAA+B,CAAC,GAAG,QAAQ,CAA6B,GAAG,EAAE;YAClF,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,uBAAuB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAU,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1F,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3B,OAAO;YACX,CAAC;YAED,IAAI,QAAQ,GAAG,IAAI,CAAC;YAEpB,IAAI,WAAW,GAA6B,SAAS,CAAC;YAEtD,CAAC,KAAK,IAAI,EAAE;gBACR,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;oBACnC,MAAM,mBAAmB,GAAG,IAAI,QAAQ,EAAQ,CAAC;oBAEjD,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,uBAAuB,CAAC,SAAS,CAAC,GAAG,EAAE;wBAC9E,iBAAiB,EAAE,CAAC;wBACpB,mBAAmB,CAAC,OAAO,EAAE,CAAC;oBAClC,CAAC,CAAC,CAAC;oBACH,WAAW,GAAG,iBAAiB,CAAC;oBAEhC,MAAM,mBAAmB,CAAC,EAAE,CAAC;oBAE7B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,OAAO;oBACX,CAAC;gBACL,CAAC;gBAED,+BAA+B,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAE9D,WAAW,GAAG,QAAQ,CAAC,uBAAuB,CAAC,GAAG,EAAE;oBAChD,+BAA+B,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC,WAAW,CAAC;YACnB,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO,GAAG,EAAE;gBACR,QAAQ,GAAG,KAAK,CAAC;gBACjB,WAAW,EAAE,EAAE,CAAC;YACpB,CAAC,CAAC;QACN,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,CAAC,wBAAwB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAU,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3F,MAAM,CAAC,EAAE,gCAAgC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAExF,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,WAAW,GAA6B,SAAS,CAAC;YAEtD,CAAC,KAAK,IAAI,EAAE;gBACR,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC;oBACpC,MAAM,oBAAoB,GAAG,IAAI,QAAQ,EAAQ,CAAC;oBAElD,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE;wBAC/E,iBAAiB,EAAE,CAAC;wBACpB,oBAAoB,CAAC,OAAO,EAAE,CAAC;oBACnC,CAAC,CAAC,CAAC;oBACH,WAAW,GAAG,iBAAiB,CAAC;oBAEhC,MAAM,oBAAoB,CAAC,EAAE,CAAC;oBAE9B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,OAAO;oBACX,CAAC;gBACL,CAAC;gBAED,gCAAgC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAE7D,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,WAAW,CAAC;YAC7F,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO,GAAG,EAAE;gBACR,QAAQ,GAAG,KAAK,CAAC;gBACjB,WAAW,EAAE,EAAE,CAAC;YACpB,CAAC,CAAC;QACN,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,EAAE,CAA2B;gBAChC,cAAc,EAAE,KAAK;gBACrB,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;gBACjD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBAClC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB;gBAClD,eAAe,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE;gBAChD,KAAK,EAAE,MAAM,CAAC,EAAE,CACZ,QAAQ,CAAC,KAAK,CAAC;oBACX,2BAA2B,EAAE,KAAK;oBAClC,GAAG,MAAM;iBACZ,CAAC;aACT,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAwC;YAC7C,cAAc,EAAE,IAAI;YACpB,IAAI,cAAc;gBACd,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,OAAO,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACxC,CAAC;YACD,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;YAC/C,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;YACjD,IAAI,eAAe;gBACf,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;gBACxC,OAAO,kBAAkB,CAAC,OAAO,CAAC;YACtC,CAAC;YACD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;YACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;YAClC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB;SACrD,CAAC,CAAC;IACP,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,MAEtB;QACG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,8BAA8B,CAAC,EAAE,CAAC;QAEzD,IAAI,QAAQ,YAAY,uBAAuB,EAAE,CAAC;YAC9C,OAAO,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,MAAM,EAAE,MAAM,KAAK,gBAAgB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CACX;gBACI,wDAAwD;gBACxD,0CAA0C;aAC7C,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;QACN,CAAC;QACD,IAAI,MAAM,EAAE,MAAM,KAAK,oBAAoB,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACX;gBACI,4DAA4D;gBAC5D,sCAAsC;aACzC,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;QACN,CAAC;QAED,OAAO,QAAQ,CAAC,cAAc;YAC1B,CAAC,CAAC,EAAE,CAAwC;gBACtC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBAClC,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,KAAK,IAAI,EAAE;oBACvB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnD,OAAO,WAAW,CAAC;gBACvB,CAAC;gBACD,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;gBAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;gBAC/C,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;gBACjD,0BAA0B,EAAE,IAAI,CAAC,EAAE;oBAC/B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAEjC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAE3D,OAAO,EAAE,8BAA8B,EAAE,WAAW,EAAE,CAAC;gBAC3D,CAAC;aACJ,CAAC;YACJ,CAAC,CAAC,EAAE,CAA2B;gBACzB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBAClC,cAAc,EAAE,KAAK;gBACrB,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;gBACjD,KAAK,EAAE,QAAQ,CAAC,KAAK;aACxB,CAAC,CAAC;IACb,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEhE,IAAI,wBAAwB,GAA8B,SAAS,CAAC;IAEpE,MAAM,aAAa,GAAG,CAClB,iBAA+D,EAClD,EAAE;QACf,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,wBAAwB,CAAC;QACpC,CAAC;QAED,wBAAwB,GAAG,8BAA8B,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE5E,CAAC,KAAK,IAAI,EAAE;YACR,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO;YACX,CAAC;YAED,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;YAEnC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE9C,QAAQ,iBAAiB,CAAC,cAAc,EAAE,CAAC;gBACvC,KAAK,MAAM;oBACP,CAAC;wBACG,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;wBAExD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;4BAClC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;4BACpC,uFAAuF;4BACvF,SAAS,EAAE,SAAkB;4BAC7B,oDAAoD;4BACpD,uBAAuB,EAAE,iBAAiB,CAAC,uBAAwB;4BACnE,YAAY,EAAE;gCACV,QAAQ,EAAE,iBAAiB,CAAC,aAAa;gCACzC,SAAS,EAAE,iBAAiB,CAAC,cAAc;6BAC9C;4BACD,YAAY,EAAE;gCACV,cAAc,EACV,iBAAiB,CAAC,mBAAmB;oCACrC,mBAAmB;oCACnB,gCAAgC,CAAiB;wCAC7C,YAAY,EAAE;4CACV,8DAA8D;4CAC9D,gEAAgE;4CAChE,uDAAuD;4CACvD,0DAA0D;yCAC7D,CAAC,IAAI,CAAC,GAAG,CAAC;qCACd,CAAC;6BACT;yBACJ,CAAC,CAAC;wBAEH,8BAA8B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACrD,CAAC;oBACD,MAAM;gBACV,KAAK,MAAM;oBACP,CAAC;wBACG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAAC;wBAE1C,IAAI,6BAEyB,CAAC;wBAE9B,IAAI,CAAC;4BACD,6BAA6B,GAAG,MAAM,UAAU,CAAC;gCAC7C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;gCACpC,SAAS;gCACT,oBAAoB;gCACpB,SAAS,EAAE,iBAAiB,CAAC,SAAS;gCACtC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;gCACpC,4BAA4B,EACxB,iBAAiB,CAAC,4BAA4B;gCAClD,MAAM,EAAE,iBAAiB,CAAC,MAAM;gCAChC,0BAA0B,EAAE,iBAAiB,CAAC,0BAA0B;gCACxE,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;gCACpD,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;gCACpD,wBAAwB,EAAE,iBAAiB,CAAC,wBAAwB;gCACpE,SAAS,EAAE,iBAAiB,CAAC,SAAS;gCACtC,qBAAqB,EAAE,iBAAiB,CAAC,qBAAqB;gCAC9D,UAAU,EAAE,iBAAiB,CAAC,UAAU;gCACxC,gCAAgC,EAC5B,iBAAiB,CAAC,gCAAgC;gCACtD,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;6BACvD,CAAC,CAAC;wBACP,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACb,IAAI,CAAC,CAAC,KAAK,YAAY,uBAAuB,CAAC,EAAE,CAAC;gCAC9C,MAAM,KAAK,CAAC;4BAChB,CAAC;4BACD,8BAA8B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;4BAC9C,OAAO;wBACX,CAAC;wBAED,8BAA8B,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;oBAC1E,CAAC;oBACD,MAAM;YACd,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,wBAAwB,CAAC;IACpC,CAAC,CAAC;IAEF,KAAK,UAAU,YAAY,CAAC,aAM3B;QACG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;QAEhC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;YACtB,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO,mBAAmB,CAAC;oBACvB,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG;oBACjC,qBAAqB,EAAE,KAAK;iBAC/B,CAAC,CAAC;YACP,CAAC;YAED,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7C,OAAO,mBAAmB,CAAC;oBACvB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI;oBACnC,qBAAqB,EAAE,KAAK;iBAC/B,CAAC,CAAC;YACP,CAAC;YAED,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;QAE7B,MAAM,oBAAoB,GACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/E,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACX,0FAA0F,CAC7F,CAAC;YACN,CAAC;YAED,MAAM,IAAI,CAAC,KAAK,CAAC;gBACb,WAAW;gBACX,2BAA2B,EAAE,oBAAoB;aACpD,CAAC,CAAC;QACP,CAAC;QAED,qCAAqC,EAAE,CAAC;YACpC,IAAI,oBAAoB,EAAE,CAAC;gBACvB,MAAM,qCAAqC,CAAC;YAChD,CAAC;YAED,8BAA8B,CAAC,EAAE,oBAAoB,EAAE,WAAW,EAAE,CAAC,CAAC;YAEtE,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;YAC5C,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;YAElD,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC;gBACtC,OAAO,CAAC,YAAY,GAAG,oBAAoB,CAAC;gBAC5C,8BAA8B,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,GAAG,IAAI;gBAC1C,WAAW,EAAE,CAAC;gBACd,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACpD,CAAC,CAAC;YAEF,OAAO,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,GAAG,IAAI;gBAChD,WAAW,EAAE,CAAC;gBACd,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACvD,CAAC,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS,2BAA2B,CAAC,KAKpC;QACG,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAE3D,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,iCAAiC,EAAE,GAC3D,8BAA8B,CAAC,QAAQ,EAAE,CAAC;QAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,8BAA8B,CAAC,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,iCAAiC,YAAY,uBAAuB,EAAE,CAAC;YACvE,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;YAElE,OAAO,KAAC,cAAc,IAAC,uBAAuB,EAAE,uBAAuB,GAAI,CAAC;QAChF,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,SAAS,sBAAsB,CAAC,KAAoD;QAChF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAErC,MAAM,EAAE,WAAW,EAAE,GAAG,8BAA8B,CAAC,QAAQ,EAAE,CAAC;QAElE,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/C,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YAED,IAAI,QAAQ,GAAG,IAAI,CAAC;YAEpB,8BAA8B,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,OAAO;gBACX,CAAC;gBACD,QAAQ,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACR,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC,CAAC;QACN,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,SAAS,iBAAiB,CACtB,SAA+B;QAE/B,MAAM,SAAS,GAAG,SAAS,CAAC;QAE5B,SAAS,0BAA0B,CAAC,KAAY;YAC5C,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,QAAQ,EAAE,CAAC;YAEnF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,8BAA8B,CAAC,EAAE,CAAC;YAC5C,CAAC;YAED,IAAI,QAAQ,YAAY,uBAAuB,EAAE,CAAC;gBAC9C,MAAM,QAAQ,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,KAAC,SAAS,OAAK,KAAK,GAAI,CAAC;QACpC,CAAC;QAED,0BAA0B,CAAC,WAAW,GAAG,GACrC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAC/C,mBAAmB,CAAC;QAEpB,OAAO,0BAA0B,CAAC;IACtC,CAAC;IAED,mBAAmB;IACnB,OAAO;QACH,aAAa;QACb,OAAO;QACP,OAAO;QACP,sBAAsB;QACtB,2BAA2B;QAC3B,YAAY;QACZ,iBAAiB;KACpB,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"createOidcSpaApi.js","sourceRoot":"","sources":["../../src/react-spa/createOidcSpaApi.tsx"],"names":[],"mappings":"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"}
|
package/esm/react-spa/types.d.ts
CHANGED
|
@@ -28,12 +28,10 @@ export declare namespace UseOidc {
|
|
|
28
28
|
initializationError?: never;
|
|
29
29
|
});
|
|
30
30
|
namespace Oidc {
|
|
31
|
-
type
|
|
31
|
+
type NotLoggedIn = {
|
|
32
32
|
issuerUri: string;
|
|
33
33
|
clientId: string;
|
|
34
34
|
validRedirectUri: string;
|
|
35
|
-
};
|
|
36
|
-
export type NotLoggedIn = Common & {
|
|
37
35
|
login: (params?: {
|
|
38
36
|
extraQueryParams?: Record<string, string | undefined>;
|
|
39
37
|
redirectUrl?: string;
|
|
@@ -45,7 +43,10 @@ export declare namespace UseOidc {
|
|
|
45
43
|
isUserLoggedIn: false;
|
|
46
44
|
initializationError: OidcInitializationError | undefined;
|
|
47
45
|
};
|
|
48
|
-
|
|
46
|
+
type LoggedIn<DecodedIdToken> = {
|
|
47
|
+
issuerUri: string;
|
|
48
|
+
clientId: string;
|
|
49
|
+
validRedirectUri: string;
|
|
49
50
|
isUserLoggedIn: true;
|
|
50
51
|
decodedIdToken: DecodedIdToken;
|
|
51
52
|
logout: Oidc_core.LoggedIn["logout"];
|
|
@@ -60,7 +61,6 @@ export declare namespace UseOidc {
|
|
|
60
61
|
shouldDisplayWarning: false;
|
|
61
62
|
};
|
|
62
63
|
};
|
|
63
|
-
export {};
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
export type GetOidc<DecodedIdToken> = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect,
|
|
2
|
+
import { useState, useEffect, useReducer } from "react";
|
|
3
3
|
import { OidcInitializationError } from "../../core/OidcInitializationError";
|
|
4
4
|
import { Deferred } from "../../tools/Deferred";
|
|
5
5
|
import { isBrowser } from "../../tools/isBrowser";
|
|
@@ -60,11 +60,93 @@ export function createOidcSpaApi(params) {
|
|
|
60
60
|
evtAutoLogoutState.current = newState;
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
|
-
function useOidc() {
|
|
63
|
+
function useOidc(params) {
|
|
64
|
+
const { assert: assert_params } = params ?? {};
|
|
65
|
+
/*
|
|
66
|
+
if (!isBrowser) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
[
|
|
69
|
+
"oidc-spa: useOidc() can't be used on the server.",
|
|
70
|
+
"You can prevent this component from rendering on the server",
|
|
71
|
+
"by wrapping it into <OidcInitializationGate />"
|
|
72
|
+
].join(" ")
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
*/
|
|
64
76
|
const { hasResolved, value: oidcCore } = dOidcCoreOrInitializationError.getState();
|
|
65
|
-
|
|
66
|
-
|
|
77
|
+
if (oidcCore instanceof OidcInitializationError) {
|
|
78
|
+
throw oidcCore;
|
|
79
|
+
}
|
|
80
|
+
check_assertion: {
|
|
81
|
+
if (assert_params === undefined) {
|
|
82
|
+
break check_assertion;
|
|
83
|
+
}
|
|
84
|
+
if (assert_params === "init completed") {
|
|
85
|
+
if (!hasResolved) {
|
|
86
|
+
throw new Error([
|
|
87
|
+
"oidc-spa: There is a logic error in the application.",
|
|
88
|
+
"you called useOidc({ assert: 'init completed' }) but",
|
|
89
|
+
...(isBrowser
|
|
90
|
+
? [
|
|
91
|
+
"the component making this call was rendered before",
|
|
92
|
+
"the oidc initialization has completed."
|
|
93
|
+
]
|
|
94
|
+
: ["we are on the server, this assertion will always be wrong."]),
|
|
95
|
+
"\nTo avoid this error make sure you call this within",
|
|
96
|
+
"<OidcInitializationGate /> or remove the assertion and check",
|
|
97
|
+
"the hasInitCompleted property."
|
|
98
|
+
].join(" "));
|
|
99
|
+
}
|
|
100
|
+
break check_assertion;
|
|
101
|
+
}
|
|
102
|
+
if (!hasResolved) {
|
|
103
|
+
throw new Error([
|
|
104
|
+
"oidc-spa: There is a logic error in the application.",
|
|
105
|
+
`you called useOidc({ assert: "${assert_params}" }) but`,
|
|
106
|
+
"initialization hasn't completed yet, we don't know yet if the",
|
|
107
|
+
"user is logged in or not."
|
|
108
|
+
].join(" "));
|
|
109
|
+
}
|
|
110
|
+
const getMessage = (v) => [
|
|
111
|
+
"oidc-spa: There is a logic error in the application.",
|
|
112
|
+
`If this component is mounted the user is supposed ${v}.`,
|
|
113
|
+
"An explicit assertion was made in this sense."
|
|
114
|
+
].join(" ");
|
|
115
|
+
switch (assert_params) {
|
|
116
|
+
case "user logged in":
|
|
117
|
+
if (!oidcCore.isUserLoggedIn) {
|
|
118
|
+
throw new Error(getMessage("to be logged in but currently they arn't"));
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
case "user not logged in":
|
|
122
|
+
if (oidcCore.isUserLoggedIn) {
|
|
123
|
+
throw new Error(getMessage("not to be logged in but currently they are"));
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
default:
|
|
127
|
+
assert(false);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const [, reRender] = useReducer(n => n + 1, 0);
|
|
131
|
+
useEffect(() => {
|
|
132
|
+
if (hasResolved) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
let isActive = true;
|
|
136
|
+
dOidcCoreOrInitializationError.pr.then(() => {
|
|
137
|
+
if (!isActive) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
reRender();
|
|
141
|
+
});
|
|
142
|
+
return () => {
|
|
143
|
+
isActive = false;
|
|
144
|
+
};
|
|
145
|
+
}, []);
|
|
67
146
|
const [, reRenderIfDecodedIdTokenChanged] = useState(() => {
|
|
147
|
+
if (oidcCore === undefined) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
68
150
|
if (!oidcCore.isUserLoggedIn) {
|
|
69
151
|
return undefined;
|
|
70
152
|
}
|
|
@@ -72,6 +154,9 @@ export function createOidcSpaApi(params) {
|
|
|
72
154
|
});
|
|
73
155
|
const [evtIsDecodedIdTokenUsed] = useState(() => createStatefulEvt(() => false));
|
|
74
156
|
useEffect(() => {
|
|
157
|
+
if (oidcCore === undefined) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
75
160
|
if (!oidcCore.isUserLoggedIn) {
|
|
76
161
|
return;
|
|
77
162
|
}
|
|
@@ -126,8 +211,24 @@ export function createOidcSpaApi(params) {
|
|
|
126
211
|
unsubscribe?.();
|
|
127
212
|
};
|
|
128
213
|
}, []);
|
|
214
|
+
const [hasHydrated, setHasHydratedToTrue] = useReducer(() => true, assert_params !== undefined ? undefined : false);
|
|
215
|
+
useEffect(() => {
|
|
216
|
+
if (hasHydrated === undefined) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
setHasHydratedToTrue();
|
|
220
|
+
}, []);
|
|
221
|
+
if (!hasResolved || hasHydrated === false) {
|
|
222
|
+
return id({
|
|
223
|
+
hasInitCompleted: false,
|
|
224
|
+
autoLogoutState: {
|
|
225
|
+
shouldDisplayWarning: false
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
129
229
|
if (!oidcCore.isUserLoggedIn) {
|
|
130
230
|
return id({
|
|
231
|
+
hasInitCompleted: true,
|
|
131
232
|
isUserLoggedIn: false,
|
|
132
233
|
initializationError: oidcCore.initializationError,
|
|
133
234
|
issuerUri: oidcCore.params.issuerUri,
|
|
@@ -141,6 +242,7 @@ export function createOidcSpaApi(params) {
|
|
|
141
242
|
});
|
|
142
243
|
}
|
|
143
244
|
return id({
|
|
245
|
+
hasInitCompleted: true,
|
|
144
246
|
isUserLoggedIn: true,
|
|
145
247
|
get decodedIdToken() {
|
|
146
248
|
evtIsDecodedIdTokenUsed.current = true;
|
|
@@ -160,89 +262,6 @@ export function createOidcSpaApi(params) {
|
|
|
160
262
|
validRedirectUri: oidcCore.params.validRedirectUri
|
|
161
263
|
});
|
|
162
264
|
}
|
|
163
|
-
const context_isFreeOfSsrHydrationConcern = createContext(false);
|
|
164
|
-
function createOidcComponent(params) {
|
|
165
|
-
const { assert: assert_params, pendingComponent: PendingComponent, component: Component } = params;
|
|
166
|
-
const checkAssertion = assert_params === undefined
|
|
167
|
-
? undefined
|
|
168
|
-
: (params) => {
|
|
169
|
-
const { isUserLoggedIn } = params;
|
|
170
|
-
switch (assert_params) {
|
|
171
|
-
case "user not logged in":
|
|
172
|
-
if (isUserLoggedIn) {
|
|
173
|
-
throw new Error([
|
|
174
|
-
"oidc-spa: Asserted the user should not be logged in",
|
|
175
|
-
"but they are. Check your control flow."
|
|
176
|
-
].join(" "));
|
|
177
|
-
}
|
|
178
|
-
break;
|
|
179
|
-
case "user logged in":
|
|
180
|
-
if (!isUserLoggedIn) {
|
|
181
|
-
throw new Error([
|
|
182
|
-
"oidc-spa: Asserted the user should be logged in",
|
|
183
|
-
"but they arn't. Check your control flow."
|
|
184
|
-
].join(" "));
|
|
185
|
-
}
|
|
186
|
-
break;
|
|
187
|
-
default:
|
|
188
|
-
assert;
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
function ComponentWithOidc(props) {
|
|
192
|
-
const renderFallback = () => PendingComponent === undefined ? null : _jsx(PendingComponent, { ...props });
|
|
193
|
-
if (!isBrowser) {
|
|
194
|
-
return renderFallback();
|
|
195
|
-
}
|
|
196
|
-
// NOTE: When the user assert that the user is logged in or not, they know.
|
|
197
|
-
// if they knows it means that they learned it somewhere so we are post SSR.
|
|
198
|
-
// Additionally, in autoLogin mode, the typedef don't allow this param to be provided.
|
|
199
|
-
const isFreeOfSsrHydrationConcern = useContext(context_isFreeOfSsrHydrationConcern) || assert_params !== undefined;
|
|
200
|
-
const [oidcCore, setOidcCore] = useState(() => {
|
|
201
|
-
if (!isFreeOfSsrHydrationConcern) {
|
|
202
|
-
return undefined;
|
|
203
|
-
}
|
|
204
|
-
const { hasResolved, value: oidcCore } = dOidcCoreOrInitializationError.getState();
|
|
205
|
-
if (!hasResolved) {
|
|
206
|
-
return undefined;
|
|
207
|
-
}
|
|
208
|
-
if (oidcCore instanceof OidcInitializationError) {
|
|
209
|
-
return undefined;
|
|
210
|
-
}
|
|
211
|
-
checkAssertion?.({
|
|
212
|
-
isUserLoggedIn: oidcCore.isUserLoggedIn
|
|
213
|
-
});
|
|
214
|
-
return oidcCore;
|
|
215
|
-
});
|
|
216
|
-
useEffect(() => {
|
|
217
|
-
if (oidcCore !== undefined) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
let isActive = true;
|
|
221
|
-
dOidcCoreOrInitializationError.pr.then(oidcCore => {
|
|
222
|
-
if (!isActive) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
if (oidcCore instanceof OidcInitializationError) {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
checkAssertion?.({
|
|
229
|
-
isUserLoggedIn: oidcCore.isUserLoggedIn
|
|
230
|
-
});
|
|
231
|
-
setOidcCore(oidcCore);
|
|
232
|
-
});
|
|
233
|
-
return () => {
|
|
234
|
-
isActive = false;
|
|
235
|
-
};
|
|
236
|
-
}, []);
|
|
237
|
-
if (oidcCore === undefined) {
|
|
238
|
-
return PendingComponent === undefined ? null : _jsx(PendingComponent, { ...props });
|
|
239
|
-
}
|
|
240
|
-
return (_jsx(context_isFreeOfSsrHydrationConcern.Provider, { value: true, children: _jsx(Component, { ...props }) }));
|
|
241
|
-
}
|
|
242
|
-
ComponentWithOidc.displayName = `${Component.displayName ?? Component.name ?? "Component"}WithOidc`;
|
|
243
|
-
ComponentWithOidc.useOidc = useOidc;
|
|
244
|
-
return ComponentWithOidc;
|
|
245
|
-
}
|
|
246
265
|
async function getOidc(params) {
|
|
247
266
|
if (!isBrowser) {
|
|
248
267
|
throw new UnifiedClientRetryForSsrLoadersError([
|
|
@@ -684,7 +703,7 @@ export function createOidcSpaApi(params) {
|
|
|
684
703
|
}
|
|
685
704
|
// @ts-expect-error
|
|
686
705
|
return {
|
|
687
|
-
|
|
706
|
+
useOidc,
|
|
688
707
|
getOidc,
|
|
689
708
|
bootstrapOidc,
|
|
690
709
|
enforceLogin,
|