diff --git a/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte b/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte
index dc57ea2749..e9e2686840 100644
--- a/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte
+++ b/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte
@@ -1,6 +1,7 @@
diff --git a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte
index e3d736232e..354ae3e5c0 100644
--- a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte
+++ b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte
@@ -1,9 +1,18 @@
diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts
index 62e76f1c82..3b25abb4d4 100644
--- a/frontend/src/lib/utils.ts
+++ b/frontend/src/lib/utils.ts
@@ -1553,15 +1553,21 @@ export function assert(msg: string, condition: boolean, value?: any) {
}
}
-export function createCache, T>(
+export function createCache, T, InitialKeys extends Keys = Keys>(
compute: (keys: Keys) => T,
- params?: { maxSize?: number }
+ params?: { maxSize?: number; initial?: InitialKeys }
): (keys: Keys) => T {
let cache = new Map()
const maxSize = params?.maxSize ?? 15
+ if (params?.initial) {
+ let key = JSON.stringify(params.initial, Object.keys(params.initial).sort())
+ let value = compute(params.initial)
+ cache.set(key, value)
+ }
+
return (keys: Keys) => {
- let key = JSON.stringify(keys)
+ let key = JSON.stringify(keys, Object.keys(keys).sort())
if (!cache.get(key)) {
let value = compute(keys)
cache.set(key, value)