File tree Expand file tree Collapse file tree 4 files changed +95
-0
lines changed Expand file tree Collapse file tree 4 files changed +95
-0
lines changed Original file line number Diff line number Diff line change 3737 ]
3838 }
3939 },
40+ "browser" : {
41+ "./dist/internal/registry.node.js" : " ./dist/internal/registry.browser.js"
42+ },
4043 "scripts" : {
4144 "build" : " tsc && resolve-tspaths" ,
4245 "clean" : " rm -rf dist types tsconfig.tsbuildinfo" ,
Original file line number Diff line number Diff line change 1+ import { DynamicHostedWalletProvider } from '@/wallet/providers/DynamicHostedWalletProvider.js'
2+ import type {
3+ DynamicOptions ,
4+ HostedProviderFactory ,
5+ HostedProviderType ,
6+ } from '@/wallet/providers/hostedProvider.types.js'
7+
8+ export class HostedWalletProviderRegistry {
9+ private readonly registry = new Map <
10+ HostedProviderType ,
11+ HostedProviderFactory < HostedProviderType >
12+ > ( )
13+
14+ public constructor ( ) {
15+ this . register < 'dynamic' > ( {
16+ type : 'dynamic' ,
17+ validateOptions ( _options ) : _options is DynamicOptions {
18+ return true
19+ } ,
20+ create ( { chainManager } ) {
21+ return new DynamicHostedWalletProvider ( chainManager )
22+ } ,
23+ } )
24+ }
25+
26+ getFactory < TType extends HostedProviderType > (
27+ type : TType ,
28+ ) : HostedProviderFactory < TType > {
29+ const factory = this . registry . get ( type ) as
30+ | HostedProviderFactory < TType >
31+ | undefined
32+ if ( ! factory ) throw new Error ( `Unknown hosted wallet provider: ${ type } ` )
33+ return factory
34+ }
35+
36+ private register < T extends HostedProviderType > (
37+ factory : HostedProviderFactory < T > ,
38+ ) {
39+ if ( ! this . registry . has ( factory . type ) )
40+ this . registry . set ( factory . type , factory )
41+ }
42+ }
43+
44+
Original file line number Diff line number Diff line change 1+ import type {
2+ HostedProviderFactory ,
3+ HostedProviderType ,
4+ PrivyOptions ,
5+ } from '@/wallet/providers/hostedProvider.types.js'
6+ import { PrivyHostedWalletProvider } from '@/wallet/providers/PrivyHostedWalletProvider.js'
7+
8+ export class HostedWalletProviderRegistry {
9+ private readonly registry = new Map <
10+ HostedProviderType ,
11+ HostedProviderFactory < HostedProviderType >
12+ > ( )
13+
14+ public constructor ( ) {
15+ this . register < 'privy' > ( {
16+ type : 'privy' ,
17+ validateOptions ( options ) : options is PrivyOptions {
18+ return Boolean ( ( options as PrivyOptions ) ?. privyClient )
19+ } ,
20+ create ( { chainManager } , options ) {
21+ return new PrivyHostedWalletProvider ( options . privyClient , chainManager )
22+ } ,
23+ } )
24+ // Note: Dynamic provider is intentionally NOT registered in the Node registry
25+ }
26+
27+ getFactory < TType extends HostedProviderType > (
28+ type : TType ,
29+ ) : HostedProviderFactory < TType > {
30+ const factory = this . registry . get ( type ) as
31+ | HostedProviderFactory < TType >
32+ | undefined
33+ if ( ! factory ) throw new Error ( `Unknown hosted wallet provider: ${ type } ` )
34+ return factory
35+ }
36+
37+ private register < T extends HostedProviderType > (
38+ factory : HostedProviderFactory < T > ,
39+ ) {
40+ if ( ! this . registry . has ( factory . type ) )
41+ this . registry . set ( factory . type , factory )
42+ }
43+ }
44+
45+
Original file line number Diff line number Diff line change 1+ // Import node variant by default; frontend bundlers will remap to browser variant via package.json "browser" field
2+ import { HostedWalletProviderRegistry } from './internal/registry.node.js'
3+
14import { LendProviderMorpho } from '@/lend/index.js'
25import { VerbsLendNamespace } from '@/lend/namespaces/VerbsLendNamespace.js'
36import { ChainManager } from '@/services/ChainManager.js'
You can’t perform that action at this time.
0 commit comments