Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion clients/js/jest.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,20 @@
"^@certusone/(.*)/lib/esm/(.*)$": "@certusone/$1/lib/cjs/$2"
},
"transform": {
"^.+\\.(t|j)sx?$": "ts-jest"
"^.+\\.m?[tj]sx?$": [
"ts-jest",
{
"isolatedModules": true,
"tsconfig": {
"module": "commonjs",
"moduleResolution": "node",
"esModuleInterop": true,
"allowJs": true
}
}
]
},
"transformIgnorePatterns": ["node_modules/(?!(?:@mysten|@noble|@scure)/)"],
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"testPathIgnorePatterns": ["__tests__/utils"],
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"],
Expand Down
367 changes: 161 additions & 206 deletions clients/js/package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions clients/js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"repository": "https://github.com/certusone/wormhole/tree/main/clients/js",
"scripts": {
"start": "npm run build && node ./build/main.js",
"build": "esbuild src/main.ts --bundle --outfile=build/main.js --minify --platform=node --target=node22",
"build": "esbuild src/main.ts --bundle --outfile=build/main.js --minify --platform=node --target=node22 --tsconfig=tsconfig.build.json",
"check": "tsc --noEmit",
"docs": "npx tsx src/doc.ts",
"prepublishOnly": "npm run check",
Expand All @@ -36,7 +36,7 @@
"@injectivelabs/networks": "^1.10.7",
"@injectivelabs/sdk-ts": "^1.10.47",
"@injectivelabs/utils": "^1.10.5",
"@mysten/sui": "^1.45.0",
"@mysten/sui": "2.19.0",
"@sei-js/core": "^1.3.2",
"@solana/spl-token": "^0.3.5",
"@solana/web3.js": "^1.22.0",
Expand Down
8 changes: 4 additions & 4 deletions clients/js/src/chains/generic/getOriginalAsset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import {
getOriginalAssetEth,
getOriginalAssetNear,
getOriginalAssetSolana,
getOriginalAssetSui,
getOriginalAssetTerra,
getOriginalAssetXpla,
} from "@certusone/wormhole-sdk/lib/esm/token_bridge/getOriginalAsset";
import { getOriginalAssetSui } from "../../sdk/sui";
import { getOriginalAssetInjective } from "@certusone/wormhole-sdk/lib/esm/token_bridge/injective";
import { impossible } from "../../vaa";
import { getOriginalAssetSei } from "../sei/sdk";
Expand Down Expand Up @@ -115,11 +115,11 @@ export const getOriginalAsset = async (
}
case "Sui": {
const provider = getProviderForChain(chainName, network, { rpc });
return getOriginalAssetSui(
provider as any,
return (await getOriginalAssetSui(
provider,
tokenBridgeAddress,
assetAddress
);
)) as WormholeWrappedInfo;
}
case "Btc":
case "Osmosis":
Expand Down
6 changes: 3 additions & 3 deletions clients/js/src/chains/generic/getWrappedAssetAddress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import {
getForeignAssetEth,
getForeignAssetNear,
getForeignAssetSolana,
getForeignAssetSui,
getForeignAssetTerra,
getForeignAssetXpla,
} from "@certusone/wormhole-sdk/lib/esm/token_bridge/getForeignAsset";
import { getForeignAssetSui } from "../../sdk/sui";
import { getForeignAssetInjective } from "@certusone/wormhole-sdk/lib/esm/token_bridge/injective";
import { impossible } from "../../vaa";
import { getForeignAssetSei } from "../sei/sdk";
Expand Down Expand Up @@ -158,9 +158,9 @@ export const getWrappedAssetAddress = async (
case "Sui": {
const provider = getProviderForChain(chainName, network, { rpc });
return getForeignAssetSui(
provider as any,
provider,
tokenBridgeAddress,
toChainId(originChain),
toChain(originChain),
originAddressUint8Array
);
}
Expand Down
10 changes: 7 additions & 3 deletions clients/js/src/chains/generic/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import {
getNetworkEndpoints,
} from "@injectivelabs/networks";
import { ChainGrpcWasmApi } from "@injectivelabs/sdk-ts";
import { SuiClient } from "@mysten/sui/client";
import { SuiGrpcClient } from "@mysten/sui/grpc";
import { getSuiNetwork } from "../sui/utils";
import { getCosmWasmClient } from "@sei-js/core";
import { Connection as SolanaConnection } from "@solana/web3.js";
import { LCDClient as TerraLCDClient } from "@terra-money/terra.js";
Expand Down Expand Up @@ -39,7 +40,7 @@ export type ChainProvider<T extends Chain> = T extends "Algorand"
: T extends "Solana"
? SolanaConnection
: T extends "Sui"
? SuiClient
? SuiGrpcClient
: T extends "Xpla"
? XplaLCDClient
: never;
Expand Down Expand Up @@ -142,7 +143,10 @@ export const getProviderForChain = <T extends Chain>(
case "Aptos":
return new AptosClient(rpc) as ChainProvider<T>;
case "Sui":
return new SuiClient({ url: rpc }) as ChainProvider<T>;
return new SuiGrpcClient({
network: getSuiNetwork(network),
baseUrl: rpc,
}) as ChainProvider<T>;
case "Btc":
case "Osmosis":
case "Pythnet":
Expand Down
31 changes: 31 additions & 0 deletions clients/js/src/chains/sui/__tests__/publish.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { parseTestPublishDigest } from "../publish";

describe("parseTestPublishDigest", () => {
it("extracts the digest from output with leading build lines", () => {
const output = [
"INCLUDING DEPENDENCY Sui",
"BUILDING token_bridge",
"Skipping dependency verification",
JSON.stringify({
digest: "BwBvV26C79zyjUxwTCLVyZmjKsBqUGU7a9F5jySoPnVh",
effects: { status: { status: "success" } },
}),
].join("\n");

expect(parseTestPublishDigest(output)).toBe(
"BwBvV26C79zyjUxwTCLVyZmjKsBqUGU7a9F5jySoPnVh"
);
});

it("throws when there is no JSON object in the output", () => {
expect(() => parseTestPublishDigest("error: command failed")).toThrow(
/No JSON output/
);
});

it("throws when the JSON has no digest field", () => {
expect(() =>
parseTestPublishDigest(JSON.stringify({ effects: {} }))
).toThrow(/No transaction digest/);
});
});
Loading
Loading