@memberjunction/global 2.69.1 → 2.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/util.d.ts +80 -8
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +157 -12
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +89 -3
- package/dist/__tests__/ClassUtils.test.d.ts +0 -2
- package/dist/__tests__/ClassUtils.test.d.ts.map +0 -1
- package/dist/__tests__/ClassUtils.test.js +0 -173
- package/dist/__tests__/ClassUtils.test.js.map +0 -1
package/dist/util.d.ts
CHANGED
|
@@ -11,10 +11,66 @@ export declare function GetGlobalObjectStore(): typeof globalThis;
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function CopyScalarsAndArrays<T extends object>(input: T): Partial<T>;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* Combines CleanJSON and SafeJSONParse to clean, extract, and parse JSON in one operation.
|
|
15
|
+
* This is a convenience function that first cleans the input string using CleanJSON to handle
|
|
16
|
+
* various formats (double-escaped, markdown blocks, etc.), then safely parses the result.
|
|
17
|
+
*
|
|
18
|
+
* @param inputString - The string to clean and parse, which may contain JSON in various formats
|
|
19
|
+
* @param logErrors - If true, parsing errors will be logged to console (default: false)
|
|
20
|
+
* @returns The parsed object of type T, or null if cleaning/parsing fails
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* // Parse double-escaped JSON
|
|
24
|
+
* const result = CleanAndParseJSON<{name: string}>('{\\"name\\": \\"test\\"}', true);
|
|
25
|
+
* // Returns: {name: "test"}
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Parse JSON from markdown
|
|
29
|
+
* const data = CleanAndParseJSON<{id: number}>('```json\n{"id": 123}\n```', false);
|
|
30
|
+
* // Returns: {id: 123}
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // Parse complex AI response with type safety
|
|
34
|
+
* interface AIResponse {
|
|
35
|
+
* status: string;
|
|
36
|
+
* data: any;
|
|
37
|
+
* }
|
|
38
|
+
* const response = CleanAndParseJSON<AIResponse>(aiOutput, true);
|
|
39
|
+
* // Returns typed object or null
|
|
40
|
+
*/
|
|
41
|
+
export declare function CleanAndParseJSON<T = any>(inputString: string | null, logErrors?: boolean): T;
|
|
42
|
+
/**
|
|
43
|
+
* Cleans and extracts valid JSON from various input formats including double-escaped strings,
|
|
44
|
+
* strings with embedded JSON, and markdown code blocks.
|
|
45
|
+
*
|
|
46
|
+
* This function handles multiple scenarios in the following priority order:
|
|
47
|
+
* 1. **Valid JSON**: If the input is already valid JSON, it returns it formatted
|
|
48
|
+
* 2. **Double-escaped JSON**: Handles strings with escaped quotes (\\") and newlines (\\n)
|
|
49
|
+
* 3. **Markdown blocks**: Extracts JSON from ```json code blocks (only as last resort)
|
|
50
|
+
* 4. **Mixed content**: Extracts JSON objects/arrays from strings with surrounding text
|
|
51
|
+
*
|
|
52
|
+
* @param inputString - The string to process, which may contain JSON in various formats
|
|
53
|
+
* @returns A formatted JSON string if valid JSON is found, otherwise null
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Simple JSON
|
|
57
|
+
* CleanJSON('{"name": "test"}')
|
|
58
|
+
* // Returns: '{\n "name": "test"\n}'
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // Double-escaped JSON
|
|
62
|
+
* CleanJSON('{\\"name\\": \\"test\\", \\"value\\": 123}')
|
|
63
|
+
* // Returns: '{\n "name": "test",\n "value": 123\n}'
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* // JSON with embedded markdown (preserves the markdown in string values)
|
|
67
|
+
* CleanJSON('{"text": "```json\\n{\\"inner\\": true}\\n```"}')
|
|
68
|
+
* // Returns: '{\n "text": "```json\\n{\\"inner\\": true}\\n```"\n}'
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* // Markdown block extraction (only when not valid JSON)
|
|
72
|
+
* CleanJSON('Some text ```json\n{"extracted": true}\n``` more text')
|
|
73
|
+
* // Returns: '{\n "extracted": true\n}'
|
|
18
74
|
*/
|
|
19
75
|
export declare function CleanJSON(inputString: string | null): string | null;
|
|
20
76
|
/**
|
|
@@ -24,11 +80,27 @@ export declare function CleanJSON(inputString: string | null): string | null;
|
|
|
24
80
|
*/
|
|
25
81
|
export declare function CleanJavaScript(javaScriptCode: string): string;
|
|
26
82
|
/**
|
|
27
|
-
* Simple wrapper method to JSON.parse that catches any errors and logs them to the console.
|
|
28
|
-
*
|
|
29
|
-
*
|
|
83
|
+
* Simple wrapper method to JSON.parse that catches any errors and optionally logs them to the console.
|
|
84
|
+
* This method is useful when you want to parse JSON but don't want to crash the application if the JSON is invalid.
|
|
85
|
+
*
|
|
86
|
+
* @param jsonString - The JSON string to parse
|
|
87
|
+
* @param logErrors - If true, parsing errors will be logged to console (default: false)
|
|
88
|
+
* @returns The parsed object of type T (default: any), or null if parsing fails or input is empty
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* // Basic usage without type
|
|
92
|
+
* const data = SafeJSONParse('{"name": "test"}');
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* // With type parameter
|
|
96
|
+
* interface User { name: string; age: number; }
|
|
97
|
+
* const user = SafeJSONParse<User>('{"name": "John", "age": 30}', true);
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // Invalid JSON returns null
|
|
101
|
+
* const result = SafeJSONParse('invalid json', true); // logs error, returns null
|
|
30
102
|
*/
|
|
31
|
-
export declare function SafeJSONParse<T>(jsonString: string, logErrors?: boolean): T;
|
|
103
|
+
export declare function SafeJSONParse<T = any>(jsonString: string, logErrors?: boolean): T;
|
|
32
104
|
/**
|
|
33
105
|
* This function takes in a string of text(assuming markdown, or just newline formatted), and converts it to an HTML list. The list type can be either ordered or unordered.
|
|
34
106
|
* @param htmlListType
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,oBAAoB,sBA4BnC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiB3E;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/dist/util.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParseJSONRecursive = exports.compareStringsByLine = exports.uuidv4 = exports.InvokeManualResize = exports.replaceAllSpaces = exports.stripTrailingChars = exports.adjustCasing = exports.generatePluralName = exports.getIrregularPlural = exports.stripWhitespace = exports.convertCamelCaseToHaveSpaces = exports.ConvertMarkdownStringToHtmlList = exports.SafeJSONParse = exports.CleanJavaScript = exports.CleanJSON = exports.CopyScalarsAndArrays = exports.GetGlobalObjectStore = void 0;
|
|
3
|
+
exports.ParseJSONRecursive = exports.compareStringsByLine = exports.uuidv4 = exports.InvokeManualResize = exports.replaceAllSpaces = exports.stripTrailingChars = exports.adjustCasing = exports.generatePluralName = exports.getIrregularPlural = exports.stripWhitespace = exports.convertCamelCaseToHaveSpaces = exports.ConvertMarkdownStringToHtmlList = exports.SafeJSONParse = exports.CleanJavaScript = exports.CleanJSON = exports.CleanAndParseJSON = exports.CopyScalarsAndArrays = exports.GetGlobalObjectStore = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
5
|
const interface_1 = require("./interface");
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
@@ -66,16 +66,117 @@ function CopyScalarsAndArrays(input) {
|
|
|
66
66
|
}
|
|
67
67
|
exports.CopyScalarsAndArrays = CopyScalarsAndArrays;
|
|
68
68
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
69
|
+
* Combines CleanJSON and SafeJSONParse to clean, extract, and parse JSON in one operation.
|
|
70
|
+
* This is a convenience function that first cleans the input string using CleanJSON to handle
|
|
71
|
+
* various formats (double-escaped, markdown blocks, etc.), then safely parses the result.
|
|
72
|
+
*
|
|
73
|
+
* @param inputString - The string to clean and parse, which may contain JSON in various formats
|
|
74
|
+
* @param logErrors - If true, parsing errors will be logged to console (default: false)
|
|
75
|
+
* @returns The parsed object of type T, or null if cleaning/parsing fails
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* // Parse double-escaped JSON
|
|
79
|
+
* const result = CleanAndParseJSON<{name: string}>('{\\"name\\": \\"test\\"}', true);
|
|
80
|
+
* // Returns: {name: "test"}
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* // Parse JSON from markdown
|
|
84
|
+
* const data = CleanAndParseJSON<{id: number}>('```json\n{"id": 123}\n```', false);
|
|
85
|
+
* // Returns: {id: 123}
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* // Parse complex AI response with type safety
|
|
89
|
+
* interface AIResponse {
|
|
90
|
+
* status: string;
|
|
91
|
+
* data: any;
|
|
92
|
+
* }
|
|
93
|
+
* const response = CleanAndParseJSON<AIResponse>(aiOutput, true);
|
|
94
|
+
* // Returns typed object or null
|
|
95
|
+
*/
|
|
96
|
+
function CleanAndParseJSON(inputString, logErrors = false) {
|
|
97
|
+
if (!inputString) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
return SafeJSONParse(CleanJSON(inputString), logErrors);
|
|
101
|
+
}
|
|
102
|
+
exports.CleanAndParseJSON = CleanAndParseJSON;
|
|
103
|
+
/**
|
|
104
|
+
* Cleans and extracts valid JSON from various input formats including double-escaped strings,
|
|
105
|
+
* strings with embedded JSON, and markdown code blocks.
|
|
106
|
+
*
|
|
107
|
+
* This function handles multiple scenarios in the following priority order:
|
|
108
|
+
* 1. **Valid JSON**: If the input is already valid JSON, it returns it formatted
|
|
109
|
+
* 2. **Double-escaped JSON**: Handles strings with escaped quotes (\\") and newlines (\\n)
|
|
110
|
+
* 3. **Markdown blocks**: Extracts JSON from ```json code blocks (only as last resort)
|
|
111
|
+
* 4. **Mixed content**: Extracts JSON objects/arrays from strings with surrounding text
|
|
112
|
+
*
|
|
113
|
+
* @param inputString - The string to process, which may contain JSON in various formats
|
|
114
|
+
* @returns A formatted JSON string if valid JSON is found, otherwise null
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* // Simple JSON
|
|
118
|
+
* CleanJSON('{"name": "test"}')
|
|
119
|
+
* // Returns: '{\n "name": "test"\n}'
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* // Double-escaped JSON
|
|
123
|
+
* CleanJSON('{\\"name\\": \\"test\\", \\"value\\": 123}')
|
|
124
|
+
* // Returns: '{\n "name": "test",\n "value": 123\n}'
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* // JSON with embedded markdown (preserves the markdown in string values)
|
|
128
|
+
* CleanJSON('{"text": "```json\\n{\\"inner\\": true}\\n```"}')
|
|
129
|
+
* // Returns: '{\n "text": "```json\\n{\\"inner\\": true}\\n```"\n}'
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* // Markdown block extraction (only when not valid JSON)
|
|
133
|
+
* CleanJSON('Some text ```json\n{"extracted": true}\n``` more text')
|
|
134
|
+
* // Returns: '{\n "extracted": true\n}'
|
|
73
135
|
*/
|
|
74
136
|
function CleanJSON(inputString) {
|
|
75
137
|
if (!inputString)
|
|
76
138
|
return null;
|
|
77
|
-
|
|
78
|
-
|
|
139
|
+
let processedString = inputString.trim();
|
|
140
|
+
// First, try to parse the string as-is
|
|
141
|
+
// This preserves any embedded JSON or markdown blocks within string values
|
|
142
|
+
try {
|
|
143
|
+
const parsed = JSON.parse(processedString);
|
|
144
|
+
// If successful, return formatted JSON
|
|
145
|
+
return JSON.stringify(parsed, null, 2);
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
// If direct parsing fails, continue with cleanup logic
|
|
149
|
+
}
|
|
150
|
+
// Handle double-escaped characters
|
|
151
|
+
// This converts \\n to actual \n, \\" to actual ", etc.
|
|
152
|
+
if (processedString.includes('\\\\') || processedString.includes('\\"')) {
|
|
153
|
+
try {
|
|
154
|
+
// Try to parse it as a JSON string to unescape it
|
|
155
|
+
// This handles cases where the entire string is a JSON-encoded string
|
|
156
|
+
processedString = JSON.parse('"' + processedString + '"');
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
// If that doesn't work, manually replace common double-escaped sequences
|
|
160
|
+
processedString = processedString
|
|
161
|
+
.replace(/\\\\n/g, '\n') // \\n -> \n
|
|
162
|
+
.replace(/\\\\t/g, '\t') // \\t -> \t
|
|
163
|
+
.replace(/\\\\r/g, '\r') // \\r -> \r
|
|
164
|
+
.replace(/\\\\"/g, '"') // \\" -> "
|
|
165
|
+
.replace(/\\\\\\/g, '\\'); // \\\\ -> \\
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Try to parse the processed string after unescaping
|
|
169
|
+
try {
|
|
170
|
+
const parsed = JSON.parse(processedString);
|
|
171
|
+
// If successful, return formatted JSON
|
|
172
|
+
return JSON.stringify(parsed, null, 2);
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
// If direct parsing still fails, continue with extraction logic
|
|
176
|
+
}
|
|
177
|
+
// Now proceed with the extraction logic only as a last resort
|
|
178
|
+
// replace all \n and \t with nothing for easier pattern matching
|
|
179
|
+
const jsonString = processedString.replace(/\n/g, "").replace(/\t/g, "");
|
|
79
180
|
// Regular expression to match JavaScript code blocks within Markdown fences
|
|
80
181
|
// This regex looks for ``` optionally followed by js or javascript (case-insensitive), then captures until the closing ```
|
|
81
182
|
const markdownRegex = /```(?:json|JSON)?\s*([\s\S]*?)```/gi;
|
|
@@ -83,7 +184,32 @@ function CleanJSON(inputString) {
|
|
|
83
184
|
const matches = Array.from(jsonString.matchAll(markdownRegex));
|
|
84
185
|
if (matches.length > 0) {
|
|
85
186
|
// If there are matches, concatenate all captured groups (in case there are multiple code blocks)
|
|
86
|
-
|
|
187
|
+
const extracted = matches.map(match => match[1].trim()).join('\n');
|
|
188
|
+
try {
|
|
189
|
+
// try to parse the extracted content as JSON
|
|
190
|
+
const parsed = JSON.parse(extracted);
|
|
191
|
+
return JSON.stringify(parsed, null, 2);
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
// if we get here, it means the extracted content is not valid JSON so try to clean it
|
|
195
|
+
// and return it as a string
|
|
196
|
+
try {
|
|
197
|
+
// Clean up any remaining escape sequences in the extracted content
|
|
198
|
+
const cleaned = extracted
|
|
199
|
+
.replace(/\\n/g, '\n')
|
|
200
|
+
.replace(/\\t/g, '\t')
|
|
201
|
+
.replace(/\\r/g, '\r')
|
|
202
|
+
.replace(/\\"/g, '"')
|
|
203
|
+
.replace(/\\\\/g, '\\');
|
|
204
|
+
// Try to parse the cleaned JSON
|
|
205
|
+
const parsed = JSON.parse(cleaned);
|
|
206
|
+
return JSON.stringify(parsed, null, 2);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
// If parsing fails, return the original extracted string as we couldn't parse either
|
|
210
|
+
return extracted;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
87
213
|
}
|
|
88
214
|
else {
|
|
89
215
|
// If there are no Markdown code fences, we could have a string that contains JSON, or is JUST JSON
|
|
@@ -103,7 +229,7 @@ function CleanJSON(inputString) {
|
|
|
103
229
|
}
|
|
104
230
|
if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {
|
|
105
231
|
console.warn("No JSON found in the input.");
|
|
106
|
-
return jsonString
|
|
232
|
+
return processedString; // Return the processed string instead of jsonString
|
|
107
233
|
}
|
|
108
234
|
const potentialJSON = jsonString.substring(startIndex, endIndex + 1);
|
|
109
235
|
try {
|
|
@@ -142,11 +268,30 @@ function CleanJavaScript(javaScriptCode) {
|
|
|
142
268
|
}
|
|
143
269
|
exports.CleanJavaScript = CleanJavaScript;
|
|
144
270
|
/**
|
|
145
|
-
* Simple wrapper method to JSON.parse that catches any errors and logs them to the console.
|
|
146
|
-
*
|
|
147
|
-
*
|
|
271
|
+
* Simple wrapper method to JSON.parse that catches any errors and optionally logs them to the console.
|
|
272
|
+
* This method is useful when you want to parse JSON but don't want to crash the application if the JSON is invalid.
|
|
273
|
+
*
|
|
274
|
+
* @param jsonString - The JSON string to parse
|
|
275
|
+
* @param logErrors - If true, parsing errors will be logged to console (default: false)
|
|
276
|
+
* @returns The parsed object of type T (default: any), or null if parsing fails or input is empty
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* // Basic usage without type
|
|
280
|
+
* const data = SafeJSONParse('{"name": "test"}');
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* // With type parameter
|
|
284
|
+
* interface User { name: string; age: number; }
|
|
285
|
+
* const user = SafeJSONParse<User>('{"name": "John", "age": 30}', true);
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* // Invalid JSON returns null
|
|
289
|
+
* const result = SafeJSONParse('invalid json', true); // logs error, returns null
|
|
148
290
|
*/
|
|
149
291
|
function SafeJSONParse(jsonString, logErrors = false) {
|
|
292
|
+
if (!jsonString) {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
150
295
|
try {
|
|
151
296
|
return JSON.parse(jsonString);
|
|
152
297
|
}
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -519,9 +519,6 @@ replaceAllSpaces('Hello World'); // "HelloWorld"
|
|
|
519
519
|
```typescript
|
|
520
520
|
import { CleanJSON, SafeJSONParse, ParseJSONRecursive } from '@memberjunction/global';
|
|
521
521
|
|
|
522
|
-
// Clean and extract JSON from markdown or mixed content
|
|
523
|
-
const cleaned = CleanJSON('```json\n{"key": "value"}\n```');
|
|
524
|
-
|
|
525
522
|
// Safe JSON parsing with error handling
|
|
526
523
|
const parsed = SafeJSONParse<MyType>('{"key": "value"}', true);
|
|
527
524
|
|
|
@@ -554,6 +551,95 @@ const deeplyNested = ParseJSONRecursive(complexData, {
|
|
|
554
551
|
});
|
|
555
552
|
```
|
|
556
553
|
|
|
554
|
+
#### CleanJSON Function
|
|
555
|
+
|
|
556
|
+
The `CleanJSON` function intelligently extracts and cleans JSON from various input formats, including double-escaped strings, strings with embedded JSON, and markdown code blocks. It's particularly useful when dealing with AI-generated responses or data from external systems that may have inconsistent JSON formatting.
|
|
557
|
+
|
|
558
|
+
**Processing Order:**
|
|
559
|
+
1. First attempts to parse the input as valid JSON (preserving embedded content)
|
|
560
|
+
2. If that fails, handles double-escaped characters (`\\n`, `\\"`, etc.)
|
|
561
|
+
3. Only extracts from markdown blocks or inline JSON as a last resort
|
|
562
|
+
|
|
563
|
+
```typescript
|
|
564
|
+
import { CleanJSON } from '@memberjunction/global';
|
|
565
|
+
|
|
566
|
+
// Example 1: Already valid JSON - returns formatted
|
|
567
|
+
const valid = CleanJSON('{"name": "test", "value": 123}');
|
|
568
|
+
// Returns:
|
|
569
|
+
// {
|
|
570
|
+
// "name": "test",
|
|
571
|
+
// "value": 123
|
|
572
|
+
// }
|
|
573
|
+
|
|
574
|
+
// Example 2: Double-escaped JSON string
|
|
575
|
+
const escaped = CleanJSON('{\\"name\\": \\"test\\", \\"value\\": 123}');
|
|
576
|
+
// Returns:
|
|
577
|
+
// {
|
|
578
|
+
// "name": "test",
|
|
579
|
+
// "value": 123
|
|
580
|
+
// }
|
|
581
|
+
|
|
582
|
+
// Example 3: JSON with escaped newlines (common from AI responses)
|
|
583
|
+
const withNewlines = CleanJSON('\\n{\\"mode\\": \\"test\\",\\n\\"data\\": [1, 2, 3]}\\n');
|
|
584
|
+
// Returns:
|
|
585
|
+
// {
|
|
586
|
+
// "mode": "test",
|
|
587
|
+
// "data": [1, 2, 3]
|
|
588
|
+
// }
|
|
589
|
+
|
|
590
|
+
// Example 4: Complex JSON with embedded markdown (preserves the markdown)
|
|
591
|
+
const complexJson = CleanJSON(`{
|
|
592
|
+
"taskComplete": false,
|
|
593
|
+
"message": "Processing complete",
|
|
594
|
+
"nextAction": {
|
|
595
|
+
"type": "design",
|
|
596
|
+
"payload": {
|
|
597
|
+
"outputFormat": "\`\`\`json\\n{\\"componentName\\": \\"Example\\"}\\n\`\`\`"
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}`);
|
|
601
|
+
// Returns the JSON with the markdown code block preserved in the outputFormat field
|
|
602
|
+
|
|
603
|
+
// Example 5: Extract JSON from markdown (only when input isn't valid JSON)
|
|
604
|
+
const markdown = CleanJSON('Some text ```json\n{"extracted": true}\n``` more text');
|
|
605
|
+
// Returns:
|
|
606
|
+
// {
|
|
607
|
+
// "extracted": true
|
|
608
|
+
// }
|
|
609
|
+
|
|
610
|
+
// Example 6: Extract inline JSON from mixed text
|
|
611
|
+
const mixed = CleanJSON('Response: {"status": "success", "code": 200} - Done');
|
|
612
|
+
// Returns:
|
|
613
|
+
// {
|
|
614
|
+
// "status": "success",
|
|
615
|
+
// "code": 200
|
|
616
|
+
// }
|
|
617
|
+
|
|
618
|
+
// Example 7: Complex real-world example with nested escaped JSON
|
|
619
|
+
const aiResponse = CleanJSON(`{
|
|
620
|
+
"analysis": "Complete",
|
|
621
|
+
"data": "{\\"users\\": [{\\"name\\": \\"John\\", \\"active\\": true}]}",
|
|
622
|
+
"metadata": {
|
|
623
|
+
"template": "\`\`\`json\\n{\\"format\\": \\"standard\\"}\\n\`\`\`"
|
|
624
|
+
}
|
|
625
|
+
}`);
|
|
626
|
+
// Returns properly formatted JSON with all nested structures intact
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
**Key Features:**
|
|
630
|
+
- **Preserves embedded content**: When the input is valid JSON, markdown blocks and escaped strings within values are preserved
|
|
631
|
+
- **Smart unescaping**: Handles `\\n` → `\n`, `\\"` → `"`, `\\\\` → `\` and other common escape sequences
|
|
632
|
+
- **Markdown extraction**: Extracts JSON from ` ```json ` code blocks when needed
|
|
633
|
+
- **Inline extraction**: Finds JSON objects/arrays within surrounding text
|
|
634
|
+
- **Null safety**: Returns `null` for invalid inputs instead of throwing errors
|
|
635
|
+
|
|
636
|
+
**Common Use Cases:**
|
|
637
|
+
- Processing AI model responses that may contain escaped JSON
|
|
638
|
+
- Cleaning data from external APIs with inconsistent formatting
|
|
639
|
+
- Extracting JSON from log files or debug output
|
|
640
|
+
- Handling JSON strings stored in databases that may be double-escaped
|
|
641
|
+
- Processing user input that may contain JSON in various formats
|
|
642
|
+
|
|
557
643
|
### HTML Conversion
|
|
558
644
|
|
|
559
645
|
```typescript
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClassUtils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ClassUtils.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const ClassUtils_1 = require("../ClassUtils");
|
|
4
|
-
// Test class hierarchy
|
|
5
|
-
class Animal {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.name = '';
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
class Mammal extends Animal {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments);
|
|
13
|
-
this.furColor = '';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
class Dog extends Mammal {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(...arguments);
|
|
19
|
-
this.breed = '';
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
class GoldenRetriever extends Dog {
|
|
23
|
-
constructor() {
|
|
24
|
-
super(...arguments);
|
|
25
|
-
this.temperament = 'friendly';
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// Test cases
|
|
29
|
-
describe('ClassUtils', () => {
|
|
30
|
-
describe('GetSuperclass', () => {
|
|
31
|
-
it('should return immediate superclass', () => {
|
|
32
|
-
expect((0, ClassUtils_1.GetSuperclass)(GoldenRetriever)).toBe(Dog);
|
|
33
|
-
expect((0, ClassUtils_1.GetSuperclass)(Dog)).toBe(Mammal);
|
|
34
|
-
expect((0, ClassUtils_1.GetSuperclass)(Mammal)).toBe(Animal);
|
|
35
|
-
expect((0, ClassUtils_1.GetSuperclass)(Animal)).toBe(null);
|
|
36
|
-
});
|
|
37
|
-
it('should handle invalid inputs', () => {
|
|
38
|
-
expect((0, ClassUtils_1.GetSuperclass)(null)).toBe(null);
|
|
39
|
-
expect((0, ClassUtils_1.GetSuperclass)(undefined)).toBe(null);
|
|
40
|
-
expect((0, ClassUtils_1.GetSuperclass)({})).toBe(null);
|
|
41
|
-
expect((0, ClassUtils_1.GetSuperclass)('not a class')).toBe(null);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
describe('GetRootClass', () => {
|
|
45
|
-
it('should return the root class', () => {
|
|
46
|
-
expect((0, ClassUtils_1.GetRootClass)(GoldenRetriever)).toBe(Animal);
|
|
47
|
-
expect((0, ClassUtils_1.GetRootClass)(Dog)).toBe(Animal);
|
|
48
|
-
expect((0, ClassUtils_1.GetRootClass)(Animal)).toBe(Animal);
|
|
49
|
-
});
|
|
50
|
-
it('should handle classes without inheritance', () => {
|
|
51
|
-
class Standalone {
|
|
52
|
-
}
|
|
53
|
-
expect((0, ClassUtils_1.GetRootClass)(Standalone)).toBe(Standalone);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
describe('IsSubclassOf', () => {
|
|
57
|
-
it('should correctly identify subclass relationships', () => {
|
|
58
|
-
expect((0, ClassUtils_1.IsSubclassOf)(GoldenRetriever, Dog)).toBe(true);
|
|
59
|
-
expect((0, ClassUtils_1.IsSubclassOf)(GoldenRetriever, Mammal)).toBe(true);
|
|
60
|
-
expect((0, ClassUtils_1.IsSubclassOf)(GoldenRetriever, Animal)).toBe(true);
|
|
61
|
-
expect((0, ClassUtils_1.IsSubclassOf)(Dog, Animal)).toBe(true);
|
|
62
|
-
});
|
|
63
|
-
it('should return false for non-subclass relationships', () => {
|
|
64
|
-
expect((0, ClassUtils_1.IsSubclassOf)(Animal, Dog)).toBe(false);
|
|
65
|
-
expect((0, ClassUtils_1.IsSubclassOf)(Dog, GoldenRetriever)).toBe(false);
|
|
66
|
-
expect((0, ClassUtils_1.IsSubclassOf)(Dog, Dog)).toBe(false); // Not a subclass of itself
|
|
67
|
-
});
|
|
68
|
-
it('should handle invalid inputs', () => {
|
|
69
|
-
expect((0, ClassUtils_1.IsSubclassOf)(null, Animal)).toBe(false);
|
|
70
|
-
expect((0, ClassUtils_1.IsSubclassOf)(Dog, null)).toBe(false);
|
|
71
|
-
expect((0, ClassUtils_1.IsSubclassOf)('not a class', Animal)).toBe(false);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe('IsRootClass', () => {
|
|
75
|
-
it('should identify root classes', () => {
|
|
76
|
-
expect((0, ClassUtils_1.IsRootClass)(Animal)).toBe(true);
|
|
77
|
-
class StandaloneClass {
|
|
78
|
-
}
|
|
79
|
-
expect((0, ClassUtils_1.IsRootClass)(StandaloneClass)).toBe(true);
|
|
80
|
-
});
|
|
81
|
-
it('should return false for classes with superclasses', () => {
|
|
82
|
-
expect((0, ClassUtils_1.IsRootClass)(GoldenRetriever)).toBe(false);
|
|
83
|
-
expect((0, ClassUtils_1.IsRootClass)(Dog)).toBe(false);
|
|
84
|
-
expect((0, ClassUtils_1.IsRootClass)(Mammal)).toBe(false);
|
|
85
|
-
});
|
|
86
|
-
it('should handle invalid inputs', () => {
|
|
87
|
-
expect((0, ClassUtils_1.IsRootClass)(null)).toBe(false);
|
|
88
|
-
expect((0, ClassUtils_1.IsRootClass)(undefined)).toBe(false);
|
|
89
|
-
expect((0, ClassUtils_1.IsRootClass)(42)).toBe(false);
|
|
90
|
-
expect((0, ClassUtils_1.IsRootClass)('string')).toBe(false);
|
|
91
|
-
expect((0, ClassUtils_1.IsRootClass)({})).toBe(false);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
describe('IsDescendantClassOf', () => {
|
|
95
|
-
it('should work identically to IsSubclassOf', () => {
|
|
96
|
-
// Test direct parent
|
|
97
|
-
expect((0, ClassUtils_1.IsDescendantClassOf)(GoldenRetriever, Dog)).toBe(true);
|
|
98
|
-
expect((0, ClassUtils_1.IsDescendantClassOf)(Dog, Mammal)).toBe(true);
|
|
99
|
-
// Test grandparent and beyond
|
|
100
|
-
expect((0, ClassUtils_1.IsDescendantClassOf)(GoldenRetriever, Mammal)).toBe(true);
|
|
101
|
-
expect((0, ClassUtils_1.IsDescendantClassOf)(GoldenRetriever, Animal)).toBe(true);
|
|
102
|
-
// Test non-relationships
|
|
103
|
-
expect((0, ClassUtils_1.IsDescendantClassOf)(Animal, GoldenRetriever)).toBe(false);
|
|
104
|
-
expect((0, ClassUtils_1.IsDescendantClassOf)(Dog, Dog)).toBe(false);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
describe('GetClassInheritance', () => {
|
|
108
|
-
it('should return inheritance chain', () => {
|
|
109
|
-
const chain = (0, ClassUtils_1.GetClassInheritance)(GoldenRetriever);
|
|
110
|
-
expect(chain.length).toBe(3);
|
|
111
|
-
expect(chain[0].name).toBe('Dog');
|
|
112
|
-
expect(chain[0].reference).toBe(Dog);
|
|
113
|
-
expect(chain[1].name).toBe('Mammal');
|
|
114
|
-
expect(chain[1].reference).toBe(Mammal);
|
|
115
|
-
expect(chain[2].name).toBe('Animal');
|
|
116
|
-
expect(chain[2].reference).toBe(Animal);
|
|
117
|
-
});
|
|
118
|
-
it('should return empty array for base classes', () => {
|
|
119
|
-
const chain = (0, ClassUtils_1.GetClassInheritance)(Animal);
|
|
120
|
-
expect(chain.length).toBe(0);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
describe('GetFullClassHierarchy', () => {
|
|
124
|
-
it('should include the class itself', () => {
|
|
125
|
-
const hierarchy = (0, ClassUtils_1.GetFullClassHierarchy)(GoldenRetriever);
|
|
126
|
-
expect(hierarchy.length).toBe(4);
|
|
127
|
-
expect(hierarchy[0].name).toBe('GoldenRetriever');
|
|
128
|
-
expect(hierarchy[0].reference).toBe(GoldenRetriever);
|
|
129
|
-
expect(hierarchy[1].name).toBe('Dog');
|
|
130
|
-
expect(hierarchy[2].name).toBe('Mammal');
|
|
131
|
-
expect(hierarchy[3].name).toBe('Animal');
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
describe('IsClassConstructor', () => {
|
|
135
|
-
it('should identify class constructors', () => {
|
|
136
|
-
expect((0, ClassUtils_1.IsClassConstructor)(Animal)).toBe(true);
|
|
137
|
-
expect((0, ClassUtils_1.IsClassConstructor)(GoldenRetriever)).toBe(true);
|
|
138
|
-
});
|
|
139
|
-
it('should reject non-constructors', () => {
|
|
140
|
-
expect((0, ClassUtils_1.IsClassConstructor)(() => { })).toBe(false);
|
|
141
|
-
expect((0, ClassUtils_1.IsClassConstructor)(function regularFunction() { })).toBe(false);
|
|
142
|
-
expect((0, ClassUtils_1.IsClassConstructor)(42)).toBe(false);
|
|
143
|
-
expect((0, ClassUtils_1.IsClassConstructor)('string')).toBe(false);
|
|
144
|
-
expect((0, ClassUtils_1.IsClassConstructor)({})).toBe(false);
|
|
145
|
-
});
|
|
146
|
-
it('should handle constructor functions', () => {
|
|
147
|
-
function OldStyleClass() {
|
|
148
|
-
this.property = 'value';
|
|
149
|
-
}
|
|
150
|
-
OldStyleClass.prototype.method = function () { };
|
|
151
|
-
expect((0, ClassUtils_1.IsClassConstructor)(OldStyleClass)).toBe(true);
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
describe('GetClassName', () => {
|
|
155
|
-
it('should get class names', () => {
|
|
156
|
-
expect((0, ClassUtils_1.GetClassName)(Animal)).toBe('Animal');
|
|
157
|
-
expect((0, ClassUtils_1.GetClassName)(GoldenRetriever)).toBe('GoldenRetriever');
|
|
158
|
-
});
|
|
159
|
-
it('should handle anonymous classes', () => {
|
|
160
|
-
const AnonClass = class {
|
|
161
|
-
};
|
|
162
|
-
// Note: This might return 'AnonClass' or 'Anonymous' depending on environment
|
|
163
|
-
const name = (0, ClassUtils_1.GetClassName)(AnonClass);
|
|
164
|
-
expect(['AnonClass', 'Anonymous'].includes(name)).toBe(true);
|
|
165
|
-
});
|
|
166
|
-
it('should handle invalid inputs', () => {
|
|
167
|
-
expect((0, ClassUtils_1.GetClassName)(null)).toBe('Unknown');
|
|
168
|
-
expect((0, ClassUtils_1.GetClassName)(undefined)).toBe('Unknown');
|
|
169
|
-
expect((0, ClassUtils_1.GetClassName)(42)).toBe('Unknown');
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
//# sourceMappingURL=ClassUtils.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClassUtils.test.js","sourceRoot":"","sources":["../../src/__tests__/ClassUtils.test.ts"],"names":[],"mappings":"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"}
|