@turnkey/react-wallet-kit 1.11.0 → 2.0.0

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 (86) hide show
  1. package/dist/components/auth/OTP.d.ts +1 -0
  2. package/dist/components/auth/OTP.d.ts.map +1 -1
  3. package/dist/components/auth/OTP.js +8 -2
  4. package/dist/components/auth/OTP.js.map +1 -1
  5. package/dist/components/auth/OTP.mjs +21 -13
  6. package/dist/components/auth/OTP.mjs.map +1 -1
  7. package/dist/components/auth/index.d.ts.map +1 -1
  8. package/dist/components/auth/index.js +11 -3
  9. package/dist/components/auth/index.js.map +1 -1
  10. package/dist/components/auth/index.mjs +12 -5
  11. package/dist/components/auth/index.mjs.map +1 -1
  12. package/dist/components/user/UpdateEmail.js +6 -3
  13. package/dist/components/user/UpdateEmail.js.map +1 -1
  14. package/dist/components/user/UpdateEmail.mjs +6 -4
  15. package/dist/components/user/UpdateEmail.mjs.map +1 -1
  16. package/dist/components/user/UpdatePhoneNumber.js +6 -3
  17. package/dist/components/user/UpdatePhoneNumber.js.map +1 -1
  18. package/dist/components/user/UpdatePhoneNumber.mjs +6 -4
  19. package/dist/components/user/UpdatePhoneNumber.mjs.map +1 -1
  20. package/dist/index.d.ts +1 -3
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +8 -4
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +1 -1
  25. package/dist/providers/client/Provider.d.ts.map +1 -1
  26. package/dist/providers/client/Provider.js +611 -430
  27. package/dist/providers/client/Provider.js.map +1 -1
  28. package/dist/providers/client/Provider.mjs +2055 -1820
  29. package/dist/providers/client/Provider.mjs.map +1 -1
  30. package/dist/providers/client/Types.d.ts +14 -7
  31. package/dist/providers/client/Types.d.ts.map +1 -1
  32. package/dist/providers/client/Types.js.map +1 -1
  33. package/dist/providers/client/Types.mjs.map +1 -1
  34. package/dist/typedoc-entry/index.d.ts +1 -1
  35. package/dist/typedoc-entry/index.d.ts.map +1 -1
  36. package/dist/types/base.d.ts +38 -28
  37. package/dist/types/base.d.ts.map +1 -1
  38. package/dist/types/base.js.map +1 -1
  39. package/dist/types/base.mjs.map +1 -1
  40. package/dist/types/method-types.d.ts +12 -5
  41. package/dist/types/method-types.d.ts.map +1 -1
  42. package/dist/utils/oauth/completion.d.ts +132 -0
  43. package/dist/utils/oauth/completion.d.ts.map +1 -0
  44. package/dist/utils/oauth/completion.js +136 -0
  45. package/dist/utils/oauth/completion.js.map +1 -0
  46. package/dist/utils/oauth/completion.mjs +176 -0
  47. package/dist/utils/oauth/completion.mjs.map +1 -0
  48. package/dist/utils/oauth/config.d.ts +34 -0
  49. package/dist/utils/oauth/config.d.ts.map +1 -0
  50. package/dist/utils/oauth/config.js +69 -0
  51. package/dist/utils/oauth/config.js.map +1 -0
  52. package/dist/utils/oauth/config.mjs +54 -0
  53. package/dist/utils/oauth/config.mjs.map +1 -0
  54. package/dist/utils/oauth/helpers.d.ts +13 -0
  55. package/dist/utils/oauth/helpers.d.ts.map +1 -0
  56. package/dist/utils/oauth/helpers.js +38 -0
  57. package/dist/utils/oauth/helpers.js.map +1 -0
  58. package/dist/utils/oauth/helpers.mjs +35 -0
  59. package/dist/utils/oauth/helpers.mjs.map +1 -0
  60. package/dist/utils/oauth/index.d.ts +7 -0
  61. package/dist/utils/oauth/index.d.ts.map +1 -0
  62. package/dist/utils/oauth/pkce.d.ts +14 -0
  63. package/dist/utils/oauth/pkce.d.ts.map +1 -0
  64. package/dist/utils/oauth/pkce.js +48 -0
  65. package/dist/utils/oauth/pkce.js.map +1 -0
  66. package/dist/utils/oauth/pkce.mjs +85 -0
  67. package/dist/utils/oauth/pkce.mjs.map +1 -0
  68. package/dist/utils/oauth/storage.d.ts +59 -0
  69. package/dist/utils/oauth/storage.d.ts.map +1 -0
  70. package/dist/utils/oauth/storage.js +116 -0
  71. package/dist/utils/oauth/storage.js.map +1 -0
  72. package/dist/utils/oauth/storage.mjs +104 -0
  73. package/dist/utils/oauth/storage.mjs.map +1 -0
  74. package/dist/utils/oauth/url.d.ts +92 -0
  75. package/dist/utils/oauth/url.d.ts.map +1 -0
  76. package/dist/utils/oauth/url.js +231 -0
  77. package/dist/utils/oauth/url.js.map +1 -0
  78. package/dist/utils/oauth/url.mjs +237 -0
  79. package/dist/utils/oauth/url.mjs.map +1 -0
  80. package/package.json +3 -3
  81. package/dist/utils/oauth.d.ts +0 -323
  82. package/dist/utils/oauth.d.ts.map +0 -1
  83. package/dist/utils/oauth.js +0 -613
  84. package/dist/utils/oauth.js.map +0 -1
  85. package/dist/utils/oauth.mjs +0 -670
  86. package/dist/utils/oauth.mjs.map +0 -1
@@ -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":";;;AAEA;;AAEG;AACH,SAAsBA,qBAAqBA,GAAA;AAAA,EAAA,OAAAC,sBAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA;AAuB3C;;AAEG;AAFH,SAAAF,sBAAAA,GAAA;EAAAA,sBAAA,GAAAG,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAvBO,SAAAC,OAAAA,GAAA;IAAA,IAAAC,WAAA,EAAAC,QAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,eAAA;AAAA,IAAA,OAAAR,YAAA,EAAA,CAAAS,CAAA,CAAA,UAAAC,QAAA,EAAA;MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,CAAA;AAAA,QAAA,KAAA,CAAA;AAICR,UAAAA,WAAW,GAAG,IAAIS,UAAU,CAAC,EAAE,CAAC;AACtCC,UAAAA,MAAM,CAACC,MAAM,CAACC,eAAe,CAACZ,WAAW,CAAC;AACpCC,UAAAA,QAAQ,GAAGY,IAAI,CAACC,MAAM,CAACC,YAAY,CAAArB,KAAA,CAAnBoB,MAAM,EAAAE,kBAAA,CAAiBhB,WAAW,CAAA,CAAC,CAAC,CACvDiB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAEff,UAAAA,OAAO,GAAG,IAAIgB,WAAW,EAAE;AAC3Bf,UAAAA,IAAI,GAAGD,OAAO,CAACiB,MAAM,CAAClB,QAAQ,CAAC;AAAAM,UAAAA,QAAA,CAAAC,CAAA,GAAA,CAAA;UAAA,OAChBE,MAAM,CAACC,MAAM,CAACS,MAAM,CAAChB,MAAM,CAAC,SAAS,EAAED,IAAI,CAAC;AAAA,QAAA,KAAA,CAAA;UAA3DC,MAAM,GAAAG,QAAA,CAAAc,CAAA;AAENhB,UAAAA,eAAe,GAAGQ,IAAI,CAACC,MAAM,CAACC,YAAY,CAAArB,KAAA,CAAnBoB,MAAM,EAAAE,kBAAA,CAAiB,IAAIP,UAAU,CAACL,MAAM,CAAC,CAAA,CAAC,CAAC,CACzEa,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;UAAA,OAAAV,QAAA,CAAAe,CAAA,CAAA,CAAA,EAEd;AAAErB,YAAAA,QAAQ,EAARA,QAAQ;AAAEsB,YAAAA,aAAa,EAAElB;WAAiB,CAAA;AAAA;AAAA,IAAA,CAAA,EAAAN,OAAA,CAAA;EAAA,CACpD,CAAA,CAAA;AAAA,EAAA,OAAAN,sBAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA;AAKD,SAAsB6B,4BAA4BA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,6BAAA,CAAAnC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA;AA8BjD,SAAAkC,6BAAAA,GAAA;AAAAA,EAAAA,6BAAA,GAAAjC,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CA9BM,SAAAgC,QAAAA,CACLC,QAAgB,EAChBC,WAAmB,EACnBC,IAAY,EACZC,YAAoB,EAAA;AAAA,IAAA,IAAAC,MAAA,EAAAC,QAAA,EAAAC,SAAA;AAAA,IAAA,OAAAxC,YAAA,EAAA,CAAAS,CAAA,CAAA,UAAAgC,SAAA,EAAA;MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA9B,CAAA;AAAA,QAAA,KAAA,CAAA;UAEd2B,MAAM,GAAG,IAAII,eAAe,CAAC;AACjCC,YAAAA,SAAS,EAAET,QAAQ;AACnBU,YAAAA,YAAY,EAAET,WAAW;AACzBU,YAAAA,aAAa,EAAER,YAAY;AAC3BD,YAAAA,IAAI,EAAEA,IAAI;AACVU,YAAAA,UAAU,EAAE;AACb,WAAA,CAAC;AAAAL,UAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA;UAAA,OAEqBoC,KAAK,CAACC,kBAAkB,EAAE;AAC/CC,YAAAA,MAAM,EAAE,MAAM;AACdC,YAAAA,OAAO,EAAE;AACP,cAAA,cAAc,EAAE;aACjB;AACDC,YAAAA,IAAI,EAAEb,MAAM,CAACc,QAAQ;AACtB,WAAA,CAAC;AAAA,QAAA,KAAA,CAAA;UANIb,QAAQ,GAAAE,SAAA,CAAAjB,CAAA;UAAA,IAQTe,QAAQ,CAACc,EAAE,EAAA;AAAAZ,YAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA8B,UAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA;AAAA,UAAA,OACU4B,QAAQ,CAACe,IAAI,EAAE;AAAA,QAAA,KAAA,CAAA;UAAjCd,SAAS,GAAAC,SAAA,CAAAjB,CAAA;AAAA,UAAA,MACT,IAAI+B,KAAK,CAAA,kCAAA,CAAAC,MAAA,CACsBC,IAAI,CAACC,SAAS,CAAClB,SAAS,CAAC,CAAE,CAC/D;AAAA,QAAA,KAAA,CAAA;AAAAC,UAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA;AAAA,UAAA,OAGU4B,QAAQ,CAACe,IAAI,EAAE;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,OAAAb,SAAA,CAAAhB,CAAA,CAAA,CAAA,EAAAgB,SAAA,CAAAjB,CAAA,CAAA;AAAA;AAAA,IAAA,CAAA,EAAAS,QAAA,CAAA;EAAA,CAC7B,CAAA,CAAA;AAAA,EAAA,OAAAD,6BAAA,CAAAnC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA;;;;"}
@@ -0,0 +1,59 @@
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 declare const OAUTH_STATE_KEY = "oauth_state";
5
+ export type OAuthAddProviderMetadata = {
6
+ organizationId: string;
7
+ userId: string;
8
+ stampWith?: string;
9
+ successPageDuration?: number;
10
+ };
11
+ /** Provider type for PKCE-based OAuth */
12
+ export type PKCEProvider = OAuthProviders.FACEBOOK | OAuthProviders.DISCORD | OAuthProviders.X;
13
+ /**
14
+ * Stores OAuth add provider metadata in local storage
15
+ * Used for addOauthProvider flow if opening in-page
16
+ */
17
+ export declare function storeOAuthAddProviderMetadata(metadata: OAuthAddProviderMetadata): void;
18
+ /**
19
+ * Retrieves OAuth add provider metadata from local storage
20
+ */
21
+ export declare function getOAuthAddProviderMetadata(): OAuthAddProviderMetadata | null;
22
+ /**
23
+ * Gets the verifier key name for a PKCE provider
24
+ */
25
+ export declare function getPKCEVerifierKey(provider: PKCEProvider): string;
26
+ /**
27
+ * Retrieves and removes the PKCE verifier from local storage
28
+ * @param provider - The OAuth provider
29
+ * @returns The verifier string
30
+ * @throws TurnkeyError if verifier is not found
31
+ */
32
+ export declare function consumePKCEVerifier(provider: PKCEProvider): string;
33
+ /**
34
+ * Stores the PKCE verifier in local storage
35
+ * @param provider - The OAuth provider
36
+ * @param verifier - The verifier string to store
37
+ */
38
+ export declare function storePKCEVerifier(provider: PKCEProvider, verifier: string): void;
39
+ /**
40
+ * Checks if a PKCE verifier exists for a provider (without consuming it)
41
+ * @param provider - The OAuth provider
42
+ * @returns true if verifier exists
43
+ */
44
+ export declare function hasPKCEVerifier(provider: PKCEProvider): boolean;
45
+ /**
46
+ * Stores the OAuth state string in local storage for later validation
47
+ * @param state - The OAuth state string to store
48
+ */
49
+ export declare function storeOAuthState(state: string): void;
50
+ /**
51
+ * Consumes the OAuth state string from local storage for validation
52
+ * @param returnedState - The OAuth state string returned from the provider
53
+ */
54
+ export declare function consumeOAuthState(returnedState: string): void;
55
+ /**
56
+ * Clears all OAuth-related data from local storage
57
+ */
58
+ export declare function clearAllOAuthData(): void;
59
+ //# 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;AAC7E,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,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;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,QAE5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,QAoBtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC"}
@@ -0,0 +1,116 @@
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
+ const OAUTH_STATE_KEY = "oauth_state";
8
+ // We use localStorage instead of sessionStorage to store OAuth data since the user
9
+ // might leave the current browsing context during the OAuth flow. We ran into this
10
+ // with X OAuth on Android where if the user has the X app installed, oauth would
11
+ // open the native app and when they come back to the browser, sessionStorage is gone
12
+ /**
13
+ * Stores OAuth add provider metadata in local storage
14
+ * Used for addOauthProvider flow if opening in-page
15
+ */
16
+ function storeOAuthAddProviderMetadata(metadata) {
17
+ localStorage.setItem(OAUTH_ADD_PROVIDER_METADATA_KEY, JSON.stringify(metadata));
18
+ }
19
+ /**
20
+ * Retrieves OAuth add provider metadata from local storage
21
+ */
22
+ function getOAuthAddProviderMetadata() {
23
+ const stored = localStorage.getItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
24
+ if (!stored) return null;
25
+ try {
26
+ return JSON.parse(stored);
27
+ } catch {
28
+ return null;
29
+ }
30
+ }
31
+ /**
32
+ * Gets the verifier key name for a PKCE provider
33
+ */
34
+ function getPKCEVerifierKey(provider) {
35
+ return `${provider}_verifier`;
36
+ }
37
+ /**
38
+ * Retrieves and removes the PKCE verifier from local storage
39
+ * @param provider - The OAuth provider
40
+ * @returns The verifier string
41
+ * @throws TurnkeyError if verifier is not found
42
+ */
43
+ function consumePKCEVerifier(provider) {
44
+ const key = getPKCEVerifierKey(provider);
45
+ const verifier = localStorage.getItem(key);
46
+ if (!verifier) {
47
+ throw new sdkTypes.TurnkeyError(`Missing PKCE verifier for ${provider} authentication`, sdkTypes.TurnkeyErrorCodes.NO_PKCE_VERIFIER_FOUND);
48
+ }
49
+ localStorage.removeItem(key);
50
+ return verifier;
51
+ }
52
+ /**
53
+ * Stores the PKCE verifier in local storage
54
+ * @param provider - The OAuth provider
55
+ * @param verifier - The verifier string to store
56
+ */
57
+ function storePKCEVerifier(provider, verifier) {
58
+ localStorage.setItem(getPKCEVerifierKey(provider), verifier);
59
+ }
60
+ /**
61
+ * Checks if a PKCE verifier exists for a provider (without consuming it)
62
+ * @param provider - The OAuth provider
63
+ * @returns true if verifier exists
64
+ */
65
+ function hasPKCEVerifier(provider) {
66
+ return localStorage.getItem(getPKCEVerifierKey(provider)) !== null;
67
+ }
68
+ /**
69
+ * Stores the OAuth state string in local storage for later validation
70
+ * @param state - The OAuth state string to store
71
+ */
72
+ function storeOAuthState(state) {
73
+ localStorage.setItem(OAUTH_STATE_KEY, state);
74
+ }
75
+ /**
76
+ * Consumes the OAuth state string from local storage for validation
77
+ * @param returnedState - The OAuth state string returned from the provider
78
+ */
79
+ function consumeOAuthState(returnedState) {
80
+ try {
81
+ const stored = localStorage.getItem(OAUTH_STATE_KEY);
82
+ if (!stored) {
83
+ throw new sdkTypes.TurnkeyError("Missing OAuth state in storage", sdkTypes.TurnkeyErrorCodes.INVALID_OAUTH_STATE);
84
+ }
85
+ if (stored !== returnedState) {
86
+ throw new sdkTypes.TurnkeyError("OAuth state mismatch", sdkTypes.TurnkeyErrorCodes.INVALID_OAUTH_STATE);
87
+ }
88
+ } finally {
89
+ localStorage.removeItem(OAUTH_STATE_KEY);
90
+ }
91
+ }
92
+ /**
93
+ * Clears all OAuth-related data from local storage
94
+ */
95
+ function clearAllOAuthData() {
96
+ localStorage.removeItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
97
+ localStorage.removeItem(OAUTH_STATE_KEY);
98
+ const pkceProviders = [sdkTypes.OAuthProviders.FACEBOOK, sdkTypes.OAuthProviders.DISCORD, sdkTypes.OAuthProviders.X];
99
+ for (const provider of pkceProviders) {
100
+ localStorage.removeItem(getPKCEVerifierKey(provider));
101
+ }
102
+ }
103
+
104
+ exports.OAUTH_ADD_PROVIDER_METADATA_KEY = OAUTH_ADD_PROVIDER_METADATA_KEY;
105
+ exports.OAUTH_INTENT_ADD_PROVIDER = OAUTH_INTENT_ADD_PROVIDER;
106
+ exports.OAUTH_STATE_KEY = OAUTH_STATE_KEY;
107
+ exports.clearAllOAuthData = clearAllOAuthData;
108
+ exports.consumeOAuthState = consumeOAuthState;
109
+ exports.consumePKCEVerifier = consumePKCEVerifier;
110
+ exports.getOAuthAddProviderMetadata = getOAuthAddProviderMetadata;
111
+ exports.getPKCEVerifierKey = getPKCEVerifierKey;
112
+ exports.hasPKCEVerifier = hasPKCEVerifier;
113
+ exports.storeOAuthAddProviderMetadata = storeOAuthAddProviderMetadata;
114
+ exports.storeOAuthState = storeOAuthState;
115
+ exports.storePKCEVerifier = storePKCEVerifier;
116
+ //# 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","OAUTH_STATE_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","storeOAuthState","state","consumeOAuthState","returnedState","INVALID_OAUTH_STATE","clearAllOAuthData","pkceProviders","OAuthProviders","FACEBOOK","DISCORD","X"],"mappings":"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"}
@@ -0,0 +1,104 @@
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
+ var OAUTH_STATE_KEY = "oauth_state";
6
+ // We use localStorage instead of sessionStorage to store OAuth data since the user
7
+ // might leave the current browsing context during the OAuth flow. We ran into this
8
+ // with X OAuth on Android where if the user has the X app installed, oauth would
9
+ // open the native app and when they come back to the browser, sessionStorage is gone
10
+ /**
11
+ * Stores OAuth add provider metadata in local storage
12
+ * Used for addOauthProvider flow if opening in-page
13
+ */
14
+ function storeOAuthAddProviderMetadata(metadata) {
15
+ localStorage.setItem(OAUTH_ADD_PROVIDER_METADATA_KEY, JSON.stringify(metadata));
16
+ }
17
+ /**
18
+ * Retrieves OAuth add provider metadata from local storage
19
+ */
20
+ function getOAuthAddProviderMetadata() {
21
+ var stored = localStorage.getItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
22
+ if (!stored) return null;
23
+ try {
24
+ return JSON.parse(stored);
25
+ } catch (_unused) {
26
+ return null;
27
+ }
28
+ }
29
+ /**
30
+ * Gets the verifier key name for a PKCE provider
31
+ */
32
+ function getPKCEVerifierKey(provider) {
33
+ return "".concat(provider, "_verifier");
34
+ }
35
+ /**
36
+ * Retrieves and removes the PKCE verifier from local storage
37
+ * @param provider - The OAuth provider
38
+ * @returns The verifier string
39
+ * @throws TurnkeyError if verifier is not found
40
+ */
41
+ function consumePKCEVerifier(provider) {
42
+ var key = getPKCEVerifierKey(provider);
43
+ var verifier = localStorage.getItem(key);
44
+ if (!verifier) {
45
+ throw new TurnkeyError("Missing PKCE verifier for ".concat(provider, " authentication"), TurnkeyErrorCodes.NO_PKCE_VERIFIER_FOUND);
46
+ }
47
+ localStorage.removeItem(key);
48
+ return verifier;
49
+ }
50
+ /**
51
+ * Stores the PKCE verifier in local storage
52
+ * @param provider - The OAuth provider
53
+ * @param verifier - The verifier string to store
54
+ */
55
+ function storePKCEVerifier(provider, verifier) {
56
+ localStorage.setItem(getPKCEVerifierKey(provider), verifier);
57
+ }
58
+ /**
59
+ * Checks if a PKCE verifier exists for a provider (without consuming it)
60
+ * @param provider - The OAuth provider
61
+ * @returns true if verifier exists
62
+ */
63
+ function hasPKCEVerifier(provider) {
64
+ return localStorage.getItem(getPKCEVerifierKey(provider)) !== null;
65
+ }
66
+ /**
67
+ * Stores the OAuth state string in local storage for later validation
68
+ * @param state - The OAuth state string to store
69
+ */
70
+ function storeOAuthState(state) {
71
+ localStorage.setItem(OAUTH_STATE_KEY, state);
72
+ }
73
+ /**
74
+ * Consumes the OAuth state string from local storage for validation
75
+ * @param returnedState - The OAuth state string returned from the provider
76
+ */
77
+ function consumeOAuthState(returnedState) {
78
+ try {
79
+ var stored = localStorage.getItem(OAUTH_STATE_KEY);
80
+ if (!stored) {
81
+ throw new TurnkeyError("Missing OAuth state in storage", TurnkeyErrorCodes.INVALID_OAUTH_STATE);
82
+ }
83
+ if (stored !== returnedState) {
84
+ throw new TurnkeyError("OAuth state mismatch", TurnkeyErrorCodes.INVALID_OAUTH_STATE);
85
+ }
86
+ } finally {
87
+ localStorage.removeItem(OAUTH_STATE_KEY);
88
+ }
89
+ }
90
+ /**
91
+ * Clears all OAuth-related data from local storage
92
+ */
93
+ function clearAllOAuthData() {
94
+ localStorage.removeItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
95
+ localStorage.removeItem(OAUTH_STATE_KEY);
96
+ var pkceProviders = [OAuthProviders.FACEBOOK, OAuthProviders.DISCORD, OAuthProviders.X];
97
+ for (var _i = 0, _pkceProviders = pkceProviders; _i < _pkceProviders.length; _i++) {
98
+ var provider = _pkceProviders[_i];
99
+ localStorage.removeItem(getPKCEVerifierKey(provider));
100
+ }
101
+ }
102
+
103
+ export { OAUTH_ADD_PROVIDER_METADATA_KEY, OAUTH_INTENT_ADD_PROVIDER, OAUTH_STATE_KEY, clearAllOAuthData, consumeOAuthState, consumePKCEVerifier, getOAuthAddProviderMetadata, getPKCEVerifierKey, hasPKCEVerifier, storeOAuthAddProviderMetadata, storeOAuthState, storePKCEVerifier };
104
+ //# 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","OAUTH_STATE_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","storeOAuthState","state","consumeOAuthState","returnedState","INVALID_OAUTH_STATE","clearAllOAuthData","pkceProviders","OAuthProviders","FACEBOOK","DISCORD","X","_i","_pkceProviders","length"],"mappings":"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"}
@@ -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,EACL,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAI5B;;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,CAqF5B;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,CA8DjE"}