/
ManagedSessionUrlProvider.js.map
1 lines (1 loc) · 7.68 KB
/
ManagedSessionUrlProvider.js.map
1
{"version":3,"file":"ManagedSessionUrlProvider.js","sourceRoot":"","sources":["../src/ManagedSessionUrlProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import Constants from 'expo-constants';\nimport qs from 'qs';\n\nimport { SessionUrlProvider } from './SessionUrlProvider';\n\nconst { manifest } = Constants;\n\nexport class ManagedSessionUrlProvider implements SessionUrlProvider {\n private static readonly BASE_URL = `https://auth.expo.io`;\n private static readonly SESSION_PATH = 'expo-auth-session';\n private static readonly USES_CUSTOM_SCHEME =\n Constants.appOwnership === 'standalone' && manifest.scheme;\n\n getDefaultReturnUrl(urlPath?: string): string {\n const hostAddress = ManagedSessionUrlProvider.getHostAddress();\n const isExpoHosted =\n hostAddress.hostUri &&\n (/^(.*\\.)?(expo\\.io|exp\\.host|exp\\.direct|expo\\.test)(:.*)?(\\/.*)?$/.test(\n hostAddress.hostUri\n ) ||\n manifest.developer);\n\n let scheme = 'exp';\n let path = ManagedSessionUrlProvider.SESSION_PATH;\n const manifestScheme = manifest.scheme || (manifest.detach && manifest.detach.scheme);\n\n if (Constants.appOwnership === 'standalone' && manifestScheme) {\n scheme = manifestScheme;\n } else if (Constants.appOwnership === 'standalone' && !manifestScheme) {\n throw new Error(\n 'Cannot make a deep link into a standalone app with no custom scheme defined'\n );\n } else if (Constants.appOwnership === 'expo' && !manifestScheme) {\n console.warn(\n 'Linking requires that you provide a `scheme` in app.json for standalone apps - if it is left blank, your app may crash. The scheme does not apply to development in the Expo client but you should add it as soon as you start working with Linking to avoid creating a broken build. Add a `scheme` to silence this warning. Learn more about Linking at https://docs.expo.io/versions/latest/workflow/linking/'\n );\n }\n\n let hostUri = hostAddress.hostUri || '';\n if (ManagedSessionUrlProvider.USES_CUSTOM_SCHEME && isExpoHosted) {\n hostUri = '';\n }\n\n if (path) {\n if (isExpoHosted && hostUri) {\n path = `/--/${ManagedSessionUrlProvider.removeLeadingSlash(path)}`;\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n } else {\n path = '';\n }\n\n if (urlPath) {\n path = [path, urlPath].filter(Boolean).join('/');\n }\n\n let { parameters } = hostAddress;\n if (parameters) {\n parameters = `?${parameters}`;\n } else {\n parameters = '';\n }\n\n hostUri = ManagedSessionUrlProvider.removeTrailingSlash(hostUri);\n return encodeURI(`${scheme}://${hostUri}${path}${parameters}`);\n }\n\n getStartUrl(authUrl: string, returnUrl: string): string {\n const queryString = qs.stringify({\n authUrl,\n returnUrl,\n });\n\n return `${this.getRedirectUrl()}/start?${queryString}`;\n }\n\n getRedirectUrl(): string {\n const redirectUrl = `${ManagedSessionUrlProvider.BASE_URL}/${manifest.id}`;\n if (__DEV__) {\n ManagedSessionUrlProvider.warnIfAnonymous(manifest.id, redirectUrl);\n }\n return redirectUrl;\n }\n\n private static getHostAddress(): { hostUri: string; parameters: string | undefined } {\n let hostUri: string = Constants.manifest.hostUri;\n if (!hostUri && !ManagedSessionUrlProvider.USES_CUSTOM_SCHEME) {\n // we're probably not using up-to-date xdl, so just fake it for now\n // we have to remove the /--/ on the end since this will be inserted again later\n hostUri = ManagedSessionUrlProvider.removeScheme(Constants.linkingUri).replace(\n /\\/--(\\/.*)?$/,\n ''\n );\n }\n\n const uriParts = hostUri?.split('?');\n const parameters = uriParts?.[1];\n if (uriParts?.length > 0) {\n hostUri = uriParts[0];\n }\n\n return { hostUri, parameters };\n }\n\n private static warnIfAnonymous(id, url): void {\n if (id.startsWith('@anonymous/')) {\n console.warn(\n `You are not currently signed in to Expo on your development machine. As a result, the redirect URL for AuthSession will be \"${url}\". If you are using an OAuth provider that requires whitelisting redirect URLs, we recommend that you do not whitelist this URL -- instead, you should sign in to Expo to acquired a unique redirect URL. Additionally, if you do decide to publish this app using Expo, you will need to register an account to do it.`\n );\n }\n }\n\n private static removeScheme(url: string) {\n return url.replace(/^[a-zA-Z0-9+.-]+:\\/\\//, '');\n }\n\n private static removeLeadingSlash(url: string) {\n return url.replace(/^\\//, '');\n }\n\n private static removeTrailingSlash(url: string) {\n return url.replace(/\\/$/, '');\n }\n}\n"]}