UNPKG

@gear-js/api

Version:

A JavaScript library that provides functionality to connect GEAR Component APIs.

75 lines (71 loc) 2.5 kB
'use strict'; var types = require('@polkadot/types'); var json = require('../utils/json.js'); var metadata = require('./metadata.js'); var index = require('../default/index.js'); class CreateType { registry; metadata; constructor(hexRegistry) { if (!hexRegistry) { this.registry = new types.TypeRegistry(); this.registerDefaultTypes(); } else { this.metadata = new metadata.GearMetadata(hexRegistry); } } registerDefaultTypes() { this.registry.setKnownTypes({ types: index.gearTypes }); this.registry.register(index.gearTypes); } /** * * @param type `TypeName` to encode or decode payload * @param payload `Payload` that have to be encoded or decoded * @returns Codec * @example * ```javascript * const createType = new CreateType(); * const encoded = createType.create('String', 'Hello, World'); * console.log(encoded.toHex()); // 0x48656c6c6f2c20576f726c6421 * * const decoded = createType.create('String', '0x48656c6c6f2c20576f726c6421'); * console.log(decoded.toHuman()); // "Hello, World!" */ create(typeOrTypeIndex, payload) { let [type, index] = typeof typeOrTypeIndex === 'string' ? [typeOrTypeIndex, undefined] : [undefined, typeOrTypeIndex]; if (payload === undefined) { payload = '0x'; } else if (json.isJSON(payload)) { payload = json.toJSON(payload); } if (type === undefined) { type = 'Bytes'; } if (this.metadata) { index = index || this.metadata.getTypeIndexByName(type); return this.metadata.createType(index, payload); } return this.registry.createType(type, payload); } /** * * @param type `TypeName` to encode or decode payload * @param payload `Payload` that have to be encoded or decoded * @param hexRegistry registry in hex format * @param defaultTypes set to true if you want to register default types too * @returns Codec * @example * ```javascript * const encoded = CreateType.create('String', 'Hello, World'); * console.log(encoded.toHex()); // 0x48656c6c6f2c20576f726c6421 * ``` */ static create(type, payload, hexRegistry) { const createType = new CreateType(hexRegistry); return createType.create(type, payload); } } exports.CreateType = CreateType;