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
16 changes: 9 additions & 7 deletions packages/sdk/src/client/createClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,18 @@ export function createClient(options: SDKConfig): SDKClient {
checkPackageUpdates(name, version)
}

const { providers, ...configOptions } = options

const _config: SDKBaseConfig = {
...options,
apiUrl: options?.apiUrl ?? 'https://li.quest/v1',
rpcUrls: options?.rpcUrls ?? {},
debug: options?.debug ?? false,
preloadChains: options?.preloadChains ?? true,
integrator: options?.integrator ?? 'lifi-sdk',
...configOptions,
apiUrl: configOptions?.apiUrl ?? 'https://li.quest/v1',
rpcUrls: configOptions?.rpcUrls ?? {},
debug: configOptions?.debug ?? false,
preloadChains: configOptions?.preloadChains ?? true,
integrator: configOptions?.integrator ?? 'lifi-sdk',
}

let _providers: SDKProvider[] = []
let _providers: SDKProvider[] = providers ?? []
const _storage = getClientStorage(_config)

const client: SDKClient = {
Expand Down
45 changes: 45 additions & 0 deletions packages/sdk/src/client/createClient.unit.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,51 @@ describe('createClient', () => {
expect(client.getProvider(ChainType.EVM)).toBeUndefined()
})

it('should initialize providers from config', () => {
const evmProvider = EVM()
const solanaProvider = Solana()

const client = createClient({
integrator: 'test-app',
providers: [evmProvider, solanaProvider],
})

expect(client.providers).toHaveLength(2)
expect(client.getProvider(ChainType.EVM)).toBe(evmProvider)
expect(client.getProvider(ChainType.SVM)).toBe(solanaProvider)
})

it('should merge providers set via setProviders with initial providers', () => {
const evmProvider = EVM()
const utxoProvider = UTXO()

const client = createClient({
integrator: 'test-app',
providers: [evmProvider],
})

client.setProviders([utxoProvider])

expect(client.providers).toHaveLength(2)
expect(client.getProvider(ChainType.EVM)).toBe(evmProvider)
expect(client.getProvider(ChainType.UTXO)).toBe(utxoProvider)
})

it('should replace initial providers of the same type via setProviders', () => {
const evmProvider1 = EVM()
const evmProvider2 = EVM()

const client = createClient({
integrator: 'test-app',
providers: [evmProvider1],
})

client.setProviders([evmProvider2])

expect(client.providers).toHaveLength(1)
expect(client.getProvider(ChainType.EVM)).toBe(evmProvider2)
})

it('should set and get providers', () => {
const client = createClient({ integrator: 'test-app' })
const evmProvider = EVM()
Expand Down
1 change: 1 addition & 0 deletions packages/sdk/src/types/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export interface SDKBaseConfig {

export interface SDKConfig extends Partial<Omit<SDKBaseConfig, 'integrator'>> {
integrator: string
providers?: SDKProvider[]
}

export type RPCUrls = Partial<Record<ChainId, string[]>>
Expand Down
Loading