From 46a575f48a05457b782fb21f7827d338c9b59320 Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 24 Aug 2024 00:02:02 +1200 Subject: [PATCH] fix nested Config.array (#3499) --- .changeset/tricky-mails-confess.md | 5 +++++ packages/effect/src/internal/configProvider.ts | 2 +- packages/effect/test/Config.test.ts | 12 ++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .changeset/tricky-mails-confess.md diff --git a/.changeset/tricky-mails-confess.md b/.changeset/tricky-mails-confess.md new file mode 100644 index 0000000000..3b05e9e6ef --- /dev/null +++ b/.changeset/tricky-mails-confess.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +fix nested Config.array, by ensuring path patches aren't applied twice in sequences diff --git a/packages/effect/src/internal/configProvider.ts b/packages/effect/src/internal/configProvider.ts index fe8a0f9227..772a922fd1 100644 --- a/packages/effect/src/internal/configProvider.ts +++ b/packages/effect/src/internal/configProvider.ts @@ -329,7 +329,7 @@ const fromFlatLoop = ( core.flatMap((indices) => { if (indices.length === 0) { return core.suspend(() => - core.map(fromFlatLoop(flat, patchedPrefix, op.config, true), Arr.of) + core.map(fromFlatLoop(flat, prefix, op.config, true), Arr.of) ) as unknown as Effect.Effect, ConfigError.ConfigError> } return pipe( diff --git a/packages/effect/test/Config.test.ts b/packages/effect/test/Config.test.ts index 5b012a6440..00ec1ecc4c 100644 --- a/packages/effect/test/Config.test.ts +++ b/packages/effect/test/Config.test.ts @@ -557,4 +557,16 @@ describe("Config", () => { )) assert.strictEqual(result, "value") }) + + it("array nested", () => { + const result = Config.array(Config.number(), "ARRAY").pipe( + Effect.withConfigProvider( + ConfigProvider.fromMap(new Map([["NESTED.ARRAY", "1,2,3"]])).pipe( + ConfigProvider.nested("NESTED") + ) + ), + Effect.runSync + ) + assert.deepStrictEqual(result, [1, 2, 3]) + }) })