@transak/react-native-sdk
Version:
A React Native SDK for decentralised applications to onboard their global user base with fiat currency
1 lines • 12 kB
Source Map (JSON)
{"version":3,"sources":["../src/Constants/environments.ts","../src/Constants/events.ts","../src/TransakWebView.tsx","../src/Utils/generate-global-transak-url.ts","../src/Constants/web-app-urls.ts","../package.json"],"names":["Environments","Events","WebAppUrls","package_default","generateGlobalTransakUrl","configData","sdkName","sdkVersion","environment","queryParams","queryString","key","pako","qs"],"mappings":"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","file":"/var/lib/jenkins/workspace/npm-publish/npm-publish-by-repo/lib/index.cjs","sourcesContent":["export enum Environments {\n STAGING = 'STAGING',\n PRODUCTION = 'PRODUCTION',\n}\n","export enum Events {\n ORDER_CREATED = 'ORDER_CREATED',\n ORDER_PAYMENT_VERIFYING = 'ORDER_PAYMENT_VERIFYING',\n ORDER_PROCESSING = 'ORDER_PROCESSING',\n ORDER_COMPLETED = 'ORDER_COMPLETED',\n ORDER_FAILED = 'ORDER_FAILED',\n}\n","import { useEffect, forwardRef } from 'react';\nimport { Alert, Linking } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { InAppBrowser } from 'react-native-inappbrowser-reborn';\nimport { generateGlobalTransakUrl } from 'Utils/generate-global-transak-url';\nimport { eventListener } from 'Utils/event-listener';\nimport { TransakWebViewInputs } from 'Types/sdk-config.types';\n\nconst TransakWebView = forwardRef<WebView, TransakWebViewInputs>(({ transakConfig, onTransakEvent, ...webviewProps }, ref) => {\n const transakUrl = generateGlobalTransakUrl(transakConfig);\n const currentWebviewProps = { ...webviewProps };\n\n delete currentWebviewProps.sharedCookiesEnabled;\n delete currentWebviewProps.injectedJavaScript;\n delete currentWebviewProps.injectedJavaScriptBeforeContentLoaded;\n delete currentWebviewProps.onMessage;\n delete currentWebviewProps.mediaPlaybackRequiresUserAction;\n\n const openInAppBrowser = async (url: string) => {\n try {\n if (await InAppBrowser.isAvailable()) {\n await InAppBrowser.open(url, {\n // Android Properties\n showTitle: false,\n toolbarColor: transakConfig.themeColor ? `#${transakConfig.themeColor}` : '#2575fc',\n secondaryToolbarColor: '#ffffff',\n enableUrlBarHiding: true,\n enableDefaultShare: false,\n forceCloseOnRedirection: false,\n hasBackButton: false,\n showInRecents: false,\n // iOS Properties\n dismissButtonStyle: 'done',\n preferredBarTintColor: transakConfig.themeColor ? `#${transakConfig.themeColor}` : '#2575fc',\n preferredControlTintColor: '#ffffff',\n readerMode: false,\n animated: true,\n modalPresentationStyle: 'fullScreen',\n modalTransitionStyle: 'coverVertical',\n modalEnabled: true,\n enableBarCollapsing: false,\n });\n } else {\n await Linking.openURL(url);\n }\n } catch (error) {\n if (error instanceof Error) {\n Alert.alert(error.message);\n }\n }\n };\n\n const onMessageHandler = (event: WebViewMessageEvent) => {\n if (webviewProps.onMessage) {\n webviewProps.onMessage(event);\n }\n\n const url = event.nativeEvent.data;\n\n if (url.includes('/googlepay')) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n openInAppBrowser(url.replace('isWebView', 'useAsExternalPayment'));\n }\n\n if (url.startsWith('https://secure.plaid.com')) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n openInAppBrowser(url);\n }\n };\n\n useEffect(() => {\n const { unbindListener } = eventListener(transakConfig, onTransakEvent);\n\n return () => {\n unbindListener();\n };\n }, []);\n\n return (\n <WebView\n ref={ref}\n {...currentWebviewProps}\n originWhitelist={['*']}\n source={{ uri: transakUrl }}\n enableApplePay\n allowsInlineMediaPlayback\n mediaPlaybackRequiresUserAction={false}\n onMessage={onMessageHandler}\n />\n );\n});\n\nexport { TransakWebView };\n","import qs from 'query-string';\nimport pako from 'pako';\nimport { WebAppUrls } from 'Constants/web-app-urls';\nimport { TransakConfig } from 'Types/sdk-config.types';\nimport { Environments } from 'Constants/environments';\nimport packageJson from 'package.json';\n\nexport function generateGlobalTransakUrl(configData: TransakConfig) {\n const { name: sdkName, version: sdkVersion } = packageJson;\n const { environment = Environments.STAGING } = configData;\n const queryParams = { sdkName, sdkVersion };\n let queryString = '';\n\n (Object.keys(configData) as (keyof TransakConfig)[]).forEach((key) => {\n if (['environment', 'widgetWidth', 'widgetHeight'].includes(key)) return;\n\n if (['walletAddressesData', 'userData'].includes(key)) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n queryParams[key] = JSON.stringify(configData[key]);\n } catch (e) {\n /* empty */\n }\n\n return;\n }\n\n if (['nftData', 'sourceTokenData', 'cryptoCurrencyData', 'tokenData'].includes(key)) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n queryParams[key] = btoa(JSON.stringify(configData[key]));\n } catch (e) {\n /* empty */\n }\n\n return;\n }\n\n if (['calldata'].includes(key)) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n queryParams[key] = btoa(String.fromCharCode.apply(null, pako.deflate(configData[key])));\n } catch (e) {\n /* empty */\n }\n\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n queryParams[key] = configData[key];\n });\n\n queryString = qs.stringify(queryParams, { arrayFormat: 'comma' });\n\n return `${WebAppUrls[environment]}?${queryString}`;\n}\n","import { Environments } from './environments';\n\nexport const WebAppUrls = {\n DEVELOPMENT: 'https://<enter-system-ip>:5005/',\n DEV: 'https://global-dev.transak.com',\n DEV_IFRAME: 'https://global-iframe-dev.transak.com',\n BETA: 'https://global-beta.transak.com',\n [Environments.STAGING]: 'https://global-stg.transak.com',\n [Environments.PRODUCTION]: 'https://global.transak.com',\n};\n","{\n \"name\": \"@transak/react-native-sdk\",\n \"version\": \"2.1.0\",\n \"description\": \"A React Native SDK for decentralised applications to onboard their global user base with fiat currency\",\n \"type\": \"module\",\n \"types\": \"lib/index.d.ts\",\n \"main\": \"lib/index.cjs\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./lib/index.d.ts\",\n \"default\": \"./lib/index.js\"\n },\n \"require\": {\n \"types\": \"./lib/index.d.cts\",\n \"default\": \"./lib/index.cjs\"\n }\n }\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"packageManager\": \"pnpm@9.5.0+sha512.140036830124618d624a2187b50d04289d5a087f326c9edfc0ccd733d76c4f52c3a313d4fc148794a2a9d81553016004e6742e8cf850670268a7387fc220c903\",\n \"files\": [\n \"lib/**/*\"\n ],\n \"scripts\": {\n \"eslint\": \"eslint . --ext .ts,.tsx\",\n \"eslint:fix\": \"pnpm eslint --fix\",\n \"build\": \"tsc && tsup\",\n \"prepack\": \"pnpm build\",\n \"packDev\": \"pnpm pack\"\n },\n \"author\": \"Transak\",\n \"license\": \"ISC\",\n \"homepage\": \"https://docs.transak.com/docs/react-native-integration#transak-react-native-sdk\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Transak/react-native-sdk\"\n },\n \"peerDependencies\": {\n \"@react-native-community/netinfo\": \"*\",\n \"@types/react\": \"*\",\n \"react\": \"*\",\n \"react-native\": \"*\",\n \"react-native-inappbrowser-reborn\": \"*\",\n \"react-native-webview\": \"*\"\n },\n \"dependencies\": {\n \"pako\": \"^2.1.0\",\n \"pusher-js\": \"^8.3.0\",\n \"query-string\": \"^8.2.0\"\n },\n \"devDependencies\": {\n \"@types/pako\": \"^2.0.3\",\n \"@types/react\": \"^18.2.57\",\n \"eslint\": \"^8.56.0\",\n \"eslint-config-airbnb-base\": \"^15.0.0\",\n \"eslint-config-airbnb-typescript\": \"^17.1.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"eslint-plugin-eslint-comments\": \"^3.2.0\",\n \"eslint-plugin-import\": \"^2.29.1\",\n \"eslint-plugin-no-relative-import-paths\": \"^1.5.3\",\n \"eslint-plugin-prettier\": \"^5.1.3\",\n \"eslint-plugin-promise\": \"^6.1.1\",\n \"prettier\": \"^3.2.5\",\n \"tsup\": \"^8.0.2\",\n \"typescript\": \"^5.3.3\"\n },\n \"keywords\": [\n \"crypto\",\n \"cryptocurrency\",\n \"fiat\",\n \"on\",\n \"off\",\n \"ramp\",\n \"sdk\",\n \"react-native\"\n ]\n}\n"]}