( value: any, path: Array<string>, replacement: ValClass, )
| 1929 | } |
| 1930 | |
| 1931 | function replaceIncludesInSelectValue( |
| 1932 | value: any, |
| 1933 | path: Array<string>, |
| 1934 | replacement: ValClass, |
| 1935 | ): { value: any; replaced: boolean } { |
| 1936 | if (path.length === 0) { |
| 1937 | return replaceIncludesValue(value, replacement) |
| 1938 | } |
| 1939 | |
| 1940 | if (value instanceof ConditionalSelect) { |
| 1941 | return replaceIncludesInConditionalSelect(value, path, replacement) |
| 1942 | } |
| 1943 | |
| 1944 | if (!isNestedSelectObject(value)) { |
| 1945 | return { value, replaced: false } |
| 1946 | } |
| 1947 | |
| 1948 | if (path.length === 1) { |
| 1949 | const field = path[0]! |
| 1950 | const result = replaceIncludesValue(value[field], replacement) |
| 1951 | if (!result.replaced) { |
| 1952 | return { value, replaced: false } |
| 1953 | } |
| 1954 | return { |
| 1955 | value: { |
| 1956 | ...value, |
| 1957 | [field]: result.value, |
| 1958 | }, |
| 1959 | replaced: true, |
| 1960 | } |
| 1961 | } |
| 1962 | |
| 1963 | const [head, ...rest] = path |
| 1964 | const result = replaceIncludesInSelectValue(value[head!], rest, replacement) |
| 1965 | if (!result.replaced) { |
| 1966 | return { value, replaced: false } |
| 1967 | } |
| 1968 | return { |
| 1969 | value: { |
| 1970 | ...value, |
| 1971 | [head!]: result.value, |
| 1972 | }, |
| 1973 | replaced: true, |
| 1974 | } |
| 1975 | } |
| 1976 | |
| 1977 | function replaceIncludesValue( |
| 1978 | value: any, |
no test coverage detected