@magic-ext/oauth2 12.0.0-canary.915.17279247601.0 → 12.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.
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var y=(a,e)=>{for(var r in e)u(a,r,{get:e[r],enumerable:!0})},v=(a,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of R(e))!f.call(a,t)&&t!==r&&u(a,t,{get:()=>e[t],enumerable:!(i=m(e,t))||i.enumerable});return a};var A=a=>v(u({},"__esModule",{value:!0}),a);var _={};y(_,{OAuthErrorCode:()=>g,OAuthExtension:()=>l,OAuthPayloadMethods:()=>p});module.exports=A(_);var h=require("@magic-sdk/provider");var p=(t=>(t.Start="magic_oauth_login_with_redirect_start",t.Verify="magic_oauth_login_with_redirect_verify",t.Popup="magic_oauth_login_with_popup",t.VerifyTelegramData="magic_oauth_verify_telegram_data",t))(p||{}),g=(o=>(o.InvalidRequest="invalid_request",o.InvalidClient="invalid_client",o.InvalidScope="invalid_scope",o.InvalidGrant="invalid_grant",o.UnauthorizedClient="unauthorized_client",o.UnsupportedResponseType="unsupported_response_type",o.UnsupportedGrantType="unsupported_grant_type",o.UnsupportedTokenType="unsupported_token_type",o.AccessDenied="access_denied",o.ServerError="server_error",o.TemporarilyUnavailable="temporarily_unavailable",o))(g||{});var l=class extends h.Extension.Internal{name="oauth2";config={};compat={"magic-sdk":">=2.4.6","@magic-sdk/react-native":!1,"@magic-sdk/react-native-bare":!1,"@magic-sdk/react-native-expo":!1};constructor(){super(),this.seamlessTelegramLogin()}loginWithRedirect(e){return this.utils.createPromiEvent(async(r,i)=>{let t=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]),c=await this.request(t),s=c,n=c;if(n.error&&i(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),s?.oauthAuthoriationURI){let d=s.useMagicServerCallback?new URL(s.oauthAuthoriationURI,this.sdk.endpoint).href:s.oauthAuthoriationURI;s?.shouldReturnURI?r(d):window.location.href=d}r(null)})}getRedirectResult(e){let r=e.optionalQueryString||window.location.search,i=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",i),b.call(this,e,r)}loginWithPopup(e){let r=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]);return this.request(r)}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let r=document.createElement("script");r.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(r),r.onload=async()=>{try{let i=window.Telegram?.WebApp.initData,t=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:i,isMiniApp:!0}]);await this.request(t)}catch(i){console.log("Error while verifying telegram data",i)}}}catch(e){console.log("Error while loading telegram-web-app script",e)}}};function b(a,e){return this.utils.createPromiEvent(async(r,i)=>{let t=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:e,magicApiKey:this.sdk.apiKey,platform:"web",...a}]),c=await this.request(t),s=c,n=c;n.error&&i(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),r(s)})}
1
+ "use strict";var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var y=(a,e)=>{for(var r in e)u(a,r,{get:e[r],enumerable:!0})},v=(a,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of R(e))!f.call(a,t)&&t!==r&&u(a,t,{get:()=>e[t],enumerable:!(i=m(e,t))||i.enumerable});return a};var A=a=>v(u({},"__esModule",{value:!0}),a);var _={};y(_,{OAuthErrorCode:()=>g,OAuthExtension:()=>l,OAuthPayloadMethods:()=>p});module.exports=A(_);var h=require("@magic-sdk/commons");var p=(t=>(t.Start="magic_oauth_login_with_redirect_start",t.Verify="magic_oauth_login_with_redirect_verify",t.Popup="magic_oauth_login_with_popup",t.VerifyTelegramData="magic_oauth_verify_telegram_data",t))(p||{}),g=(o=>(o.InvalidRequest="invalid_request",o.InvalidClient="invalid_client",o.InvalidScope="invalid_scope",o.InvalidGrant="invalid_grant",o.UnauthorizedClient="unauthorized_client",o.UnsupportedResponseType="unsupported_response_type",o.UnsupportedGrantType="unsupported_grant_type",o.UnsupportedTokenType="unsupported_token_type",o.AccessDenied="access_denied",o.ServerError="server_error",o.TemporarilyUnavailable="temporarily_unavailable",o))(g||{});var l=class extends h.Extension.Internal{name="oauth2";config={};compat={"magic-sdk":">=2.4.6","@magic-sdk/react-native":!1,"@magic-sdk/react-native-bare":!1,"@magic-sdk/react-native-expo":!1};constructor(){super(),this.seamlessTelegramLogin()}loginWithRedirect(e){return this.utils.createPromiEvent(async(r,i)=>{let t=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]),c=await this.request(t),s=c,n=c;if(n.error&&i(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),s?.oauthAuthoriationURI){let d=s.useMagicServerCallback?new URL(s.oauthAuthoriationURI,this.sdk.endpoint).href:s.oauthAuthoriationURI;s?.shouldReturnURI?r(d):window.location.href=d}r(null)})}getRedirectResult(e){let r=e.optionalQueryString||window.location.search,i=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",i),b.call(this,e,r)}loginWithPopup(e){let r=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]);return this.request(r)}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let r=document.createElement("script");r.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(r),r.onload=async()=>{try{let i=window.Telegram?.WebApp.initData,t=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:i,isMiniApp:!0}]);await this.request(t)}catch(i){console.log("Error while verifying telegram data",i)}}}catch(e){console.log("Error while loading telegram-web-app script",e)}}};function b(a,e){return this.utils.createPromiEvent(async(r,i)=>{let t=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:e,magicApiKey:this.sdk.apiKey,platform:"web",...a}]),c=await this.request(t),s=c,n=c;n.error&&i(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),r(s)})}
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/types.ts"],
4
- "sourcesContent": ["import { Extension } from '@magic-sdk/provider';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n} from './types';\n\ndeclare global {\n interface Window {\n Telegram?: {\n WebApp: {\n initData: string;\n };\n };\n }\n}\n\nexport class OAuthExtension extends Extension.Internal<'oauth2'> {\n name = 'oauth2' as const;\n config = {};\n compat = {\n 'magic-sdk': '>=2.4.6',\n '@magic-sdk/react-native': false,\n '@magic-sdk/react-native-bare': false,\n '@magic-sdk/react-native-expo': false,\n };\n\n constructor() {\n super();\n this.seamlessTelegramLogin();\n }\n\n public loginWithRedirect(configuration: OAuthRedirectConfiguration) {\n return this.utils.createPromiEvent<null | string>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Start, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const result = await this.request<OAuthRedirectStartResult | OAuthRedirectError>(parseRedirectResult);\n const successResult = result as OAuthRedirectStartResult;\n const errorResult = result as OAuthRedirectError;\n\n if (errorResult.error) {\n reject(\n this.createError<OAuthErrorData>(errorResult.error, errorResult.error_description ?? 'An error occurred.', {\n errorURI: errorResult.error_uri,\n provider: errorResult.provider,\n }),\n );\n }\n\n if (successResult?.oauthAuthoriationURI) {\n const redirectURI = successResult.useMagicServerCallback\n ? // @ts-ignore - this.sdk.endpoint is marked protected but we need to access it.\n new URL(successResult.oauthAuthoriationURI, this.sdk.endpoint).href\n : successResult.oauthAuthoriationURI;\n\n if (successResult?.shouldReturnURI) {\n resolve(redirectURI);\n } else {\n window.location.href = redirectURI;\n }\n }\n resolve(null);\n });\n }\n\n public getRedirectResult(configuration: OAuthVerificationConfiguration) {\n const queryString = configuration.optionalQueryString || window.location.search;\n\n // Remove the query from the redirect callback as a precaution to prevent\n // malicious parties from parsing it before we have a chance to use it.\n const urlWithoutQuery = window.location.origin + window.location.pathname;\n window.history.replaceState(null, '', urlWithoutQuery);\n\n return getResult.call(this, configuration, queryString);\n }\n\n public loginWithPopup(configuration: OAuthPopupConfiguration) {\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Popup, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n return this.request<OAuthRedirectResult | OAuthRedirectError>(requestPayload);\n }\n\n protected seamlessTelegramLogin() {\n try {\n const hash = window.location.hash.toString();\n if (!hash.includes('#tgWebAppData')) return;\n\n const script = document.createElement('script');\n script.src = 'https://telegram.org/js/telegram-web-app.js';\n document.head.prepend(script);\n\n script.onload = async () => {\n try {\n const userData = window.Telegram?.WebApp.initData;\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.VerifyTelegramData, [\n { userData, isMiniApp: true },\n ]);\n\n await this.request<string | null>(requestPayload);\n } catch (verificationError) {\n console.log('Error while verifying telegram data', verificationError);\n }\n };\n } catch (seamlessLoginError) {\n console.log('Error while loading telegram-web-app script', seamlessLoginError);\n }\n }\n}\n\nfunction getResult(this: OAuthExtension, configuration: OAuthVerificationConfiguration, queryString: string) {\n return this.utils.createPromiEvent<OAuthRedirectResult>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Verify, [\n {\n authorizationResponseParams: queryString,\n magicApiKey: this.sdk.apiKey,\n platform: 'web',\n ...configuration,\n },\n ]);\n\n // Parse the result, which may contain an OAuth-formatted error.\n const resultOrError = await this.request<OAuthRedirectResult | OAuthRedirectError>(parseRedirectResult);\n const maybeResult = resultOrError as OAuthRedirectResult;\n const maybeError = resultOrError as OAuthRedirectError;\n\n if (maybeError.error) {\n reject(\n this.createError<OAuthErrorData>(maybeError.error, maybeError.error_description ?? 'An error occurred.', {\n errorURI: maybeError.error_uri,\n provider: maybeError.provider,\n }),\n );\n }\n\n resolve(maybeResult);\n });\n}\n\nexport * from './types';\n", "import { MagicUserMetadata } from '@magic-sdk/types';\n\nexport enum OAuthPayloadMethods {\n Start = 'magic_oauth_login_with_redirect_start',\n Verify = 'magic_oauth_login_with_redirect_verify',\n Popup = 'magic_oauth_login_with_popup',\n VerifyTelegramData = 'magic_oauth_verify_telegram_data',\n}\n\nexport type OAuthProvider =\n | 'google'\n | 'facebook'\n | 'apple'\n | 'github'\n | 'bitbucket'\n | 'gitlab'\n | 'linkedin'\n | 'twitter'\n | 'discord'\n | 'twitch'\n | 'microsoft';\n\ntype OAuthPopupProvider = OAuthProvider | 'telegram';\n\nexport interface OAuthErrorData {\n provider: OAuthProvider;\n errorURI?: string;\n}\n\nexport interface OpenIDConnectProfile {\n name?: string;\n familyName?: string;\n givenName?: string;\n middleName?: string;\n nickname?: string;\n preferredUsername?: string;\n profile?: string;\n picture?: string;\n website?: string;\n gender?: string;\n birthdate?: string;\n zoneinfo?: string;\n locale?: string;\n updatedAt?: number;\n}\n\nexport interface OpenIDConnectEmail {\n email?: string;\n emailVerified?: boolean;\n}\n\nexport interface OpenIDConnectPhone {\n phoneNumber?: string;\n phoneNumberVerified?: boolean;\n}\n\nexport interface OpenIDConnectAddress {\n address?: {\n formatted?: string;\n streetAddress?: string;\n locality?: string;\n region?: string;\n postalCode?: string;\n country?: string;\n };\n}\n\nexport type OpenIDConnectUserInfo = OpenIDConnectProfile &\n OpenIDConnectEmail &\n OpenIDConnectPhone &\n OpenIDConnectAddress & { sub?: string; sources?: Record<string, any> } & Record<string, any>;\n\nexport interface OAuthRedirectStartResult {\n oauthAuthoriationURI?: string;\n useMagicServerCallback?: boolean;\n shouldReturnURI?: boolean;\n}\n\nexport interface OAuthRedirectResult {\n oauth: {\n provider: OAuthProvider;\n scope: string[];\n userHandle: string;\n userInfo: OpenIDConnectUserInfo;\n };\n magic: {\n idToken: string;\n userMetadata: MagicUserMetadata;\n };\n}\n\nexport interface OAuthRedirectError {\n provider: OAuthProvider;\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nexport interface OAuthRedirectConfiguration {\n provider: OAuthProvider;\n redirectURI: string;\n scope?: string[];\n customData?: string;\n providerParams?: Record<string, string | number | boolean>;\n loginHint?: string;\n}\n\nexport interface OAuthVerificationConfiguration {\n lifespan?: number;\n optionalQueryString?: string;\n skipDIDToken?: boolean;\n}\n\nexport interface OAuthPopupConfiguration {\n provider: OAuthPopupProvider;\n scope?: string[];\n loginHint?: string;\n providerParams?: Record<string, string | number | boolean>;\n}\n\nexport enum OAuthErrorCode {\n InvalidRequest = 'invalid_request',\n InvalidClient = 'invalid_client',\n InvalidScope = 'invalid_scope',\n InvalidGrant = 'invalid_grant',\n UnauthorizedClient = 'unauthorized_client',\n UnsupportedResponseType = 'unsupported_response_type',\n UnsupportedGrantType = 'unsupported_grant_type',\n UnsupportedTokenType = 'unsupported_token_type',\n AccessDenied = 'access_denied',\n ServerError = 'server_error',\n TemporarilyUnavailable = 'temporarily_unavailable',\n}\n"],
5
- "mappings": "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",
6
- "names": ["index_exports", "__export", "OAuthErrorCode", "OAuthExtension", "OAuthPayloadMethods", "__toCommonJS", "import_provider", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthExtension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "script", "userData", "verificationError", "seamlessLoginError", "resultOrError", "maybeResult", "maybeError"]
4
+ "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n} from './types';\n\ndeclare global {\n interface Window {\n Telegram?: {\n WebApp: {\n initData: string;\n };\n };\n }\n}\n\nexport class OAuthExtension extends Extension.Internal<'oauth2'> {\n name = 'oauth2' as const;\n config = {};\n compat = {\n 'magic-sdk': '>=2.4.6',\n '@magic-sdk/react-native': false,\n '@magic-sdk/react-native-bare': false,\n '@magic-sdk/react-native-expo': false,\n };\n\n constructor() {\n super();\n this.seamlessTelegramLogin();\n }\n\n public loginWithRedirect(configuration: OAuthRedirectConfiguration) {\n return this.utils.createPromiEvent<null | string>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Start, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const result = await this.request<OAuthRedirectStartResult | OAuthRedirectError>(parseRedirectResult);\n const successResult = result as OAuthRedirectStartResult;\n const errorResult = result as OAuthRedirectError;\n\n if (errorResult.error) {\n reject(\n this.createError<OAuthErrorData>(errorResult.error, errorResult.error_description ?? 'An error occurred.', {\n errorURI: errorResult.error_uri,\n provider: errorResult.provider,\n }),\n );\n }\n\n if (successResult?.oauthAuthoriationURI) {\n const redirectURI = successResult.useMagicServerCallback\n ? // @ts-ignore - this.sdk.endpoint is marked protected but we need to access it.\n new URL(successResult.oauthAuthoriationURI, this.sdk.endpoint).href\n : successResult.oauthAuthoriationURI;\n\n if (successResult?.shouldReturnURI) {\n resolve(redirectURI);\n } else {\n window.location.href = redirectURI;\n }\n }\n resolve(null);\n });\n }\n\n public getRedirectResult(configuration: OAuthVerificationConfiguration) {\n const queryString = configuration.optionalQueryString || window.location.search;\n\n // Remove the query from the redirect callback as a precaution to prevent\n // malicious parties from parsing it before we have a chance to use it.\n const urlWithoutQuery = window.location.origin + window.location.pathname;\n window.history.replaceState(null, '', urlWithoutQuery);\n\n return getResult.call(this, configuration, queryString);\n }\n\n public loginWithPopup(configuration: OAuthPopupConfiguration) {\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Popup, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n return this.request<OAuthRedirectResult | OAuthRedirectError>(requestPayload);\n }\n\n protected seamlessTelegramLogin() {\n try {\n const hash = window.location.hash.toString();\n if (!hash.includes('#tgWebAppData')) return;\n\n const script = document.createElement('script');\n script.src = 'https://telegram.org/js/telegram-web-app.js';\n document.head.prepend(script);\n\n script.onload = async () => {\n try {\n const userData = window.Telegram?.WebApp.initData;\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.VerifyTelegramData, [\n { userData, isMiniApp: true },\n ]);\n\n await this.request<string | null>(requestPayload);\n } catch (verificationError) {\n console.log('Error while verifying telegram data', verificationError);\n }\n };\n } catch (seamlessLoginError) {\n console.log('Error while loading telegram-web-app script', seamlessLoginError);\n }\n }\n}\n\nfunction getResult(this: OAuthExtension, configuration: OAuthVerificationConfiguration, queryString: string) {\n return this.utils.createPromiEvent<OAuthRedirectResult>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Verify, [\n {\n authorizationResponseParams: queryString,\n magicApiKey: this.sdk.apiKey,\n platform: 'web',\n ...configuration,\n },\n ]);\n\n // Parse the result, which may contain an OAuth-formatted error.\n const resultOrError = await this.request<OAuthRedirectResult | OAuthRedirectError>(parseRedirectResult);\n const maybeResult = resultOrError as OAuthRedirectResult;\n const maybeError = resultOrError as OAuthRedirectError;\n\n if (maybeError.error) {\n reject(\n this.createError<OAuthErrorData>(maybeError.error, maybeError.error_description ?? 'An error occurred.', {\n errorURI: maybeError.error_uri,\n provider: maybeError.provider,\n }),\n );\n }\n\n resolve(maybeResult);\n });\n}\n\nexport * from './types';\n", "import { MagicUserMetadata } from '@magic-sdk/types';\n\nexport enum OAuthPayloadMethods {\n Start = 'magic_oauth_login_with_redirect_start',\n Verify = 'magic_oauth_login_with_redirect_verify',\n Popup = 'magic_oauth_login_with_popup',\n VerifyTelegramData = 'magic_oauth_verify_telegram_data',\n}\n\nexport type OAuthProvider =\n | 'google'\n | 'facebook'\n | 'apple'\n | 'github'\n | 'bitbucket'\n | 'gitlab'\n | 'linkedin'\n | 'twitter'\n | 'discord'\n | 'twitch'\n | 'microsoft';\n\ntype OAuthPopupProvider = OAuthProvider | 'telegram';\n\nexport interface OAuthErrorData {\n provider: OAuthProvider;\n errorURI?: string;\n}\n\nexport interface OpenIDConnectProfile {\n name?: string;\n familyName?: string;\n givenName?: string;\n middleName?: string;\n nickname?: string;\n preferredUsername?: string;\n profile?: string;\n picture?: string;\n website?: string;\n gender?: string;\n birthdate?: string;\n zoneinfo?: string;\n locale?: string;\n updatedAt?: number;\n}\n\nexport interface OpenIDConnectEmail {\n email?: string;\n emailVerified?: boolean;\n}\n\nexport interface OpenIDConnectPhone {\n phoneNumber?: string;\n phoneNumberVerified?: boolean;\n}\n\nexport interface OpenIDConnectAddress {\n address?: {\n formatted?: string;\n streetAddress?: string;\n locality?: string;\n region?: string;\n postalCode?: string;\n country?: string;\n };\n}\n\nexport type OpenIDConnectUserInfo = OpenIDConnectProfile &\n OpenIDConnectEmail &\n OpenIDConnectPhone &\n OpenIDConnectAddress & { sub?: string; sources?: Record<string, any> } & Record<string, any>;\n\nexport interface OAuthRedirectStartResult {\n oauthAuthoriationURI?: string;\n useMagicServerCallback?: boolean;\n shouldReturnURI?: boolean;\n}\n\nexport interface OAuthRedirectResult {\n oauth: {\n provider: OAuthProvider;\n scope: string[];\n userHandle: string;\n userInfo: OpenIDConnectUserInfo;\n };\n magic: {\n idToken: string;\n userMetadata: MagicUserMetadata;\n };\n}\n\nexport interface OAuthRedirectError {\n provider: OAuthProvider;\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nexport interface OAuthRedirectConfiguration {\n provider: OAuthProvider;\n redirectURI: string;\n scope?: string[];\n customData?: string;\n providerParams?: Record<string, string | number | boolean>;\n loginHint?: string;\n}\n\nexport interface OAuthVerificationConfiguration {\n lifespan?: number;\n optionalQueryString?: string;\n skipDIDToken?: boolean;\n}\n\nexport interface OAuthPopupConfiguration {\n provider: OAuthPopupProvider;\n scope?: string[];\n loginHint?: string;\n providerParams?: Record<string, string | number | boolean>;\n}\n\nexport enum OAuthErrorCode {\n InvalidRequest = 'invalid_request',\n InvalidClient = 'invalid_client',\n InvalidScope = 'invalid_scope',\n InvalidGrant = 'invalid_grant',\n UnauthorizedClient = 'unauthorized_client',\n UnsupportedResponseType = 'unsupported_response_type',\n UnsupportedGrantType = 'unsupported_grant_type',\n UnsupportedTokenType = 'unsupported_token_type',\n AccessDenied = 'access_denied',\n ServerError = 'server_error',\n TemporarilyUnavailable = 'temporarily_unavailable',\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["index_exports", "__export", "OAuthErrorCode", "OAuthExtension", "OAuthPayloadMethods", "__toCommonJS", "import_commons", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthExtension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "script", "userData", "verificationError", "seamlessLoginError", "resultOrError", "maybeResult", "maybeError"]
7
7
  }
package/dist/es/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Extension as g}from"@magic-sdk/provider";var p=(n=>(n.Start="magic_oauth_login_with_redirect_start",n.Verify="magic_oauth_login_with_redirect_verify",n.Popup="magic_oauth_login_with_popup",n.VerifyTelegramData="magic_oauth_verify_telegram_data",n))(p||{}),d=(i=>(i.InvalidRequest="invalid_request",i.InvalidClient="invalid_client",i.InvalidScope="invalid_scope",i.InvalidGrant="invalid_grant",i.UnauthorizedClient="unauthorized_client",i.UnsupportedResponseType="unsupported_response_type",i.UnsupportedGrantType="unsupported_grant_type",i.UnsupportedTokenType="unsupported_token_type",i.AccessDenied="access_denied",i.ServerError="server_error",i.TemporarilyUnavailable="temporarily_unavailable",i))(d||{});var l=class extends g.Internal{name="oauth2";config={};compat={"magic-sdk":">=2.4.6","@magic-sdk/react-native":!1,"@magic-sdk/react-native-bare":!1,"@magic-sdk/react-native-expo":!1};constructor(){super(),this.seamlessTelegramLogin()}loginWithRedirect(r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]),s=await this.request(n),a=s,t=s;if(t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),a?.oauthAuthoriationURI){let u=a.useMagicServerCallback?new URL(a.oauthAuthoriationURI,this.sdk.endpoint).href:a.oauthAuthoriationURI;a?.shouldReturnURI?e(u):window.location.href=u}e(null)})}getRedirectResult(r){let e=r.optionalQueryString||window.location.search,o=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",o),h.call(this,r,e)}loginWithPopup(r){let e=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]);return this.request(e)}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let e=document.createElement("script");e.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(e),e.onload=async()=>{try{let o=window.Telegram?.WebApp.initData,n=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:o,isMiniApp:!0}]);await this.request(n)}catch(o){console.log("Error while verifying telegram data",o)}}}catch(r){console.log("Error while loading telegram-web-app script",r)}}};function h(c,r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:r,magicApiKey:this.sdk.apiKey,platform:"web",...c}]),s=await this.request(n),a=s,t=s;t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),e(a)})}export{d as OAuthErrorCode,l as OAuthExtension,p as OAuthPayloadMethods};
1
+ import{Extension as g}from"@magic-sdk/commons";var p=(n=>(n.Start="magic_oauth_login_with_redirect_start",n.Verify="magic_oauth_login_with_redirect_verify",n.Popup="magic_oauth_login_with_popup",n.VerifyTelegramData="magic_oauth_verify_telegram_data",n))(p||{}),d=(i=>(i.InvalidRequest="invalid_request",i.InvalidClient="invalid_client",i.InvalidScope="invalid_scope",i.InvalidGrant="invalid_grant",i.UnauthorizedClient="unauthorized_client",i.UnsupportedResponseType="unsupported_response_type",i.UnsupportedGrantType="unsupported_grant_type",i.UnsupportedTokenType="unsupported_token_type",i.AccessDenied="access_denied",i.ServerError="server_error",i.TemporarilyUnavailable="temporarily_unavailable",i))(d||{});var l=class extends g.Internal{name="oauth2";config={};compat={"magic-sdk":">=2.4.6","@magic-sdk/react-native":!1,"@magic-sdk/react-native-bare":!1,"@magic-sdk/react-native-expo":!1};constructor(){super(),this.seamlessTelegramLogin()}loginWithRedirect(r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]),s=await this.request(n),a=s,t=s;if(t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),a?.oauthAuthoriationURI){let u=a.useMagicServerCallback?new URL(a.oauthAuthoriationURI,this.sdk.endpoint).href:a.oauthAuthoriationURI;a?.shouldReturnURI?e(u):window.location.href=u}e(null)})}getRedirectResult(r){let e=r.optionalQueryString||window.location.search,o=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",o),h.call(this,r,e)}loginWithPopup(r){let e=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]);return this.request(e)}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let e=document.createElement("script");e.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(e),e.onload=async()=>{try{let o=window.Telegram?.WebApp.initData,n=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:o,isMiniApp:!0}]);await this.request(n)}catch(o){console.log("Error while verifying telegram data",o)}}}catch(r){console.log("Error while loading telegram-web-app script",r)}}};function h(c,r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:r,magicApiKey:this.sdk.apiKey,platform:"web",...c}]),s=await this.request(n),a=s,t=s;t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),e(a)})}export{d as OAuthErrorCode,l as OAuthExtension,p as OAuthPayloadMethods};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/types.ts"],
4
- "sourcesContent": ["import { Extension } from '@magic-sdk/provider';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n} from './types';\n\ndeclare global {\n interface Window {\n Telegram?: {\n WebApp: {\n initData: string;\n };\n };\n }\n}\n\nexport class OAuthExtension extends Extension.Internal<'oauth2'> {\n name = 'oauth2' as const;\n config = {};\n compat = {\n 'magic-sdk': '>=2.4.6',\n '@magic-sdk/react-native': false,\n '@magic-sdk/react-native-bare': false,\n '@magic-sdk/react-native-expo': false,\n };\n\n constructor() {\n super();\n this.seamlessTelegramLogin();\n }\n\n public loginWithRedirect(configuration: OAuthRedirectConfiguration) {\n return this.utils.createPromiEvent<null | string>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Start, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const result = await this.request<OAuthRedirectStartResult | OAuthRedirectError>(parseRedirectResult);\n const successResult = result as OAuthRedirectStartResult;\n const errorResult = result as OAuthRedirectError;\n\n if (errorResult.error) {\n reject(\n this.createError<OAuthErrorData>(errorResult.error, errorResult.error_description ?? 'An error occurred.', {\n errorURI: errorResult.error_uri,\n provider: errorResult.provider,\n }),\n );\n }\n\n if (successResult?.oauthAuthoriationURI) {\n const redirectURI = successResult.useMagicServerCallback\n ? // @ts-ignore - this.sdk.endpoint is marked protected but we need to access it.\n new URL(successResult.oauthAuthoriationURI, this.sdk.endpoint).href\n : successResult.oauthAuthoriationURI;\n\n if (successResult?.shouldReturnURI) {\n resolve(redirectURI);\n } else {\n window.location.href = redirectURI;\n }\n }\n resolve(null);\n });\n }\n\n public getRedirectResult(configuration: OAuthVerificationConfiguration) {\n const queryString = configuration.optionalQueryString || window.location.search;\n\n // Remove the query from the redirect callback as a precaution to prevent\n // malicious parties from parsing it before we have a chance to use it.\n const urlWithoutQuery = window.location.origin + window.location.pathname;\n window.history.replaceState(null, '', urlWithoutQuery);\n\n return getResult.call(this, configuration, queryString);\n }\n\n public loginWithPopup(configuration: OAuthPopupConfiguration) {\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Popup, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n return this.request<OAuthRedirectResult | OAuthRedirectError>(requestPayload);\n }\n\n protected seamlessTelegramLogin() {\n try {\n const hash = window.location.hash.toString();\n if (!hash.includes('#tgWebAppData')) return;\n\n const script = document.createElement('script');\n script.src = 'https://telegram.org/js/telegram-web-app.js';\n document.head.prepend(script);\n\n script.onload = async () => {\n try {\n const userData = window.Telegram?.WebApp.initData;\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.VerifyTelegramData, [\n { userData, isMiniApp: true },\n ]);\n\n await this.request<string | null>(requestPayload);\n } catch (verificationError) {\n console.log('Error while verifying telegram data', verificationError);\n }\n };\n } catch (seamlessLoginError) {\n console.log('Error while loading telegram-web-app script', seamlessLoginError);\n }\n }\n}\n\nfunction getResult(this: OAuthExtension, configuration: OAuthVerificationConfiguration, queryString: string) {\n return this.utils.createPromiEvent<OAuthRedirectResult>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Verify, [\n {\n authorizationResponseParams: queryString,\n magicApiKey: this.sdk.apiKey,\n platform: 'web',\n ...configuration,\n },\n ]);\n\n // Parse the result, which may contain an OAuth-formatted error.\n const resultOrError = await this.request<OAuthRedirectResult | OAuthRedirectError>(parseRedirectResult);\n const maybeResult = resultOrError as OAuthRedirectResult;\n const maybeError = resultOrError as OAuthRedirectError;\n\n if (maybeError.error) {\n reject(\n this.createError<OAuthErrorData>(maybeError.error, maybeError.error_description ?? 'An error occurred.', {\n errorURI: maybeError.error_uri,\n provider: maybeError.provider,\n }),\n );\n }\n\n resolve(maybeResult);\n });\n}\n\nexport * from './types';\n", "import { MagicUserMetadata } from '@magic-sdk/types';\n\nexport enum OAuthPayloadMethods {\n Start = 'magic_oauth_login_with_redirect_start',\n Verify = 'magic_oauth_login_with_redirect_verify',\n Popup = 'magic_oauth_login_with_popup',\n VerifyTelegramData = 'magic_oauth_verify_telegram_data',\n}\n\nexport type OAuthProvider =\n | 'google'\n | 'facebook'\n | 'apple'\n | 'github'\n | 'bitbucket'\n | 'gitlab'\n | 'linkedin'\n | 'twitter'\n | 'discord'\n | 'twitch'\n | 'microsoft';\n\ntype OAuthPopupProvider = OAuthProvider | 'telegram';\n\nexport interface OAuthErrorData {\n provider: OAuthProvider;\n errorURI?: string;\n}\n\nexport interface OpenIDConnectProfile {\n name?: string;\n familyName?: string;\n givenName?: string;\n middleName?: string;\n nickname?: string;\n preferredUsername?: string;\n profile?: string;\n picture?: string;\n website?: string;\n gender?: string;\n birthdate?: string;\n zoneinfo?: string;\n locale?: string;\n updatedAt?: number;\n}\n\nexport interface OpenIDConnectEmail {\n email?: string;\n emailVerified?: boolean;\n}\n\nexport interface OpenIDConnectPhone {\n phoneNumber?: string;\n phoneNumberVerified?: boolean;\n}\n\nexport interface OpenIDConnectAddress {\n address?: {\n formatted?: string;\n streetAddress?: string;\n locality?: string;\n region?: string;\n postalCode?: string;\n country?: string;\n };\n}\n\nexport type OpenIDConnectUserInfo = OpenIDConnectProfile &\n OpenIDConnectEmail &\n OpenIDConnectPhone &\n OpenIDConnectAddress & { sub?: string; sources?: Record<string, any> } & Record<string, any>;\n\nexport interface OAuthRedirectStartResult {\n oauthAuthoriationURI?: string;\n useMagicServerCallback?: boolean;\n shouldReturnURI?: boolean;\n}\n\nexport interface OAuthRedirectResult {\n oauth: {\n provider: OAuthProvider;\n scope: string[];\n userHandle: string;\n userInfo: OpenIDConnectUserInfo;\n };\n magic: {\n idToken: string;\n userMetadata: MagicUserMetadata;\n };\n}\n\nexport interface OAuthRedirectError {\n provider: OAuthProvider;\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nexport interface OAuthRedirectConfiguration {\n provider: OAuthProvider;\n redirectURI: string;\n scope?: string[];\n customData?: string;\n providerParams?: Record<string, string | number | boolean>;\n loginHint?: string;\n}\n\nexport interface OAuthVerificationConfiguration {\n lifespan?: number;\n optionalQueryString?: string;\n skipDIDToken?: boolean;\n}\n\nexport interface OAuthPopupConfiguration {\n provider: OAuthPopupProvider;\n scope?: string[];\n loginHint?: string;\n providerParams?: Record<string, string | number | boolean>;\n}\n\nexport enum OAuthErrorCode {\n InvalidRequest = 'invalid_request',\n InvalidClient = 'invalid_client',\n InvalidScope = 'invalid_scope',\n InvalidGrant = 'invalid_grant',\n UnauthorizedClient = 'unauthorized_client',\n UnsupportedResponseType = 'unsupported_response_type',\n UnsupportedGrantType = 'unsupported_grant_type',\n UnsupportedTokenType = 'unsupported_token_type',\n AccessDenied = 'access_denied',\n ServerError = 'server_error',\n TemporarilyUnavailable = 'temporarily_unavailable',\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n} from './types';\n\ndeclare global {\n interface Window {\n Telegram?: {\n WebApp: {\n initData: string;\n };\n };\n }\n}\n\nexport class OAuthExtension extends Extension.Internal<'oauth2'> {\n name = 'oauth2' as const;\n config = {};\n compat = {\n 'magic-sdk': '>=2.4.6',\n '@magic-sdk/react-native': false,\n '@magic-sdk/react-native-bare': false,\n '@magic-sdk/react-native-expo': false,\n };\n\n constructor() {\n super();\n this.seamlessTelegramLogin();\n }\n\n public loginWithRedirect(configuration: OAuthRedirectConfiguration) {\n return this.utils.createPromiEvent<null | string>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Start, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const result = await this.request<OAuthRedirectStartResult | OAuthRedirectError>(parseRedirectResult);\n const successResult = result as OAuthRedirectStartResult;\n const errorResult = result as OAuthRedirectError;\n\n if (errorResult.error) {\n reject(\n this.createError<OAuthErrorData>(errorResult.error, errorResult.error_description ?? 'An error occurred.', {\n errorURI: errorResult.error_uri,\n provider: errorResult.provider,\n }),\n );\n }\n\n if (successResult?.oauthAuthoriationURI) {\n const redirectURI = successResult.useMagicServerCallback\n ? // @ts-ignore - this.sdk.endpoint is marked protected but we need to access it.\n new URL(successResult.oauthAuthoriationURI, this.sdk.endpoint).href\n : successResult.oauthAuthoriationURI;\n\n if (successResult?.shouldReturnURI) {\n resolve(redirectURI);\n } else {\n window.location.href = redirectURI;\n }\n }\n resolve(null);\n });\n }\n\n public getRedirectResult(configuration: OAuthVerificationConfiguration) {\n const queryString = configuration.optionalQueryString || window.location.search;\n\n // Remove the query from the redirect callback as a precaution to prevent\n // malicious parties from parsing it before we have a chance to use it.\n const urlWithoutQuery = window.location.origin + window.location.pathname;\n window.history.replaceState(null, '', urlWithoutQuery);\n\n return getResult.call(this, configuration, queryString);\n }\n\n public loginWithPopup(configuration: OAuthPopupConfiguration) {\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Popup, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n return this.request<OAuthRedirectResult | OAuthRedirectError>(requestPayload);\n }\n\n protected seamlessTelegramLogin() {\n try {\n const hash = window.location.hash.toString();\n if (!hash.includes('#tgWebAppData')) return;\n\n const script = document.createElement('script');\n script.src = 'https://telegram.org/js/telegram-web-app.js';\n document.head.prepend(script);\n\n script.onload = async () => {\n try {\n const userData = window.Telegram?.WebApp.initData;\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.VerifyTelegramData, [\n { userData, isMiniApp: true },\n ]);\n\n await this.request<string | null>(requestPayload);\n } catch (verificationError) {\n console.log('Error while verifying telegram data', verificationError);\n }\n };\n } catch (seamlessLoginError) {\n console.log('Error while loading telegram-web-app script', seamlessLoginError);\n }\n }\n}\n\nfunction getResult(this: OAuthExtension, configuration: OAuthVerificationConfiguration, queryString: string) {\n return this.utils.createPromiEvent<OAuthRedirectResult>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Verify, [\n {\n authorizationResponseParams: queryString,\n magicApiKey: this.sdk.apiKey,\n platform: 'web',\n ...configuration,\n },\n ]);\n\n // Parse the result, which may contain an OAuth-formatted error.\n const resultOrError = await this.request<OAuthRedirectResult | OAuthRedirectError>(parseRedirectResult);\n const maybeResult = resultOrError as OAuthRedirectResult;\n const maybeError = resultOrError as OAuthRedirectError;\n\n if (maybeError.error) {\n reject(\n this.createError<OAuthErrorData>(maybeError.error, maybeError.error_description ?? 'An error occurred.', {\n errorURI: maybeError.error_uri,\n provider: maybeError.provider,\n }),\n );\n }\n\n resolve(maybeResult);\n });\n}\n\nexport * from './types';\n", "import { MagicUserMetadata } from '@magic-sdk/types';\n\nexport enum OAuthPayloadMethods {\n Start = 'magic_oauth_login_with_redirect_start',\n Verify = 'magic_oauth_login_with_redirect_verify',\n Popup = 'magic_oauth_login_with_popup',\n VerifyTelegramData = 'magic_oauth_verify_telegram_data',\n}\n\nexport type OAuthProvider =\n | 'google'\n | 'facebook'\n | 'apple'\n | 'github'\n | 'bitbucket'\n | 'gitlab'\n | 'linkedin'\n | 'twitter'\n | 'discord'\n | 'twitch'\n | 'microsoft';\n\ntype OAuthPopupProvider = OAuthProvider | 'telegram';\n\nexport interface OAuthErrorData {\n provider: OAuthProvider;\n errorURI?: string;\n}\n\nexport interface OpenIDConnectProfile {\n name?: string;\n familyName?: string;\n givenName?: string;\n middleName?: string;\n nickname?: string;\n preferredUsername?: string;\n profile?: string;\n picture?: string;\n website?: string;\n gender?: string;\n birthdate?: string;\n zoneinfo?: string;\n locale?: string;\n updatedAt?: number;\n}\n\nexport interface OpenIDConnectEmail {\n email?: string;\n emailVerified?: boolean;\n}\n\nexport interface OpenIDConnectPhone {\n phoneNumber?: string;\n phoneNumberVerified?: boolean;\n}\n\nexport interface OpenIDConnectAddress {\n address?: {\n formatted?: string;\n streetAddress?: string;\n locality?: string;\n region?: string;\n postalCode?: string;\n country?: string;\n };\n}\n\nexport type OpenIDConnectUserInfo = OpenIDConnectProfile &\n OpenIDConnectEmail &\n OpenIDConnectPhone &\n OpenIDConnectAddress & { sub?: string; sources?: Record<string, any> } & Record<string, any>;\n\nexport interface OAuthRedirectStartResult {\n oauthAuthoriationURI?: string;\n useMagicServerCallback?: boolean;\n shouldReturnURI?: boolean;\n}\n\nexport interface OAuthRedirectResult {\n oauth: {\n provider: OAuthProvider;\n scope: string[];\n userHandle: string;\n userInfo: OpenIDConnectUserInfo;\n };\n magic: {\n idToken: string;\n userMetadata: MagicUserMetadata;\n };\n}\n\nexport interface OAuthRedirectError {\n provider: OAuthProvider;\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nexport interface OAuthRedirectConfiguration {\n provider: OAuthProvider;\n redirectURI: string;\n scope?: string[];\n customData?: string;\n providerParams?: Record<string, string | number | boolean>;\n loginHint?: string;\n}\n\nexport interface OAuthVerificationConfiguration {\n lifespan?: number;\n optionalQueryString?: string;\n skipDIDToken?: boolean;\n}\n\nexport interface OAuthPopupConfiguration {\n provider: OAuthPopupProvider;\n scope?: string[];\n loginHint?: string;\n providerParams?: Record<string, string | number | boolean>;\n}\n\nexport enum OAuthErrorCode {\n InvalidRequest = 'invalid_request',\n InvalidClient = 'invalid_client',\n InvalidScope = 'invalid_scope',\n InvalidGrant = 'invalid_grant',\n UnauthorizedClient = 'unauthorized_client',\n UnsupportedResponseType = 'unsupported_response_type',\n UnsupportedGrantType = 'unsupported_grant_type',\n UnsupportedTokenType = 'unsupported_token_type',\n AccessDenied = 'access_denied',\n ServerError = 'server_error',\n TemporarilyUnavailable = 'temporarily_unavailable',\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Extension", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthExtension", "Extension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "script", "userData", "verificationError", "seamlessLoginError", "resultOrError", "maybeResult", "maybeError"]
7
7
  }
package/dist/es/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{Extension as g}from"@magic-sdk/provider";var p=(n=>(n.Start="magic_oauth_login_with_redirect_start",n.Verify="magic_oauth_login_with_redirect_verify",n.Popup="magic_oauth_login_with_popup",n.VerifyTelegramData="magic_oauth_verify_telegram_data",n))(p||{}),d=(i=>(i.InvalidRequest="invalid_request",i.InvalidClient="invalid_client",i.InvalidScope="invalid_scope",i.InvalidGrant="invalid_grant",i.UnauthorizedClient="unauthorized_client",i.UnsupportedResponseType="unsupported_response_type",i.UnsupportedGrantType="unsupported_grant_type",i.UnsupportedTokenType="unsupported_token_type",i.AccessDenied="access_denied",i.ServerError="server_error",i.TemporarilyUnavailable="temporarily_unavailable",i))(d||{});var l=class extends g.Internal{name="oauth2";config={};compat={"magic-sdk":">=2.4.6","@magic-sdk/react-native":!1,"@magic-sdk/react-native-bare":!1,"@magic-sdk/react-native-expo":!1};constructor(){super(),this.seamlessTelegramLogin()}loginWithRedirect(r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]),s=await this.request(n),a=s,t=s;if(t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),a?.oauthAuthoriationURI){let u=a.useMagicServerCallback?new URL(a.oauthAuthoriationURI,this.sdk.endpoint).href:a.oauthAuthoriationURI;a?.shouldReturnURI?e(u):window.location.href=u}e(null)})}getRedirectResult(r){let e=r.optionalQueryString||window.location.search,o=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",o),h.call(this,r,e)}loginWithPopup(r){let e=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]);return this.request(e)}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let e=document.createElement("script");e.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(e),e.onload=async()=>{try{let o=window.Telegram?.WebApp.initData,n=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:o,isMiniApp:!0}]);await this.request(n)}catch(o){console.log("Error while verifying telegram data",o)}}}catch(r){console.log("Error while loading telegram-web-app script",r)}}};function h(c,r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:r,magicApiKey:this.sdk.apiKey,platform:"web",...c}]),s=await this.request(n),a=s,t=s;t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),e(a)})}export{d as OAuthErrorCode,l as OAuthExtension,p as OAuthPayloadMethods};
1
+ import{Extension as g}from"@magic-sdk/commons";var p=(n=>(n.Start="magic_oauth_login_with_redirect_start",n.Verify="magic_oauth_login_with_redirect_verify",n.Popup="magic_oauth_login_with_popup",n.VerifyTelegramData="magic_oauth_verify_telegram_data",n))(p||{}),d=(i=>(i.InvalidRequest="invalid_request",i.InvalidClient="invalid_client",i.InvalidScope="invalid_scope",i.InvalidGrant="invalid_grant",i.UnauthorizedClient="unauthorized_client",i.UnsupportedResponseType="unsupported_response_type",i.UnsupportedGrantType="unsupported_grant_type",i.UnsupportedTokenType="unsupported_token_type",i.AccessDenied="access_denied",i.ServerError="server_error",i.TemporarilyUnavailable="temporarily_unavailable",i))(d||{});var l=class extends g.Internal{name="oauth2";config={};compat={"magic-sdk":">=2.4.6","@magic-sdk/react-native":!1,"@magic-sdk/react-native-bare":!1,"@magic-sdk/react-native-expo":!1};constructor(){super(),this.seamlessTelegramLogin()}loginWithRedirect(r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]),s=await this.request(n),a=s,t=s;if(t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),a?.oauthAuthoriationURI){let u=a.useMagicServerCallback?new URL(a.oauthAuthoriationURI,this.sdk.endpoint).href:a.oauthAuthoriationURI;a?.shouldReturnURI?e(u):window.location.href=u}e(null)})}getRedirectResult(r){let e=r.optionalQueryString||window.location.search,o=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",o),h.call(this,r,e)}loginWithPopup(r){let e=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...r,apiKey:this.sdk.apiKey,platform:"web"}]);return this.request(e)}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let e=document.createElement("script");e.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(e),e.onload=async()=>{try{let o=window.Telegram?.WebApp.initData,n=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:o,isMiniApp:!0}]);await this.request(n)}catch(o){console.log("Error while verifying telegram data",o)}}}catch(r){console.log("Error while loading telegram-web-app script",r)}}};function h(c,r){return this.utils.createPromiEvent(async(e,o)=>{let n=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:r,magicApiKey:this.sdk.apiKey,platform:"web",...c}]),s=await this.request(n),a=s,t=s;t.error&&o(this.createError(t.error,t.error_description??"An error occurred.",{errorURI:t.error_uri,provider:t.provider})),e(a)})}export{d as OAuthErrorCode,l as OAuthExtension,p as OAuthPayloadMethods};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/types.ts"],
4
- "sourcesContent": ["import { Extension } from '@magic-sdk/provider';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n} from './types';\n\ndeclare global {\n interface Window {\n Telegram?: {\n WebApp: {\n initData: string;\n };\n };\n }\n}\n\nexport class OAuthExtension extends Extension.Internal<'oauth2'> {\n name = 'oauth2' as const;\n config = {};\n compat = {\n 'magic-sdk': '>=2.4.6',\n '@magic-sdk/react-native': false,\n '@magic-sdk/react-native-bare': false,\n '@magic-sdk/react-native-expo': false,\n };\n\n constructor() {\n super();\n this.seamlessTelegramLogin();\n }\n\n public loginWithRedirect(configuration: OAuthRedirectConfiguration) {\n return this.utils.createPromiEvent<null | string>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Start, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const result = await this.request<OAuthRedirectStartResult | OAuthRedirectError>(parseRedirectResult);\n const successResult = result as OAuthRedirectStartResult;\n const errorResult = result as OAuthRedirectError;\n\n if (errorResult.error) {\n reject(\n this.createError<OAuthErrorData>(errorResult.error, errorResult.error_description ?? 'An error occurred.', {\n errorURI: errorResult.error_uri,\n provider: errorResult.provider,\n }),\n );\n }\n\n if (successResult?.oauthAuthoriationURI) {\n const redirectURI = successResult.useMagicServerCallback\n ? // @ts-ignore - this.sdk.endpoint is marked protected but we need to access it.\n new URL(successResult.oauthAuthoriationURI, this.sdk.endpoint).href\n : successResult.oauthAuthoriationURI;\n\n if (successResult?.shouldReturnURI) {\n resolve(redirectURI);\n } else {\n window.location.href = redirectURI;\n }\n }\n resolve(null);\n });\n }\n\n public getRedirectResult(configuration: OAuthVerificationConfiguration) {\n const queryString = configuration.optionalQueryString || window.location.search;\n\n // Remove the query from the redirect callback as a precaution to prevent\n // malicious parties from parsing it before we have a chance to use it.\n const urlWithoutQuery = window.location.origin + window.location.pathname;\n window.history.replaceState(null, '', urlWithoutQuery);\n\n return getResult.call(this, configuration, queryString);\n }\n\n public loginWithPopup(configuration: OAuthPopupConfiguration) {\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Popup, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n return this.request<OAuthRedirectResult | OAuthRedirectError>(requestPayload);\n }\n\n protected seamlessTelegramLogin() {\n try {\n const hash = window.location.hash.toString();\n if (!hash.includes('#tgWebAppData')) return;\n\n const script = document.createElement('script');\n script.src = 'https://telegram.org/js/telegram-web-app.js';\n document.head.prepend(script);\n\n script.onload = async () => {\n try {\n const userData = window.Telegram?.WebApp.initData;\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.VerifyTelegramData, [\n { userData, isMiniApp: true },\n ]);\n\n await this.request<string | null>(requestPayload);\n } catch (verificationError) {\n console.log('Error while verifying telegram data', verificationError);\n }\n };\n } catch (seamlessLoginError) {\n console.log('Error while loading telegram-web-app script', seamlessLoginError);\n }\n }\n}\n\nfunction getResult(this: OAuthExtension, configuration: OAuthVerificationConfiguration, queryString: string) {\n return this.utils.createPromiEvent<OAuthRedirectResult>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Verify, [\n {\n authorizationResponseParams: queryString,\n magicApiKey: this.sdk.apiKey,\n platform: 'web',\n ...configuration,\n },\n ]);\n\n // Parse the result, which may contain an OAuth-formatted error.\n const resultOrError = await this.request<OAuthRedirectResult | OAuthRedirectError>(parseRedirectResult);\n const maybeResult = resultOrError as OAuthRedirectResult;\n const maybeError = resultOrError as OAuthRedirectError;\n\n if (maybeError.error) {\n reject(\n this.createError<OAuthErrorData>(maybeError.error, maybeError.error_description ?? 'An error occurred.', {\n errorURI: maybeError.error_uri,\n provider: maybeError.provider,\n }),\n );\n }\n\n resolve(maybeResult);\n });\n}\n\nexport * from './types';\n", "import { MagicUserMetadata } from '@magic-sdk/types';\n\nexport enum OAuthPayloadMethods {\n Start = 'magic_oauth_login_with_redirect_start',\n Verify = 'magic_oauth_login_with_redirect_verify',\n Popup = 'magic_oauth_login_with_popup',\n VerifyTelegramData = 'magic_oauth_verify_telegram_data',\n}\n\nexport type OAuthProvider =\n | 'google'\n | 'facebook'\n | 'apple'\n | 'github'\n | 'bitbucket'\n | 'gitlab'\n | 'linkedin'\n | 'twitter'\n | 'discord'\n | 'twitch'\n | 'microsoft';\n\ntype OAuthPopupProvider = OAuthProvider | 'telegram';\n\nexport interface OAuthErrorData {\n provider: OAuthProvider;\n errorURI?: string;\n}\n\nexport interface OpenIDConnectProfile {\n name?: string;\n familyName?: string;\n givenName?: string;\n middleName?: string;\n nickname?: string;\n preferredUsername?: string;\n profile?: string;\n picture?: string;\n website?: string;\n gender?: string;\n birthdate?: string;\n zoneinfo?: string;\n locale?: string;\n updatedAt?: number;\n}\n\nexport interface OpenIDConnectEmail {\n email?: string;\n emailVerified?: boolean;\n}\n\nexport interface OpenIDConnectPhone {\n phoneNumber?: string;\n phoneNumberVerified?: boolean;\n}\n\nexport interface OpenIDConnectAddress {\n address?: {\n formatted?: string;\n streetAddress?: string;\n locality?: string;\n region?: string;\n postalCode?: string;\n country?: string;\n };\n}\n\nexport type OpenIDConnectUserInfo = OpenIDConnectProfile &\n OpenIDConnectEmail &\n OpenIDConnectPhone &\n OpenIDConnectAddress & { sub?: string; sources?: Record<string, any> } & Record<string, any>;\n\nexport interface OAuthRedirectStartResult {\n oauthAuthoriationURI?: string;\n useMagicServerCallback?: boolean;\n shouldReturnURI?: boolean;\n}\n\nexport interface OAuthRedirectResult {\n oauth: {\n provider: OAuthProvider;\n scope: string[];\n userHandle: string;\n userInfo: OpenIDConnectUserInfo;\n };\n magic: {\n idToken: string;\n userMetadata: MagicUserMetadata;\n };\n}\n\nexport interface OAuthRedirectError {\n provider: OAuthProvider;\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nexport interface OAuthRedirectConfiguration {\n provider: OAuthProvider;\n redirectURI: string;\n scope?: string[];\n customData?: string;\n providerParams?: Record<string, string | number | boolean>;\n loginHint?: string;\n}\n\nexport interface OAuthVerificationConfiguration {\n lifespan?: number;\n optionalQueryString?: string;\n skipDIDToken?: boolean;\n}\n\nexport interface OAuthPopupConfiguration {\n provider: OAuthPopupProvider;\n scope?: string[];\n loginHint?: string;\n providerParams?: Record<string, string | number | boolean>;\n}\n\nexport enum OAuthErrorCode {\n InvalidRequest = 'invalid_request',\n InvalidClient = 'invalid_client',\n InvalidScope = 'invalid_scope',\n InvalidGrant = 'invalid_grant',\n UnauthorizedClient = 'unauthorized_client',\n UnsupportedResponseType = 'unsupported_response_type',\n UnsupportedGrantType = 'unsupported_grant_type',\n UnsupportedTokenType = 'unsupported_token_type',\n AccessDenied = 'access_denied',\n ServerError = 'server_error',\n TemporarilyUnavailable = 'temporarily_unavailable',\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n} from './types';\n\ndeclare global {\n interface Window {\n Telegram?: {\n WebApp: {\n initData: string;\n };\n };\n }\n}\n\nexport class OAuthExtension extends Extension.Internal<'oauth2'> {\n name = 'oauth2' as const;\n config = {};\n compat = {\n 'magic-sdk': '>=2.4.6',\n '@magic-sdk/react-native': false,\n '@magic-sdk/react-native-bare': false,\n '@magic-sdk/react-native-expo': false,\n };\n\n constructor() {\n super();\n this.seamlessTelegramLogin();\n }\n\n public loginWithRedirect(configuration: OAuthRedirectConfiguration) {\n return this.utils.createPromiEvent<null | string>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Start, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const result = await this.request<OAuthRedirectStartResult | OAuthRedirectError>(parseRedirectResult);\n const successResult = result as OAuthRedirectStartResult;\n const errorResult = result as OAuthRedirectError;\n\n if (errorResult.error) {\n reject(\n this.createError<OAuthErrorData>(errorResult.error, errorResult.error_description ?? 'An error occurred.', {\n errorURI: errorResult.error_uri,\n provider: errorResult.provider,\n }),\n );\n }\n\n if (successResult?.oauthAuthoriationURI) {\n const redirectURI = successResult.useMagicServerCallback\n ? // @ts-ignore - this.sdk.endpoint is marked protected but we need to access it.\n new URL(successResult.oauthAuthoriationURI, this.sdk.endpoint).href\n : successResult.oauthAuthoriationURI;\n\n if (successResult?.shouldReturnURI) {\n resolve(redirectURI);\n } else {\n window.location.href = redirectURI;\n }\n }\n resolve(null);\n });\n }\n\n public getRedirectResult(configuration: OAuthVerificationConfiguration) {\n const queryString = configuration.optionalQueryString || window.location.search;\n\n // Remove the query from the redirect callback as a precaution to prevent\n // malicious parties from parsing it before we have a chance to use it.\n const urlWithoutQuery = window.location.origin + window.location.pathname;\n window.history.replaceState(null, '', urlWithoutQuery);\n\n return getResult.call(this, configuration, queryString);\n }\n\n public loginWithPopup(configuration: OAuthPopupConfiguration) {\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Popup, [\n {\n ...configuration,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n return this.request<OAuthRedirectResult | OAuthRedirectError>(requestPayload);\n }\n\n protected seamlessTelegramLogin() {\n try {\n const hash = window.location.hash.toString();\n if (!hash.includes('#tgWebAppData')) return;\n\n const script = document.createElement('script');\n script.src = 'https://telegram.org/js/telegram-web-app.js';\n document.head.prepend(script);\n\n script.onload = async () => {\n try {\n const userData = window.Telegram?.WebApp.initData;\n const requestPayload = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.VerifyTelegramData, [\n { userData, isMiniApp: true },\n ]);\n\n await this.request<string | null>(requestPayload);\n } catch (verificationError) {\n console.log('Error while verifying telegram data', verificationError);\n }\n };\n } catch (seamlessLoginError) {\n console.log('Error while loading telegram-web-app script', seamlessLoginError);\n }\n }\n}\n\nfunction getResult(this: OAuthExtension, configuration: OAuthVerificationConfiguration, queryString: string) {\n return this.utils.createPromiEvent<OAuthRedirectResult>(async (resolve, reject) => {\n const parseRedirectResult = this.utils.createJsonRpcRequestPayload(OAuthPayloadMethods.Verify, [\n {\n authorizationResponseParams: queryString,\n magicApiKey: this.sdk.apiKey,\n platform: 'web',\n ...configuration,\n },\n ]);\n\n // Parse the result, which may contain an OAuth-formatted error.\n const resultOrError = await this.request<OAuthRedirectResult | OAuthRedirectError>(parseRedirectResult);\n const maybeResult = resultOrError as OAuthRedirectResult;\n const maybeError = resultOrError as OAuthRedirectError;\n\n if (maybeError.error) {\n reject(\n this.createError<OAuthErrorData>(maybeError.error, maybeError.error_description ?? 'An error occurred.', {\n errorURI: maybeError.error_uri,\n provider: maybeError.provider,\n }),\n );\n }\n\n resolve(maybeResult);\n });\n}\n\nexport * from './types';\n", "import { MagicUserMetadata } from '@magic-sdk/types';\n\nexport enum OAuthPayloadMethods {\n Start = 'magic_oauth_login_with_redirect_start',\n Verify = 'magic_oauth_login_with_redirect_verify',\n Popup = 'magic_oauth_login_with_popup',\n VerifyTelegramData = 'magic_oauth_verify_telegram_data',\n}\n\nexport type OAuthProvider =\n | 'google'\n | 'facebook'\n | 'apple'\n | 'github'\n | 'bitbucket'\n | 'gitlab'\n | 'linkedin'\n | 'twitter'\n | 'discord'\n | 'twitch'\n | 'microsoft';\n\ntype OAuthPopupProvider = OAuthProvider | 'telegram';\n\nexport interface OAuthErrorData {\n provider: OAuthProvider;\n errorURI?: string;\n}\n\nexport interface OpenIDConnectProfile {\n name?: string;\n familyName?: string;\n givenName?: string;\n middleName?: string;\n nickname?: string;\n preferredUsername?: string;\n profile?: string;\n picture?: string;\n website?: string;\n gender?: string;\n birthdate?: string;\n zoneinfo?: string;\n locale?: string;\n updatedAt?: number;\n}\n\nexport interface OpenIDConnectEmail {\n email?: string;\n emailVerified?: boolean;\n}\n\nexport interface OpenIDConnectPhone {\n phoneNumber?: string;\n phoneNumberVerified?: boolean;\n}\n\nexport interface OpenIDConnectAddress {\n address?: {\n formatted?: string;\n streetAddress?: string;\n locality?: string;\n region?: string;\n postalCode?: string;\n country?: string;\n };\n}\n\nexport type OpenIDConnectUserInfo = OpenIDConnectProfile &\n OpenIDConnectEmail &\n OpenIDConnectPhone &\n OpenIDConnectAddress & { sub?: string; sources?: Record<string, any> } & Record<string, any>;\n\nexport interface OAuthRedirectStartResult {\n oauthAuthoriationURI?: string;\n useMagicServerCallback?: boolean;\n shouldReturnURI?: boolean;\n}\n\nexport interface OAuthRedirectResult {\n oauth: {\n provider: OAuthProvider;\n scope: string[];\n userHandle: string;\n userInfo: OpenIDConnectUserInfo;\n };\n magic: {\n idToken: string;\n userMetadata: MagicUserMetadata;\n };\n}\n\nexport interface OAuthRedirectError {\n provider: OAuthProvider;\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nexport interface OAuthRedirectConfiguration {\n provider: OAuthProvider;\n redirectURI: string;\n scope?: string[];\n customData?: string;\n providerParams?: Record<string, string | number | boolean>;\n loginHint?: string;\n}\n\nexport interface OAuthVerificationConfiguration {\n lifespan?: number;\n optionalQueryString?: string;\n skipDIDToken?: boolean;\n}\n\nexport interface OAuthPopupConfiguration {\n provider: OAuthPopupProvider;\n scope?: string[];\n loginHint?: string;\n providerParams?: Record<string, string | number | boolean>;\n}\n\nexport enum OAuthErrorCode {\n InvalidRequest = 'invalid_request',\n InvalidClient = 'invalid_client',\n InvalidScope = 'invalid_scope',\n InvalidGrant = 'invalid_grant',\n UnauthorizedClient = 'unauthorized_client',\n UnsupportedResponseType = 'unsupported_response_type',\n UnsupportedGrantType = 'unsupported_grant_type',\n UnsupportedTokenType = 'unsupported_token_type',\n AccessDenied = 'access_denied',\n ServerError = 'server_error',\n TemporarilyUnavailable = 'temporarily_unavailable',\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Extension", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthExtension", "Extension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "script", "userData", "verificationError", "seamlessLoginError", "resultOrError", "maybeResult", "maybeError"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import { Extension } from '@magic-sdk/provider';
1
+ import { Extension } from '@magic-sdk/commons';
2
2
  import { OAuthRedirectError, OAuthRedirectResult, OAuthRedirectConfiguration, OAuthPopupConfiguration, OAuthVerificationConfiguration } from './types';
3
3
  declare global {
4
4
  interface Window {
@@ -19,19 +19,19 @@ export declare class OAuthExtension extends Extension.Internal<'oauth2'> {
19
19
  '@magic-sdk/react-native-expo': boolean;
20
20
  };
21
21
  constructor();
22
- loginWithRedirect(configuration: OAuthRedirectConfiguration): import("@magic-sdk/provider").PromiEvent<string | null, {
22
+ loginWithRedirect(configuration: OAuthRedirectConfiguration): import("@magic-sdk/commons").PromiEvent<string | null, {
23
23
  done: (result: string | null) => void;
24
24
  error: (reason: any) => void;
25
25
  settled: () => void;
26
26
  "closed-by-user": () => void;
27
27
  }>;
28
- getRedirectResult(configuration: OAuthVerificationConfiguration): import("@magic-sdk/provider").PromiEvent<OAuthRedirectResult, {
28
+ getRedirectResult(configuration: OAuthVerificationConfiguration): import("@magic-sdk/commons").PromiEvent<OAuthRedirectResult, {
29
29
  done: (result: OAuthRedirectResult) => void;
30
30
  error: (reason: any) => void;
31
31
  settled: () => void;
32
32
  "closed-by-user": () => void;
33
33
  }>;
34
- loginWithPopup(configuration: OAuthPopupConfiguration): import("@magic-sdk/provider").PromiEvent<OAuthRedirectResult | OAuthRedirectError, {
34
+ loginWithPopup(configuration: OAuthPopupConfiguration): import("@magic-sdk/commons").PromiEvent<OAuthRedirectResult | OAuthRedirectError, {
35
35
  done: (result: OAuthRedirectResult | OAuthRedirectError) => void;
36
36
  error: (reason: any) => void;
37
37
  settled: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magic-ext/oauth2",
3
- "version": "12.0.0-canary.915.17279247601.0",
3
+ "version": "12.0.0",
4
4
  "description": "Magic SDK OAuth Extension for Web environments.",
5
5
  "author": "Magic <team@magic.link> (https://magic.link/)",
6
6
  "license": "MIT",
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "externals": {
26
26
  "include": [
27
+ "@magic-sdk/commons",
27
28
  "@magic-sdk/provider"
28
29
  ]
29
30
  },
@@ -31,8 +32,8 @@
31
32
  "crypto-js": "^4.2.0"
32
33
  },
33
34
  "devDependencies": {
34
- "@magic-sdk/provider": "30.0.0-canary.915.17279247601.0",
35
+ "@magic-sdk/commons": "^26.0.0",
35
36
  "@types/crypto-js": "4.2.0"
36
37
  },
37
- "gitHead": "30cbcd86d0112dbaaf6f6b3af6460ee0aba98b1d"
38
+ "gitHead": "be1e437bcade3e4c5f5186509b7faab7c33d03a0"
38
39
  }