From ee0443b5fa40be6bf2de3b94ac200d4d002782f2 Mon Sep 17 00:00:00 2001 From: nikugogoi Date: Fri, 9 Dec 2022 14:25:13 +0530 Subject: [PATCH 1/6] Changes to use laconic-sdk with console-app (#10) * Use older version of tiny-secp256k1 to work in browser * Make REST endpoint optional --- .env.example | 1 + package.json | 5 ++-- src/auction.test.ts | 2 +- src/bond.test.ts | 2 +- src/index.test.ts | 2 +- src/index.ts | 14 ++++++----- src/nameservice-expiry.test.ts | 2 +- src/naming.test.ts | 2 +- src/registry-client.ts | 9 +++---- src/sdk.test.ts | 2 +- src/testing/helper.ts | 4 +-- src/util.test.ts | 2 +- yarn.lock | 45 +++++++++++++++++++++++++--------- 13 files changed, 59 insertions(+), 33 deletions(-) diff --git a/.env.example b/.env.example index d27f846..9354a4b 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,2 @@ PRIVATE_KEY=75f719e613d05efab06a3f1dde5250b497723b13d4afa4f8ed80145764e40cf7 +COSMOS_CHAIN_ID=laconic_9000-1 diff --git a/package.json b/package.json index a9fcf73..4a3e3d1 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,11 @@ "@types/jest": "^27.4.1", "@types/lodash": "^4.14.181", "@types/semver": "^7.3.9", + "@types/tiny-secp256k1": "1.0.0", "dotenv": "^16.0.0", - "protoc-gen-ts": "^0.8.5", "google-protobuf": "^3.21.0", "jest": "29.0.0", + "protoc-gen-ts": "^0.8.5", "ts-jest": "^29.0.2", "typescript": "^4.6.2" }, @@ -39,7 +40,7 @@ "lodash": "^4.17.21", "node-yaml": "^4.0.1", "semver": "^7.3.5", - "tiny-secp256k1": "^2.2.1" + "tiny-secp256k1": "^1.1.6" }, "scripts": { "test": "jest --runInBand --verbose", diff --git a/src/auction.test.ts b/src/auction.test.ts index 111484c..06637c3 100644 --- a/src/auction.test.ts +++ b/src/auction.test.ts @@ -16,7 +16,7 @@ const auctionTests = (numBidders = 3) => { beforeAll(async () => { console.log('Running auction tests with num bidders', numBidders); - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); }); test('Setup bidder accounts', async () => { diff --git a/src/bond.test.ts b/src/bond.test.ts index 77369c4..2b7f93c 100644 --- a/src/bond.test.ts +++ b/src/bond.test.ts @@ -29,7 +29,7 @@ const bondTests = () => { }; beforeAll(async () => { - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); }); test('Create bond.', async () => { diff --git a/src/index.test.ts b/src/index.test.ts index b1ee44a..fc96f80 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -10,7 +10,7 @@ const registryTests = () => { let registry: Registry; beforeAll(async () => { - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); }); diff --git a/src/index.ts b/src/index.ts index ae06546..c83797d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -53,6 +53,8 @@ import { MessageMsgRevealBid } from './messages/auction'; +export const DEFAULT_CHAIN_ID = 'laconic_9000-1'; + const DEFAULT_WRITE_ERROR = 'Unable to write to laconicd.'; // Parse Tx response from cosmos-sdk. @@ -119,21 +121,21 @@ export class Registry { return errorMessage || DEFAULT_WRITE_ERROR; } - constructor(restUrl: string, gqlUrl: string, chainId: string) { - if (!isUrl(restUrl)) { - throw new Error('Path to a REST endpoint should be provided.'); - } - + constructor(gqlUrl: string, restUrl: string = "", chainId: string = DEFAULT_CHAIN_ID) { if (!isUrl(gqlUrl)) { throw new Error('Path to a GQL endpoint should be provided.'); } + if (restUrl && !isUrl(restUrl)) { + throw new Error('REST endpoint is not a URL string.'); + } + this._endpoints = { rest: restUrl, gql: gqlUrl }; - this._client = new RegistryClient(restUrl, gqlUrl); + this._client = new RegistryClient(gqlUrl, restUrl); this._chainID = chainId; this._chain = { diff --git a/src/nameservice-expiry.test.ts b/src/nameservice-expiry.test.ts index afa49ed..a52ab3b 100644 --- a/src/nameservice-expiry.test.ts +++ b/src/nameservice-expiry.test.ts @@ -20,7 +20,7 @@ const nameserviceExpiryTests = () => { let recordExpiryTime: Date; beforeAll(async () => { - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); // Create bond. bondId = await registry.getNextBondId(privateKey); diff --git a/src/naming.test.ts b/src/naming.test.ts index 943d122..7445e41 100644 --- a/src/naming.test.ts +++ b/src/naming.test.ts @@ -25,7 +25,7 @@ const namingTests = () => { let crn: string; beforeAll(async () => { - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); // Create bond. bondId = await registry.getNextBondId(privateKey); diff --git a/src/registry-client.ts b/src/registry-client.ts index 79cc5f7..ec49994 100644 --- a/src/registry-client.ts +++ b/src/registry-client.ts @@ -122,15 +122,14 @@ export class RegistryClient { /** * New Client. */ - constructor(restEndpoint: string, gqlEndpoint: string) { - assert(restEndpoint); - - this._restEndpoint = restEndpoint; - + constructor(gqlEndpoint: string, restEndpoint: string) { + assert(gqlEndpoint); this._graph = graphqlClient(gqlEndpoint, { method: 'POST', asJSON: true }); + + this._restEndpoint = restEndpoint; } /** diff --git a/src/sdk.test.ts b/src/sdk.test.ts index 0380d86..80038cf 100644 --- a/src/sdk.test.ts +++ b/src/sdk.test.ts @@ -15,7 +15,7 @@ describe('Querying', () => { let bondId: string; beforeAll(async () => { - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); bondId = await provisionBondId(registry, privateKey, fee); const publishNewWatcherVersion = async () => { diff --git a/src/testing/helper.ts b/src/testing/helper.ts index be127b1..86cde9f 100644 --- a/src/testing/helper.ts +++ b/src/testing/helper.ts @@ -3,7 +3,7 @@ import yaml from 'node-yaml'; import semver from 'semver'; import { Fee } from '@tharsis/transactions'; -import { Registry } from '../index'; +import { DEFAULT_CHAIN_ID, Registry } from '../index'; export const ensureUpdatedConfig = async (path: string) => { const conf = await yaml.read(path); @@ -37,7 +37,7 @@ export const getConfig = () => { assert(process.env.PRIVATE_KEY); return { - chainId: process.env.COSMOS_CHAIN_ID || 'laconic_9000-1', + chainId: process.env.COSMOS_CHAIN_ID || DEFAULT_CHAIN_ID, privateKey: process.env.PRIVATE_KEY, restEndpoint: process.env.LACONICD_REST_ENDPOINT || 'http://localhost:1317', gqlEndpoint: process.env.LACONICD_GQL_ENDPOINT || 'http://localhost:9473/api', diff --git a/src/util.test.ts b/src/util.test.ts index c0103c6..df58da1 100644 --- a/src/util.test.ts +++ b/src/util.test.ts @@ -18,7 +18,7 @@ const utilTests = () => { let watcherId: string; beforeAll(async () => { - registry = new Registry(restEndpoint, gqlEndpoint, chainId); + registry = new Registry(gqlEndpoint, restEndpoint, chainId); // Create bond. bondId = await registry.getNextBondId(privateKey); diff --git a/yarn.lock b/yarn.lock index 0d62909..38fbfb0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1169,6 +1169,13 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/tiny-secp256k1@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/tiny-secp256k1/-/tiny-secp256k1-1.0.0.tgz#0c8fde0dfd320c9d089907e37805d67a346ad991" + integrity sha512-IW3dFGNyVkVLC1MCMogVWQaKH/ZtjPQdOW9c3X128o5lVpFYNsq/l3Qo1pV7sfTmvDzWEXR3QTxg1TMy1pyaAQ== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -1331,6 +1338,13 @@ big-integer@1.6.36: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bip32@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" @@ -1670,7 +1684,7 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.266.tgz#b2ce973eedbff309e2b98d1ed348e447bd4681fe" integrity sha512-saJTYECxUSv7eSpnXw0XIEvUkP9x4s/x2mm3TVX7k4rIFS6f5TjBih1B5h437WzIhHQjid+d8ouQzPQskMervQ== -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -1871,6 +1885,11 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2738,6 +2757,11 @@ multiformats@^9.5.4: resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.6.4.tgz#5dce1f11a407dbb69aa612cb7e5076069bb759ca" integrity sha512-fCCB6XMrr6CqJiHNjfFNGT0v//dxOBMrOMqUIzpPc/mmITweLEyhvMpY9bF+jZ9z3vaMAau5E8B68DW77QMXkg== +nan@^2.13.2: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -3252,12 +3276,16 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -tiny-secp256k1@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-2.2.1.tgz#a61d4791b7031aa08a9453178a131349c3e10f9b" - integrity sha512-/U4xfVqnVxJXN4YVsru0E6t5wVncu2uunB8+RVR40fYUxkKYUPS10f+ePQZgFBoE/Jbf9H1NBveupF2VmB58Ng== +tiny-secp256k1@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== dependencies: - uint8array-tools "0.0.7" + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" tmpl@1.0.5: version "1.0.5" @@ -3320,11 +3348,6 @@ typescript@^4.6.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== -uint8array-tools@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/uint8array-tools/-/uint8array-tools-0.0.7.tgz#a7a2bb5d8836eae2fade68c771454e6a438b390d" - integrity sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ== - update-browserslist-db@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" From 7ecd3eefa8c592418b50a90c7953e1abd1605671 Mon Sep 17 00:00:00 2001 From: nikugogoi Date: Fri, 9 Dec 2022 16:15:39 +0530 Subject: [PATCH 2/6] Add github workflow to publish package (#11) --- .github/workflows/publish.yaml | 32 ++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/publish.yaml diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..51b9c53 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,32 @@ +name: Publish npm package to gitea +on: + release: + types: [published] +jobs: + npm_publish: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [ 16.x ] + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: yarn + - name: Run yarn build + run: | + yarn build + - name: Configure git.vdb.to npm registry + run: | + npm config set registry https://git.vdb.to/api/packages/cerc-io/npm/ + - name: Authenticate to git.vdb.to registry + run: | + npm config set -- '//git.vdb.to/api/packages/cerc-io/npm/:_authToken' "${{ secrets.GITEA_PUBLISH_TOKEN }}" + - name: npm publish + run: | + npm publish diff --git a/package.json b/package.json index 4a3e3d1..a3f2dc2 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "laconic-sdk", + "name": "@cerc-io/laconic-sdk", "version": "0.1.0", "main": "dist/index.js", "types": "dist/index.d.ts", From 2a9223fdd34614aa1a90d733b52377d38e4909e7 Mon Sep 17 00:00:00 2001 From: nikugogoi Date: Fri, 9 Dec 2022 17:23:09 +0530 Subject: [PATCH 3/6] Add missing dependecies in package.json (#12) --- package.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/package.json b/package.json index a3f2dc2..ba8da1c 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,11 @@ "@ipld/dag-cbor": "^7.0.1", "@ipld/dag-json": "^8.0.9", "@metamask/eth-sig-util": "^4.0.0", + "@tharsis/address-converter": "^0.1.7", + "@tharsis/eip712": "^0.2.1", + "@tharsis/proto": "^0.1.16", + "@tharsis/provider": "^0.2.4", + "@tharsis/transactions": "^0.2.2", "axios": "^0.26.1", "bip32": "^3.0.1", "bip39": "^3.0.4", @@ -38,7 +43,9 @@ "js-yaml": "^3.14.1", "jsonschema": "^1.4.0", "lodash": "^4.17.21", + "multiformats": "^9.5.4", "node-yaml": "^4.0.1", + "secp256k1": "^4.0.1", "semver": "^7.3.5", "tiny-secp256k1": "^1.1.6" }, From 94920171ae8f29e7d2e132dd687c8a3c8239edc7 Mon Sep 17 00:00:00 2001 From: nikugogoi Date: Fri, 9 Dec 2022 17:35:49 +0530 Subject: [PATCH 4/6] Upgrade package version (#13) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ba8da1c..5881c5f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/laconic-sdk", - "version": "0.1.0", + "version": "0.1.2", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "git@github.com:cerc-io/laconic-sdk.git", From f2c7468ba89a5618db23c17c6d0796e4c4a0a112 Mon Sep 17 00:00:00 2001 From: nikugogoi Date: Fri, 9 Dec 2022 18:13:53 +0530 Subject: [PATCH 5/6] Fix version of bip32 package (#14) --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5881c5f..6959c3d 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@tharsis/provider": "^0.2.4", "@tharsis/transactions": "^0.2.2", "axios": "^0.26.1", - "bip32": "^3.0.1", + "bip32": "3.0.1", "bip39": "^3.0.4", "canonical-json": "^0.0.4", "ethers": "^5.6.2", diff --git a/yarn.lock b/yarn.lock index 38fbfb0..9c967be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1345,7 +1345,7 @@ bindings@^1.3.0: dependencies: file-uri-to-path "1.0.0" -bip32@^3.0.1: +bip32@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" integrity sha512-Uhpp9aEx3iyiO7CpbNGFxv9WcMIVdGoHG04doQ5Ln0u60uwDah7jUSc3QMV/fSZGm/Oo01/OeAmYevXV+Gz5jQ== From b73bb3e216affdb5f52cc65fad85989c5c7ca4dc Mon Sep 17 00:00:00 2001 From: nabarun Date: Fri, 9 Dec 2022 18:16:58 +0530 Subject: [PATCH 6/6] Upgrade package version to 0.1.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6959c3d..c120b2b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/laconic-sdk", - "version": "0.1.2", + "version": "0.1.4", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "git@github.com:cerc-io/laconic-sdk.git",