@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 +1 -1
- package/dist/cjs/index.js.map +3 -3
- package/dist/es/index.js +1 -1
- package/dist/es/index.js.map +3 -3
- package/dist/es/index.mjs +1 -1
- package/dist/es/index.mjs.map +3 -3
- package/dist/extension.js +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/types.d.ts +13 -0
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
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
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,mBAAAC,EAAA,wBAAAC,IAAA,eAAAC,
|
|
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
|
|
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
|
package/dist/es/index.js.map
CHANGED
|
@@ -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
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,sBCEnB,IAAKC,OACVA,EAAA,MAAQ,wCACRA,EAAA,OAAS,yCACTA,EAAA,MAAQ,+BACRA,EAAA,mBAAqB,mCAJXA,OAAA,IAsHAC,OACVA,EAAA,eAAiB,kBACjBA,EAAA,cAAgB,iBAChBA,EAAA,aAAe,gBACfA,EAAA,aAAe,gBACfA,EAAA,mBAAqB,sBACrBA,EAAA,wBAA0B,4BAC1BA,EAAA,qBAAuB,yBACvBA,EAAA,qBAAuB,yBACvBA,EAAA,aAAe,gBACfA,EAAA,YAAc,eACdA,EAAA,uBAAyB,0BAXfA,OAAA,
|
|
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
|
|
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
|
package/dist/es/index.mjs.map
CHANGED
|
@@ -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
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,sBCEnB,IAAKC,OACVA,EAAA,MAAQ,wCACRA,EAAA,OAAS,yCACTA,EAAA,MAAQ,+BACRA,EAAA,mBAAqB,mCAJXA,OAAA,IAsHAC,OACVA,EAAA,eAAiB,kBACjBA,EAAA,cAAgB,iBAChBA,EAAA,aAAe,gBACfA,EAAA,aAAe,gBACfA,EAAA,mBAAqB,sBACrBA,EAAA,wBAA0B,4BAC1BA,EAAA,qBAAuB,yBACvBA,EAAA,qBAAuB,yBACvBA,EAAA,aAAe,gBACfA,EAAA,YAAc,eACdA,EAAA,uBAAyB,0BAXfA,OAAA,
|
|
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
|
|
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; }
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -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": "
|
|
37
|
+
"gitHead": "b1fd9b6507000fe3f67912455d697b33b189ffaf"
|
|
38
38
|
}
|