| 1 | "effect/ConfigProvider#ConfigProvider": |
| 2 | replacement: "ConfigProvider.ConfigProvider" |
| 3 | note: "The model remains but now exposes `load(path)`, returning `Effect<Node | undefined, SourceError>`, and `mapInput(f)` for provider-owned path transformation. `undefined` means the path is missing; a `Node` means it exists." |
| 4 | "effect/ConfigProvider#ConfigProvider.Flat": |
| 5 | replacement: "ConfigProvider.ConfigProvider" |
| 6 | note: "Flat providers were removed; implement the unified path-based provider with ConfigProvider.make." |
| 7 | "effect/ConfigProvider#ConfigProvider.FromEnvConfig": |
| 8 | replacement: "Parameters<typeof ConfigProvider.fromEnv>[0]" |
| 9 | note: "Options are inline in v4 and contain env plus preserveEmptyStrings; custom path delimiters moved to provider path transforms, while separated sequences and records use Config.Array and Config.Record." |
| 10 | "effect/ConfigProvider#ConfigProvider.FromMapConfig": |
| 11 | replacement: "none" |
| 12 | note: "fromMap and its delimiter options were removed; expand delimited keys into a nested value and use ConfigProvider.fromUnknown." |
| 13 | "effect/ConfigProvider#ConfigProvider.KeyComponent": |
| 14 | replacement: "ConfigProvider.Path[number]" |
| 15 | note: "Tagged key components became plain string or number path segments." |
| 16 | "effect/ConfigProvider#ConfigProvider.KeyIndex": |
| 17 | replacement: "number" |
| 18 | note: "Tagged KeyIndex values became numeric ConfigProvider.Path segments." |
| 19 | "effect/ConfigProvider#ConfigProvider.KeyName": |
| 20 | replacement: "string" |
| 21 | note: "Tagged KeyName values became string ConfigProvider.Path segments." |
| 22 | "effect/ConfigProvider#ConfigProvider.Proto": |
| 23 | replacement: "ConfigProvider.ConfigProvider" |
| 24 | note: "The public marker prototype was removed; use the provider interface itself." |
| 25 | "effect/ConfigProvider#ConfigProviderTypeId": |
| 26 | replacement: "ConfigProvider.ConfigProvider" |
| 27 | note: "The runtime marker is private in v4; providers are created by public constructors and consumed structurally." |
| 28 | "effect/ConfigProvider#FlatConfigProviderTypeId": |
| 29 | replacement: "none" |
| 30 | note: "The flat-provider abstraction and marker were removed." |
| 31 | "effect/ConfigProvider#fromEnv": |
| 32 | replacement: "ConfigProvider.fromEnv" |
| 33 | note: "The constructor remains; pass env and preserveEmptyStrings options. Paths use underscore semantics, while sequence separators belong on Config schemas." |
| 34 | "effect/ConfigProvider#fromFlat": |
| 35 | replacement: "ConfigProvider.make" |
| 36 | note: "Flat providers were unified with ConfigProvider; return a `Value`, `Record`, or `Array` node for a found path, or `undefined` when missing." |
| 37 | "effect/ConfigProvider#fromJson": |
| 38 | replacement: "ConfigProvider.fromUnknown" |
| 39 | note: "Renamed to reflect support for any in-memory JavaScript value." |
| 40 | "effect/ConfigProvider#fromMap": |
| 41 | replacement: "ConfigProvider.fromUnknown" |
| 42 | note: "Expand the map's delimited keys into a nested object first; v4 removed fromMap and its pathDelim/seqDelim options." |
| 43 | "effect/ConfigProvider#kebabCase": |
| 44 | replacement: "ConfigProvider.mapInput((path) => path.map((part) => typeof part === \"string\" ? String.kebabCase(part) : part))" |
| 45 | note: "Named recasing helpers were removed except constantCase; transform string path segments explicitly." |
| 46 | "effect/ConfigProvider#lowerCase": |
| 47 | replacement: "ConfigProvider.mapInput((path) => path.map((part) => typeof part === \"string\" ? part.toLowerCase() : part))" |
| 48 | note: "Transform string path segments explicitly with mapInput." |
| 49 | "effect/ConfigProvider#make": |
| 50 | replacement: "ConfigProvider.make" |
| 51 | note: "The constructor now takes a path lookup returning `Effect<Node | undefined, SourceError>`, rather than a full Config loader and flattened provider. Return `undefined` for a missing path and a `Node` for a found path." |
| 52 | "effect/ConfigProvider#makeFlat": |
| 53 | replacement: "ConfigProvider.make" |
| 54 | note: "The flat-provider constructor was removed; return a `Value`, `Record`, or `Array` node for a found path, or `undefined` when missing." |
| 55 | "effect/ConfigProvider#mapInputPath": |
| 56 | replacement: "ConfigProvider.mapInput" |
| 57 | note: "Renamed and generalized: the callback receives and returns the complete Path, including numeric array indexes." |
| 58 | "effect/ConfigProvider#snakeCase": |
| 59 | replacement: "ConfigProvider.mapInput((path) => path.map((part) => typeof part === \"string\" ? String.snakeCase(part) : part))" |
| 60 | note: "Named recasing helpers were removed except constantCase; transform string path segments explicitly." |
| 61 | "effect/ConfigProvider#unnested": |
| 62 | replacement: "ConfigProvider.mapInput((path) => path[0] === name ? path.slice(1) : path)" |
| 63 | note: "The named helper was removed; strip the matching leading segment explicitly. Add custom handling if the v3 mismatch error was significant." |
| 64 | "effect/ConfigProvider#upperCase": |
| 65 | replacement: "ConfigProvider.mapInput((path) => path.map((part) => typeof part === \"string\" ? part.toUpperCase() : part))" |
| 66 | note: "Transform string path segments explicitly with mapInput." |
| 67 | "effect/ConfigProvider#within": |
| 68 | replacement: "ConfigProvider.orElse + ConfigProvider.mapInput" |
| 69 | note: "The scoped transform helper was removed; build a provider that transforms paths below the prefix and falls back to the original provider elsewhere." |