Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion packages/core/src/bases/chain-wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,11 @@ export class ChainWalletBase extends WalletBase<ChainWalletData> {
account = await this.client.getAccount(this.chainId);
}

const resolvedName = await this.nameResolver?.(account.address);

this.setData({
address: account.address,
username: account.name,
username: resolvedName ?? account.name,
offlineSigner: this.chainId
? await this.client.getOfflineSigner(this.chainId)
: void 0,
Expand Down
10 changes: 9 additions & 1 deletion packages/core/src/bases/state.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import { Actions, AppEnv, Mutable, State, StateActions } from '../types';
import {
Actions,
AppEnv,
Mutable,
NameResolver,
State,
StateActions,
} from '../types';
import { getWalletStatusFromState } from '../utils';

export class StateBase<T> {
protected _mutable: Mutable<T>;
actions?: StateActions<T>;
protected _env?: AppEnv;
nameResolver?: NameResolver;

constructor() {
this._mutable = { state: State.Init };
Expand Down
5 changes: 4 additions & 1 deletion packages/core/src/manager-v2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
Data,
DeviceType,
EndpointOptions,
NameResolver,
OS,
SessionOptions,
SignerOptions,
Expand All @@ -36,10 +37,12 @@ export class WalletManagerV2 extends StateBase<Data> {
wallets: MainWalletBase[],
signerOptions?: SignerOptions,
endpointOptions?: EndpointOptions,
sessionOptions?: SessionOptions
sessionOptions?: SessionOptions,
nameResolver?: NameResolver
) {
super();
this.sessionOptions = { ...this.sessionOptions, ...sessionOptions };
this.nameResolver = nameResolver;

console.info(
`${chains.length} chains and ${wallets.length} wallets are provided!`
Expand Down
5 changes: 4 additions & 1 deletion packages/core/src/manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
DeviceType,
EndpointOptions,
ManagerActions,
NameResolver,
OS,
SessionOptions,
SignerOptions,
Expand Down Expand Up @@ -66,7 +67,8 @@ export class WalletManager extends StateBase<WalletData> {
viewOptions?: ViewOptions,
endpointOptions?: EndpointOptions,
storageOptions?: StorageOptions,
sessionOptions?: SessionOptions
sessionOptions?: SessionOptions,
nameResolver?: NameResolver
) {
super();
this.setWallets(wallets);
Expand All @@ -75,6 +77,7 @@ export class WalletManager extends StateBase<WalletData> {
this.viewOptions = { ...this.viewOptions, ...viewOptions };
this.storageOptions = { ...this.storageOptions, ...storageOptions };
this.sessionOptions = { ...this.sessionOptions, ...sessionOptions };
this.nameResolver = nameResolver;
}

setChains = (
Expand Down
2 changes: 2 additions & 0 deletions packages/core/src/types/wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -242,3 +242,5 @@ export interface ChainContext {
) => Promise<DirectSignResponse>;
sendTx(tx: Uint8Array, mode: BroadcastMode): Promise<Uint8Array>;
}

export type NameResolver = (address: string) => Promise<string | undefined>;
3 changes: 2 additions & 1 deletion packages/core/types/bases/state.d.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { Actions, AppEnv, Mutable, State, StateActions } from '../types';
import { Actions, AppEnv, Mutable, NameResolver, State, StateActions } from '../types';
export declare class StateBase<T> {
protected _mutable: Mutable<T>;
actions?: StateActions<T>;
protected _env?: AppEnv;
nameResolver?: NameResolver;
constructor();
get env(): AppEnv;
setEnv(env?: AppEnv): void;
Expand Down
4 changes: 2 additions & 2 deletions packages/core/types/manager-v2.d.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { AssetList, Chain } from '@chain-registry/types';
import { MainWalletBase, StateBase } from './bases';
import { WalletRepo } from './repository';
import { ChainName, ChainRecord, Data, EndpointOptions, SessionOptions, SignerOptions } from './types';
import { ChainName, ChainRecord, Data, EndpointOptions, NameResolver, SessionOptions, SignerOptions } from './types';
export declare class WalletManagerV2 extends StateBase<Data> {
chainRecords: ChainRecord[];
walletRepos: WalletRepo[];
options: {
synchroMutexWallet: boolean;
};
sessionOptions: SessionOptions;
constructor(chains: Chain[], assetLists: AssetList[], wallets: MainWalletBase[], signerOptions?: SignerOptions, endpointOptions?: EndpointOptions, sessionOptions?: SessionOptions);
constructor(chains: Chain[], assetLists: AssetList[], wallets: MainWalletBase[], signerOptions?: SignerOptions, endpointOptions?: EndpointOptions, sessionOptions?: SessionOptions, nameResolver?: NameResolver);
get walletReposInUse(): WalletRepo[];
synchronizeMutexWalletConnection(): Promise<void>;
getWalletRepo: (chainName: ChainName) => WalletRepo;
Expand Down
4 changes: 2 additions & 2 deletions packages/core/types/manager.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { EncodeObject, OfflineSigner } from '@cosmjs/proto-signing';
import { SigningStargateClient, StargateClient, StdFee } from '@cosmjs/stargate';
import { TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
import { MainWalletBase, StateBase } from './bases';
import { ChainName, ChainRecord, CosmosClientType, EndpointOptions, ManagerActions, SessionOptions, SignerOptions, State, StorageOptions, ViewOptions, Wallet, WalletAdapter, WalletData, WalletName } from './types';
import { ChainName, ChainRecord, CosmosClientType, EndpointOptions, ManagerActions, NameResolver, SessionOptions, SignerOptions, State, StorageOptions, ViewOptions, Wallet, WalletAdapter, WalletData, WalletName } from './types';
export declare class WalletManager extends StateBase<WalletData> {
private _currentWalletName?;
private _currentChainName?;
Expand All @@ -15,7 +15,7 @@ export declare class WalletManager extends StateBase<WalletData> {
viewOptions: ViewOptions;
storageOptions: StorageOptions;
sessionOptions: SessionOptions;
constructor(chains: Chain[], assetLists: AssetList[], wallets: MainWalletBase[], signerOptions?: SignerOptions, viewOptions?: ViewOptions, endpointOptions?: EndpointOptions, storageOptions?: StorageOptions, sessionOptions?: SessionOptions);
constructor(chains: Chain[], assetLists: AssetList[], wallets: MainWalletBase[], signerOptions?: SignerOptions, viewOptions?: ViewOptions, endpointOptions?: EndpointOptions, storageOptions?: StorageOptions, sessionOptions?: SessionOptions, nameResolver?: NameResolver);
setChains: (chains: Chain[], assetLists: AssetList[], signerOptions?: SignerOptions, endpointOptions?: EndpointOptions) => void;
setWallets: (wallets: MainWalletBase[]) => void;
setActiveWalletNames: (walletNames?: WalletName[]) => void;
Expand Down
1 change: 1 addition & 0 deletions packages/core/types/types/wallet.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,4 @@ export interface ChainContext {
signDirect: (signer: string, signDoc: DirectSignDoc, signOptions?: SignOptions) => Promise<DirectSignResponse>;
sendTx(tx: Uint8Array, mode: BroadcastMode): Promise<Uint8Array>;
}
export declare type NameResolver = (address: string) => Promise<string | undefined>;
1 change: 1 addition & 0 deletions packages/example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"@cosmos-kit/leap": "^0.13.14",
"@cosmos-kit/react": "^0.27.8",
"@cosmos-kit/vectis": "^0.14.14",
"@cosmos-kit/name-resolvers": "^0.0.1",
"@emotion/react": "11.10.5",
"@emotion/styled": "11.10.5",
"bignumber.js": "9.1.0",
Expand Down
3 changes: 3 additions & 0 deletions packages/example/pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { wallets as keplrWallet } from "@cosmos-kit/keplr";
import { wallets as leapWallets } from "@cosmos-kit/leap";
import { ChainProvider, defaultTheme, WalletProvider } from "@cosmos-kit/react";
import { wallets as vectisWallets } from "@cosmos-kit/vectis";
import { defaultNameResolver } from "@cosmos-kit/name-resolvers";
import { assets, chains } from "chain-registry";
import type { AppProps } from "next/app";

Expand Down Expand Up @@ -42,6 +43,7 @@ function MyApp({ Component, pageProps }: AppProps) {
rpc: ["http://test.com"],
},
}}
nameResolver={defaultNameResolver}
>
<ChainProvider
chains={chains}
Expand All @@ -64,6 +66,7 @@ function MyApp({ Component, pageProps }: AppProps) {
}
},
}}
nameResolver={defaultNameResolver}
>
<Component {...pageProps} />
</ChainProvider>
Expand Down
17 changes: 17 additions & 0 deletions packages/name-resolvers/.babelrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const useESModules = !!process.env.MODULE;

module.exports = (api) => {
api.cache(() => process.env.MODULE);
return {
presets: useESModules
? [["@babel/preset-typescript", { allowDeclareFields: true }]]
: [["@babel/preset-typescript", { allowDeclareFields: true }], "@babel/preset-env"],
plugins: [
['@babel/plugin-transform-typescript', { allowDeclareFields: true }],
['@babel/transform-runtime', { useESModules }],
'@babel/proposal-object-rest-spread',
'@babel/proposal-class-properties',
'@babel/proposal-export-default-from'
],
};
};
12 changes: 12 additions & 0 deletions packages/name-resolvers/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
7 changes: 7 additions & 0 deletions packages/name-resolvers/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules/
dist/
main/
module/
./types/
coverage/
/index.ts
82 changes: 82 additions & 0 deletions packages/name-resolvers/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
{
"plugins": [
"@typescript-eslint",
"simple-import-sort",
"unused-imports"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
// configures both eslint-plugin-prettier and eslint-config-prettier
"plugin:prettier/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"project": "tsconfig.json"
},
"env": {
"es6": true,
"browser": true,
"node": true,
"jest": true
},
"rules": {
"simple-import-sort/imports": 2,
"simple-import-sort/exports": 2,
"prettier/prettier": 2,
"unused-imports/no-unused-imports": 2,
"no-console": 1,
"no-debugger": 2,
"no-alert": 2,
"no-await-in-loop": 0,
"no-prototype-builtins": 0,
"no-return-assign": [
"error",
"except-parens"
],
"no-restricted-syntax": [
2,
"ForInStatement",
"LabeledStatement",
"WithStatement"
],
"no-unused-vars": 0,
"@typescript-eslint/no-unused-vars": [
"warn",
{
"argsIgnorePattern": "React|res|next|^_"
}
],
"prefer-const": [
"error",
{
"destructuring": "all"
}
],
"no-unused-expressions": [
2,
{
"allowTaggedTemplates": true
}
],
"comma-dangle": 0,
"jsx-quotes": [
2,
"prefer-double"
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
2,
"single",
{
"avoidEscape": true,
"allowTemplateLiterals": true
}
]
}
}
48 changes: 48 additions & 0 deletions packages/name-resolvers/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed

# dist
main
module

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Editors
.idea

# Lib
lib

# npm package lock
package-lock.json
yarn.lock

# others
.DS_Store
32 changes: 32 additions & 0 deletions packages/name-resolvers/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
*.log
npm-debug.log*

# Coverage directory used by tools like istanbul
coverage
.nyc_output

# Dependency directories
node_modules

# npm package lock
package-lock.json
yarn.lock

# project files
__fixtures__
__tests__
.babelrc
.babelrc.js
.editorconfig
.eslintignore
.eslintrc
.eslintrc.js
.gitignore
.travis.yml
.vscode
CHANGELOG.md
examples
jest.config.js
package.json
src
test
1 change: 1 addition & 0 deletions packages/name-resolvers/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
scripts-prepend-node-path=true
7 changes: 7 additions & 0 deletions packages/name-resolvers/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"useTabs": false
}
8 changes: 8 additions & 0 deletions packages/name-resolvers/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [0.0.1](https://github.com/cosmology-tech/cosmos-kit/compare/my-app@0.2.0...my-app@0.2.1) (2022-12-21)

**Note:** Init name-resolvers package
Loading