(str: string)
| 87 | * @returns Object with success boolean and either parsed data or original string |
| 88 | */ |
| 89 | export function tryParseJson(str: string): { |
| 90 | success: boolean; |
| 91 | data: JsonValue; |
| 92 | } { |
| 93 | const trimmed = str?.trim(); |
| 94 | if ( |
| 95 | trimmed && |
| 96 | !(trimmed.startsWith("{") && trimmed.endsWith("}")) && |
| 97 | !(trimmed.startsWith("[") && trimmed.endsWith("]")) |
| 98 | ) { |
| 99 | return { success: false, data: str }; |
| 100 | } |
| 101 | try { |
| 102 | return { success: true, data: JSON.parse(str) }; |
| 103 | } catch { |
| 104 | return { success: false, data: str }; |
| 105 | } |
| 106 | } |
| 107 | |
| 108 | /** |
| 109 | * Updates a value at a specific path in a nested JSON structure |
no outgoing calls
no test coverage detected
searching dependent graphs…