@umituz/react-native-ai-fal-provider 3.1.3 → 3.1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-ai-fal-provider",
3
- "version": "3.1.3",
3
+ "version": "3.1.5",
4
4
  "description": "FAL AI provider for React Native - implements IAIProvider interface for unified AI generation",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -27,14 +27,14 @@
27
27
  "url": "https://github.com/umituz/react-native-ai-fal-provider"
28
28
  },
29
29
  "peerDependencies": {
30
- "@fal-ai/client": ">=0.6.0",
30
+ "@fal-ai/client": ">=1.7.0",
31
31
  "@umituz/react-native-ai-generation-content": ">=1.70.0",
32
32
  "expo": ">=54.0.0",
33
33
  "react": ">=19.0.0",
34
34
  "react-native": "0.81.4"
35
35
  },
36
36
  "dependencies": {
37
- "@fal-ai/client": ">=0.6.0"
37
+ "@fal-ai/client": ">=1.7.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@expo/vector-icons": "^15.0.3",
@@ -48,13 +48,13 @@ export async function handleFalSubscription<T = unknown>(
48
48
  input,
49
49
  logs: false,
50
50
  pollInterval: DEFAULT_FAL_CONFIG.pollInterval,
51
- onQueueUpdate: (update: { status: string; logs?: unknown[]; request_id?: string }) => {
51
+ onQueueUpdate: (update: { status: string; logs?: unknown[]; request_id?: string; queue_position?: number }) => {
52
52
  currentRequestId = update.request_id ?? currentRequestId;
53
53
  const jobStatus = mapFalStatusToJobStatus({
54
54
  status: update.status as FalQueueStatus["status"],
55
55
  requestId: currentRequestId ?? "",
56
56
  logs: update.logs as FalQueueStatus["logs"],
57
- queuePosition: undefined,
57
+ queuePosition: update.queue_position,
58
58
  });
59
59
  if (jobStatus.status !== lastStatus) {
60
60
  lastStatus = jobStatus.status;
@@ -98,12 +98,17 @@ export async function handleFalSubscription<T = unknown>(
98
98
  promises.push(abortPromise);
99
99
  }
100
100
 
101
- const result = await Promise.race(promises);
101
+ const rawResult = await Promise.race(promises);
102
102
 
103
- validateNSFWContent(result as Record<string, unknown>);
103
+ // fal.subscribe returns { data: T, requestId: string } - unwrap the data
104
+ const falResult = rawResult as { data?: unknown; requestId?: string };
105
+ const actualData = (falResult?.data ?? rawResult) as T;
106
+ const falRequestId = falResult?.requestId ?? currentRequestId;
104
107
 
105
- options?.onResult?.(result as T);
106
- return { result: result as T, requestId: currentRequestId };
108
+ validateNSFWContent(actualData as Record<string, unknown>);
109
+
110
+ options?.onResult?.(actualData);
111
+ return { result: actualData, requestId: falRequestId };
107
112
  } catch (error) {
108
113
  if (error instanceof NSFWContentError) {
109
114
  throw error;
@@ -136,12 +141,16 @@ export async function handleFalRun<T = unknown>(
136
141
  options?.onProgress?.({ progress: -1, status: "IN_PROGRESS" as const });
137
142
 
138
143
  try {
139
- const result = await fal.run(model, { input });
144
+ const rawResult = await fal.run(model, { input });
145
+
146
+ // fal.run returns { data: T, requestId: string } - unwrap the data
147
+ const falResult = rawResult as { data?: unknown; requestId?: string };
148
+ const actualData = (falResult?.data ?? rawResult) as T;
140
149
 
141
- validateNSFWContent(result as Record<string, unknown>);
150
+ validateNSFWContent(actualData as Record<string, unknown>);
142
151
 
143
152
  options?.onProgress?.({ progress: 100, status: "COMPLETED" as const });
144
- return result as T;
153
+ return actualData;
145
154
  } catch (error) {
146
155
  if (error instanceof NSFWContentError) {
147
156
  throw error;
@@ -10,7 +10,7 @@ export const DEFAULT_FAL_CONFIG = {
10
10
  baseDelay: 1000,
11
11
  maxDelay: 10000,
12
12
  defaultTimeoutMs: 300000,
13
- pollInterval: 1000,
13
+ pollInterval: 2500,
14
14
  } as const;
15
15
 
16
16
  export const FAL_CAPABILITIES: ProviderCapabilities = {