-
Notifications
You must be signed in to change notification settings - Fork 81
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7b49d1d
commit 5706b50
Showing
5 changed files
with
79 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# @dfinity/didc | ||
|
||
A multi-purpose Candid tool for JavaScript projects, including encoding and decoding Candid values. | ||
|
||
## Usage | ||
|
||
```javascript | ||
import { getServiceMethods, encode, decode } from "@dfinity/didc"; | ||
|
||
// The IDL in text format to be used, most canisters expose their IDL through | ||
// the `candid:service` public metadata. | ||
// | ||
// You can fetch the IDL with an agent call or dfx with `dfx canister metadata <canisterId> candid:service` | ||
export const IDL = ` | ||
type StoreNumberInput = record { | ||
number : nat64; | ||
}; | ||
service : { | ||
store_number : (input : StoreNumberInput) -> (); | ||
get_number : () -> (nat64) query; | ||
}; | ||
`; | ||
|
||
// Gets the service methods from the IDL and returns an array of the methods. | ||
// | ||
// Example returned value: ['store_number', 'get_number'] | ||
const methods = getServiceMethods(IDL); | ||
|
||
// Encodes a candid text representation of a value to a hex representation. | ||
// | ||
// Example returned value: '4449444c016c01c98dea8b0a7801005a00000000000000' | ||
const encoded encode({ | ||
idl: IDL, | ||
input: "(record { number=90; })", | ||
serviceMethod: "store_number", | ||
targetFormat: "hex", | ||
}); | ||
// Decodes a hex representation of a candid value to a text representation. | ||
// | ||
// Example returned value: '(90 : nat64)' | ||
const decoded = decode({ | ||
idl: IDL, | ||
input: "4449444c0001785a00000000000000", | ||
serviceMethod: "get_number", | ||
inputFormat: "hex", | ||
targetFormat: "candid", | ||
}); | ||
``` | ||
### Web Usage | ||
For web usage, you need to initialize the async wasm module before using the functions. | ||
```javascript | ||
import init, { encode } from "@dfinity/didc"; | ||
await init(); | ||
// then you can use the functions because the wasm will be initialized | ||
const encoded = encode({ | ||
idl: IDL, | ||
input: "(record { number=90; })", | ||
serviceMethod: "store_number", | ||
targetFormat: "hex", | ||
}); | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters