@turnkey/react-wallet-kit 1.11.0 → 1.11.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 (50) hide show
  1. package/dist/providers/client/Provider.d.ts.map +1 -1
  2. package/dist/providers/client/Provider.js +300 -303
  3. package/dist/providers/client/Provider.js.map +1 -1
  4. package/dist/providers/client/Provider.mjs +145 -156
  5. package/dist/providers/client/Provider.mjs.map +1 -1
  6. package/dist/utils/oauth/completion.d.ts +132 -0
  7. package/dist/utils/oauth/completion.d.ts.map +1 -0
  8. package/dist/utils/oauth/completion.js +136 -0
  9. package/dist/utils/oauth/completion.js.map +1 -0
  10. package/dist/utils/oauth/completion.mjs +176 -0
  11. package/dist/utils/oauth/completion.mjs.map +1 -0
  12. package/dist/utils/oauth/config.d.ts +34 -0
  13. package/dist/utils/oauth/config.d.ts.map +1 -0
  14. package/dist/utils/oauth/config.js +69 -0
  15. package/dist/utils/oauth/config.js.map +1 -0
  16. package/dist/utils/oauth/config.mjs +54 -0
  17. package/dist/utils/oauth/config.mjs.map +1 -0
  18. package/dist/utils/oauth/helpers.d.ts +13 -0
  19. package/dist/utils/oauth/helpers.d.ts.map +1 -0
  20. package/dist/utils/oauth/helpers.js +38 -0
  21. package/dist/utils/oauth/helpers.js.map +1 -0
  22. package/dist/utils/oauth/helpers.mjs +35 -0
  23. package/dist/utils/oauth/helpers.mjs.map +1 -0
  24. package/dist/utils/oauth/index.d.ts +7 -0
  25. package/dist/utils/oauth/index.d.ts.map +1 -0
  26. package/dist/utils/oauth/pkce.d.ts +14 -0
  27. package/dist/utils/oauth/pkce.d.ts.map +1 -0
  28. package/dist/utils/oauth/pkce.js +48 -0
  29. package/dist/utils/oauth/pkce.js.map +1 -0
  30. package/dist/utils/oauth/pkce.mjs +85 -0
  31. package/dist/utils/oauth/pkce.mjs.map +1 -0
  32. package/dist/utils/oauth/storage.d.ts +48 -0
  33. package/dist/utils/oauth/storage.d.ts.map +1 -0
  34. package/dist/utils/oauth/storage.js +87 -0
  35. package/dist/utils/oauth/storage.js.map +1 -0
  36. package/dist/utils/oauth/storage.mjs +78 -0
  37. package/dist/utils/oauth/storage.mjs.map +1 -0
  38. package/dist/utils/oauth/url.d.ts +92 -0
  39. package/dist/utils/oauth/url.d.ts.map +1 -0
  40. package/dist/utils/oauth/url.js +222 -0
  41. package/dist/utils/oauth/url.js.map +1 -0
  42. package/dist/utils/oauth/url.mjs +228 -0
  43. package/dist/utils/oauth/url.mjs.map +1 -0
  44. package/package.json +3 -3
  45. package/dist/utils/oauth.d.ts +0 -323
  46. package/dist/utils/oauth.d.ts.map +0 -1
  47. package/dist/utils/oauth.js +0 -613
  48. package/dist/utils/oauth.js.map +0 -1
  49. package/dist/utils/oauth.mjs +0 -670
  50. package/dist/utils/oauth.mjs.map +0 -1
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var sdkTypes = require('@turnkey/sdk-types');
4
+ var freeBrandsSvgIcons = require('@fortawesome/free-brands-svg-icons');
5
+
6
+ /**
7
+ * Capitalizes the first letter of a provider name
8
+ * @param provider - The provider name (e.g., "facebook", "discord")
9
+ * @returns The capitalized provider name (e.g., "Facebook", "Discord")
10
+ */
11
+ function capitalizeProviderName(provider) {
12
+ if (!provider) return "Provider";
13
+ return provider.charAt(0).toUpperCase() + provider.slice(1);
14
+ }
15
+ /**
16
+ * Gets the FontAwesome icon for an OAuth provider
17
+ * @param provider - The provider name
18
+ * @returns The FontAwesome icon definition
19
+ */
20
+ function getProviderIcon(provider) {
21
+ switch (provider) {
22
+ case sdkTypes.OAuthProviders.FACEBOOK:
23
+ return freeBrandsSvgIcons.faFacebook;
24
+ case sdkTypes.OAuthProviders.DISCORD:
25
+ return freeBrandsSvgIcons.faDiscord;
26
+ case sdkTypes.OAuthProviders.X:
27
+ return freeBrandsSvgIcons.faXTwitter;
28
+ case sdkTypes.OAuthProviders.APPLE:
29
+ return freeBrandsSvgIcons.faApple;
30
+ case sdkTypes.OAuthProviders.GOOGLE:
31
+ default:
32
+ return freeBrandsSvgIcons.faGoogle;
33
+ }
34
+ }
35
+
36
+ exports.capitalizeProviderName = capitalizeProviderName;
37
+ exports.getProviderIcon = getProviderIcon;
38
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/utils/oauth/helpers.ts"],"sourcesContent":[null],"names":["capitalizeProviderName","provider","charAt","toUpperCase","slice","getProviderIcon","OAuthProviders","FACEBOOK","faFacebook","DISCORD","faDiscord","X","faXTwitter","APPLE","faApple","GOOGLE","faGoogle"],"mappings":";;;;;AASA;;;;AAIG;AACG,SAAUA,sBAAsBA,CAACC,QAAgB,EAAA;AACrD,EAAA,IAAI,CAACA,QAAQ,EAAE,OAAO,UAAU;AAChC,EAAA,OAAOA,QAAQ,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGF,QAAQ,CAACG,KAAK,CAAC,CAAC,CAAC;AAC7D;AAEA;;;;AAIG;AACG,SAAUC,eAAeA,CAACJ,QAAmC,EAAA;AACjE,EAAA,QAAQA,QAAQ;IACd,KAAKK,uBAAc,CAACC,QAAQ;AAC1B,MAAA,OAAOC,6BAAU;IACnB,KAAKF,uBAAc,CAACG,OAAO;AACzB,MAAA,OAAOC,4BAAS;IAClB,KAAKJ,uBAAc,CAACK,CAAC;AACnB,MAAA,OAAOC,6BAAU;IACnB,KAAKN,uBAAc,CAACO,KAAK;AACvB,MAAA,OAAOC,0BAAO;IAChB,KAAKR,uBAAc,CAACS,MAAM;AAC1B,IAAA;AACE,MAAA,OAAOC,2BAAQ;AACnB;AACF;;;;;"}
@@ -0,0 +1,35 @@
1
+ import { OAuthProviders } from '@turnkey/sdk-types';
2
+ import { faGoogle, faApple, faXTwitter, faDiscord, faFacebook } from '@fortawesome/free-brands-svg-icons';
3
+
4
+ /**
5
+ * Capitalizes the first letter of a provider name
6
+ * @param provider - The provider name (e.g., "facebook", "discord")
7
+ * @returns The capitalized provider name (e.g., "Facebook", "Discord")
8
+ */
9
+ function capitalizeProviderName(provider) {
10
+ if (!provider) return "Provider";
11
+ return provider.charAt(0).toUpperCase() + provider.slice(1);
12
+ }
13
+ /**
14
+ * Gets the FontAwesome icon for an OAuth provider
15
+ * @param provider - The provider name
16
+ * @returns The FontAwesome icon definition
17
+ */
18
+ function getProviderIcon(provider) {
19
+ switch (provider) {
20
+ case OAuthProviders.FACEBOOK:
21
+ return faFacebook;
22
+ case OAuthProviders.DISCORD:
23
+ return faDiscord;
24
+ case OAuthProviders.X:
25
+ return faXTwitter;
26
+ case OAuthProviders.APPLE:
27
+ return faApple;
28
+ case OAuthProviders.GOOGLE:
29
+ default:
30
+ return faGoogle;
31
+ }
32
+ }
33
+
34
+ export { capitalizeProviderName, getProviderIcon };
35
+ //# sourceMappingURL=helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.mjs","sources":["../../../src/utils/oauth/helpers.ts"],"sourcesContent":[null],"names":["capitalizeProviderName","provider","charAt","toUpperCase","slice","getProviderIcon","OAuthProviders","FACEBOOK","faFacebook","DISCORD","faDiscord","X","faXTwitter","APPLE","faApple","GOOGLE","faGoogle"],"mappings":";;;AASA;;;;AAIG;AACG,SAAUA,sBAAsBA,CAACC,QAAgB,EAAA;AACrD,EAAA,IAAI,CAACA,QAAQ,EAAE,OAAO,UAAU;AAChC,EAAA,OAAOA,QAAQ,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGF,QAAQ,CAACG,KAAK,CAAC,CAAC,CAAC;AAC7D;AAEA;;;;AAIG;AACG,SAAUC,eAAeA,CAACJ,QAAmC,EAAA;AACjE,EAAA,QAAQA,QAAQ;IACd,KAAKK,cAAc,CAACC,QAAQ;AAC1B,MAAA,OAAOC,UAAU;IACnB,KAAKF,cAAc,CAACG,OAAO;AACzB,MAAA,OAAOC,SAAS;IAClB,KAAKJ,cAAc,CAACK,CAAC;AACnB,MAAA,OAAOC,UAAU;IACnB,KAAKN,cAAc,CAACO,KAAK;AACvB,MAAA,OAAOC,OAAO;IAChB,KAAKR,cAAc,CAACS,MAAM;AAC1B,IAAA;AACE,MAAA,OAAOC,QAAQ;AACnB;AACF;;;;"}
@@ -0,0 +1,7 @@
1
+ export * from "./storage";
2
+ export * from "./config";
3
+ export * from "./url";
4
+ export * from "./completion";
5
+ export * from "./pkce";
6
+ export * from "./helpers";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Generates a PKCE challenge pair (verifier and code challenge)
3
+ */
4
+ export declare function generateChallengePair(): Promise<{
5
+ verifier: string;
6
+ codeChallenge: string;
7
+ }>;
8
+ /**
9
+ * Exchanges Facebook authorization code for token
10
+ */
11
+ export declare function exchangeFacebookCodeForToken(clientId: string, redirectUri: string, code: string, codeVerifier: string): Promise<{
12
+ id_token: string;
13
+ }>;
14
+ //# sourceMappingURL=pkce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth/pkce.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAkBD;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB/B"}
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var config = require('./config.js');
4
+
5
+ /**
6
+ * Generates a PKCE challenge pair (verifier and code challenge)
7
+ */
8
+ async function generateChallengePair() {
9
+ const randomBytes = new Uint8Array(32);
10
+ window.crypto.getRandomValues(randomBytes);
11
+ const verifier = btoa(String.fromCharCode(...randomBytes)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
12
+ const encoder = new TextEncoder();
13
+ const data = encoder.encode(verifier);
14
+ const digest = await window.crypto.subtle.digest("SHA-256", data);
15
+ const base64Challenge = btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
16
+ return {
17
+ verifier,
18
+ codeChallenge: base64Challenge
19
+ };
20
+ }
21
+ /**
22
+ * Exchanges Facebook authorization code for token
23
+ */
24
+ async function exchangeFacebookCodeForToken(clientId, redirectUri, code, codeVerifier) {
25
+ const params = new URLSearchParams({
26
+ client_id: clientId,
27
+ redirect_uri: redirectUri,
28
+ code_verifier: codeVerifier,
29
+ code: code,
30
+ grant_type: "authorization_code"
31
+ });
32
+ const response = await fetch(config.FACEBOOK_GRAPH_URL, {
33
+ method: "POST",
34
+ headers: {
35
+ "Content-Type": "application/x-www-form-urlencoded"
36
+ },
37
+ body: params.toString()
38
+ });
39
+ if (!response.ok) {
40
+ const errorData = await response.json();
41
+ throw new Error(`Facebook token exchange failed: ${JSON.stringify(errorData)}`);
42
+ }
43
+ return await response.json();
44
+ }
45
+
46
+ exports.exchangeFacebookCodeForToken = exchangeFacebookCodeForToken;
47
+ exports.generateChallengePair = generateChallengePair;
48
+ //# sourceMappingURL=pkce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.js","sources":["../../../src/utils/oauth/pkce.ts"],"sourcesContent":[null],"names":["generateChallengePair","randomBytes","Uint8Array","window","crypto","getRandomValues","verifier","btoa","String","fromCharCode","replace","encoder","TextEncoder","data","encode","digest","subtle","base64Challenge","codeChallenge","exchangeFacebookCodeForToken","clientId","redirectUri","code","codeVerifier","params","URLSearchParams","client_id","redirect_uri","code_verifier","grant_type","response","fetch","FACEBOOK_GRAPH_URL","method","headers","body","toString","ok","errorData","json","Error","JSON","stringify"],"mappings":";;;;AAEA;;AAEG;AACI,eAAeA,qBAAqBA,GAAA;AAIzC,EAAA,MAAMC,WAAW,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;AACtCC,EAAAA,MAAM,CAACC,MAAM,CAACC,eAAe,CAACJ,WAAW,CAAC;AAC1C,EAAA,MAAMK,QAAQ,GAAGC,IAAI,CAACC,MAAM,CAACC,YAAY,CAAC,GAAGR,WAAW,CAAC,CAAC,CACvDS,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAErB,EAAA,MAAMC,OAAO,GAAG,IAAIC,WAAW,EAAE;AACjC,EAAA,MAAMC,IAAI,GAAGF,OAAO,CAACG,MAAM,CAACR,QAAQ,CAAC;AACrC,EAAA,MAAMS,MAAM,GAAG,MAAMZ,MAAM,CAACC,MAAM,CAACY,MAAM,CAACD,MAAM,CAAC,SAAS,EAAEF,IAAI,CAAC;AAEjE,EAAA,MAAMI,eAAe,GAAGV,IAAI,CAACC,MAAM,CAACC,YAAY,CAAC,GAAG,IAAIP,UAAU,CAACa,MAAM,CAAC,CAAC,CAAC,CACzEL,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAErB,OAAO;IAAEJ,QAAQ;AAAEY,IAAAA,aAAa,EAAED;GAAiB;AACrD;AAEA;;AAEG;AACI,eAAeE,4BAA4BA,CAChDC,QAAgB,EAChBC,WAAmB,EACnBC,IAAY,EACZC,YAAoB,EAAA;AAEpB,EAAA,MAAMC,MAAM,GAAG,IAAIC,eAAe,CAAC;AACjCC,IAAAA,SAAS,EAAEN,QAAQ;AACnBO,IAAAA,YAAY,EAAEN,WAAW;AACzBO,IAAAA,aAAa,EAAEL,YAAY;AAC3BD,IAAAA,IAAI,EAAEA,IAAI;AACVO,IAAAA,UAAU,EAAE;AACb,GAAA,CAAC;AAEF,EAAA,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACC,yBAAkB,EAAE;AAC/CC,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,OAAO,EAAE;AACP,MAAA,cAAc,EAAE;KACjB;AACDC,IAAAA,IAAI,EAAEX,MAAM,CAACY,QAAQ;AACtB,GAAA,CAAC;AAEF,EAAA,IAAI,CAACN,QAAQ,CAACO,EAAE,EAAE;AAChB,IAAA,MAAMC,SAAS,GAAG,MAAMR,QAAQ,CAACS,IAAI,EAAE;IACvC,MAAM,IAAIC,KAAK,CACb,CAAA,gCAAA,EAAmCC,IAAI,CAACC,SAAS,CAACJ,SAAS,CAAC,CAAA,CAAE,CAC/D;AACH,EAAA;AAEA,EAAA,OAAO,MAAMR,QAAQ,CAACS,IAAI,EAAE;AAC9B;;;;;"}
@@ -0,0 +1,85 @@
1
+ import { asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, toConsumableArray as _toConsumableArray } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
2
+ import { FACEBOOK_GRAPH_URL } from './config.mjs';
3
+
4
+ /**
5
+ * Generates a PKCE challenge pair (verifier and code challenge)
6
+ */
7
+ function generateChallengePair() {
8
+ return _generateChallengePair.apply(this, arguments);
9
+ }
10
+ /**
11
+ * Exchanges Facebook authorization code for token
12
+ */
13
+ function _generateChallengePair() {
14
+ _generateChallengePair = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
15
+ var randomBytes, verifier, encoder, data, digest, base64Challenge;
16
+ return _regenerator().w(function (_context) {
17
+ while (1) switch (_context.n) {
18
+ case 0:
19
+ randomBytes = new Uint8Array(32);
20
+ window.crypto.getRandomValues(randomBytes);
21
+ verifier = btoa(String.fromCharCode.apply(String, _toConsumableArray(randomBytes))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
22
+ encoder = new TextEncoder();
23
+ data = encoder.encode(verifier);
24
+ _context.n = 1;
25
+ return window.crypto.subtle.digest("SHA-256", data);
26
+ case 1:
27
+ digest = _context.v;
28
+ base64Challenge = btoa(String.fromCharCode.apply(String, _toConsumableArray(new Uint8Array(digest)))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
29
+ return _context.a(2, {
30
+ verifier: verifier,
31
+ codeChallenge: base64Challenge
32
+ });
33
+ }
34
+ }, _callee);
35
+ }));
36
+ return _generateChallengePair.apply(this, arguments);
37
+ }
38
+ function exchangeFacebookCodeForToken(_x, _x2, _x3, _x4) {
39
+ return _exchangeFacebookCodeForToken.apply(this, arguments);
40
+ }
41
+ function _exchangeFacebookCodeForToken() {
42
+ _exchangeFacebookCodeForToken = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(clientId, redirectUri, code, codeVerifier) {
43
+ var params, response, errorData;
44
+ return _regenerator().w(function (_context2) {
45
+ while (1) switch (_context2.n) {
46
+ case 0:
47
+ params = new URLSearchParams({
48
+ client_id: clientId,
49
+ redirect_uri: redirectUri,
50
+ code_verifier: codeVerifier,
51
+ code: code,
52
+ grant_type: "authorization_code"
53
+ });
54
+ _context2.n = 1;
55
+ return fetch(FACEBOOK_GRAPH_URL, {
56
+ method: "POST",
57
+ headers: {
58
+ "Content-Type": "application/x-www-form-urlencoded"
59
+ },
60
+ body: params.toString()
61
+ });
62
+ case 1:
63
+ response = _context2.v;
64
+ if (response.ok) {
65
+ _context2.n = 3;
66
+ break;
67
+ }
68
+ _context2.n = 2;
69
+ return response.json();
70
+ case 2:
71
+ errorData = _context2.v;
72
+ throw new Error("Facebook token exchange failed: ".concat(JSON.stringify(errorData)));
73
+ case 3:
74
+ _context2.n = 4;
75
+ return response.json();
76
+ case 4:
77
+ return _context2.a(2, _context2.v);
78
+ }
79
+ }, _callee2);
80
+ }));
81
+ return _exchangeFacebookCodeForToken.apply(this, arguments);
82
+ }
83
+
84
+ export { exchangeFacebookCodeForToken, generateChallengePair };
85
+ //# sourceMappingURL=pkce.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.mjs","sources":["../../../src/utils/oauth/pkce.ts"],"sourcesContent":[null],"names":["generateChallengePair","_generateChallengePair","apply","arguments","_asyncToGenerator","_regenerator","m","_callee","randomBytes","verifier","encoder","data","digest","base64Challenge","w","_context","n","Uint8Array","window","crypto","getRandomValues","btoa","String","fromCharCode","_toConsumableArray","replace","TextEncoder","encode","subtle","v","a","codeChallenge","exchangeFacebookCodeForToken","_x","_x2","_x3","_x4","_exchangeFacebookCodeForToken","_callee2","clientId","redirectUri","code","codeVerifier","params","response","errorData","_context2","URLSearchParams","client_id","redirect_uri","code_verifier","grant_type","fetch","FACEBOOK_GRAPH_URL","method","headers","body","toString","ok","json","Error","concat","JSON","stringify"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { OAuthProviders } from "@turnkey/sdk-types";
2
+ export declare const OAUTH_INTENT_ADD_PROVIDER = "addProvider";
3
+ export declare const OAUTH_ADD_PROVIDER_METADATA_KEY = "oauth_add_provider_metadata";
4
+ export type OAuthAddProviderMetadata = {
5
+ organizationId: string;
6
+ userId: string;
7
+ stampWith?: string;
8
+ successPageDuration?: number;
9
+ };
10
+ /** Provider type for PKCE-based OAuth */
11
+ export type PKCEProvider = OAuthProviders.FACEBOOK | OAuthProviders.DISCORD | OAuthProviders.X;
12
+ /**
13
+ * Stores OAuth add provider metadata in local storage
14
+ * Used for addOauthProvider flow if opening in-page
15
+ */
16
+ export declare function storeOAuthAddProviderMetadata(metadata: OAuthAddProviderMetadata): void;
17
+ /**
18
+ * Retrieves OAuth add provider metadata from local storage
19
+ */
20
+ export declare function getOAuthAddProviderMetadata(): OAuthAddProviderMetadata | null;
21
+ /**
22
+ * Gets the verifier key name for a PKCE provider
23
+ */
24
+ export declare function getPKCEVerifierKey(provider: PKCEProvider): string;
25
+ /**
26
+ * Retrieves and removes the PKCE verifier from local storage
27
+ * @param provider - The OAuth provider
28
+ * @returns The verifier string
29
+ * @throws TurnkeyError if verifier is not found
30
+ */
31
+ export declare function consumePKCEVerifier(provider: PKCEProvider): string;
32
+ /**
33
+ * Stores the PKCE verifier in local storage
34
+ * @param provider - The OAuth provider
35
+ * @param verifier - The verifier string to store
36
+ */
37
+ export declare function storePKCEVerifier(provider: PKCEProvider, verifier: string): void;
38
+ /**
39
+ * Checks if a PKCE verifier exists for a provider (without consuming it)
40
+ * @param provider - The OAuth provider
41
+ * @returns true if verifier exists
42
+ */
43
+ export declare function hasPKCEVerifier(provider: PKCEProvider): boolean;
44
+ /**
45
+ * Clears all OAuth-related data from local storage
46
+ */
47
+ export declare function clearAllOAuthData(): void;
48
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AACvD,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,YAAY,GACpB,cAAc,CAAC,QAAQ,GACvB,cAAc,CAAC,OAAO,GACtB,cAAc,CAAC,CAAC,CAAC;AAOrB;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,wBAAwB,GACjC,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,GAAG,IAAI,CAQ7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAWlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,GACf,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC"}
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ var sdkTypes = require('@turnkey/sdk-types');
4
+
5
+ const OAUTH_INTENT_ADD_PROVIDER = "addProvider";
6
+ const OAUTH_ADD_PROVIDER_METADATA_KEY = "oauth_add_provider_metadata";
7
+ // We use localStorage instead of sessionStorage to store OAuth data since the user
8
+ // might leave the current browsing context during the OAuth flow. We ran into this
9
+ // with X OAuth on Android where if the user has the X app installed, oauth would
10
+ // open the native app and when they come back to the browser, sessionStorage is gone
11
+ /**
12
+ * Stores OAuth add provider metadata in local storage
13
+ * Used for addOauthProvider flow if opening in-page
14
+ */
15
+ function storeOAuthAddProviderMetadata(metadata) {
16
+ localStorage.setItem(OAUTH_ADD_PROVIDER_METADATA_KEY, JSON.stringify(metadata));
17
+ }
18
+ /**
19
+ * Retrieves OAuth add provider metadata from local storage
20
+ */
21
+ function getOAuthAddProviderMetadata() {
22
+ const stored = localStorage.getItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
23
+ if (!stored) return null;
24
+ try {
25
+ return JSON.parse(stored);
26
+ } catch {
27
+ return null;
28
+ }
29
+ }
30
+ /**
31
+ * Gets the verifier key name for a PKCE provider
32
+ */
33
+ function getPKCEVerifierKey(provider) {
34
+ return `${provider}_verifier`;
35
+ }
36
+ /**
37
+ * Retrieves and removes the PKCE verifier from local storage
38
+ * @param provider - The OAuth provider
39
+ * @returns The verifier string
40
+ * @throws TurnkeyError if verifier is not found
41
+ */
42
+ function consumePKCEVerifier(provider) {
43
+ const key = getPKCEVerifierKey(provider);
44
+ const verifier = localStorage.getItem(key);
45
+ if (!verifier) {
46
+ throw new sdkTypes.TurnkeyError(`Missing PKCE verifier for ${provider} authentication`, sdkTypes.TurnkeyErrorCodes.NO_PKCE_VERIFIER_FOUND);
47
+ }
48
+ localStorage.removeItem(key);
49
+ return verifier;
50
+ }
51
+ /**
52
+ * Stores the PKCE verifier in local storage
53
+ * @param provider - The OAuth provider
54
+ * @param verifier - The verifier string to store
55
+ */
56
+ function storePKCEVerifier(provider, verifier) {
57
+ localStorage.setItem(getPKCEVerifierKey(provider), verifier);
58
+ }
59
+ /**
60
+ * Checks if a PKCE verifier exists for a provider (without consuming it)
61
+ * @param provider - The OAuth provider
62
+ * @returns true if verifier exists
63
+ */
64
+ function hasPKCEVerifier(provider) {
65
+ return localStorage.getItem(getPKCEVerifierKey(provider)) !== null;
66
+ }
67
+ /**
68
+ * Clears all OAuth-related data from local storage
69
+ */
70
+ function clearAllOAuthData() {
71
+ localStorage.removeItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
72
+ const pkceProviders = [sdkTypes.OAuthProviders.FACEBOOK, sdkTypes.OAuthProviders.DISCORD, sdkTypes.OAuthProviders.X];
73
+ for (const provider of pkceProviders) {
74
+ localStorage.removeItem(getPKCEVerifierKey(provider));
75
+ }
76
+ }
77
+
78
+ exports.OAUTH_ADD_PROVIDER_METADATA_KEY = OAUTH_ADD_PROVIDER_METADATA_KEY;
79
+ exports.OAUTH_INTENT_ADD_PROVIDER = OAUTH_INTENT_ADD_PROVIDER;
80
+ exports.clearAllOAuthData = clearAllOAuthData;
81
+ exports.consumePKCEVerifier = consumePKCEVerifier;
82
+ exports.getOAuthAddProviderMetadata = getOAuthAddProviderMetadata;
83
+ exports.getPKCEVerifierKey = getPKCEVerifierKey;
84
+ exports.hasPKCEVerifier = hasPKCEVerifier;
85
+ exports.storeOAuthAddProviderMetadata = storeOAuthAddProviderMetadata;
86
+ exports.storePKCEVerifier = storePKCEVerifier;
87
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sources":["../../../src/utils/oauth/storage.ts"],"sourcesContent":[null],"names":["OAUTH_INTENT_ADD_PROVIDER","OAUTH_ADD_PROVIDER_METADATA_KEY","storeOAuthAddProviderMetadata","metadata","localStorage","setItem","JSON","stringify","getOAuthAddProviderMetadata","stored","getItem","parse","getPKCEVerifierKey","provider","consumePKCEVerifier","key","verifier","TurnkeyError","TurnkeyErrorCodes","NO_PKCE_VERIFIER_FOUND","removeItem","storePKCEVerifier","hasPKCEVerifier","clearAllOAuthData","pkceProviders","OAuthProviders","FACEBOOK","DISCORD","X"],"mappings":";;;;AAMO,MAAMA,yBAAyB,GAAG;AAClC,MAAMC,+BAA+B,GAAG;AAe/C;AACA;AACA;AACA;AAEA;;;AAGG;AACG,SAAUC,6BAA6BA,CAC3CC,QAAkC,EAAA;EAElCC,YAAY,CAACC,OAAO,CAClBJ,+BAA+B,EAC/BK,IAAI,CAACC,SAAS,CAACJ,QAAQ,CAAC,CACzB;AACH;AAEA;;AAEG;SACaK,2BAA2BA,GAAA;AACzC,EAAA,MAAMC,MAAM,GAAGL,YAAY,CAACM,OAAO,CAACT,+BAA+B,CAAC;AACpE,EAAA,IAAI,CAACQ,MAAM,EAAE,OAAO,IAAI;EACxB,IAAI;AACF,IAAA,OAAOH,IAAI,CAACK,KAAK,CAACF,MAAM,CAA6B;AACvD,EAAA,CAAC,CAAC,MAAM;AACN,IAAA,OAAO,IAAI;AACb,EAAA;AACF;AAEA;;AAEG;AACG,SAAUG,kBAAkBA,CAACC,QAAsB,EAAA;EACvD,OAAO,CAAA,EAAGA,QAAQ,CAAA,SAAA,CAAW;AAC/B;AAEA;;;;;AAKG;AACG,SAAUC,mBAAmBA,CAACD,QAAsB,EAAA;AACxD,EAAA,MAAME,GAAG,GAAGH,kBAAkB,CAACC,QAAQ,CAAC;AACxC,EAAA,MAAMG,QAAQ,GAAGZ,YAAY,CAACM,OAAO,CAACK,GAAG,CAAC;EAC1C,IAAI,CAACC,QAAQ,EAAE;IACb,MAAM,IAAIC,qBAAY,CACpB,CAAA,0BAAA,EAA6BJ,QAAQ,iBAAiB,EACtDK,0BAAiB,CAACC,sBAAsB,CACzC;AACH,EAAA;AACAf,EAAAA,YAAY,CAACgB,UAAU,CAACL,GAAG,CAAC;AAC5B,EAAA,OAAOC,QAAQ;AACjB;AAEA;;;;AAIG;AACG,SAAUK,iBAAiBA,CAC/BR,QAAsB,EACtBG,QAAgB,EAAA;EAEhBZ,YAAY,CAACC,OAAO,CAACO,kBAAkB,CAACC,QAAQ,CAAC,EAAEG,QAAQ,CAAC;AAC9D;AAEA;;;;AAIG;AACG,SAAUM,eAAeA,CAACT,QAAsB,EAAA;EACpD,OAAOT,YAAY,CAACM,OAAO,CAACE,kBAAkB,CAACC,QAAQ,CAAC,CAAC,KAAK,IAAI;AACpE;AAEA;;AAEG;SACaU,iBAAiBA,GAAA;AAC/BnB,EAAAA,YAAY,CAACgB,UAAU,CAACnB,+BAA+B,CAAC;AACxD,EAAA,MAAMuB,aAAa,GAAmB,CACpCC,uBAAc,CAACC,QAAQ,EACvBD,uBAAc,CAACE,OAAO,EACtBF,uBAAc,CAACG,CAAC,CACjB;AACD,EAAA,KAAK,MAAMf,QAAQ,IAAIW,aAAa,EAAE;AACpCpB,IAAAA,YAAY,CAACgB,UAAU,CAACR,kBAAkB,CAACC,QAAQ,CAAC,CAAC;AACvD,EAAA;AACF;;;;;;;;;;;;"}
@@ -0,0 +1,78 @@
1
+ import { OAuthProviders, TurnkeyError, TurnkeyErrorCodes } from '@turnkey/sdk-types';
2
+
3
+ var OAUTH_INTENT_ADD_PROVIDER = "addProvider";
4
+ var OAUTH_ADD_PROVIDER_METADATA_KEY = "oauth_add_provider_metadata";
5
+ // We use localStorage instead of sessionStorage to store OAuth data since the user
6
+ // might leave the current browsing context during the OAuth flow. We ran into this
7
+ // with X OAuth on Android where if the user has the X app installed, oauth would
8
+ // open the native app and when they come back to the browser, sessionStorage is gone
9
+ /**
10
+ * Stores OAuth add provider metadata in local storage
11
+ * Used for addOauthProvider flow if opening in-page
12
+ */
13
+ function storeOAuthAddProviderMetadata(metadata) {
14
+ localStorage.setItem(OAUTH_ADD_PROVIDER_METADATA_KEY, JSON.stringify(metadata));
15
+ }
16
+ /**
17
+ * Retrieves OAuth add provider metadata from local storage
18
+ */
19
+ function getOAuthAddProviderMetadata() {
20
+ var stored = localStorage.getItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
21
+ if (!stored) return null;
22
+ try {
23
+ return JSON.parse(stored);
24
+ } catch (_unused) {
25
+ return null;
26
+ }
27
+ }
28
+ /**
29
+ * Gets the verifier key name for a PKCE provider
30
+ */
31
+ function getPKCEVerifierKey(provider) {
32
+ return "".concat(provider, "_verifier");
33
+ }
34
+ /**
35
+ * Retrieves and removes the PKCE verifier from local storage
36
+ * @param provider - The OAuth provider
37
+ * @returns The verifier string
38
+ * @throws TurnkeyError if verifier is not found
39
+ */
40
+ function consumePKCEVerifier(provider) {
41
+ var key = getPKCEVerifierKey(provider);
42
+ var verifier = localStorage.getItem(key);
43
+ if (!verifier) {
44
+ throw new TurnkeyError("Missing PKCE verifier for ".concat(provider, " authentication"), TurnkeyErrorCodes.NO_PKCE_VERIFIER_FOUND);
45
+ }
46
+ localStorage.removeItem(key);
47
+ return verifier;
48
+ }
49
+ /**
50
+ * Stores the PKCE verifier in local storage
51
+ * @param provider - The OAuth provider
52
+ * @param verifier - The verifier string to store
53
+ */
54
+ function storePKCEVerifier(provider, verifier) {
55
+ localStorage.setItem(getPKCEVerifierKey(provider), verifier);
56
+ }
57
+ /**
58
+ * Checks if a PKCE verifier exists for a provider (without consuming it)
59
+ * @param provider - The OAuth provider
60
+ * @returns true if verifier exists
61
+ */
62
+ function hasPKCEVerifier(provider) {
63
+ return localStorage.getItem(getPKCEVerifierKey(provider)) !== null;
64
+ }
65
+ /**
66
+ * Clears all OAuth-related data from local storage
67
+ */
68
+ function clearAllOAuthData() {
69
+ localStorage.removeItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
70
+ var pkceProviders = [OAuthProviders.FACEBOOK, OAuthProviders.DISCORD, OAuthProviders.X];
71
+ for (var _i = 0, _pkceProviders = pkceProviders; _i < _pkceProviders.length; _i++) {
72
+ var provider = _pkceProviders[_i];
73
+ localStorage.removeItem(getPKCEVerifierKey(provider));
74
+ }
75
+ }
76
+
77
+ export { OAUTH_ADD_PROVIDER_METADATA_KEY, OAUTH_INTENT_ADD_PROVIDER, clearAllOAuthData, consumePKCEVerifier, getOAuthAddProviderMetadata, getPKCEVerifierKey, hasPKCEVerifier, storeOAuthAddProviderMetadata, storePKCEVerifier };
78
+ //# sourceMappingURL=storage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.mjs","sources":["../../../src/utils/oauth/storage.ts"],"sourcesContent":[null],"names":["OAUTH_INTENT_ADD_PROVIDER","OAUTH_ADD_PROVIDER_METADATA_KEY","storeOAuthAddProviderMetadata","metadata","localStorage","setItem","JSON","stringify","getOAuthAddProviderMetadata","stored","getItem","parse","_unused","getPKCEVerifierKey","provider","concat","consumePKCEVerifier","key","verifier","TurnkeyError","TurnkeyErrorCodes","NO_PKCE_VERIFIER_FOUND","removeItem","storePKCEVerifier","hasPKCEVerifier","clearAllOAuthData","pkceProviders","OAuthProviders","FACEBOOK","DISCORD","X","_i","_pkceProviders","length"],"mappings":";;AAMO,IAAMA,yBAAyB,GAAG;AAClC,IAAMC,+BAA+B,GAAG;AAe/C;AACA;AACA;AACA;AAEA;;;AAGG;AACG,SAAUC,6BAA6BA,CAC3CC,QAAkC,EAAA;EAElCC,YAAY,CAACC,OAAO,CAClBJ,+BAA+B,EAC/BK,IAAI,CAACC,SAAS,CAACJ,QAAQ,CAAC,CACzB;AACH;AAEA;;AAEG;SACaK,2BAA2BA,GAAA;AACzC,EAAA,IAAMC,MAAM,GAAGL,YAAY,CAACM,OAAO,CAACT,+BAA+B,CAAC;AACpE,EAAA,IAAI,CAACQ,MAAM,EAAE,OAAO,IAAI;EACxB,IAAI;AACF,IAAA,OAAOH,IAAI,CAACK,KAAK,CAACF,MAAM,CAA6B;EACvD,CAAC,CAAC,OAAAG,OAAA,EAAM;AACN,IAAA,OAAO,IAAI;AACb,EAAA;AACF;AAEA;;AAEG;AACG,SAAUC,kBAAkBA,CAACC,QAAsB,EAAA;EACvD,OAAA,EAAA,CAAAC,MAAA,CAAUD,QAAQ,EAAA,WAAA,CAAA;AACpB;AAEA;;;;;AAKG;AACG,SAAUE,mBAAmBA,CAACF,QAAsB,EAAA;AACxD,EAAA,IAAMG,GAAG,GAAGJ,kBAAkB,CAACC,QAAQ,CAAC;AACxC,EAAA,IAAMI,QAAQ,GAAGd,YAAY,CAACM,OAAO,CAACO,GAAG,CAAC;EAC1C,IAAI,CAACC,QAAQ,EAAE;IACb,MAAM,IAAIC,YAAY,CAAA,4BAAA,CAAAJ,MAAA,CACSD,QAAQ,EAAA,iBAAA,CAAA,EACrCM,iBAAiB,CAACC,sBAAsB,CACzC;AACH,EAAA;AACAjB,EAAAA,YAAY,CAACkB,UAAU,CAACL,GAAG,CAAC;AAC5B,EAAA,OAAOC,QAAQ;AACjB;AAEA;;;;AAIG;AACG,SAAUK,iBAAiBA,CAC/BT,QAAsB,EACtBI,QAAgB,EAAA;EAEhBd,YAAY,CAACC,OAAO,CAACQ,kBAAkB,CAACC,QAAQ,CAAC,EAAEI,QAAQ,CAAC;AAC9D;AAEA;;;;AAIG;AACG,SAAUM,eAAeA,CAACV,QAAsB,EAAA;EACpD,OAAOV,YAAY,CAACM,OAAO,CAACG,kBAAkB,CAACC,QAAQ,CAAC,CAAC,KAAK,IAAI;AACpE;AAEA;;AAEG;SACaW,iBAAiBA,GAAA;AAC/BrB,EAAAA,YAAY,CAACkB,UAAU,CAACrB,+BAA+B,CAAC;AACxD,EAAA,IAAMyB,aAAa,GAAmB,CACpCC,cAAc,CAACC,QAAQ,EACvBD,cAAc,CAACE,OAAO,EACtBF,cAAc,CAACG,CAAC,CACjB;AACD,EAAA,KAAA,IAAAC,EAAA,GAAA,CAAA,EAAAC,cAAA,GAAuBN,aAAa,EAAAK,EAAA,GAAAC,cAAA,CAAAC,MAAA,EAAAF,EAAA,EAAA,EAAE;AAAjC,IAAA,IAAMjB,QAAQ,GAAAkB,cAAA,CAAAD,EAAA,CAAA;AACjB3B,IAAAA,YAAY,CAACkB,UAAU,CAACT,kBAAkB,CAACC,QAAQ,CAAC,CAAC;AACvD,EAAA;AACF;;;;"}
@@ -0,0 +1,92 @@
1
+ import { OAuthProviders } from "@turnkey/sdk-types";
2
+ /**
3
+ * Builds the OAuth state parameter string
4
+ */
5
+ export declare function buildOAuthState(params: {
6
+ provider: OAuthProviders;
7
+ flow: "redirect" | "popup";
8
+ publicKey: string;
9
+ nonce?: string;
10
+ additionalState?: Record<string, string> | undefined;
11
+ }): string;
12
+ /**
13
+ * Opens a centered OAuth popup window
14
+ */
15
+ export declare function openOAuthPopup(): Window | null;
16
+ /**
17
+ * Redirects to OAuth provider URL
18
+ */
19
+ export declare function redirectToOAuthProvider(url: string): Promise<never>;
20
+ /**
21
+ * Cleans up OAuth parameters from URL (removes hash and search)
22
+ */
23
+ export declare function cleanupOAuthUrl(): void;
24
+ /**
25
+ * Cleans up OAuth hash from URL but preserves search parameters
26
+ */
27
+ export declare function cleanupOAuthUrlPreserveSearch(): void;
28
+ /**
29
+ * Parses the OAuth state parameter string into an object
30
+ */
31
+ export declare function parseStateParam(stateParam: string | null | undefined): {
32
+ sessionKey?: string;
33
+ oauthIntent?: string;
34
+ provider?: string;
35
+ flow?: string;
36
+ publicKey?: string;
37
+ openModal?: string;
38
+ [key: string]: string | undefined;
39
+ };
40
+ /**
41
+ * Result from parsing an OAuth response (both popup and redirect flows)
42
+ */
43
+ export interface OAuthResponseResult {
44
+ /** The OIDC token (for non-PKCE providers) */
45
+ idToken?: string | null | undefined;
46
+ /** The authorization code (for PKCE providers) */
47
+ authCode?: string | null | undefined;
48
+ /** Session key from state */
49
+ sessionKey?: string | undefined;
50
+ /** The provider from state */
51
+ provider?: string | null;
52
+ /** Flow type from state */
53
+ flow?: string | null;
54
+ /** Public key from state */
55
+ publicKey?: string | null;
56
+ /** Open modal flag from state */
57
+ openModal?: string | null;
58
+ /** OAuth intent from state */
59
+ oauthIntent?: string | null;
60
+ /** Nonce from state */
61
+ nonce?: string | null;
62
+ }
63
+ /**
64
+ * Unified OAuth response parser for both popup and redirect flows.
65
+ * Handles both:
66
+ * - PKCE flows (Facebook, Discord, X): code in search parameters
67
+ * - Non-PKCE flows (Google, Apple): id_token in hash parameters
68
+ * - Apple's non-standard hash format where state parameters are directly embedded
69
+ *
70
+ * @param url - The full URL to parse (from popup or redirect)
71
+ * @param expectedProvider - Optional provider if already known (for popup flows)
72
+ * @returns Parsed OAuth response data including tokens, codes, and state parameters, or null if invalid
73
+ */
74
+ export declare function parseOAuthResponse(url: string, expectedProvider?: OAuthProviders): OAuthResponseResult | null;
75
+ /**
76
+ * Parameters for building an OAuth URL
77
+ */
78
+ export interface BuildOAuthUrlParams {
79
+ provider: OAuthProviders;
80
+ clientId: string;
81
+ redirectUri: string;
82
+ publicKey: string;
83
+ nonce: string;
84
+ flow: "redirect" | "popup";
85
+ codeChallenge?: string | undefined;
86
+ additionalState?: Record<string, string> | undefined;
87
+ }
88
+ /**
89
+ * Builds the complete OAuth authorization URL for a provider
90
+ */
91
+ export declare function buildOAuthUrl(params: BuildOAuthUrlParams): string;
92
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACtD,GAAG,MAAM,CAkBT;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAW9C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CASnE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAMpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAcA;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,gBAAgB,CAAC,EAAE,cAAc,GAChC,mBAAmB,GAAG,IAAI,CA2E5B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA2DjE"}