refactor(workspace): enforce layered crate boundaries

This commit is contained in:
elky
2026-07-15 23:47:19 +08:00
parent a728c090a9
commit 8616fe6ee2
969 changed files with 40187 additions and 27240 deletions
@@ -0,0 +1,26 @@
import { describe, expect, it, vi } from 'vitest'
const { importWithRetryMock } = vi.hoisted(() => ({
importWithRetryMock: vi.fn(async (loader: () => Promise<unknown>) => loader()),
}))
vi.mock('@/utils/importRetry', () => ({
importWithRetry: importWithRetryMock,
}))
import { view } from '../helpers'
describe('route view loader', () => {
it('exposes a side-effect-free raw loader for navigation prefetch', async () => {
const component = { name: 'LazyPage' }
const rawLoader = vi.fn(async () => component)
const routeLoader = view(rawLoader)
await expect(routeLoader.prefetch()).resolves.toBe(component)
expect(rawLoader).toHaveBeenCalledTimes(1)
expect(importWithRetryMock).not.toHaveBeenCalled()
await expect(routeLoader()).resolves.toBe(component)
expect(importWithRetryMock).toHaveBeenCalledTimes(1)
})
})
+10 -1
View File
@@ -1,3 +1,12 @@
import { importWithRetry } from '@/utils/importRetry'
export const view = <T>(loader: () => Promise<T>) => () => importWithRetry(loader)
type PrefetchableRouteLoader<T> = (() => Promise<T>) & {
prefetch: () => Promise<T>
}
export const view = <T>(loader: () => Promise<T>): PrefetchableRouteLoader<T> => {
const routeLoader = (() => importWithRetry(loader)) as PrefetchableRouteLoader<T>
// 预取只做一次原始 import;失败时不得触发导航加载器的清缓存和强刷恢复逻辑。
routeLoader.prefetch = loader
return routeLoader
}