From fc4f281408c56ab12db571a470456212a479edf5 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 18 Sep 2025 01:32:40 -0400 Subject: wip: zen --- packages/cloud/core/src/util/memo.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 packages/cloud/core/src/util/memo.ts (limited to 'packages/cloud/core/src/util/memo.ts') diff --git a/packages/cloud/core/src/util/memo.ts b/packages/cloud/core/src/util/memo.ts new file mode 100644 index 000000000..49043010f --- /dev/null +++ b/packages/cloud/core/src/util/memo.ts @@ -0,0 +1,18 @@ +export function memo(fn: () => T, cleanup?: (input: T) => Promise) { + let value: T | undefined + let loaded = false + + const result = (): T => { + if (loaded) return value as T + loaded = true + value = fn() + return value as T + } + result.reset = async () => { + if (cleanup && value) await cleanup(value) + loaded = false + value = undefined + } + + return result +} -- cgit v1.2.3