@cloro-dev/response-parser 0.1.6 → 0.2.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.
Files changed (59) hide show
  1. package/README.md +149 -102
  2. package/dist/index.esm.js.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/providers/ai-mode.d.ts.map +1 -1
  5. package/package.json +4 -29
  6. package/dist/react/components/AiResponseRenderer.d.ts +0 -24
  7. package/dist/react/components/AiResponseRenderer.d.ts.map +0 -1
  8. package/dist/react/components/IframeRenderer.d.ts +0 -12
  9. package/dist/react/components/IframeRenderer.d.ts.map +0 -1
  10. package/dist/react/components/ResponseRenderer.d.ts +0 -24
  11. package/dist/react/components/ResponseRenderer.d.ts.map +0 -1
  12. package/dist/react/core/detector.d.ts +0 -17
  13. package/dist/react/core/detector.d.ts.map +0 -1
  14. package/dist/react/core/parser.d.ts +0 -40
  15. package/dist/react/core/parser.d.ts.map +0 -1
  16. package/dist/react/core/types.d.ts +0 -34
  17. package/dist/react/core/types.d.ts.map +0 -1
  18. package/dist/react/hooks/useAiResponse.d.ts +0 -19
  19. package/dist/react/hooks/useAiResponse.d.ts.map +0 -1
  20. package/dist/react/hooks/useResponse.d.ts +0 -19
  21. package/dist/react/hooks/useResponse.d.ts.map +0 -1
  22. package/dist/react/index.d.ts +0 -86
  23. package/dist/react/index.d.ts.map +0 -1
  24. package/dist/react/index.esm.js +0 -2
  25. package/dist/react/index.esm.js.map +0 -1
  26. package/dist/react/index.js +0 -2
  27. package/dist/react/index.js.map +0 -1
  28. package/dist/react/providers/ai-mode.d.ts +0 -21
  29. package/dist/react/providers/ai-mode.d.ts.map +0 -1
  30. package/dist/react/providers/ai-overview.d.ts +0 -21
  31. package/dist/react/providers/ai-overview.d.ts.map +0 -1
  32. package/dist/react/providers/base-provider.d.ts +0 -34
  33. package/dist/react/providers/base-provider.d.ts.map +0 -1
  34. package/dist/react/providers/chatgpt.d.ts +0 -22
  35. package/dist/react/providers/chatgpt.d.ts.map +0 -1
  36. package/dist/react/providers/copilot.d.ts +0 -25
  37. package/dist/react/providers/copilot.d.ts.map +0 -1
  38. package/dist/react/providers/gemini.d.ts +0 -21
  39. package/dist/react/providers/gemini.d.ts.map +0 -1
  40. package/dist/react/providers/grok.d.ts +0 -17
  41. package/dist/react/providers/grok.d.ts.map +0 -1
  42. package/dist/react/providers/perplexity.d.ts +0 -17
  43. package/dist/react/providers/perplexity.d.ts.map +0 -1
  44. package/dist/react/react/components/AiResponseRenderer.d.ts +0 -24
  45. package/dist/react/react/components/AiResponseRenderer.d.ts.map +0 -1
  46. package/dist/react/react/components/IframeRenderer.d.ts +0 -12
  47. package/dist/react/react/components/IframeRenderer.d.ts.map +0 -1
  48. package/dist/react/react/components/ResponseRenderer.d.ts +0 -24
  49. package/dist/react/react/components/ResponseRenderer.d.ts.map +0 -1
  50. package/dist/react/react/hooks/useAiResponse.d.ts +0 -19
  51. package/dist/react/react/hooks/useAiResponse.d.ts.map +0 -1
  52. package/dist/react/react/hooks/useResponse.d.ts +0 -19
  53. package/dist/react/react/hooks/useResponse.d.ts.map +0 -1
  54. package/dist/react/react/index.d.ts +0 -7
  55. package/dist/react/react/index.d.ts.map +0 -1
  56. package/dist/react/styles/index.d.ts +0 -1
  57. package/dist/react/styles/index.d.ts.map +0 -1
  58. package/dist/react/utils/helpers.d.ts +0 -28
  59. package/dist/react/utils/helpers.d.ts.map +0 -1
package/README.md CHANGED
@@ -1,14 +1,16 @@
1
1
  # @cloro-dev/response-parser
2
2
 
3
- A powerful TypeScript library for parsing and rendering AI model responses from ChatGPT, Gemini, Perplexity, Copilot, and Google AI Overview/Mode.
3
+ A powerful TypeScript library for parsing AI model responses from ChatGPT, Gemini, Perplexity, Copilot, and Google AI Overview/Mode.
4
+
5
+ > **Framework-Agnostic**: This library returns HTML strings that can be rendered in any framework (React, Vue, Svelte, vanilla JS, etc.).
4
6
 
5
7
  ## Features
6
8
 
7
9
  - 🤖 **Multi-Provider Support**: ChatGPT, Gemini, Perplexity, Copilot, AI Overview, AI Mode
8
10
  - 🔍 **Auto-Detection**: Automatically detects the AI provider from response structure
9
11
  - 🎨 **Built-in Styling**: Provider-specific styling with dark mode support
10
- - ⚡ **React Components**: Ready-to-use React components for rendering
11
- - 🔒 **Secure**: Sandboxed rendering with automatic script sanitization
12
+ - 🔧 **Framework-Agnostic**: Pure HTML output for any framework
13
+ - 🔒 **Secure**: Automatic script sanitization
12
14
  - 📦 **TypeScript**: Full TypeScript support with comprehensive types
13
15
  - 🎯 **Lightweight**: No runtime dependencies for core parsing
14
16
 
@@ -24,7 +26,7 @@ pnpm add @cloro-dev/response-parser
24
26
 
25
27
  ## Quick Start
26
28
 
27
- ### Basic Parsing
29
+ This library parses AI responses and returns sanitized HTML strings. You can render the HTML in any framework:
28
30
 
29
31
  ```typescript
30
32
  import { parseAiResponse, detectProvider } from "@cloro-dev/response-parser";
@@ -38,35 +40,73 @@ console.log(parsed.html); // Sanitized HTML ready for rendering
38
40
  console.log(parsed.text); // Plain text version
39
41
  ```
40
42
 
41
- ### React Component
43
+ ## Usage Examples
44
+
45
+ ### React
42
46
 
43
47
  ```tsx
44
- import { ResponseRenderer } from "@cloro-dev/response-parser/react";
48
+ import { parseAiResponse } from "@cloro-dev/response-parser";
45
49
 
46
50
  function MyComponent() {
47
- const [aiResponse, setAiResponse] = useState(null);
51
+ const parsed = parseAiResponse(aiResponse, {
52
+ invertColors: true,
53
+ removeLinks: true
54
+ });
48
55
 
49
56
  return (
50
- <ResponseRenderer
51
- response={aiResponse}
52
- removeLinks={false}
53
- invertColors={false}
54
- autoDetect
55
- className="w-full h-96"
56
- iframeProps={{
57
- sandbox: "allow-popups",
58
- }}
59
- onProviderDetected={(provider) => console.log("Detected:", provider)}
60
- />
57
+ <div dangerouslySetInnerHTML={{ __html: parsed.html }} />
61
58
  );
62
59
  }
63
60
  ```
64
61
 
65
- ## API Reference
62
+ ### Vue
63
+
64
+ ```vue
65
+ <script setup>
66
+ import { parseAiResponse } from "@cloro-dev/response-parser";
67
+
68
+ const parsed = parseAiResponse(aiResponse, {
69
+ invertColors: true,
70
+ removeLinks: true
71
+ });
72
+ </script>
73
+
74
+ <template>
75
+ <div v-html="parsed.html"></div>
76
+ </template>
77
+ ```
78
+
79
+ ### Svelte
80
+
81
+ ```svelte
82
+ <script>
83
+ import { parseAiResponse } from "@cloro-dev/response-parser";
84
+
85
+ const parsed = parseAiResponse(aiResponse, {
86
+ invertColors: true,
87
+ removeLinks: true
88
+ });
89
+ </script>
90
+
91
+ <div>{@html parsed.html}</div>
92
+ ```
93
+
94
+ ### Vanilla JavaScript
95
+
96
+ ```javascript
97
+ import { parseAiResponse } from "@cloro-dev/response-parser";
66
98
 
67
- ### Core Functions
99
+ const parsed = parseAiResponse(aiResponse, {
100
+ invertColors: true,
101
+ removeLinks: true
102
+ });
103
+
104
+ document.getElementById('output').innerHTML = parsed.html;
105
+ ```
68
106
 
69
- #### `parseAiResponse(response, options?)`
107
+ ## API Reference
108
+
109
+ ### `parseAiResponse(response, options?)`
70
110
 
71
111
  Parse an AI response with auto-detected provider.
72
112
 
@@ -80,64 +120,35 @@ Parse an AI response with auto-detected provider.
80
120
 
81
121
  **Returns:** `ParsedResponse | null`
82
122
 
83
- #### `detectProvider(response)`
123
+ ```typescript
124
+ interface ParsedResponse {
125
+ provider: AIProvider;
126
+ html: string;
127
+ text: string;
128
+ sources?: Array<{
129
+ title: string;
130
+ url: string;
131
+ snippet?: string;
132
+ }>;
133
+ }
134
+ ```
135
+
136
+ ### `detectProvider(response)`
84
137
 
85
138
  Detect the AI provider from a response.
86
139
 
87
140
  **Returns:** `AIProvider | null`
88
141
 
89
- ### React Components
90
-
91
- #### `<ResponseRenderer />`
92
-
93
- Main React component for rendering AI responses.
94
-
95
- **Props:**
96
-
97
- - `response`: The AI response object
98
- - `autoDetect`: Auto-detect provider (default: `true`)
99
- - `provider`: Explicitly specify provider
100
- - `removeLinks`: Remove all hyperlinks (default: `false`)
101
- - `invertColors`: Apply color inversion (default: `false`)
102
- - `removeHeader`: Remove navigation bar/header (default: `false`, Perplexity, Gemini, Copilot, AI Overview & AI Mode)
103
- - `removeFooter`: Remove follow-up input box/footer (default: `false`, ChatGPT, Perplexity, Gemini, Copilot, AI Overview & AI Mode)
104
- - `removeSidebar`: Remove sidebar (default: `false`, ChatGPT, Gemini & Copilot)
105
- - `className`: CSS class for container
106
- - `iframeProps`: Additional props for iframe
107
- - `loadingComponent`: Custom loading component
108
- - `errorComponent`: Custom error component
109
- - `fallbackComponent`: Custom fallback component
110
- - `onRenderComplete`: Callback when rendering completes
111
- - `onProviderDetected`: Callback when provider is detected
112
-
113
- ### Hooks
114
-
115
- #### `useResponse(response, options?)`
116
-
117
- React hook for parsing AI responses.
118
-
119
- **Options:**
120
-
121
- - `autoDetect`: Auto-detect provider (default: `true`)
122
- - `provider`: Explicitly specify provider
123
- - `removeLinks`: Remove all hyperlinks (default: `false`)
124
- - `invertColors`: Apply color inversion (default: `false`)
125
- - `removeHeader`: Remove navigation bar/header (default: `false`, Perplexity, Gemini, Copilot, AI Overview & AI Mode)
126
- - `removeFooter`: Remove follow-up input box/footer (default: `false`, ChatGPT, Perplexity, Gemini, Copilot, AI Overview & AI Mode)
127
- - `removeSidebar`: Remove sidebar (default: `false`, ChatGPT, Gemini & Copilot)
128
- - `onProviderDetected`: Callback when provider is detected
129
- - `onError`: Callback when error occurs
130
-
131
- **Returns:**
132
-
133
- - `parsed`: Parsed response object
134
- - `provider`: Detected provider
135
- - `isLoading`: Loading state
136
- - `error`: Error object
137
- - `html`: HTML string
138
- - `text`: Plain text string
139
- - `sources`: Sources array (if available)
140
- - `reparse`: Function to re-parse with new options
142
+ ```typescript
143
+ type AIProvider =
144
+ | 'CHATGPT'
145
+ | 'GEMINI'
146
+ | 'PERPLEXITY'
147
+ | 'COPILOT'
148
+ | 'AI_OVERVIEW'
149
+ | 'AI_MODE'
150
+ | 'GROK';
151
+ ```
141
152
 
142
153
  ## Supported Providers
143
154
 
@@ -150,7 +161,7 @@ React hook for parsing AI responses.
150
161
  | AI Overview | ✅ | WIZ data extraction |
151
162
  | AI Mode | ✅ | Google UI hiding |
152
163
 
153
- ## Examples
164
+ ## Common Use Cases
154
165
 
155
166
  ### Remove Hyperlinks
156
167
 
@@ -164,24 +175,22 @@ const parsed = parseAiResponse(response, {
164
175
 
165
176
  ### Dark Mode
166
177
 
167
- ```tsx
168
- <ResponseRenderer
169
- response={response}
170
- invertColors={true} // Apply CSS filter for dark mode
171
- removeLinks={true} // Optionally remove links
172
- />
178
+ ```typescript
179
+ const parsed = parseAiResponse(response, {
180
+ invertColors: true, // Apply CSS filter for dark mode
181
+ removeLinks: true, // Optionally remove links
182
+ });
173
183
  ```
174
184
 
175
185
  ### Clean View (Remove UI Elements)
176
186
 
177
- ```tsx
178
- <ResponseRenderer
179
- response={response}
180
- removeHeader={true} // Remove top navigation bar
181
- removeFooter={true} // Remove follow-up input box
182
- removeLinks={true} // Remove all hyperlinks
183
- invertColors={true} // Dark mode
184
- />
187
+ ```typescript
188
+ const parsed = parseAiResponse(response, {
189
+ removeHeader: true, // Remove top navigation bar
190
+ removeFooter: true, // Remove follow-up input box
191
+ removeLinks: true, // Remove all hyperlinks
192
+ invertColors: true, // Dark mode
193
+ });
185
194
  ```
186
195
 
187
196
  ### Manual Provider Specification
@@ -194,21 +203,58 @@ const parsed = parseAiResponse(response, {
194
203
  });
195
204
  ```
196
205
 
197
- ### Error Handling
206
+ ### Provider Detection Only
207
+
208
+ ```typescript
209
+ import { detectProvider } from "@cloro-dev/response-parser";
210
+
211
+ const provider = detectProvider(response);
212
+ console.log(`Detected: ${provider}`); // 'CHATGPT' | 'GEMINI' | etc.
213
+ ```
214
+
215
+ ## Migration from v0.1.x
216
+
217
+ If you were using React components from v0.1.x, here's how to migrate:
218
+
219
+ ### Before (v0.1.x with React)
220
+
221
+ ```tsx
222
+ import { ResponseRenderer } from "@cloro-dev/response-parser/react";
223
+
224
+ <ResponseRenderer
225
+ response={response}
226
+ invertColors={true}
227
+ removeLinks={true}
228
+ onProviderDetected={(provider) => console.log("Detected:", provider)}
229
+ />
230
+ ```
231
+
232
+ ### After (v0.2.0 framework-agnostic)
198
233
 
199
234
  ```tsx
200
- const ErrorComponent = ({ error, retry }) => (
201
- <div className="error">
202
- <p>Failed to load: {error.message}</p>
203
- <button onClick={retry}>Retry</button>
204
- </div>
205
- );
235
+ import { parseAiResponse } from "@cloro-dev/response-parser";
206
236
 
207
- <ResponseRenderer response={response} errorComponent={ErrorComponent} />;
237
+ const parsed = parseAiResponse(response, {
238
+ invertColors: true,
239
+ removeLinks: true
240
+ });
241
+
242
+ console.log("Detected:", parsed.provider);
243
+
244
+ <div dangerouslySetInnerHTML={{ __html: parsed.html }} />
208
245
  ```
209
246
 
247
+ The core parsing logic is identical - you just need to handle the HTML rendering yourself in your framework of choice.
248
+
210
249
  ## What's Changed
211
250
 
251
+ ### v0.2.0
252
+
253
+ - ✅ **Removed** React components and hooks (now framework-agnostic)
254
+ - ✅ **Removed** React peer dependency
255
+ - ✅ **Simplified** API to return pure HTML strings
256
+ - ✅ **Keep** core parsing logic (unchanged)
257
+
212
258
  ### v0.1.4
213
259
 
214
260
  - ✅ **Renamed** `removeNavbar` → `removeHeader` (removes navigation bar/header)
@@ -228,11 +274,6 @@ const ErrorComponent = ({ error, retry }) => (
228
274
  - ❌ **Removed** `includeStyles` option (always enabled)
229
275
  - ❌ **Removed** `baseUrl` option (uses provider default)
230
276
 
231
- ### Component Renaming
232
-
233
- - `AiResponseRenderer` → `ResponseRenderer`
234
- - `useAiResponse` → `useResponse`
235
-
236
277
  ## Development
237
278
 
238
279
  ```bash
@@ -247,6 +288,12 @@ pnpm test
247
288
 
248
289
  # Development mode
249
290
  pnpm dev
291
+
292
+ # Type check
293
+ pnpm type-check
294
+
295
+ # Lint
296
+ pnpm lint
250
297
  ```
251
298
 
252
299
  ## License