{"version":3,"sources":["../src/Constants/events.ts","../src/TransakWebView.tsx","../src/Utils/generate-global-transak-url.ts","../package.json","../src/Utils/validate-url.ts"],"names":["Events","package_default","isValidURL","url","validateURL","generateGlobalTransakUrl","configData","sdkName","sdkVersion","widgetUrl","referrer","urlString","qs","TransakWebView","forwardRef","transakConfig","onTransakEvent","webviewProps","ref","transakUrl","currentWebviewProps","openInAppBrowser","InAppBrowser"],"mappings":"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","file":"/var/lib/jenkins/workspace/npm-publish/npm-publish-by-repo/lib/index.cjs","sourcesContent":["export enum Events {\n  TRANSAK_WIDGET_INITIALISED = 'TRANSAK_WIDGET_INITIALISED',\n  TRANSAK_ORDER_CREATED = 'TRANSAK_ORDER_CREATED',\n  TRANSAK_ORDER_SUCCESSFUL = 'TRANSAK_ORDER_SUCCESSFUL',\n  TRANSAK_ORDER_CANCELLED = 'TRANSAK_ORDER_CANCELLED',\n  TRANSAK_ORDER_FAILED = 'TRANSAK_ORDER_FAILED',\n  TRANSAK_WALLET_REDIRECTION = 'TRANSAK_WALLET_REDIRECTION',\n  TRANSAK_WIDGET_CLOSE = 'TRANSAK_WIDGET_CLOSE',\n}\n","import { 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 { validateURL } from 'Utils/validate-url';\nimport { Events } from 'Constants/events';\nimport { TransakWebViewInputs } from 'Types/sdk-config.types';\nimport { EventTypes } from 'Types/events.types';\n\nconst TransakWebView = forwardRef<WebView, TransakWebViewInputs>(({ transakConfig, onTransakEvent, ...webviewProps }, ref) => {\n  const transakUrl = generateGlobalTransakUrl(transakConfig);\n  const referrer = validateURL(transakConfig.referrer);\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          includeReferrer: true,\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 { data } = event.nativeEvent || {};\n\n    if (data?.includes('/googlepay')) {\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      openInAppBrowser(data.replace('isWebView', 'useAsExternalPayment'));\n      return;\n    }\n\n    if (data?.startsWith('https://secure.plaid.com')) {\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      openInAppBrowser(data);\n      return;\n    }\n\n    if (onTransakEvent) {\n      try {\n        const parsedData = JSON.parse(data) as EventTypes;\n\n        if (parsedData.event_id && Object.values(Events).includes(parsedData.event_id)) {\n          const { event_id: eventId, data: eventData } = parsedData || {};\n\n          onTransakEvent(eventId, eventData);\n        }\n      } catch (error) {\n        throw new Error('Invalid transak event');\n      }\n    }\n  };\n\n  return (\n    <WebView\n      ref={ref}\n      {...currentWebviewProps}\n      originWhitelist={['*']}\n      source={{\n        uri: transakUrl,\n        headers: { Referrer: referrer },\n      }}\n      enableApplePay\n      allowsInlineMediaPlayback\n      mediaPlaybackRequiresUserAction={false}\n      onMessage={onMessageHandler}\n    />\n  );\n});\n\nexport { TransakWebView };\n","import qs from 'query-string';\nimport packageJson from 'package.json';\nimport { validateURL, isValidURL } from 'Utils/validate-url';\nimport { TransakConfig } from 'Types/sdk-config.types';\n\nexport function generateGlobalTransakUrl(configData: TransakConfig) {\n  const { name: sdkName, version: sdkVersion } = packageJson;\n  const { widgetUrl, referrer } = configData || {};\n\n  if (!isValidURL(widgetUrl) || !isValidURL(referrer)) {\n    throw new Error('widgetUrl and referrer are required and must be valid URL!');\n  }\n\n  const urlString = qs.stringifyUrl(\n    {\n      url: widgetUrl,\n      query: { sdkName, sdkVersion },\n    },\n    { arrayFormat: 'comma' },\n  );\n\n  return validateURL(urlString);\n}\n","{\n  \"name\": \"@transak/react-native-sdk\",\n  \"version\": \"3.0.2\",\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\": \">=20.0.0\"\n  },\n  \"packageManager\": \"pnpm@10.16.1+sha512.0e155aa2629db8672b49e8475da6226aa4bdea85fdcdfdc15350874946d4f3c91faaf64cbdc4a5d1ab8002f473d5c3fcedcd197989cf0390f9badd3c04678706\",\n  \"files\": [\n    \"lib/**/*\"\n  ],\n  \"scripts\": {\n    \"eslint\": \"eslint . --ext .ts,.tsx --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  \"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    \"query-string\": \"^9.3.0\"\n  },\n  \"devDependencies\": {\n    \"eslint\": \"~8.57.1\",\n    \"eslint-config-airbnb-base\": \"^15.0.0\",\n    \"eslint-config-airbnb-typescript\": \"^18.0.0\",\n    \"eslint-config-prettier\": \"^10.1.8\",\n    \"eslint-plugin-eslint-comments\": \"^3.2.0\",\n    \"eslint-plugin-import\": \"^2.32.0\",\n    \"eslint-plugin-no-relative-import-paths\": \"^1.6.1\",\n    \"eslint-plugin-prettier\": \"^5.5.4\",\n    \"eslint-plugin-promise\": \"^7.2.1\",\n    \"prettier\": \"^3.6.2\",\n    \"tsup\": \"^8.5.0\",\n    \"typescript\": \"~5.5.4\"\n  },\n  \"keywords\": [\n    \"crypto\",\n    \"cryptocurrency\",\n    \"fiat\",\n    \"on\",\n    \"off\",\n    \"ramp\",\n    \"sdk\",\n    \"react-native\"\n  ]\n}\n","const isValidURL = (url: string): boolean => {\n  if (!url) {\n    return false;\n  }\n\n  try {\n    const urlObject = new URL(url);\n\n    return Boolean(urlObject);\n  } catch (error) {\n    return false;\n  }\n};\n\nconst validateURL = (url: string) => {\n  if (!isValidURL(url)) {\n    throw new Error('Invalid URL');\n  }\n\n  return url;\n};\n\nexport { validateURL, isValidURL };\n"]}