From 8e59a7744f0e90f23ddb8a46efbe0728fc74a802 Mon Sep 17 00:00:00 2001 From: Robert McLeod Date: Thu, 26 Nov 2020 16:54:46 +0100 Subject: [PATCH] Update documentation, and falsey 'null' type to empty string for empty schema keys. --- README.md | 100 ++++++++++++++++++++++++++++++++++++++++------- src/index.js | 2 +- src/lib/utils.js | 4 +- 3 files changed, 89 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8a274843..b9fa6e83 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,19 @@ erc725.utils.decodeKeyValue(schemaKeyOrElement, hexValue) **Example** ```js +erc725.utils.decodeKeyValue( + // The schema definition + { + name: "LSP3Name", + key: "0xa5f15b1fa920bbdbc28f5d785e5224e3a66eb5f7d4092dc9ba82d5e5ae3abc87", + keyType: "Singleton", + valueContent: "String", + valueType: "string", + }, + // The value to decode, returned as epected from smart contract + '0x6d792d636f6f6c2d6e616d65' +) +> 'my-cool-name' ``` @@ -167,20 +180,19 @@ erc725.utils.encodeKeyValue(schemaKeyOrElement, value) **Example** ```js -erc725.utils.encodeKeyValue('LSPXName', 'My Cool name') -> '0x000000f...' - -erc725.utils.encodeKeyValue('0x245...', 'My Cool name') -> '0x000000f...' - -erc725.utils.encodeKeyValue({ - name: 'LSPXName', - key: '0x356566..', - keyType: 'Singleton', - valueType: 'string', - valueContent: 'String' -}, 'My Cool name') -> '0x000000f...' +erc725.utils.encodeKeyValue( + // The schema definition + { + name: "Username", + key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da", + keyType: "Singleton", + valueContent: "String", + valueType: "string", + }, + // the value to encode + 'my-cool-name' +) +> '0x6d792d636f6f6c2d6e616d65' ``` @@ -206,6 +218,40 @@ erc725.utils.decodeAllData(schema, data) **Example** ```js +erc725.decodeAllData( + // Array of schema keys + [ + { + name: "Username", + key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da", + keyType: "Singleton", + valueContent: "String", + valueType: "string", + }, + { + name: "Description", + key: "0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8", + keyType: "Singleton", + valueContent: "URL", + valueType: "string", + } + ], + // Array of data to decode + [ + { + key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da", + value: "0x6d792d636f6f6c2d6e616d65" + }, + { + key: "0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8", + value: "0x687474703a2f2f6d792d636f6f6c2d776562736974652e68746d6c" + } + ] +) + +> { Username: 'my-cool-name', Description'http://my-cool-website.html' } + +] ``` @@ -228,6 +274,32 @@ erc725.utils.encodeAllData(schema, data) **Example** ```js +erc725.encodeAllData( + [ + { + name: "Username", + key: "0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da", + keyType: "Singleton", + valueContent: "String", + valueType: "string", + }, + { + name: "Description", + key: "0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8", + keyType: "Singleton", + valueContent: "URL", + valueType: "string", + } + ], + { + Username: 'my-cool-name', + Description: 'http://my-cool-website.html + } +) +> [ + {key: '0xc55da378b3897c7aeec303b4fa7eceb3005a395160399831e4be123082c760da', value: '0x6d792d636f6f6c2d6e616d65' }, + {key: '0xfc5327884a7fb1912dcdd0d78d7e6753f03e61a8e0b845a4b62f5efde472d0a8', value: '0x687474703a2f2f6d792d636f6f6c2d776562736974652e68746d6c' } + ] ``` diff --git a/src/index.js b/src/index.js index 09a10671..f490065c 100644 --- a/src/index.js +++ b/src/index.js @@ -144,7 +144,7 @@ export default class ERC725 { } const results = {} // Add a null value by default for each schema item - this.options.schema.forEach(element => { results[element.name] = null }) + this.options.schema.forEach(element => { results[element.name] = '' }) for (let i = 0; i < allRawData.length; i++) { diff --git a/src/lib/utils.js b/src/lib/utils.js index 369e830b..71ed3e4b 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -32,7 +32,7 @@ export const utils = { const schemaElement = schema[index] let newSchemaElement = null - results[schemaElement.name] = null + results[schemaElement.name] = '' // ensure empty field per schema element // Looping through data for (let i = 0; i < allRawData.length; i++) { @@ -47,7 +47,7 @@ export const utils = { const elementKey = schemaElement.elementKey + Web3Utils.leftPad(dataElement.key.substr(dataElement.key.length - 32), 32).replace('0x', '') // Form new schema schema to check data against - let newElementValueContent = '' + let newElementValueContent try { // TODO: QUESTION: what about an array of uints