diff --git a/packages/api-contract/src/MetaRegistry.ts b/packages/api-contract/src/MetaRegistry.ts index 0fbc3b371d..ba6646436f 100644 --- a/packages/api-contract/src/MetaRegistry.ts +++ b/packages/api-contract/src/MetaRegistry.ts @@ -260,7 +260,7 @@ export default class MetaRegistry extends MetadataRegistryLookup { return { info: TypeDefInfo.VecFixed, - ext: { length: vecLength, type }, + length: vecLength, // ex: { type: type } type: `[${type};${vecLength}]`, sub: this.typeDefFromMetaTypeAt(vecTypeIndex) }; diff --git a/packages/api-contract/test/compare/erc20.test.json b/packages/api-contract/test/compare/erc20.test.json index 697d6f5faa..9070bbfad9 100644 --- a/packages/api-contract/test/compare/erc20.test.json +++ b/packages/api-contract/test/compare/erc20.test.json @@ -18,10 +18,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -71,10 +68,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -116,10 +110,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -153,10 +144,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -183,10 +171,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -223,10 +208,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -256,10 +238,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -295,10 +274,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -340,10 +316,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -381,10 +354,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -402,10 +372,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -439,10 +406,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -460,10 +424,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -506,10 +467,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -527,10 +485,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -566,10 +521,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -587,10 +539,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -628,10 +577,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -677,10 +623,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -708,10 +651,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -725,10 +665,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -757,10 +694,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -802,10 +736,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -839,10 +770,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -869,10 +797,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -909,10 +834,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -942,10 +864,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -969,10 +888,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -998,10 +914,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1047,10 +960,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1082,10 +992,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1119,10 +1026,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1149,10 +1053,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1189,10 +1090,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1230,10 +1128,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1260,10 +1155,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1300,10 +1192,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1331,10 +1220,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1361,10 +1247,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1400,10 +1283,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1445,10 +1325,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1486,10 +1363,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1507,10 +1381,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1544,10 +1415,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1565,10 +1433,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1611,10 +1476,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1632,10 +1494,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1671,10 +1530,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1692,10 +1548,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1725,10 +1578,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1746,10 +1596,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1773,10 +1620,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1814,10 +1658,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1835,10 +1676,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1872,10 +1710,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1893,10 +1728,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1939,10 +1771,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1960,10 +1789,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2007,10 +1833,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2028,10 +1851,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2065,10 +1885,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2086,10 +1903,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2132,10 +1946,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2153,10 +1964,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2190,10 +1998,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2211,10 +2016,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2248,10 +2050,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2269,10 +2068,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2305,10 +2101,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -2328,10 +2121,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" diff --git a/packages/api-contract/test/compare/flipper.test.json b/packages/api-contract/test/compare/flipper.test.json index 50e73baff4..8ade53ab0e 100644 --- a/packages/api-contract/test/compare/flipper.test.json +++ b/packages/api-contract/test/compare/flipper.test.json @@ -38,10 +38,7 @@ { "info": 11, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -89,10 +86,7 @@ { "info": 11, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -130,10 +124,7 @@ { "info": 11, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -153,10 +144,7 @@ { "info": 11, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -168,10 +156,7 @@ { "info": 11, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -181,4 +166,4 @@ "info": 6, "type": "u8" } -] \ No newline at end of file +] diff --git a/packages/api-contract/test/compare/incrementer.test.json b/packages/api-contract/test/compare/incrementer.test.json index 8bc0fc54cf..5599c21ed8 100644 --- a/packages/api-contract/test/compare/incrementer.test.json +++ b/packages/api-contract/test/compare/incrementer.test.json @@ -18,10 +18,7 @@ { "info": 13, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 7, "type": "u8" @@ -71,10 +68,7 @@ { "info": 13, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 7, "type": "u8" @@ -120,10 +114,7 @@ { "info": 13, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 7, "type": "u8" @@ -151,10 +142,7 @@ { "info": 13, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 7, "type": "u8" @@ -168,10 +156,7 @@ { "info": 13, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 7, "type": "u8" @@ -185,4 +170,4 @@ "info": 7, "type": "bool" } -] \ No newline at end of file +] diff --git a/packages/api-contract/test/compare/shared-vec.test.json b/packages/api-contract/test/compare/shared-vec.test.json index ad6f31aa91..87de9b27d7 100644 --- a/packages/api-contract/test/compare/shared-vec.test.json +++ b/packages/api-contract/test/compare/shared-vec.test.json @@ -22,10 +22,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -67,10 +64,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -104,10 +98,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -167,10 +158,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -241,10 +229,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -308,10 +293,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -381,10 +363,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -426,10 +405,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -483,10 +459,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -528,10 +501,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -565,10 +535,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -628,10 +595,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -702,10 +666,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -769,10 +730,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -830,10 +788,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -847,10 +802,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -932,10 +884,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -977,10 +926,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1008,10 +954,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1033,10 +976,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1070,10 +1010,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1133,10 +1070,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1207,10 +1141,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1282,10 +1213,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1345,10 +1273,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1419,10 +1344,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1484,10 +1406,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1547,10 +1466,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1620,10 +1536,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1665,10 +1578,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -1714,10 +1624,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" diff --git a/packages/api-contract/test/compare/test001.cmp.json b/packages/api-contract/test/compare/test001.cmp.json index a53c2de199..6e34e7c19d 100644 --- a/packages/api-contract/test/compare/test001.cmp.json +++ b/packages/api-contract/test/compare/test001.cmp.json @@ -22,10 +22,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -71,10 +68,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -288,10 +282,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -337,10 +328,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -438,10 +426,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -487,10 +472,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -518,10 +500,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -535,10 +514,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -563,10 +539,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" @@ -714,10 +687,7 @@ { "info": 12, "type": "[u8;32]", - "ext": { - "length": 32, - "type": "u8" - }, + "length": 32, "sub": { "info": 6, "type": "u8" diff --git a/packages/api/src/types/augment/tx.ts b/packages/api/src/types/augment/tx.ts index 00ec032dac..186ae0547c 100644 --- a/packages/api/src/types/augment/tx.ts +++ b/packages/api/src/types/augment/tx.ts @@ -3,13 +3,13 @@ import { AnyNumber, ITuple } from '@polkadot/types/types'; import { Compact, Option, U8aFixed, Vec } from '@polkadot/types/codec'; -import { Bytes, Data, IdentityFields, bool, u16, u32, u64 } from '@polkadot/types/primitive'; +import { Bytes, Data, bool, u16, u32, u64 } from '@polkadot/types/primitive'; import { AccountId, AccountIndex, Address, Balance, BalanceOf, BlockNumber, Call, ChangesTrieConfiguration, Hash, Header, KeyValue, LookupSource, Moment, Signature } from '@polkadot/types/interfaces/runtime'; import { MemberCount, ProposalIndex } from '@polkadot/types/interfaces/collective'; import { CodeHash, Gas, Schedule } from '@polkadot/types/interfaces/contracts'; import { Conviction, PropIndex, Proposal, ReferendumIndex } from '@polkadot/types/interfaces/democracy'; import { Vote } from '@polkadot/types/interfaces/elections'; -import { IdentityInfo, IdentityJudgement, RegistrarIndex } from '@polkadot/types/interfaces/identity'; +import { IdentityFields, IdentityInfo, IdentityJudgement, RegistrarIndex } from '@polkadot/types/interfaces/identity'; import { Heartbeat } from '@polkadot/types/interfaces/imOnline'; import { Keys } from '@polkadot/types/interfaces/session'; import { SocietyJudgement } from '@polkadot/types/interfaces/society'; diff --git a/packages/types/src/codec/utils/encodeTypes.ts b/packages/types/src/codec/utils/encodeTypes.ts index ad300a94ad..753bb42289 100644 --- a/packages/types/src/codec/utils/encodeTypes.ts +++ b/packages/types/src/codec/utils/encodeTypes.ts @@ -2,9 +2,9 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { TypeDef, TypeDefInfo, TypeDefExtLength } from '../../create/types'; +import { TypeDef, TypeDefInfo } from '../../create/types'; -import { assert } from '@polkadot/util'; +import { assert, isNumber, isUndefined } from '@polkadot/util'; export const SPECIAL_TYPES = ['AccountId', 'AccountIndex', 'Address', 'Balance']; @@ -103,21 +103,16 @@ function encodeTuple (typeDef: Pick): string { })`; } -function encodeUInt (typeDef: Pick, type: 'Int' | 'UInt'): string { - assert(typeDef.ext, 'Unable to encode VecFixed type'); - - const { length } = typeDef.ext as TypeDefExtLength; +function encodeUInt ({ length }: Pick, type: 'Int' | 'UInt'): string { + assert(isNumber(length), 'Unable to encode VecFixed type'); return `${type}<${length}>`; } -function encodeVecFixed (typeDef: Pick): string { - assert(typeDef.ext, 'Unable to encode VecFixed type'); +function encodeVecFixed ({ length, sub }: Pick): string { + assert(isNumber(length) && !isUndefined(sub), 'Unable to encode VecFixed type'); - const { length } = typeDef.ext as TypeDefExtLength; - const { type } = typeDef.sub as TypeDef; - - return `[${type};${length}]`; + return `[${sub.type};${length}]`; } // We setup a record here to ensure we have comprehensive coverage (any item not covered will result diff --git a/packages/types/src/create/createClass.ts b/packages/types/src/create/createClass.ts index e5d68235b9..f79675d9dd 100644 --- a/packages/types/src/create/createClass.ts +++ b/packages/types/src/create/createClass.ts @@ -3,9 +3,9 @@ // of the Apache-2.0 license. See the LICENSE file for details. import { Codec, Constructor, InterfaceTypes, Registry } from '../types'; -import { FromReg, TypeDef, TypeDefExtLength, TypeDefInfo } from './types'; +import { FromReg, TypeDef, TypeDefInfo } from './types'; -import { assert } from '@polkadot/util'; +import { assert, isNumber, isUndefined } from '@polkadot/util'; import { UIntBitLength } from '../codec/AbstractInt'; import BTreeMap from '../codec/BTreeMap'; @@ -78,12 +78,10 @@ function getTypeClassArray (value: TypeDef): (InterfaceTypes)[] { ); } -function createInt (value: TypeDef, Clazz: typeof Int | typeof UInt): Constructor { - assert(value.ext, `Expected bitLength information for ${Clazz.constructor.name}`); +function createInt ({ displayName, length }: TypeDef, Clazz: typeof Int | typeof UInt): Constructor { + assert(isNumber(length), `Expected bitLength information for ${displayName || Clazz.constructor.name}`); - const { length } = value.ext as TypeDefExtLength; - - return Clazz.with(length as UIntBitLength, value.displayName); + return Clazz.with(length as UIntBitLength, displayName); } const infoMapping: Record Constructor> = { @@ -137,7 +135,8 @@ const infoMapping: Record C result[name as string] = index as number; return result; - }, result) + }, result), + value.length ); }, @@ -157,16 +156,13 @@ const infoMapping: Record C ); }, - [TypeDefInfo.VecFixed]: (registry: Registry, value: TypeDef): Constructor => { - assert(value.ext, 'Expected length & type information for fixed vector'); - - const { length } = value.ext as TypeDefExtLength; - const sub = value.sub as TypeDef; + [TypeDefInfo.VecFixed]: (registry: Registry, { displayName, length, sub }: TypeDef): Constructor => { + assert(isNumber(length) && !isUndefined(sub), 'Expected length & type information for fixed vector'); return ( - sub.type === 'u8' - ? U8aFixed.with((length * 8) as U8aFixedBitLength, value.displayName) - : VecFixed.with(sub.type as InterfaceTypes, length) + (sub as TypeDef).type === 'u8' + ? U8aFixed.with((length * 8) as U8aFixedBitLength, displayName) + : VecFixed.with((sub as TypeDef).type as InterfaceTypes, length) ); } }; diff --git a/packages/types/src/create/getTypeDef.ts b/packages/types/src/create/getTypeDef.ts index 3ccd1c03a1..abe9f3639e 100644 --- a/packages/types/src/create/getTypeDef.ts +++ b/packages/types/src/create/getTypeDef.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { TypeDef, TypeDefExtLength, TypeDefInfo } from './types'; +import { TypeDef, TypeDefInfo } from './types'; import { assert } from '@polkadot/util'; @@ -34,12 +34,16 @@ function _decodeEnum (value: TypeDef, details: string[] | Record // { _set: { A: 0b0001, B: 0b0010, C: 0b0100 } } function _decodeSet (value: TypeDef, details: Record): TypeDef { value.info = TypeDefInfo.Set; - value.sub = Object.entries(details).map(([name, index]): TypeDef => ({ - index, - info: TypeDefInfo.Plain, - name, - type: name - })); + value.length = details._bitLength; + value.sub = Object + .entries(details) + .filter(([name]): boolean => !name.startsWith('_')) + .map(([name, index]): TypeDef => ({ + index, + info: TypeDefInfo.Plain, + name, + type: name + })); return value; } @@ -74,7 +78,7 @@ function _decodeFixedVec (value: TypeDef, type: string, _: string): TypeDef { assert(length <= 256, `${type}: Only support for [Type; ], where length <= 256`); value.displayName = displayName; - value.ext = { length } as TypeDefExtLength; + value.length = length; // eslint-disable-next-line @typescript-eslint/no-use-before-define value.sub = getTypeDef(vecType); @@ -103,7 +107,7 @@ function _decodeInt (value: TypeDef, type: string, _: string, clazz: 'Int' | 'UI assert(length <= 8192 && (length % 8) === 0, `${type}: Only support for ${clazz}, where length <= 8192 and a power of 8, found ${length}`); value.displayName = displayName; - value.ext = { length } as TypeDefExtLength; + value.length = length; return value; } diff --git a/packages/types/src/create/types.ts b/packages/types/src/create/types.ts index e64535410b..537352d731 100644 --- a/packages/types/src/create/types.ts +++ b/packages/types/src/create/types.ts @@ -31,10 +31,6 @@ export enum TypeDefInfo { Null } -export interface TypeDefExtLength { - length: number; -} - export interface TypeDefExtEnumDiscriminant { discriminant: number; } @@ -43,7 +39,8 @@ export interface TypeDef { info: TypeDefInfo; index?: number; displayName?: string; - ext?: TypeDefExtEnumDiscriminant | TypeDefExtLength; // add additional here as required + ext?: TypeDefExtEnumDiscriminant; // add additional here as required + length?: number; name?: string; namespace?: string; params?: TypeDef[]; diff --git a/packages/types/src/interfaceRegistry.ts b/packages/types/src/interfaceRegistry.ts index b2a4486aa7..e221834b06 100644 --- a/packages/types/src/interfaceRegistry.ts +++ b/packages/types/src/interfaceRegistry.ts @@ -2,7 +2,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ import { Compact, Option, Raw, Vec } from '@polkadot/types/codec'; -import { BitVec, Bytes, Data, IdentityFields, Null, StorageData, StorageKey, Text, Type, U256, Unconstructable, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types/primitive'; +import { BitVec, Bytes, Data, Null, StorageData, StorageKey, Text, Type, U256, Unconstructable, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types/primitive'; import { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, Call, ChangesTrieConfiguration, Consensus, ConsensusEngineId, Digest, DigestItem, DispatchClass, DispatchInfo, DispatchInfoTo190, EcdsaSignature, Ed25519Signature, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV1, ExtrinsicPayloadV2, ExtrinsicPayloadV3, ExtrinsicPayloadV4, ExtrinsicSignatureV1, ExtrinsicSignatureV2, ExtrinsicSignatureV3, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV1, ExtrinsicV2, ExtrinsicV3, ExtrinsicV4, Fixed64, H160, H256, H512, Hash, Header, ImmortalEra, Index, Justification, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, Moment, MortalEra, MultiSignature, Origin, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Seal, SealV0, Signature, SignedBlock, SignerPayload, Sr25519Signature, ValidatorId, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime'; import { InclusionHeight, Uncle, UncleEntryItem } from '@polkadot/types/interfaces/authorship'; import { RawAuraPreDigest } from '@polkadot/types/interfaces/aura'; @@ -18,7 +18,7 @@ import { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine'; import { Account, Log } from '@polkadot/types/interfaces/evm'; import { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset'; import { AuthorityIndex, AuthorityList, AuthorityWeight, NextAuthority, PendingPause, PendingResume, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa'; -import { IdentityInfo, IdentityInfoAdditional, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement } from '@polkadot/types/interfaces/identity'; +import { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement } from '@polkadot/types/interfaces/identity'; import { AuthIndex, AuthoritySignature, Heartbeat, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; import { Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences'; import { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery'; @@ -49,9 +49,6 @@ export interface InterfaceRegistry { Data: Data; 'Option': Option; 'Vec': Vec; - IdentityFields: IdentityFields; - 'Option': Option; - 'Vec': Vec; i8: i8; 'Option': Option; 'Vec': Vec; @@ -603,6 +600,9 @@ export interface InterfaceRegistry { StoredState: StoredState; 'Option': Option; 'Vec': Vec; + IdentityFields: IdentityFields; + 'Option': Option; + 'Vec': Vec; IdentityInfoAdditional: IdentityInfoAdditional; 'Option': Option; 'Vec': Vec; diff --git a/packages/types/src/primitive/IdentityFields.spec.ts b/packages/types/src/interfaces/identity/IdentityFields.spec.ts similarity index 63% rename from packages/types/src/primitive/IdentityFields.spec.ts rename to packages/types/src/interfaces/identity/IdentityFields.spec.ts index d6c0e0944e..e01c33045b 100644 --- a/packages/types/src/primitive/IdentityFields.spec.ts +++ b/packages/types/src/interfaces/identity/IdentityFields.spec.ts @@ -2,33 +2,32 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { TypeRegistry } from '../create'; -import IdentityFields from './IdentityFields'; +import { TypeRegistry, createType } from '../../create'; describe('IdentityFields', (): void => { const registry = new TypeRegistry(); it('has a custom u64 (64-bit) encodedLength', (): void => { expect( - new IdentityFields(registry).encodedLength + createType(registry, 'IdentityFields').encodedLength ).toEqual(8); }); it('encodes a sample', (): void => { expect( - new IdentityFields(registry, ['Display', 'Legal']).valueEncoded.eqn(1 + 2) + createType(registry, 'IdentityFields', ['Display', 'Legal']).valueEncoded.eqn(1 + 2) ).toBe(true); }); it('encodes to a valid u8a value', (): void => { expect( - new IdentityFields(registry, ['Display', 'Legal']).toU8a() + createType(registry, 'IdentityFields', ['Display', 'Legal']).toU8a() ).toEqual(new Uint8Array([0, 0, 0, 0, 0, 0, 0, 3])); }); it('decodes from a u8a', (): void => { expect( - new IdentityFields(registry, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1 + 2 + 64])).toHuman() + createType(registry, 'IdentityFields', new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1 + 2 + 64])).toHuman() ).toEqual(['Display', 'Legal', 'Image']); }); }); diff --git a/packages/types/src/interfaces/identity/definitions.ts b/packages/types/src/interfaces/identity/definitions.ts index 2cdbbb010e..05ddee48f2 100644 --- a/packages/types/src/interfaces/identity/definitions.ts +++ b/packages/types/src/interfaces/identity/definitions.ts @@ -4,6 +4,21 @@ export default { types: { + IdentityFields: { + _set: { + _bitLength: 64, + // Mapped here to the least amount of bits visible, in Rust it is preceded by + // `00000000000000000000000000000000000000000000000000000000' for 64-bits + Display: 0b00000001, + Legal: 0b00000010, + Web: 0b00000100, + Riot: 0b00001000, + Email: 0b00010000, + PgpFingerprint: 0b00100000, + Image: 0b01000000, + Twitter: 0b10000000 + } + }, IdentityInfoAdditional: '(Data, Data)', IdentityInfo: { additional: 'Vec', diff --git a/packages/types/src/interfaces/identity/types.ts b/packages/types/src/interfaces/identity/types.ts index 981c44d819..a95c81d430 100644 --- a/packages/types/src/interfaces/identity/types.ts +++ b/packages/types/src/interfaces/identity/types.ts @@ -2,10 +2,22 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ import { ITuple } from '@polkadot/types/types'; -import { Enum, Option, Struct, Vec } from '@polkadot/types/codec'; -import { Data, IdentityFields, u32 } from '@polkadot/types/primitive'; +import { Enum, Option, Set, Struct, Vec } from '@polkadot/types/codec'; +import { Data, u32 } from '@polkadot/types/primitive'; import { AccountId, Balance, H160 } from '@polkadot/types/interfaces/runtime'; +/** @name IdentityFields */ +export interface IdentityFields extends Set { + readonly isDisplay: boolean; + readonly isLegal: boolean; + readonly isWeb: boolean; + readonly isRiot: boolean; + readonly isEmail: boolean; + readonly isPgpFingerprint: boolean; + readonly isImage: boolean; + readonly isTwitter: boolean; +} + /** @name IdentityInfo */ export interface IdentityInfo extends Struct { readonly additional: Vec; diff --git a/packages/types/src/primitive/IdentityFields.ts b/packages/types/src/primitive/IdentityFields.ts deleted file mode 100644 index d86ae83cf9..0000000000 --- a/packages/types/src/primitive/IdentityFields.ts +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017-2020 @polkadot/types authors & contributors -// This software may be modified and distributed under the terms -// of the Apache-2.0 license. See the LICENSE file for details. - -import { Registry } from '../types'; - -import BN from 'bn.js'; - -import Set from '../codec/Set'; - -/** - * @name IdentityFields - * @description - * Encoder/Decoder class fo registry IdentityFields - */ -export default class IdentityFields extends Set { - constructor (registry: Registry, value?: any) { - super(registry, { - Display: new BN(0b0000000000000000000000000000000000000000000000000000000000000001), - Legal: new BN(0b0000000000000000000000000000000000000000000000000000000000000010), - Web: new BN(0b0000000000000000000000000000000000000000000000000000000000000100), - Riot: new BN(0b0000000000000000000000000000000000000000000000000000000000001000), - Email: new BN(0b0000000000000000000000000000000000000000000000000000000000010000), - PgpFingerprint: new BN(0b0000000000000000000000000000000000000000000000000000000000100000), - Image: new BN(0b0000000000000000000000000000000000000000000000000000000001000000), - Twitter: new BN(0b0000000000000000000000000000000000000000000000000000000010000000) - }, value, 64); - } -} diff --git a/packages/types/src/primitive/index.ts b/packages/types/src/primitive/index.ts index 8ab3c73b38..0859c6f13f 100644 --- a/packages/types/src/primitive/index.ts +++ b/packages/types/src/primitive/index.ts @@ -12,7 +12,6 @@ export { default as BitVec } from './BitVec'; export { default as bool } from './Bool'; export { default as Bytes } from './Bytes'; export { default as Data } from './Data'; -export { default as IdentityFields } from './IdentityFields'; export { default as i8 } from './I8'; export { default as i16 } from './I16'; export { default as i32 } from './I32';