diff --git a/packages/api-format/package.json b/packages/api-format/package.json
index 5f5f076a55..6545fe1d51 100644
--- a/packages/api-format/package.json
+++ b/packages/api-format/package.json
@@ -37,7 +37,7 @@
"@babel/runtime": "^7.0.0-beta.51",
"@polkadot/jsonrpc": "^0.28.11",
"@polkadot/primitives": "^0.28.11",
- "@polkadot/util": "^0.28.1",
- "@polkadot/util-keyring": "^0.28.1"
+ "@polkadot/util": "^0.28.2",
+ "@polkadot/util-keyring": "^0.28.2"
}
}
diff --git a/packages/api-format/src/output.ts b/packages/api-format/src/output.ts
index 0559de4e53..8dec87c742 100644
--- a/packages/api-format/src/output.ts
+++ b/packages/api-format/src/output.ts
@@ -10,6 +10,7 @@ import bnDecode from '@polkadot/primitives/json/bn/decode';
import bytesDecode from '@polkadot/primitives/json/bytes/decode';
import hashDecode from '@polkadot/primitives/json/hash/decode';
import headerDecode from '@polkadot/primitives/json/header/decode';
+import blockDecode from '@polkadot/primitives/json/block/decode';
import isNull from '@polkadot/util/is/null';
import isUndefined from '@polkadot/util/is/undefined';
@@ -22,6 +23,7 @@ const formatters = new Map([
['Bytes', bytesDecode],
['Hash', hashDecode],
['Header', headerDecode],
+ ['SignedBlock', blockDecode],
['u64', bnDecode]
]);
diff --git a/packages/api-provider/package.json b/packages/api-provider/package.json
index a79f8afd3d..8399642539 100644
--- a/packages/api-provider/package.json
+++ b/packages/api-provider/package.json
@@ -40,9 +40,9 @@
"dependencies": {
"@babel/runtime": "^7.0.0-beta.51",
"@polkadot/storage": "^0.28.11",
- "@polkadot/util": "^0.28.1",
- "@polkadot/util-crypto": "^0.28.1",
- "@polkadot/util-keyring": "^0.28.1",
+ "@polkadot/util": "^0.28.2",
+ "@polkadot/util-crypto": "^0.28.2",
+ "@polkadot/util-keyring": "^0.28.2",
"@types/nock": "^9.1.3",
"eventemitter3": "^2.0.3",
"isomorphic-fetch": "^2.2.1",
diff --git a/packages/api-provider/test/e2e.test.js b/packages/api-provider/test/e2e.test.js
index f7563f4f67..4259c2bcf2 100644
--- a/packages/api-provider/test/e2e.test.js
+++ b/packages/api-provider/test/e2e.test.js
@@ -38,22 +38,51 @@ describe.skip('e2e', () => {
it('subscribes to storage', (done) => {
api.state
- .subscribeStorage([
- [storage.staking.public.freeBalanceOf, '5Ejbye9R8ygByQPrDSasaUid1munedPZUmg4f118HGmtodGp'],
- [storage.staking.public.freeBalanceOf, '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFacT7']
- ], (error, data) => {
- if (error) {
- return done(error);
+ .subscribeStorage(
+ [
+ [storage.system.public.accountIndexOf, '5Ejbye9R8ygByQPrDSasaUid1munedPZUmg4f118HGmtodGp'],
+ [storage.staking.public.freeBalanceOf, '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFacT7']
+ ],
+ (error, data) => {
+ if (error) {
+ return done(error);
+ }
+
+ expect(data).toHaveLength(2);
+ expect(data[0].toNumber()).toEqual(0);
+ expect(data[1].toNumber()).not.toEqual(0);
+
+ done();
}
-
- expect(data).toHaveLength(2);
- expect(data[0].toNumber()).toEqual(0);
- expect(data[1].toNumber()).not.toEqual(0);
-
- done();
- })
+ )
.then((subscriptionId) => {
console.log('newHead: subscriptionId =', subscriptionId);
});
});
+
+ it('retrieves a block by hash', () => {
+ return api.chain
+ .getBlock('0x627847bffdf5f3e01ac440d057dec6a37a12a6f329db7ef8367665574b76b5df')
+ .then((block) => {
+ expect(block).toBeDefined();
+ })
+ .catch((error) => {
+ console.error(error);
+
+ throw error;
+ });
+ });
+
+ it.skip('retrieves the pending extrinsics', () => {
+ return api.author
+ .pendingExtrinsics()
+ .then((extrinsics) => {
+ console.error('extrinsics', extrinsics);
+ })
+ .catch((error) => {
+ console.error(error);
+
+ throw error;
+ });
+ });
});
diff --git a/packages/api/package.json b/packages/api/package.json
index 1c6402df6b..2fa6a57199 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -39,6 +39,6 @@
"@polkadot/api-provider": "^0.28.11",
"@polkadot/jsonrpc": "^0.28.11",
"@polkadot/params": "^0.28.11",
- "@polkadot/util": "^0.28.1"
+ "@polkadot/util": "^0.28.2"
}
}
diff --git a/packages/type-extrinsics/package.json b/packages/type-extrinsics/package.json
index 3b238234e0..5c16c61914 100644
--- a/packages/type-extrinsics/package.json
+++ b/packages/type-extrinsics/package.json
@@ -18,6 +18,6 @@
"@babel/runtime": "^7.0.0-beta.51",
"@polkadot/params": "^0.28.11",
"@polkadot/primitives": "^0.28.11",
- "@polkadot/util": "^0.28.1"
+ "@polkadot/util": "^0.28.2"
}
}
diff --git a/packages/type-extrinsics/src/consensus.ts b/packages/type-extrinsics/src/consensus.ts
index cbf805be24..dd024e57ea 100644
--- a/packages/type-extrinsics/src/consensus.ts
+++ b/packages/type-extrinsics/src/consensus.ts
@@ -32,7 +32,7 @@ const setStorage: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Consensus',
public: {
diff --git a/packages/type-extrinsics/src/council.ts b/packages/type-extrinsics/src/council.ts
index f5f2603682..5492cc2104 100644
--- a/packages/type-extrinsics/src/council.ts
+++ b/packages/type-extrinsics/src/council.ts
@@ -86,7 +86,7 @@ const setTermDuration: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Council',
public: {
diff --git a/packages/type-extrinsics/src/councilVoting.ts b/packages/type-extrinsics/src/councilVoting.ts
index f12b383a1c..55aff62b95 100644
--- a/packages/type-extrinsics/src/councilVoting.ts
+++ b/packages/type-extrinsics/src/councilVoting.ts
@@ -49,7 +49,7 @@ const setVotingPeriod: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Council Voting',
public: {
diff --git a/packages/type-extrinsics/src/democracy.ts b/packages/type-extrinsics/src/democracy.ts
index 2e72ee4c5c..bde1625cf2 100644
--- a/packages/type-extrinsics/src/democracy.ts
+++ b/packages/type-extrinsics/src/democracy.ts
@@ -51,7 +51,7 @@ const cancelReferendum: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Democracy',
public: {
diff --git a/packages/type-extrinsics/src/parachains.ts b/packages/type-extrinsics/src/parachains.ts
index a0f0681ad1..9cc8aca2b5 100644
--- a/packages/type-extrinsics/src/parachains.ts
+++ b/packages/type-extrinsics/src/parachains.ts
@@ -35,7 +35,7 @@ const setHeads: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Parchains',
public: {
diff --git a/packages/type-extrinsics/src/session.ts b/packages/type-extrinsics/src/session.ts
index d8a3b52e6c..8d67ea2069 100644
--- a/packages/type-extrinsics/src/session.ts
+++ b/packages/type-extrinsics/src/session.ts
@@ -30,7 +30,7 @@ const forceNewSession: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Session',
public: {
diff --git a/packages/type-extrinsics/src/staking.ts b/packages/type-extrinsics/src/staking.ts
index d682a78729..4034732219 100644
--- a/packages/type-extrinsics/src/staking.ts
+++ b/packages/type-extrinsics/src/staking.ts
@@ -77,7 +77,7 @@ const forceNewEra: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Staking',
public: {
diff --git a/packages/type-extrinsics/src/timestamp.ts b/packages/type-extrinsics/src/timestamp.ts
index 5d624d774c..c69592a43a 100644
--- a/packages/type-extrinsics/src/timestamp.ts
+++ b/packages/type-extrinsics/src/timestamp.ts
@@ -17,7 +17,7 @@ const set: CreateItemOptions = {
type: []
};
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Timestamp',
public: {
diff --git a/packages/type-extrinsics/src/treasury.ts b/packages/type-extrinsics/src/treasury.ts
index 284760d41f..954341355c 100644
--- a/packages/type-extrinsics/src/treasury.ts
+++ b/packages/type-extrinsics/src/treasury.ts
@@ -7,7 +7,7 @@ import { Extrinsics, Extrinsic$Sections } from './types';
import createSection from '@polkadot/params/section';
-export default (name: Extrinsic$Sections, index: number): Section =>
+export default (name: Extrinsic$Sections, index: number): Section =>
createSection(name, index)((createMethod: CreateItems) => ({
description: 'Timestamp'
}));
diff --git a/packages/type-extrinsics/src/types.d.ts b/packages/type-extrinsics/src/types.d.ts
index da6d17762a..c8cc1b4e74 100644
--- a/packages/type-extrinsics/src/types.d.ts
+++ b/packages/type-extrinsics/src/types.d.ts
@@ -6,16 +6,16 @@ import { Section } from '@polkadot/params/types';
export type Extrinsics = {
// substrate
- consensus: Section,
- council: Section,
- councilVoting: Section,
- democracy: Section,
- session: Section,
- staking: Section,
- timestamp: Section,
- treasury: Section,
+ consensus: Section,
+ council: Section,
+ councilVoting: Section,
+ democracy: Section,
+ session: Section,
+ staking: Section,
+ timestamp: Section,
+ treasury: Section,
// polkadot
- parachains: Section
+ parachains: Section
};
export type Extrinsic$Sections = keyof Extrinsics;
diff --git a/packages/type-jsonrpc/src/author.ts b/packages/type-jsonrpc/src/author.ts
index 8b66b8fc29..3611a3ba80 100644
--- a/packages/type-jsonrpc/src/author.ts
+++ b/packages/type-jsonrpc/src/author.ts
@@ -2,12 +2,18 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
-import { CreateItems, CreateItemOptions, Section } from '@polkadot/params/types';
+import { CreateItems, CreateItemOptions, CreateItemOptionsMap, Section, SectionItems } from '@polkadot/params/types';
import { Interfaces, Interface$Sections } from './types';
import param from '@polkadot/params/param';
import createSection from '@polkadot/params/section';
+const pendingExtrinsics: CreateItemOptions = {
+ description: 'Returns all pending extrinsics, potentially grouped by sender',
+ params: [],
+ type: 'PrendingExtrinsics'
+};
+
const submitExtrinsic: CreateItemOptions = {
isSigned: true,
description: 'Submit a fully formatted extrinsic for block inclusion',
@@ -17,14 +23,24 @@ const submitExtrinsic: CreateItemOptions = {
type: 'Hash'
};
+const privateMethods: CreateItemOptionsMap = {};
+
+const publicMethods: CreateItemOptionsMap = {
+ pendingExtrinsics, submitExtrinsic
+};
+
+export type PrivateMethods = typeof privateMethods;
+export type PublicMethods = typeof publicMethods;
+
/**
* @summary Methods to work with authors & contributors.
*/
-export default (name: Interface$Sections): Section =>
+export default (name: Interface$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Authoring of network items',
- public: {
- submitExtrinsic:
- createMethod('submitExtrinsic')(submitExtrinsic)
- }
+ public: Object.keys(publicMethods).reduce((result, key) => {
+ result[key] = createMethod(key)(publicMethods[key]);
+
+ return result;
+ }, {} as SectionItems)
}));
diff --git a/packages/type-jsonrpc/src/chain.ts b/packages/type-jsonrpc/src/chain.ts
index 670a5a95a8..2c645fec8a 100644
--- a/packages/type-jsonrpc/src/chain.ts
+++ b/packages/type-jsonrpc/src/chain.ts
@@ -2,12 +2,20 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
-import { CreateItems, CreateItemOptions, Section } from '@polkadot/params/types';
+import { CreateItems, CreateItemOptions, CreateItemOptionsMap, Section, SectionItems } from '@polkadot/params/types';
import { Interfaces, Interface$Sections } from './types';
import param from '@polkadot/params/param';
import createSection from '@polkadot/params/section';
+const getBlock: CreateItemOptions = {
+ description: 'Get header and body of a relay chain block',
+ params: [
+ param('hash', 'Hash')
+ ],
+ type: 'SignedBlock'
+};
+
const getHead: CreateItemOptions = {
description: 'Retrieves the best headerHash',
params: [],
@@ -29,18 +37,24 @@ const subscribeNewHead: CreateItemOptions = {
type: 'Header'
};
+const privateMethods: CreateItemOptionsMap = {};
+
+const publicMethods: CreateItemOptionsMap = {
+ getBlock, getHead, getHeader, subscribeNewHead
+};
+
+export type PublicMethods = typeof publicMethods;
+export type PrivateMethods = typeof privateMethods;
+
/**
* @summary Methods to retrieve chain data.
*/
-export default (name: Interface$Sections): Section =>
+export default (name: Interface$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Retrieval of chain data',
- public: {
- getHead:
- createMethod('getHead')(getHead),
- getHeader:
- createMethod('getHeader')(getHeader),
- subscribeNewHead:
- createMethod('subscribeNewHead')(subscribeNewHead)
- }
+ public: Object.keys(publicMethods).reduce((result, key) => {
+ result[key] = createMethod(key)(publicMethods[key]);
+
+ return result;
+ }, {} as SectionItems)
}));
diff --git a/packages/type-jsonrpc/src/state.ts b/packages/type-jsonrpc/src/state.ts
index f281e83f8b..48bd215227 100644
--- a/packages/type-jsonrpc/src/state.ts
+++ b/packages/type-jsonrpc/src/state.ts
@@ -2,7 +2,7 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
-import { CreateItems, CreateItemOptions, Section } from '@polkadot/params/types';
+import { CreateItems, CreateItemOptions, CreateItemOptionsMap, Section } from '@polkadot/params/types';
import { Interfaces, Interface$Sections } from './types';
import param from '@polkadot/params/param';
@@ -87,10 +87,19 @@ const subscribeStorage: CreateItemOptions = {
type: 'StorageResultSet'
};
+const privateMethods: CreateItemOptionsMap = {};
+
+const publicMethods: CreateItemOptionsMap = {
+ call, callAt, getStorage, getStorageAt, getStorageHash, getStorageHashAt, getStorageSize, getStorageSizeAt, subscribeStorage
+};
+
+export type PrivateMethods = typeof privateMethods;
+export type PublicMethods = typeof publicMethods;
+
/**
* @summary Query the state and state storage.
*/
-export default (name: Interface$Sections): Section =>
+export default (name: Interface$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Query of state',
public: {
diff --git a/packages/type-jsonrpc/src/system.ts b/packages/type-jsonrpc/src/system.ts
index 64a9e009e2..0020ee4ad9 100644
--- a/packages/type-jsonrpc/src/system.ts
+++ b/packages/type-jsonrpc/src/system.ts
@@ -2,7 +2,7 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
-import { CreateItems, CreateItemOptions, Section } from '@polkadot/params/types';
+import { CreateItems, CreateItemOptions, CreateItemOptionsMap, Section } from '@polkadot/params/types';
import { Interfaces, Interface$Sections } from './types';
import createSection from '@polkadot/params/section';
@@ -25,10 +25,19 @@ const version: CreateItemOptions = {
type: 'String'
};
+const privateMethods: CreateItemOptionsMap = {};
+
+const publicMethods: CreateItemOptionsMap = {
+ chain, name, version
+};
+
+export type PrivateMethods = typeof privateMethods;
+export type PublicMethods = typeof publicMethods;
+
/**
* @summary Methods to retrieve system info.
*/
-export default (sname: Interface$Sections): Section =>
+export default (sname: Interface$Sections): Section =>
createSection(sname)((createMethod: CreateItems) => ({
description: 'Methods to retrieve system info',
public: {
diff --git a/packages/type-jsonrpc/src/types.d.ts b/packages/type-jsonrpc/src/types.d.ts
index faed54a953..63d0189405 100644
--- a/packages/type-jsonrpc/src/types.d.ts
+++ b/packages/type-jsonrpc/src/types.d.ts
@@ -3,12 +3,16 @@
// of the ISC license. See the LICENSE file for details.
import { Section } from '@polkadot/params/types';
+import { PrivateMethods as AuthorPrivate, PublicMethods as AuthorPublic} from './author';
+import { PrivateMethods as ChainPrivate, PublicMethods as ChainPublic} from './chain';
+import { PrivateMethods as StatePrivate, PublicMethods as StatePublic} from './state';
+import { PrivateMethods as SystemPrivate, PublicMethods as SystemPublic} from './system';
export type Interfaces = {
- author: Section,
- chain: Section,
- state: Section,
- system:Section
+ author: Section,
+ chain: Section,
+ state: Section,
+ system: Section
}
export type Interface$Sections = keyof Interfaces;
diff --git a/packages/type-params/package.json b/packages/type-params/package.json
index b7945c842e..bc5d18a89f 100644
--- a/packages/type-params/package.json
+++ b/packages/type-params/package.json
@@ -37,7 +37,7 @@
"@polkadot/extrinsics": "^0.28.11",
"@polkadot/params": "^0.28.11",
"@polkadot/primitives": "^0.28.11",
- "@polkadot/util": "^0.28.1",
- "@polkadot/util-keyring": "^0.28.1"
+ "@polkadot/util": "^0.28.2",
+ "@polkadot/util-keyring": "^0.28.2"
}
}
diff --git a/packages/type-params/src/decode/value/method.ts b/packages/type-params/src/decode/value/method.ts
index e9d6063055..c659bc9043 100644
--- a/packages/type-params/src/decode/value/method.ts
+++ b/packages/type-params/src/decode/value/method.ts
@@ -24,7 +24,7 @@ export default function call (decode: Decoder, input: Uint8Array | null | undefi
} as Param$Decoded;
}
- const section: Section | undefined = Object.values(extrinsics).find(({ index }) =>
+ const section: Section | undefined = Object.values(extrinsics).find(({ index }) =>
index[0] === input[0]
);
diff --git a/packages/type-params/src/section.ts b/packages/type-params/src/section.ts
index 2a4d9f4367..ab07e641fd 100644
--- a/packages/type-params/src/section.ts
+++ b/packages/type-params/src/section.ts
@@ -8,9 +8,9 @@ import bnToU8a from '@polkadot/util/bn/toU8a';
import createMethod from './method';
-export default function createSection (name: keyof T, _index: number = 0): CreateSection {
+export default function createSection (name: keyof T, _index: number = 0): CreateSection {
const index = bnToU8a(_index, 8, true);
- const creator = (optOrFn: CreateSectionOptions): Section => {
+ const creator = (optOrFn: CreateSectionOptions): Section => {
if (typeof optOrFn === 'function') {
return creator(
optOrFn(
diff --git a/packages/type-params/src/types.d.ts b/packages/type-params/src/types.d.ts
index 48c6ae6ea5..eea5cd5e76 100644
--- a/packages/type-params/src/types.d.ts
+++ b/packages/type-params/src/types.d.ts
@@ -14,7 +14,7 @@ export type EncodingVersions = 'poc-1' | 'latest';
// - @polkadot/storage/key/params.ts
// - decode/value/index.js
// - encode/type/index.js
-export type Param$Type = 'AccountId' | 'AccountIndex' | 'Balance' | 'BlockNumber' | 'bool' | 'Bytes' | 'Call' | 'CandidateReceipt' | 'Code' | 'Digest' | 'Gas' | 'Hash' | 'Header' | 'KeyValue' | 'MisbehaviorReport' | 'ParachainId' | 'PropIndex' | 'Proposal' | 'ReferendumIndex' | 'SessionKey' | 'Signature' | 'StorageKey' | 'StorageKeyValue' | 'StorageResult' | 'StorageResultSet' | 'String' | 'Timestamp' | 'u32' | 'u64' | 'u128' | 'VoteIndex' | 'VoteThreshold';
+export type Param$Type = 'AccountId' | 'AccountIndex' | 'Balance' | 'BlockNumber' | 'bool' | 'Bytes' | 'Call' | 'CandidateReceipt' | 'Code' | 'Digest' | 'Gas' | 'Hash' | 'Header' | 'KeyValue' | 'MisbehaviorReport' | 'ParachainId' | 'PrendingExtrinsics' | 'PropIndex' | 'Proposal' | 'ReferendumIndex' | 'SessionKey' | 'Signature' | 'SignedBlock' | 'StorageKey' | 'StorageKeyValue' | 'StorageResult' | 'StorageResultSet' | 'String' | 'Timestamp' | 'u32' | 'u64' | 'u128' | 'VoteIndex' | 'VoteThreshold';
export type Param$Type$Array = Array>>;
@@ -25,6 +25,20 @@ export type ExtrinsicDecoded = {
params: Array
}
+export type BlockExtrinsicDecoded = {
+ address: string,
+ nonce: BN,
+ extrinsic: SectionItem,
+ params: Array,
+ signature: Uint8Array
+}
+
+export type BlockDecoded = {
+ header: Header,
+ extrinsics: Array,
+ justification: any
+};
+
export type KeyValue = {
key: Uint8Array,
value: Uint8Array
@@ -68,21 +82,21 @@ export type SectionItem = {
type: Param$Types
};
-export type SectionItems = {
- [index: string]: SectionItem
+export type SectionItems = {
+ [key in keyof K]: SectionItem
};
-export type Section = {
+export type Section = {
isDeprecated: boolean,
isHidden: boolean,
description: string,
index: Uint8Array,
name: keyof T,
- private: SectionItems,
- public: SectionItems
+ private: SectionItems,
+ public: SectionItems
};
-export type Sections = Map>;
+export type Sections = Map>;
export type CreateItemOptions = {
description: string,
@@ -96,20 +110,24 @@ export type CreateItemOptions = {
type: Param$Types
};
+export type CreateItemOptionsMap = {
+ [index: string]: CreateItemOptions
+};
+
export type CreateItem = (options: CreateItemOptions) => SectionItem;
export type CreateItems = (name: string, index?: number) => CreateItem;
-export type CreateSectionOptions$Only = {
+export type CreateSectionOptions$Only = {
description: string,
isDeprecated?: boolean,
isHidden?: boolean,
- 'private'?: SectionItems,
- 'public'?: SectionItems
+ 'private'?: SectionItems,
+ 'public'?: SectionItems
};
-export type CreateSectionOptions$Fn = (method: CreateItems) => CreateSectionOptions$Only;
+export type CreateSectionOptions$Fn = (method: CreateItems) => CreateSectionOptions$Only;
-export type CreateSectionOptions = CreateSectionOptions$Only | CreateSectionOptions$Fn;
+export type CreateSectionOptions = CreateSectionOptions$Only | CreateSectionOptions$Fn;
-export type CreateSection = (options: CreateSectionOptions) => Section;
+export type CreateSection = (options: CreateSectionOptions) => Section;
diff --git a/packages/type-primitives/package.json b/packages/type-primitives/package.json
index 36e2965eca..28e83d6973 100644
--- a/packages/type-primitives/package.json
+++ b/packages/type-primitives/package.json
@@ -34,8 +34,8 @@
},
"dependencies": {
"@babel/runtime": "^7.0.0-beta.51",
- "@polkadot/trie-hash": "^0.28.1",
- "@polkadot/util": "^0.28.1"
+ "@polkadot/trie-hash": "^0.28.2",
+ "@polkadot/util": "^0.28.2"
},
"devDependencies": {
"bn.js": "^4.11.8"
diff --git a/packages/type-primitives/src/codec/block/decode.ts b/packages/type-primitives/src/codec/block/decode.ts
new file mode 100644
index 0000000000..9098ffd8e2
--- /dev/null
+++ b/packages/type-primitives/src/codec/block/decode.ts
@@ -0,0 +1,18 @@
+// Copyright 2017-2018 @polkadot/primitives authors & contributors
+// This software may be modified and distributed under the terms
+// of the ISC license. See the LICENSE file for details.
+
+import { Block } from '../../block';
+
+import createBlock from '../../create/block';
+import decodeHeader from '../header/decode';
+import decodeRaw from './decodeRaw';
+
+export default function decodeBlock (u8a: Uint8Array): Block {
+ const { header, extrinsics } = decodeRaw(u8a);
+
+ return createBlock({
+ header: decodeHeader(header),
+ extrinsics
+ });
+}
diff --git a/packages/type-primitives/src/json/block/decode.ts b/packages/type-primitives/src/json/block/decode.ts
new file mode 100644
index 0000000000..69028ec773
--- /dev/null
+++ b/packages/type-primitives/src/json/block/decode.ts
@@ -0,0 +1,24 @@
+// Copyright 2017-2018 @polkadot/primitives authors & contributors
+// This software may be modified and distributed under the terms
+// of the ISC license. See the LICENSE file for details.
+
+import { BlockDecoded } from '@polkadot/params/types';
+import { JsonBlock } from '../types';
+
+import toU8a from '@polkadot/util/u8a/toU8a';
+
+import decodeExtrinsic from '../extrinsic/decode';
+import decodeHeader from '../header/decode';
+
+export default function blockDecode ({ block: { extrinsics, header }, justification }: JsonBlock): BlockDecoded {
+ return {
+ // TODO We should decode the justifications (and change type from any)
+ justification,
+ header: decodeHeader(header),
+ extrinsics: extrinsics.map((extrinsic) =>
+ decodeExtrinsic(
+ toU8a(extrinsic as any)
+ )
+ )
+ };
+}
diff --git a/packages/type-primitives/src/json/extrinsic/decode.ts b/packages/type-primitives/src/json/extrinsic/decode.ts
new file mode 100644
index 0000000000..4a29170ef8
--- /dev/null
+++ b/packages/type-primitives/src/json/extrinsic/decode.ts
@@ -0,0 +1,22 @@
+// Copyright 2017-2018 @polkadot/primitives authors & contributors
+// This software may be modified and distributed under the terms
+// of the ISC license. See the LICENSE file for details.
+
+import { BlockExtrinsicDecoded, ExtrinsicDecoded } from '@polkadot/params/types';
+
+import BN from 'bn.js';
+import decoder from '@polkadot/params/decode';
+
+export default function extrinsicDecode (extrinsic: Uint8Array): BlockExtrinsicDecoded {
+ const addressDecoded = decoder('AccountId', extrinsic, 'latest');
+ const nonceDecoded = decoder('AccountIndex', extrinsic.subarray(addressDecoded.length), 'latest');
+ const extrinsicDecoded = decoder('Call', extrinsic.subarray(addressDecoded.length + nonceDecoded.length), 'latest');
+ const signature = extrinsic.subarray(addressDecoded.length + nonceDecoded.length + extrinsicDecoded.length);
+
+ return {
+ ...(extrinsicDecoded.value as ExtrinsicDecoded),
+ address: addressDecoded.value as string,
+ nonce: nonceDecoded.value as BN,
+ signature
+ };
+}
diff --git a/packages/type-primitives/src/json/hash/encode.ts b/packages/type-primitives/src/json/hash/encode.ts
index 8399ec88c1..861e78743a 100644
--- a/packages/type-primitives/src/json/hash/encode.ts
+++ b/packages/type-primitives/src/json/hash/encode.ts
@@ -6,7 +6,10 @@ import { Hash } from '../../base';
import { JsonHash } from '../types';
import u8aToHex from '@polkadot/util/u8a/toHex';
+import toU8a from '@polkadot/util/u8a/toU8a';
-export default function hashEncode (value: Hash, bitLength: number = -1): JsonHash {
- return u8aToHex(value);
+export default function hashEncode (value: Hash | string, bitLength: number = -1): JsonHash {
+ return u8aToHex(
+ toU8a(value)
+ );
}
diff --git a/packages/type-primitives/src/json/types.d.ts b/packages/type-primitives/src/json/types.d.ts
index c2a08b1c35..e5b378c6c0 100644
--- a/packages/type-primitives/src/json/types.d.ts
+++ b/packages/type-primitives/src/json/types.d.ts
@@ -2,6 +2,8 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
+import { ExtrinsicDecoded } from '@polkadot/params/types';
+
export type JsonBnType = string;
export type JsonHash = string;
@@ -44,8 +46,12 @@ export type JsonHeader = {
digest: JsonDigest
};
+export type JsonJustification = {};
+
export type JsonBlock = {
- header: JsonHeader,
- timestamp: JsonU64,
- transactions: Array
+ block: {
+ extrinsics: Array>,
+ header: JsonHeader,
+ },
+ justification: JsonJustification
};
diff --git a/packages/type-storage/package.json b/packages/type-storage/package.json
index a9d9d0e6d9..54a5fb5464 100644
--- a/packages/type-storage/package.json
+++ b/packages/type-storage/package.json
@@ -37,8 +37,8 @@
"@babel/runtime": "^7.0.0-beta.51",
"@polkadot/params": "^0.28.11",
"@polkadot/primitives": "^0.28.11",
- "@polkadot/util": "^0.28.1",
- "@polkadot/util-crypto": "^0.28.1",
- "@polkadot/util-keyring": "^0.28.1"
+ "@polkadot/util": "^0.28.2",
+ "@polkadot/util-crypto": "^0.28.2",
+ "@polkadot/util-keyring": "^0.28.2"
}
}
diff --git a/packages/type-storage/src/consensus.ts b/packages/type-storage/src/consensus.ts
index 6e1e159f70..952c7a176d 100644
--- a/packages/type-storage/src/consensus.ts
+++ b/packages/type-storage/src/consensus.ts
@@ -34,7 +34,7 @@ const code: CreateItemOptions = {
type: 'Code'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Consensus',
public: {
diff --git a/packages/type-storage/src/contract.ts b/packages/type-storage/src/contract.ts
index 4f10c06f5e..f4f4cfdbcb 100644
--- a/packages/type-storage/src/contract.ts
+++ b/packages/type-storage/src/contract.ts
@@ -52,7 +52,7 @@ const codeOf: CreateItemOptions = {
type: 'Code'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Contract',
public: {
diff --git a/packages/type-storage/src/council.ts b/packages/type-storage/src/council.ts
index a8b8d9d8a0..7a8f6b55e6 100644
--- a/packages/type-storage/src/council.ts
+++ b/packages/type-storage/src/council.ts
@@ -154,7 +154,7 @@ const leaderboard: CreateItemOptions = {
type: [['Balance', 'AccountId']]
};
-export default (name: keyof Storages): Section =>
+export default (name: keyof Storages): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Council',
public: {
diff --git a/packages/type-storage/src/councilVoting.ts b/packages/type-storage/src/councilVoting.ts
index 567a40fd9e..771048c983 100644
--- a/packages/type-storage/src/councilVoting.ts
+++ b/packages/type-storage/src/councilVoting.ts
@@ -66,7 +66,7 @@ const vetoedProposal: CreateItemOptions = {
type: ['BlockNumber', 'AccountId']
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Council voting',
public: {
diff --git a/packages/type-storage/src/democracy.ts b/packages/type-storage/src/democracy.ts
index e24137944c..a611879df8 100644
--- a/packages/type-storage/src/democracy.ts
+++ b/packages/type-storage/src/democracy.ts
@@ -94,7 +94,7 @@ const voteOf: CreateItemOptions = {
type: 'bool'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Democracy',
public: {
diff --git a/packages/type-storage/src/parachains.ts b/packages/type-storage/src/parachains.ts
index 3bbf4d6848..2fd6ed5820 100644
--- a/packages/type-storage/src/parachains.ts
+++ b/packages/type-storage/src/parachains.ts
@@ -40,7 +40,7 @@ const didUpdate: CreateItemOptions = {
type: 'bool'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Parachain related entries',
public: {
diff --git a/packages/type-storage/src/session.ts b/packages/type-storage/src/session.ts
index 62118624af..2c0c9b8997 100644
--- a/packages/type-storage/src/session.ts
+++ b/packages/type-storage/src/session.ts
@@ -73,7 +73,7 @@ const nextLength: CreateItemOptions = {
type: 'BlockNumber'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Session management information',
public: {
diff --git a/packages/type-storage/src/staking.ts b/packages/type-storage/src/staking.ts
index eb4f1b4ba3..4f456bbb7c 100644
--- a/packages/type-storage/src/staking.ts
+++ b/packages/type-storage/src/staking.ts
@@ -197,7 +197,7 @@ const bondageOf: CreateItemOptions = {
type: 'Balance'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Staking',
public: {
diff --git a/packages/type-storage/src/system.ts b/packages/type-storage/src/system.ts
index 957a9832dc..dca2c9236e 100644
--- a/packages/type-storage/src/system.ts
+++ b/packages/type-storage/src/system.ts
@@ -70,7 +70,7 @@ const digest: CreateItemOptions = {
type: 'Digest'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'System',
public: {
diff --git a/packages/type-storage/src/timestamp.ts b/packages/type-storage/src/timestamp.ts
index 06712d9304..62530015cd 100644
--- a/packages/type-storage/src/timestamp.ts
+++ b/packages/type-storage/src/timestamp.ts
@@ -28,7 +28,7 @@ const didUpdate: CreateItemOptions = {
type: 'bool'
};
-export default (name: Storage$Sections): Section =>
+export default (name: Storage$Sections): Section =>
createSection(name)((createMethod: CreateItems) => ({
description: 'Timestamp related entries',
public: {
diff --git a/packages/type-storage/src/types.d.ts b/packages/type-storage/src/types.d.ts
index d45c00d26c..2570de38a5 100644
--- a/packages/type-storage/src/types.d.ts
+++ b/packages/type-storage/src/types.d.ts
@@ -8,16 +8,16 @@ import { Section } from '@polkadot/params/types';
export type Storage$Key$Value = number | BN | Uint8Array | string;
export type Storages = {
- consensus: Section,
- // contract: Section,
- council: Section,
- councilVoting: Section,
- democracy: Section,
- parachains: Section,
- session: Section,
- staking: Section,
- system: Section,
- timestamp: Section
+ consensus: Section,
+ // contract: Section,
+ council: Section,
+ councilVoting: Section,
+ democracy: Section,
+ parachains: Section,
+ session: Section,
+ staking: Section,
+ system: Section,
+ timestamp: Section
};
export type Storage$Sections = keyof Storages;
diff --git a/yarn.lock b/yarn.lock
index 1752c4414f..8aaa51a23f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -734,50 +734,50 @@
typedoc "^0.11.1"
typescript "^2.9.2"
-"@polkadot/trie-hash@^0.28.1":
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/@polkadot/trie-hash/-/trie-hash-0.28.1.tgz#8e220bd2280813818d6d90e4d7d826edfb0d407d"
+"@polkadot/trie-hash@^0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@polkadot/trie-hash/-/trie-hash-0.28.2.tgz#89eb0bca267a5a576bf1629a1d9b173f4ab02c50"
dependencies:
"@babel/runtime" "^7.0.0-beta.51"
- "@polkadot/util" "^0.28.1"
- "@polkadot/util-crypto" "^0.28.1"
- "@polkadot/util-rlp" "^0.28.1"
+ "@polkadot/util" "^0.28.2"
+ "@polkadot/util-crypto" "^0.28.2"
+ "@polkadot/util-rlp" "^0.28.2"
"@polkadot/ts@^0.1.10":
version "0.1.10"
resolved "https://registry.yarnpkg.com/@polkadot/ts/-/ts-0.1.10.tgz#784d460cf4b2e9b38bb1c77f9366dd01425f220d"
-"@polkadot/util-crypto@^0.28.1":
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-0.28.1.tgz#07bef16d5b68889f96ff9b9c034b92e22bd6f63d"
+"@polkadot/util-crypto@^0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-0.28.2.tgz#17bf06af6e3e57c9c6541ee4a166011dfda18434"
dependencies:
"@babel/runtime" "^7.0.0-beta.51"
- "@polkadot/util" "^0.28.1"
+ "@polkadot/util" "^0.28.2"
blakejs "^1.1.0"
js-sha3 "^0.7.0"
tweetnacl "^1.0.0"
xxhashjs "^0.2.2"
-"@polkadot/util-keyring@^0.28.1":
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/@polkadot/util-keyring/-/util-keyring-0.28.1.tgz#68fac78bc7154226d7e6d06acfcfaebc6232814c"
+"@polkadot/util-keyring@^0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@polkadot/util-keyring/-/util-keyring-0.28.2.tgz#a391e785a0710518be349f0ca2d688c89879a69d"
dependencies:
"@babel/runtime" "^7.0.0-beta.51"
- "@polkadot/util" "^0.28.1"
- "@polkadot/util-crypto" "^0.28.1"
+ "@polkadot/util" "^0.28.2"
+ "@polkadot/util-crypto" "^0.28.2"
"@types/bs58" "^3.0.30"
bs58 "^4.0.1"
-"@polkadot/util-rlp@^0.28.1":
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/@polkadot/util-rlp/-/util-rlp-0.28.1.tgz#101cecbb30223fc3b66bd3448371eb5404d46ac6"
+"@polkadot/util-rlp@^0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@polkadot/util-rlp/-/util-rlp-0.28.2.tgz#21c326cdca437b1b31a44bbbf26bf9adcac4fb7f"
dependencies:
"@babel/runtime" "^7.0.0-beta.51"
- "@polkadot/util" "^0.28.1"
+ "@polkadot/util" "^0.28.2"
-"@polkadot/util@^0.28.1":
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.28.1.tgz#7c566cc46741c422d93f535fbd27db4e6eff5f80"
+"@polkadot/util@^0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.28.2.tgz#59fb5a0f3f34d73520a5e0ac54f55ccfde94a8b5"
dependencies:
"@babel/runtime" "^7.0.0-beta.51"
"@types/bn.js" "^4.11.1"