Skip to content

Commit 7d0079d

Browse files
committed
add missing dep error messages
1 parent e90c4c3 commit 7d0079d

File tree

4 files changed

+91
-46
lines changed

4 files changed

+91
-46
lines changed

packages/sdk/src/actions.ts

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,23 +132,35 @@ export class Actions<
132132
if (!lendConfig) return
133133

134134
if (lendConfig.morpho) {
135-
const { MorphoLendProvider } = await import(
136-
'@/lend/providers/morpho/MorphoLendProvider.js'
137-
)
138-
this._lendProviders.morpho = new MorphoLendProvider(
139-
lendConfig.morpho,
140-
this.chainManager,
141-
)
135+
try {
136+
const { MorphoLendProvider } =
137+
await import('@/lend/providers/morpho/MorphoLendProvider.js')
138+
this._lendProviders.morpho = new MorphoLendProvider(
139+
lendConfig.morpho,
140+
this.chainManager,
141+
)
142+
} catch {
143+
throw new Error(
144+
'Morpho lend provider requires @morpho-org/blue-sdk, @morpho-org/blue-sdk-viem, and @morpho-org/morpho-ts. ' +
145+
'Install them with: pnpm add @morpho-org/blue-sdk @morpho-org/blue-sdk-viem @morpho-org/morpho-ts',
146+
)
147+
}
142148
}
143149

144150
if (lendConfig.aave) {
145-
const { AaveLendProvider } = await import(
146-
'@/lend/providers/aave/AaveLendProvider.js'
147-
)
148-
this._lendProviders.aave = new AaveLendProvider(
149-
lendConfig.aave,
150-
this.chainManager,
151-
)
151+
try {
152+
const { AaveLendProvider } =
153+
await import('@/lend/providers/aave/AaveLendProvider.js')
154+
this._lendProviders.aave = new AaveLendProvider(
155+
lendConfig.aave,
156+
this.chainManager,
157+
)
158+
} catch {
159+
throw new Error(
160+
'Aave lend provider requires @aave/contract-helpers, @aave/math-utils, and ethers. ' +
161+
'Install them with: pnpm add @aave/contract-helpers @aave/math-utils ethers@5',
162+
)
163+
}
152164
}
153165

154166
if (this._lendProviders.morpho || this._lendProviders.aave) {

packages/sdk/src/wallet/core/providers/hosted/types/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ export interface HostedProviderFactory<
5252
> {
5353
type: TType
5454
validateOptions(options: unknown): options is TOptions
55-
create(deps: HostedProviderDeps, options: TOptions): TInstance | Promise<TInstance>
55+
create(
56+
deps: HostedProviderDeps,
57+
options: TOptions,
58+
): TInstance | Promise<TInstance>
5659
}
5760

5861
/**

packages/sdk/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,22 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
2727
return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
2828
},
2929
async create({ chainManager, lendProviders, supportedAssets }, options) {
30-
const { PrivyHostedWalletProvider } = await import(
31-
'@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
32-
)
33-
return new PrivyHostedWalletProvider({
34-
privyClient: options.privyClient,
35-
chainManager,
36-
lendProviders,
37-
supportedAssets,
38-
authorizationContext: options.authorizationContext,
39-
})
30+
try {
31+
const { PrivyHostedWalletProvider } =
32+
await import('@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js')
33+
return new PrivyHostedWalletProvider({
34+
privyClient: options.privyClient,
35+
chainManager,
36+
lendProviders,
37+
supportedAssets,
38+
authorizationContext: options.authorizationContext,
39+
})
40+
} catch {
41+
throw new Error(
42+
'Privy wallet provider requires @privy-io/node. ' +
43+
'Install with: pnpm add @privy-io/node',
44+
)
45+
}
4046
},
4147
})
4248

@@ -47,15 +53,21 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
4753
return Boolean(o?.client)
4854
},
4955
async create({ chainManager, lendProviders, supportedAssets }, options) {
50-
const { TurnkeyHostedWalletProvider } = await import(
51-
'@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
52-
)
53-
return new TurnkeyHostedWalletProvider(
54-
options.client,
55-
chainManager,
56-
lendProviders,
57-
supportedAssets,
58-
)
56+
try {
57+
const { TurnkeyHostedWalletProvider } =
58+
await import('@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js')
59+
return new TurnkeyHostedWalletProvider(
60+
options.client,
61+
chainManager,
62+
lendProviders,
63+
supportedAssets,
64+
)
65+
} catch {
66+
throw new Error(
67+
'Turnkey wallet provider requires @turnkey/core, @turnkey/http, @turnkey/sdk-server, and @turnkey/viem. ' +
68+
'Install them with: pnpm add @turnkey/core @turnkey/http @turnkey/sdk-server @turnkey/viem',
69+
)
70+
}
5971
},
6072
})
6173
}

packages/sdk/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
2727
return true
2828
},
2929
async create({ chainManager, lendProviders }, _options) {
30-
const { DynamicHostedWalletProvider } = await import(
31-
'@/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js'
32-
)
33-
return new DynamicHostedWalletProvider(chainManager, lendProviders)
30+
try {
31+
const { DynamicHostedWalletProvider } =
32+
await import('@/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js')
33+
return new DynamicHostedWalletProvider(chainManager, lendProviders)
34+
} catch {
35+
throw new Error(
36+
'Dynamic wallet provider requires @dynamic-labs/ethereum, @dynamic-labs/waas-evm, and @dynamic-labs/wallet-connector-core. ' +
37+
'Install them with: pnpm add @dynamic-labs/ethereum @dynamic-labs/waas-evm @dynamic-labs/wallet-connector-core',
38+
)
39+
}
3440
},
3541
})
3642

@@ -40,10 +46,16 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
4046
return true
4147
},
4248
async create({ chainManager, lendProviders }, _options) {
43-
const { PrivyHostedWalletProvider } = await import(
44-
'@/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js'
45-
)
46-
return new PrivyHostedWalletProvider(chainManager, lendProviders)
49+
try {
50+
const { PrivyHostedWalletProvider } =
51+
await import('@/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js')
52+
return new PrivyHostedWalletProvider(chainManager, lendProviders)
53+
} catch {
54+
throw new Error(
55+
'Privy wallet provider requires @privy-io/react-auth. ' +
56+
'Install with: pnpm add @privy-io/react-auth',
57+
)
58+
}
4759
},
4860
})
4961

@@ -53,10 +65,16 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
5365
return true
5466
},
5567
async create({ chainManager, lendProviders }, _options) {
56-
const { TurnkeyHostedWalletProvider } = await import(
57-
'@/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
58-
)
59-
return new TurnkeyHostedWalletProvider(chainManager, lendProviders)
68+
try {
69+
const { TurnkeyHostedWalletProvider } =
70+
await import('@/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js')
71+
return new TurnkeyHostedWalletProvider(chainManager, lendProviders)
72+
} catch {
73+
throw new Error(
74+
'Turnkey wallet provider requires @turnkey/core, @turnkey/http, @turnkey/react-wallet-kit, and @turnkey/viem. ' +
75+
'Install them with: pnpm add @turnkey/core @turnkey/http @turnkey/react-wallet-kit @turnkey/viem',
76+
)
77+
}
6078
},
6179
})
6280
}

0 commit comments

Comments
 (0)