MCPcopy Create free account
hub / github.com/effect-app/libs / lazyGetter

Function lazyGetter

packages/effect-app/src/utils.ts:539–558  ·  view source on GitHub ↗
(creator: (target: T) => T2)

Source from the content-addressed store, hash-verified

537}
538
539export function lazyGetter<T extends object, T2>(creator: (target: T) => T2) {
540 const key = Symbol(creator.name)
541 const f = (target: T): T2 => {
542 let lazy = (target as unknown as Lazy)[LazySymbol]
543 if (!lazy) {
544 lazy = {}
545 Object.defineProperty(target, LazySymbol, { enumerable: false, value: lazy })
546 } else if (lazy[key]) {
547 return lazy[key]
548 }
549 const value = creator(target)
550 lazy[key] = value
551 return value
552 }
553 Object.defineProperty(f, "name", {
554 enumerable: false,
555 value: `Lazy<${creator.name}>`
556 })
557 return f
558}
559
560export function exhaustiveMatch<T extends string>() {
561 return <Out extends Record<T, (t: T) => any>>(handlers: Out) => (t: T): ReturnType<Out[keyof Out]> => handlers[t](t)

Callers

nothing calls this directly

Calls 1

SymbolInterface · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…