@umituz/react-native-ai-groq-provider 1.0.27 → 1.0.29

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 (83) hide show
  1. package/dist/application/use-cases/chat-generation.usecase.d.ts +11 -0
  2. package/dist/application/use-cases/chat-generation.usecase.d.ts.map +1 -0
  3. package/dist/application/use-cases/chat-generation.usecase.js +40 -0
  4. package/dist/application/use-cases/chat-generation.usecase.js.map +1 -0
  5. package/dist/application/use-cases/chat-session.usecase.d.ts +41 -0
  6. package/dist/application/use-cases/chat-session.usecase.d.ts.map +1 -0
  7. package/dist/application/use-cases/chat-session.usecase.js +138 -0
  8. package/dist/application/use-cases/chat-session.usecase.js.map +1 -0
  9. package/dist/application/use-cases/streaming.usecase.d.ts +17 -0
  10. package/dist/application/use-cases/streaming.usecase.d.ts.map +1 -0
  11. package/dist/application/use-cases/streaming.usecase.js +46 -0
  12. package/dist/application/use-cases/streaming.usecase.js.map +1 -0
  13. package/dist/application/use-cases/structured-generation.usecase.d.ts +14 -0
  14. package/dist/application/use-cases/structured-generation.usecase.d.ts.map +1 -0
  15. package/dist/application/use-cases/structured-generation.usecase.js +77 -0
  16. package/dist/application/use-cases/structured-generation.usecase.js.map +1 -0
  17. package/dist/application/use-cases/text-generation.usecase.d.ts +11 -0
  18. package/dist/application/use-cases/text-generation.usecase.d.ts.map +1 -0
  19. package/dist/application/use-cases/text-generation.usecase.js +36 -0
  20. package/dist/application/use-cases/text-generation.usecase.js.map +1 -0
  21. package/dist/domain/entities/error.types.d.ts +3 -1
  22. package/dist/domain/entities/error.types.d.ts.map +1 -1
  23. package/dist/domain/entities/error.types.js +12 -2
  24. package/dist/domain/entities/error.types.js.map +1 -1
  25. package/dist/index.d.ts +20 -16
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +61 -39
  28. package/dist/index.js.map +1 -1
  29. package/dist/infrastructure/http/groq-http-client.d.ts +22 -0
  30. package/dist/infrastructure/http/groq-http-client.d.ts.map +1 -0
  31. package/dist/infrastructure/http/groq-http-client.js +166 -0
  32. package/dist/infrastructure/http/groq-http-client.js.map +1 -0
  33. package/dist/infrastructure/http/streaming-client.d.ts +12 -0
  34. package/dist/infrastructure/http/streaming-client.d.ts.map +1 -0
  35. package/dist/infrastructure/http/streaming-client.js +148 -0
  36. package/dist/infrastructure/http/streaming-client.js.map +1 -0
  37. package/dist/infrastructure/telemetry/TelemetryHooks.d.ts +16 -4
  38. package/dist/infrastructure/telemetry/TelemetryHooks.d.ts.map +1 -1
  39. package/dist/infrastructure/telemetry/TelemetryHooks.js +44 -11
  40. package/dist/infrastructure/telemetry/TelemetryHooks.js.map +1 -1
  41. package/dist/infrastructure/utils/async/execute-state.util.d.ts +6 -2
  42. package/dist/infrastructure/utils/async/execute-state.util.d.ts.map +1 -1
  43. package/dist/infrastructure/utils/async/execute-state.util.js +29 -4
  44. package/dist/infrastructure/utils/async/execute-state.util.js.map +1 -1
  45. package/dist/infrastructure/utils/calculation.util.d.ts +61 -0
  46. package/dist/infrastructure/utils/calculation.util.d.ts.map +1 -0
  47. package/dist/infrastructure/utils/calculation.util.js +165 -0
  48. package/dist/infrastructure/utils/calculation.util.js.map +1 -0
  49. package/dist/infrastructure/utils/content-mapper.util.d.ts +5 -1
  50. package/dist/infrastructure/utils/content-mapper.util.d.ts.map +1 -1
  51. package/dist/infrastructure/utils/content-mapper.util.js +17 -0
  52. package/dist/infrastructure/utils/content-mapper.util.js.map +1 -1
  53. package/dist/presentation/hooks/use-groq.hook.d.ts +26 -0
  54. package/dist/presentation/hooks/use-groq.hook.d.ts.map +1 -0
  55. package/dist/presentation/hooks/use-groq.hook.js +151 -0
  56. package/dist/presentation/hooks/use-groq.hook.js.map +1 -0
  57. package/dist/providers/ConfigBuilder.d.ts +1 -57
  58. package/dist/providers/ConfigBuilder.d.ts.map +1 -1
  59. package/dist/providers/ConfigBuilder.js +2 -68
  60. package/dist/providers/ConfigBuilder.js.map +1 -1
  61. package/dist/providers/ProviderFactory.d.ts +4 -34
  62. package/dist/providers/ProviderFactory.d.ts.map +1 -1
  63. package/dist/providers/ProviderFactory.js +9 -50
  64. package/dist/providers/ProviderFactory.js.map +1 -1
  65. package/dist/shared/logger.d.ts +26 -0
  66. package/dist/shared/logger.d.ts.map +1 -0
  67. package/dist/shared/logger.js +52 -0
  68. package/dist/shared/logger.js.map +1 -0
  69. package/dist/shared/request-builder.d.ts +17 -0
  70. package/dist/shared/request-builder.d.ts.map +1 -0
  71. package/dist/shared/request-builder.js +54 -0
  72. package/dist/shared/request-builder.js.map +1 -0
  73. package/dist/shared/response-handler.d.ts +38 -0
  74. package/dist/shared/response-handler.d.ts.map +1 -0
  75. package/dist/shared/response-handler.js +69 -0
  76. package/dist/shared/response-handler.js.map +1 -0
  77. package/dist/shared/timer.d.ts +20 -0
  78. package/dist/shared/timer.d.ts.map +1 -0
  79. package/dist/shared/timer.js +32 -0
  80. package/dist/shared/timer.js.map +1 -0
  81. package/package.json +1 -1
  82. package/src/application/use-cases/chat-generation.usecase.ts +55 -0
  83. package/src/index.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-builder.d.ts","sourceRoot":"","sources":["../../src/shared/request-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACZ,MAAM,+BAA+B,CAAC;AAGvC,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,gBAAgB,CACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,qBAA0B,GAClC,eAAe;IAwClB,MAAM,CAAC,kBAAkB,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,eAAe;IAKlB,MAAM,CAAC,wBAAwB,CAC7B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,eAAe;CAOnB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * Request Builder Utility
4
+ * Centralized request building logic
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RequestBuilder = void 0;
8
+ const groq_types_1 = require("../domain/entities/groq.types");
9
+ class RequestBuilder {
10
+ static buildChatRequest(messages, options = {}) {
11
+ const { model = groq_types_1.DEFAULT_MODELS.TEXT, generationConfig = {}, defaultTemperature = 0.7, defaultMaxTokens = 1024, } = options;
12
+ const request = {
13
+ model,
14
+ messages,
15
+ temperature: generationConfig.temperature !== undefined
16
+ ? generationConfig.temperature
17
+ : defaultTemperature,
18
+ max_tokens: generationConfig.maxTokens !== undefined
19
+ ? generationConfig.maxTokens
20
+ : defaultMaxTokens,
21
+ };
22
+ // Only include defined optional properties
23
+ // Map camelCase to snake_case for API
24
+ if (generationConfig.topP !== undefined) {
25
+ request.top_p = generationConfig.topP;
26
+ }
27
+ if (generationConfig.n !== undefined) {
28
+ request.n = generationConfig.n;
29
+ }
30
+ if (generationConfig.stop !== undefined) {
31
+ request.stop = generationConfig.stop;
32
+ }
33
+ if (generationConfig.frequencyPenalty !== undefined) {
34
+ request.frequency_penalty = generationConfig.frequencyPenalty;
35
+ }
36
+ if (generationConfig.presencePenalty !== undefined) {
37
+ request.presence_penalty = generationConfig.presencePenalty;
38
+ }
39
+ return request;
40
+ }
41
+ static buildPromptRequest(prompt, options = {}) {
42
+ const messages = [{ role: "user", content: prompt }];
43
+ return this.buildChatRequest(messages, options);
44
+ }
45
+ static buildSystemPromptRequest(systemPrompt, userPrompt, options = {}) {
46
+ const messages = [
47
+ { role: "system", content: systemPrompt },
48
+ { role: "user", content: userPrompt },
49
+ ];
50
+ return this.buildChatRequest(messages, options);
51
+ }
52
+ }
53
+ exports.RequestBuilder = RequestBuilder;
54
+ //# sourceMappingURL=request-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-builder.js","sourceRoot":"","sources":["../../src/shared/request-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,8DAA+D;AAS/D,MAAa,cAAc;IACzB,MAAM,CAAC,gBAAgB,CACrB,QAAuB,EACvB,UAAiC,EAAE;QAEnC,MAAM,EACJ,KAAK,GAAG,2BAAc,CAAC,IAAI,EAC3B,gBAAgB,GAAG,EAAE,EACrB,kBAAkB,GAAG,GAAG,EACxB,gBAAgB,GAAG,IAAI,GACxB,GAAG,OAAO,CAAC;QAEZ,MAAM,OAAO,GAAoB;YAC/B,KAAK;YACL,QAAQ;YACR,WAAW,EAAE,gBAAgB,CAAC,WAAW,KAAK,SAAS;gBACrD,CAAC,CAAC,gBAAgB,CAAC,WAAW;gBAC9B,CAAC,CAAC,kBAAkB;YACtB,UAAU,EAAE,gBAAgB,CAAC,SAAS,KAAK,SAAS;gBAClD,CAAC,CAAC,gBAAgB,CAAC,SAAS;gBAC5B,CAAC,CAAC,gBAAgB;SACrB,CAAC;QAEF,2CAA2C;QAC3C,sCAAsC;QACtC,IAAI,gBAAgB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACxC,CAAC;QACD,IAAI,gBAAgB,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACvC,CAAC;QACD,IAAI,gBAAgB,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QAChE,CAAC;QACD,IAAI,gBAAgB,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC;QAC9D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,kBAAkB,CACvB,MAAc,EACd,UAAiC,EAAE;QAEnC,MAAM,QAAQ,GAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,wBAAwB,CAC7B,YAAoB,EACpB,UAAkB,EAClB,UAAiC,EAAE;QAEnC,MAAM,QAAQ,GAAkB;YAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;SACtC,CAAC;QACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACF;AA/DD,wCA+DC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Response Handler Utility
3
+ * Handles API response parsing and extraction
4
+ */
5
+ import type { GroqChatResponse, GroqFinishReason } from "../domain/entities/groq.types";
6
+ interface Logger {
7
+ debug: (tag: string, message: string, context?: Record<string, unknown>) => void;
8
+ isEnabled?: () => boolean;
9
+ }
10
+ export interface ResponseHandlerResult {
11
+ content: string;
12
+ usage: {
13
+ promptTokens: number;
14
+ completionTokens: number;
15
+ totalTokens: number;
16
+ };
17
+ finishReason: GroqFinishReason;
18
+ }
19
+ export declare class ResponseHandler {
20
+ /**
21
+ * Extract content from chat completion response
22
+ */
23
+ static extractContent(response: GroqChatResponse): string;
24
+ /**
25
+ * Handle complete response and extract all relevant data
26
+ */
27
+ static handleResponse(response: GroqChatResponse): ResponseHandlerResult;
28
+ /**
29
+ * Extract usage information
30
+ */
31
+ private static extractUsage;
32
+ /**
33
+ * Log response details (only if logger is enabled)
34
+ */
35
+ static logResponse(logger: Logger, response: GroqChatResponse, apiMs: number): void;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../src/shared/response-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAa,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEnG,UAAU,MAAM;IACd,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;IAQzD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,qBAAqB;IAmBxE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAkBpF"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * Response Handler Utility
4
+ * Handles API response parsing and extraction
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ResponseHandler = void 0;
8
+ class ResponseHandler {
9
+ /**
10
+ * Extract content from chat completion response
11
+ */
12
+ static extractContent(response) {
13
+ const choices = response.choices;
14
+ if (!choices || choices.length === 0) {
15
+ return "";
16
+ }
17
+ return choices[0].message?.content || "";
18
+ }
19
+ /**
20
+ * Handle complete response and extract all relevant data
21
+ */
22
+ static handleResponse(response) {
23
+ const choices = response.choices;
24
+ if (!choices || choices.length === 0) {
25
+ return {
26
+ content: "",
27
+ usage: this.extractUsage(response.usage),
28
+ finishReason: "stop",
29
+ };
30
+ }
31
+ const choice = choices[0];
32
+ return {
33
+ content: choice.message?.content || "",
34
+ usage: this.extractUsage(response.usage),
35
+ finishReason: choice.finish_reason || "stop",
36
+ };
37
+ }
38
+ /**
39
+ * Extract usage information
40
+ */
41
+ static extractUsage(usage) {
42
+ return {
43
+ promptTokens: usage.prompt_tokens || 0,
44
+ completionTokens: usage.completion_tokens || 0,
45
+ totalTokens: usage.total_tokens || 0,
46
+ };
47
+ }
48
+ /**
49
+ * Log response details (only if logger is enabled)
50
+ */
51
+ static logResponse(logger, response, apiMs) {
52
+ // Early return if logging is disabled
53
+ if (logger.isEnabled && !logger.isEnabled()) {
54
+ return;
55
+ }
56
+ const choices = response.choices;
57
+ const firstChoice = choices?.[0];
58
+ logger.debug("ResponseHandler", "API response received", {
59
+ model: response.model,
60
+ promptTokens: response.usage.prompt_tokens,
61
+ completionTokens: response.usage.completion_tokens,
62
+ totalTokens: response.usage.total_tokens,
63
+ finishReason: firstChoice?.finish_reason,
64
+ apiDuration: `${apiMs}ms`,
65
+ });
66
+ }
67
+ }
68
+ exports.ResponseHandler = ResponseHandler;
69
+ //# sourceMappingURL=response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../src/shared/response-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmBH,MAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAA0B;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAA0B;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACxC,YAAY,EAAE,MAAM;aACrB,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM;SAC7C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,YAAY,CAAC,KAAgB;QAK1C,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACtC,gBAAgB,EAAE,KAAK,CAAC,iBAAiB,IAAI,CAAC;YAC9C,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;SACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAc,EAAE,QAA0B,EAAE,KAAa;QAC1E,sCAAsC;QACtC,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,uBAAuB,EAAE;YACvD,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;YAC1C,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB;YAClD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;YACxC,YAAY,EAAE,WAAW,EAAE,aAAa;YACxC,WAAW,EAAE,GAAG,KAAK,IAAI;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AAtED,0CAsEC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Timer Utility
3
+ * Performance measurement helper
4
+ */
5
+ export interface TimerResult {
6
+ totalMs: number;
7
+ apiMs: number;
8
+ processingMs: number;
9
+ }
10
+ export declare class Timer {
11
+ private startTime;
12
+ private apiStartTime?;
13
+ private apiEndTime?;
14
+ constructor();
15
+ startApiCall(): void;
16
+ endApiCall(): void;
17
+ getResult(): TimerResult;
18
+ static format(ms: number): string;
19
+ }
20
+ //# sourceMappingURL=timer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../src/shared/timer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAS;;IAM5B,YAAY,IAAI,IAAI;IAIpB,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,WAAW;IAWxB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;CAGlC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Timer Utility
4
+ * Performance measurement helper
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Timer = void 0;
8
+ class Timer {
9
+ constructor() {
10
+ this.startTime = Date.now();
11
+ }
12
+ startApiCall() {
13
+ this.apiStartTime = Date.now();
14
+ }
15
+ endApiCall() {
16
+ this.apiEndTime = Date.now();
17
+ }
18
+ getResult() {
19
+ const endTime = Date.now();
20
+ const totalMs = endTime - this.startTime;
21
+ const apiMs = this.apiEndTime && this.apiStartTime
22
+ ? this.apiEndTime - this.apiStartTime
23
+ : 0;
24
+ const processingMs = totalMs - apiMs;
25
+ return { totalMs, apiMs, processingMs };
26
+ }
27
+ static format(ms) {
28
+ return `${ms}ms`;
29
+ }
30
+ }
31
+ exports.Timer = Timer;
32
+ //# sourceMappingURL=timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer.js","sourceRoot":"","sources":["../../src/shared/timer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,MAAa,KAAK;IAKhB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY;YAChD,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY;YACrC,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC;QAErC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAU;QACtB,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;CACF;AA/BD,sBA+BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-ai-groq-provider",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "description": "Groq text generation provider for React Native applications",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./dist/index.d.ts",
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Chat Generation Use Case
3
+ * Simple stateless chat completion for single-turn conversations
4
+ */
5
+
6
+ import type { GroqMessage, GroqGenerationConfig } from "../../domain/entities/groq.types";
7
+ import { DEFAULT_MODELS } from "../../domain/entities/groq.types";
8
+ import { groqHttpClient } from "../../infrastructure/http/groq-http-client";
9
+ import { RequestBuilder } from "../../shared/request-builder";
10
+ import { ResponseHandler } from "../../shared/response-handler";
11
+ import { Timer } from "../../shared/timer";
12
+ import { logger } from "../../shared/logger";
13
+
14
+ export interface ChatGenerationOptions {
15
+ model?: string;
16
+ generationConfig?: GroqGenerationConfig;
17
+ }
18
+
19
+ export async function chatGeneration(
20
+ messages: GroqMessage[],
21
+ options: ChatGenerationOptions = {}
22
+ ): Promise<string> {
23
+ const timer = new Timer();
24
+
25
+ logger.debug("ChatGeneration", "Called", {
26
+ model: options.model,
27
+ messageCount: messages.length,
28
+ });
29
+
30
+ const request = RequestBuilder.buildChatRequest(messages, {
31
+ model: options.model || DEFAULT_MODELS.TEXT,
32
+ generationConfig: options.generationConfig,
33
+ });
34
+
35
+ logger.debug("ChatGeneration", "Sending request", {
36
+ endpoint: "/v1/chat/completions",
37
+ model: request.model,
38
+ });
39
+
40
+ timer.startApiCall();
41
+ const response = await groqHttpClient.chatCompletion(request);
42
+ timer.endApiCall();
43
+
44
+ const result = timer.getResult();
45
+ ResponseHandler.logResponse(logger, response, result.apiMs);
46
+
47
+ const handled = ResponseHandler.handleResponse(response);
48
+
49
+ logger.debug("ChatGeneration", "Complete", {
50
+ totalDuration: Timer.format(result.totalMs),
51
+ responseLength: handled.content.length,
52
+ });
53
+
54
+ return handled.content;
55
+ }
package/src/index.ts CHANGED
@@ -43,6 +43,7 @@ export {
43
43
  export { generateText, type TextGenerationOptions } from "./application/use-cases/text-generation.usecase";
44
44
  export { generateStructured, type StructuredGenerationOptions } from "./application/use-cases/structured-generation.usecase";
45
45
  export { streamText, type StreamingCallbacks, type StreamingOptions } from "./application/use-cases/streaming.usecase";
46
+ export { chatGeneration, type ChatGenerationOptions } from "./application/use-cases/chat-generation.usecase";
46
47
  export { chatSessionManager, type ChatSession, type ChatSendResult } from "./application/use-cases/chat-session.usecase";
47
48
 
48
49
  // Infrastructure Layer - Direct exports