소스 검색

sdk/js: Added getGovernorIsVAAEnqueued functions (#1410)

kev1n-peters 3 년 전
부모
커밋
9bb598d949

+ 2 - 2
sdk/js-proto-node/package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "@certusone/wormhole-sdk-proto-node",
-  "version": "0.0.1",
+  "version": "0.0.3",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "@certusone/wormhole-sdk-proto-node",
-      "version": "0.0.1",
+      "version": "0.0.3",
       "license": "Apache-2.0",
       "dependencies": {
         "@grpc/grpc-js": "^1.6.7",

+ 1 - 1
sdk/js-proto-node/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@certusone/wormhole-sdk-proto-node",
-  "version": "0.0.1",
+  "version": "0.0.3",
   "description": "NodeJS client protobuf for interacting with Wormhole",
   "homepage": "https://wormholenetwork.com",
   "main": "./lib/cjs/index.js",

+ 2 - 2
sdk/js-proto-web/package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "@certusone/wormhole-sdk-proto-web",
-  "version": "0.0.1",
+  "version": "0.0.3",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "@certusone/wormhole-sdk-proto-web",
-      "version": "0.0.1",
+      "version": "0.0.3",
       "license": "Apache-2.0",
       "dependencies": {
         "@improbable-eng/grpc-web": "^0.15.0",

+ 1 - 1
sdk/js-proto-web/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@certusone/wormhole-sdk-proto-web",
-  "version": "0.0.1",
+  "version": "0.0.3",
   "description": "Web client protobuf for interacting with Wormhole",
   "homepage": "https://wormholenetwork.com",
   "main": "./lib/cjs/index.js",

+ 6 - 0
sdk/js/CHANGELOG.md

@@ -1,5 +1,11 @@
 # Changelog
 
+## 0.6.1
+
+### Added
+
+getGovernorIsVAAEnqueued function
+
 ## 0.6.0
 
 ### Added

+ 9 - 9
sdk/js/package-lock.json

@@ -1,15 +1,15 @@
 {
   "name": "@certusone/wormhole-sdk",
-  "version": "0.6.0",
+  "version": "0.6.1",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "@certusone/wormhole-sdk",
-      "version": "0.6.0",
+      "version": "0.6.1",
       "license": "Apache-2.0",
       "dependencies": {
-        "@certusone/wormhole-sdk-proto-web": "^0.0.1",
+        "@certusone/wormhole-sdk-proto-web": "^0.0.3",
         "@certusone/wormhole-sdk-wasm": "^0.0.1",
         "@solana/spl-token": "^0.1.8",
         "@solana/web3.js": "^1.24.0",
@@ -640,9 +640,9 @@
       "dev": true
     },
     "node_modules/@certusone/wormhole-sdk-proto-web": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.1.tgz",
-      "integrity": "sha512-v6D+vCPqzTmrRuN0ZHpOdA1XnF3nmaD1wlJf025SXb7JFhVSmKyFXzLajkt50rk6SCkEvXtRlxNTJtnuCxg94Q==",
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.3.tgz",
+      "integrity": "sha512-O8gx8dLTcgF5jbmWjRiyZAn1LozslhWqDo6Q6QJfRiL6DWySV5TOXqgaEfQ4UGEM4uqM76HWZpwfEWUjaRhJ/A==",
       "dependencies": {
         "@improbable-eng/grpc-web": "^0.15.0",
         "protobufjs": "^7.0.0",
@@ -12117,9 +12117,9 @@
       "dev": true
     },
     "@certusone/wormhole-sdk-proto-web": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.1.tgz",
-      "integrity": "sha512-v6D+vCPqzTmrRuN0ZHpOdA1XnF3nmaD1wlJf025SXb7JFhVSmKyFXzLajkt50rk6SCkEvXtRlxNTJtnuCxg94Q==",
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.3.tgz",
+      "integrity": "sha512-O8gx8dLTcgF5jbmWjRiyZAn1LozslhWqDo6Q6QJfRiL6DWySV5TOXqgaEfQ4UGEM4uqM76HWZpwfEWUjaRhJ/A==",
       "requires": {
         "@improbable-eng/grpc-web": "^0.15.0",
         "protobufjs": "^7.0.0",

+ 2 - 2
sdk/js/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@certusone/wormhole-sdk",
-  "version": "0.6.0",
+  "version": "0.6.1",
   "description": "SDK for interacting with Wormhole",
   "homepage": "https://wormholenetwork.com",
   "main": "./lib/cjs/index.js",
@@ -56,7 +56,7 @@
     "web3": "^1.6.1"
   },
   "dependencies": {
-    "@certusone/wormhole-sdk-proto-web": "^0.0.1",
+    "@certusone/wormhole-sdk-proto-web": "^0.0.3",
     "@certusone/wormhole-sdk-wasm": "^0.0.1",
     "@solana/spl-token": "^0.1.8",
     "@solana/web3.js": "^1.24.0",

+ 21 - 0
sdk/js/src/rpc/getGovernorIsVAAEnqueued.ts

@@ -0,0 +1,21 @@
+import { ChainId, ChainName, coalesceChainId } from "../utils/consts";
+import { publicrpc } from "@certusone/wormhole-sdk-proto-web";
+const { GrpcWebImpl, PublicRPCServiceClientImpl } = publicrpc;
+
+export async function getGovernorIsVAAEnqueued(
+  host: string,
+  emitterChain: ChainId | ChainName,
+  emitterAddress: string,
+  sequence: string,
+  extraGrpcOpts = {}
+) {
+  const rpc = new GrpcWebImpl(host, extraGrpcOpts);
+  const api = new PublicRPCServiceClientImpl(rpc);
+  return await api.GovernorIsVAAEnqueued({
+    messageId: {
+      emitterChain: coalesceChainId(emitterChain),
+      emitterAddress,
+      sequence,
+    },
+  });
+}

+ 35 - 0
sdk/js/src/rpc/getGovernorIsVAAEnqueuedWithRetry.ts

@@ -0,0 +1,35 @@
+import { ChainId, ChainName, getGovernorIsVAAEnqueued } from "..";
+import { coalesceChainId } from "../utils";
+
+export async function getGovernorIsVAAEnqueuedWithRetry(
+  hosts: string[],
+  emitterChain: ChainId | ChainName,
+  emitterAddress: string,
+  sequence: string,
+  extraGrpcOpts = {},
+  retryTimeout = 1000,
+  retryAttempts?: number
+) {
+  let currentWormholeRpcHost = -1;
+  const getNextRpcHost = () => ++currentWormholeRpcHost % hosts.length;
+  let result;
+  let attempts = 0;
+  while (!result) {
+    attempts++;
+    await new Promise((resolve) => setTimeout(resolve, retryTimeout));
+    try {
+      result = await getGovernorIsVAAEnqueued(
+        hosts[getNextRpcHost()],
+        coalesceChainId(emitterChain),
+        emitterAddress,
+        sequence,
+        extraGrpcOpts
+      );
+    } catch (e) {
+      if (retryAttempts !== undefined && attempts > retryAttempts) {
+        throw e;
+      }
+    }
+  }
+  return result;
+}

+ 2 - 0
sdk/js/src/rpc/index.ts

@@ -1,2 +1,4 @@
 export * from "./getSignedVAA";
 export { getSignedVAAWithRetry } from "./getSignedVAAWithRetry";
+export * from "./getGovernorIsVAAEnqueued";
+export * from "./getGovernorIsVAAEnqueuedWithRetry";