Skip to content
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,4 @@ task ktlint(type: JavaExec, group: "verification") {
classpath = configurations.ktlint
main = "com.github.shyiko.ktlint.Main"
args "$project.rootDir/**/src/main/**/*.kt", "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/reports/checkstyle/kotlin-checkstyle-report.xml"
}
}
3 changes: 2 additions & 1 deletion fearless-utils/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -79,14 +79,15 @@ dependencies {
implementation wsDep
implementation gsonDep
implementation web3jDep
implementation gsonDep
implementation apacheXercesDep
implementation xxHashDep

implementation coroutinesDep

testImplementation jUnitDep
testImplementation mockitoDep

implementation project(":schema")
}

def computeVersionName() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package jp.co.soramitsu.fearless_utils.encrypt.qr

import jp.co.soramitsu.fearless_utils.extensions.fromHex
import jp.co.soramitsu.fearless_utils.extensions.toHexString
import jp.co.soramitsu.schema.extensions.fromHex
import jp.co.soramitsu.schema.extensions.toHexString

private const val PREFIX = "substrate"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package jp.co.soramitsu.fearless_utils.runtime
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry
import jp.co.soramitsu.fearless_utils.runtime.metadata.RuntimeMetadata

class RuntimeSnapshot(
val typeRegistry: TypeRegistry,
val metadata: RuntimeMetadata
)
class RuntimeSnapshot {
lateinit var typeRegistry: TypeRegistry
lateinit var metadata: RuntimeMetadata
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package jp.co.soramitsu.fearless_utils.runtime

import jp.co.soramitsu.fearless_utils.extensions.toHexString
import jp.co.soramitsu.fearless_utils.hash.Hasher
import jp.co.soramitsu.fearless_utils.hash.Hasher.xxHash128
import jp.co.soramitsu.fearless_utils.hash.hashConcat
import jp.co.soramitsu.schema.extensions.toHexString

typealias HashFunction = (ByteArray) -> ByteArray

Expand Down Expand Up @@ -33,4 +33,4 @@ object StorageUtils {

return keyBytes.toHexString(withPrefix = true)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ internal fun String.splitTuple(): List<String> {
}

return result
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
package jp.co.soramitsu.fearless_utils.runtime.definitions

import com.google.gson.annotations.SerializedName
import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePreset
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.create
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.newBuilder
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.type
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.CollectionEnum
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.SetType
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct
import jp.co.soramitsu.schema.DynamicTypeResolver
import jp.co.soramitsu.schema.ParseResult
import jp.co.soramitsu.schema.TypeDefinitionParser
import jp.co.soramitsu.schema.TypePreset
import jp.co.soramitsu.schema.TypePresetBuilder
import jp.co.soramitsu.schema.create
import jp.co.soramitsu.schema.definitions.types.Type
import jp.co.soramitsu.schema.definitions.types.TypeReference
import jp.co.soramitsu.schema.definitions.types.composite.Alias
import jp.co.soramitsu.schema.definitions.types.composite.CollectionEnum
import jp.co.soramitsu.schema.definitions.types.composite.DictEnum
import jp.co.soramitsu.schema.definitions.types.composite.SetType
import jp.co.soramitsu.schema.definitions.types.composite.Struct
import jp.co.soramitsu.schema.getOrCreate
import jp.co.soramitsu.schema.newBuilder
import jp.co.soramitsu.schema.type
import java.math.BigInteger

class TypeDefinitionsTree(
Expand All @@ -33,31 +35,26 @@ class TypeDefinitionsTree(
}
}

class ParseResult(
val typePreset: TypePreset,
val unknownTypes: List<String>
)

private const val TOKEN_SET = "set"
private const val TOKEN_STRUCT = "struct"
private const val TOKEN_ENUM = "enum"

object TypeDefinitionParser {
object TypeDefinitionParserImpl : TypeDefinitionParser {

private class Params(
val types: Map<String, Any>,
val dynamicTypeResolver: DynamicTypeResolver,
val typesBuilder: TypePresetBuilder
)

fun parseBaseDefinitions(
tree: TypeDefinitionsTree,
override fun parseBaseDefinitions(
types: Map<String, Any>,
typePreset: TypePreset,
dynamicTypeResolver: DynamicTypeResolver = DynamicTypeResolver.defaultCompoundResolver()
dynamicTypeResolver: DynamicTypeResolver
): ParseResult {
val builder = typePreset.newBuilder()

val params = Params(tree.types, dynamicTypeResolver, builder)
val params = Params(types, dynamicTypeResolver, builder)

parseTypes(params)

Expand Down Expand Up @@ -199,4 +196,4 @@ object TypeDefinitionParser {
?: resolveDynamicType(parsingParams, name, typeDef)?.let(::TypeReference)
?: parsingParams.typesBuilder.create(name)
}
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package jp.co.soramitsu.fearless_utils.runtime.definitions.registry

import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias
import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.BitVec
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Bytes
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.CallBytes
Expand All @@ -24,25 +22,20 @@ import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.H512
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Null
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.OpaqueCall
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.SessionKeysSubstrate
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u128
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u16
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u256
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u32
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u64
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub.FakeType

typealias TypePresetBuilder = MutableMap<String, TypeReference>
typealias TypePreset = Map<String, TypeReference>

fun TypePreset.newBuilder(): TypePresetBuilder = toMutableMap()

fun TypePresetBuilder.type(type: Type<*>) {
val currentRef = getOrCreate(type.name)

currentRef.value = type
}
import jp.co.soramitsu.schema.TypePreset
import jp.co.soramitsu.schema.TypePresetBuilder
import jp.co.soramitsu.schema.definitions.types.composite.Alias
import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType
import jp.co.soramitsu.schema.definitions.types.primitives.u128
import jp.co.soramitsu.schema.definitions.types.primitives.u16
import jp.co.soramitsu.schema.definitions.types.primitives.u256
import jp.co.soramitsu.schema.definitions.types.primitives.u32
import jp.co.soramitsu.schema.definitions.types.primitives.u64
import jp.co.soramitsu.schema.definitions.types.primitives.u8
import jp.co.soramitsu.schema.definitions.types.stub.FakeType
import jp.co.soramitsu.schema.getOrCreate
import jp.co.soramitsu.schema.type
import jp.co.soramitsu.schema.typePreset

fun TypePresetBuilder.fakeType(name: String) {
type(FakeType(name))
Expand All @@ -56,18 +49,7 @@ fun TypePresetBuilder.alias(alias: String, original: String) {
type(typeAlias)
}

fun TypePresetBuilder.getOrCreate(definition: String) = getOrPut(definition) { TypeReference(null) }

fun TypePresetBuilder.create(definition: String): TypeReference =
TypeReference(null).also { put(definition, it) }

fun createTypePresetBuilder(): TypePresetBuilder = mutableMapOf()

fun typePreset(builder: TypePresetBuilder.() -> Unit): TypePreset {
return createTypePresetBuilder().apply(builder)
}

fun substratePreParsePreset(): TypePreset = typePreset {
fun substratePreParsePreset(runtime: RuntimeSnapshot = RuntimeSnapshot()): TypePreset = typePreset {
type(BooleanType)

type(u8)
Expand All @@ -79,7 +61,7 @@ fun substratePreParsePreset(): TypePreset = typePreset {

type(GenericAccountId)
type(Null)
type(GenericCall)
type(GenericCall(runtime))

fakeType("GenericBlock")

Expand All @@ -92,7 +74,7 @@ fun substratePreParsePreset(): TypePreset = typePreset {
type(Bytes)
type(BitVec)

type(Extrinsic)
type(Extrinsic(runtime))

type(CallBytes) // seems to be unused in runtime
type(EraType)
Expand All @@ -108,9 +90,9 @@ fun substratePreParsePreset(): TypePreset = typePreset {

type(GenericMultiAddress(this))

type(OpaqueCall)
type(OpaqueCall(runtime))

type(GenericEvent)
type(GenericEvent(runtime))
type(EventRecord(this))

alias("<T::Lookup as StaticLookup>::Source", "LookupSource")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package jp.co.soramitsu.fearless_utils.runtime.definitions.registry

import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver
import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.preprocessors.RemoveGenericNoisePreprocessor
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.skipAliases
import jp.co.soramitsu.fearless_utils.runtime.definitions.types.resolvedOrNull
import jp.co.soramitsu.schema.DynamicTypeResolver
import jp.co.soramitsu.schema.definitions.types.Type
import jp.co.soramitsu.schema.definitions.types.TypeReference
import jp.co.soramitsu.schema.definitions.types.resolvedOrNull
import jp.co.soramitsu.schema.definitions.types.skipAliases

interface RequestPreprocessor {

Expand All @@ -14,7 +14,7 @@ interface RequestPreprocessor {

class TypeRegistry(
val types: Map<String, TypeReference> = mapOf(),
val dynamicTypeResolver: DynamicTypeResolver
val dynamicTypeResolver: DynamicTypeResolver = DynamicTypeResolver.defaultCompoundResolver()
) {

operator fun get(
Expand Down
Loading