From 88fd8940c6811ee354780d051e41cec56880ecf3 Mon Sep 17 00:00:00 2001 From: Andreas Richter <708186+richtera@users.noreply.github.com> Date: Sat, 6 Apr 2024 11:57:09 -0400 Subject: [PATCH] fix: Refactor to remove unnecessary changes --- biome.json | 3 +++ examples/src/instantiation.js | 2 +- package.json | 2 +- src/constants/constants.ts | 4 +-- src/index.test.ts | 30 +++++++++------------- src/index.ts | 30 +++++++++++----------- src/lib/decodeData.ts | 4 +-- src/lib/decodeMappingKey.ts | 2 +- src/lib/detector.test.ts | 15 ++++++----- src/lib/detector.ts | 2 +- src/lib/encodeKeyName.ts | 2 +- src/lib/encoder.test.ts | 20 +++++++-------- src/lib/encoder.ts | 18 ++++++------- src/lib/getDataFromExternalSources.test.ts | 2 +- src/lib/getDataFromExternalSources.ts | 4 +-- src/lib/getSchemaElement.ts | 2 +- src/lib/permissions.ts | 4 +-- src/lib/utils.test.ts | 2 +- src/lib/utils.ts | 2 +- src/provider/providerWrapper.ts | 4 +-- 20 files changed, 76 insertions(+), 78 deletions(-) diff --git a/biome.json b/biome.json index 996e03e6..c8064488 100644 --- a/biome.json +++ b/biome.json @@ -23,6 +23,9 @@ "trailingComma": "all" } }, + "organizeImports": { + "enabled": false + }, "files": { "ignore": ["node_modules", "build", "coverage", ".vscode"] } diff --git a/examples/src/instantiation.js b/examples/src/instantiation.js index f3f37f16..bb1f3809 100644 --- a/examples/src/instantiation.js +++ b/examples/src/instantiation.js @@ -1,5 +1,5 @@ -import { ERC725 } from '@erc725/erc725.js'; import Web3 from 'web3'; +import { ERC725 } from '@erc725/erc725.js'; // this is needed because node does not support `fetch` out of the box // isomorphic-fetch is not needed in a browser environment diff --git a/package.json b/package.json index f9faf2ab..82fe37cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@erc725/erc725.js", - "version": "0.24.1-dev.4", + "version": "0.24.1-dev.5", "description": "Library to interact with ERC725 smart contracts", "main": "build/main/src/index.js", "typings": "build/main/src/index.d.ts", diff --git a/src/constants/constants.ts b/src/constants/constants.ts index 036ceed5..a1be8863 100644 --- a/src/constants/constants.ts +++ b/src/constants/constants.ts @@ -13,10 +13,8 @@ */ import { arrToBufArr, bufferToHex } from 'ethereumjs-util'; -/* eslint-disable @typescript-eslint/ban-types */ -import { keccak256, numberToHex } from 'web3-utils'; -import { Encoding, Method, MethodData } from '../types/Method'; +import { MethodData, Encoding, Method } from '../types/Method'; // https://github.com/ERC725Alliance/ERC725/blob/develop/docs/ERC-725.md#specification export const ERC725Y_INTERFACE_IDS = { diff --git a/src/index.test.ts b/src/index.test.ts index 5fc6614f..47eb3518 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -20,27 +20,14 @@ // Tests for the @erc725/erc725.js package import { assert } from 'chai'; -import * as sinon from 'sinon'; import Web3 from 'web3'; +import * as sinon from 'sinon'; import { hexToNumber, leftPad, numberToHex } from 'web3-utils'; // examples of schemas to load (for testing) -import { LSP1Schema, LSP3Schema, LSP6Schema, LSP12Schema } from './schemas'; - -import ERC725, { - checkPermissions, - decodePermissions, - encodeKeyName, - encodePermissions, - supportsInterface, -} from '.'; -import { EthereumProvider, HttpProvider } from '../test/mockProviders'; -import { mockSchema } from '../test/mockSchema'; -import { - generateAllData, - generateAllRawData, - generateAllResults, -} from '../test/testHelpers'; +import { LSP1Schema, LSP12Schema, LSP3Schema, LSP6Schema } from './schemas'; + +import ERC725 from '.'; import { decodeKeyValue, encodeKey, @@ -48,6 +35,13 @@ import { hashData, } from './lib/utils'; import { ERC725JSONSchema } from './types/ERC725JSONSchema'; +import { EthereumProvider, HttpProvider } from '../test/mockProviders'; +import { mockSchema } from '../test/mockSchema'; +import { + generateAllData, + generateAllRawData, + generateAllResults, +} from '../test/testHelpers'; import 'isomorphic-fetch'; @@ -56,8 +50,8 @@ import { LSP6_DEFAULT_PERMISSIONS, SUPPORTED_VERIFICATION_METHOD_STRINGS, } from './constants/constants'; -import { INTERFACE_IDS_0_12_0 } from './constants/interfaces'; import { decodeKey } from './lib/decodeData'; +import { INTERFACE_IDS_0_12_0 } from './constants/interfaces'; const address = '0x0c03fba782b07bcf810deb3b7f0595024a444f4e'; diff --git a/src/index.ts b/src/index.ts index badd0a79..06a99e3d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,48 +20,48 @@ * @date 2020 */ -import HttpProvider from 'web3-providers-http'; import { isAddress } from 'web3-utils'; +import HttpProvider from 'web3-providers-http'; import { ProviderWrapper } from './provider/providerWrapper'; import { - convertIPFSGatewayUrl, - duplicateMultiTypeERC725SchemaEntry, encodeData, + convertIPFSGatewayUrl, generateSchemasFromDynamicKeys, + duplicateMultiTypeERC725SchemaEntry, } from './lib/utils'; -import { isValidSignature } from './lib/isValidSignature'; import { getSchema } from './lib/schemaParser'; +import { isValidSignature } from './lib/isValidSignature'; import { DEFAULT_GAS_VALUE } from './constants/constants'; import { encodeKeyName, isDynamicKeyName } from './lib/encodeKeyName'; -import { decodeData } from './lib/decodeData'; -import { decodeMappingKey } from './lib/decodeMappingKey'; -import { _supportsInterface, checkPermissions } from './lib/detector'; -import { decodeValueType, encodeValueType } from './lib/encoder'; -import { getData } from './lib/getData'; -import { getDataFromExternalSources } from './lib/getDataFromExternalSources'; -import { decodePermissions, encodePermissions } from './lib/permissions'; // Types import { ERC725Config, ERC725Options } from './types/Config'; +import { Permissions } from './types/Method'; import { ERC725JSONSchema, ERC725JSONSchemaKeyType, ERC725JSONSchemaValueContent, ERC725JSONSchemaValueType, } from './types/ERC725JSONSchema'; -import { GetDataDynamicKey, GetDataInput } from './types/GetData'; -import { Permissions } from './types/Method'; import { DecodeDataInput, DecodeDataOutput, EncodeDataInput, FetchDataOutput, } from './types/decodeData'; +import { GetDataDynamicKey, GetDataInput } from './types/GetData'; +import { decodeData } from './lib/decodeData'; +import { getDataFromExternalSources } from './lib/getDataFromExternalSources'; import { DynamicKeyPart, DynamicKeyParts } from './types/dynamicKeys'; +import { getData } from './lib/getData'; +import { decodeValueType, encodeValueType } from './lib/encoder'; +import { checkPermissions, internalSupportsInterface } from './lib/detector'; +import { decodeMappingKey } from './lib/decodeMappingKey'; +import { encodePermissions, decodePermissions } from './lib/permissions'; export { ERC725JSONSchema, @@ -121,7 +121,7 @@ export async function supportsInterface( throw new Error('Missing RPC URL'); } - return _supportsInterface(interfaceIdOrName, { + return internalSupportsInterface(interfaceIdOrName, { address: options.address, provider: options.provider || @@ -595,7 +595,7 @@ export class ERC725 { async supportsInterface(interfaceIdOrName: string): Promise { const { address, provider } = this.getAddressAndProvider(); - return _supportsInterface(interfaceIdOrName, { + return internalSupportsInterface(interfaceIdOrName, { address, provider, }); diff --git a/src/lib/decodeData.ts b/src/lib/decodeData.ts index 85819b56..8e9532ef 100644 --- a/src/lib/decodeData.ts +++ b/src/lib/decodeData.ts @@ -22,14 +22,14 @@ import { isHexStrict } from 'web3-utils'; import { COMPACT_BYTES_ARRAY_STRING } from '../constants/constants'; +import { DecodeDataInput, DecodeDataOutput } from '../types/decodeData'; import { ALL_VALUE_TYPES, ERC725JSONSchema, isValidValueType, } from '../types/ERC725JSONSchema'; -import { DecodeDataInput, DecodeDataOutput } from '../types/decodeData'; import { isDynamicKeyName } from './encodeKeyName'; -import { decodeValueType, valueContentEncodingMap } from './encoder'; +import { valueContentEncodingMap, decodeValueType } from './encoder'; import { getSchemaElement } from './getSchemaElement'; import { decodeKeyValue, encodeArrayKey } from './utils'; diff --git a/src/lib/decodeMappingKey.ts b/src/lib/decodeMappingKey.ts index 0fd6d07c..5f2b6cd9 100644 --- a/src/lib/decodeMappingKey.ts +++ b/src/lib/decodeMappingKey.ts @@ -19,9 +19,9 @@ */ import { isHex, padLeft } from 'web3-utils'; +import { decodeValueType } from './encoder'; import { ERC725JSONSchema } from '../types/ERC725JSONSchema'; import { DynamicKeyPart } from '../types/dynamicKeys'; -import { decodeValueType } from './encoder'; function isDynamicKeyPart(keyPartName: string): boolean { return ( diff --git a/src/lib/detector.test.ts b/src/lib/detector.test.ts index ec418d25..d397feae 100644 --- a/src/lib/detector.test.ts +++ b/src/lib/detector.test.ts @@ -24,7 +24,7 @@ import { expect } from 'chai'; import * as sinon from 'sinon'; import { INTERFACE_IDS_0_12_0 } from '../constants/interfaces'; -import { _supportsInterface, checkPermissions } from './detector'; +import { internalSupportsInterface, checkPermissions } from './detector'; describe('supportsInterface', () => { it('it should return true if the contract supports the interface with name', async () => { @@ -37,10 +37,13 @@ describe('supportsInterface', () => { .withArgs(contractAddress, INTERFACE_IDS_0_12_0[interfaceName]) .returns(Promise.resolve(true)); - const doesSupportInterface = await _supportsInterface(interfaceName, { - address: contractAddress, - provider: providerStub, - }); + const doesSupportInterface = await internalSupportsInterface( + interfaceName, + { + address: contractAddress, + provider: providerStub, + }, + ); expect(doesSupportInterface).to.be.true; }); @@ -55,7 +58,7 @@ describe('supportsInterface', () => { .withArgs(contractAddress, interfaceId) .returns(Promise.resolve(true)); - const doesSupportInterface = await _supportsInterface(interfaceId, { + const doesSupportInterface = await internalSupportsInterface(interfaceId, { address: contractAddress, provider: providerStub, }); diff --git a/src/lib/detector.ts b/src/lib/detector.ts index e6b407b2..1fae16a1 100644 --- a/src/lib/detector.ts +++ b/src/lib/detector.ts @@ -36,7 +36,7 @@ import { * @param options Object with address and RPC URL. * @returns {Promise} if interface is supported. */ -export const _supportsInterface = async ( +export const internalSupportsInterface = async ( interfaceIdOrName: string, options: AddressProviderOptions, ): Promise => { diff --git a/src/lib/encodeKeyName.ts b/src/lib/encodeKeyName.ts index 863e56d4..24328a64 100644 --- a/src/lib/encodeKeyName.ts +++ b/src/lib/encodeKeyName.ts @@ -26,8 +26,8 @@ import { padLeft, } from 'web3-utils'; -import { DynamicKeyParts } from '../types/dynamicKeys'; import { guessKeyTypeFromKeyName } from './utils'; +import { DynamicKeyParts } from '../types/dynamicKeys'; // https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-2-ERC725YJSONSchema.md#mapping diff --git a/src/lib/encoder.test.ts b/src/lib/encoder.test.ts index 94bcdf3b..d8559c87 100644 --- a/src/lib/encoder.test.ts +++ b/src/lib/encoder.test.ts @@ -14,29 +14,29 @@ /* eslint-disable no-unused-expressions */ -import { assert, expect } from 'chai'; +import { expect, assert } from 'chai'; import { keccak256, - padLeft, + utf8ToHex, stripHexPrefix, toBN, toHex, - utf8ToHex, + padLeft, } from 'web3-utils'; +import { + valueContentEncodingMap, + encodeValueType, + decodeValueType, + encodeValueContent, + decodeValueContent, +} from './encoder'; import { NONE_VERIFICATION_METHOD, SUPPORTED_VERIFICATION_METHOD_HASHES, SUPPORTED_VERIFICATION_METHOD_STRINGS, } from '../constants/constants'; import { URLDataToEncode, URLDataWithHash } from '../types'; -import { - decodeValueContent, - decodeValueType, - encodeValueContent, - encodeValueType, - valueContentEncodingMap, -} from './encoder'; describe('encoder', () => { describe('valueType', () => { diff --git a/src/lib/encoder.ts b/src/lib/encoder.ts index 94712faf..300852c4 100644 --- a/src/lib/encoder.ts +++ b/src/lib/encoder.ts @@ -28,8 +28,6 @@ import AbiCoder from 'web3-eth-abi'; import { - bytesToHex, - hexToBytes, hexToNumber, hexToUtf8, isAddress, @@ -37,28 +35,30 @@ import { keccak256, numberToHex, padLeft, - stripHexPrefix, - toBN, toChecksumAddress, - toHex, utf8ToHex, + stripHexPrefix, + hexToBytes, + bytesToHex, + toHex, + toBN, } from 'web3-utils'; import { URLDataToEncode, URLDataWithHash, Verification } from '../types'; import { AssetURLEncode } from '../types/encodeData'; import { - NONE_VERIFICATION_METHOD, SUPPORTED_VERIFICATION_METHOD_STRINGS, + NONE_VERIFICATION_METHOD, } from '../constants/constants'; -import { ERC725JSONSchemaValueType } from '../types/ERC725JSONSchema'; import { - countNumberOfBytes, - countSignificantBits, getVerificationMethod, hashData, + countNumberOfBytes, isValidUintSize, + countSignificantBits, } from './utils'; +import { ERC725JSONSchemaValueType } from '../types/ERC725JSONSchema'; const abiCoder = AbiCoder; diff --git a/src/lib/getDataFromExternalSources.test.ts b/src/lib/getDataFromExternalSources.test.ts index 6dcec1af..c8cd7659 100644 --- a/src/lib/getDataFromExternalSources.test.ts +++ b/src/lib/getDataFromExternalSources.test.ts @@ -18,8 +18,8 @@ import { expect } from 'chai'; import { ERC725JSONSchema } from '../types/ERC725JSONSchema'; -import { DecodeDataOutput } from '../types/decodeData'; import { getDataFromExternalSources } from './getDataFromExternalSources'; +import { DecodeDataOutput } from '../types/decodeData'; const IPFS_GATEWAY_MOCK = 'https://mock-ipfs.mock/ipfs/'; diff --git a/src/lib/getDataFromExternalSources.ts b/src/lib/getDataFromExternalSources.ts index 599dd881..dd6416ff 100644 --- a/src/lib/getDataFromExternalSources.ts +++ b/src/lib/getDataFromExternalSources.ts @@ -21,13 +21,13 @@ import { arrToBufArr } from 'ethereumjs-util'; -import { URLDataWithHash } from '../types'; -import { ERC725JSONSchema } from '../types/ERC725JSONSchema'; import { DecodeDataOutput, GetDataExternalSourcesOutput, } from '../types/decodeData'; +import { ERC725JSONSchema } from '../types/ERC725JSONSchema'; import { isDataAuthentic, patchIPFSUrlsIfApplicable } from './utils'; +import { URLDataWithHash } from '../types'; export const getDataFromExternalSources = ( schemas: ERC725JSONSchema[], diff --git a/src/lib/getSchemaElement.ts b/src/lib/getSchemaElement.ts index cbe8c3c7..139f70d1 100644 --- a/src/lib/getSchemaElement.ts +++ b/src/lib/getSchemaElement.ts @@ -18,8 +18,8 @@ */ import { isHex, isHexStrict } from 'web3-utils'; -import { ERC725JSONSchema } from '../types/ERC725JSONSchema'; import { DynamicKeyParts } from '../types/dynamicKeys'; +import { ERC725JSONSchema } from '../types/ERC725JSONSchema'; import { encodeKeyName, generateDynamicKeyName, diff --git a/src/lib/permissions.ts b/src/lib/permissions.ts index b6e405df..15647f5b 100644 --- a/src/lib/permissions.ts +++ b/src/lib/permissions.ts @@ -1,4 +1,4 @@ -import { hexToNumber, leftPad, toHex } from 'web3-utils'; +import { hexToNumber, leftPad, numberToHex } from 'web3-utils'; import { LSP6_DEFAULT_PERMISSIONS } from '../constants/constants'; import { Permissions } from '../types/Method'; @@ -26,7 +26,7 @@ export function encodePermissions(permissions: Permissions): string { } } // Convert the final BigInt permission value back to a hex string, properly padded - return leftPad(toHex(basePermissions.toString()), 64); + return leftPad(numberToHex(basePermissions.toString()), 64); } export function decodePermissions(permissionHex: string) { diff --git a/src/lib/utils.test.ts b/src/lib/utils.test.ts index 30000c3a..5ae5b63d 100644 --- a/src/lib/utils.test.ts +++ b/src/lib/utils.test.ts @@ -14,8 +14,8 @@ /* eslint-disable no-unused-expressions */ -import assert from 'assert'; import { expect } from 'chai'; +import assert from 'assert'; import { keccak256, utf8ToHex } from 'web3-utils'; import { diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 6b3e8fcf..ca625f6e 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -30,8 +30,8 @@ import { } from 'web3-utils'; import { - EncodeDataReturn, URLDataToEncode, + EncodeDataReturn, URLDataWithHash, Verification, } from '../types'; diff --git a/src/provider/providerWrapper.ts b/src/provider/providerWrapper.ts index fde376ec..700b960c 100644 --- a/src/provider/providerWrapper.ts +++ b/src/provider/providerWrapper.ts @@ -24,11 +24,11 @@ import AbiCoder from 'web3-eth-abi'; -import { ERC725Y_INTERFACE_IDS, ERC725_VERSION } from '../constants/constants'; -import { constructJSONRPC, decodeResult } from '../lib/provider-wrapper-utils'; import { JsonRpc } from '../types/JsonRpc'; import { Method } from '../types/Method'; +import { constructJSONRPC, decodeResult } from '../lib/provider-wrapper-utils'; import { ProviderTypes } from '../types/provider'; +import { ERC725Y_INTERFACE_IDS, ERC725_VERSION } from '../constants/constants'; const abiCoder = AbiCoder;