@getpara/react-common 2.18.0 → 2.19.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.
@@ -1,5 +1,3 @@
1
- export * from './MoonPayEmbed.js';
2
- export * from './RampEmbed.js';
3
1
  export * from './common.js';
4
2
  export * from './HeroSpinner.js';
5
3
  export * from './KnownDevices.js';
@@ -1,6 +1,4 @@
1
1
  "use client";
2
- export * from "./MoonPayEmbed.js";
3
- export * from "./RampEmbed.js";
4
2
  export * from "./common.js";
5
3
  export * from "./HeroSpinner.js";
6
4
  export * from "./KnownDevices.js";
@@ -1,19 +1,6 @@
1
- import { AuthInfo, OnRampPurchaseUpdateParams } from '@getpara/user-management-client';
2
- import { OfframpDepositRequest, type OnRampConfig, type OnRampPurchase } from '@getpara/web-sdk';
1
+ import { AuthInfo } from '@getpara/user-management-client';
3
2
  export * from './externalWalletCommon.js';
4
3
  export * from './commonTypes.js';
5
- export type OnRampProps = {
6
- appName?: string;
7
- email?: string;
8
- isDark?: boolean;
9
- isEmbedded?: boolean;
10
- onClose?: () => void;
11
- onRampConfig: OnRampConfig;
12
- onRampPurchase: OnRampPurchase;
13
- onDepositRequest: (_: OfframpDepositRequest) => Promise<string>;
14
- onUpdate: (_: OnRampPurchaseUpdateParams) => Promise<void>;
15
- onSuccess: (_: OnRampPurchaseUpdateParams) => Promise<void>;
16
- };
17
4
  export type ModalAuthInfo = AuthInfo & Partial<{
18
5
  pfpUrl: string | null;
19
6
  displayName: string | null;
@@ -1,37 +1,6 @@
1
- import { TOnRampAsset, OnRampAssetInfo, OnRampProvider, TNetwork, OnRampPurchaseType, OnRampConfig, TWalletType } from '@getpara/user-management-client';
2
- export declare function getCurrencyCode({ assetInfo }: OnRampConfig, { network, asset, provider }: {
3
- network: TNetwork;
4
- asset: TOnRampAsset;
5
- provider: OnRampProvider;
6
- }): string | undefined;
7
- export declare function getCurrencyCodes({ assetInfo, allowedAssets, defaultOnRampNetwork, defaultOnRampAsset }: OnRampConfig, { provider, purchaseType, walletType, }: {
8
- provider: OnRampProvider;
9
- purchaseType: OnRampPurchaseType;
10
- walletType: TWalletType;
11
- }): {
12
- currencyCodes: string[];
13
- defaultCurrencyCode?: string;
14
- };
15
- export declare function reverseCurrencyLookup(data: OnRampAssetInfo, provider: OnRampProvider, code: string): [TNetwork, TOnRampAsset];
16
- export declare const TestNetworks: {
17
- main: TNetwork;
18
- test: TNetwork;
19
- }[];
20
- export declare function getNetworkTestEquivalent(network: TNetwork): TNetwork | undefined;
1
+ import { TNetwork } from '@getpara/user-management-client';
21
2
  export declare function getNetworkOrMainNetEquivalent(network: TNetwork, testMode?: boolean): TNetwork;
22
- export declare const NetworkChainIds: {
23
- chainId: string;
24
- network: TNetwork;
25
- }[];
26
- export declare function getChainId(network: TNetwork): string | undefined;
27
3
  export declare function getNetworkFromChainId(chainId?: string | undefined): TNetwork | undefined;
28
- export declare const NetworkAssetAddresses: {
29
- network: TNetwork;
30
- asset: TOnRampAsset;
31
- address: string;
32
- }[];
33
- export declare function getAssetFromContractAddress(network: TNetwork, contractAddress: string): TOnRampAsset | undefined;
34
- export declare function getContractAddressFromAsset(network: TNetwork, asset: TOnRampAsset): string | undefined;
35
4
  export * from './getDeviceLogo.js';
36
5
  export * from './getDeviceModelName.js';
37
6
  export * from './getBrowserName.js';
@@ -1,50 +1,9 @@
1
1
  "use client";
2
- import {
3
- __spreadValues
4
- } from "../chunk-MMUBH76A.js";
5
- import { getOnRampNetworks, getOnRampAssets, toAssetInfoArray } from "@getpara/core-sdk";
6
- function getCurrencyCode({ assetInfo }, { network, asset, provider }) {
7
- var _a, _b, _c;
8
- return (_c = (_b = (_a = Object.values(assetInfo).reduce((acc, record) => __spreadValues(__spreadValues({}, acc), record), {})[network]) == null ? void 0 : _a[asset]) == null ? void 0 : _b[provider]) == null ? void 0 : _c[0];
9
- }
10
- function getCurrencyCodes({ assetInfo, allowedAssets, defaultOnRampNetwork, defaultOnRampAsset }, {
11
- provider,
12
- purchaseType,
13
- walletType
14
- }) {
15
- let defaultCurrencyCode;
16
- const currencyCodes = getOnRampNetworks(assetInfo, {
17
- walletType,
18
- allowed: allowedAssets ? Object.keys(allowedAssets) : void 0
19
- }).sort((a, b) => a === defaultOnRampNetwork ? -1 : b === defaultOnRampNetwork ? 1 : 0).reduce((acc, network) => {
20
- const allowed = Array.isArray(allowedAssets == null ? void 0 : allowedAssets[network]) ? allowedAssets[network] : void 0;
21
- return [
22
- ...acc,
23
- ...getOnRampAssets(assetInfo, { walletType, network, allowed }).sort((a, b) => a === defaultOnRampAsset ? -1 : b === defaultOnRampAsset ? 1 : 0).map((asset) => {
24
- var _a, _b, _c, _d, _e, _f;
25
- if (network === defaultOnRampNetwork && asset === defaultOnRampAsset) {
26
- defaultCurrencyCode = (_c = (_b = (_a = assetInfo[walletType]) == null ? void 0 : _a[network]) == null ? void 0 : _b[asset]) == null ? void 0 : _c[provider][0];
27
- }
28
- return (_f = (_e = (_d = assetInfo[walletType]) == null ? void 0 : _d[network]) == null ? void 0 : _e[asset]) == null ? void 0 : _f[provider];
29
- }).filter((entry) => !!entry && !!entry[1][purchaseType]).map(([code]) => code)
30
- ];
31
- }, []).filter((code) => !!code);
32
- return { currencyCodes, defaultCurrencyCode: defaultCurrencyCode || currencyCodes[0] };
33
- }
34
- function reverseCurrencyLookup(data, provider, code) {
35
- const row = toAssetInfoArray(data).find(
36
- ([_, __, ___, providers]) => [code.toUpperCase(), code.toLowerCase()].includes(providers[provider][0])
37
- );
38
- return [row == null ? void 0 : row[1], row == null ? void 0 : row[2]];
39
- }
2
+ import "../chunk-MMUBH76A.js";
40
3
  const TestNetworks = [
41
4
  { main: "ETHEREUM", test: "SEPOLIA" },
42
5
  { main: "SOLANA", test: "SOLANA_DEVNET" }
43
6
  ];
44
- function getNetworkTestEquivalent(network) {
45
- var _a;
46
- return (_a = TestNetworks.find(({ main }) => main === network)) == null ? void 0 : _a.test;
47
- }
48
7
  function getNetworkOrMainNetEquivalent(network, testMode) {
49
8
  var _a, _b;
50
9
  return testMode ? (_b = (_a = TestNetworks.find(({ test }) => test === network)) == null ? void 0 : _a.main) != null ? _b : network : network;
@@ -58,44 +17,10 @@ const NetworkChainIds = [
58
17
  { chainId: "42161", network: "ARBITRUM" },
59
18
  { chainId: "10", network: "OPTIMISM" }
60
19
  ];
61
- function getChainId(network) {
62
- var _a, _b;
63
- return (_b = (_a = NetworkChainIds.find(({ network: n }) => n === network)) == null ? void 0 : _a.chainId) != null ? _b : void 0;
64
- }
65
20
  function getNetworkFromChainId(chainId) {
66
21
  var _a;
67
22
  return chainId ? (_a = NetworkChainIds.find(({ chainId: c }) => c === chainId)) == null ? void 0 : _a.network : void 0;
68
23
  }
69
- const ETH_CONTRACT_ADDRESS = "0x0000000000000000000000000000000000000000";
70
- const NetworkAssetAddresses = [
71
- { network: "ETHEREUM", asset: "USDC", address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" },
72
- { network: "POLYGON", asset: "USDC", address: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" },
73
- { network: "CELO", asset: "USDC", address: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C" },
74
- { network: "BASE", asset: "USDC", address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" },
75
- { network: "ARBITRUM", asset: "USDC", address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" },
76
- { network: "OPTIMISM", asset: "USDC", address: "0x0b2c639c533813f4aa9d7837caf62653d097ff85" },
77
- { network: "SOLANA", asset: "USDC", address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" },
78
- { network: "SOLANA_DEVNET", asset: "USDC", address: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU" },
79
- { network: "SEPOLIA", asset: "USDC", address: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" },
80
- { network: "SOLANA_DEVNET", asset: "TETHER", address: "EJwZgeZrdC8TXTQbQBoL6bfuAnFUUy1PVCMB4DYPzVaS" }
81
- ];
82
- function getAssetFromContractAddress(network, contractAddress) {
83
- var _a, _b;
84
- if (contractAddress === ETH_CONTRACT_ADDRESS) {
85
- return "USDC";
86
- }
87
- const checkNetworks = [network, (_a = getNetworkOrMainNetEquivalent(network)) != null ? _a : void 0].filter((n) => !!n).map((n) => n);
88
- return (_b = NetworkAssetAddresses.find(
89
- (row) => checkNetworks.includes(row.network) && row.asset.toLowerCase() === contractAddress.toLowerCase()
90
- )) == null ? void 0 : _b.asset;
91
- }
92
- function getContractAddressFromAsset(network, asset) {
93
- var _a;
94
- if (asset === "USDC") {
95
- return ETH_CONTRACT_ADDRESS;
96
- }
97
- return (_a = NetworkAssetAddresses.find((row) => row.network === network && row.asset === asset)) == null ? void 0 : _a.address;
98
- }
99
24
  export * from "./getDeviceLogo.js";
100
25
  export * from "./getDeviceModelName.js";
101
26
  export * from "./getBrowserName.js";
@@ -105,16 +30,6 @@ export * from "./getExternalWalletIcon.js";
105
30
  export * from "./safeStyled.js";
106
31
  export * from "./openMobileUrl.js";
107
32
  export {
108
- NetworkAssetAddresses,
109
- NetworkChainIds,
110
- TestNetworks,
111
- getAssetFromContractAddress,
112
- getChainId,
113
- getContractAddressFromAsset,
114
- getCurrencyCode,
115
- getCurrencyCodes,
116
33
  getNetworkFromChainId,
117
- getNetworkOrMainNetEquivalent,
118
- getNetworkTestEquivalent,
119
- reverseCurrencyLookup
34
+ getNetworkOrMainNetEquivalent
120
35
  };
package/package.json CHANGED
@@ -1,11 +1,9 @@
1
1
  {
2
2
  "name": "@getpara/react-common",
3
- "version": "2.18.0",
3
+ "version": "2.19.0",
4
4
  "dependencies": {
5
- "@getpara/react-components": "2.18.0",
6
- "@getpara/web-sdk": "2.18.0",
7
- "@moonpay/moonpay-react": "^1.10.6",
8
- "@ramp-network/ramp-instant-sdk": "^4.0.5",
5
+ "@getpara/react-components": "2.19.0",
6
+ "@getpara/web-sdk": "2.19.0",
9
7
  "framer-motion": "^11.3.31",
10
8
  "libphonenumber-js": "^1.11.7",
11
9
  "styled-components": "^6",
@@ -38,5 +36,5 @@
38
36
  ],
39
37
  "type": "module",
40
38
  "types": "dist/index.d.ts",
41
- "gitHead": "4481f6f4e108e682d14c74d4433696141c47fc58"
39
+ "gitHead": "7dc9400777adb653c0cc28e0d9236424eb384467"
42
40
  }
@@ -1,5 +0,0 @@
1
- import { OnRampProps } from '../types/index.js';
2
- export declare const MoonPayEmbed: ({ email, isDark, isEmbedded, onRampConfig, onRampPurchase, onSuccess, onDepositRequest, onUrlSignatureRequest, }: OnRampProps & {
3
- onUrlSignatureRequest: (url: string) => Promise<string>;
4
- }) => import("react/jsx-runtime").JSX.Element;
5
- export default MoonPayEmbed;
@@ -1,151 +0,0 @@
1
- "use client";
2
- import {
3
- __async
4
- } from "../chunk-MMUBH76A.js";
5
- import { jsx } from "react/jsx-runtime";
6
- import { OnRampProvider } from "@getpara/web-sdk";
7
- import { lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
8
- import { reverseCurrencyLookup, getCurrencyCode, safeStyled } from "../utils/index.js";
9
- const MOONPAY_PUBLISHABLE_KEY = "pk_live_EQva4LydtNDE0Rwd9X7SG9w58wqOzbux";
10
- const MOONPAY_PUBLISHABLE_KEY_TEST = "pk_test_HYobzemmTBXxcSStVA4dSED6jT";
11
- const MoonPayEmbed = ({
12
- email,
13
- isDark,
14
- isEmbedded,
15
- onRampConfig,
16
- onRampPurchase,
17
- onSuccess,
18
- onDepositRequest,
19
- onUrlSignatureRequest
20
- }) => {
21
- const [components, setComponents] = useState(null);
22
- const widgetEmbedRef = useRef(null);
23
- useEffect(() => {
24
- const _LazyMoonPayBuyWidget = lazy(
25
- () => import("@moonpay/moonpay-react").then((mod) => ({ default: mod.MoonPayBuyWidget }))
26
- );
27
- const _LazyMoonPaySellWidget = lazy(
28
- () => import("@moonpay/moonpay-react").then((mod) => ({ default: mod.MoonPaySellWidget }))
29
- );
30
- const _LazyMoonPayProvider = lazy(
31
- () => import("@moonpay/moonpay-react").then((mod) => ({ default: mod.MoonPayProvider }))
32
- );
33
- setComponents({
34
- MoonPayBuyWidget: _LazyMoonPayBuyWidget,
35
- MoonPaySellWidget: _LazyMoonPaySellWidget,
36
- MoonPayProvider: _LazyMoonPayProvider
37
- });
38
- }, []);
39
- const apiKey = onRampPurchase.testMode ? MOONPAY_PUBLISHABLE_KEY_TEST : MOONPAY_PUBLISHABLE_KEY;
40
- const onTransactionCompleted = useCallback(
41
- (payload) => __async(void 0, null, function* () {
42
- try {
43
- const [network, asset] = reverseCurrencyLookup(
44
- onRampConfig.assetInfo,
45
- OnRampProvider.MOONPAY,
46
- payload.quoteCurrency.code
47
- );
48
- onSuccess({
49
- fiatQuantity: payload.baseCurrencyAmount.toString(),
50
- fiat: payload.baseCurrency.code,
51
- network,
52
- asset,
53
- assetQuantity: payload.quoteCurrencyAmount.toString()
54
- });
55
- } catch (e) {
56
- throw e instanceof Error ? e : new Error(e);
57
- }
58
- }),
59
- [onRampConfig]
60
- );
61
- const onInitiateDeposit = useCallback(
62
- (payload) => __async(void 0, null, function* () {
63
- try {
64
- const txHash = yield onDepositRequest({
65
- assetQuantity: payload.cryptoCurrencyAmount,
66
- fiatQuantity: payload.fiatCurrencyAmount || void 0,
67
- fiat: payload.fiatCurrency.code.toUpperCase(),
68
- destinationAddress: payload.depositWalletAddress,
69
- contractAddress: payload.cryptoCurrency.contractAddress,
70
- chainId: payload.cryptoCurrency.chainId
71
- });
72
- return { depositId: txHash, cancelTransactionOnError: false };
73
- } catch (e) {
74
- throw e instanceof Error ? e : new Error(e);
75
- }
76
- }),
77
- []
78
- );
79
- const widgetEmbed = useMemo(() => {
80
- if (widgetEmbedRef.current) {
81
- return widgetEmbedRef.current;
82
- }
83
- if (!components) {
84
- return null;
85
- }
86
- const currencyCode = getCurrencyCode(onRampConfig, {
87
- network: onRampPurchase.network,
88
- asset: onRampPurchase.asset,
89
- provider: OnRampProvider.MOONPAY
90
- });
91
- const widget = /* @__PURE__ */ jsx(components.MoonPayProvider, { apiKey, debug: onRampPurchase.testMode, children: onRampPurchase.type === "BUY" ? /* @__PURE__ */ jsx(
92
- components.MoonPayBuyWidget,
93
- {
94
- variant: "embedded",
95
- email,
96
- baseCurrencyCode: onRampPurchase.fiat,
97
- baseCurrencyAmount: onRampPurchase.fiatQuantity,
98
- currencyCode,
99
- walletAddress: onRampPurchase.address,
100
- visible: true,
101
- theme: isDark ? "dark" : "light",
102
- style: {
103
- height: "100%",
104
- width: "100%",
105
- border: "none",
106
- borderRadius: 0,
107
- margin: 0
108
- },
109
- onTransactionCompleted,
110
- onUrlSignatureRequested: onUrlSignatureRequest
111
- }
112
- ) : /* @__PURE__ */ jsx(
113
- components.MoonPaySellWidget,
114
- {
115
- variant: "embedded",
116
- visible: true,
117
- theme: isDark ? "dark" : "light",
118
- style: {
119
- height: "100%",
120
- width: "100%",
121
- border: "none",
122
- borderRadius: 0,
123
- margin: 0
124
- },
125
- email,
126
- baseCurrencyCode: currencyCode,
127
- quoteCurrencyAmount: onRampPurchase.fiatQuantity,
128
- refundWalletAddress: onRampPurchase.address,
129
- onInitiateDeposit,
130
- onTransactionCompleted,
131
- onUrlSignatureRequested: onUrlSignatureRequest
132
- }
133
- ) });
134
- widgetEmbedRef.current = widget;
135
- return widget;
136
- }, [components]);
137
- return /* @__PURE__ */ jsx(Container, { isEmbedded, children: widgetEmbed });
138
- };
139
- var MoonPayEmbed_default = MoonPayEmbed;
140
- const Container = safeStyled.div`
141
- width: ${({ isEmbedded }) => isEmbedded ? "100%" : "100vw"};
142
- height: ${({ isEmbedded }) => isEmbedded ? "640px" : "100vh"};
143
-
144
- iframe {
145
- border: 0 !important;
146
- }
147
- `;
148
- export {
149
- MoonPayEmbed,
150
- MoonPayEmbed_default as default
151
- };
@@ -1,4 +0,0 @@
1
- import { OnRampProps } from '../types/index.js';
2
- export declare const RampEmbed: ({ appName, email, onRampConfig, onRampPurchase, isEmbedded, apiKey, onClose, onUpdate, onDepositRequest, }: OnRampProps & {
3
- apiKey: string;
4
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,91 +0,0 @@
1
- "use client";
2
- import {
3
- __async
4
- } from "../chunk-MMUBH76A.js";
5
- import { jsx } from "react/jsx-runtime";
6
- import { useEffect, useRef } from "react";
7
- import { RampInstantSDK } from "@ramp-network/ramp-instant-sdk";
8
- import { OnRampProvider } from "@getpara/web-sdk";
9
- import { getChainId, getContractAddressFromAsset, getCurrencyCodes, reverseCurrencyLookup } from "../utils/index.js";
10
- const TEST_MODE_FORBIDDEN = ["ETH_ETH", "ETH_USDC"];
11
- const RampEmbed = ({
12
- appName,
13
- email,
14
- onRampConfig,
15
- onRampPurchase,
16
- isEmbedded,
17
- apiKey,
18
- onClose,
19
- onUpdate,
20
- onDepositRequest
21
- }) => {
22
- const { currencyCodes } = getCurrencyCodes(onRampConfig, {
23
- provider: OnRampProvider.RAMP,
24
- purchaseType: onRampPurchase.type,
25
- walletType: onRampPurchase.walletType
26
- });
27
- const isMounted = useRef(false);
28
- useEffect(() => {
29
- if (!isMounted.current) {
30
- try {
31
- const widget = new RampInstantSDK({
32
- hostAppName: appName,
33
- swapAsset: currencyCodes.filter((code) => !onRampPurchase.testMode || !TEST_MODE_FORBIDDEN.includes(code)).join(","),
34
- fiatValue: onRampPurchase.fiatQuantity,
35
- fiatCurrency: onRampPurchase.fiat,
36
- hostLogoUrl: `${window.location.hostname}/wordmark_black.svg`,
37
- hostApiKey: apiKey,
38
- userAddress: onRampPurchase.address,
39
- userEmailAddress: email,
40
- url: (onRampPurchase == null ? void 0 : onRampPurchase.testMode) ? "https://app.demo.ramp.network" : "https://app.ramp.network",
41
- enabledFlows: [onRampPurchase.type === "BUY" ? "ONRAMP" : "OFFRAMP"],
42
- useSendCryptoCallback: true,
43
- variant: "embedded-mobile",
44
- containerNode: document.getElementById("ramp-container")
45
- }).on("PURCHASE_CREATED", (e) => __async(void 0, null, function* () {
46
- const p = e.payload.purchase;
47
- const [network, asset] = onRampPurchase.testMode ? ["ETHEREUM", "ETHEREUM"] : reverseCurrencyLookup(onRampConfig.assetInfo, OnRampProvider.RAMP, p.asset.symbol) || [];
48
- onUpdate({
49
- providerKey: p.id,
50
- fiatQuantity: p.fiatValue,
51
- fiat: p.fiatCurrency,
52
- assetQuantity: p.cryptoAmount,
53
- asset,
54
- network
55
- });
56
- })).on("WIDGET_CLOSE", () => __async(void 0, null, function* () {
57
- onClose == null ? void 0 : onClose();
58
- if (!isEmbedded) {
59
- setTimeout(() => {
60
- if (typeof window !== "undefined") {
61
- window.close();
62
- }
63
- }, 5e3);
64
- }
65
- })).onSendCrypto((assetInfo, amount, address) => __async(void 0, null, function* () {
66
- try {
67
- const [network, asset] = reverseCurrencyLookup(onRampConfig.assetInfo, OnRampProvider.RAMP, assetInfo.symbol);
68
- const txHash = yield onDepositRequest({
69
- assetQuantity: amount,
70
- destinationAddress: address,
71
- contractAddress: getContractAddressFromAsset(network, asset),
72
- chainId: getChainId(network),
73
- testMode: onRampPurchase.testMode
74
- });
75
- return { txHash };
76
- } catch (e) {
77
- console.error(e);
78
- }
79
- }));
80
- widget.show();
81
- isMounted.current = true;
82
- } catch (e) {
83
- console.error(e);
84
- }
85
- }
86
- }, []);
87
- return /* @__PURE__ */ jsx("div", { id: "ramp-container", style: { minWidth: "320px", width: "100%", height: "767px" } });
88
- };
89
- export {
90
- RampEmbed
91
- };