capacitor-oidc 0.0.6 → 0.1.1

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.
Files changed (37) hide show
  1. package/README.md +32 -25
  2. package/SECURITY.md +27 -30
  3. package/dist/esm/base-capacitor-user-manager.d.ts +30 -0
  4. package/dist/esm/base-capacitor-user-manager.js +104 -0
  5. package/dist/esm/base-capacitor-user-manager.js.map +1 -0
  6. package/dist/esm/capacitor-user-manager.d.ts +9 -32
  7. package/dist/esm/capacitor-user-manager.js +20 -174
  8. package/dist/esm/capacitor-user-manager.js.map +1 -1
  9. package/dist/esm/configuration.d.ts +14 -0
  10. package/dist/esm/configuration.js +72 -0
  11. package/dist/esm/configuration.js.map +1 -0
  12. package/dist/esm/definitions.d.ts +53 -3
  13. package/dist/esm/definitions.js.map +1 -1
  14. package/dist/esm/index.d.ts +5 -4
  15. package/dist/esm/index.js +8 -2
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/native-capacitor-user-manager.d.ts +24 -0
  18. package/dist/esm/native-capacitor-user-manager.js +112 -0
  19. package/dist/esm/native-capacitor-user-manager.js.map +1 -0
  20. package/dist/esm/web-capacitor-user-manager.d.ts +11 -0
  21. package/dist/esm/web-capacitor-user-manager.js +44 -0
  22. package/dist/esm/web-capacitor-user-manager.js.map +1 -0
  23. package/dist/plugin.cjs +303 -126
  24. package/dist/plugin.cjs.map +1 -1
  25. package/docs/API.md +106 -60
  26. package/docs/GETTING_STARTED.md +85 -62
  27. package/docs/PLATFORM_SETUP.md +15 -4
  28. package/docs/PROVIDERS.md +52 -45
  29. package/docs/README.md +4 -4
  30. package/docs/TESTING.md +3 -1
  31. package/docs/TROUBLESHOOTING.md +23 -13
  32. package/docs/adr/0004-use-one-manager-across-platforms.md +64 -0
  33. package/docs/adr/index.md +6 -0
  34. package/docs/frameworks/ANGULAR.md +129 -0
  35. package/docs/frameworks/REACT.md +134 -0
  36. package/docs/frameworks/VUE.md +118 -0
  37. package/package.json +8 -2
package/dist/plugin.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var app = require('@capacitor/app');
4
- var oidcClientTs = require('oidc-client-ts');
5
3
  var core = require('@capacitor/core');
4
+ var oidcClientTs = require('oidc-client-ts');
5
+ var app = require('@capacitor/app');
6
6
 
7
7
  class CapacitorOidcError extends Error {
8
8
  code;
@@ -16,6 +16,205 @@ function unsupported(feature) {
16
16
  throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `${feature} is not available in a native Capacitor runtime`);
17
17
  }
18
18
 
19
+ class BaseCapacitorUserManager extends oidcClientTs.UserManager {
20
+ automaticRenewalPromise;
21
+ refreshPromise;
22
+ signinMode;
23
+ signoutMode;
24
+ defaultSigninArgs;
25
+ defaultSignoutArgs;
26
+ constructor(configuration, redirectNavigator, popupNavigator, iframeNavigator) {
27
+ super(configuration.settings, redirectNavigator, popupNavigator, iframeNavigator);
28
+ this.signinMode = configuration.signinMode;
29
+ this.signoutMode = configuration.signoutMode;
30
+ this.defaultSigninArgs = configuration.signinArgs;
31
+ this.defaultSignoutArgs = configuration.signoutArgs;
32
+ }
33
+ async initialize() {
34
+ await this.getUser();
35
+ }
36
+ async signin(args = {}) {
37
+ const mergedArgs = { ...this.defaultSigninArgs, ...args };
38
+ if (this.signinMode === 'redirect')
39
+ return this.signinRedirect(mergedArgs);
40
+ await this.signinPopup(mergedArgs);
41
+ }
42
+ async signout(args = {}) {
43
+ const mergedArgs = { ...this.defaultSignoutArgs, ...args };
44
+ if (this.signoutMode === 'redirect')
45
+ return this.signoutRedirect(mergedArgs);
46
+ await this.signoutPopup(mergedArgs);
47
+ }
48
+ async getValidUser(minimumValiditySeconds = 60) {
49
+ const user = await this.getUser();
50
+ if (!user)
51
+ return null;
52
+ if (user.expires_in === undefined || user.expires_in > minimumValiditySeconds)
53
+ return user;
54
+ return this.signinSilent();
55
+ }
56
+ async signinPopup(args = {}) {
57
+ await this.waitForRenewal();
58
+ return super.signinPopup(args);
59
+ }
60
+ async signoutPopup(args = {}) {
61
+ await this.waitForRenewal();
62
+ await super.signoutPopup(args);
63
+ }
64
+ async signinRedirect(args = {}) {
65
+ await this.waitForRenewal();
66
+ await super.signinRedirect(args);
67
+ }
68
+ async signoutRedirect(args = {}) {
69
+ await this.waitForRenewal();
70
+ await super.signoutRedirect(args);
71
+ }
72
+ signinSilent(args = {}) {
73
+ if (!this.refreshPromise) {
74
+ const refresh = this.performSilentSignin(args);
75
+ this.refreshPromise = refresh.finally(() => {
76
+ this.refreshPromise = undefined;
77
+ });
78
+ }
79
+ return this.refreshPromise;
80
+ }
81
+ async signinResourceOwnerCredentials(_args) {
82
+ unsupported('Resource Owner Password Credentials');
83
+ }
84
+ async removeUser() {
85
+ await this.waitForRenewal();
86
+ await this.removeUserWithoutWaiting();
87
+ }
88
+ cancel() {
89
+ return Promise.resolve();
90
+ }
91
+ async dispose() {
92
+ this.stopSilentRenew();
93
+ await this.disposePlatform();
94
+ await this.waitForRenewal();
95
+ await this.cancel();
96
+ }
97
+ performSilentSignin(args) {
98
+ return super.signinSilent(args);
99
+ }
100
+ removeUserWithoutWaiting() {
101
+ return super.removeUser();
102
+ }
103
+ checkForAutomaticRenewal() {
104
+ if (!this.settings.automaticSilentRenew || this.automaticRenewalPromise)
105
+ return;
106
+ const renewal = this.getValidUser();
107
+ this.automaticRenewalPromise = renewal;
108
+ void renewal
109
+ .catch((error) => this.events._raiseSilentRenewError(error instanceof Error ? error : new Error('Silent renewal failed')))
110
+ .finally(() => {
111
+ if (this.automaticRenewalPromise === renewal)
112
+ this.automaticRenewalPromise = undefined;
113
+ });
114
+ }
115
+ async waitForRenewal() {
116
+ await this.automaticRenewalPromise?.catch(() => undefined);
117
+ await this.refreshPromise?.catch(() => undefined);
118
+ }
119
+ }
120
+
121
+ function resolveConfiguration(configuration, platform) {
122
+ if (platform === 'web')
123
+ return resolveWebConfiguration(configuration);
124
+ return resolveNativeConfiguration(configuration, platform);
125
+ }
126
+ function resolveLegacyNativeConfiguration(settings, nativeOptions, platform) {
127
+ if (platform === 'web') {
128
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Legacy CapacitorUserManager settings are only supported on iOS and Android');
129
+ }
130
+ assertPublicClient(settings);
131
+ if ('dpop' in settings) {
132
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Native configuration does not support dpop');
133
+ }
134
+ return resolvedNativeConfiguration(platform, settings, nativeOptions);
135
+ }
136
+ function resolveWebConfiguration(configuration) {
137
+ const web = configuration.web;
138
+ if (!web)
139
+ unsupportedConfiguration('web');
140
+ const signoutMode = web.signoutMode ?? 'redirect';
141
+ const settings = { ...configuration.common, ...web.settings };
142
+ assertPublicClient(settings);
143
+ if (signoutMode === 'popup' && !settings.popup_post_logout_redirect_uri && !settings.post_logout_redirect_uri) {
144
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Web popup signout requires post_logout_redirect_uri or popup_post_logout_redirect_uri');
145
+ }
146
+ return {
147
+ platform: 'web',
148
+ settings,
149
+ signinMode: web.signinMode ?? 'redirect',
150
+ signoutMode,
151
+ signinArgs: web.signinArgs ?? {},
152
+ signoutArgs: web.signoutArgs ?? {},
153
+ };
154
+ }
155
+ function resolveNativeConfiguration(configuration, platform) {
156
+ const native = configuration.native;
157
+ if (!native)
158
+ unsupportedConfiguration(platform);
159
+ const override = configuration[platform];
160
+ const settings = { ...configuration.common, ...native.settings, ...override?.settings };
161
+ assertPublicClient(settings);
162
+ assertNativeSettings(settings);
163
+ return resolvedNativeConfiguration(platform, settings, { ...native.options, ...override?.options }, { ...native.signinArgs, ...override?.signinArgs }, { ...native.signoutArgs, ...override?.signoutArgs });
164
+ }
165
+ function resolvedNativeConfiguration(platform, settings, nativeOptions, signinArgs = {}, signoutArgs = {}) {
166
+ return {
167
+ platform,
168
+ settings: { ...settings, response_type: 'code', disablePKCE: false, monitorSession: false },
169
+ nativeOptions,
170
+ signinMode: 'popup',
171
+ signoutMode: 'popup',
172
+ signinArgs,
173
+ signoutArgs,
174
+ };
175
+ }
176
+ function assertPublicClient(settings) {
177
+ const unsupported = ['client_authentication', 'client_secret', 'disablePKCE', 'response_type'].find((key) => key in settings);
178
+ if (unsupported) {
179
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `Public-client configuration does not support ${unsupported}`);
180
+ }
181
+ }
182
+ function assertNativeSettings(settings) {
183
+ const unsupported = ['dpop', 'monitorSession', 'silent_redirect_uri', 'stateStore', 'userStore'].find((key) => key in settings);
184
+ if (unsupported) {
185
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `Native configuration does not support ${unsupported}`);
186
+ }
187
+ }
188
+ function unsupportedConfiguration(platform) {
189
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `No ${platform} configuration was provided`);
190
+ }
191
+
192
+ class CapacitorUserManager extends BaseCapacitorUserManager {
193
+ static async create(configuration, nativeOptions = {}) {
194
+ assertRuntime();
195
+ const platform = currentPlatform();
196
+ const resolved = 'redirect_uri' in configuration
197
+ ? resolveLegacyNativeConfiguration(configuration, nativeOptions, platform)
198
+ : resolveConfiguration(configuration, platform);
199
+ const manager = await platformUserManagerFactory(resolved);
200
+ await manager.initialize();
201
+ return manager;
202
+ }
203
+ }
204
+ let platformUserManagerFactory;
205
+ function setPlatformUserManagerFactory(factory) {
206
+ platformUserManagerFactory = factory;
207
+ }
208
+ function currentPlatform() {
209
+ const platform = core.Capacitor.getPlatform();
210
+ return platform === 'ios' || platform === 'android' ? platform : 'web';
211
+ }
212
+ function assertRuntime() {
213
+ if (!globalThis.crypto?.subtle || !globalThis.crypto.getRandomValues) {
214
+ throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Web Crypto is required by oidc-client-ts');
215
+ }
216
+ }
217
+
19
218
  const NativeOidc = core.registerPlugin('CapacitorOidc');
20
219
 
21
220
  class CapacitorNavigator {
@@ -105,124 +304,39 @@ class CapacitorSecureStateStore {
105
304
  }
106
305
  }
107
306
 
108
- class CapacitorUserManager extends oidcClientTs.UserManager {
109
- storageNamespace;
110
- automaticRenewalPromise;
111
- refreshPromise;
307
+ class NativeCapacitorUserManager extends CapacitorUserManager {
112
308
  appStateListener;
113
- constructor(settings, nativeOptions, storageNamespace) {
309
+ storageNamespace;
310
+ constructor(configuration) {
311
+ const storageNamespace = configuration.nativeOptions?.storageNamespace ?? 'default';
114
312
  const stateStore = new CapacitorSecureStateStore(`${storageNamespace}.transactions`);
115
313
  const userStore = new CapacitorSecureStateStore(`${storageNamespace}.session`);
116
- const navigator = new CapacitorNavigator(nativeOptions.prefersEphemeralWebBrowserSession ?? false);
314
+ const navigator = new CapacitorNavigator(configuration.nativeOptions?.prefersEphemeralWebBrowserSession ?? false);
117
315
  super({
118
- ...settings,
119
- response_type: 'code',
120
- disablePKCE: false,
121
- monitorSession: false,
122
- popup_redirect_uri: settings.redirect_uri,
123
- popup_post_logout_redirect_uri: settings.post_logout_redirect_uri,
124
- stateStore,
125
- userStore,
316
+ ...configuration,
317
+ settings: {
318
+ ...configuration.settings,
319
+ popup_redirect_uri: configuration.settings.redirect_uri,
320
+ popup_post_logout_redirect_uri: configuration.settings.post_logout_redirect_uri,
321
+ stateStore,
322
+ userStore,
323
+ },
126
324
  }, navigator, navigator, new UnsupportedIframeNavigator());
127
325
  this.storageNamespace = storageNamespace;
128
326
  }
129
- static async create(settings, nativeOptions = {}) {
130
- assertRuntime();
131
- assertSettings(settings);
132
- await NativeOidc.configure(nativeOptions.ios ?? {});
133
- const manager = new CapacitorUserManager(settings, nativeOptions, nativeOptions.storageNamespace ?? 'default');
134
- await manager.getUser();
135
- manager.appStateListener = await app.App.addListener('appStateChange', ({ isActive }) => {
136
- if (isActive) {
137
- manager.checkForAutomaticRenewal();
138
- }
139
- });
140
- manager.checkForAutomaticRenewal();
141
- return manager;
142
- }
143
- async signin(args = {}) {
144
- return this.signinPopup(args);
145
- }
146
- async signinPopup(args = {}) {
147
- await this.waitForRenewal();
148
- return super.signinPopup(args);
149
- }
150
- async signout(args = {}) {
151
- await this.signoutPopup(args);
152
- }
153
- async signoutPopup(args = {}) {
154
- await this.waitForRenewal();
155
- await super.signoutPopup(args);
327
+ static async fromConfiguration(configuration) {
328
+ await NativeOidc.configure(configuration.nativeOptions?.ios ?? {});
329
+ return new NativeCapacitorUserManager(configuration);
156
330
  }
157
- checkForAutomaticRenewal() {
158
- if (!this.settings.automaticSilentRenew || this.automaticRenewalPromise)
159
- return;
160
- const renewal = this.getValidUser();
161
- this.automaticRenewalPromise = renewal;
162
- void renewal
163
- .catch((error) => this.events._raiseSilentRenewError(error instanceof Error ? error : new Error('Silent renewal failed')))
164
- .finally(() => {
165
- if (this.automaticRenewalPromise === renewal)
166
- this.automaticRenewalPromise = undefined;
331
+ async initialize() {
332
+ await super.initialize();
333
+ this.appStateListener = await app.App.addListener('appStateChange', ({ isActive }) => {
334
+ if (isActive)
335
+ this.checkForAutomaticRenewal();
167
336
  });
337
+ this.checkForAutomaticRenewal();
168
338
  }
169
- async getValidUser(minimumValiditySeconds = 60) {
170
- const user = await this.getUser();
171
- if (!user)
172
- return null;
173
- if (user.expires_in === undefined || user.expires_in > minimumValiditySeconds)
174
- return user;
175
- return this.signinSilent();
176
- }
177
- async removeUser() {
178
- await this.waitForRenewal();
179
- await super.removeUser();
180
- }
181
- signinSilent(args = {}) {
182
- if (!this.refreshPromise) {
183
- this.refreshPromise = this.refresh(args).finally(() => {
184
- this.refreshPromise = undefined;
185
- });
186
- }
187
- return this.refreshPromise;
188
- }
189
- async refresh(args) {
190
- const user = await this.getUser();
191
- if (!user?.refresh_token) {
192
- if (user?.expired)
193
- await super.removeUser();
194
- return null;
195
- }
196
- const refresh = super.signinSilent({ ...args, forceIframeAuth: false }).catch(async (error) => {
197
- if (error instanceof oidcClientTs.ErrorResponse && error.error === 'invalid_grant')
198
- await super.removeUser();
199
- throw error;
200
- });
201
- return refresh;
202
- }
203
- async waitForRenewal() {
204
- await this.automaticRenewalPromise?.catch(() => undefined);
205
- await this.refreshPromise?.catch(() => undefined);
206
- }
207
- async storeUser(user) {
208
- await super.storeUser(user);
209
- await NativeOidc.setSessionSnapshot({
210
- namespace: this.storageNamespace,
211
- value: user
212
- ? JSON.stringify(toStoredSession(user, user.profile.iss ?? this.settings.metadata?.issuer ?? this.settings.authority, this.settings.client_id))
213
- : null,
214
- });
215
- }
216
- async cancel() {
217
- await NativeOidc.cancel();
218
- }
219
- async dispose() {
220
- this.stopSilentRenew();
221
- await this.appStateListener?.remove();
222
- await this.waitForRenewal();
223
- await this.cancel();
224
- }
225
- async signinRedirect() {
339
+ async signinRedirect(_args = {}) {
226
340
  unsupported('Redirect navigation');
227
341
  }
228
342
  async signinRedirectCallback(_url) {
@@ -231,13 +345,10 @@ class CapacitorUserManager extends oidcClientTs.UserManager {
231
345
  async signinCallback(_url) {
232
346
  unsupported('Browser callback dispatch');
233
347
  }
234
- async signinResourceOwnerCredentials(_args) {
235
- unsupported('Resource Owner Password Credentials');
236
- }
237
348
  async signinSilentCallback(_url) {
238
349
  unsupported('Iframe navigation');
239
350
  }
240
- async signoutRedirect() {
351
+ async signoutRedirect(_args = {}) {
241
352
  unsupported('Redirect navigation');
242
353
  }
243
354
  async signoutRedirectCallback(_url) {
@@ -246,27 +357,42 @@ class CapacitorUserManager extends oidcClientTs.UserManager {
246
357
  async signoutCallback(_url, _keepOpen) {
247
358
  unsupported('Browser callback dispatch');
248
359
  }
249
- async signoutSilent() {
360
+ async signoutSilent(_args = {}) {
250
361
  unsupported('Iframe logout');
251
362
  }
252
363
  async signoutSilentCallback(_url) {
253
364
  unsupported('Iframe logout');
254
365
  }
255
- async querySessionStatus() {
366
+ async querySessionStatus(_args = {}) {
256
367
  unsupported('Browser session monitoring');
257
368
  }
258
- }
259
- function assertRuntime() {
260
- if (!globalThis.crypto?.subtle || !globalThis.crypto.getRandomValues) {
261
- throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Web Crypto is required by oidc-client-ts');
369
+ async storeUser(user) {
370
+ await super.storeUser(user);
371
+ await NativeOidc.setSessionSnapshot({
372
+ namespace: this.storageNamespace,
373
+ value: user
374
+ ? JSON.stringify(toStoredSession(user, user.profile.iss ?? this.settings.metadata?.issuer ?? this.settings.authority, this.settings.client_id))
375
+ : null,
376
+ });
262
377
  }
263
- }
264
- function assertSettings(settings) {
265
- if ('client_secret' in settings) {
266
- throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Native public clients must not contain a client secret');
378
+ cancel() {
379
+ return NativeOidc.cancel();
380
+ }
381
+ async disposePlatform() {
382
+ await this.appStateListener?.remove();
267
383
  }
268
- if ('client_authentication' in settings || 'dpop' in settings) {
269
- throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'The supplied settings contain an unsupported native-client option');
384
+ async performSilentSignin(args) {
385
+ const user = await this.getUser();
386
+ if (!user?.refresh_token) {
387
+ if (user?.expired)
388
+ await this.removeUserWithoutWaiting();
389
+ return null;
390
+ }
391
+ return super.performSilentSignin({ ...args, forceIframeAuth: false }).catch(async (error) => {
392
+ if (error instanceof oidcClientTs.ErrorResponse && error.error === 'invalid_grant')
393
+ await this.removeUserWithoutWaiting();
394
+ throw error;
395
+ });
270
396
  }
271
397
  }
272
398
  function toStoredSession(user, issuer, clientId) {
@@ -283,10 +409,61 @@ function toStoredSession(user, issuer, clientId) {
283
409
  };
284
410
  }
285
411
 
412
+ class WebCapacitorUserManager extends CapacitorUserManager {
413
+ sessionMonitor;
414
+ disposed = false;
415
+ constructor(configuration) {
416
+ super(configuration);
417
+ this.sessionMonitor = this.captureSessionMonitor();
418
+ }
419
+ async querySessionStatus(args = {}) {
420
+ if (this.disposed)
421
+ return null;
422
+ const session = await super.querySessionStatus(args);
423
+ return this.disposed ? null : session;
424
+ }
425
+ disposePlatform() {
426
+ this.disposed = true;
427
+ if (this.sessionMonitor) {
428
+ this.events.removeUserLoaded(this.sessionMonitor.start);
429
+ this.events.removeUserUnloaded(this.sessionMonitor.stop);
430
+ this.sessionMonitor.stop();
431
+ }
432
+ return Promise.resolve();
433
+ }
434
+ captureSessionMonitor() {
435
+ // oidc-client-ts does not expose public session-monitor lifecycle hooks.
436
+ const monitor = this._sessionMonitor;
437
+ if (!monitor)
438
+ return undefined;
439
+ const originalStart = monitor._start;
440
+ const stop = monitor._stop;
441
+ const start = async (user) => {
442
+ if (this.disposed)
443
+ return;
444
+ await originalStart(user);
445
+ if (this.disposed)
446
+ stop();
447
+ };
448
+ this.events.removeUserLoaded(originalStart);
449
+ this.events.addUserLoaded(start);
450
+ monitor._start = start;
451
+ return { start, stop };
452
+ }
453
+ }
454
+
455
+ setPlatformUserManagerFactory((configuration) => configuration.platform === 'web'
456
+ ? new WebCapacitorUserManager(configuration)
457
+ : NativeCapacitorUserManager.fromConfiguration(configuration));
458
+
286
459
  Object.defineProperty(exports, "User", {
287
460
  enumerable: true,
288
461
  get: function () { return oidcClientTs.User; }
289
462
  });
463
+ Object.defineProperty(exports, "WebStorageStateStore", {
464
+ enumerable: true,
465
+ get: function () { return oidcClientTs.WebStorageStateStore; }
466
+ });
290
467
  exports.CapacitorOidcError = CapacitorOidcError;
291
468
  exports.CapacitorSecureStateStore = CapacitorSecureStateStore;
292
469
  exports.CapacitorUserManager = CapacitorUserManager;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs","sources":["esm/errors.js","esm/native.js","esm/capacitor-navigator.js","esm/capacitor-secure-state-store.js","esm/capacitor-user-manager.js"],"sourcesContent":["export class CapacitorOidcError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.code = code;\n this.name = 'CapacitorOidcError';\n }\n}\nexport function unsupported(feature) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `${feature} is not available in a native Capacitor runtime`);\n}\n//# sourceMappingURL=errors.js.map","import { registerPlugin } from '@capacitor/core';\nexport const NativeOidc = registerPlugin('CapacitorOidc');\n//# sourceMappingURL=native.js.map","import { CapacitorOidcError, unsupported } from './errors.js';\nimport { NativeOidc } from './native.js';\nexport class CapacitorNavigator {\n prefersEphemeralWebBrowserSession;\n constructor(prefersEphemeralWebBrowserSession) {\n this.prefersEphemeralWebBrowserSession = prefersEphemeralWebBrowserSession;\n }\n async prepare() {\n return new CapacitorWindow(this.prefersEphemeralWebBrowserSession);\n }\n async callback() {\n unsupported('Navigator callbacks');\n }\n}\nclass CapacitorWindow {\n prefersEphemeralWebBrowserSession;\n constructor(prefersEphemeralWebBrowserSession) {\n this.prefersEphemeralWebBrowserSession = prefersEphemeralWebBrowserSession;\n }\n async navigate({ url }) {\n assertSecureRequestUrl(url);\n const callbackUrl = callbackUrlFromRequest(url);\n const response = await NativeOidc.open({\n url,\n callbackUrl,\n prefersEphemeralWebBrowserSession: this.prefersEphemeralWebBrowserSession,\n });\n if (!isExpectedCallback(response.url, callbackUrl)) {\n throw new CapacitorOidcError('INVALID_CALLBACK', 'The authentication callback does not match the configured redirect URI');\n }\n return response;\n }\n close() {\n void NativeOidc.cancel();\n }\n}\nexport function assertSecureRequestUrl(requestUrl) {\n const url = new URL(requestUrl);\n const isHttpLoopback = url.protocol === 'http:' &&\n (url.hostname === 'localhost' || url.hostname === '127.0.0.1' || url.hostname === '[::1]');\n if (url.protocol !== 'https:' && !isHttpLoopback) {\n throw new CapacitorOidcError('BROWSER_UNAVAILABLE', 'OIDC authorization and logout endpoints must use HTTPS');\n }\n}\nexport function callbackUrlFromRequest(requestUrl) {\n const url = new URL(requestUrl);\n const callback = url.searchParams.get('post_logout_redirect_uri') ??\n url.searchParams.get('logout_uri') ??\n url.searchParams.get('redirect_uri');\n if (!callback) {\n throw new CapacitorOidcError('INVALID_CALLBACK', 'The OIDC request does not contain a callback URI');\n }\n return callback;\n}\nexport function isExpectedCallback(actualValue, expectedValue) {\n const actual = new URL(actualValue);\n const expected = new URL(expectedValue);\n return (actual.protocol.toLowerCase() === expected.protocol.toLowerCase() &&\n actual.host.toLowerCase() === expected.host.toLowerCase() &&\n actual.pathname === expected.pathname);\n}\nexport class UnsupportedIframeNavigator {\n async prepare() {\n unsupported('Iframe navigation');\n }\n async callback() {\n unsupported('Iframe navigation');\n }\n}\n//# sourceMappingURL=capacitor-navigator.js.map","import { NativeOidc } from './native.js';\nexport class CapacitorSecureStateStore {\n namespace;\n constructor(namespace) {\n this.namespace = namespace;\n }\n async set(key, value) {\n await NativeOidc.storageSet({ namespace: this.namespace, key, value });\n }\n async get(key) {\n return (await NativeOidc.storageGet({ namespace: this.namespace, key })).value;\n }\n async remove(key) {\n return (await NativeOidc.storageRemove({ namespace: this.namespace, key })).value;\n }\n async getAllKeys() {\n return (await NativeOidc.storageGetAllKeys({ namespace: this.namespace })).keys;\n }\n}\n//# sourceMappingURL=capacitor-secure-state-store.js.map","import { App } from '@capacitor/app';\nimport { ErrorResponse, UserManager, } from 'oidc-client-ts';\nimport { CapacitorNavigator, UnsupportedIframeNavigator } from './capacitor-navigator.js';\nimport { CapacitorSecureStateStore } from './capacitor-secure-state-store.js';\nimport { CapacitorOidcError, unsupported } from './errors.js';\nimport { NativeOidc } from './native.js';\nexport class CapacitorUserManager extends UserManager {\n storageNamespace;\n automaticRenewalPromise;\n refreshPromise;\n appStateListener;\n constructor(settings, nativeOptions, storageNamespace) {\n const stateStore = new CapacitorSecureStateStore(`${storageNamespace}.transactions`);\n const userStore = new CapacitorSecureStateStore(`${storageNamespace}.session`);\n const navigator = new CapacitorNavigator(nativeOptions.prefersEphemeralWebBrowserSession ?? false);\n super({\n ...settings,\n response_type: 'code',\n disablePKCE: false,\n monitorSession: false,\n popup_redirect_uri: settings.redirect_uri,\n popup_post_logout_redirect_uri: settings.post_logout_redirect_uri,\n stateStore,\n userStore,\n }, navigator, navigator, new UnsupportedIframeNavigator());\n this.storageNamespace = storageNamespace;\n }\n static async create(settings, nativeOptions = {}) {\n assertRuntime();\n assertSettings(settings);\n await NativeOidc.configure(nativeOptions.ios ?? {});\n const manager = new CapacitorUserManager(settings, nativeOptions, nativeOptions.storageNamespace ?? 'default');\n await manager.getUser();\n manager.appStateListener = await App.addListener('appStateChange', ({ isActive }) => {\n if (isActive) {\n manager.checkForAutomaticRenewal();\n }\n });\n manager.checkForAutomaticRenewal();\n return manager;\n }\n async signin(args = {}) {\n return this.signinPopup(args);\n }\n async signinPopup(args = {}) {\n await this.waitForRenewal();\n return super.signinPopup(args);\n }\n async signout(args = {}) {\n await this.signoutPopup(args);\n }\n async signoutPopup(args = {}) {\n await this.waitForRenewal();\n await super.signoutPopup(args);\n }\n checkForAutomaticRenewal() {\n if (!this.settings.automaticSilentRenew || this.automaticRenewalPromise)\n return;\n const renewal = this.getValidUser();\n this.automaticRenewalPromise = renewal;\n void renewal\n .catch((error) => this.events._raiseSilentRenewError(error instanceof Error ? error : new Error('Silent renewal failed')))\n .finally(() => {\n if (this.automaticRenewalPromise === renewal)\n this.automaticRenewalPromise = undefined;\n });\n }\n async getValidUser(minimumValiditySeconds = 60) {\n const user = await this.getUser();\n if (!user)\n return null;\n if (user.expires_in === undefined || user.expires_in > minimumValiditySeconds)\n return user;\n return this.signinSilent();\n }\n async removeUser() {\n await this.waitForRenewal();\n await super.removeUser();\n }\n signinSilent(args = {}) {\n if (!this.refreshPromise) {\n this.refreshPromise = this.refresh(args).finally(() => {\n this.refreshPromise = undefined;\n });\n }\n return this.refreshPromise;\n }\n async refresh(args) {\n const user = await this.getUser();\n if (!user?.refresh_token) {\n if (user?.expired)\n await super.removeUser();\n return null;\n }\n const refresh = super.signinSilent({ ...args, forceIframeAuth: false }).catch(async (error) => {\n if (error instanceof ErrorResponse && error.error === 'invalid_grant')\n await super.removeUser();\n throw error;\n });\n return refresh;\n }\n async waitForRenewal() {\n await this.automaticRenewalPromise?.catch(() => undefined);\n await this.refreshPromise?.catch(() => undefined);\n }\n async storeUser(user) {\n await super.storeUser(user);\n await NativeOidc.setSessionSnapshot({\n namespace: this.storageNamespace,\n value: user\n ? JSON.stringify(toStoredSession(user, user.profile.iss ?? this.settings.metadata?.issuer ?? this.settings.authority, this.settings.client_id))\n : null,\n });\n }\n async cancel() {\n await NativeOidc.cancel();\n }\n async dispose() {\n this.stopSilentRenew();\n await this.appStateListener?.remove();\n await this.waitForRenewal();\n await this.cancel();\n }\n async signinRedirect() {\n unsupported('Redirect navigation');\n }\n async signinRedirectCallback(_url) {\n unsupported('Redirect navigation');\n }\n async signinCallback(_url) {\n unsupported('Browser callback dispatch');\n }\n async signinResourceOwnerCredentials(_args) {\n unsupported('Resource Owner Password Credentials');\n }\n async signinSilentCallback(_url) {\n unsupported('Iframe navigation');\n }\n async signoutRedirect() {\n unsupported('Redirect navigation');\n }\n async signoutRedirectCallback(_url) {\n unsupported('Redirect navigation');\n }\n async signoutCallback(_url, _keepOpen) {\n unsupported('Browser callback dispatch');\n }\n async signoutSilent() {\n unsupported('Iframe logout');\n }\n async signoutSilentCallback(_url) {\n unsupported('Iframe logout');\n }\n async querySessionStatus() {\n unsupported('Browser session monitoring');\n }\n}\nfunction assertRuntime() {\n if (!globalThis.crypto?.subtle || !globalThis.crypto.getRandomValues) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Web Crypto is required by oidc-client-ts');\n }\n}\nfunction assertSettings(settings) {\n if ('client_secret' in settings) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Native public clients must not contain a client secret');\n }\n if ('client_authentication' in settings || 'dpop' in settings) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'The supplied settings contain an unsupported native-client option');\n }\n}\nfunction toStoredSession(user, issuer, clientId) {\n return {\n version: 1,\n issuer,\n clientId,\n accessToken: user.access_token,\n refreshToken: user.refresh_token,\n idToken: user.id_token,\n tokenType: user.token_type,\n scope: user.scope,\n expiresAt: user.expires_at,\n };\n}\n//# sourceMappingURL=capacitor-user-manager.js.map"],"names":["registerPlugin","UserManager","App","ErrorResponse"],"mappings":";;;;;;AAAO,MAAM,kBAAkB,SAAS,KAAK,CAAC;AAC9C,IAAI,IAAI;AACR,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AAC/B,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,oBAAoB;AACxC,IAAI;AACJ;AACO,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,EAAE,OAAO,CAAC,+CAA+C,CAAC,CAAC;AACpH;;ACTO,MAAM,UAAU,GAAGA,mBAAc,CAAC,eAAe,CAAC;;ACClD,MAAM,kBAAkB,CAAC;AAChC,IAAI,iCAAiC;AACrC,IAAI,WAAW,CAAC,iCAAiC,EAAE;AACnD,QAAQ,IAAI,CAAC,iCAAiC,GAAG,iCAAiC;AAClF,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,iCAAiC,CAAC;AAC1E,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,iCAAiC;AACrC,IAAI,WAAW,CAAC,iCAAiC,EAAE;AACnD,QAAQ,IAAI,CAAC,iCAAiC,GAAG,iCAAiC;AAClF,IAAI;AACJ,IAAI,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE;AAC5B,QAAQ,sBAAsB,CAAC,GAAG,CAAC;AACnC,QAAQ,MAAM,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC;AACvD,QAAQ,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;AAC/C,YAAY,GAAG;AACf,YAAY,WAAW;AACvB,YAAY,iCAAiC,EAAE,IAAI,CAAC,iCAAiC;AACrF,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;AAC5D,YAAY,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,wEAAwE,CAAC;AACtI,QAAQ;AACR,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE;AAChC,IAAI;AACJ;AACO,SAAS,sBAAsB,CAAC,UAAU,EAAE;AACnD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AACnC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO;AACnD,SAAS,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;AAClG,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,cAAc,EAAE;AACtD,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;AACrH,IAAI;AACJ;AACO,SAAS,sBAAsB,CAAC,UAAU,EAAE;AACnD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,0BAA0B,CAAC;AACrE,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC1C,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;AAC5G,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACO,SAAS,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE;AAC/D,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;AAC3C,IAAI,QAAQ,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC7E,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;AACjE,QAAQ,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;AAC7C;AACO,MAAM,0BAA0B,CAAC;AACxC,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,WAAW,CAAC,mBAAmB,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,WAAW,CAAC,mBAAmB,CAAC;AACxC,IAAI;AACJ;;ACnEO,MAAM,yBAAyB,CAAC;AACvC,IAAI,SAAS;AACb,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,IAAI;AACJ,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AAC1B,QAAQ,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC9E,IAAI;AACJ,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;AACnB,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK;AACtF,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,GAAG,EAAE;AACtB,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK;AACzF,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI;AACvF,IAAI;AACJ;;ACZO,MAAM,oBAAoB,SAASC,wBAAW,CAAC;AACtD,IAAI,gBAAgB;AACpB,IAAI,uBAAuB;AAC3B,IAAI,cAAc;AAClB,IAAI,gBAAgB;AACpB,IAAI,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE;AAC3D,QAAQ,MAAM,UAAU,GAAG,IAAI,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC5F,QAAQ,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAQ,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,aAAa,CAAC,iCAAiC,IAAI,KAAK,CAAC;AAC1G,QAAQ,KAAK,CAAC;AACd,YAAY,GAAG,QAAQ;AACvB,YAAY,aAAa,EAAE,MAAM;AACjC,YAAY,WAAW,EAAE,KAAK;AAC9B,YAAY,cAAc,EAAE,KAAK;AACjC,YAAY,kBAAkB,EAAE,QAAQ,CAAC,YAAY;AACrD,YAAY,8BAA8B,EAAE,QAAQ,CAAC,wBAAwB;AAC7E,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,0BAA0B,EAAE,CAAC;AAClE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ,IAAI,aAAa,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,EAAE,EAAE;AACtD,QAAQ,aAAa,EAAE;AACvB,QAAQ,cAAc,CAAC,QAAQ,CAAC;AAChC,QAAQ,MAAM,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC;AAC3D,QAAQ,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,gBAAgB,IAAI,SAAS,CAAC;AACtH,QAAQ,MAAM,OAAO,CAAC,OAAO,EAAE;AAC/B,QAAQ,OAAO,CAAC,gBAAgB,GAAG,MAAMC,OAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC7F,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,OAAO,CAAC,wBAAwB,EAAE;AAClD,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,CAAC,wBAAwB,EAAE;AAC1C,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,IAAI,GAAG,EAAE,EAAE;AACjC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE;AAC7B,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;AAClC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AACtC,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI,CAAC,uBAAuB;AAC/E,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AAC3C,QAAQ,IAAI,CAAC,uBAAuB,GAAG,OAAO;AAC9C,QAAQ,KAAK;AACb,aAAa,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrI,aAAa,OAAO,CAAC,MAAM;AAC3B,YAAY,IAAI,IAAI,CAAC,uBAAuB,KAAK,OAAO;AACxD,gBAAgB,IAAI,CAAC,uBAAuB,GAAG,SAAS;AACxD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,sBAAsB,GAAG,EAAE,EAAE;AACpD,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI;AACjB,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,sBAAsB;AACrF,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE;AAClC,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,KAAK,CAAC,UAAU,EAAE;AAChC,IAAI;AACJ,IAAI,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;AACnE,gBAAgB,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/C,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE;AACxB,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;AAClC,YAAY,IAAI,IAAI,EAAE,OAAO;AAC7B,gBAAgB,MAAM,KAAK,CAAC,UAAU,EAAE;AACxC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK;AACvG,YAAY,IAAI,KAAK,YAAYC,0BAAa,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe;AACjF,gBAAgB,MAAM,KAAK,CAAC,UAAU,EAAE;AACxC,YAAY,MAAM,KAAK;AACvB,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,SAAS,CAAC;AAClE,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,SAAS,CAAC;AACzD,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE;AAC1B,QAAQ,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,QAAQ,MAAM,UAAU,CAAC,kBAAkB,CAAC;AAC5C,YAAY,SAAS,EAAE,IAAI,CAAC,gBAAgB;AAC5C,YAAY,KAAK,EAAE;AACnB,kBAAkB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC9J,kBAAkB,IAAI;AACtB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,MAAM,UAAU,CAAC,MAAM,EAAE;AACjC,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,MAAM,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE;AAC7C,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,IAAI,CAAC,MAAM,EAAE;AAC3B,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,sBAAsB,CAAC,IAAI,EAAE;AACvC,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,cAAc,CAAC,IAAI,EAAE;AAC/B,QAAQ,WAAW,CAAC,2BAA2B,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,8BAA8B,CAAC,KAAK,EAAE;AAChD,QAAQ,WAAW,CAAC,qCAAqC,CAAC;AAC1D,IAAI;AACJ,IAAI,MAAM,oBAAoB,CAAC,IAAI,EAAE;AACrC,QAAQ,WAAW,CAAC,mBAAmB,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,uBAAuB,CAAC,IAAI,EAAE;AACxC,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE;AAC3C,QAAQ,WAAW,CAAC,2BAA2B,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,WAAW,CAAC,eAAe,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,IAAI,EAAE;AACtC,QAAQ,WAAW,CAAC,eAAe,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,WAAW,CAAC,4BAA4B,CAAC;AACjD,IAAI;AACJ;AACA,SAAS,aAAa,GAAG;AACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE;AAC1E,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;AACvG,IAAI;AACJ;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE;AAClC,IAAI,IAAI,eAAe,IAAI,QAAQ,EAAE;AACrC,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;AACrH,IAAI;AACJ,IAAI,IAAI,uBAAuB,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,EAAE;AACnE,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,mEAAmE,CAAC;AAChI,IAAI;AACJ;AACA,SAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;AACjD,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,MAAM;AACd,QAAQ,QAAQ;AAChB,QAAQ,WAAW,EAAE,IAAI,CAAC,YAAY;AACtC,QAAQ,YAAY,EAAE,IAAI,CAAC,aAAa;AACxC,QAAQ,OAAO,EAAE,IAAI,CAAC,QAAQ;AAC9B,QAAQ,SAAS,EAAE,IAAI,CAAC,UAAU;AAClC,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,QAAQ,SAAS,EAAE,IAAI,CAAC,UAAU;AAClC,KAAK;AACL;;;;;;;;;;"}
1
+ {"version":3,"file":"plugin.cjs","sources":["esm/errors.js","esm/base-capacitor-user-manager.js","esm/configuration.js","esm/capacitor-user-manager.js","esm/native.js","esm/capacitor-navigator.js","esm/capacitor-secure-state-store.js","esm/native-capacitor-user-manager.js","esm/web-capacitor-user-manager.js","esm/index.js"],"sourcesContent":["export class CapacitorOidcError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.code = code;\n this.name = 'CapacitorOidcError';\n }\n}\nexport function unsupported(feature) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `${feature} is not available in a native Capacitor runtime`);\n}\n//# sourceMappingURL=errors.js.map","import { UserManager, } from 'oidc-client-ts';\nimport { unsupported } from './errors.js';\nexport class BaseCapacitorUserManager extends UserManager {\n automaticRenewalPromise;\n refreshPromise;\n signinMode;\n signoutMode;\n defaultSigninArgs;\n defaultSignoutArgs;\n constructor(configuration, redirectNavigator, popupNavigator, iframeNavigator) {\n super(configuration.settings, redirectNavigator, popupNavigator, iframeNavigator);\n this.signinMode = configuration.signinMode;\n this.signoutMode = configuration.signoutMode;\n this.defaultSigninArgs = configuration.signinArgs;\n this.defaultSignoutArgs = configuration.signoutArgs;\n }\n async initialize() {\n await this.getUser();\n }\n async signin(args = {}) {\n const mergedArgs = { ...this.defaultSigninArgs, ...args };\n if (this.signinMode === 'redirect')\n return this.signinRedirect(mergedArgs);\n await this.signinPopup(mergedArgs);\n }\n async signout(args = {}) {\n const mergedArgs = { ...this.defaultSignoutArgs, ...args };\n if (this.signoutMode === 'redirect')\n return this.signoutRedirect(mergedArgs);\n await this.signoutPopup(mergedArgs);\n }\n async getValidUser(minimumValiditySeconds = 60) {\n const user = await this.getUser();\n if (!user)\n return null;\n if (user.expires_in === undefined || user.expires_in > minimumValiditySeconds)\n return user;\n return this.signinSilent();\n }\n async signinPopup(args = {}) {\n await this.waitForRenewal();\n return super.signinPopup(args);\n }\n async signoutPopup(args = {}) {\n await this.waitForRenewal();\n await super.signoutPopup(args);\n }\n async signinRedirect(args = {}) {\n await this.waitForRenewal();\n await super.signinRedirect(args);\n }\n async signoutRedirect(args = {}) {\n await this.waitForRenewal();\n await super.signoutRedirect(args);\n }\n signinSilent(args = {}) {\n if (!this.refreshPromise) {\n const refresh = this.performSilentSignin(args);\n this.refreshPromise = refresh.finally(() => {\n this.refreshPromise = undefined;\n });\n }\n return this.refreshPromise;\n }\n async signinResourceOwnerCredentials(_args) {\n unsupported('Resource Owner Password Credentials');\n }\n async removeUser() {\n await this.waitForRenewal();\n await this.removeUserWithoutWaiting();\n }\n cancel() {\n return Promise.resolve();\n }\n async dispose() {\n this.stopSilentRenew();\n await this.disposePlatform();\n await this.waitForRenewal();\n await this.cancel();\n }\n performSilentSignin(args) {\n return super.signinSilent(args);\n }\n removeUserWithoutWaiting() {\n return super.removeUser();\n }\n checkForAutomaticRenewal() {\n if (!this.settings.automaticSilentRenew || this.automaticRenewalPromise)\n return;\n const renewal = this.getValidUser();\n this.automaticRenewalPromise = renewal;\n void renewal\n .catch((error) => this.events._raiseSilentRenewError(error instanceof Error ? error : new Error('Silent renewal failed')))\n .finally(() => {\n if (this.automaticRenewalPromise === renewal)\n this.automaticRenewalPromise = undefined;\n });\n }\n async waitForRenewal() {\n await this.automaticRenewalPromise?.catch(() => undefined);\n await this.refreshPromise?.catch(() => undefined);\n }\n}\n//# sourceMappingURL=base-capacitor-user-manager.js.map","import { CapacitorOidcError } from './errors.js';\nexport function resolveConfiguration(configuration, platform) {\n if (platform === 'web')\n return resolveWebConfiguration(configuration);\n return resolveNativeConfiguration(configuration, platform);\n}\nexport function resolveLegacyNativeConfiguration(settings, nativeOptions, platform) {\n if (platform === 'web') {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Legacy CapacitorUserManager settings are only supported on iOS and Android');\n }\n assertPublicClient(settings);\n if ('dpop' in settings) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Native configuration does not support dpop');\n }\n return resolvedNativeConfiguration(platform, settings, nativeOptions);\n}\nfunction resolveWebConfiguration(configuration) {\n const web = configuration.web;\n if (!web)\n unsupportedConfiguration('web');\n const signoutMode = web.signoutMode ?? 'redirect';\n const settings = { ...configuration.common, ...web.settings };\n assertPublicClient(settings);\n if (signoutMode === 'popup' && !settings.popup_post_logout_redirect_uri && !settings.post_logout_redirect_uri) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Web popup signout requires post_logout_redirect_uri or popup_post_logout_redirect_uri');\n }\n return {\n platform: 'web',\n settings,\n signinMode: web.signinMode ?? 'redirect',\n signoutMode,\n signinArgs: web.signinArgs ?? {},\n signoutArgs: web.signoutArgs ?? {},\n };\n}\nfunction resolveNativeConfiguration(configuration, platform) {\n const native = configuration.native;\n if (!native)\n unsupportedConfiguration(platform);\n const override = configuration[platform];\n const settings = { ...configuration.common, ...native.settings, ...override?.settings };\n assertPublicClient(settings);\n assertNativeSettings(settings);\n return resolvedNativeConfiguration(platform, settings, { ...native.options, ...override?.options }, { ...native.signinArgs, ...override?.signinArgs }, { ...native.signoutArgs, ...override?.signoutArgs });\n}\nfunction resolvedNativeConfiguration(platform, settings, nativeOptions, signinArgs = {}, signoutArgs = {}) {\n return {\n platform,\n settings: { ...settings, response_type: 'code', disablePKCE: false, monitorSession: false },\n nativeOptions,\n signinMode: 'popup',\n signoutMode: 'popup',\n signinArgs,\n signoutArgs,\n };\n}\nfunction assertPublicClient(settings) {\n const unsupported = ['client_authentication', 'client_secret', 'disablePKCE', 'response_type'].find((key) => key in settings);\n if (unsupported) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `Public-client configuration does not support ${unsupported}`);\n }\n}\nfunction assertNativeSettings(settings) {\n const unsupported = ['dpop', 'monitorSession', 'silent_redirect_uri', 'stateStore', 'userStore'].find((key) => key in settings);\n if (unsupported) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `Native configuration does not support ${unsupported}`);\n }\n}\nfunction unsupportedConfiguration(platform) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', `No ${platform} configuration was provided`);\n}\n//# sourceMappingURL=configuration.js.map","import { Capacitor } from '@capacitor/core';\nimport { BaseCapacitorUserManager } from './base-capacitor-user-manager.js';\nimport { resolveConfiguration, resolveLegacyNativeConfiguration, } from './configuration.js';\nimport { CapacitorOidcError } from './errors.js';\nexport class CapacitorUserManager extends BaseCapacitorUserManager {\n static async create(configuration, nativeOptions = {}) {\n assertRuntime();\n const platform = currentPlatform();\n const resolved = 'redirect_uri' in configuration\n ? resolveLegacyNativeConfiguration(configuration, nativeOptions, platform)\n : resolveConfiguration(configuration, platform);\n const manager = await platformUserManagerFactory(resolved);\n await manager.initialize();\n return manager;\n }\n}\nlet platformUserManagerFactory;\nexport function setPlatformUserManagerFactory(factory) {\n platformUserManagerFactory = factory;\n}\nfunction currentPlatform() {\n const platform = Capacitor.getPlatform();\n return platform === 'ios' || platform === 'android' ? platform : 'web';\n}\nfunction assertRuntime() {\n if (!globalThis.crypto?.subtle || !globalThis.crypto.getRandomValues) {\n throw new CapacitorOidcError('UNSUPPORTED_RUNTIME', 'Web Crypto is required by oidc-client-ts');\n }\n}\n//# sourceMappingURL=capacitor-user-manager.js.map","import { registerPlugin } from '@capacitor/core';\nexport const NativeOidc = registerPlugin('CapacitorOidc');\n//# sourceMappingURL=native.js.map","import { CapacitorOidcError, unsupported } from './errors.js';\nimport { NativeOidc } from './native.js';\nexport class CapacitorNavigator {\n prefersEphemeralWebBrowserSession;\n constructor(prefersEphemeralWebBrowserSession) {\n this.prefersEphemeralWebBrowserSession = prefersEphemeralWebBrowserSession;\n }\n async prepare() {\n return new CapacitorWindow(this.prefersEphemeralWebBrowserSession);\n }\n async callback() {\n unsupported('Navigator callbacks');\n }\n}\nclass CapacitorWindow {\n prefersEphemeralWebBrowserSession;\n constructor(prefersEphemeralWebBrowserSession) {\n this.prefersEphemeralWebBrowserSession = prefersEphemeralWebBrowserSession;\n }\n async navigate({ url }) {\n assertSecureRequestUrl(url);\n const callbackUrl = callbackUrlFromRequest(url);\n const response = await NativeOidc.open({\n url,\n callbackUrl,\n prefersEphemeralWebBrowserSession: this.prefersEphemeralWebBrowserSession,\n });\n if (!isExpectedCallback(response.url, callbackUrl)) {\n throw new CapacitorOidcError('INVALID_CALLBACK', 'The authentication callback does not match the configured redirect URI');\n }\n return response;\n }\n close() {\n void NativeOidc.cancel();\n }\n}\nexport function assertSecureRequestUrl(requestUrl) {\n const url = new URL(requestUrl);\n const isHttpLoopback = url.protocol === 'http:' &&\n (url.hostname === 'localhost' || url.hostname === '127.0.0.1' || url.hostname === '[::1]');\n if (url.protocol !== 'https:' && !isHttpLoopback) {\n throw new CapacitorOidcError('BROWSER_UNAVAILABLE', 'OIDC authorization and logout endpoints must use HTTPS');\n }\n}\nexport function callbackUrlFromRequest(requestUrl) {\n const url = new URL(requestUrl);\n const callback = url.searchParams.get('post_logout_redirect_uri') ??\n url.searchParams.get('logout_uri') ??\n url.searchParams.get('redirect_uri');\n if (!callback) {\n throw new CapacitorOidcError('INVALID_CALLBACK', 'The OIDC request does not contain a callback URI');\n }\n return callback;\n}\nexport function isExpectedCallback(actualValue, expectedValue) {\n const actual = new URL(actualValue);\n const expected = new URL(expectedValue);\n return (actual.protocol.toLowerCase() === expected.protocol.toLowerCase() &&\n actual.host.toLowerCase() === expected.host.toLowerCase() &&\n actual.pathname === expected.pathname);\n}\nexport class UnsupportedIframeNavigator {\n async prepare() {\n unsupported('Iframe navigation');\n }\n async callback() {\n unsupported('Iframe navigation');\n }\n}\n//# sourceMappingURL=capacitor-navigator.js.map","import { NativeOidc } from './native.js';\nexport class CapacitorSecureStateStore {\n namespace;\n constructor(namespace) {\n this.namespace = namespace;\n }\n async set(key, value) {\n await NativeOidc.storageSet({ namespace: this.namespace, key, value });\n }\n async get(key) {\n return (await NativeOidc.storageGet({ namespace: this.namespace, key })).value;\n }\n async remove(key) {\n return (await NativeOidc.storageRemove({ namespace: this.namespace, key })).value;\n }\n async getAllKeys() {\n return (await NativeOidc.storageGetAllKeys({ namespace: this.namespace })).keys;\n }\n}\n//# sourceMappingURL=capacitor-secure-state-store.js.map","import { App } from '@capacitor/app';\nimport { ErrorResponse, } from 'oidc-client-ts';\nimport { CapacitorNavigator, UnsupportedIframeNavigator } from './capacitor-navigator.js';\nimport { CapacitorSecureStateStore } from './capacitor-secure-state-store.js';\nimport { CapacitorUserManager } from './capacitor-user-manager.js';\nimport { unsupported } from './errors.js';\nimport { NativeOidc } from './native.js';\nexport class NativeCapacitorUserManager extends CapacitorUserManager {\n appStateListener;\n storageNamespace;\n constructor(configuration) {\n const storageNamespace = configuration.nativeOptions?.storageNamespace ?? 'default';\n const stateStore = new CapacitorSecureStateStore(`${storageNamespace}.transactions`);\n const userStore = new CapacitorSecureStateStore(`${storageNamespace}.session`);\n const navigator = new CapacitorNavigator(configuration.nativeOptions?.prefersEphemeralWebBrowserSession ?? false);\n super({\n ...configuration,\n settings: {\n ...configuration.settings,\n popup_redirect_uri: configuration.settings.redirect_uri,\n popup_post_logout_redirect_uri: configuration.settings.post_logout_redirect_uri,\n stateStore,\n userStore,\n },\n }, navigator, navigator, new UnsupportedIframeNavigator());\n this.storageNamespace = storageNamespace;\n }\n static async fromConfiguration(configuration) {\n await NativeOidc.configure(configuration.nativeOptions?.ios ?? {});\n return new NativeCapacitorUserManager(configuration);\n }\n async initialize() {\n await super.initialize();\n this.appStateListener = await App.addListener('appStateChange', ({ isActive }) => {\n if (isActive)\n this.checkForAutomaticRenewal();\n });\n this.checkForAutomaticRenewal();\n }\n async signinRedirect(_args = {}) {\n unsupported('Redirect navigation');\n }\n async signinRedirectCallback(_url) {\n unsupported('Redirect navigation');\n }\n async signinCallback(_url) {\n unsupported('Browser callback dispatch');\n }\n async signinSilentCallback(_url) {\n unsupported('Iframe navigation');\n }\n async signoutRedirect(_args = {}) {\n unsupported('Redirect navigation');\n }\n async signoutRedirectCallback(_url) {\n unsupported('Redirect navigation');\n }\n async signoutCallback(_url, _keepOpen) {\n unsupported('Browser callback dispatch');\n }\n async signoutSilent(_args = {}) {\n unsupported('Iframe logout');\n }\n async signoutSilentCallback(_url) {\n unsupported('Iframe logout');\n }\n async querySessionStatus(_args = {}) {\n unsupported('Browser session monitoring');\n }\n async storeUser(user) {\n await super.storeUser(user);\n await NativeOidc.setSessionSnapshot({\n namespace: this.storageNamespace,\n value: user\n ? JSON.stringify(toStoredSession(user, user.profile.iss ?? this.settings.metadata?.issuer ?? this.settings.authority, this.settings.client_id))\n : null,\n });\n }\n cancel() {\n return NativeOidc.cancel();\n }\n async disposePlatform() {\n await this.appStateListener?.remove();\n }\n async performSilentSignin(args) {\n const user = await this.getUser();\n if (!user?.refresh_token) {\n if (user?.expired)\n await this.removeUserWithoutWaiting();\n return null;\n }\n return super.performSilentSignin({ ...args, forceIframeAuth: false }).catch(async (error) => {\n if (error instanceof ErrorResponse && error.error === 'invalid_grant')\n await this.removeUserWithoutWaiting();\n throw error;\n });\n }\n}\nfunction toStoredSession(user, issuer, clientId) {\n return {\n version: 1,\n issuer,\n clientId,\n accessToken: user.access_token,\n refreshToken: user.refresh_token,\n idToken: user.id_token,\n tokenType: user.token_type,\n scope: user.scope,\n expiresAt: user.expires_at,\n };\n}\n//# sourceMappingURL=native-capacitor-user-manager.js.map","import { CapacitorUserManager } from './capacitor-user-manager.js';\nexport class WebCapacitorUserManager extends CapacitorUserManager {\n sessionMonitor;\n disposed = false;\n constructor(configuration) {\n super(configuration);\n this.sessionMonitor = this.captureSessionMonitor();\n }\n async querySessionStatus(args = {}) {\n if (this.disposed)\n return null;\n const session = await super.querySessionStatus(args);\n return this.disposed ? null : session;\n }\n disposePlatform() {\n this.disposed = true;\n if (this.sessionMonitor) {\n this.events.removeUserLoaded(this.sessionMonitor.start);\n this.events.removeUserUnloaded(this.sessionMonitor.stop);\n this.sessionMonitor.stop();\n }\n return Promise.resolve();\n }\n captureSessionMonitor() {\n // oidc-client-ts does not expose public session-monitor lifecycle hooks.\n const monitor = this._sessionMonitor;\n if (!monitor)\n return undefined;\n const originalStart = monitor._start;\n const stop = monitor._stop;\n const start = async (user) => {\n if (this.disposed)\n return;\n await originalStart(user);\n if (this.disposed)\n stop();\n };\n this.events.removeUserLoaded(originalStart);\n this.events.addUserLoaded(start);\n monitor._start = start;\n return { start, stop };\n }\n}\n//# sourceMappingURL=web-capacitor-user-manager.js.map","import { CapacitorUserManager, setPlatformUserManagerFactory } from './capacitor-user-manager.js';\nimport { NativeCapacitorUserManager } from './native-capacitor-user-manager.js';\nimport { WebCapacitorUserManager } from './web-capacitor-user-manager.js';\nsetPlatformUserManagerFactory((configuration) => configuration.platform === 'web'\n ? new WebCapacitorUserManager(configuration)\n : NativeCapacitorUserManager.fromConfiguration(configuration));\nexport { CapacitorUserManager };\nexport { CapacitorSecureStateStore } from './capacitor-secure-state-store.js';\nexport { CapacitorOidcError } from './errors.js';\nexport { User, WebStorageStateStore } from 'oidc-client-ts';\n//# sourceMappingURL=index.js.map"],"names":["UserManager","Capacitor","registerPlugin","App","ErrorResponse"],"mappings":";;;;;;AAAO,MAAM,kBAAkB,SAAS,KAAK,CAAC;AAC9C,IAAI,IAAI;AACR,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AAC/B,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,oBAAoB;AACxC,IAAI;AACJ;AACO,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,EAAE,OAAO,CAAC,+CAA+C,CAAC,CAAC;AACpH;;ACRO,MAAM,wBAAwB,SAASA,wBAAW,CAAC;AAC1D,IAAI,uBAAuB;AAC3B,IAAI,cAAc;AAClB,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,WAAW,CAAC,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE;AACnF,QAAQ,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;AACzF,QAAQ,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;AAClD,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW;AACpD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,UAAU;AACzD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,WAAW;AAC3D,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,CAAC,OAAO,EAAE;AAC5B,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE;AAC5B,QAAQ,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,EAAE;AACjE,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU;AAC1C,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAClD,QAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE;AAC7B,QAAQ,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,EAAE;AAClE,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU;AAC3C,YAAY,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnD,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3C,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,sBAAsB,GAAG,EAAE,EAAE;AACpD,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI;AACjB,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,sBAAsB;AACrF,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE;AAClC,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,IAAI,GAAG,EAAE,EAAE;AACjC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;AAClC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,cAAc,CAAC,IAAI,GAAG,EAAE,EAAE;AACpC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,IAAI,GAAG,EAAE,EAAE;AACrC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1D,YAAY,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM;AACxD,gBAAgB,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/C,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC,IAAI;AACJ,IAAI,MAAM,8BAA8B,CAAC,KAAK,EAAE;AAChD,QAAQ,WAAW,CAAC,qCAAqC,CAAC;AAC1D,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,IAAI,CAAC,wBAAwB,EAAE;AAC7C,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,MAAM,IAAI,CAAC,eAAe,EAAE;AACpC,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,QAAQ,MAAM,IAAI,CAAC,MAAM,EAAE;AAC3B,IAAI;AACJ,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,OAAO,KAAK,CAAC,UAAU,EAAE;AACjC,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI,CAAC,uBAAuB;AAC/E,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AAC3C,QAAQ,IAAI,CAAC,uBAAuB,GAAG,OAAO;AAC9C,QAAQ,KAAK;AACb,aAAa,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrI,aAAa,OAAO,CAAC,MAAM;AAC3B,YAAY,IAAI,IAAI,CAAC,uBAAuB,KAAK,OAAO;AACxD,gBAAgB,IAAI,CAAC,uBAAuB,GAAG,SAAS;AACxD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,SAAS,CAAC;AAClE,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,SAAS,CAAC;AACzD,IAAI;AACJ;;ACrGO,SAAS,oBAAoB,CAAC,aAAa,EAAE,QAAQ,EAAE;AAC9D,IAAI,IAAI,QAAQ,KAAK,KAAK;AAC1B,QAAQ,OAAO,uBAAuB,CAAC,aAAa,CAAC;AACrD,IAAI,OAAO,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC9D;AACO,SAAS,gCAAgC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE;AACpF,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,4EAA4E,CAAC;AACzI,IAAI;AACJ,IAAI,kBAAkB,CAAC,QAAQ,CAAC;AAChC,IAAI,IAAI,MAAM,IAAI,QAAQ,EAAE;AAC5B,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;AACzG,IAAI;AACJ,IAAI,OAAO,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC;AACzE;AACA,SAAS,uBAAuB,CAAC,aAAa,EAAE;AAChD,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG;AACjC,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,wBAAwB,CAAC,KAAK,CAAC;AACvC,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,UAAU;AACrD,IAAI,MAAM,QAAQ,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;AACjE,IAAI,kBAAkB,CAAC,QAAQ,CAAC;AAChC,IAAI,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,8BAA8B,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE;AACnH,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,uFAAuF,CAAC;AACpJ,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,KAAK;AACvB,QAAQ,QAAQ;AAChB,QAAQ,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,UAAU;AAChD,QAAQ,WAAW;AACnB,QAAQ,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;AACxC,QAAQ,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;AAC1C,KAAK;AACL;AACA,SAAS,0BAA0B,CAAC,aAAa,EAAE,QAAQ,EAAE;AAC7D,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM;AACvC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,wBAAwB,CAAC,QAAQ,CAAC;AAC1C,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC5C,IAAI,MAAM,QAAQ,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE;AAC3F,IAAI,kBAAkB,CAAC,QAAQ,CAAC;AAChC,IAAI,oBAAoB,CAAC,QAAQ,CAAC;AAClC,IAAI,OAAO,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC/M;AACA,SAAS,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE;AAC3G,IAAI,OAAO;AACX,QAAQ,QAAQ;AAChB,QAAQ,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE;AACnG,QAAQ,aAAa;AACrB,QAAQ,UAAU,EAAE,OAAO;AAC3B,QAAQ,WAAW,EAAE,OAAO;AAC5B,QAAQ,UAAU;AAClB,QAAQ,WAAW;AACnB,KAAK;AACL;AACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,IAAI,MAAM,WAAW,GAAG,CAAC,uBAAuB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,QAAQ,CAAC;AACjI,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,6CAA6C,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1H,IAAI;AACJ;AACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE;AACxC,IAAI,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,QAAQ,CAAC;AACnI,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,sCAAsC,EAAE,WAAW,CAAC,CAAC,CAAC;AACnH,IAAI;AACJ;AACA,SAAS,wBAAwB,CAAC,QAAQ,EAAE;AAC5C,IAAI,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACpG;;AClEO,MAAM,oBAAoB,SAAS,wBAAwB,CAAC;AACnE,IAAI,aAAa,MAAM,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,EAAE;AAC3D,QAAQ,aAAa,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG,eAAe,EAAE;AAC1C,QAAQ,MAAM,QAAQ,GAAG,cAAc,IAAI;AAC3C,cAAc,gCAAgC,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ;AACrF,cAAc,oBAAoB,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC3D,QAAQ,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,QAAQ,CAAC;AAClE,QAAQ,MAAM,OAAO,CAAC,UAAU,EAAE;AAClC,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ;AACA,IAAI,0BAA0B;AACvB,SAAS,6BAA6B,CAAC,OAAO,EAAE;AACvD,IAAI,0BAA0B,GAAG,OAAO;AACxC;AACA,SAAS,eAAe,GAAG;AAC3B,IAAI,MAAM,QAAQ,GAAGC,cAAS,CAAC,WAAW,EAAE;AAC5C,IAAI,OAAO,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,GAAG,QAAQ,GAAG,KAAK;AAC1E;AACA,SAAS,aAAa,GAAG;AACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE;AAC1E,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;AACvG,IAAI;AACJ;;AC3BO,MAAM,UAAU,GAAGC,mBAAc,CAAC,eAAe,CAAC;;ACClD,MAAM,kBAAkB,CAAC;AAChC,IAAI,iCAAiC;AACrC,IAAI,WAAW,CAAC,iCAAiC,EAAE;AACnD,QAAQ,IAAI,CAAC,iCAAiC,GAAG,iCAAiC;AAClF,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,iCAAiC,CAAC;AAC1E,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,iCAAiC;AACrC,IAAI,WAAW,CAAC,iCAAiC,EAAE;AACnD,QAAQ,IAAI,CAAC,iCAAiC,GAAG,iCAAiC;AAClF,IAAI;AACJ,IAAI,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE;AAC5B,QAAQ,sBAAsB,CAAC,GAAG,CAAC;AACnC,QAAQ,MAAM,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC;AACvD,QAAQ,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;AAC/C,YAAY,GAAG;AACf,YAAY,WAAW;AACvB,YAAY,iCAAiC,EAAE,IAAI,CAAC,iCAAiC;AACrF,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;AAC5D,YAAY,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,wEAAwE,CAAC;AACtI,QAAQ;AACR,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE;AAChC,IAAI;AACJ;AACO,SAAS,sBAAsB,CAAC,UAAU,EAAE;AACnD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AACnC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO;AACnD,SAAS,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;AAClG,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,cAAc,EAAE;AACtD,QAAQ,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;AACrH,IAAI;AACJ;AACO,SAAS,sBAAsB,CAAC,UAAU,EAAE;AACnD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,0BAA0B,CAAC;AACrE,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC1C,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;AAC5G,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACO,SAAS,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE;AAC/D,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;AAC3C,IAAI,QAAQ,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC7E,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;AACjE,QAAQ,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;AAC7C;AACO,MAAM,0BAA0B,CAAC;AACxC,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,WAAW,CAAC,mBAAmB,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,WAAW,CAAC,mBAAmB,CAAC;AACxC,IAAI;AACJ;;ACnEO,MAAM,yBAAyB,CAAC;AACvC,IAAI,SAAS;AACb,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,IAAI;AACJ,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AAC1B,QAAQ,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC9E,IAAI;AACJ,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;AACnB,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK;AACtF,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,GAAG,EAAE;AACtB,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK;AACzF,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI;AACvF,IAAI;AACJ;;ACXO,MAAM,0BAA0B,SAAS,oBAAoB,CAAC;AACrE,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,WAAW,CAAC,aAAa,EAAE;AAC/B,QAAQ,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,EAAE,gBAAgB,IAAI,SAAS;AAC3F,QAAQ,MAAM,UAAU,GAAG,IAAI,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC5F,QAAQ,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAQ,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,aAAa,CAAC,aAAa,EAAE,iCAAiC,IAAI,KAAK,CAAC;AACzH,QAAQ,KAAK,CAAC;AACd,YAAY,GAAG,aAAa;AAC5B,YAAY,QAAQ,EAAE;AACtB,gBAAgB,GAAG,aAAa,CAAC,QAAQ;AACzC,gBAAgB,kBAAkB,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY;AACvE,gBAAgB,8BAA8B,EAAE,aAAa,CAAC,QAAQ,CAAC,wBAAwB;AAC/F,gBAAgB,UAAU;AAC1B,gBAAgB,SAAS;AACzB,aAAa;AACb,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,0BAA0B,EAAE,CAAC;AAClE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ,IAAI,aAAa,iBAAiB,CAAC,aAAa,EAAE;AAClD,QAAQ,MAAM,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC;AAC1E,QAAQ,OAAO,IAAI,0BAA0B,CAAC,aAAa,CAAC;AAC5D,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,KAAK,CAAC,UAAU,EAAE;AAChC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAMC,OAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC1F,YAAY,IAAI,QAAQ;AACxB,gBAAgB,IAAI,CAAC,wBAAwB,EAAE;AAC/C,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,IAAI;AACJ,IAAI,MAAM,cAAc,CAAC,KAAK,GAAG,EAAE,EAAE;AACrC,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,sBAAsB,CAAC,IAAI,EAAE;AACvC,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,cAAc,CAAC,IAAI,EAAE;AAC/B,QAAQ,WAAW,CAAC,2BAA2B,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,oBAAoB,CAAC,IAAI,EAAE;AACrC,QAAQ,WAAW,CAAC,mBAAmB,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,KAAK,GAAG,EAAE,EAAE;AACtC,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,uBAAuB,CAAC,IAAI,EAAE;AACxC,QAAQ,WAAW,CAAC,qBAAqB,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE;AAC3C,QAAQ,WAAW,CAAC,2BAA2B,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,KAAK,GAAG,EAAE,EAAE;AACpC,QAAQ,WAAW,CAAC,eAAe,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,IAAI,EAAE;AACtC,QAAQ,WAAW,CAAC,eAAe,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,kBAAkB,CAAC,KAAK,GAAG,EAAE,EAAE;AACzC,QAAQ,WAAW,CAAC,4BAA4B,CAAC;AACjD,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE;AAC1B,QAAQ,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,QAAQ,MAAM,UAAU,CAAC,kBAAkB,CAAC;AAC5C,YAAY,SAAS,EAAE,IAAI,CAAC,gBAAgB;AAC5C,YAAY,KAAK,EAAE;AACnB,kBAAkB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC9J,kBAAkB,IAAI;AACtB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,UAAU,CAAC,MAAM,EAAE;AAClC,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE;AAC7C,IAAI;AACJ,IAAI,MAAM,mBAAmB,CAAC,IAAI,EAAE;AACpC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;AAClC,YAAY,IAAI,IAAI,EAAE,OAAO;AAC7B,gBAAgB,MAAM,IAAI,CAAC,wBAAwB,EAAE;AACrD,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,mBAAmB,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK;AACrG,YAAY,IAAI,KAAK,YAAYC,0BAAa,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe;AACjF,gBAAgB,MAAM,IAAI,CAAC,wBAAwB,EAAE;AACrD,YAAY,MAAM,KAAK;AACvB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,SAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;AACjD,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,MAAM;AACd,QAAQ,QAAQ;AAChB,QAAQ,WAAW,EAAE,IAAI,CAAC,YAAY;AACtC,QAAQ,YAAY,EAAE,IAAI,CAAC,aAAa;AACxC,QAAQ,OAAO,EAAE,IAAI,CAAC,QAAQ;AAC9B,QAAQ,SAAS,EAAE,IAAI,CAAC,UAAU;AAClC,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,QAAQ,SAAS,EAAE,IAAI,CAAC,UAAU;AAClC,KAAK;AACL;;AC7GO,MAAM,uBAAuB,SAAS,oBAAoB,CAAC;AAClE,IAAI,cAAc;AAClB,IAAI,QAAQ,GAAG,KAAK;AACpB,IAAI,WAAW,CAAC,aAAa,EAAE;AAC/B,QAAQ,KAAK,CAAC,aAAa,CAAC;AAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC1D,IAAI;AACJ,IAAI,MAAM,kBAAkB,CAAC,IAAI,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AACzB,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,OAAO;AAC7C,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACnE,YAAY,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACpE,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AACtC,QAAQ;AACR,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;AAC5C,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY,OAAO,SAAS;AAC5B,QAAQ,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;AAC5C,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK;AAClC,QAAQ,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK;AACtC,YAAY,IAAI,IAAI,CAAC,QAAQ;AAC7B,gBAAgB;AAChB,YAAY,MAAM,aAAa,CAAC,IAAI,CAAC;AACrC,YAAY,IAAI,IAAI,CAAC,QAAQ;AAC7B,gBAAgB,IAAI,EAAE;AACtB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AACnD,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,QAAQ,OAAO,CAAC,MAAM,GAAG,KAAK;AAC9B,QAAQ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9B,IAAI;AACJ;;ACvCA,6BAA6B,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,QAAQ,KAAK;AAC5E,MAAM,IAAI,uBAAuB,CAAC,aAAa;AAC/C,MAAM,0BAA0B,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;;;;;;;;;;;;;;"}