From f95763906e07b2cae270d2d544900f16d670a671 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Wed, 13 Feb 2019 16:00:59 +0100 Subject: [PATCH] Add codec exports to types index (#689) * Add codec exports to types index * Use actual index exports (internally) * Merge {AccountId, Balance, Moment}Of into parent classes --- packages/api-derive/src/accounts/indexToId.ts | 3 +- .../balances/votingBalancesNominatorsFor.ts | 3 +- .../src/democracy/referendumVotesFor.ts | 3 +- .../src/staking/intentionsBalances.ts | 3 +- packages/api/src/Base.ts | 5 +- packages/api/src/SubmittableExtrinsic.ts | 3 +- packages/rpc-core/src/index.ts | 3 +- packages/type-storage/src/substrate.ts | 3 +- .../type-storage/src/utils/createFunction.ts | 4 +- packages/types/src/AccountId.ts | 8 ++ packages/types/src/AccountIdOf.ts | 13 --- packages/types/src/Balance.ts | 8 ++ packages/types/src/BalanceOf.ts | 13 --- packages/types/src/Moment.ts | 8 ++ packages/types/src/MomentOf.ts | 13 --- packages/types/src/StorageChangeSet.spec.ts | 2 +- packages/types/src/codec/createType.ts | 2 +- packages/types/src/codec/index.ts | 1 + packages/types/src/index.classes.ts | 95 ++++++++++++++++++ packages/types/src/index.spec.ts | 4 +- packages/types/src/index.ts | 98 +------------------ 21 files changed, 136 insertions(+), 159 deletions(-) delete mode 100644 packages/types/src/AccountIdOf.ts delete mode 100644 packages/types/src/BalanceOf.ts delete mode 100644 packages/types/src/MomentOf.ts create mode 100644 packages/types/src/index.classes.ts diff --git a/packages/api-derive/src/accounts/indexToId.ts b/packages/api-derive/src/accounts/indexToId.ts index 8569463ded..3b0a6d04c8 100644 --- a/packages/api-derive/src/accounts/indexToId.ts +++ b/packages/api-derive/src/accounts/indexToId.ts @@ -6,8 +6,7 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { ApiInterface$Rx } from '@polkadot/api/types'; import { ENUMSET_SIZE } from '@polkadot/types/AccountIndex'; -import { Vector } from '@polkadot/types/codec'; -import { AccountId, AccountIndex } from '@polkadot/types/index'; +import { AccountId, AccountIndex, Vector } from '@polkadot/types/index'; import { drr } from '../util/drr'; diff --git a/packages/api-derive/src/balances/votingBalancesNominatorsFor.ts b/packages/api-derive/src/balances/votingBalancesNominatorsFor.ts index e3119d3569..ae2230e6ae 100644 --- a/packages/api-derive/src/balances/votingBalancesNominatorsFor.ts +++ b/packages/api-derive/src/balances/votingBalancesNominatorsFor.ts @@ -5,8 +5,7 @@ import { Observable, of } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { ApiInterface$Rx } from '@polkadot/api/types'; -import { Vector } from '@polkadot/types/codec'; -import { AccountId, AccountIndex, Address } from '@polkadot/types/index'; +import { AccountId, AccountIndex, Address, Vector } from '@polkadot/types/index'; import { idAndIndex } from '../accounts/idAndIndex'; import { DerivedBalances } from '../types'; diff --git a/packages/api-derive/src/democracy/referendumVotesFor.ts b/packages/api-derive/src/democracy/referendumVotesFor.ts index 346717ac0b..83933c16f7 100644 --- a/packages/api-derive/src/democracy/referendumVotesFor.ts +++ b/packages/api-derive/src/democracy/referendumVotesFor.ts @@ -6,8 +6,7 @@ import BN from 'bn.js'; import { combineLatest, Observable, of } from 'rxjs'; import { map, switchMap } from 'rxjs/operators'; import { ApiInterface$Rx } from '@polkadot/api/types'; -import { Vector } from '@polkadot/types/codec'; -import { AccountId, Balance, Vote } from '@polkadot/types/index'; +import { AccountId, Balance, Vector, Vote } from '@polkadot/types/index'; import { DerivedReferendumVote } from '../types'; import { drr } from '../util/drr'; diff --git a/packages/api-derive/src/staking/intentionsBalances.ts b/packages/api-derive/src/staking/intentionsBalances.ts index 5b6d9a19a2..efde88fd85 100644 --- a/packages/api-derive/src/staking/intentionsBalances.ts +++ b/packages/api-derive/src/staking/intentionsBalances.ts @@ -5,8 +5,7 @@ import { Observable } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { ApiInterface$Rx } from '@polkadot/api/types'; -import { Vector } from '@polkadot/types/codec'; -import { AccountId } from '@polkadot/types/index'; +import { AccountId, Vector } from '@polkadot/types/index'; import { DerivedBalancesMap } from '../types'; import { validatingBalances } from '../balances'; diff --git a/packages/api/src/Base.ts b/packages/api/src/Base.ts index dbb56baa2c..08947463f4 100644 --- a/packages/api/src/Base.ts +++ b/packages/api/src/Base.ts @@ -23,8 +23,7 @@ import extrinsicsFromMeta from '@polkadot/extrinsics/fromMetadata'; import RpcBase from '@polkadot/rpc-core/index'; import RpcRx from '@polkadot/rpc-rx/index'; import storageFromMeta from '@polkadot/storage/fromMetadata'; -import registry from '@polkadot/types/codec/typeRegistry'; -import { Event, Hash, Metadata, Method, RuntimeVersion } from '@polkadot/types/index'; +import { Event, Hash, Metadata, Method, RuntimeVersion, typeRegistry } from '@polkadot/types/index'; import { MethodFunction, ModulesWithMethods } from '@polkadot/types/Method'; import { StorageFunction } from '@polkadot/types/StorageKey'; import { assert, compactStripLength, isFunction, isObject, isUndefined, logger, u8aToHex } from '@polkadot/util'; @@ -303,7 +302,7 @@ export default abstract class ApiBase implement */ registerTypes (types?: RegistryTypes): void { if (types) { - registry.register(types); + typeRegistry.register(types); } } diff --git a/packages/api/src/SubmittableExtrinsic.ts b/packages/api/src/SubmittableExtrinsic.ts index 7609ec1920..c54aa66a92 100644 --- a/packages/api/src/SubmittableExtrinsic.ts +++ b/packages/api/src/SubmittableExtrinsic.ts @@ -3,8 +3,7 @@ // of the Apache-2.0 license. See the LICENSE file for details. import { KeyringPair } from '@polkadot/keyring/types'; -import { Struct, Vector } from '@polkadot/types/codec'; -import { AccountId, Address, Extrinsic, ExtrinsicStatus, EventRecord, Hash, Index, Method, RuntimeVersion, SignedBlock, Text } from '@polkadot/types/index'; +import { AccountId, Address, Extrinsic, ExtrinsicStatus, EventRecord, Hash, Index, Method, RuntimeVersion, SignedBlock, Struct, Text, Vector } from '@polkadot/types/index'; import { SignatureOptions } from '@polkadot/types/ExtrinsicSignature'; import { AnyNumber, AnyU8a, CodecCallback } from '@polkadot/types/types'; import { ApiInterface$Rx, ApiType, OnCallDefinition, Signer } from './types'; diff --git a/packages/rpc-core/src/index.ts b/packages/rpc-core/src/index.ts index f33a6b3c99..a678c8950f 100644 --- a/packages/rpc-core/src/index.ts +++ b/packages/rpc-core/src/index.ts @@ -9,8 +9,7 @@ import { RpcInterface, RpcInterface$Method, RpcInterface$Section } from './types import interfaces from '@polkadot/jsonrpc/index'; import WsProvider from '@polkadot/rpc-provider/ws'; import { Codec } from '@polkadot/types/types'; -import { Vector, createType } from '@polkadot/types/codec'; -import { StorageChangeSet, StorageKey } from '@polkadot/types/index'; +import { StorageChangeSet, StorageKey, Vector, createType } from '@polkadot/types/index'; import { ExtError, assert, isFunction, logger } from '@polkadot/util'; const l = logger('rpc-core'); diff --git a/packages/type-storage/src/substrate.ts b/packages/type-storage/src/substrate.ts index a21fadfb78..990af759e3 100644 --- a/packages/type-storage/src/substrate.ts +++ b/packages/type-storage/src/substrate.ts @@ -4,8 +4,7 @@ import { StorageFunctionMetadata, StorageFunctionModifier, StorageFunctionType } from '@polkadot/types/Metadata/v0/Modules'; import { StorageFunction } from '@polkadot/types/StorageKey'; -import Text from '@polkadot/types/Text'; -import Vector from '@polkadot/types/codec/Vector'; +import { Text, Vector } from '@polkadot/types/index'; import createFunction from './utils/createFunction'; diff --git a/packages/type-storage/src/utils/createFunction.ts b/packages/type-storage/src/utils/createFunction.ts index 73544a0389..95d979b34a 100644 --- a/packages/type-storage/src/utils/createFunction.ts +++ b/packages/type-storage/src/utils/createFunction.ts @@ -2,11 +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 Compact from '@polkadot/types/codec/Compact'; -import { createType } from '@polkadot/types/codec'; import { StorageFunctionMetadata } from '@polkadot/types/Metadata/v0/Modules'; import { StorageFunction } from '@polkadot/types/StorageKey'; -import { Text } from '@polkadot/types/index'; +import { Compact, Text, createType } from '@polkadot/types/index'; import { assert, isNull, isUndefined, stringLowerFirst, stringToU8a, u8aConcat } from '@polkadot/util'; import { xxhashAsU8a } from '@polkadot/util-crypto'; diff --git a/packages/types/src/AccountId.ts b/packages/types/src/AccountId.ts index 4c779334a7..2adb621a7a 100644 --- a/packages/types/src/AccountId.ts +++ b/packages/types/src/AccountId.ts @@ -61,3 +61,11 @@ export default class AccountId extends U8aFixed { return AccountId.encode(this); } } + +/** + * @name AccountIdOf + * @description + * The Substrate AccountIdOf representation as a [[AccountId]]. + */ +export class AccountIdOf extends AccountId { +} diff --git a/packages/types/src/AccountIdOf.ts b/packages/types/src/AccountIdOf.ts deleted file mode 100644 index 4fd46c454e..0000000000 --- a/packages/types/src/AccountIdOf.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017-2019 @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 AccountId from './AccountId'; - -/** - * @name AccountIdOf - * @description - * The Substrate AccountIdOf representation as a [[AccountId]]. - */ -export default class AccountIdOf extends AccountId { -} diff --git a/packages/types/src/Balance.ts b/packages/types/src/Balance.ts index 5a441d50cb..3988f43da2 100644 --- a/packages/types/src/Balance.ts +++ b/packages/types/src/Balance.ts @@ -11,3 +11,11 @@ import U128 from './U128'; */ export default class Balance extends U128 { } + +/** + * @name BalanceOf + * @description + * The Substrate BalanceOf representation as a [[Balance]]. + */ +export class BalanceOf extends Balance { +} diff --git a/packages/types/src/BalanceOf.ts b/packages/types/src/BalanceOf.ts deleted file mode 100644 index 3c9d494ac8..0000000000 --- a/packages/types/src/BalanceOf.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017-2019 @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 Balance from './Balance'; - -/** - * @name BalanceOf - * @description - * The Substrate BalanceOf representation as a [[Balance]]. - */ -export default class BalanceOf extends Balance { -} diff --git a/packages/types/src/Moment.ts b/packages/types/src/Moment.ts index 625c0fadbf..c622328fea 100644 --- a/packages/types/src/Moment.ts +++ b/packages/types/src/Moment.ts @@ -110,3 +110,11 @@ export default class Moment extends Date implements Codec { return bnToU8a(this.toNumber(), BITLENGTH, true); } } + +/** + * @name MomentOf + * @description + * The Substrate MomentOf representation as a [[Moment]]. + */ +export class MomentOf extends Moment { +} diff --git a/packages/types/src/MomentOf.ts b/packages/types/src/MomentOf.ts deleted file mode 100644 index 9c9fc080bf..0000000000 --- a/packages/types/src/MomentOf.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017-2019 @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 Moment from './Moment'; - -/** - * @name MomentOf - * @description - * The Substrate MomentOf representation as a [[Moment]]. - */ -export default class MomentOf extends Moment { -} diff --git a/packages/types/src/StorageChangeSet.spec.ts b/packages/types/src/StorageChangeSet.spec.ts index 7a62b06812..5edeb40481 100644 --- a/packages/types/src/StorageChangeSet.spec.ts +++ b/packages/types/src/StorageChangeSet.spec.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 { createType } from '@polkadot/types/codec'; +import { createType } from '@polkadot/types/index'; import json from './json/StorageChangeSet.001.json'; import StorageChangeSet from './StorageChangeSet'; diff --git a/packages/types/src/codec/createType.ts b/packages/types/src/codec/createType.ts index 7de8457275..dfd40c9ba4 100644 --- a/packages/types/src/codec/createType.ts +++ b/packages/types/src/codec/createType.ts @@ -184,7 +184,7 @@ export function getTypeClass (value: TypeDef): Constructor { } // NOTE We only load types via require - we have to avoid circular deps between type usage and creation - const Types = require('../index'); + const Types = require('../index.classes'); const Type = registry.get(value.type) || Types[value.type]; assert(Type, `Unable to determine type from '${value.type}'`); diff --git a/packages/types/src/codec/index.ts b/packages/types/src/codec/index.ts index 2e43a341a9..11d057de5a 100644 --- a/packages/types/src/codec/index.ts +++ b/packages/types/src/codec/index.ts @@ -23,3 +23,4 @@ export { default as UInt } from './UInt'; // Type management helper functions export { default as createType, getTypeClass, getTypeDef, TypeDef, TypeDefInfo } from './createType'; +export { default as typeRegistry } from './typeRegistry'; diff --git a/packages/types/src/index.classes.ts b/packages/types/src/index.classes.ts new file mode 100644 index 0000000000..70e55d2ddc --- /dev/null +++ b/packages/types/src/index.classes.ts @@ -0,0 +1,95 @@ +// Copyright 2017-2019 @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. + +// NOTE When adding any types here, we need to update the coumentation links as +// well - /docs/SUMMARY.md as well as ../README.md + +/** + * @summary Type definitions that are used in the system + */ +export { default as AccountId, AccountIdOf } from './AccountId'; +export { default as AccountIndex } from './AccountIndex'; +export { default as Address } from './Address'; +export { default as AttestedCandidate } from './AttestedCandidate'; +export { default as AuthorityId } from './AuthorityId'; +export { default as Balance, BalanceOf } from './Balance'; +// NOTE Bft items are only used in internal structures +// export * from './Bft; +export { default as Block } from './Block'; +export { default as BlockNumber } from './BlockNumber'; +// NOTE We are exporting Bool as bool to match with Rust +export { default as bool } from './Bool'; +export { default as Bytes } from './Bytes'; +export { default as ChainProperties } from './ChainProperties'; +export { default as CodeHash } from './CodeHash'; +export { default as Data } from './Data'; +export { default as Digest } from './Digest'; +export { default as Event } from './Event'; +export { default as EventRecord } from './EventRecord'; +export { default as Extrinsic } from './Extrinsic'; +export { default as ExtrinsicEra } from './ExtrinsicEra'; +export { default as ExtrinsicSignature } from './ExtrinsicSignature'; +export { default as ExtrinsicStatus } from './ExtrinsicStatus'; +// NOTE Only used internally, exported as PendingExtrinsics +// export { default as Extrinsics } from './Extrinsics'; +export { default as Gas } from './Gas'; +export { default as H256 } from './H256'; +export { default as H512 } from './H512'; +export { default as Hash } from './Hash'; +export { default as Header } from './Header'; +export { default as Health } from './Health'; +export { default as i8 } from './I8'; +export { default as i16 } from './I16'; +export { default as i32 } from './I32'; +export { default as i64 } from './I64'; +export { default as i128 } from './I128'; +export { default as i256 } from './I256'; +export { default as InherentOfflineReport } from './InherentOfflineReport'; +export { default as KeyValue } from './KeyValue'; +export { default as LockPeriods } from './LockPeriods'; +export { default as Metadata } from './Metadata'; +export { default as Method } from './Method'; +export { default as MisbehaviorReport } from './MisbehaviorReport'; +export { default as Moment, MomentOf } from './Moment'; +export { default as NewAccountOutcome } from './NewAccountOutcome'; +export { default as Null } from './Null'; +// NOTE Nonce is renamed to Index +export { default as Index } from './Nonce'; +export { default as IndexCompact } from './NonceCompact'; +export { default as Justification } from './Justification'; +export { default as Origin } from './Origin'; +export { default as ParaId } from './ParaId'; +export { default as PeerInfo } from './PeerInfo'; +export { default as PendingExtrinsics } from './PendingExtrinsics'; +export { default as Permill } from './Permill'; +export { default as Perbill } from './Perbill'; +export { default as PropIndex } from './PropIndex'; +export { default as Proposal } from './Proposal'; +export { default as ProposalIndex } from './ProposalIndex'; +export { default as ReferendumIndex } from './ReferendumIndex'; +export { default as ReferendumInfo } from './ReferendumInfo'; +export { default as RuntimeVersion } from './RuntimeVersion'; +export { default as Schedule } from './Schedule'; +export { default as SeedOf } from './SeedOf'; +export { default as SessionKey } from './SessionKey'; +export { default as Signature } from './Signature'; +export { default as SignedBlock } from './SignedBlock'; +export { default as StorageChangeSet } from './StorageChangeSet'; +export { default as StorageData } from './StorageData'; +export { default as StorageKey } from './StorageKey'; +export { default as StoredPendingChange } from './StoredPendingChange'; +export { default as Text } from './Text'; +export { default as Type } from './Type'; +// NOTE We are exporting the U* classes as lowercase, matching with Rust +export { default as u8 } from './U8'; +export { default as u16 } from './U16'; +export { default as u32 } from './U32'; +export { default as u64 } from './U64'; +export { default as u128 } from './U128'; +export { default as u256 } from './U256'; +export { default as usize } from './USize'; +export { default as ValidatorPrefs } from './ValidatorPrefs'; +export { default as Vote } from './Vote'; +export { default as VoteThreshold } from './VoteThreshold'; +export { default as VoteIndex } from './VoteIndex'; diff --git a/packages/types/src/index.spec.ts b/packages/types/src/index.spec.ts index 81dc0dba73..9cdc68e96b 100644 --- a/packages/types/src/index.spec.ts +++ b/packages/types/src/index.spec.ts @@ -6,9 +6,9 @@ import { Constructor } from './types'; import extrinsics from '@polkadot/extrinsics/static'; -import * as _Types from './index'; +import * as Classes from './index.classes'; -const Types = _Types as { [index: string]: Constructor }; +const Types = Classes as { [index: string]: Constructor }; describe('types', () => { describe('default creation', () => { diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index fd64346e95..569d904676 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -5,99 +5,5 @@ // NOTE When adding any types here, we need to update the coumentation links as // well - /docs/SUMMARY.md as well as ../README.md -// NOTE We are not re-exporting the index.ts from codec here. The reasoning being -// that these should be enough to actually _use_ the codec, i.e. from a api-user -// perspective these are the value classes. (Codec is for the cases where you need -// to construct values dynamically) - -/** - * @summary Type definitions that are used in the system - */ -export { default as AccountId } from './AccountId'; -export { default as AccountIdOf } from './AccountIdOf'; -export { default as AccountIndex } from './AccountIndex'; -export { default as Address } from './Address'; -export { default as AttestedCandidate } from './AttestedCandidate'; -export { default as AuthorityId } from './AuthorityId'; -export { default as Balance } from './Balance'; -export { default as BalanceOf } from './BalanceOf'; -// NOTE Bft items are only used in internal structures -// export * from './Bft; -export { default as Block } from './Block'; -export { default as BlockNumber } from './BlockNumber'; -// NOTE We are exporting Bool as bool to match with Rust -export { default as bool } from './Bool'; -export { default as Bytes } from './Bytes'; -export { default as ChainProperties } from './ChainProperties'; -export { default as CodeHash } from './CodeHash'; -export { default as Data } from './Data'; -export { default as Digest } from './Digest'; -export { default as Event } from './Event'; -export { default as EventRecord } from './EventRecord'; -export { default as Extrinsic } from './Extrinsic'; -export { default as ExtrinsicEra } from './ExtrinsicEra'; -export { default as ExtrinsicSignature } from './ExtrinsicSignature'; -export { default as ExtrinsicStatus } from './ExtrinsicStatus'; -// NOTE Only used internally, exported as PendingExtrinsics -// export { default as Extrinsics } from './Extrinsics'; -export { default as Gas } from './Gas'; -export { default as H256 } from './H256'; -export { default as H512 } from './H512'; -export { default as Hash } from './Hash'; -export { default as Header } from './Header'; -export { default as Health } from './Health'; -export { default as i8 } from './I8'; -export { default as i16 } from './I16'; -export { default as i32 } from './I32'; -export { default as i64 } from './I64'; -export { default as i128 } from './I128'; -export { default as i256 } from './I256'; -export { default as InherentOfflineReport } from './InherentOfflineReport'; -export { default as KeyValue } from './KeyValue'; -export { default as LockPeriods } from './LockPeriods'; -export { default as Metadata } from './Metadata'; -export { default as Method } from './Method'; -export { default as MisbehaviorReport } from './MisbehaviorReport'; -export { default as Moment } from './Moment'; -export { default as MomentOf } from './MomentOf'; -export { default as NewAccountOutcome } from './NewAccountOutcome'; -export { default as Null } from './Null'; -// NOTE Nonce is renamed to Index -export { default as Index } from './Nonce'; -export { default as IndexCompact } from './NonceCompact'; -export { default as Justification } from './Justification'; -export { default as Origin } from './Origin'; -export { default as ParaId } from './ParaId'; -export { default as PeerInfo } from './PeerInfo'; -export { default as PendingExtrinsics } from './PendingExtrinsics'; -export { default as Permill } from './Permill'; -export { default as Perbill } from './Perbill'; -export { default as PropIndex } from './PropIndex'; -export { default as Proposal } from './Proposal'; -export { default as ProposalIndex } from './ProposalIndex'; -export { default as ReferendumIndex } from './ReferendumIndex'; -export { default as ReferendumInfo } from './ReferendumInfo'; -export { default as RuntimeVersion } from './RuntimeVersion'; -export { default as Schedule } from './Schedule'; -export { default as SeedOf } from './SeedOf'; -export { default as SessionKey } from './SessionKey'; -export { default as Signature } from './Signature'; -export { default as SignedBlock } from './SignedBlock'; -export { default as StorageChangeSet } from './StorageChangeSet'; -export { default as StorageData } from './StorageData'; -export { default as StorageKey } from './StorageKey'; -export { default as StoredPendingChange } from './StoredPendingChange'; -export { default as Text } from './Text'; -export { default as Type } from './Type'; -// NOTE We are exporting the U* classes as lowercase, matching with Rust -export { default as u8 } from './U8'; -export { default as u16 } from './U16'; -export { default as u32 } from './U32'; -export { default as u64 } from './U64'; -export { default as u128 } from './U128'; -export { default as u256 } from './U256'; -export { default as usize } from './USize'; -export { default as ValidatorPrefs } from './ValidatorPrefs'; -export { default as Vote } from './Vote'; -export { default as VoteThreshold } from './VoteThreshold'; -export { default as VoteIndex } from './VoteIndex'; +export * from './codec'; +export * from './index.classes';