sdk/js: publish separate wasm package

This commit is contained in:
Evan Gray 2022-07-13 04:02:51 +00:00 committed by Evan Gray
parent 37c20b547a
commit 061244dc17
18 changed files with 487 additions and 186 deletions

View File

@ -108,20 +108,6 @@ local_resource(
trigger_mode = trigger_mode,
)
# wasm
if solana:
local_resource(
name = "wasm-gen",
deps = ["solana"],
dir = "solana",
cmd = "tilt docker build -- -f Dockerfile.wasm -o type=local,dest=.. .",
env = {"DOCKER_BUILDKIT": "1"},
labels = ["solana"],
allow_parallel = True,
trigger_mode = trigger_mode,
)
# node
if explorer:
@ -496,7 +482,7 @@ if ci_tests:
k8s_resource(
"ci-tests",
resource_deps = ["wasm-gen", "eth-devnet", "eth-devnet2", "terra-terrad", "terra-fcd", "terra2-terrad", "terra2-fcd", "solana-devnet", "spy", "guardian"],
resource_deps = ["eth-devnet", "eth-devnet2", "terra-terrad", "terra-fcd", "terra2-terrad", "terra2-fcd", "solana-devnet", "spy", "guardian"],
labels = ["ci"],
trigger_mode = trigger_mode,
)

View File

@ -8,7 +8,7 @@
"name": "test_ui",
"version": "0.1.0",
"dependencies": {
"@certusone/wormhole-sdk": "^0.4.5",
"@certusone/wormhole-sdk": "^0.5.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.60",
@ -87,20 +87,19 @@
},
"../sdk/js": {
"name": "@certusone/wormhole-sdk",
"version": "0.3.8",
"version": "0.5.0",
"extraneous": true,
"license": "Apache-2.0",
"dependencies": {
"@improbable-eng/grpc-web": "^0.14.0",
"@certusone/wormhole-sdk-proto-web": "^0.0.1",
"@certusone/wormhole-sdk-wasm": "file:../js-wasm",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^3.1.3",
"algosdk": "^1.15.0",
"axios": "^0.24.0",
"bech32": "^2.0.0",
"js-base64": "^3.6.1",
"protobufjs": "^6.11.2",
"rxjs": "^7.3.0"
"js-base64": "^3.6.1"
},
"devDependencies": {
"@improbable-eng/grpc-web-node-http-transport": "^0.15.0",
@ -2132,26 +2131,35 @@
}
},
"node_modules/@certusone/wormhole-sdk": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.4.5.tgz",
"integrity": "sha512-Wx726yI7zTIaDM2h/Ffrz3tjCKh4ZO5PDvwq/m5iVv6HqnL6xjrS6g8Qnq/K68cOMIJcxrqLW2SNl3vLUMLT7w==",
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.5.0.tgz",
"integrity": "sha512-Z8Cj2yZ41if842jSSLzKLomwkq9PgXdjVq3r3VNzkSM3aZavU8vZqNT33LU9IabmW7hiWe1uI9j2Z1JZe7SIEg==",
"dependencies": {
"@improbable-eng/grpc-web": "^0.14.0",
"@certusone/wormhole-sdk-proto-web": "^0.0.1",
"@certusone/wormhole-sdk-wasm": "^0.0.1",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^3.1.3",
"algosdk": "^1.15.0",
"axios": "^0.24.0",
"bech32": "^2.0.0",
"js-base64": "^3.6.1",
"protobufjs": "^6.11.2",
"rxjs": "^7.3.0"
"js-base64": "^3.6.1"
}
},
"node_modules/@certusone/wormhole-sdk/node_modules/@improbable-eng/grpc-web": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz",
"integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==",
"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==",
"dependencies": {
"@improbable-eng/grpc-web": "^0.15.0",
"protobufjs": "^7.0.0",
"rxjs": "^7.5.6"
}
},
"node_modules/@certusone/wormhole-sdk-proto-web/node_modules/@improbable-eng/grpc-web": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz",
"integrity": "sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==",
"dependencies": {
"browser-headers": "^0.4.1"
},
@ -2159,6 +2167,57 @@
"google-protobuf": "^3.14.0"
}
},
"node_modules/@certusone/wormhole-sdk-proto-web/node_modules/long": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
},
"node_modules/@certusone/wormhole-sdk-proto-web/node_modules/protobufjs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@certusone/wormhole-sdk-proto-web/node_modules/rxjs": {
"version": "7.5.6",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
"integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@certusone/wormhole-sdk-wasm": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-wasm/-/wormhole-sdk-wasm-0.0.1.tgz",
"integrity": "sha512-LdIwLhOyr4pPs2jqYubqC7d4UkqYBX0EG/ppspQlW3qlVE0LZRMrH6oVzzLMyHtV0Rw7O9sIKzORW/T3mrJv2w==",
"dependencies": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
}
},
"node_modules/@certusone/wormhole-sdk-wasm/node_modules/@types/node": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
},
"node_modules/@certusone/wormhole-sdk/node_modules/axios": {
"version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
@ -2172,14 +2231,6 @@
"resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz",
"integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg=="
},
"node_modules/@certusone/wormhole-sdk/node_modules/rxjs": {
"version": "7.5.5",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
"integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
@ -8763,9 +8814,9 @@
"integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw=="
},
"node_modules/@types/long": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"node_modules/@types/luxon": {
"version": "2.3.1",
@ -46765,30 +46816,21 @@
}
},
"@certusone/wormhole-sdk": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.4.5.tgz",
"integrity": "sha512-Wx726yI7zTIaDM2h/Ffrz3tjCKh4ZO5PDvwq/m5iVv6HqnL6xjrS6g8Qnq/K68cOMIJcxrqLW2SNl3vLUMLT7w==",
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.5.0.tgz",
"integrity": "sha512-Z8Cj2yZ41if842jSSLzKLomwkq9PgXdjVq3r3VNzkSM3aZavU8vZqNT33LU9IabmW7hiWe1uI9j2Z1JZe7SIEg==",
"requires": {
"@improbable-eng/grpc-web": "^0.14.0",
"@certusone/wormhole-sdk-proto-web": "^0.0.1",
"@certusone/wormhole-sdk-wasm": "^0.0.1",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^3.1.3",
"algosdk": "^1.15.0",
"axios": "^0.24.0",
"bech32": "^2.0.0",
"js-base64": "^3.6.1",
"protobufjs": "^6.11.2",
"rxjs": "^7.3.0"
"js-base64": "^3.6.1"
},
"dependencies": {
"@improbable-eng/grpc-web": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz",
"integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==",
"requires": {
"browser-headers": "^0.4.1"
}
},
"axios": {
"version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
@ -46801,17 +46843,78 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz",
"integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg=="
}
}
},
"@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==",
"requires": {
"@improbable-eng/grpc-web": "^0.15.0",
"protobufjs": "^7.0.0",
"rxjs": "^7.5.6"
},
"dependencies": {
"@improbable-eng/grpc-web": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz",
"integrity": "sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==",
"requires": {
"browser-headers": "^0.4.1"
}
},
"long": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
},
"protobufjs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
}
},
"rxjs": {
"version": "7.5.5",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
"integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
"version": "7.5.6",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
"integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
"requires": {
"tslib": "^2.1.0"
}
}
}
},
"@certusone/wormhole-sdk-wasm": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-wasm/-/wormhole-sdk-wasm-0.0.1.tgz",
"integrity": "sha512-LdIwLhOyr4pPs2jqYubqC7d4UkqYBX0EG/ppspQlW3qlVE0LZRMrH6oVzzLMyHtV0Rw7O9sIKzORW/T3mrJv2w==",
"requires": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
},
"dependencies": {
"@types/node": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
}
}
},
"@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
@ -52245,9 +52348,9 @@
"integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw=="
},
"@types/long": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"@types/luxon": {
"version": "2.3.1",

View File

@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@certusone/wormhole-sdk": "^0.4.5",
"@certusone/wormhole-sdk": "^0.5.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.60",

30
sdk/js-wasm/.gitignore vendored Normal file
View File

@ -0,0 +1,30 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# wasm output
/src/**
!/src/index.ts
# build
/lib

13
sdk/js-wasm/LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright 2020 Wormhole Project Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

7
sdk/js-wasm/README.md Normal file
View File

@ -0,0 +1,7 @@
# Wormhole SDK WebAssembly
WebAssembly libraries for interacting with Wormhole
> Note: This code is generated by `wasm-pack` for both `--target bundler` and `--target nodejs`
By default, this loads the bundler wasm libraries. Use `setDefaultWasm("node")` if you need the node ones.

61
sdk/js-wasm/package-lock.json generated Normal file
View File

@ -0,0 +1,61 @@
{
"name": "@certusone/wormhole-sdk-wasm",
"version": "0.0.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@certusone/wormhole-sdk-wasm",
"version": "0.0.1",
"license": "Apache-2.0",
"dependencies": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
},
"devDependencies": {
"typescript": "^4.7.4"
}
},
"node_modules/@types/long": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"node_modules/@types/node": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
},
"node_modules/typescript": {
"version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
}
},
"dependencies": {
"@types/long": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"@types/node": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
},
"typescript": {
"version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true
}
}
}

32
sdk/js-wasm/package.json Normal file
View File

@ -0,0 +1,32 @@
{
"name": "@certusone/wormhole-sdk-wasm",
"version": "0.0.1",
"description": "WebAssembly libraries for interacting with Wormhole",
"homepage": "https://wormholenetwork.com",
"main": "./lib/cjs/index.js",
"module": "./lib/esm/index.js",
"files": [
"lib/"
],
"repository": "https://github.com/certusone/wormhole/tree/dev.v2/sdk/js-wasm",
"scripts": {
"build-deps": "cd ../.. && DOCKER_BUILDKIT=1 docker build -f solana/Dockerfile.wasm -o type=local,dest=. solana",
"build-lib": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && node scripts/copyWasm.js",
"build-all": "npm run build-deps && npm run build-lib",
"build": "npm run build-all"
},
"keywords": [
"wormhole",
"sdk",
"wasm"
],
"author": "certusone",
"license": "Apache-2.0",
"devDependencies": {
"typescript": "^4.7.4"
},
"dependencies": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
}
}

View File

@ -0,0 +1,67 @@
const fs = require("fs");
["lib/esm", "lib/cjs"].forEach((buildPath) => {
fs.copyFileSync(
`src/core/bridge_bg.wasm`,
`${buildPath}/core/bridge_bg.wasm`
);
fs.copyFileSync(
`src/core-node/bridge_bg.wasm`,
`${buildPath}/core-node/bridge_bg.wasm`
);
fs.copyFileSync(
`src/core/bridge_bg.wasm.d.ts`,
`${buildPath}/core/bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/core-node/bridge_bg.wasm.d.ts`,
`${buildPath}/core-node/bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/nft/nft_bridge_bg.wasm`,
`${buildPath}/nft/nft_bridge_bg.wasm`
);
fs.copyFileSync(
`src/nft-node/nft_bridge_bg.wasm`,
`${buildPath}/nft-node/nft_bridge_bg.wasm`
);
fs.copyFileSync(
`src/nft/nft_bridge_bg.wasm.d.ts`,
`${buildPath}/nft/nft_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/nft-node/nft_bridge_bg.wasm.d.ts`,
`${buildPath}/nft-node/nft_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/token/token_bridge_bg.wasm`,
`${buildPath}/token/token_bridge_bg.wasm`
);
fs.copyFileSync(
`src/token-node/token_bridge_bg.wasm`,
`${buildPath}/token-node/token_bridge_bg.wasm`
);
fs.copyFileSync(
`src/token/token_bridge_bg.wasm.d.ts`,
`${buildPath}/token/token_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/token-node/token_bridge_bg.wasm.d.ts`,
`${buildPath}/token-node/token_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/migration/wormhole_migration_bg.wasm`,
`${buildPath}/migration/wormhole_migration_bg.wasm`
);
fs.copyFileSync(
`src/migration-node/wormhole_migration_bg.wasm`,
`${buildPath}/migration-node/wormhole_migration_bg.wasm`
);
fs.copyFileSync(
`src/migration/wormhole_migration_bg.wasm.d.ts`,
`${buildPath}/migration/wormhole_migration_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/migration-node/wormhole_migration_bg.wasm.d.ts`,
`${buildPath}/migration-node/wormhole_migration_bg.wasm.d.ts`
);
});

38
sdk/js-wasm/src/index.ts Normal file
View File

@ -0,0 +1,38 @@
const coreWasms = {
bundler: async () => await import("./core/bridge"),
node: async () => await import("./core-node/bridge"),
};
const migrationWasms = {
bundler: async () => await import("./migration/wormhole_migration"),
node: async () => await import("./migration-node/wormhole_migration"),
};
const nftWasms = {
bundler: async () => await import("./nft/nft_bridge"),
node: async () => await import("./nft-node/nft_bridge"),
};
const tokenWasms = {
bundler: async () => await import("./token/token_bridge"),
node: async () => await import("./token-node/token_bridge"),
};
let importDefaultCoreWasm = coreWasms.bundler;
let importDefaultMigrationWasm = migrationWasms.bundler;
let importDefaultNftWasm = nftWasms.bundler;
let importDefaultTokenWasm = tokenWasms.bundler;
export function setDefaultWasm(type: "bundler" | "node") {
importDefaultCoreWasm = coreWasms[type];
importDefaultMigrationWasm = migrationWasms[type];
importDefaultNftWasm = nftWasms[type];
importDefaultTokenWasm = tokenWasms[type];
}
export async function importCoreWasm() {
return await importDefaultCoreWasm();
}
export async function importMigrationWasm() {
return await importDefaultMigrationWasm();
}
export async function importNftWasm() {
return await importDefaultNftWasm();
}
export async function importTokenWasm() {
return await importDefaultTokenWasm();
}

View File

@ -0,0 +1,7 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "CommonJS",
"outDir": "./lib/cjs"
}
}

16
sdk/js-wasm/tsconfig.json Normal file
View File

@ -0,0 +1,16 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"moduleResolution": "node",
"declaration": true,
"outDir": "./lib/esm",
"strict": true,
"esModuleInterop": true,
"downlevelIteration": true,
"allowJs": true,
"lib": ["dom", "es5", "scripthost", "es2020.bigint"]
},
"include": ["src", "types"],
"exclude": ["node_modules", "**/__tests__/*"]
}

View File

@ -4,7 +4,7 @@
### Changed
Use `@certusone/wormhole-sdk-proto-web` package
Use `@certusone/wormhole-sdk-proto-web` and `@certusone/wormhole-sdk-wasm` packages
## 0.4.5

View File

@ -10,6 +10,7 @@
"license": "Apache-2.0",
"dependencies": {
"@certusone/wormhole-sdk-proto-web": "^0.0.1",
"@certusone/wormhole-sdk-wasm": "^0.0.1",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^3.1.3",
@ -53,6 +54,19 @@
"typescript": "^4.7.4"
}
},
"../js-wasm": {
"name": "@certusone/wormhole-sdk-wasm",
"version": "0.0.1",
"extraneous": true,
"license": "Apache-2.0",
"dependencies": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
},
"devDependencies": {
"typescript": "^4.7.4"
}
},
"node_modules/@babel/code-frame": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
@ -675,6 +689,20 @@
"node": ">=12.0.0"
}
},
"node_modules/@certusone/wormhole-sdk-wasm": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-wasm/-/wormhole-sdk-wasm-0.0.1.tgz",
"integrity": "sha512-LdIwLhOyr4pPs2jqYubqC7d4UkqYBX0EG/ppspQlW3qlVE0LZRMrH6oVzzLMyHtV0Rw7O9sIKzORW/T3mrJv2w==",
"dependencies": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
}
},
"node_modules/@certusone/wormhole-sdk-wasm/node_modules/@types/node": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
},
"node_modules/@ethereumjs/common": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz",
@ -2481,9 +2509,9 @@
"integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw=="
},
"node_modules/@types/long": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"node_modules/@types/node": {
"version": "16.6.1",
@ -12133,6 +12161,22 @@
}
}
},
"@certusone/wormhole-sdk-wasm": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-wasm/-/wormhole-sdk-wasm-0.0.1.tgz",
"integrity": "sha512-LdIwLhOyr4pPs2jqYubqC7d4UkqYBX0EG/ppspQlW3qlVE0LZRMrH6oVzzLMyHtV0Rw7O9sIKzORW/T3mrJv2w==",
"requires": {
"@types/long": "^4.0.2",
"@types/node": "^18.0.3"
},
"dependencies": {
"@types/node": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
}
}
},
"@ethereumjs/common": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz",
@ -13414,9 +13458,9 @@
"integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw=="
},
"@types/long": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
"@types/node": {
"version": "16.6.1",

View File

@ -13,7 +13,7 @@
"build-contracts": "npm run build --prefix ../../ethereum && node scripts/copyContracts.js && typechain --target=ethers-v5 --out-dir=src/ethers-contracts contracts/*.json",
"build-abis": "typechain --target=ethers-v5 --out-dir=src/ethers-contracts/abi src/abi/Wormhole.abi.json",
"build-deps": "npm run build-abis && npm run build-contracts",
"build-lib": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && node scripts/copyEthersTypes.js && node scripts/copyWasm.js",
"build-lib": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && node scripts/copyEthersTypes.js",
"build-all": "npm run build-deps && npm run build-lib",
"test": "jest --config jestconfig.json --verbose",
"test-ci": "jest --config jestconfig.json --verbose --setupFiles ./ci-config.js --forceExit",
@ -57,6 +57,7 @@
},
"dependencies": {
"@certusone/wormhole-sdk-proto-web": "^0.0.1",
"@certusone/wormhole-sdk-wasm": "^0.0.1",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^3.1.3",

View File

@ -1,67 +0,0 @@
const fs = require("fs");
["lib/esm", "lib/cjs"].forEach((buildPath) => {
fs.copyFileSync(
`src/solana/core/bridge_bg.wasm`,
`${buildPath}/solana/core/bridge_bg.wasm`
);
fs.copyFileSync(
`src/solana/core-node/bridge_bg.wasm`,
`${buildPath}/solana/core-node/bridge_bg.wasm`
);
fs.copyFileSync(
`src/solana/core/bridge_bg.wasm.d.ts`,
`${buildPath}/solana/core/bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/core-node/bridge_bg.wasm.d.ts`,
`${buildPath}/solana/core-node/bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/nft/nft_bridge_bg.wasm`,
`${buildPath}/solana/nft/nft_bridge_bg.wasm`
);
fs.copyFileSync(
`src/solana/nft-node/nft_bridge_bg.wasm`,
`${buildPath}/solana/nft-node/nft_bridge_bg.wasm`
);
fs.copyFileSync(
`src/solana/nft/nft_bridge_bg.wasm.d.ts`,
`${buildPath}/solana/nft/nft_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/nft-node/nft_bridge_bg.wasm.d.ts`,
`${buildPath}/solana/nft-node/nft_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/token/token_bridge_bg.wasm`,
`${buildPath}/solana/token/token_bridge_bg.wasm`
);
fs.copyFileSync(
`src/solana/token-node/token_bridge_bg.wasm`,
`${buildPath}/solana/token-node/token_bridge_bg.wasm`
);
fs.copyFileSync(
`src/solana/token/token_bridge_bg.wasm.d.ts`,
`${buildPath}/solana/token/token_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/token-node/token_bridge_bg.wasm.d.ts`,
`${buildPath}/solana/token-node/token_bridge_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/migration/wormhole_migration_bg.wasm`,
`${buildPath}/solana/migration/wormhole_migration_bg.wasm`
);
fs.copyFileSync(
`src/solana/migration-node/wormhole_migration_bg.wasm`,
`${buildPath}/solana/migration-node/wormhole_migration_bg.wasm`
);
fs.copyFileSync(
`src/solana/migration/wormhole_migration_bg.wasm.d.ts`,
`${buildPath}/solana/migration/wormhole_migration_bg.wasm.d.ts`
);
fs.copyFileSync(
`src/solana/migration-node/wormhole_migration_bg.wasm.d.ts`,
`${buildPath}/solana/migration-node/wormhole_migration_bg.wasm.d.ts`
);
});

View File

@ -1,38 +1 @@
const coreWasms = {
bundler: async () => await import("./core/bridge"),
node: async () => await import("./core-node/bridge"),
};
const migrationWasms = {
bundler: async () => await import("./migration/wormhole_migration"),
node: async () => await import("./migration-node/wormhole_migration"),
};
const nftWasms = {
bundler: async () => await import("./nft/nft_bridge"),
node: async () => await import("./nft-node/nft_bridge"),
};
const tokenWasms = {
bundler: async () => await import("./token/token_bridge"),
node: async () => await import("./token-node/token_bridge"),
};
let importDefaultCoreWasm = coreWasms.bundler;
let importDefaultMigrationWasm = migrationWasms.bundler;
let importDefaultNftWasm = nftWasms.bundler;
let importDefaultTokenWasm = tokenWasms.bundler;
export function setDefaultWasm(type: "bundler" | "node") {
importDefaultCoreWasm = coreWasms[type];
importDefaultMigrationWasm = migrationWasms[type];
importDefaultNftWasm = nftWasms[type];
importDefaultTokenWasm = tokenWasms[type];
}
export async function importCoreWasm() {
return await importDefaultCoreWasm();
}
export async function importMigrationWasm() {
return await importDefaultMigrationWasm();
}
export async function importNftWasm() {
return await importDefaultNftWasm();
}
export async function importTokenWasm() {
return await importDefaultTokenWasm();
}
export * from "@certusone/wormhole-sdk-wasm";

View File

@ -73,12 +73,12 @@ RUN --mount=type=cache,target=/root/.cache \
FROM scratch AS export
COPY --from=build /usr/src/bridge/bridge/program/bundler sdk/js/src/solana/core
COPY --from=build /usr/src/bridge/modules/token_bridge/program/bundler sdk/js/src/solana/token
COPY --from=build /usr/src/bridge/migration/bundler sdk/js/src/solana/migration
COPY --from=build /usr/src/bridge/modules/nft_bridge/program/bundler sdk/js/src/solana/nft
COPY --from=build /usr/src/bridge/bridge/program/bundler sdk/js-wasm/src/core
COPY --from=build /usr/src/bridge/modules/token_bridge/program/bundler sdk/js-wasm/src/token
COPY --from=build /usr/src/bridge/migration/bundler sdk/js-wasm/src/migration
COPY --from=build /usr/src/bridge/modules/nft_bridge/program/bundler sdk/js-wasm/src/nft
COPY --from=build /usr/src/bridge/bridge/program/nodejs sdk/js/src/solana/core-node
COPY --from=build /usr/src/bridge/modules/token_bridge/program/nodejs sdk/js/src/solana/token-node
COPY --from=build /usr/src/bridge/migration/nodejs sdk/js/src/solana/migration-node
COPY --from=build /usr/src/bridge/modules/nft_bridge/program/nodejs sdk/js/src/solana/nft-node
COPY --from=build /usr/src/bridge/bridge/program/nodejs sdk/js-wasm/src/core-node
COPY --from=build /usr/src/bridge/modules/token_bridge/program/nodejs sdk/js-wasm/src/token-node
COPY --from=build /usr/src/bridge/migration/nodejs sdk/js-wasm/src/migration-node
COPY --from=build /usr/src/bridge/modules/nft_bridge/program/nodejs sdk/js-wasm/src/nft-node