2025-06-12 03:59:51 +00:00
|
|
|
export function lazy<T>(fn: () => T) {
|
|
|
|
|
let value: T | undefined
|
|
|
|
|
let loaded = false
|
|
|
|
|
|
2026-01-02 03:11:38 +00:00
|
|
|
const result = (): T => {
|
2025-06-12 03:59:51 +00:00
|
|
|
if (loaded) return value as T
|
2026-04-16 01:33:54 +00:00
|
|
|
value = fn()
|
|
|
|
|
loaded = true
|
|
|
|
|
return value as T
|
2025-06-12 03:59:51 +00:00
|
|
|
}
|
2026-01-02 03:11:38 +00:00
|
|
|
|
|
|
|
|
result.reset = () => {
|
|
|
|
|
loaded = false
|
|
|
|
|
value = undefined
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-03 00:31:21 +00:00
|
|
|
result.loaded = () => loaded
|
|
|
|
|
|
2026-01-02 03:11:38 +00:00
|
|
|
return result
|
2025-06-12 03:59:51 +00:00
|
|
|
}
|