Thomas E Lackey
b5fce86d48
See also: cerc-io/laconicd#113 ![image](/attachments/db05bbb6-86ca-4fbb-a8a4-fcd06501b1b1) ``` message ApplicationRecord { string type = 1 [(gogoproto.moretags) = "json:\"type\" yaml:\"type\""]; string name = 2 [(gogoproto.moretags) = "json:\"name\" yaml:\"name\""]; string description = 3 [(gogoproto.moretags) = "json:\"description\" yaml:\"description\""]; string version = 4 [(gogoproto.moretags) = "json:\"version\" yaml:\"version\""]; string homepage = 5 [(gogoproto.moretags) = "json:\"homepage\" yaml:\"homepage\""]; string license = 6 [(gogoproto.moretags) = "json:\"license\" yaml:\"license\""]; string author = 7 [(gogoproto.moretags) = "json:\"author\" yaml:\"author\""]; string repository = 8 [(gogoproto.moretags) = "json:\"repository\" yaml:\"repository\""]; string repository_tag = 9 [(gogoproto.moretags) = "json:\"repositoryTag\" yaml:\"repositoryTag\""]; string app_version = 10 [(gogoproto.moretags) = "json:\"appVersion\" yaml:\"appVersion\""]; string app_type = 11 [(gogoproto.moretags) = "json:\"appType\" yaml:\"appType\""]; string meta = 20 [(gogoproto.moretags) = "json:\"meta\" yaml:\"meta\""]; repeated string tags = 21 [(gogoproto.moretags) = "json:\"tags\" yaml:\"tags\""]; } message WebAppDeploymentRecord { string type = 1 [(gogoproto.moretags) = "json:\"type\" yaml:\"type\""]; string name = 2 [(gogoproto.moretags) = "json:\"name\" yaml:\"name\""]; string description = 3 [(gogoproto.moretags) = "json:\"description\" yaml:\"description\""]; string version = 4 [(gogoproto.moretags) = "json:\"version\" yaml:\"version\""]; string application = 5 [(gogoproto.moretags) = "json:\"application\" yaml:\"application\""]; string url = 6 [(gogoproto.moretags) = "json:\"\" yaml:\"name\""]; string meta = 20 [(gogoproto.moretags) = "json:\"meta\" yaml:\"meta\""]; repeated string tags = 21 [(gogoproto.moretags) = "json:\"tags\" yaml:\"tags\""]; } message GeneralRecord { string type = 1 [(gogoproto.moretags) = "json:\"type\" yaml:\"type\""]; string name = 2 [(gogoproto.moretags) = "json:\"name\" yaml:\"name\""]; string description = 3 [(gogoproto.moretags) = "json:\"description\" yaml:\"description\""]; string version = 4 [(gogoproto.moretags) = "json:\"version\" yaml:\"version\""]; string category = 5 [(gogoproto.moretags) = "json:\"category\" yaml:\"category\""]; string value = 6 [(gogoproto.moretags) = "json:\"value\" yaml:\"value\""]; string meta = 20 [(gogoproto.moretags) = "json:\"meta\" yaml:\"meta\""]; repeated string tags = 21 [(gogoproto.moretags) = "json:\"tags\" yaml:\"tags\""]; ``` ``` ❯ cat general.yml record: type: GeneralRecord name: my-generic-record version: 0.0.1 value: "anything-goes-here" category: filter-by-this tags: - a - b - c meta: foo: bar bar: baz: boz ❯ bin/laconic cns record publish --filename general.yml --bond-id ba774084e25af5b29be126dda0bb910d93dea3634713a438ac257da5bbdc631c { "id": "bafyreigt3he52eia5g4i5pnst4dfcuwwgjdoul6xmcke2obz5os4xwoo3q" } ❯ bin/laconic cns record get --id bafyreigt3he52eia5g4i5pnst4dfcuwwgjdoul6xmcke2obz5os4xwoo3q [ { "id": "bafyreigt3he52eia5g4i5pnst4dfcuwwgjdoul6xmcke2obz5os4xwoo3q", "names": null, "owners": [ "9A66500A9AA574CAAB4EDB26F7333590BF452CE0" ], "bondId": "ba774084e25af5b29be126dda0bb910d93dea3634713a438ac257da5bbdc631c", "createTime": "2023-11-17T23:11:27Z", "expiryTime": "2024-11-16T23:11:27Z", "attributes": { "meta": "{\"foo\":\"bar\",\"bar\":{\"baz\":\"boz\"}}", "tags": [ "a", "b", "c" ], "type": "GeneralRecord", "name": "my-generic-record", "version": "0.0.1", "category": "filter-by-this", "value": "anything-goes-here" } } ] ``` > Note: The repeated items are preserved as lists, but the object/map ends up encoded as a string. It would be nice to avoid this. Reviewed-on: cerc-io/laconic-sdk#44 Reviewed-by: David Boreham <dboreham@noreply.git.vdb.to> Co-authored-by: Thomas E Lackey <telackey@bozemanpass.com> Co-committed-by: Thomas E Lackey <telackey@bozemanpass.com> |
||
---|---|---|
.gitea/workflows | ||
.github/workflows | ||
proto | ||
scripts | ||
src | ||
.env.example | ||
.gitignore | ||
.npmignore | ||
DEVELOPMENT.md | ||
Dockerfile-sdk | ||
entrypoint.sh | ||
jest.config.js | ||
package.json | ||
README.md | ||
tsconfig.json | ||
yarn.lock |
laconic-sdk
Client library used by TS/JS applications to communicate with laconicd.
Tests
Follow these steps to run the tests:
-
After cloning this repo run:
yarn
-
Copy .env.example file and create a
.env
file. -
Clone the laconicd repo and change to repo directory.
-
Run the chain using
./init.sh
. -
Export the private key using:
laconicd keys export mykey --unarmored-hex --unsafe
-
Copy the private key and assign it to variable
PRIVATE_KEY
in the.env
file. -
Run the tests in laconic-sdk repo:
yarn test
-
Run the tests with auctions enabled
-
In laconicd repo run:
TEST_AUCTION_ENABLED=true ./init.sh
-
Export the private key and change it in
.env
file again using:laconicd keys export mykey --unarmored-hex --unsafe
-
Run tests:
yarn test:auctions
-
-
Run the tests for record and authority expiry
-
In laconicd repo run:
TEST_REGISTRY_EXPIRY=true ./init.sh
-
Export the private key and change it in
.env
file again using:laconicd keys export mykey --unarmored-hex --unsafe
-
Run tests:
yarn test:nameservice-expiry
-
Development
Known Issues
-
Passing a float type value in watcher attributes throws error when sending
setRecord
message.failed to execute message; message index: 0: Invalid signature.: unauthorized
-
When sending
setRecord
message, an integer value passed in watcher attributes is parsed as float type in laconicd while unmarshalling json. -
setRecord
message throws error when fileds in Record message are not assigned.failed to pack and hash typedData primary type: provided data '<nil>' doesn't match type 'string' [tharsis/ethermint/ethereum/eip712/eip712.go:33]
Passing dummy values to work around issue.