@umituz/react-native-ai-groq-provider 1.0.4 → 1.0.5
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/infrastructure/services/GroqClient.d.ts.map +1 -1
- package/dist/infrastructure/services/GroqClient.js +54 -1
- package/dist/infrastructure/services/GroqClient.js.map +1 -1
- package/dist/infrastructure/services/StructuredText.d.ts.map +1 -1
- package/dist/infrastructure/services/StructuredText.js +83 -1
- package/dist/infrastructure/services/StructuredText.js.map +1 -1
- package/dist/infrastructure/services/TextGeneration.d.ts.map +1 -1
- package/dist/infrastructure/services/TextGeneration.js +63 -0
- package/dist/infrastructure/services/TextGeneration.js.map +1 -1
- package/package.json +1 -1
- package/src/infrastructure/services/GroqClient.ts +61 -1
- package/src/infrastructure/services/StructuredText.ts +94 -1
- package/src/infrastructure/services/TextGeneration.ts +70 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroqClient.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/GroqClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAO/B,cAAM,cAAc;IAClB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"GroqClient.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/GroqClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAO/B,cAAM,cAAc;IAClB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAqCpC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,SAAS,IAAI,UAAU;IAUvB;;OAEG;YACW,OAAO;IAyFrB;;OAEG;YACW,mBAAmB;IAmBjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAQ5B;;;OAGG;IACI,oBAAoB,CACzB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,aAAa,CAAC;IA8EhC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -19,6 +19,16 @@ class GroqHttpClient {
|
|
|
19
19
|
*/
|
|
20
20
|
initialize(config) {
|
|
21
21
|
const apiKey = config.apiKey?.trim();
|
|
22
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
23
|
+
console.log("[GroqClient] Initializing:", {
|
|
24
|
+
hasApiKey: !!apiKey,
|
|
25
|
+
keyLength: apiKey?.length,
|
|
26
|
+
keyPrefix: apiKey ? apiKey.substring(0, 10) + "..." : "",
|
|
27
|
+
baseUrl: config.baseUrl || DEFAULT_BASE_URL,
|
|
28
|
+
timeoutMs: config.timeoutMs || DEFAULT_TIMEOUT,
|
|
29
|
+
textModel: config.textModel,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
22
32
|
if (!apiKey || apiKey.length < 10) {
|
|
23
33
|
throw new error_types_1.GroqError(error_types_1.GroqErrorType.INVALID_API_KEY, "API key is required and must be at least 10 characters");
|
|
24
34
|
}
|
|
@@ -29,6 +39,12 @@ class GroqHttpClient {
|
|
|
29
39
|
textModel: config.textModel,
|
|
30
40
|
};
|
|
31
41
|
this.initialized = true;
|
|
42
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
43
|
+
console.log("[GroqClient] Initialization complete:", {
|
|
44
|
+
initialized: this.initialized,
|
|
45
|
+
baseUrl: this.config.baseUrl,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
32
48
|
}
|
|
33
49
|
/**
|
|
34
50
|
* Check if client is initialized
|
|
@@ -54,6 +70,16 @@ class GroqHttpClient {
|
|
|
54
70
|
}
|
|
55
71
|
const url = `${this.config.baseUrl}${endpoint}`;
|
|
56
72
|
const timeout = this.config.timeoutMs || DEFAULT_TIMEOUT;
|
|
73
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
74
|
+
console.log("[GroqClient] API Request:", {
|
|
75
|
+
url,
|
|
76
|
+
endpoint,
|
|
77
|
+
method: "POST",
|
|
78
|
+
timeout: `${timeout}ms`,
|
|
79
|
+
hasBody: !!body,
|
|
80
|
+
bodyKeys: body ? Object.keys(body) : [],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
57
83
|
try {
|
|
58
84
|
// Create AbortController for timeout
|
|
59
85
|
const controller = new AbortController();
|
|
@@ -62,6 +88,7 @@ class GroqHttpClient {
|
|
|
62
88
|
if (signal) {
|
|
63
89
|
signal.addEventListener("abort", () => controller.abort());
|
|
64
90
|
}
|
|
91
|
+
const fetchStartTime = Date.now();
|
|
65
92
|
const response = await fetch(url, {
|
|
66
93
|
method: "POST",
|
|
67
94
|
headers: {
|
|
@@ -71,13 +98,39 @@ class GroqHttpClient {
|
|
|
71
98
|
body: JSON.stringify(body),
|
|
72
99
|
signal: controller.signal,
|
|
73
100
|
});
|
|
101
|
+
const fetchDuration = Date.now() - fetchStartTime;
|
|
74
102
|
clearTimeout(timeoutId);
|
|
103
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
104
|
+
console.log("[GroqClient] API Response:", {
|
|
105
|
+
status: response.status,
|
|
106
|
+
ok: response.ok,
|
|
107
|
+
fetchDuration: `${fetchDuration}ms`,
|
|
108
|
+
contentType: response.headers.get("content-type"),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
75
111
|
if (!response.ok) {
|
|
76
112
|
await this.handleErrorResponse(response);
|
|
77
113
|
}
|
|
78
|
-
|
|
114
|
+
const jsonStart = Date.now();
|
|
115
|
+
const jsonData = (await response.json());
|
|
116
|
+
const parseDuration = Date.now() - jsonStart;
|
|
117
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
118
|
+
console.log("[GroqClient] JSON parsed:", {
|
|
119
|
+
parseDuration: `${parseDuration}ms`,
|
|
120
|
+
hasData: !!jsonData,
|
|
121
|
+
dataKeys: jsonData ? Object.keys(jsonData) : [],
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return jsonData;
|
|
79
125
|
}
|
|
80
126
|
catch (error) {
|
|
127
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
128
|
+
console.error("[GroqClient] Request error:", {
|
|
129
|
+
error,
|
|
130
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
131
|
+
errorName: error instanceof Error ? error.name : undefined,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
81
134
|
throw this.handleRequestError(error);
|
|
82
135
|
}
|
|
83
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroqClient.js","sourceRoot":"","sources":["../../../src/infrastructure/services/GroqClient.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,mEAAuG;AAEvG,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAC1D,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,aAAa;AAC5C,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAEtD,MAAM,cAAc;IAApB;QACU,WAAM,GAAsB,IAAI,CAAC;QACjC,gBAAW,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"GroqClient.js","sourceRoot":"","sources":["../../../src/infrastructure/services/GroqClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredText.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/StructuredText.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"StructuredText.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/StructuredText.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,CAAC,CAAC,CAmIZ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,CAAC,CAAC,CAiGZ"}
|
|
@@ -13,7 +13,18 @@ const error_types_1 = require("../../domain/entities/error.types");
|
|
|
13
13
|
* Generate structured JSON output from a prompt
|
|
14
14
|
*/
|
|
15
15
|
async function structuredText(prompt, options = {}) {
|
|
16
|
+
const startTime = Date.now();
|
|
16
17
|
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
18
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
19
|
+
console.log("[Groq] structuredText called:", {
|
|
20
|
+
model,
|
|
21
|
+
promptLength: prompt.length,
|
|
22
|
+
promptPreview: prompt.substring(0, 150) + "...",
|
|
23
|
+
hasSchema: !!options.schema,
|
|
24
|
+
hasExample: !!options.example,
|
|
25
|
+
generationConfig: options.generationConfig,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
17
28
|
let systemPrompt = "You are a helpful assistant that generates valid JSON output.";
|
|
18
29
|
if (options.schema) {
|
|
19
30
|
systemPrompt += `\n\nResponse must conform to this JSON schema:\n${JSON.stringify(options.schema, null, 2)}`;
|
|
@@ -39,11 +50,38 @@ async function structuredText(prompt, options = {}) {
|
|
|
39
50
|
max_tokens: options.generationConfig?.maxTokens || 2048,
|
|
40
51
|
top_p: options.generationConfig?.topP || 0.9,
|
|
41
52
|
};
|
|
53
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
54
|
+
console.log("[Groq] Sending structured request:", {
|
|
55
|
+
endpoint: "/v1/chat/completions",
|
|
56
|
+
requestBody: {
|
|
57
|
+
model: request.model,
|
|
58
|
+
temperature: request.temperature,
|
|
59
|
+
max_tokens: request.max_tokens,
|
|
60
|
+
top_p: request.top_p,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const apiStartTime = Date.now();
|
|
42
65
|
const response = await GroqClient_1.groqHttpClient.chatCompletion(request);
|
|
66
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
67
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
68
|
+
console.log("[Groq] Structured API response:", {
|
|
69
|
+
apiDuration: `${apiDuration}ms`,
|
|
70
|
+
usage: response.usage,
|
|
71
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
72
|
+
hasContent: !!response.choices?.[0]?.message?.content,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
43
75
|
let content = response.choices[0]?.message?.content;
|
|
44
76
|
if (!content) {
|
|
45
77
|
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, "No content generated from Groq API");
|
|
46
78
|
}
|
|
79
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
80
|
+
console.log("[Groq] Raw response content:", {
|
|
81
|
+
length: content.length,
|
|
82
|
+
preview: content.substring(0, 300) + "...",
|
|
83
|
+
});
|
|
84
|
+
}
|
|
47
85
|
// Clean up the response: remove markdown code blocks if present
|
|
48
86
|
content = content.trim();
|
|
49
87
|
if (content.startsWith("```json")) {
|
|
@@ -56,10 +94,30 @@ async function structuredText(prompt, options = {}) {
|
|
|
56
94
|
content = content.slice(0, -3);
|
|
57
95
|
}
|
|
58
96
|
content = content.trim();
|
|
97
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
98
|
+
console.log("[Groq] Attempting JSON parse...");
|
|
99
|
+
}
|
|
59
100
|
try {
|
|
60
|
-
|
|
101
|
+
const parsed = JSON.parse(content);
|
|
102
|
+
const totalDuration = Date.now() - startTime;
|
|
103
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
104
|
+
console.log("[Groq] structuredText complete:", {
|
|
105
|
+
totalDuration: `${totalDuration}ms`,
|
|
106
|
+
apiDuration: `${apiDuration}ms`,
|
|
107
|
+
parseDuration: `${totalDuration - apiDuration}ms`,
|
|
108
|
+
parsedKeys: Object.keys(parsed),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return parsed;
|
|
61
112
|
}
|
|
62
113
|
catch (error) {
|
|
114
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
115
|
+
console.error("[Groq] JSON parse failed:", {
|
|
116
|
+
error,
|
|
117
|
+
contentLength: content.length,
|
|
118
|
+
contentPreview: content.substring(0, 500) + "...",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
63
121
|
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, `Failed to parse JSON response: ${content}`, error);
|
|
64
122
|
}
|
|
65
123
|
}
|
|
@@ -67,7 +125,16 @@ async function structuredText(prompt, options = {}) {
|
|
|
67
125
|
* Generate structured JSON output from messages
|
|
68
126
|
*/
|
|
69
127
|
async function structuredChat(messages, options = {}) {
|
|
128
|
+
const startTime = Date.now();
|
|
70
129
|
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
130
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
131
|
+
console.log("[Groq] structuredChat called:", {
|
|
132
|
+
model,
|
|
133
|
+
messageCount: messages.length,
|
|
134
|
+
hasSchema: !!options.schema,
|
|
135
|
+
hasExample: !!options.example,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
71
138
|
let systemMessage = null;
|
|
72
139
|
// Check if there's already a system message
|
|
73
140
|
const hasSystemMessage = messages.some((m) => m.role === "system");
|
|
@@ -95,7 +162,15 @@ async function structuredChat(messages, options = {}) {
|
|
|
95
162
|
max_tokens: options.generationConfig?.maxTokens || 2048,
|
|
96
163
|
top_p: options.generationConfig?.topP || 0.9,
|
|
97
164
|
};
|
|
165
|
+
const apiStartTime = Date.now();
|
|
98
166
|
const response = await GroqClient_1.groqHttpClient.chatCompletion(request);
|
|
167
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
168
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
169
|
+
console.log("[Groq] structuredChat API response:", {
|
|
170
|
+
apiDuration: `${apiDuration}ms`,
|
|
171
|
+
usage: response.usage,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
99
174
|
let content = response.choices[0]?.message?.content;
|
|
100
175
|
if (!content) {
|
|
101
176
|
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, "No content generated from Groq API");
|
|
@@ -112,6 +187,13 @@ async function structuredChat(messages, options = {}) {
|
|
|
112
187
|
content = content.slice(0, -3);
|
|
113
188
|
}
|
|
114
189
|
content = content.trim();
|
|
190
|
+
const totalDuration = Date.now() - startTime;
|
|
191
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
192
|
+
console.log("[Groq] structuredChat complete:", {
|
|
193
|
+
totalDuration: `${totalDuration}ms`,
|
|
194
|
+
responseLength: content.length,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
115
197
|
try {
|
|
116
198
|
return JSON.parse(content);
|
|
117
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredText.js","sourceRoot":"","sources":["../../../src/infrastructure/services/StructuredText.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAqBH,
|
|
1
|
+
{"version":3,"file":"StructuredText.js","sourceRoot":"","sources":["../../../src/infrastructure/services/StructuredText.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/TextGeneration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAGV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/TextGeneration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAGV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CA4EjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CAqDjB"}
|
|
@@ -13,7 +13,16 @@ const error_types_1 = require("../../domain/entities/error.types");
|
|
|
13
13
|
* Generate text from a simple prompt
|
|
14
14
|
*/
|
|
15
15
|
async function textGeneration(prompt, options = {}) {
|
|
16
|
+
const startTime = Date.now();
|
|
16
17
|
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
18
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
19
|
+
console.log("[Groq] textGeneration called:", {
|
|
20
|
+
model,
|
|
21
|
+
promptLength: prompt.length,
|
|
22
|
+
promptPreview: prompt.substring(0, 100) + "...",
|
|
23
|
+
options: options.generationConfig,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
17
26
|
const messages = [
|
|
18
27
|
{
|
|
19
28
|
role: "user",
|
|
@@ -31,18 +40,56 @@ async function textGeneration(prompt, options = {}) {
|
|
|
31
40
|
frequency_penalty: options.generationConfig?.frequencyPenalty,
|
|
32
41
|
presence_penalty: options.generationConfig?.presencePenalty,
|
|
33
42
|
};
|
|
43
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
44
|
+
console.log("[Groq] Sending request to API:", {
|
|
45
|
+
endpoint: "/v1/chat/completions",
|
|
46
|
+
requestBody: {
|
|
47
|
+
model: request.model,
|
|
48
|
+
messageCount: request.messages.length,
|
|
49
|
+
temperature: request.temperature,
|
|
50
|
+
max_tokens: request.max_tokens,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const apiStartTime = Date.now();
|
|
34
55
|
const response = await GroqClient_1.groqHttpClient.chatCompletion(request);
|
|
56
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
57
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
58
|
+
console.log("[Groq] API response received:", {
|
|
59
|
+
apiDuration: `${apiDuration}ms`,
|
|
60
|
+
hasChoices: !!response.choices?.length,
|
|
61
|
+
choiceCount: response.choices?.length || 0,
|
|
62
|
+
usage: response.usage,
|
|
63
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
35
66
|
const content = response.choices[0]?.message?.content;
|
|
36
67
|
if (!content) {
|
|
37
68
|
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, "No content generated from Groq API");
|
|
38
69
|
}
|
|
70
|
+
const totalDuration = Date.now() - startTime;
|
|
71
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
72
|
+
console.log("[Groq] textGeneration complete:", {
|
|
73
|
+
totalDuration: `${totalDuration}ms`,
|
|
74
|
+
responseLength: content.length,
|
|
75
|
+
responsePreview: content.substring(0, 200) + "...",
|
|
76
|
+
});
|
|
77
|
+
}
|
|
39
78
|
return content;
|
|
40
79
|
}
|
|
41
80
|
/**
|
|
42
81
|
* Generate text from an array of messages
|
|
43
82
|
*/
|
|
44
83
|
async function chatGeneration(messages, options = {}) {
|
|
84
|
+
const startTime = Date.now();
|
|
45
85
|
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
86
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
87
|
+
console.log("[Groq] chatGeneration called:", {
|
|
88
|
+
model,
|
|
89
|
+
messageCount: messages.length,
|
|
90
|
+
options: options.generationConfig,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
46
93
|
const request = {
|
|
47
94
|
model,
|
|
48
95
|
messages,
|
|
@@ -54,11 +101,27 @@ async function chatGeneration(messages, options = {}) {
|
|
|
54
101
|
frequency_penalty: options.generationConfig?.frequencyPenalty,
|
|
55
102
|
presence_penalty: options.generationConfig?.presencePenalty,
|
|
56
103
|
};
|
|
104
|
+
const apiStartTime = Date.now();
|
|
57
105
|
const response = await GroqClient_1.groqHttpClient.chatCompletion(request);
|
|
106
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
107
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
108
|
+
console.log("[Groq] chatGeneration API response:", {
|
|
109
|
+
apiDuration: `${apiDuration}ms`,
|
|
110
|
+
usage: response.usage,
|
|
111
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
58
114
|
const content = response.choices[0]?.message?.content;
|
|
59
115
|
if (!content) {
|
|
60
116
|
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, "No content generated from Groq API");
|
|
61
117
|
}
|
|
118
|
+
const totalDuration = Date.now() - startTime;
|
|
119
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
120
|
+
console.log("[Groq] chatGeneration complete:", {
|
|
121
|
+
totalDuration: `${totalDuration}ms`,
|
|
122
|
+
responseLength: content.length,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
62
125
|
return content;
|
|
63
126
|
}
|
|
64
127
|
//# sourceMappingURL=TextGeneration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextGeneration.js","sourceRoot":"","sources":["../../../src/infrastructure/services/TextGeneration.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoBH,
|
|
1
|
+
{"version":3,"file":"TextGeneration.js","sourceRoot":"","sources":["../../../src/infrastructure/services/TextGeneration.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -25,6 +25,17 @@ class GroqHttpClient {
|
|
|
25
25
|
initialize(config: GroqConfig): void {
|
|
26
26
|
const apiKey = config.apiKey?.trim();
|
|
27
27
|
|
|
28
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
29
|
+
console.log("[GroqClient] Initializing:", {
|
|
30
|
+
hasApiKey: !!apiKey,
|
|
31
|
+
keyLength: apiKey?.length,
|
|
32
|
+
keyPrefix: apiKey ? apiKey.substring(0, 10) + "..." : "",
|
|
33
|
+
baseUrl: config.baseUrl || DEFAULT_BASE_URL,
|
|
34
|
+
timeoutMs: config.timeoutMs || DEFAULT_TIMEOUT,
|
|
35
|
+
textModel: config.textModel,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
28
39
|
if (!apiKey || apiKey.length < 10) {
|
|
29
40
|
throw new GroqError(
|
|
30
41
|
GroqErrorType.INVALID_API_KEY,
|
|
@@ -39,6 +50,13 @@ class GroqHttpClient {
|
|
|
39
50
|
textModel: config.textModel,
|
|
40
51
|
};
|
|
41
52
|
this.initialized = true;
|
|
53
|
+
|
|
54
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
55
|
+
console.log("[GroqClient] Initialization complete:", {
|
|
56
|
+
initialized: this.initialized,
|
|
57
|
+
baseUrl: this.config.baseUrl,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
42
60
|
}
|
|
43
61
|
|
|
44
62
|
/**
|
|
@@ -79,6 +97,17 @@ class GroqHttpClient {
|
|
|
79
97
|
const url = `${this.config.baseUrl}${endpoint}`;
|
|
80
98
|
const timeout = this.config.timeoutMs || DEFAULT_TIMEOUT;
|
|
81
99
|
|
|
100
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
101
|
+
console.log("[GroqClient] API Request:", {
|
|
102
|
+
url,
|
|
103
|
+
endpoint,
|
|
104
|
+
method: "POST",
|
|
105
|
+
timeout: `${timeout}ms`,
|
|
106
|
+
hasBody: !!body,
|
|
107
|
+
bodyKeys: body ? Object.keys(body) : [],
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
82
111
|
try {
|
|
83
112
|
// Create AbortController for timeout
|
|
84
113
|
const controller = new AbortController();
|
|
@@ -89,6 +118,7 @@ class GroqHttpClient {
|
|
|
89
118
|
signal.addEventListener("abort", () => controller.abort());
|
|
90
119
|
}
|
|
91
120
|
|
|
121
|
+
const fetchStartTime = Date.now();
|
|
92
122
|
const response = await fetch(url, {
|
|
93
123
|
method: "POST",
|
|
94
124
|
headers: {
|
|
@@ -99,14 +129,44 @@ class GroqHttpClient {
|
|
|
99
129
|
signal: controller.signal,
|
|
100
130
|
});
|
|
101
131
|
|
|
132
|
+
const fetchDuration = Date.now() - fetchStartTime;
|
|
102
133
|
clearTimeout(timeoutId);
|
|
103
134
|
|
|
135
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
136
|
+
console.log("[GroqClient] API Response:", {
|
|
137
|
+
status: response.status,
|
|
138
|
+
ok: response.ok,
|
|
139
|
+
fetchDuration: `${fetchDuration}ms`,
|
|
140
|
+
contentType: response.headers.get("content-type"),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
104
144
|
if (!response.ok) {
|
|
105
145
|
await this.handleErrorResponse(response);
|
|
106
146
|
}
|
|
107
147
|
|
|
108
|
-
|
|
148
|
+
const jsonStart = Date.now();
|
|
149
|
+
const jsonData = (await response.json()) as T;
|
|
150
|
+
const parseDuration = Date.now() - jsonStart;
|
|
151
|
+
|
|
152
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
153
|
+
console.log("[GroqClient] JSON parsed:", {
|
|
154
|
+
parseDuration: `${parseDuration}ms`,
|
|
155
|
+
hasData: !!jsonData,
|
|
156
|
+
dataKeys: jsonData ? Object.keys(jsonData) : [],
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return jsonData;
|
|
109
161
|
} catch (error) {
|
|
162
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
163
|
+
console.error("[GroqClient] Request error:", {
|
|
164
|
+
error,
|
|
165
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
166
|
+
errorName: error instanceof Error ? error.name : undefined,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
110
170
|
throw this.handleRequestError(error);
|
|
111
171
|
}
|
|
112
172
|
}
|
|
@@ -26,8 +26,20 @@ export async function structuredText<T = Record<string, unknown>>(
|
|
|
26
26
|
prompt: string,
|
|
27
27
|
options: StructuredTextOptions<T> = {}
|
|
28
28
|
): Promise<T> {
|
|
29
|
+
const startTime = Date.now();
|
|
29
30
|
const model = options.model || DEFAULT_MODELS.TEXT;
|
|
30
31
|
|
|
32
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
33
|
+
console.log("[Groq] structuredText called:", {
|
|
34
|
+
model,
|
|
35
|
+
promptLength: prompt.length,
|
|
36
|
+
promptPreview: prompt.substring(0, 150) + "...",
|
|
37
|
+
hasSchema: !!options.schema,
|
|
38
|
+
hasExample: !!options.example,
|
|
39
|
+
generationConfig: options.generationConfig,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
31
43
|
let systemPrompt = "You are a helpful assistant that generates valid JSON output.";
|
|
32
44
|
|
|
33
45
|
if (options.schema) {
|
|
@@ -59,7 +71,30 @@ export async function structuredText<T = Record<string, unknown>>(
|
|
|
59
71
|
top_p: options.generationConfig?.topP || 0.9,
|
|
60
72
|
};
|
|
61
73
|
|
|
74
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
75
|
+
console.log("[Groq] Sending structured request:", {
|
|
76
|
+
endpoint: "/v1/chat/completions",
|
|
77
|
+
requestBody: {
|
|
78
|
+
model: request.model,
|
|
79
|
+
temperature: request.temperature,
|
|
80
|
+
max_tokens: request.max_tokens,
|
|
81
|
+
top_p: request.top_p,
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const apiStartTime = Date.now();
|
|
62
87
|
const response = await groqHttpClient.chatCompletion(request);
|
|
88
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
89
|
+
|
|
90
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
91
|
+
console.log("[Groq] Structured API response:", {
|
|
92
|
+
apiDuration: `${apiDuration}ms`,
|
|
93
|
+
usage: response.usage,
|
|
94
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
95
|
+
hasContent: !!response.choices?.[0]?.message?.content,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
63
98
|
|
|
64
99
|
let content = response.choices[0]?.message?.content;
|
|
65
100
|
if (!content) {
|
|
@@ -69,6 +104,13 @@ export async function structuredText<T = Record<string, unknown>>(
|
|
|
69
104
|
);
|
|
70
105
|
}
|
|
71
106
|
|
|
107
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
108
|
+
console.log("[Groq] Raw response content:", {
|
|
109
|
+
length: content.length,
|
|
110
|
+
preview: content.substring(0, 300) + "...",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
72
114
|
// Clean up the response: remove markdown code blocks if present
|
|
73
115
|
content = content.trim();
|
|
74
116
|
if (content.startsWith("```json")) {
|
|
@@ -81,9 +123,33 @@ export async function structuredText<T = Record<string, unknown>>(
|
|
|
81
123
|
}
|
|
82
124
|
content = content.trim();
|
|
83
125
|
|
|
126
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
127
|
+
console.log("[Groq] Attempting JSON parse...");
|
|
128
|
+
}
|
|
129
|
+
|
|
84
130
|
try {
|
|
85
|
-
|
|
131
|
+
const parsed = JSON.parse(content) as T;
|
|
132
|
+
const totalDuration = Date.now() - startTime;
|
|
133
|
+
|
|
134
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
135
|
+
console.log("[Groq] structuredText complete:", {
|
|
136
|
+
totalDuration: `${totalDuration}ms`,
|
|
137
|
+
apiDuration: `${apiDuration}ms`,
|
|
138
|
+
parseDuration: `${totalDuration - apiDuration}ms`,
|
|
139
|
+
parsedKeys: Object.keys(parsed),
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return parsed;
|
|
86
144
|
} catch (error) {
|
|
145
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
146
|
+
console.error("[Groq] JSON parse failed:", {
|
|
147
|
+
error,
|
|
148
|
+
contentLength: content.length,
|
|
149
|
+
contentPreview: content.substring(0, 500) + "...",
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
87
153
|
throw new GroqError(
|
|
88
154
|
GroqErrorType.UNKNOWN_ERROR,
|
|
89
155
|
`Failed to parse JSON response: ${content}`,
|
|
@@ -99,8 +165,18 @@ export async function structuredChat<T = Record<string, unknown>>(
|
|
|
99
165
|
messages: GroqMessage[],
|
|
100
166
|
options: StructuredTextOptions<T> = {}
|
|
101
167
|
): Promise<T> {
|
|
168
|
+
const startTime = Date.now();
|
|
102
169
|
const model = options.model || DEFAULT_MODELS.TEXT;
|
|
103
170
|
|
|
171
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
172
|
+
console.log("[Groq] structuredChat called:", {
|
|
173
|
+
model,
|
|
174
|
+
messageCount: messages.length,
|
|
175
|
+
hasSchema: !!options.schema,
|
|
176
|
+
hasExample: !!options.example,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
104
180
|
let systemMessage: GroqMessage | null = null;
|
|
105
181
|
|
|
106
182
|
// Check if there's already a system message
|
|
@@ -137,7 +213,16 @@ export async function structuredChat<T = Record<string, unknown>>(
|
|
|
137
213
|
top_p: options.generationConfig?.topP || 0.9,
|
|
138
214
|
};
|
|
139
215
|
|
|
216
|
+
const apiStartTime = Date.now();
|
|
140
217
|
const response = await groqHttpClient.chatCompletion(request);
|
|
218
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
219
|
+
|
|
220
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
221
|
+
console.log("[Groq] structuredChat API response:", {
|
|
222
|
+
apiDuration: `${apiDuration}ms`,
|
|
223
|
+
usage: response.usage,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
141
226
|
|
|
142
227
|
let content = response.choices[0]?.message?.content;
|
|
143
228
|
if (!content) {
|
|
@@ -159,6 +244,14 @@ export async function structuredChat<T = Record<string, unknown>>(
|
|
|
159
244
|
}
|
|
160
245
|
content = content.trim();
|
|
161
246
|
|
|
247
|
+
const totalDuration = Date.now() - startTime;
|
|
248
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
249
|
+
console.log("[Groq] structuredChat complete:", {
|
|
250
|
+
totalDuration: `${totalDuration}ms`,
|
|
251
|
+
responseLength: content.length,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
162
255
|
try {
|
|
163
256
|
return JSON.parse(content) as T;
|
|
164
257
|
} catch (error) {
|
|
@@ -25,8 +25,18 @@ export async function textGeneration(
|
|
|
25
25
|
prompt: string,
|
|
26
26
|
options: TextGenerationOptions = {}
|
|
27
27
|
): Promise<string> {
|
|
28
|
+
const startTime = Date.now();
|
|
28
29
|
const model = options.model || DEFAULT_MODELS.TEXT;
|
|
29
30
|
|
|
31
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
32
|
+
console.log("[Groq] textGeneration called:", {
|
|
33
|
+
model,
|
|
34
|
+
promptLength: prompt.length,
|
|
35
|
+
promptPreview: prompt.substring(0, 100) + "...",
|
|
36
|
+
options: options.generationConfig,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
30
40
|
const messages: GroqMessage[] = [
|
|
31
41
|
{
|
|
32
42
|
role: "user",
|
|
@@ -46,7 +56,31 @@ export async function textGeneration(
|
|
|
46
56
|
presence_penalty: options.generationConfig?.presencePenalty,
|
|
47
57
|
};
|
|
48
58
|
|
|
59
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
60
|
+
console.log("[Groq] Sending request to API:", {
|
|
61
|
+
endpoint: "/v1/chat/completions",
|
|
62
|
+
requestBody: {
|
|
63
|
+
model: request.model,
|
|
64
|
+
messageCount: request.messages.length,
|
|
65
|
+
temperature: request.temperature,
|
|
66
|
+
max_tokens: request.max_tokens,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const apiStartTime = Date.now();
|
|
49
72
|
const response = await groqHttpClient.chatCompletion(request);
|
|
73
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
74
|
+
|
|
75
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
76
|
+
console.log("[Groq] API response received:", {
|
|
77
|
+
apiDuration: `${apiDuration}ms`,
|
|
78
|
+
hasChoices: !!response.choices?.length,
|
|
79
|
+
choiceCount: response.choices?.length || 0,
|
|
80
|
+
usage: response.usage,
|
|
81
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
50
84
|
|
|
51
85
|
const content = response.choices[0]?.message?.content;
|
|
52
86
|
if (!content) {
|
|
@@ -56,6 +90,15 @@ export async function textGeneration(
|
|
|
56
90
|
);
|
|
57
91
|
}
|
|
58
92
|
|
|
93
|
+
const totalDuration = Date.now() - startTime;
|
|
94
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
95
|
+
console.log("[Groq] textGeneration complete:", {
|
|
96
|
+
totalDuration: `${totalDuration}ms`,
|
|
97
|
+
responseLength: content.length,
|
|
98
|
+
responsePreview: content.substring(0, 200) + "...",
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
59
102
|
return content;
|
|
60
103
|
}
|
|
61
104
|
|
|
@@ -66,8 +109,17 @@ export async function chatGeneration(
|
|
|
66
109
|
messages: GroqMessage[],
|
|
67
110
|
options: TextGenerationOptions = {}
|
|
68
111
|
): Promise<string> {
|
|
112
|
+
const startTime = Date.now();
|
|
69
113
|
const model = options.model || DEFAULT_MODELS.TEXT;
|
|
70
114
|
|
|
115
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
116
|
+
console.log("[Groq] chatGeneration called:", {
|
|
117
|
+
model,
|
|
118
|
+
messageCount: messages.length,
|
|
119
|
+
options: options.generationConfig,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
71
123
|
const request: GroqChatRequest = {
|
|
72
124
|
model,
|
|
73
125
|
messages,
|
|
@@ -80,7 +132,17 @@ export async function chatGeneration(
|
|
|
80
132
|
presence_penalty: options.generationConfig?.presencePenalty,
|
|
81
133
|
};
|
|
82
134
|
|
|
135
|
+
const apiStartTime = Date.now();
|
|
83
136
|
const response = await groqHttpClient.chatCompletion(request);
|
|
137
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
138
|
+
|
|
139
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
140
|
+
console.log("[Groq] chatGeneration API response:", {
|
|
141
|
+
apiDuration: `${apiDuration}ms`,
|
|
142
|
+
usage: response.usage,
|
|
143
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
84
146
|
|
|
85
147
|
const content = response.choices[0]?.message?.content;
|
|
86
148
|
if (!content) {
|
|
@@ -90,5 +152,13 @@ export async function chatGeneration(
|
|
|
90
152
|
);
|
|
91
153
|
}
|
|
92
154
|
|
|
155
|
+
const totalDuration = Date.now() - startTime;
|
|
156
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
157
|
+
console.log("[Groq] chatGeneration complete:", {
|
|
158
|
+
totalDuration: `${totalDuration}ms`,
|
|
159
|
+
responseLength: content.length,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
93
163
|
return content;
|
|
94
164
|
}
|