diff --git a/.gitignore b/.gitignore
index fd3dbb5..b9f8d23 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,5 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts
+
+.env
\ No newline at end of file
diff --git a/components/page/bridge/helper.ts b/components/page/bridge/helper.ts
index c5084d1..936e7b1 100644
--- a/components/page/bridge/helper.ts
+++ b/components/page/bridge/helper.ts
@@ -1,4 +1,11 @@
+import { token } from "@oraichain/oraidex-common/build/typechain-types/@openzeppelin/contracts";
+import {
+ AlloyedPool,
+ OsmosisAlloyedPools,
+ OsmosisTokenList,
+} from "../../../constants/tokens";
import { fromBech32, toBech32 } from "@cosmjs/encoding";
+import { Environment } from "@/constants/ton";
export const getAddressCosmos = (addr, prefix = "osmo") => {
if (!addr) throw "Address not found";
@@ -6,3 +13,14 @@ export const getAddressCosmos = (addr, prefix = "osmo") => {
const cosmosAddress = toBech32(prefix, data);
return cosmosAddress;
};
+
+export const canConvertToAlloyedToken = (
+ coingeckoId: string
+): AlloyedPool | undefined => {
+ const hasAlloyed = OsmosisTokenList(Environment.Mainnet).find(
+ (token) => token.coingeckoId == coingeckoId && token?.alloyedToken
+ );
+ return hasAlloyed
+ ? OsmosisAlloyedPools.find((pool) => pool.alloyedToken == hasAlloyed.denom)
+ : undefined;
+};
diff --git a/components/page/bridge/index.tsx b/components/page/bridge/index.tsx
index 2839cd8..48783b2 100644
--- a/components/page/bridge/index.tsx
+++ b/components/page/bridge/index.tsx
@@ -29,7 +29,7 @@ import {
useAuthOraiAddress,
useAuthTonAddress,
} from "@/stores/authentication/selector";
-import { toBinary } from "@cosmjs/cosmwasm-stargate";
+import { ExecuteInstruction, toBinary } from "@cosmjs/cosmwasm-stargate";
import {
BigDecimal,
CW20_DECIMALS,
@@ -41,6 +41,8 @@ import {
CosmosChainId,
calculateTimeoutTimestamp,
getCosmosGasPrice,
+ OSMOSIS_ROUTER_CONTRACT,
+ getEncodedExecuteContractMsgs,
} from "@oraichain/oraidex-common";
import {
BridgeAdapter,
@@ -84,15 +86,17 @@ import { useCoinGeckoPrices } from "@/hooks/useCoingecko";
import SelectCommon from "@/components/commons/select";
import { NetworkWithIcon } from "@/constants/chainInfo";
import {
+ SwapAndAction,
UniversalSwapHelper,
buildUniversalSwapMemo,
} from "@oraichain/oraidex-universal-swap";
-import { coin } from "@cosmjs/proto-signing";
+import { Coin, coin, coins } from "@cosmjs/proto-signing";
import { getCosmWasmClient } from "@/libs/cosmjs";
import { GasPrice } from "@cosmjs/stargate";
-import { getAddressCosmos } from "./helper";
+import { canConvertToAlloyedToken, getAddressCosmos } from "./helper";
import { ArrowDownIcon } from "@/assets/icons/arrow";
+
const Bridge = () => {
const oraiAddress = useAuthOraiAddress();
const tonAddress = useAuthTonAddress();
@@ -304,6 +308,46 @@ const Bridge = () => {
}
};
+ const buildOsorSwapMsg = ({ user_swap, min_asset, timeout_timestamp, post_swap_action, affiliates }: SwapAndAction, isInitial: boolean, fromAddress?: string, funds?: Coin[]) => {
+ const msg = {
+ msg: {
+ swap_and_action: {
+ user_swap,
+ min_asset,
+ timeout_timestamp,
+ post_swap_action,
+ affiliates,
+ },
+ }
+ };
+
+ if (isInitial) {
+ if (!fromAddress) {
+ throw new Error("Missing fromAddress");
+ }
+ return {
+ msgActionSwap: {
+ sender: fromAddress,
+ contractAddress: OSMOSIS_ROUTER_CONTRACT,
+ funds,
+ ...msg
+ }
+ };
+ }
+
+ return {
+ msgActionSwap: {
+ wasm: {
+ contract: OSMOSIS_ROUTER_CONTRACT,
+ ...msg
+ }
+ }
+ };
+ };
+
+
+
+
const handleBridgeFromTon = async () => {
try {
if (!oraiAddress) throw "Please connect OWallet or Kelpr!";
@@ -348,11 +392,46 @@ const Bridge = () => {
: BRIDGE_TON_TO_ORAI_MINIMUM_GAS.toString();
const timeout = BigInt(Math.floor(new Date().getTime() / 1000) + 3600);
+
let memo = beginCell().endCell();
+
if (toNetwork.id === NetworkList["osmosis-1"].id) {
const osmosisAddress = await window.Keplr.getKeplrAddr(toNetwork.id);
+ let osmosisReceiver = osmosisAddress;
if (!osmosisAddress) throw "Please connect OWallet or Kelpr!";
+ let osorRouterMemo = "";
+ let hasAlloyedPool = canConvertToAlloyedToken(token.coingeckoId);
+ if (hasAlloyedPool) {
+ osmosisReceiver = OSMOSIS_ROUTER_CONTRACT;
+ let { msgActionSwap } = buildOsorSwapMsg({
+ user_swap: {
+ swap_exact_asset_in: {
+ swap_venue_name: "osmosis-poolmanager",
+ operations: [{
+ pool: hasAlloyedPool.poolId,
+ denom_in: hasAlloyedPool.sourceToken,
+ denom_out: hasAlloyedPool.alloyedToken
+ }]
+ }
+ },
+ min_asset: {
+ native: {
+ denom: hasAlloyedPool.alloyedToken,
+ amount: "0"
+ }
+ }, // consider add minimum receive (Currently, alloy pool is swap 1-1, so no't need to add min_asset
+ timeout_timestamp: Number(calculateTimeoutTimestamp(3600)),
+ post_swap_action: {
+ transfer: {
+ to_address: osmosisAddress,
+ },
+ },
+ affiliates: []
+ }, false);
+ osorRouterMemo = JSON.stringify(msgActionSwap);
+ }
+
const buildMemoSwap = buildUniversalSwapMemo(
{
minimumReceive: "0",
@@ -364,8 +443,8 @@ const Bridge = () => {
{
sourceChannel: "channel-13",
sourcePort: "transfer",
- receiver: osmosisAddress,
- memo: "",
+ receiver: osmosisReceiver,
+ memo: osorRouterMemo,
recoverAddress: oraiAddress,
},
undefined
@@ -541,24 +620,99 @@ const Bridge = () => {
},
});
}
+ if (isFromOraichainToOsmosis) {
+ let hasAlloyedPool = canConvertToAlloyedToken(token.coingeckoId);
+ if (hasAlloyedPool) {
+ let { msgActionSwap } = buildOsorSwapMsg({
+ user_swap: {
+ swap_exact_asset_in: {
+ swap_venue_name: "osmosis-poolmanager",
+ operations: [{
+ pool: hasAlloyedPool.poolId,
+ denom_in: hasAlloyedPool.sourceToken,
+ denom_out: hasAlloyedPool.alloyedToken
+ }]
+ }
+ },
+ min_asset: {
+ native: {
+ denom: hasAlloyedPool.alloyedToken,
+ amount: "0"
+ }
+ }, // consider add minimum receive (Currently, alloy pool is swap 1-1, so no't need to add min_asset
+ timeout_timestamp: Number(calculateTimeoutTimestamp(3600)),
+ post_swap_action: {
+ transfer: {
+ to_address: toAddress,
+ },
+ },
+ affiliates: []
+ }, false);
+ memo = JSON.stringify(msgActionSwap);
+ toAddress = OSMOSIS_ROUTER_CONTRACT;
+ }
+ }
+
const ibcInfo = UniversalSwapHelper.getIbcInfo(fromChainId, toChainId);
- const msgTransfer = [
- {
- typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
- value: MsgTransfer.fromPartial({
- sourcePort: ibcInfo.source,
- sourceChannel: ibcInfo.channel,
- token: coin(
- toAmount(amount, token.decimal).toString(),
- token.denom
- ),
- sender: fromAddress,
- receiver: toAddress,
- memo,
- timeoutTimestamp: calculateTimeoutTimestamp(ibcInfo.timeout),
- }),
- },
- ];
+ let executeMsg;
+ if (fromNetwork.id === NetworkList["osmosis-1"].id && token.alloyedToken) {
+ let hasAlloyedPool = canConvertToAlloyedToken(token.coingeckoId);
+ if (!hasAlloyedPool) throw new Error("AlloyPool does not exist!");
+ // need convert from alloyed first
+ let { msgActionSwap } = buildOsorSwapMsg({
+ user_swap: {
+ swap_exact_asset_in: {
+ swap_venue_name: "osmosis-poolmanager",
+ operations: [{
+ pool: hasAlloyedPool.poolId,
+ denom_in: hasAlloyedPool.alloyedToken,
+ denom_out: hasAlloyedPool.sourceToken
+ }]
+ }
+ },
+ min_asset: {
+ native: {
+ denom: hasAlloyedPool.sourceToken,
+ amount: "0"
+ }
+ }, // consider add minimum receive (Currently, alloy pool is swap 1-1, so no't need to add min_asset
+ timeout_timestamp: Number(calculateTimeoutTimestamp(3600)),
+ post_swap_action: {
+ ibc_transfer: {
+ ibc_info: {
+ source_channel: ibcInfo.channel,
+ receiver: toAddress,
+ memo,
+ recover_address: fromAddress
+ }
+ }
+ },
+ affiliates: []
+ }, true, fromAddress, coins(
+ toAmount(amount, token.decimal).toString(),
+ token.denom
+ ));
+
+ executeMsg = getEncodedExecuteContractMsgs(fromAddress, [msgActionSwap as ExecuteInstruction])
+
+ } else
+ executeMsg = [
+ {
+ typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
+ value: MsgTransfer.fromPartial({
+ sourcePort: ibcInfo.source,
+ sourceChannel: ibcInfo.channel,
+ token: coin(
+ toAmount(amount, token.decimal).toString(),
+ token.denom
+ ),
+ sender: fromAddress,
+ receiver: toAddress,
+ memo,
+ timeoutTimestamp: calculateTimeoutTimestamp(ibcInfo.timeout),
+ }),
+ },
+ ];
const findCosmosChain = cosmosChains.find(
(chain) => chain.chainId === fromNetwork.id
@@ -576,7 +730,7 @@ const Bridge = () => {
);
const tx = await client.signAndBroadcast(
fromAddress,
- msgTransfer,
+ executeMsg,
"auto"
);
@@ -979,10 +1133,10 @@ const Bridge = () => {
{/* 1 TON */}
{toNetwork.id === NetworkList.ton.id ||
- fromNetwork.id === NetworkList.ton.id
+ fromNetwork.id === NetworkList.ton.id
? numberWithCommas(bridgeFee || 0, undefined, {
- maximumFractionDigits: CW20_DECIMALS,
- })
+ maximumFractionDigits: CW20_DECIMALS,
+ })
: "0"}{" "}
{token?.symbol}
@@ -994,9 +1148,9 @@ const Bridge = () => {
{!token
? "--"
: formatDisplayNumber(
- new BigDecimal(tokenFee).mul(amount || 0).toNumber(),
- DECIMAL_TOKEN_FEE
- )}{" "}
+ new BigDecimal(tokenFee).mul(amount || 0).toNumber(),
+ DECIMAL_TOKEN_FEE
+ )}{" "}
{token?.symbol}
diff --git a/constants/tokens.ts b/constants/tokens.ts
index e39817d..06f1b83 100644
--- a/constants/tokens.ts
+++ b/constants/tokens.ts
@@ -13,6 +13,7 @@ export type TokenType = {
denom: string;
coingeckoId: string;
decimal: number;
+ alloyedToken?: boolean;
};
export const TON_DENOM = `factory/orai1wuvhex9xqs3r539mvc6mtm7n20fcj3qr2m0y9khx6n5vtlngfzes3k0rq9/ton`;
@@ -72,9 +73,12 @@ export const OraichainTokenList = (network: Environment): TokenType[] => [
export const OsmosisTokenDenom = {
[Environment.Mainnet]: {
ton: "ibc/905889A7F0B94F1CE1506D9BADF13AE9141E4CBDBCD565E1DFC7AE418B3E3E98",
+ allTon:
+ "factory/osmo12lnwf54yd30p6amzaged2atln8k0l32n7ncxf04ctg7u7ymnsy7qkqgsw4/alloyed/allTON",
},
[Environment.Staging]: {
ton: "ibc/64BF62F8C7C0B1AADBCFBCB45E778DA144E86804420AC5AD4F29D141A14A031B",
+ alloyedTon: "", // not exist
},
};
@@ -89,6 +93,17 @@ export const OsmosisTokenList = (network: Environment): TokenType[] => [
coingeckoId: "the-open-network",
decimal: 9,
},
+ {
+ chainId: "osmosis-1",
+ name: "Alloyed Ton",
+ symbol: "allTON",
+ Icon: TonNetworkICon,
+ contractAddress: null,
+ denom: OsmosisTokenDenom[network].allTon,
+ coingeckoId: "the-open-network",
+ decimal: 9,
+ alloyedToken: true,
+ },
];
export const TonTokenList = (network: Environment): TokenType[] => [
@@ -139,3 +154,19 @@ export const TonTokenList = (network: Environment): TokenType[] => [
// ]
// : []),
];
+
+export type AlloyedPool = {
+ poolId: string;
+ alloyedToken: string;
+ sourceToken: string;
+};
+
+export const OsmosisAlloyedPools: AlloyedPool[] = [
+ {
+ poolId: "2161",
+ alloyedToken:
+ "factory/osmo12lnwf54yd30p6amzaged2atln8k0l32n7ncxf04ctg7u7ymnsy7qkqgsw4/alloyed/allTON",
+ sourceToken:
+ "ibc/905889A7F0B94F1CE1506D9BADF13AE9141E4CBDBCD565E1DFC7AE418B3E3E98",
+ },
+];
diff --git a/package.json b/package.json
index adf1db3..e68396f 100644
--- a/package.json
+++ b/package.json
@@ -19,10 +19,10 @@
"@leapwallet/cosmos-snap-provider": "^0.1.26",
"@next/third-parties": "^14.2.5",
"@noble/secp256k1": "^1.7.0",
- "@oraichain/common-contracts-sdk": "^1.0.31",
+ "@oraichain/common-contracts-sdk": "1.0.31",
"@oraichain/ethereum-multicall": "^1.0.2",
"@oraichain/orai-bitcoin": "^2.0.0",
- "@oraichain/oraidex-common": "^1.0.88-beta.1",
+ "@oraichain/oraidex-common": "^1.1.6",
"@oraichain/oraidex-universal-swap": "^1.1.3",
"@oraichain/ton-bridge-contracts": "^0.15.5",
"@oraichain/tonbridge-contracts-sdk": "^1.3.1",
diff --git a/yarn.lock b/yarn.lock
index 3dedfb1..46313f7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1551,7 +1551,7 @@
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.21.0.tgz#83f7479c524ab523ac2df702ade30b9724476c72"
integrity sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g==
-"@oraichain/common-contracts-sdk@^1.0.31":
+"@oraichain/common-contracts-sdk@1.0.31":
version "1.0.31"
resolved "https://registry.yarnpkg.com/@oraichain/common-contracts-sdk/-/common-contracts-sdk-1.0.31.tgz#595f93b168438d69d64896909b37855c9afc92fb"
integrity sha512-s8H20RXy5gCnu3DnM7L5ClQyj2mdQpbSBpZrXCpIAX9qY0LKsDdZG3sYaDQ8+VN333jz9Pp/qGWdFSYD+6PBsg==
@@ -1600,28 +1600,7 @@
serialize-error "^8.1.0"
varuint-bitcoin "^1.1.2"
-"@oraichain/oraidex-common@^1.0.88-beta.1":
- version "1.0.88-beta.1"
- resolved "https://registry.yarnpkg.com/@oraichain/oraidex-common/-/oraidex-common-1.0.88-beta.1.tgz#fe07c37a53c319500c9960815fc50adce39a38bb"
- integrity sha512-Kl/pShde5yEP6OcPTaaBiIwJqX3/XxPByAmQQXw1D2n8CCyxVZcJOP8E0Iz4v4LkOVlWXh9c8WjhfhCyc4CxSQ==
- dependencies:
- "@cosmjs/amino" "0.31.3"
- "@cosmjs/cosmwasm-stargate" "0.31.3"
- "@cosmjs/crypto" "0.31.3"
- "@cosmjs/proto-signing" "0.31.3"
- "@cosmjs/stargate" "0.31.3"
- "@cosmjs/tendermint-rpc" "0.31.3"
- "@ethersproject/providers" "^5.0.10"
- "@injectivelabs/sdk-ts" "1.12.1"
- "@keplr-wallet/types" "^0.11.38"
- "@oraichain/oraidex-contracts-sdk" latest
- axios "0.26.1"
- axios-extensions "3.1.3"
- bignumber.js "^9.1.2"
- cosmjs-types "0.8.0"
- ethers "^5.0.15"
-
-"@oraichain/oraidex-common@^1.0.91":
+"@oraichain/oraidex-common@^1.0.91", "@oraichain/oraidex-common@^1.1.6":
version "1.1.6"
resolved "https://registry.yarnpkg.com/@oraichain/oraidex-common/-/oraidex-common-1.1.6.tgz#e5fbc8edd911f8c6924b87ce0fe75cc5a3b484f4"
integrity sha512-XUTpvukbtff6UkK25kfE+wHxraFeum6QDZOnHy0k/VVv44FUUlWzWyo/h/D85LyDuKD4u01ryHMmU8XR7M0X7w==
@@ -2006,11 +1985,6 @@
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
-"@types/lru-cache@^4.1.1":
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-4.1.3.tgz#ec5eb6dd818b7a06336cfb7368723164b195f818"
- integrity sha512-QjCOmf5kYwekcsfEKhcEHMK8/SvgnneuSDXFERBuC/DPca2KJIO/gpChTsVb35BoWLBpEAJWz1GFVEArSdtKtw==
-
"@types/mixpanel-browser@^2.49.1":
version "2.49.1"
resolved "https://registry.yarnpkg.com/@types/mixpanel-browser/-/mixpanel-browser-2.49.1.tgz#baf011f4f2818fda99d68874813914551e6c4442"
@@ -2826,16 +2800,6 @@ axe-core@^4.9.1:
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.9.1.tgz#fcd0f4496dad09e0c899b44f6c4bb7848da912ae"
integrity sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==
-axios-extensions@3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/axios-extensions/-/axios-extensions-3.1.3.tgz#cd745bb7dc899743f85a2b5a291c7f36d9f41e12"
- integrity sha512-/OB9OcJLNOIx9pdW4m4/hFRvNo12wlX5BaprIzqpMaLR02I88Mr98/wW4QN9rhx0/yg9rM7i6Af/RpV4MyxXjA==
- dependencies:
- "@types/lru-cache" "^4.1.1"
- lru-cache "^5.1.1"
- tslib "^1.9.0"
- util "^0.11.1"
-
axios-extensions@3.1.6:
version "3.1.6"
resolved "https://registry.yarnpkg.com/axios-extensions/-/axios-extensions-3.1.6.tgz#bfa72f65f44f0a3efa55a030cdaaa6451c246b1e"
@@ -2861,13 +2825,6 @@ axios@0.21.4, axios@^0.21.0, axios@^0.21.2:
dependencies:
follow-redirects "^1.14.0"
-axios@0.26.1:
- version "0.26.1"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9"
- integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
- dependencies:
- follow-redirects "^1.14.8"
-
axios@1.7.2, axios@^1.6.0, axios@^1.6.2, axios@^1.6.4, axios@^1.6.7:
version "1.7.2"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621"
@@ -5137,7 +5094,7 @@ fn.name@1.x.x:
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
-follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.14.9, follow-redirects@^1.15.6:
+follow-redirects@^1.14.0, follow-redirects@^1.14.9, follow-redirects@^1.15.6:
version "1.15.6"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
@@ -5791,11 +5748,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-
ini@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
@@ -6722,13 +6674,6 @@ lru-cache@^10.2.0:
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.3.0.tgz#4a4aaf10c84658ab70f79a85a9a3f1e1fb11196b"
integrity sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==
-lru-cache@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
- dependencies:
- yallist "^3.0.2"
-
lru-cache@^7.14.0, lru-cache@^7.14.1:
version "7.18.3"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
@@ -9287,7 +9232,7 @@ tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@1.14.1, tslib@^1.9.0:
+tslib@1.14.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -9543,13 +9488,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-util@^0.11.1:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
- integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
- dependencies:
- inherits "2.0.3"
-
util@^0.12.3:
version "0.12.5"
resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
@@ -9872,11 +9810,6 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-yallist@^3.0.2:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
- integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"