@umituz/react-native-ai-generation-content 1.83.9 → 1.83.11

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 (202) hide show
  1. package/package.json +1 -1
  2. package/src/domain/constants/queue-status.constants.ts +0 -2
  3. package/src/domain/entities/flow-config-data.types.ts +0 -9
  4. package/src/domain/entities/flow-config.types.ts +2 -6
  5. package/src/domain/entities/flow-configuration.types.ts +1 -8
  6. package/src/domain/interfaces/app-services.interface.ts +2 -2
  7. package/src/domain/interfaces/index.ts +0 -8
  8. package/src/domains/background/infrastructure/services/job-poller.service.ts +0 -1
  9. package/src/domains/background/infrastructure/utils/result-validator.util.ts +0 -1
  10. package/src/domains/background/infrastructure/utils/status-checker.util.ts +0 -1
  11. package/src/domains/background/infrastructure/utils/status-extraction-helpers.ts +1 -1
  12. package/src/domains/content-moderation/infrastructure/utils/content-security.util.ts +1 -1
  13. package/src/domains/creations/domain/constants/creation-fields.constants.ts +1 -10
  14. package/src/domains/creations/domain/constants/creation-status.constants.ts +0 -20
  15. package/src/domains/creations/domain/constants/creation-validation.constants.ts +0 -12
  16. package/src/domains/creations/domain/constants/index.ts +3 -15
  17. package/src/domains/creations/domain/entities/index.ts +1 -1
  18. package/src/domains/creations/infrastructure/repositories/creation-update.operations.ts +0 -2
  19. package/src/domains/creations/infrastructure/repositories/creations-operations.ts +1 -1
  20. package/src/domains/creations/presentation/components/CreationCard.tsx +3 -3
  21. package/src/domains/creations/presentation/components/CreationImagePreview.tsx +1 -1
  22. package/src/domains/creations/presentation/components/CreationVideoPreview.tsx +1 -1
  23. package/src/domains/creations/presentation/components/CreationsFilterBar.tsx +0 -1
  24. package/src/domains/creations/presentation/components/GalleryEmptyStates.tsx +4 -4
  25. package/src/domains/creations/presentation/components/GalleryHeader.tsx +3 -1
  26. package/src/domains/creations/presentation/components/GalleryScreenHeader.tsx +1 -1
  27. package/src/domains/creations/presentation/components/index.ts +0 -23
  28. package/src/domains/creations/presentation/hooks/creation-validators.ts +4 -4
  29. package/src/domains/creations/presentation/hooks/filterHelpers.ts +5 -5
  30. package/src/domains/creations/presentation/hooks/useFilter.ts +2 -2
  31. package/src/domains/creations/presentation/hooks/useGalleryCallbacks.ts +1 -1
  32. package/src/domains/creations/presentation/hooks/useGalleryState.ts +2 -2
  33. package/src/domains/creations/presentation/screens/CreationsGalleryScreen.tsx +0 -1
  34. package/src/domains/creations/presentation/utils/filter-buttons.util.ts +2 -2
  35. package/src/domains/creations/presentation-exports.ts +5 -3
  36. package/src/domains/face-detection/presentation/components/FaceValidationStatus.tsx +1 -1
  37. package/src/domains/generation/infrastructure/executors/text-to-image-executor.helpers.ts +1 -1
  38. package/src/domains/generation/wizard/infrastructure/strategies/image-generation.strategy.ts +0 -2
  39. package/src/domains/generation/wizard/infrastructure/strategies/image-generation.types.ts +0 -4
  40. package/src/domains/generation/wizard/infrastructure/strategies/index.ts +0 -1
  41. package/src/domains/generation/wizard/infrastructure/strategies/shared/unified-prompt-builder.ts +1 -1
  42. package/src/domains/generation/wizard/infrastructure/strategies/video-generation.strategy.ts +0 -1
  43. package/src/domains/generation/wizard/infrastructure/strategies/video-generation.types.ts +2 -6
  44. package/src/domains/generation/wizard/infrastructure/strategies/wizard-strategy.constants.ts +0 -7
  45. package/src/domains/generation/wizard/infrastructure/strategies/wizard-strategy.factory.ts +1 -3
  46. package/src/domains/generation/wizard/infrastructure/utils/creation-persistence.util.ts +0 -5
  47. package/src/domains/generation/wizard/infrastructure/utils/index.ts +0 -3
  48. package/src/domains/generation/wizard/infrastructure/utils/primitive-extractors.ts +3 -3
  49. package/src/domains/generation/wizard/presentation/components/IndeterminateProgressBar.tsx +1 -1
  50. package/src/domains/generation/wizard/presentation/components/WizardContinueButton.tsx +1 -1
  51. package/src/domains/generation/wizard/presentation/components/WizardFlowContent.tsx +1 -1
  52. package/src/domains/generation/wizard/presentation/components/WizardStepRenderer.tsx +0 -2
  53. package/src/domains/generation/wizard/presentation/components/WizardStepRenderer.utils.ts +0 -7
  54. package/src/domains/generation/wizard/presentation/components/index.ts +0 -2
  55. package/src/domains/generation/wizard/presentation/components/step-renderers/renderPhotoUploadStep.tsx +1 -1
  56. package/src/domains/generation/wizard/presentation/components/step-renderers/renderPreviewStep.tsx +1 -1
  57. package/src/domains/generation/wizard/presentation/components/step-renderers/renderSelectionStep.tsx +1 -1
  58. package/src/domains/generation/wizard/presentation/components/step-renderers/renderTextInputStep.tsx +1 -1
  59. package/src/domains/generation/wizard/presentation/hooks/generationStateMachine.ts +2 -2
  60. package/src/domains/generation/wizard/presentation/hooks/useGenerationPhase.ts +1 -1
  61. package/src/domains/generation/wizard/presentation/hooks/usePhotoBlockingGeneration.ts +2 -2
  62. package/src/domains/generation/wizard/presentation/hooks/useWizardFlowHandlers.ts +1 -1
  63. package/src/domains/generation/wizard/presentation/screens/GeneratingScreen.tsx +1 -1
  64. package/src/domains/generation/wizard/presentation/screens/GenericPhotoUploadScreen.tsx +3 -3
  65. package/src/domains/generation/wizard/presentation/screens/SelectionScreen.tsx +0 -6
  66. package/src/domains/generation/wizard/presentation/screens/TextInputScreen.tsx +5 -3
  67. package/src/domains/generation/wizard/presentation/screens/index.ts +0 -13
  68. package/src/domains/generation/wizard/presentation/utilities/validateScenario.ts +0 -6
  69. package/src/domains/image-to-video/presentation/hooks/image-to-video-feature.types.ts +0 -8
  70. package/src/domains/image-to-video/presentation/index.ts +0 -4
  71. package/src/domains/result-preview/presentation/components/StarRatingPicker.tsx +1 -1
  72. package/src/domains/result-preview/presentation/types/result-preview.types.ts +0 -5
  73. package/src/domains/scenarios/configs/index.ts +1 -6
  74. package/src/domains/scenarios/configs/wizard-step-factories.ts +1 -1
  75. package/src/domains/scenarios/infrastructure/scenario-registry.ts +0 -9
  76. package/src/domains/scenarios/presentation/components/ScenarioContinueButton.tsx +1 -1
  77. package/src/domains/scenarios/presentation/hooks/useHierarchicalScenarios.ts +2 -2
  78. package/src/domains/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +1 -1
  79. package/src/domains/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +2 -2
  80. package/src/domains/shared/presentation/components/AutoSkipPreview.tsx +1 -1
  81. package/src/domains/shared/presentation/components/index.ts +0 -1
  82. package/src/domains/shared/presentation/utils/index.ts +0 -3
  83. package/src/domains/shared/presentation/utils/wizard-flow.utils.ts +2 -2
  84. package/src/domains/text-to-image/presentation/index.ts +0 -2
  85. package/src/domains/text-to-video/domain/types/component.types.ts +0 -6
  86. package/src/domains/text-to-video/domain/types/index.ts +0 -4
  87. package/src/domains/text-to-video/presentation/components/FrameSelector.tsx +97 -52
  88. package/src/domains/text-to-video/presentation/index.ts +0 -2
  89. package/src/exports/domain.ts +1 -1
  90. package/src/index.ts +25 -2
  91. package/src/infrastructure/config/index.ts +0 -2
  92. package/src/infrastructure/constants/index.ts +0 -6
  93. package/src/infrastructure/constants/polling.constants.ts +0 -21
  94. package/src/infrastructure/constants/validation.constants.ts +0 -30
  95. package/src/infrastructure/utils/error-classification.ts +1 -1
  96. package/src/infrastructure/utils/error-factory.ts +2 -2
  97. package/src/infrastructure/utils/index.ts +0 -9
  98. package/src/infrastructure/utils/message-extractor.ts +1 -20
  99. package/src/infrastructure/utils/progress.utils.ts +0 -37
  100. package/src/infrastructure/utils/provider-validator.util.ts +1 -1
  101. package/src/infrastructure/utils/url-extractor/index.ts +0 -5
  102. package/src/infrastructure/utils/url-extractor.util.ts +0 -11
  103. package/src/infrastructure/utils/video-helpers.ts +1 -1
  104. package/src/infrastructure/validation/ai-validator.ts +0 -28
  105. package/src/infrastructure/validation/entity-validator.ts +0 -34
  106. package/src/infrastructure/validation/input-validator.ts +2 -5
  107. package/src/infrastructure/validation/sanitizer.ts +0 -17
  108. package/src/presentation/components/AIGenerationConfig.tsx +3 -1
  109. package/src/presentation/components/GenerationProgressContent.styles.ts +0 -2
  110. package/src/presentation/components/PhotoUploadCard/PhotoUploadCard.tsx +0 -1
  111. package/src/presentation/components/ProgressCloseButton.tsx +1 -1
  112. package/src/presentation/components/ProgressDismissButton.tsx +1 -1
  113. package/src/presentation/components/ProgressHeader.tsx +1 -1
  114. package/src/presentation/components/ProgressHint.tsx +1 -1
  115. package/src/presentation/components/display/AIGenerationResult.tsx +6 -4
  116. package/src/presentation/components/display/index.ts +0 -1
  117. package/src/presentation/components/moderation/ModerationSummary.tsx +2 -2
  118. package/src/presentation/components/prompts/ExamplePrompts.tsx +2 -2
  119. package/src/presentation/components/result/ResultImageCard.tsx +39 -21
  120. package/src/presentation/components/result/ResultStoryCard.tsx +38 -15
  121. package/src/presentation/components/result/button-style.utils.ts +1 -1
  122. package/src/presentation/components/selectors/GridSelector.tsx +2 -2
  123. package/src/presentation/components/selectors/factories/aspect-ratio.factory.ts +0 -2
  124. package/src/presentation/components/selectors/factories/duration.factory.ts +0 -2
  125. package/src/presentation/components/selectors/factories/style.factory.ts +1 -1
  126. package/src/presentation/components/shared/ModelSelector.tsx +3 -1
  127. package/src/presentation/hooks/ai-feature-callbacks-auth.hooks.ts +2 -2
  128. package/src/presentation/hooks/ai-feature-callbacks-cost.hooks.ts +2 -2
  129. package/src/presentation/hooks/ai-feature-callbacks-execution.hooks.ts +2 -2
  130. package/src/presentation/hooks/generation/index.ts +0 -5
  131. package/src/presentation/hooks/generation/moderation-handler.ts +1 -1
  132. package/src/presentation/hooks/generation/types.ts +0 -12
  133. package/src/presentation/hooks/index.ts +0 -4
  134. package/src/presentation/hooks/useProgressDismiss.ts +1 -1
  135. package/src/presentation/layouts/types/layout-props.ts +1 -1
  136. package/src/domain/constants/index.ts +0 -2
  137. package/src/domain/entities/feature-flow-config.types.ts +0 -17
  138. package/src/domain/entities/scenario-step-config.types.ts +0 -32
  139. package/src/domain/entities/step-config.types.ts +0 -18
  140. package/src/domain/entities/step-definition.types.ts +0 -50
  141. package/src/domain/entities/step-input-config.types.ts +0 -36
  142. package/src/domain/entities/step-upload-config.types.ts +0 -17
  143. package/src/domains/background/domain/entities/index.ts +0 -1
  144. package/src/domains/background/domain/interfaces/index.ts +0 -1
  145. package/src/domains/content-moderation/infrastructure/utils/validators.util.ts +0 -51
  146. package/src/domains/creations/domain/constants/creation-errors.constants.ts +0 -27
  147. package/src/domains/creations/domain/constants/creation-query.constants.ts +0 -37
  148. package/src/domains/creations/domain/constants/creation-types.constants.ts +0 -45
  149. package/src/domains/creations/presentation/components/CreationImageViewer.tsx +0 -43
  150. package/src/domains/creations/presentation/components/CreationRating.tsx +0 -69
  151. package/src/domains/creations/presentation/components/CreationsGrid.tsx +0 -130
  152. package/src/domains/creations/presentation/components/FilterSheets.tsx +0 -63
  153. package/src/domains/creations/presentation/hooks/index.ts +0 -24
  154. package/src/domains/creations/presentation/hooks/useCreationRating.ts +0 -68
  155. package/src/domains/creations/presentation/screens/index.ts +0 -5
  156. package/src/domains/generation/infrastructure/flow/scenario-configs.ts +0 -54
  157. package/src/domains/generation/infrastructure/flow/step-builders.ts +0 -133
  158. package/src/domains/generation/wizard/infrastructure/strategies/video-generation.utils.ts +0 -42
  159. package/src/domains/generation/wizard/presentation/components/WizardHeader.tsx +0 -96
  160. package/src/domains/generation/wizard/presentation/components/step-renderers/index.ts +0 -8
  161. package/src/domains/generation/wizard/presentation/components/step-renderers/renderGeneratingStep.tsx +0 -24
  162. package/src/domains/generation/wizard/presentation/components/step-renderers/renderResultStep.tsx +0 -69
  163. package/src/domains/generation/wizard/presentation/utilities/index.ts +0 -1
  164. package/src/domains/prompts/infrastructure/services/base/index.ts +0 -6
  165. package/src/domains/prompts/infrastructure/services/base/prompt-service.base.ts +0 -112
  166. package/src/domains/result-preview/index.ts +0 -37
  167. package/src/domains/result-preview/presentation/components/GenerationErrorScreen.tsx +0 -109
  168. package/src/domains/result-preview/presentation/components/index.ts +0 -16
  169. package/src/domains/result-preview/presentation/hooks/index.ts +0 -5
  170. package/src/domains/result-preview/presentation/types/index.ts +0 -16
  171. package/src/domains/result-preview/presentation/types/result-data.types.ts +0 -35
  172. package/src/domains/text-to-image/presentation/screens/TextToImageWizardFlow.types.ts +0 -27
  173. package/src/domains/text-to-video/domain/types/action-component.types.ts +0 -15
  174. package/src/domains/text-to-video/domain/types/selector-component.types.ts +0 -31
  175. package/src/infrastructure/constants/content.constants.ts +0 -8
  176. package/src/infrastructure/constants/storage.constants.ts +0 -27
  177. package/src/infrastructure/http/api-client.types.ts +0 -17
  178. package/src/infrastructure/http/http-client-methods.ts +0 -73
  179. package/src/infrastructure/http/http-client.util.ts +0 -12
  180. package/src/infrastructure/http/http-fetch-handler.ts +0 -63
  181. package/src/infrastructure/http/http-methods.constants.ts +0 -23
  182. package/src/infrastructure/http/http-request-executor.ts +0 -49
  183. package/src/infrastructure/http/http-response-parser.ts +0 -65
  184. package/src/infrastructure/http/index.ts +0 -16
  185. package/src/infrastructure/http/query-string.util.ts +0 -40
  186. package/src/infrastructure/http/timeout.util.ts +0 -26
  187. package/src/infrastructure/logging/debug.util.ts +0 -51
  188. package/src/infrastructure/logging/index.ts +0 -6
  189. package/src/infrastructure/utils/content-validators.ts +0 -92
  190. package/src/infrastructure/utils/domain-guards.ts +0 -23
  191. package/src/infrastructure/utils/error-classifiers.ts +0 -23
  192. package/src/infrastructure/utils/error-handlers.ts +0 -53
  193. package/src/infrastructure/utils/error-retry.ts +0 -44
  194. package/src/infrastructure/utils/error-types.ts +0 -23
  195. package/src/infrastructure/utils/general-validators.ts +0 -64
  196. package/src/infrastructure/utils/id-validators.ts +0 -39
  197. package/src/infrastructure/utils/primitive-guards.ts +0 -66
  198. package/src/infrastructure/utils/structure-guards.ts +0 -75
  199. package/src/infrastructure/utils/type-guards.util.ts +0 -26
  200. package/src/infrastructure/utils/validation-types.ts +0 -8
  201. package/src/infrastructure/utils/validation.util.ts +0 -18
  202. package/src/shared/utils/index.ts +0 -6
@@ -1,27 +0,0 @@
1
- /**
2
- * Storage Constants
3
- * Database and storage related constants
4
- */
5
-
6
- import { env } from "../config/env.config";
7
-
8
- /** Maximum number of creations to fetch in one query */
9
- export const MAX_CREATIONS_FETCH_LIMIT = 100;
10
-
11
- /** Default number of creations per page */
12
- export const DEFAULT_CREATIONS_PAGE_SIZE = 20;
13
-
14
- /** Maximum number of logs to keep in memory */
15
- export const MAX_LOG_ENTRIES = 1000;
16
-
17
- /** Timeout for database operations (milliseconds) */
18
- export const DB_OPERATION_TIMEOUT_MS = env.storageDbOperationTimeoutMs;
19
-
20
- /** Maximum cache size for frequently accessed data */
21
- export const MAX_CACHE_SIZE = env.storageMaxCacheSize;
22
-
23
- /** Cache TTL for creations (milliseconds) - 5 minutes */
24
- export const CREATIONS_CACHE_TTL_MS = 5 * 60 * 1000;
25
-
26
- /** Cache TTL for user data (milliseconds) - 10 minutes */
27
- export const USER_DATA_CACHE_TTL_MS = 10 * 60 * 1000;
@@ -1,17 +0,0 @@
1
- /**
2
- * API Client Types
3
- * Type definitions for HTTP client utilities
4
- */
5
-
6
- export interface RequestOptions extends RequestInit {
7
- timeout?: number;
8
- retries?: number;
9
- headers?: Record<string, string>;
10
- }
11
-
12
- export interface ApiResponse<T> {
13
- data: T | null;
14
- error: string | null;
15
- status: number;
16
- headers: Headers;
17
- }
@@ -1,73 +0,0 @@
1
- /**
2
- * HTTP Client Methods
3
- * Infrastructure: Public API for HTTP operations
4
- */
5
-
6
- import type { RequestOptions, ApiResponse } from "./api-client.types";
7
- import { fetchWithTimeout } from "./http-fetch-handler";
8
- import { HTTP_METHOD } from "./http-methods.constants";
9
-
10
- /**
11
- * Makes a GET request
12
- */
13
- export async function get<T>(
14
- url: string,
15
- options: Omit<RequestOptions, "method" | "body"> = {}
16
- ): Promise<ApiResponse<T>> {
17
- return fetchWithTimeout<T>(url, { ...options, method: HTTP_METHOD.GET });
18
- }
19
-
20
- /**
21
- * Makes a POST request
22
- */
23
- export async function post<T>(
24
- url: string,
25
- data: unknown,
26
- options: Omit<RequestOptions, "method"> = {}
27
- ): Promise<ApiResponse<T>> {
28
- return fetchWithTimeout<T>(url, {
29
- ...options,
30
- method: HTTP_METHOD.POST,
31
- body: JSON.stringify(data),
32
- });
33
- }
34
-
35
- /**
36
- * Makes a PUT request
37
- */
38
- export async function put<T>(
39
- url: string,
40
- data: unknown,
41
- options: Omit<RequestOptions, "method"> = {}
42
- ): Promise<ApiResponse<T>> {
43
- return fetchWithTimeout<T>(url, {
44
- ...options,
45
- method: HTTP_METHOD.PUT,
46
- body: JSON.stringify(data),
47
- });
48
- }
49
-
50
- /**
51
- * Makes a DELETE request
52
- */
53
- export async function del<T>(
54
- url: string,
55
- options: Omit<RequestOptions, "method" | "body"> = {}
56
- ): Promise<ApiResponse<T>> {
57
- return fetchWithTimeout<T>(url, { ...options, method: HTTP_METHOD.DELETE });
58
- }
59
-
60
- /**
61
- * Makes a PATCH request
62
- */
63
- export async function patch<T>(
64
- url: string,
65
- data: unknown,
66
- options: Omit<RequestOptions, "method"> = {}
67
- ): Promise<ApiResponse<T>> {
68
- return fetchWithTimeout<T>(url, {
69
- ...options,
70
- method: HTTP_METHOD.PATCH,
71
- body: JSON.stringify(data),
72
- });
73
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * HTTP Client Utilities - Barrel Export
3
- * Core HTTP request handling with error handling and retry logic
4
- *
5
- * Architecture:
6
- * - Domain: HTTP methods, content types (constants)
7
- * - Infrastructure: Request execution, response parsing, error handling
8
- */
9
-
10
- export { HTTP_METHOD, HTTP_CONTENT_TYPE, DEFAULT_HEADERS, type HttpMethod } from "./http-methods.constants";
11
- export { fetchWithTimeout } from "./http-fetch-handler";
12
- export { get, post, put, del, patch } from "./http-client-methods";
@@ -1,63 +0,0 @@
1
- /**
2
- * HTTP Fetch Handler
3
- * Infrastructure: Orchestrates request execution with error handling
4
- */
5
-
6
- import { withErrorHandling } from "../utils/error-handlers";
7
- import { getErrorMessage } from "../utils/message-extractor";
8
- import { retryWithBackoff } from "../utils/error-retry";
9
- import { isNetworkError } from "../utils/error-classifiers";
10
- import { env } from "../config/env.config";
11
- import type { RequestOptions, ApiResponse } from "./api-client.types";
12
- import { executeRequest, isSuccessResponse, extractErrorMessage } from "./http-request-executor";
13
- import { parseResponse, createSuccessResponse, createErrorResponse } from "./http-response-parser";
14
-
15
-
16
- /**
17
- * Fetches data with timeout, retry, and error handling
18
- */
19
- export async function fetchWithTimeout<T>(
20
- url: string,
21
- options: RequestOptions = {}
22
- ): Promise<ApiResponse<T>> {
23
- const { retries = 0 } = options;
24
-
25
- const operation = async (): Promise<T> => {
26
- const response = await executeRequest(url, options);
27
-
28
- if (!isSuccessResponse(response)) {
29
- const errorMessage = await extractErrorMessage(response);
30
- throw new Error(errorMessage);
31
- }
32
-
33
- return parseResponse<T>(response);
34
- };
35
-
36
- const result = await withErrorHandling(
37
- async () => {
38
- if (retries > 0) {
39
- return retryWithBackoff(operation, {
40
- maxRetries: retries,
41
- delayMs: env.apiRetryDelayMs,
42
- shouldRetry: (error) => isNetworkError(error),
43
- });
44
- }
45
- return operation();
46
- },
47
- (error) => {
48
- if (typeof __DEV__ !== "undefined" && __DEV__) {
49
- console.error("[API Client] Request failed:", error);
50
- }
51
- }
52
- );
53
-
54
- if (result.error) {
55
- return createErrorResponse(getErrorMessage(result.error));
56
- }
57
-
58
- if (result.data === undefined) {
59
- return createErrorResponse("No data received from server");
60
- }
61
-
62
- return createSuccessResponse(result.data);
63
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * HTTP Methods Constants
3
- * Domain knowledge: Standard HTTP methods
4
- */
5
-
6
- export const HTTP_METHOD = {
7
- GET: "GET",
8
- POST: "POST",
9
- PUT: "PUT",
10
- DELETE: "DELETE",
11
- PATCH: "PATCH",
12
- } as const;
13
-
14
- export type HttpMethod = typeof HTTP_METHOD[keyof typeof HTTP_METHOD];
15
-
16
- export const HTTP_CONTENT_TYPE = {
17
- JSON: "application/json",
18
- TEXT: "text/plain",
19
- } as const;
20
-
21
- export const DEFAULT_HEADERS = {
22
- "Content-Type": HTTP_CONTENT_TYPE.JSON,
23
- } as const;
@@ -1,49 +0,0 @@
1
- /**
2
- * HTTP Request Executor
3
- * Infrastructure: Handles low-level fetch operations
4
- */
5
-
6
- import { env } from "../config/env.config";
7
- import { createTimeoutController } from "./timeout.util";
8
- import { DEFAULT_HEADERS } from "./http-methods.constants";
9
- import type { RequestOptions } from "./api-client.types";
10
-
11
- /**
12
- * Executes HTTP request with timeout
13
- */
14
- export async function executeRequest(
15
- url: string,
16
- options: RequestOptions = {}
17
- ): Promise<Response> {
18
- const {
19
- timeout = env.apiDefaultTimeoutMs,
20
- headers = {},
21
- ...fetchOptions
22
- } = options;
23
-
24
- const controller = createTimeoutController(timeout);
25
-
26
- return fetch(url, {
27
- ...fetchOptions,
28
- headers: {
29
- ...DEFAULT_HEADERS,
30
- ...headers,
31
- },
32
- signal: controller?.signal,
33
- });
34
- }
35
-
36
- /**
37
- * Checks if response is successful
38
- */
39
- export function isSuccessResponse(response: Response): boolean {
40
- return response.ok;
41
- }
42
-
43
- /**
44
- * Extracts error message from failed response
45
- */
46
- export async function extractErrorMessage(response: Response): Promise<string> {
47
- const errorText = await response.text().catch(() => "Unknown error");
48
- return `HTTP ${response.status}: ${errorText}`;
49
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * HTTP Response Parser
3
- * Infrastructure: Parses HTTP responses to typed data
4
- */
5
-
6
- import { HTTP_CONTENT_TYPE } from "./http-methods.constants";
7
-
8
- /**
9
- * Parses response based on content type
10
- * Note: Type T is not validated at runtime - caller must ensure type safety
11
- */
12
- export async function parseResponse<T>(response: Response): Promise<T> {
13
- const contentType = response.headers.get("content-type");
14
-
15
- if (contentType?.includes(HTTP_CONTENT_TYPE.JSON)) {
16
- try {
17
- return await response.json();
18
- } catch (error) {
19
- throw new Error(`Failed to parse JSON response: ${error instanceof Error ? error.message : 'Unknown error'}`);
20
- }
21
- }
22
-
23
- // For non-JSON responses, return text
24
- // WARNING: Type T is not validated - caller is responsible for type safety
25
- try {
26
- const text = await response.text();
27
- return text as T;
28
- } catch (error) {
29
- throw new Error(`Failed to parse text response: ${error instanceof Error ? error.message : 'Unknown error'}`);
30
- }
31
- }
32
-
33
- /**
34
- * Creates successful API response
35
- */
36
- export function createSuccessResponse<T>(data: T): {
37
- data: T;
38
- error: null;
39
- status: number;
40
- headers: Headers;
41
- } {
42
- return {
43
- data,
44
- error: null,
45
- status: 200,
46
- headers: new Headers(),
47
- };
48
- }
49
-
50
- /**
51
- * Creates error API response
52
- */
53
- export function createErrorResponse(errorMessage: string): {
54
- data: null;
55
- error: string;
56
- status: number;
57
- headers: Headers;
58
- } {
59
- return {
60
- data: null,
61
- error: errorMessage,
62
- status: 0,
63
- headers: new Headers(),
64
- };
65
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * HTTP Client Module
3
- * Exports all HTTP client utilities
4
- */
5
-
6
- export type { RequestOptions, ApiResponse } from "./api-client.types";
7
- export {
8
- get,
9
- post,
10
- put,
11
- del,
12
- patch,
13
- fetchWithTimeout,
14
- } from "./http-client.util";
15
- export { buildQueryString, appendQueryParams } from "./query-string.util";
16
- export { createTimeoutController } from "./timeout.util";
@@ -1,40 +0,0 @@
1
- /**
2
- * Query String Utilities
3
- * Helper functions for building and manipulating query strings
4
- */
5
-
6
- /**
7
- * Builds query string from object
8
- * @param params - Object with query parameters
9
- * @returns Query string (without leading ?)
10
- */
11
- export function buildQueryString(params: Record<string, unknown>): string {
12
- const searchParams = new URLSearchParams();
13
-
14
- Object.entries(params).forEach(([key, value]) => {
15
- if (value !== null && value !== undefined) {
16
- searchParams.append(key, String(value));
17
- }
18
- });
19
-
20
- return searchParams.toString();
21
- }
22
-
23
- /**
24
- * Appends query parameters to URL
25
- * @param url - Base URL
26
- * @param params - Query parameters to append
27
- * @returns URL with query parameters
28
- */
29
- export function appendQueryParams(
30
- url: string,
31
- params: Record<string, unknown>
32
- ): string {
33
- const queryString = buildQueryString(params);
34
- if (!queryString) {
35
- return url;
36
- }
37
-
38
- const separator = url.includes("?") ? "&" : "?";
39
- return `${url}${separator}${queryString}`;
40
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Timeout Controller Utility
3
- * Creates AbortController instances with timeout support
4
- */
5
-
6
- /**
7
- * Creates an AbortController with timeout
8
- * @param timeout - Timeout in milliseconds
9
- * @returns AbortController instance or undefined if no timeout specified
10
- */
11
- export function createTimeoutController(
12
- timeout?: number
13
- ): AbortController | undefined {
14
- if (!timeout) {
15
- return undefined;
16
- }
17
-
18
- const controller = new AbortController();
19
- const timeoutId = setTimeout(() => controller.abort(), timeout);
20
-
21
- controller.signal.addEventListener('abort', () => {
22
- clearTimeout(timeoutId);
23
- }, { once: true });
24
-
25
- return controller;
26
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * Debug logging utility with __DEV__ guard
3
- * Centralized debug logging for development
4
- */
5
-
6
- type LogLevel = "log" | "warn" | "error" | "info";
7
-
8
- export interface DebugOptions {
9
- readonly tag?: string;
10
- }
11
-
12
- /** Single source of truth for development environment detection */
13
- export const isDev = typeof __DEV__ !== "undefined" && __DEV__;
14
-
15
- function formatMessage(tag: string | undefined, message: string): string {
16
- return tag ? `[${tag}] ${message}` : message;
17
- }
18
-
19
- function log(level: LogLevel, tag: string | undefined, message: string, ...args: readonly unknown[]): void {
20
- if (!isDev) return;
21
-
22
- const formattedMessage = formatMessage(tag, message);
23
-
24
- switch (level) {
25
- case "error":
26
- console.error(formattedMessage, ...args);
27
- break;
28
- case "warn":
29
- console.warn(formattedMessage, ...args);
30
- break;
31
- case "info":
32
- console.info(formattedMessage, ...args);
33
- break;
34
- default:
35
- console.log(formattedMessage, ...args);
36
- }
37
- }
38
-
39
- export const debug = {
40
- log: (message: string, options?: DebugOptions, ...args: readonly unknown[]): void =>
41
- log("log", options?.tag, message, ...args),
42
-
43
- warn: (message: string, options?: DebugOptions, ...args: readonly unknown[]): void =>
44
- log("warn", options?.tag, message, ...args),
45
-
46
- error: (message: string, options?: DebugOptions, ...args: readonly unknown[]): void =>
47
- log("error", options?.tag, message, ...args),
48
-
49
- info: (message: string, options?: DebugOptions, ...args: readonly unknown[]): void =>
50
- log("info", options?.tag, message, ...args),
51
- };
@@ -1,6 +0,0 @@
1
- /**
2
- * Logging utilities
3
- */
4
-
5
- export { debug, isDev } from "./debug.util";
6
- export type { DebugOptions } from "./debug.util";
@@ -1,92 +0,0 @@
1
- /**
2
- * Content Validation Utilities
3
- */
4
-
5
- import {
6
- MAX_PROMPT_LENGTH,
7
- MIN_PROMPT_LENGTH,
8
- MAX_URL_LENGTH,
9
- MIN_VIDEO_DURATION_SECONDS,
10
- MAX_VIDEO_DURATION_SECONDS,
11
- } from "../constants/validation.constants";
12
- import type { ValidationResult } from "./validation-types";
13
-
14
- /**
15
- * Validates text prompt length
16
- */
17
- export function validatePrompt(prompt: string): ValidationResult {
18
- if (!prompt || typeof prompt !== "string") {
19
- return { isValid: false, error: "Prompt is required" };
20
- }
21
-
22
- if (prompt.length < MIN_PROMPT_LENGTH) {
23
- return { isValid: false, error: "Prompt is too short" };
24
- }
25
-
26
- if (prompt.length > MAX_PROMPT_LENGTH) {
27
- return { isValid: false, error: "Prompt is too long" };
28
- }
29
-
30
- return { isValid: true };
31
- }
32
-
33
- /**
34
- * Validates URL format
35
- */
36
- export function validateUrl(url: string): ValidationResult {
37
- if (!url || typeof url !== "string") {
38
- return { isValid: false, error: "URL is required" };
39
- }
40
-
41
- if (url.length > MAX_URL_LENGTH) {
42
- return { isValid: false, error: "URL is too long" };
43
- }
44
-
45
- try {
46
- new URL(url);
47
- return { isValid: true };
48
- } catch {
49
- return { isValid: false, error: "Invalid URL format" };
50
- }
51
- }
52
-
53
- /**
54
- * Validates video duration
55
- */
56
- export function validateVideoDuration(duration: number): ValidationResult {
57
- if (typeof duration !== "number" || isNaN(duration)) {
58
- return { isValid: false, error: "Duration must be a number" };
59
- }
60
-
61
- if (duration < MIN_VIDEO_DURATION_SECONDS) {
62
- return {
63
- isValid: false,
64
- error: `Duration must be at least ${MIN_VIDEO_DURATION_SECONDS} seconds`,
65
- };
66
- }
67
-
68
- if (duration > MAX_VIDEO_DURATION_SECONDS) {
69
- return {
70
- isValid: false,
71
- error: `Duration must not exceed ${MAX_VIDEO_DURATION_SECONDS} seconds`,
72
- };
73
- }
74
-
75
- return { isValid: true };
76
- }
77
-
78
- /**
79
- * Validates email format
80
- */
81
- export function validateEmail(email: string): ValidationResult {
82
- if (!email || typeof email !== "string") {
83
- return { isValid: false, error: "Email is required" };
84
- }
85
-
86
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
87
- if (!emailRegex.test(email)) {
88
- return { isValid: false, error: "Invalid email format" };
89
- }
90
-
91
- return { isValid: true };
92
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Domain-Specific Type Guards
3
- */
4
-
5
- import { hasProperty } from "./structure-guards";
6
- import { isObject } from "./primitive-guards";
7
- import { isNonEmptyString } from "./primitive-guards";
8
-
9
- /**
10
- * Type guard for creation objects with output property
11
- */
12
- export function isCreationWithOutput(
13
- value: unknown
14
- ): value is { output: unknown } {
15
- return hasProperty(value, "output") && isObject(value.output);
16
- }
17
-
18
- /**
19
- * Type guard for wizard data with id property
20
- */
21
- export function isWizardData(value: unknown): value is { id: string } {
22
- return hasProperty(value, "id") && isNonEmptyString(value.id);
23
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Error Classification Utilities
3
- */
4
-
5
- import { isError } from "./error-types";
6
-
7
- /**
8
- * Checks if error is a network error
9
- */
10
- export function isNetworkError(error: unknown): boolean {
11
- if (!isError(error)) {
12
- return false;
13
- }
14
-
15
- const message = error.message.toLowerCase();
16
- return (
17
- message.includes("network") ||
18
- message.includes("fetch") ||
19
- message.includes("connection") ||
20
- message.includes("timeout")
21
- );
22
- }
23
-
@@ -1,53 +0,0 @@
1
- /**
2
- * Error Handling Utilities
3
- */
4
-
5
- import { getErrorMessage } from "./message-extractor";
6
-
7
- /**
8
- * Sanitizes error message to prevent information disclosure
9
- * Removes sensitive data like file paths, API keys, stack traces
10
- */
11
- function sanitizeErrorMessage(message: string): string {
12
- if (!message) return "An error occurred";
13
-
14
- // Remove file paths (Unix and Windows style)
15
- let sanitized = message.replace(/\/[\w\/\-.]+/g, "[PATH]");
16
- sanitized = sanitized.replace(/[A-Z]:\\[\w\\\-.]+/g, "[PATH]");
17
-
18
- // Remove potential API keys or tokens (common patterns)
19
- sanitized = sanitized.replace(/[a-z0-9]{32,}/gi, "[TOKEN]");
20
-
21
- // Remove stack trace lines
22
- sanitized = sanitized.split("\n")[0];
23
-
24
- // Limit length
25
- return sanitized.slice(0, 500);
26
- }
27
-
28
- /**
29
- * Wraps an async function with error handling
30
- */
31
- export async function withErrorHandling<T>(
32
- operation: () => Promise<T>,
33
- onError?: (error: Error) => void
34
- ): Promise<{ data?: T; error?: Error }> {
35
- try {
36
- const data = await operation();
37
- return { data };
38
- } catch (error) {
39
- const errorMessage = getErrorMessage(error);
40
- const sanitizedMessage = sanitizeErrorMessage(errorMessage);
41
- const appError = new Error(sanitizedMessage);
42
-
43
- // In production, don't expose original error details
44
- if (typeof __DEV__ !== "undefined" && __DEV__) {
45
- console.error("[withErrorHandling] Original error:", error);
46
- }
47
-
48
- onError?.(appError);
49
- return { error: appError };
50
- }
51
- }
52
-
53
-