perf: lazy load selected UI provider (AEG-X-002)
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
import { nativeUiProvider } from '../adapter/native/installNativeAdapter';
|
||||
import { primeVueUiProvider } from '../adapter/primevue/installPrimeVueAdapter';
|
||||
export function resolveUiProvider(name) {
|
||||
export async function resolveUiProvider(name) {
|
||||
const normalized = (name ?? 'primevue').trim().toLowerCase();
|
||||
if (normalized === 'primevue')
|
||||
return primeVueUiProvider;
|
||||
if (normalized === 'native')
|
||||
return nativeUiProvider;
|
||||
if (normalized === 'primevue') {
|
||||
return (await import('../adapter/primevue/installPrimeVueAdapter')).primeVueUiProvider;
|
||||
}
|
||||
if (normalized === 'native') {
|
||||
return (await import('../adapter/native/installNativeAdapter')).nativeUiProvider;
|
||||
}
|
||||
throw new Error(`Unsupported VITE_UI_ADAPTER '${name}'. Allowed values: primevue, native.`);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
import type { UiProvider } from './UiProvider'
|
||||
import { nativeUiProvider } from '../adapter/native/installNativeAdapter'
|
||||
import { primeVueUiProvider } from '../adapter/primevue/installPrimeVueAdapter'
|
||||
|
||||
export type UiProviderName = 'primevue' | 'native'
|
||||
|
||||
export function resolveUiProvider(name: string | undefined): UiProvider {
|
||||
export async function resolveUiProvider(name: string | undefined): Promise<UiProvider> {
|
||||
const normalized = (name ?? 'primevue').trim().toLowerCase()
|
||||
if (normalized === 'primevue') return primeVueUiProvider
|
||||
if (normalized === 'native') return nativeUiProvider
|
||||
if (normalized === 'primevue') {
|
||||
return (await import('../adapter/primevue/installPrimeVueAdapter')).primeVueUiProvider
|
||||
}
|
||||
if (normalized === 'native') {
|
||||
return (await import('../adapter/native/installNativeAdapter')).nativeUiProvider
|
||||
}
|
||||
throw new Error(`Unsupported VITE_UI_ADAPTER '${name}'. Allowed values: primevue, native.`)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { resolveUiProvider } from '../resolveUiProvider'
|
||||
|
||||
describe('resolveUiProvider', () => {
|
||||
it('loads the selected native provider', async () => {
|
||||
await expect(resolveUiProvider('native')).resolves.toMatchObject({ id: 'native-accessible' })
|
||||
})
|
||||
|
||||
it('fails closed for an unsupported provider before application mount', async () => {
|
||||
await expect(resolveUiProvider('unsupported')).rejects.toThrow(
|
||||
"Unsupported VITE_UI_ADAPTER 'unsupported'. Allowed values: primevue, native."
|
||||
)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user