@magic-ext/oauth2 13.0.0 → 13.0.1-canary.952.18785961432.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 p=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var y=(a,e)=>{for(var r in e)p(a,r,{get:e[r],enumerable:!0})},O=(a,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of v(e))!A.call(a,t)&&t!==r&&p(a,t,{get:()=>e[t],enumerable:!(i=f(e,t))||i.enumerable});return a};var b=a=>O(p({},"__esModule",{value:!0}),a);var _={};y(_,{OAuthErrorCode:()=>m,OAuthExtension:()=>g,OAuthPayloadMethods:()=>c,OAuthPopupEventEmit:()=>d,OAuthPopupEventOnReceived:()=>l});module.exports=b(_);var R=require("@magic-sdk/provider");var c=(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))(c||{}),m=(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))(m||{}),l=(e=>(e.PopupUrl="popup-url",e))(l||{}),d=(e=>(e.PopupEvent="popup-event",e))(d||{});var g=class extends R.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"}]),u=await this.request(t),s=u,n=u;if(n.error&&i(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),s?.oauthAuthoriationURI){let h=s.useMagicServerCallback?new URL(s.oauthAuthoriationURI,this.sdk.endpoint).href:s.oauthAuthoriationURI;s?.shouldReturnURI?r(h):window.location.href=h}r(null)})}getRedirectResult(e={}){let r=e?.optionalQueryString||window.location.search,i=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",i),P.call(this,e,r)}loginWithPopup(e){let r=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...e,returnTo:window.location.href,apiKey:this.sdk.apiKey,platform:"web"}]),i=this.request(r);return i.on("popup-url",()=>{window.addEventListener("message",t=>{i.emit("popup-event",t.data)})}),i}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 P(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}]),u=await this.request(t),s=u,n=u;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/provider';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n OAuthPopupEventOnReceived,\n OAuthPopupEventEmit,\n OAuthPopupEventHandlers,\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 returnTo: window.location.href,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const handle = this.request<OAuthRedirectResult | OAuthRedirectError, OAuthPopupEventHandlers>(requestPayload);\n\n handle.on(OAuthPopupEventOnReceived.PopupUrl, () => {\n window.addEventListener('message', event => {\n handle.emit(OAuthPopupEventEmit.PopupEvent, event.data);\n });\n });\n\n return handle;\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\nexport enum OAuthPopupEventOnReceived {\n PopupUrl = 'popup-url',\n}\n\nexport enum OAuthPopupEventEmit {\n PopupEvent = 'popup-event',\n}\n\nexport type OAuthPopupEventHandlers = {\n // Event sent\n [OAuthPopupEventEmit.PopupEvent]: (eventData: unknown) => void;\n // Event Received\n [OAuthPopupEventOnReceived.PopupUrl]: (event: { popupUrl: string; provider: string }) => void;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["index_exports", "__export", "OAuthErrorCode", "OAuthExtension", "OAuthPayloadMethods", "OAuthPopupEventEmit", "OAuthPopupEventOnReceived", "__toCommonJS", "import_provider", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthPopupEventOnReceived", "OAuthPopupEventEmit", "OAuthExtension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "handle", "event", "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 m}from"@magic-sdk/provider";var c=(i=>(i.Start="magic_oauth_login_with_redirect_start",i.Verify="magic_oauth_login_with_redirect_verify",i.Popup="magic_oauth_login_with_popup",i.VerifyTelegramData="magic_oauth_verify_telegram_data",i))(c||{}),h=(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))(h||{}),l=(e=>(e.PopupUrl="popup-url",e))(l||{}),d=(e=>(e.PopupEvent="popup-event",e))(d||{});var g=class extends m.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,t)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]),s=await this.request(i),a=s,n=s;if(n.error&&t(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),a?.oauthAuthoriationURI){let p=a.useMagicServerCallback?new URL(a.oauthAuthoriationURI,this.sdk.endpoint).href:a.oauthAuthoriationURI;a?.shouldReturnURI?r(p):window.location.href=p}r(null)})}getRedirectResult(e={}){let r=e?.optionalQueryString||window.location.search,t=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",t),R.call(this,e,r)}loginWithPopup(e){let r=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...e,returnTo:window.location.href,apiKey:this.sdk.apiKey,platform:"web"}]),t=this.request(r);return t.on("popup-url",()=>{window.addEventListener("message",i=>{t.emit("popup-event",i.data)})}),t}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 t=window.Telegram?.WebApp.initData,i=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:t,isMiniApp:!0}]);await this.request(i)}catch(t){console.log("Error while verifying telegram data",t)}}}catch(e){console.log("Error while loading telegram-web-app script",e)}}};function R(u,e){return this.utils.createPromiEvent(async(r,t)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:e,magicApiKey:this.sdk.apiKey,platform:"web",...u}]),s=await this.request(i),a=s,n=s;n.error&&t(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),r(a)})}export{h as OAuthErrorCode,g as OAuthExtension,c as OAuthPayloadMethods,d as OAuthPopupEventEmit,l as OAuthPopupEventOnReceived};
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": ["Extension", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthExtension", "Extension", "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/provider';\nimport {\n OAuthErrorData,\n OAuthRedirectError,\n OAuthRedirectResult,\n OAuthRedirectConfiguration,\n OAuthPayloadMethods,\n OAuthRedirectStartResult,\n OAuthPopupConfiguration,\n OAuthVerificationConfiguration,\n OAuthPopupEventOnReceived,\n OAuthPopupEventEmit,\n OAuthPopupEventHandlers,\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 returnTo: window.location.href,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const handle = this.request<OAuthRedirectResult | OAuthRedirectError, OAuthPopupEventHandlers>(requestPayload);\n\n handle.on(OAuthPopupEventOnReceived.PopupUrl, () => {\n window.addEventListener('message', event => {\n handle.emit(OAuthPopupEventEmit.PopupEvent, event.data);\n });\n });\n\n return handle;\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\nexport enum OAuthPopupEventOnReceived {\n PopupUrl = 'popup-url',\n}\n\nexport enum OAuthPopupEventEmit {\n PopupEvent = 'popup-event',\n}\n\nexport type OAuthPopupEventHandlers = {\n // Event sent\n [OAuthPopupEventEmit.PopupEvent]: (eventData: unknown) => void;\n // Event Received\n [OAuthPopupEventOnReceived.PopupUrl]: (event: { popupUrl: string; provider: string }) => void;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Extension", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthPopupEventOnReceived", "OAuthPopupEventEmit", "OAuthExtension", "Extension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "handle", "event", "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 m}from"@magic-sdk/provider";var c=(i=>(i.Start="magic_oauth_login_with_redirect_start",i.Verify="magic_oauth_login_with_redirect_verify",i.Popup="magic_oauth_login_with_popup",i.VerifyTelegramData="magic_oauth_verify_telegram_data",i))(c||{}),h=(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))(h||{}),l=(e=>(e.PopupUrl="popup-url",e))(l||{}),d=(e=>(e.PopupEvent="popup-event",e))(d||{});var g=class extends m.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,t)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]),s=await this.request(i),a=s,n=s;if(n.error&&t(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),a?.oauthAuthoriationURI){let p=a.useMagicServerCallback?new URL(a.oauthAuthoriationURI,this.sdk.endpoint).href:a.oauthAuthoriationURI;a?.shouldReturnURI?r(p):window.location.href=p}r(null)})}getRedirectResult(e={}){let r=e?.optionalQueryString||window.location.search,t=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",t),R.call(this,e,r)}loginWithPopup(e){let r=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...e,returnTo:window.location.href,apiKey:this.sdk.apiKey,platform:"web"}]),t=this.request(r);return t.on("popup-url",()=>{window.addEventListener("message",i=>{t.emit("popup-event",i.data)})}),t}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 t=window.Telegram?.WebApp.initData,i=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:t,isMiniApp:!0}]);await this.request(i)}catch(t){console.log("Error while verifying telegram data",t)}}}catch(e){console.log("Error while loading telegram-web-app script",e)}}};function R(u,e){return this.utils.createPromiEvent(async(r,t)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:e,magicApiKey:this.sdk.apiKey,platform:"web",...u}]),s=await this.request(i),a=s,n=s;n.error&&t(this.createError(n.error,n.error_description??"An error occurred.",{errorURI:n.error_uri,provider:n.provider})),r(a)})}export{h as OAuthErrorCode,g as OAuthExtension,c as OAuthPayloadMethods,d as OAuthPopupEventEmit,l as OAuthPopupEventOnReceived};
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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",
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"]
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 OAuthPopupEventOnReceived,\n OAuthPopupEventEmit,\n OAuthPopupEventHandlers,\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 returnTo: window.location.href,\n apiKey: this.sdk.apiKey,\n platform: 'web',\n },\n ]);\n\n const handle = this.request<OAuthRedirectResult | OAuthRedirectError, OAuthPopupEventHandlers>(requestPayload);\n\n handle.on(OAuthPopupEventOnReceived.PopupUrl, () => {\n window.addEventListener('message', event => {\n handle.emit(OAuthPopupEventEmit.PopupEvent, event.data);\n });\n });\n\n return handle;\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\nexport enum OAuthPopupEventOnReceived {\n PopupUrl = 'popup-url',\n}\n\nexport enum OAuthPopupEventEmit {\n PopupEvent = 'popup-event',\n}\n\nexport type OAuthPopupEventHandlers = {\n // Event sent\n [OAuthPopupEventEmit.PopupEvent]: (eventData: unknown) => void;\n // Event Received\n [OAuthPopupEventOnReceived.PopupUrl]: (event: { popupUrl: string; provider: string }) => void;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Extension", "OAuthPayloadMethods", "OAuthErrorCode", "OAuthPopupEventOnReceived", "OAuthPopupEventEmit", "OAuthExtension", "Extension", "configuration", "resolve", "reject", "parseRedirectResult", "result", "successResult", "errorResult", "redirectURI", "queryString", "urlWithoutQuery", "getResult", "requestPayload", "handle", "event", "script", "userData", "verificationError", "seamlessLoginError", "resultOrError", "maybeResult", "maybeError"]
7
7
  }
package/dist/extension.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var MagicOAuthExtension=(()=>{var A=Object.create;var p=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var I=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var r in e)p(t,r,{get:e[r],enumerable:!0})},m=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of O(e))!w.call(t,i)&&i!==r&&p(t,i,{get:()=>e[i],enumerable:!(n=b(e,i))||n.enumerable});return t};var P=(t,e,r)=>(r=t!=null?A(_(t)):{},m(e||!t||!t.__esModule?p(r,"default",{value:t,enumerable:!0}):r,t)),D=t=>m(p({},"__esModule",{value:!0}),t);var R=I((S,f)=>{"use strict";f.exports=Magic});var k={};h(k,{default:()=>U});var v=P(R());var d={};h(d,{OAuthErrorCode:()=>y,OAuthPayloadMethods:()=>l});var l=(i=>(i.Start="magic_oauth_login_with_redirect_start",i.Verify="magic_oauth_login_with_redirect_verify",i.Popup="magic_oauth_login_with_popup",i.VerifyTelegramData="magic_oauth_verify_telegram_data",i))(l||{}),y=(a=>(a.InvalidRequest="invalid_request",a.InvalidClient="invalid_client",a.InvalidScope="invalid_scope",a.InvalidGrant="invalid_grant",a.UnauthorizedClient="unauthorized_client",a.UnsupportedResponseType="unsupported_response_type",a.UnsupportedGrantType="unsupported_grant_type",a.UnsupportedTokenType="unsupported_token_type",a.AccessDenied="access_denied",a.ServerError="server_error",a.TemporarilyUnavailable="temporarily_unavailable",a))(y||{});var u=class extends v.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,n)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]),c=await this.request(i),s=c,o=c;if(o.error&&n(this.createError(o.error,o.error_description??"An error occurred.",{errorURI:o.error_uri,provider:o.provider})),s?.oauthAuthoriationURI){let g=s.useMagicServerCallback?new URL(s.oauthAuthoriationURI,this.sdk.endpoint).href:s.oauthAuthoriationURI;s?.shouldReturnURI?r(g):window.location.href=g}r(null)})}getRedirectResult(e={}){let r=e?.optionalQueryString||window.location.search,n=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",n),x.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 n=window.Telegram?.WebApp.initData,i=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:n,isMiniApp:!0}]);await this.request(i)}catch(n){console.log("Error while verifying telegram data",n)}}}catch(e){console.log("Error while loading telegram-web-app script",e)}}};function x(t,e){return this.utils.createPromiEvent(async(r,n)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:e,magicApiKey:this.sdk.apiKey,platform:"web",...t}]),c=await this.request(i),s=c,o=c;o.error&&n(this.createError(o.error,o.error_description??"An error occurred.",{errorURI:o.error_uri,provider:o.provider})),r(s)})}Object.assign(u,{...d});var U=u;return D(k);})();
1
+ "use strict";var MagicOAuthExtension=(()=>{var b=Object.create;var c=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var x=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),f=(r,e)=>{for(var t in e)c(r,t,{get:e[t],enumerable:!0})},R=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _(e))!I.call(r,i)&&i!==t&&c(r,i,{get:()=>e[i],enumerable:!(n=P(e,i))||n.enumerable});return r};var E=(r,e,t)=>(t=r!=null?b(w(r)):{},R(e||!r||!r.__esModule?c(t,"default",{value:r,enumerable:!0}):t,r)),U=r=>R(c({},"__esModule",{value:!0}),r);var A=x((T,v)=>{"use strict";v.exports=Magic});var S={};f(S,{default:()=>k});var O=E(A());var h={};f(h,{OAuthErrorCode:()=>y,OAuthPayloadMethods:()=>l,OAuthPopupEventEmit:()=>g,OAuthPopupEventOnReceived:()=>d});var l=(i=>(i.Start="magic_oauth_login_with_redirect_start",i.Verify="magic_oauth_login_with_redirect_verify",i.Popup="magic_oauth_login_with_popup",i.VerifyTelegramData="magic_oauth_verify_telegram_data",i))(l||{}),y=(a=>(a.InvalidRequest="invalid_request",a.InvalidClient="invalid_client",a.InvalidScope="invalid_scope",a.InvalidGrant="invalid_grant",a.UnauthorizedClient="unauthorized_client",a.UnsupportedResponseType="unsupported_response_type",a.UnsupportedGrantType="unsupported_grant_type",a.UnsupportedTokenType="unsupported_token_type",a.AccessDenied="access_denied",a.ServerError="server_error",a.TemporarilyUnavailable="temporarily_unavailable",a))(y||{}),d=(e=>(e.PopupUrl="popup-url",e))(d||{}),g=(e=>(e.PopupEvent="popup-event",e))(g||{});var p=class extends O.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(t,n)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_start",[{...e,apiKey:this.sdk.apiKey,platform:"web"}]),u=await this.request(i),s=u,o=u;if(o.error&&n(this.createError(o.error,o.error_description??"An error occurred.",{errorURI:o.error_uri,provider:o.provider})),s?.oauthAuthoriationURI){let m=s.useMagicServerCallback?new URL(s.oauthAuthoriationURI,this.sdk.endpoint).href:s.oauthAuthoriationURI;s?.shouldReturnURI?t(m):window.location.href=m}t(null)})}getRedirectResult(e={}){let t=e?.optionalQueryString||window.location.search,n=window.location.origin+window.location.pathname;return window.history.replaceState(null,"",n),D.call(this,e,t)}loginWithPopup(e){let t=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_popup",[{...e,returnTo:window.location.href,apiKey:this.sdk.apiKey,platform:"web"}]),n=this.request(t);return n.on("popup-url",()=>{window.addEventListener("message",i=>{n.emit("popup-event",i.data)})}),n}seamlessTelegramLogin(){try{if(!window.location.hash.toString().includes("#tgWebAppData"))return;let t=document.createElement("script");t.src="https://telegram.org/js/telegram-web-app.js",document.head.prepend(t),t.onload=async()=>{try{let n=window.Telegram?.WebApp.initData,i=this.utils.createJsonRpcRequestPayload("magic_oauth_verify_telegram_data",[{userData:n,isMiniApp:!0}]);await this.request(i)}catch(n){console.log("Error while verifying telegram data",n)}}}catch(e){console.log("Error while loading telegram-web-app script",e)}}};function D(r,e){return this.utils.createPromiEvent(async(t,n)=>{let i=this.utils.createJsonRpcRequestPayload("magic_oauth_login_with_redirect_verify",[{authorizationResponseParams:e,magicApiKey:this.sdk.apiKey,platform:"web",...r}]),u=await this.request(i),s=u,o=u;o.error&&n(this.createError(o.error,o.error_description??"An error occurred.",{errorURI:o.error_uri,provider:o.provider})),t(s)})}Object.assign(p,{...h});var k=p;return U(S);})();
2
2
  if (MagicOAuthExtension && MagicOAuthExtension.default != null) { MagicOAuthExtension = Object.assign(MagicOAuthExtension.default, MagicOAuthExtension); delete MagicOAuthExtension.default; }
@@ -1,5 +1,5 @@
1
1
  import { Extension } from '@magic-sdk/provider';
2
- import { OAuthRedirectError, OAuthRedirectResult, OAuthRedirectConfiguration, OAuthPopupConfiguration, OAuthVerificationConfiguration } from './types';
2
+ import { OAuthRedirectError, OAuthRedirectResult, OAuthRedirectConfiguration, OAuthPopupConfiguration, OAuthVerificationConfiguration, OAuthPopupEventHandlers } from './types';
3
3
  declare global {
4
4
  interface Window {
5
5
  Telegram?: {
@@ -31,7 +31,7 @@ export declare class OAuthExtension extends Extension.Internal<'oauth2'> {
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/provider").PromiEvent<OAuthRedirectResult | OAuthRedirectError, OAuthPopupEventHandlers & {
35
35
  done: (result: OAuthRedirectResult | OAuthRedirectError) => void;
36
36
  error: (reason: any) => void;
37
37
  settled: () => void;
@@ -104,4 +104,17 @@ export declare enum OAuthErrorCode {
104
104
  ServerError = "server_error",
105
105
  TemporarilyUnavailable = "temporarily_unavailable"
106
106
  }
107
+ export declare enum OAuthPopupEventOnReceived {
108
+ PopupUrl = "popup-url"
109
+ }
110
+ export declare enum OAuthPopupEventEmit {
111
+ PopupEvent = "popup-event"
112
+ }
113
+ export type OAuthPopupEventHandlers = {
114
+ [OAuthPopupEventEmit.PopupEvent]: (eventData: unknown) => void;
115
+ [OAuthPopupEventOnReceived.PopupUrl]: (event: {
116
+ popupUrl: string;
117
+ provider: string;
118
+ }) => void;
119
+ };
107
120
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magic-ext/oauth2",
3
- "version": "13.0.0",
3
+ "version": "13.0.1-canary.952.18785961432.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",
@@ -34,5 +34,5 @@
34
34
  "@magic-sdk/provider": "^31.0.0",
35
35
  "@types/crypto-js": "4.2.0"
36
36
  },
37
- "gitHead": "59efe20f8cfb6bb05e97334818438b7e40ecad65"
37
+ "gitHead": "b1fd9b6507000fe3f67912455d697b33b189ffaf"
38
38
  }