UNPKG

@transak/transak-sdk

Version:

Transak SDK that allows you to easily integrate fiat on/off ramp

1 lines 15.2 kB
{"version":3,"sources":["../src/transak.ts","../src/Constants/environments.ts","../src/Constants/events.ts","../src/Utils/generate-global-transak-url.ts","../src/Constants/web-app-urls.ts","../package.json","../src/Components/custom-container/generate-custom-container-css.ts","../src/Assets/svg/close-icon.ts","../src/Components/modal/generate-modal-css.ts"],"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":["import events from 'events';\nimport { Environments } from 'Constants/environments';\nimport { Events } from 'Constants/events';\nimport { renderIframeInCustomContainer } from 'Components/custom-container/render-iframe-in-custom-container';\nimport { makeHandleEvents } from 'Utils/handle-events';\nimport { renderIframeInModal } from 'Components/modal/render-iframe-in-modal';\nimport { TransakConfig } from 'Types/sdk-config.types';\n\nconst eventEmitter = new events.EventEmitter();\n\nclass Transak {\n readonly #config: TransakConfig;\n\n #styleElement?: HTMLStyleElement;\n\n #rootElement?: HTMLDivElement;\n\n #iframeElement?: HTMLIFrameElement;\n\n #handleMessage: (event: MessageEvent<{ event_id: Events; data: unknown }>) => void;\n\n #isInitialized = false;\n\n static readonly ENVIRONMENTS = Environments;\n\n static readonly EVENTS = Events;\n\n constructor(transakConfig: TransakConfig) {\n if (!transakConfig?.apiKey) throw new Error('[Transak SDK] => Please enter your API Key');\n\n this.#config = transakConfig;\n this.#handleMessage = makeHandleEvents(eventEmitter);\n }\n\n static on = (type: '*' | keyof typeof Events, cb: (data: unknown) => void) => {\n if (type === '*') {\n (Object.keys(Events) as (keyof typeof Events)[]).forEach((eventName) => {\n eventEmitter.on(Events[eventName], cb);\n });\n } else if (Events[type]) {\n eventEmitter.on(type, cb);\n }\n };\n\n init = () => {\n if (!this.#isInitialized) {\n this.#renderIframe();\n this.#isInitialized = true;\n }\n };\n\n cleanup = () => {\n this.#styleElement?.remove();\n this.#removeEventListener();\n this.#iframeElement?.remove();\n this.#isInitialized = false;\n };\n\n close = () => {\n this.#styleElement?.remove();\n this.#rootElement?.remove();\n this.#removeEventListener();\n this.#iframeElement = undefined;\n this.#isInitialized = false;\n };\n\n getUser = () => {\n this.#iframeElement?.contentWindow?.postMessage({ event_id: Events.TRANSAK_GET_USER_REQUEST }, '*');\n };\n\n logoutUser = () => {\n this.#iframeElement?.contentWindow?.postMessage({ event_id: Events.TRANSAK_LOGOUT_USER_REQUEST }, '*');\n };\n\n #renderIframe = () => {\n window.addEventListener('message', this.#handleMessage);\n\n if (this.#config.containerId) {\n const { styleElement, iframeElement } = renderIframeInCustomContainer(this.#config);\n\n this.#styleElement = styleElement;\n this.#iframeElement = iframeElement;\n } else {\n const { styleElement, rootElement, iframeElement } = renderIframeInModal(this.#config, this.#closeRequest);\n\n this.#styleElement = styleElement;\n this.#rootElement = rootElement;\n this.#iframeElement = iframeElement;\n }\n };\n\n #closeRequest = () => {\n this.#iframeElement?.contentWindow?.postMessage({ event_id: Events.TRANSAK_WIDGET_CLOSE_REQUEST }, '*');\n };\n\n #removeEventListener = () => {\n eventEmitter.removeAllListeners();\n window.removeEventListener('message', this.#handleMessage);\n };\n}\n\nexport { Transak };\n","export enum Environments {\n DEVELOPMENT = 'DEVELOPMENT',\n STAGING = 'STAGING',\n PRODUCTION = 'PRODUCTION',\n}\n","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_REQUEST = 'TRANSAK_WIDGET_CLOSE_REQUEST',\n TRANSAK_WIDGET_CLOSE = 'TRANSAK_WIDGET_CLOSE',\n TRANSAK_USER_INFO_RECEIVED = 'TRANSAK_USER_INFO_RECEIVED',\n TRANSAK_GET_USER_REQUEST = 'TRANSAK_GET_USER_REQUEST',\n TRANSAK_LOGOUT_USER_REQUEST = 'TRANSAK_LOGOUT_USER_REQUEST',\n}\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 [Environments.DEVELOPMENT]: 'https://localhost:5005/',\n [Environments.STAGING]: 'https://global-stg.transak.com',\n [Environments.PRODUCTION]: 'https://global.transak.com',\n};\n","{\n \"name\": \"@transak/transak-sdk\",\n \"version\": \"3.2.0\",\n \"description\": \"Transak SDK that allows you to easily integrate fiat on/off ramp\",\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@10.0.0+sha512.b8fef5494bd3fe4cbd4edabd0745df2ee5be3e4b0b8b08fa643aa3e4c6702ccc0f00d68fa8a8c9858a735a0032485a44990ed2810526c875e416f001b17df12b\",\n \"files\": [\n \"lib/**/*\"\n ],\n \"scripts\": {\n \"eslint\": \"eslint . --ext .ts\",\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/web-integration#transak-sdk-reactvueangularts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Transak/transak-sdk\"\n },\n \"dependencies\": {\n \"events\": \"^3.3.0\",\n \"pako\": \"^2.1.0\",\n \"query-string\": \"^9.1.1\"\n },\n \"devDependencies\": {\n \"@types/events\": \"^3.0.3\",\n \"@types/pako\": \"^2.0.3\",\n \"@typescript-eslint/eslint-plugin\": \"^7.18.0\",\n \"@typescript-eslint/parser\": \"^7.18.0\",\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.0.1\",\n \"eslint-plugin-eslint-comments\": \"^3.2.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-no-relative-import-paths\": \"^1.6.1\",\n \"eslint-plugin-prettier\": \"^5.2.3\",\n \"eslint-plugin-promise\": \"^7.2.1\",\n \"prettier\": \"^3.4.2\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"5.5.4\"\n },\n \"keywords\": [\n \"crypto\",\n \"cryptocurrency\",\n \"fiat\",\n \"on\",\n \"off\",\n \"ramp\",\n \"sdk\",\n \"ts\",\n \"js\"\n ]\n}\n","export function generateCustomContainerCss() {\n return `\n #transakIframe{\n width: 100%;\n height: 100%;\n border: none;\n }\n `;\n}\n","const closeIcon = `\n <svg id=\"transakCloseIcon\" viewBox=\"0 0 612 612\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M306,0C136.992,0,0,136.992,0,306s136.992,306,306,306c168.988,0,306-137.012,306-306S475.008,0,306,0z M414.19,387.147\n c7.478,7.478,7.478,19.584,0,27.043c-7.479,7.478-19.584,7.478-27.043,0l-81.032-81.033l-81.588,81.588\n c-7.535,7.516-19.737,7.516-27.253,0c-7.535-7.535-7.535-19.737,0-27.254l81.587-81.587l-81.033-81.033\n c-7.478-7.478-7.478-19.584,0-27.042c7.478-7.478,19.584-7.478,27.042,0l81.033,81.033l82.181-82.18\n c7.535-7.535,19.736-7.535,27.253,0c7.535,7.535,7.535,19.737,0,27.253l-82.181,82.181L414.19,387.147z\" />\n </svg>\n`;\n\nexport { closeIcon };\n","export function generateModalCss(themeColor: string, width: string, height: string) {\n const closeIconHeight = 36;\n const closeIconHeightOnePart = 36 / 3;\n const closeIconHeightTwoParts = (36 / 3) * 2;\n\n return `\n #transakRoot {\n z-index: 9997;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: rgba(0, 0, 0, 0.6);\n }\n\n #transakModal {\n z-index: 9998;\n position: fixed;\n width: ${width};\n height: calc(${height} - ${closeIconHeightTwoParts}px);\n top: 50%;\n left: 50%;\n transform: translate(-50%, calc(-50% - ${closeIconHeightOnePart}px));\n margin-top: ${closeIconHeightTwoParts}px;\n }\n\n #transakCloseIcon {\n z-index: 9999;\n position: absolute;\n width: 36px;\n height: ${closeIconHeight}px;\n top: -${closeIconHeightTwoParts}px;\n right: 0;\n transition: 0.5s;\n color: #${themeColor};\n background: white;\n border-radius: 50%;\n }\n\n #transakCloseIcon:hover,\n #transakCloseIcon:focus {\n color: white;\n background: #${themeColor};\n cursor: pointer;\n }\n\n #transakIframe{\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 10px;\n background: white;\n }\n\n @media screen and (max-width: 600px) {\n #transakModal {\n width: 100%;\n height: calc(100% - ${closeIconHeightTwoParts}px);\n }\n\n #transakIframe{\n border-radius: 10px 10px 0 0;\n }\n }\n `;\n}\n"]}