From 02cec235498450d101585a668c6ad2f2d2e70960 Mon Sep 17 00:00:00 2001 From: Vojta Holik Date: Tue, 21 Jan 2025 12:33:44 +0100 Subject: [PATCH 1/3] fix(aih): redis adapter initialization error with turbopack --- apps/ai-hero/src/flags/flags-adapter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/ai-hero/src/flags/flags-adapter.ts b/apps/ai-hero/src/flags/flags-adapter.ts index 933174e8a..a9ce77100 100644 --- a/apps/ai-hero/src/flags/flags-adapter.ts +++ b/apps/ai-hero/src/flags/flags-adapter.ts @@ -10,8 +10,6 @@ export const getFlagKey = (key: string): string => { return `${FLAG_PREFIX}${env}:${key}` } -let defaultRedisAdapter: ReturnType - function createRedisAdapter() { return function redisAdapter(): Adapter { return { @@ -35,6 +33,8 @@ function createRedisAdapter() { * A default Redis adapter that can be used directly */ export function redisAdapter(): Adapter { + let defaultRedisAdapter: ReturnType + if (!defaultRedisAdapter) { defaultRedisAdapter = createRedisAdapter() } From 21d5d0897900f87ff5973079c6ef22fe362722d9 Mon Sep 17 00:00:00 2001 From: Vojta Holik Date: Tue, 21 Jan 2025 12:41:56 +0100 Subject: [PATCH 2/3] refactor(aih): simplify redis adapter initialization in flags-adapter.ts --- apps/ai-hero/src/flags/flags-adapter.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/apps/ai-hero/src/flags/flags-adapter.ts b/apps/ai-hero/src/flags/flags-adapter.ts index a9ce77100..a2285337b 100644 --- a/apps/ai-hero/src/flags/flags-adapter.ts +++ b/apps/ai-hero/src/flags/flags-adapter.ts @@ -33,11 +33,5 @@ function createRedisAdapter() { * A default Redis adapter that can be used directly */ export function redisAdapter(): Adapter { - let defaultRedisAdapter: ReturnType - - if (!defaultRedisAdapter) { - defaultRedisAdapter = createRedisAdapter() - } - - return defaultRedisAdapter() + return createRedisAdapter() } From 26550a980f6d37facf35fe2263a91d83bd377342 Mon Sep 17 00:00:00 2001 From: Vojta Holik Date: Tue, 21 Jan 2025 12:50:37 +0100 Subject: [PATCH 3/3] refactor(aih): streamline redis adapter implementation in flags-adapter.ts --- apps/ai-hero/src/flags/flags-adapter.ts | 28 ++++++++++++------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/apps/ai-hero/src/flags/flags-adapter.ts b/apps/ai-hero/src/flags/flags-adapter.ts index a2285337b..d6497900c 100644 --- a/apps/ai-hero/src/flags/flags-adapter.ts +++ b/apps/ai-hero/src/flags/flags-adapter.ts @@ -10,22 +10,20 @@ export const getFlagKey = (key: string): string => { return `${FLAG_PREFIX}${env}:${key}` } -function createRedisAdapter() { - return function redisAdapter(): Adapter { - return { - origin(key: string) { - return `${env.COURSEBUILDER_URL}/admin/flags/${key}` - }, - async decide({ key }: { key: string }): Promise { - // Strip environment prefix if present since getFlagKey will add it - const [, baseKey = key] = key.split(':') - const redisKey = getFlagKey(baseKey) - const value = await redis.get(redisKey) +function createRedisAdapter(): Adapter { + return { + origin(key: string) { + return `${env.COURSEBUILDER_URL}/admin/flags/${key}` + }, + async decide({ key }: { key: string }): Promise { + // Strip environment prefix if present since getFlagKey will add it + const [, baseKey = key] = key.split(':') + const redisKey = getFlagKey(baseKey) + const value = await redis.get(redisKey) - // Handle both string and boolean values - return value === true || value === 'true' || value === '1' - }, - } + // Handle both string and boolean values + return value === true || value === 'true' || value === '1' + }, } }