From db525785a642897dbb3e0c775f64c82cdb243ace Mon Sep 17 00:00:00 2001 From: CJ42 Date: Tue, 25 Jun 2024 15:31:08 +0100 Subject: [PATCH] docs: add descriptions for encoding / decoding tuples --- docs/methods.md | 137 +++++++++++++++++++++++++++++-------- src/lib/decodeData.test.ts | 11 ++- 2 files changed, 117 insertions(+), 31 deletions(-) diff --git a/docs/methods.md b/docs/methods.md index e2e1d552..953f3062 100644 --- a/docs/methods.md +++ b/docs/methods.md @@ -96,6 +96,40 @@ After the `data` is encoded, the object is ready to be stored in smart contracts #### Examples +
+ **Encode** a Singleton data key + +```javascript title="encode a Singleton data key of valueContent Address" +import ERC725 from '@erc725/erc725.js'; + +const schemas = [ + { + name: 'LSP1UniversalReceiverDelegate', + key: '0x0cfc51aec37c55a4d0b1a65c6255c4bf2fbdf6277f3cc0730c45b828b6db8b47', + keyType: 'Singleton', + valueType: 'address', + valueContent: 'Address', + }, +]; + +const myErc725 = new ERC725(schemas); + +myErc725.encodeData([ + { + keyName: 'LSP1UniversalReceiverDelegate', + value: '0x1183790f29BE3cDfD0A102862fEA1a4a30b3AdAb', + }, +]); +/** +{ + keys: ['0x0cfc51aec37c55a4d0b1a65c6255c4bf2fbdf6277f3cc0730c45b828b6db8b47'], + values: ['0x1183790f29be3cdfd0a102862fea1a4a30b3adab'], +} +*/ +``` + +
+
Encode a VerifiableURI with JSON and uploaded URL @@ -166,39 +200,10 @@ myErc725.encodeData([ */ ``` -```javascript title="encode a Singleton data key of valueContent Address" -import ERC725 from '@erc725/erc725.js'; - -const schemas = [ - { - name: 'LSP1UniversalReceiverDelegate', - key: '0x0cfc51aec37c55a4d0b1a65c6255c4bf2fbdf6277f3cc0730c45b828b6db8b47', - keyType: 'Singleton', - valueType: 'address', - valueContent: 'Address', - }, -]; - -const myErc725 = new ERC725(schemas); - -myErc725.encodeData([ - { - keyName: 'LSP1UniversalReceiverDelegate', - value: '0x1183790f29BE3cDfD0A102862fEA1a4a30b3AdAb', - }, -]); -/** -{ - keys: ['0x0cfc51aec37c55a4d0b1a65c6255c4bf2fbdf6277f3cc0730c45b828b6db8b47'], - values: ['0x1183790f29be3cdfd0a102862fea1a4a30b3adab'], -} -*/ -``` -
- Encode a VerifiableURI with hash function, hash and uploaded URL + **Encode** a VerifiableURI with hash function, hash and uploaded URL ```javascript title="Encode a VerifiableURI with hash function, hash and uploaded URL" import ERC725 from '@erc725/erc725.js'; @@ -463,6 +468,46 @@ myErc725.encodeData(
+
+ Encode a tuple for valueType / valueContent + +```javascript title="Encode a tuple for valueType / valueContent" +import ERC725 from '@erc725/erc725.js'; + +const schemas = [ + { + name: 'LSP4CreatorsMap:
', + key: '0x6de85eaf5d982b4e5da00000
', + keyType: 'Mapping', + valueType: '(bytes4,uint128)', + valueContent: '(Bytes4,Number)', + }, +]; + +ERC725.encodeData( + [ + { + keyName: 'LSP4CreatorsMap:
', + dynamicKeyParts: "0xcafecafecafecafecafecafecafecafecafecafe" + value: ['0x24871b3d', '11'], + }, + ], + schemas, +); +/** +{ + keys: [ + '0xdf30dba06db6a30e65354d9a64c609861f089545ca58c6b4dbe31a5f338cb0e3', // -> data key for `LSP4CreatorsMap:0xcafecafecafecafecafecafecafecafecafecafe` + ], + values: [ + '0x24871b3d0000000000000000000000000000000b', // (bytes4,uint128) + ], +} +*/ +``` + +
+ --- ### encodeKeyName @@ -888,6 +933,38 @@ myErc725.decodeData( --- +#### Tuple Example + +```javascript title="Decode a key with tuple as valueType / valueContent" +import ERC725 from '@erc725/erc725.js'; + +const schemas = [ + { + name: 'LSP4CreatorsMap:
', + key: '0x6de85eaf5d982b4e5da00000
', + keyType: 'Mapping', + valueType: '(bytes4,uint128)', + valueContent: '(Bytes4,Number)', + }, +]; + +ERC725.decodeData( + { + keyName: 'LSP4CreatorsMap:
', + dynamicKeyParts: "0xcafecafecafecafecafecafecafecafecafecafe" + value: "0x24871b3d0000000000000000000000000000000b", + }, + schemas, +); +/** +{ + key: '0x6de85eaf5d982b4e5da00000cafecafecafecafecafecafecafecafecafecafe', + name: 'LSP4CreatorsMap:cafecafecafecafecafecafecafecafecafecafe', + value: ['0x24871b3d', 11] +} +*/ +``` + ### decodeValueType ```js diff --git a/src/lib/decodeData.test.ts b/src/lib/decodeData.test.ts index 662e5e16..c91d751d 100644 --- a/src/lib/decodeData.test.ts +++ b/src/lib/decodeData.test.ts @@ -63,6 +63,13 @@ describe('decodeData', () => { valueType: 'bytes', valueContent: 'VerifiableURI', }, + { + name: 'LSP4CreatorsMap:
', + key: '0x6de85eaf5d982b4e5da00000
', + keyType: 'Mapping', + valueType: '(bytes4,uint128)', + valueContent: '(Bytes4,Number)', + }, ]; it('decodes each key', () => { @@ -164,7 +171,7 @@ describe('decodeData', () => { expect(decodedData.name).to.eql('KeyOne'); }); - it('parses type tuples/Mixed correctly', () => { + it.only('parses type tuples/Mixed correctly', () => { const schema: ERC725JSONSchema = { name: 'MyDynamicKey:
', key: '0x', @@ -185,6 +192,8 @@ describe('decodeData', () => { [schema], ); + console.log('decodedData for tuple: ', decodedData); + expect(decodedData.value).to.eql(['0x11223344', 12]); });