@olastudio/social-media-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +112 -0
  2. package/dist/adapters/expo.d.mts +19 -0
  3. package/dist/adapters/expo.d.ts +19 -0
  4. package/dist/adapters/expo.js +100 -0
  5. package/dist/adapters/expo.js.map +1 -0
  6. package/dist/adapters/expo.mjs +77 -0
  7. package/dist/adapters/expo.mjs.map +1 -0
  8. package/dist/adapters/index.d.mts +21 -0
  9. package/dist/adapters/index.d.ts +21 -0
  10. package/dist/adapters/index.js +6 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/adapters/index.mjs +3 -0
  13. package/dist/adapters/index.mjs.map +1 -0
  14. package/dist/auth.types-DTXCyA56.d.mts +128 -0
  15. package/dist/auth.types-DTXCyA56.d.ts +128 -0
  16. package/dist/chunk-36RADUUO.mjs +31 -0
  17. package/dist/chunk-36RADUUO.mjs.map +1 -0
  18. package/dist/chunk-7QAMNVQU.js +666 -0
  19. package/dist/chunk-7QAMNVQU.js.map +1 -0
  20. package/dist/chunk-B6NUTR54.js +4 -0
  21. package/dist/chunk-B6NUTR54.js.map +1 -0
  22. package/dist/chunk-BX3RO5PW.js +4 -0
  23. package/dist/chunk-BX3RO5PW.js.map +1 -0
  24. package/dist/chunk-CGNGZNVG.mjs +391 -0
  25. package/dist/chunk-CGNGZNVG.mjs.map +1 -0
  26. package/dist/chunk-ER5A6TIL.js +296 -0
  27. package/dist/chunk-ER5A6TIL.js.map +1 -0
  28. package/dist/chunk-GF3OEIKI.mjs +3 -0
  29. package/dist/chunk-GF3OEIKI.mjs.map +1 -0
  30. package/dist/chunk-H5GAC4UG.mjs +277 -0
  31. package/dist/chunk-H5GAC4UG.mjs.map +1 -0
  32. package/dist/chunk-HPLIHYLQ.js +35 -0
  33. package/dist/chunk-HPLIHYLQ.js.map +1 -0
  34. package/dist/chunk-MV6HJQQO.mjs +3 -0
  35. package/dist/chunk-MV6HJQQO.mjs.map +1 -0
  36. package/dist/chunk-ONR2OJOB.mjs +848 -0
  37. package/dist/chunk-ONR2OJOB.mjs.map +1 -0
  38. package/dist/chunk-PJ4KYVHH.js +854 -0
  39. package/dist/chunk-PJ4KYVHH.js.map +1 -0
  40. package/dist/chunk-QRGJXASL.js +402 -0
  41. package/dist/chunk-QRGJXASL.js.map +1 -0
  42. package/dist/chunk-QZHJXRRW.mjs +661 -0
  43. package/dist/chunk-QZHJXRRW.mjs.map +1 -0
  44. package/dist/core/index.d.mts +105 -0
  45. package/dist/core/index.d.ts +105 -0
  46. package/dist/core/index.js +94 -0
  47. package/dist/core/index.js.map +1 -0
  48. package/dist/core/index.mjs +5 -0
  49. package/dist/core/index.mjs.map +1 -0
  50. package/dist/index.d.mts +7 -0
  51. package/dist/index.d.ts +7 -0
  52. package/dist/index.js +174 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/index.mjs +9 -0
  55. package/dist/index.mjs.map +1 -0
  56. package/dist/insights.types-5z7HJnbt.d.mts +351 -0
  57. package/dist/insights.types-DF2_r0L1.d.ts +351 -0
  58. package/dist/providers/facebook/index.d.mts +464 -0
  59. package/dist/providers/facebook/index.d.ts +464 -0
  60. package/dist/providers/facebook/index.js +30 -0
  61. package/dist/providers/facebook/index.js.map +1 -0
  62. package/dist/providers/facebook/index.mjs +5 -0
  63. package/dist/providers/facebook/index.mjs.map +1 -0
  64. package/dist/providers/instagram/index.d.mts +355 -0
  65. package/dist/providers/instagram/index.d.ts +355 -0
  66. package/dist/providers/instagram/index.js +26 -0
  67. package/dist/providers/instagram/index.js.map +1 -0
  68. package/dist/providers/instagram/index.mjs +5 -0
  69. package/dist/providers/instagram/index.mjs.map +1 -0
  70. package/dist/providers/tiktok/index.d.mts +346 -0
  71. package/dist/providers/tiktok/index.d.ts +346 -0
  72. package/dist/providers/tiktok/index.js +48 -0
  73. package/dist/providers/tiktok/index.js.map +1 -0
  74. package/dist/providers/tiktok/index.mjs +3 -0
  75. package/dist/providers/tiktok/index.mjs.map +1 -0
  76. package/package.json +97 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../providers/facebook/api/FacebookAPI.ts","../providers/facebook/auth/FacebookAuth.ts","../providers/facebook/FacebookProvider.ts","../providers/facebook/types/index.ts"],"names":["FacebookScopesBusiness","FacebookScopesUser"],"mappings":"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","file":"chunk-ONR2OJOB.mjs","sourcesContent":["/**\n * Facebook API - Facebook API Client\n */\n\nimport { FACEBOOK_GRAPH_API_BASE_URL, FACEBOOK_GRAPH_API_VERSION } from '../../../core/constants';\nimport { APIError } from '../../../core/errors';\nimport { HttpClient } from '../../../core/http';\nimport { APIClient, RequestOptions } from '../../../core/types';\nimport {\n FacebookConfig,\n FacebookPage,\n FacebookPagesResponse,\n FacebookPostResponse,\n FacebookPublishPostParams,\n} from '../types';\nimport {\n InsightsResponse,\n VideoInsights,\n ReelsInsights,\n PostInsights,\n PhotoInsights,\n PageOverview,\n} from '../../../core/types/insights.types';\nimport {\n VIDEO_METRICS,\n REELS_METRICS,\n POST_METRICS,\n PHOTO_METRICS,\n METRIC_PRESETS,\n} from '../../../core/insights.constants';\n\nexport class FacebookAPI implements APIClient {\n private httpClient: HttpClient;\n private config: FacebookConfig;\n private accessToken?: string;\n\n constructor(config: FacebookConfig, accessToken?: string) {\n this.config = config;\n this.accessToken = accessToken;\n\n this.httpClient = new HttpClient({\n baseURL: FACEBOOK_GRAPH_API_BASE_URL,\n accessToken: this.accessToken,\n });\n }\n\n /**\n * Generic request\n */\n async request<T>(endpoint: string, options: RequestOptions = {}): Promise<T> {\n // Add access token to params if exists\n if (this.accessToken && !options.params?.access_token) {\n options.params = {\n ...options.params,\n access_token: this.accessToken,\n };\n }\n\n return this.httpClient.request<T>(endpoint, options);\n }\n\n /**\n * GET request\n */\n async get<T>(endpoint: string, params?: Record<string, any>): Promise<T> {\n return this.request<T>(endpoint, { method: 'GET', params });\n }\n\n /**\n * POST request\n */\n async post<T>(endpoint: string, body?: any): Promise<T> {\n return this.request<T>(endpoint, { method: 'POST', body });\n }\n\n /**\n * PUT request\n */\n async put<T>(endpoint: string, body?: any): Promise<T> {\n return this.request<T>(endpoint, { method: 'PUT', body });\n }\n\n /**\n * DELETE request\n */\n async delete<T>(endpoint: string): Promise<T> {\n return this.request<T>(endpoint, { method: 'DELETE' });\n }\n\n /**\n * Update access token\n */\n setAccessToken(token: string) {\n this.accessToken = token;\n this.httpClient.setAccessToken(token);\n }\n\n /**\n * Get current access token\n */\n getAccessToken(): string | undefined {\n return this.accessToken;\n }\n\n // ============= Facebook-specific methods =============\n\n /**\n * Get user's pages\n */\n async getPages(userAccessToken?: string): Promise<FacebookPage[]> {\n try {\n const token = userAccessToken || this.accessToken;\n if (!token) {\n throw new APIError('Access token is required', 401, 'NO_TOKEN');\n }\n\n const response = await this.get<FacebookPagesResponse>('/me/accounts', {\n fields: 'id,name,access_token,picture',\n access_token: token,\n });\n\n return response.data;\n } catch (error) {\n throw new APIError(\n `Failed to fetch Facebook pages: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGES_FETCH_ERROR',\n error\n );\n }\n }\n\n /**\n * Publish post to Facebook page\n */\n async publishPost(\n params: FacebookPublishPostParams\n ): Promise<FacebookPostResponse> {\n const { pageId, pageAccessToken, message, imageUrl, scheduledPublishTime } =\n params;\n\n try {\n let endpoint = `/${pageId}/`;\n const body: any = {\n access_token: pageAccessToken,\n };\n\n // If scheduled, mark as unpublished\n if (scheduledPublishTime) {\n body.published = false;\n body.scheduled_publish_time = scheduledPublishTime;\n }\n\n // Post with photo\n if (imageUrl) {\n endpoint += 'photos';\n body.url = imageUrl;\n if (message) body.caption = message;\n }\n // Text-only post\n else if (message) {\n endpoint += 'feed';\n body.message = message;\n } else {\n throw new APIError(\n 'Either message or imageUrl must be provided',\n 400,\n 'INVALID_PARAMS'\n );\n }\n\n const response = await this.request<FacebookPostResponse>(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body,\n });\n\n return response;\n } catch (error) {\n throw new APIError(\n `Failed to publish post: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'POST_PUBLISH_ERROR',\n error\n );\n }\n }\n\n /**\n * Delete Facebook post\n */\n async deletePost(postId: string, pageAccessToken: string): Promise<boolean> {\n try {\n const response = await this.delete<{ success: boolean }>(\n `/${postId}?access_token=${pageAccessToken}`\n );\n\n return response.success === true;\n } catch (error) {\n throw new APIError(\n `Failed to delete post: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'POST_DELETE_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page information\n */\n async getPage(pageId: string, fields?: string[]): Promise<FacebookPage> {\n try {\n const fieldsParam = fields?.join(',') || 'id,name,access_token,picture';\n\n return await this.get<FacebookPage>(`/${pageId}`, {\n fields: fieldsParam,\n });\n } catch (error) {\n throw new APIError(\n `Failed to fetch page info: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_FETCH_ERROR',\n error\n );\n }\n }\n\n /**\n * Debug/validate a Facebook access token\n * Uses Facebook's debug_token endpoint\n *\n * @param inputToken - The token to validate\n * @param appAccessToken - App token (app_id|app_secret)\n * @returns Token debug information\n */\n async debugToken(\n inputToken: string,\n appAccessToken: string\n ): Promise<{\n data: {\n is_valid: boolean;\n expires_at?: number;\n scopes?: string[];\n error?: { message: string; code: number };\n };\n }> {\n try {\n return await this.get('/debug_token', {\n input_token: inputToken,\n access_token: appAccessToken,\n });\n } catch (error) {\n throw new APIError(\n `Failed to debug token: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'TOKEN_DEBUG_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page insights/analytics\n * @param pageId - Facebook Page ID\n * @param options - Insights options\n * @returns Page insights data\n */\n async getPageInsights(\n pageId: string,\n options: {\n metric: string[];\n period?: 'day' | 'week' | 'days_28' | 'month' | 'lifetime';\n since?: number;\n until?: number;\n }\n ): Promise<{\n data: Array<{\n name: string;\n period: string;\n values: Array<{ value: number; end_time?: string }>;\n title?: string;\n description?: string;\n }>;\n }> {\n try {\n const params: Record<string, any> = {\n metric: options.metric.join(','),\n period: options.period || 'day',\n };\n\n if (options.since) params.since = options.since;\n if (options.until) params.until = options.until;\n\n const response = await this.get<{\n data: Array<{\n name: string;\n period: string;\n values: Array<{ value: number; end_time?: string }>;\n title?: string;\n description?: string;\n }>;\n }>(`/${pageId}/insights`, params);\n\n return response;\n } catch (error) {\n throw new APIError(\n `Failed to fetch page insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'INSIGHTS_FETCH_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page fans count (total followers)\n * @param pageId - Facebook Page ID\n * @returns Page with fan count\n */\n async getPageFansCount(pageId: string): Promise<{ id: string; fan_count: number }> {\n try {\n return await this.get<{ id: string; fan_count: number }>(`/${pageId}`, {\n fields: 'id,fan_count',\n });\n } catch (error) {\n throw new APIError(\n `Failed to fetch page fans count: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'FANS_COUNT_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page overview with key metrics\n * @param pageId - Facebook Page ID\n * @returns Page overview data\n */\n async getPageOverview(pageId: string): Promise<PageOverview> {\n try {\n const response = await this.get<{\n id: string;\n name: string;\n followers_count?: number;\n fan_count?: number;\n }>(`/${pageId}`, {\n fields: 'id,name,followers_count,fan_count',\n });\n\n return {\n id: response.id,\n name: response.name,\n followers_count: response.followers_count || response.fan_count || 0,\n fan_count: response.fan_count,\n };\n } catch (error) {\n throw new APIError(\n `Failed to fetch page overview: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_OVERVIEW_ERROR',\n error\n );\n }\n }\n\n // ============= Video Insights Methods =============\n\n /**\n * Get video insights\n * @param videoId - Facebook Video ID\n * @param metrics - Specific metrics to fetch (defaults to common metrics)\n * @returns Video insights data\n */\n async getVideoInsights(\n videoId: string,\n metrics?: string[]\n ): Promise<InsightsResponse> {\n try {\n const metricsToFetch = metrics || METRIC_PRESETS.VIDEO_PERFORMANCE;\n\n const response = await this.get<InsightsResponse>(\n `/${videoId}/video_insights`,\n {\n metric: metricsToFetch.join(','),\n }\n );\n\n return response;\n } catch (error) {\n throw new APIError(\n `Failed to fetch video insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'VIDEO_INSIGHTS_ERROR',\n error\n );\n }\n }\n\n /**\n * Get video insights with parsed values\n * @param videoId - Facebook Video ID\n * @returns Parsed video insights\n */\n async getVideoInsightsParsed(videoId: string): Promise<VideoInsights> {\n try {\n const response = await this.getVideoInsights(videoId, [...VIDEO_METRICS.slice(0, 8)]);\n\n const insights: VideoInsights = { id: videoId };\n\n for (const item of response.data) {\n const value = item.values?.[0]?.value ?? item.total_value?.value;\n if (typeof value !== 'number') continue;\n\n switch (item.name) {\n case 'total_video_views':\n insights.total_views = value;\n break;\n case 'total_video_views_unique':\n insights.unique_views = value;\n break;\n case 'total_video_avg_time_watched':\n insights.avg_time_watched = value;\n break;\n case 'total_video_complete_views':\n insights.complete_views = value;\n break;\n case 'total_video_views_organic':\n insights.organic_views = value;\n break;\n case 'total_video_views_paid':\n insights.paid_views = value;\n break;\n case 'total_video_view_total_time':\n insights.total_time_watched = value;\n break;\n }\n }\n\n return insights;\n } catch (error) {\n throw new APIError(\n `Failed to fetch parsed video insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'VIDEO_INSIGHTS_PARSED_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page videos with basic info\n * @param pageId - Facebook Page ID\n * @param limit - Number of videos to fetch\n * @returns List of videos\n */\n async getPageVideos(\n pageId: string,\n limit: number = 25\n ): Promise<{ data: Array<{ id: string; title?: string; description?: string; created_time: string; length?: number }> }> {\n try {\n return await this.get(`/${pageId}/videos`, {\n fields: 'id,title,description,created_time,length',\n limit,\n });\n } catch (error) {\n throw new APIError(\n `Failed to fetch page videos: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_VIDEOS_ERROR',\n error\n );\n }\n }\n\n // ============= Reels Insights Methods =============\n\n /**\n * Get reels insights\n * @param reelId - Facebook Reel ID\n * @param metrics - Specific metrics to fetch\n * @returns Reels insights data\n */\n async getReelsInsights(\n reelId: string,\n metrics?: string[]\n ): Promise<InsightsResponse> {\n try {\n const metricsToFetch = metrics || METRIC_PRESETS.REELS_PERFORMANCE;\n\n const response = await this.get<InsightsResponse>(\n `/${reelId}/video_insights`,\n {\n metric: metricsToFetch.join(','),\n }\n );\n\n return response;\n } catch (error) {\n throw new APIError(\n `Failed to fetch reels insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'REELS_INSIGHTS_ERROR',\n error\n );\n }\n }\n\n /**\n * Get reels insights with parsed values\n * @param reelId - Facebook Reel ID\n * @returns Parsed reels insights\n */\n async getReelsInsightsParsed(reelId: string): Promise<ReelsInsights> {\n try {\n const response = await this.getReelsInsights(reelId, [...REELS_METRICS]);\n\n const insights: ReelsInsights = { id: reelId };\n\n for (const item of response.data) {\n const value = item.values?.[0]?.value ?? item.total_value?.value;\n if (typeof value !== 'number') continue;\n\n switch (item.name) {\n case 'blue_reels_play_count':\n insights.plays = value;\n break;\n case 'post_video_avg_time_watched':\n insights.avg_time_watched = value;\n break;\n case 'post_video_views':\n insights.total_plays = value;\n break;\n }\n }\n\n // Get engagement metrics from post insights\n try {\n const postResponse = await this.get<{\n reactions?: { summary: { total_count: number } };\n comments?: { summary: { total_count: number } };\n shares?: { count: number };\n }>(`/${reelId}`, {\n fields: 'reactions.summary(true),comments.summary(true),shares',\n });\n\n insights.likes = postResponse.reactions?.summary?.total_count;\n insights.comments = postResponse.comments?.summary?.total_count;\n insights.shares = postResponse.shares?.count;\n } catch {\n // Engagement metrics optional\n }\n\n return insights;\n } catch (error) {\n throw new APIError(\n `Failed to fetch parsed reels insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'REELS_INSIGHTS_PARSED_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page reels\n * @param pageId - Facebook Page ID\n * @param limit - Number of reels to fetch\n * @returns List of reels\n */\n async getPageReels(\n pageId: string,\n limit: number = 25\n ): Promise<{ data: Array<{ id: string; description?: string; created_time: string }> }> {\n try {\n return await this.get(`/${pageId}/video_reels`, {\n fields: 'id,description,created_time',\n limit,\n });\n } catch (error) {\n throw new APIError(\n `Failed to fetch page reels: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_REELS_ERROR',\n error\n );\n }\n }\n\n // ============= Post Insights Methods =============\n\n /**\n * Get post insights\n * @param postId - Facebook Post ID\n * @param metrics - Specific metrics to fetch\n * @returns Post insights data\n */\n async getPostInsights(\n postId: string,\n metrics?: string[]\n ): Promise<InsightsResponse> {\n try {\n const metricsToFetch = metrics || [...POST_METRICS];\n\n const response = await this.get<InsightsResponse>(\n `/${postId}/insights`,\n {\n metric: metricsToFetch.join(','),\n }\n );\n\n return response;\n } catch (error) {\n throw new APIError(\n `Failed to fetch post insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'POST_INSIGHTS_ERROR',\n error\n );\n }\n }\n\n /**\n * Get post insights with parsed values\n * @param postId - Facebook Post ID\n * @returns Parsed post insights\n */\n async getPostInsightsParsed(postId: string): Promise<PostInsights> {\n try {\n const response = await this.getPostInsights(postId);\n\n const insights: PostInsights = { id: postId };\n\n for (const item of response.data) {\n const value = item.values?.[0]?.value ?? item.total_value?.value;\n\n switch (item.name) {\n case 'post_engaged_users':\n if (typeof value === 'number') insights.engaged_users = value;\n break;\n case 'post_clicks':\n if (typeof value === 'number') insights.clicks = value;\n break;\n case 'post_negative_feedback':\n if (typeof value === 'number') insights.negative_feedback = value;\n break;\n case 'post_reactions_by_type_total':\n if (typeof value === 'object') insights.reactions_by_type = value as Record<string, number>;\n break;\n }\n }\n\n return insights;\n } catch (error) {\n throw new APIError(\n `Failed to fetch parsed post insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'POST_INSIGHTS_PARSED_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page posts/feed\n * @param pageId - Facebook Page ID\n * @param limit - Number of posts to fetch\n * @returns List of posts\n */\n async getPagePosts(\n pageId: string,\n limit: number = 25\n ): Promise<{ data: Array<{ id: string; message?: string; created_time: string; type?: string }> }> {\n try {\n return await this.get(`/${pageId}/feed`, {\n fields: 'id,message,created_time,type',\n limit,\n });\n } catch (error) {\n throw new APIError(\n `Failed to fetch page posts: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_POSTS_ERROR',\n error\n );\n }\n }\n\n // ============= Photo Insights Methods =============\n\n /**\n * Get photo insights\n * @param photoId - Facebook Photo ID\n * @param metrics - Specific metrics to fetch\n * @returns Photo insights data\n */\n async getPhotoInsights(\n photoId: string,\n metrics?: string[]\n ): Promise<InsightsResponse> {\n try {\n const metricsToFetch = metrics || [...PHOTO_METRICS];\n\n const response = await this.get<InsightsResponse>(\n `/${photoId}/insights`,\n {\n metric: metricsToFetch.join(','),\n }\n );\n\n return response;\n } catch (error) {\n throw new APIError(\n `Failed to fetch photo insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PHOTO_INSIGHTS_ERROR',\n error\n );\n }\n }\n\n /**\n * Get photo insights with parsed values\n * @param photoId - Facebook Photo ID\n * @returns Parsed photo insights\n */\n async getPhotoInsightsParsed(photoId: string): Promise<PhotoInsights> {\n try {\n const response = await this.getPhotoInsights(photoId);\n\n const insights: PhotoInsights = { id: photoId };\n\n for (const item of response.data) {\n const value = item.values?.[0]?.value ?? item.total_value?.value;\n if (typeof value !== 'number') continue;\n\n switch (item.name) {\n case 'photo_views':\n insights.views = value;\n break;\n case 'photo_reach':\n insights.reach = value;\n break;\n case 'engaged_users':\n insights.engaged_users = value;\n break;\n }\n }\n\n return insights;\n } catch (error) {\n throw new APIError(\n `Failed to fetch parsed photo insights: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PHOTO_INSIGHTS_PARSED_ERROR',\n error\n );\n }\n }\n\n /**\n * Get page photos\n * @param pageId - Facebook Page ID\n * @param limit - Number of photos to fetch\n * @returns List of photos\n */\n async getPagePhotos(\n pageId: string,\n limit: number = 25\n ): Promise<{ data: Array<{ id: string; name?: string; created_time: string }> }> {\n try {\n return await this.get(`/${pageId}/photos`, {\n fields: 'id,name,created_time',\n type: 'uploaded',\n limit,\n });\n } catch (error) {\n throw new APIError(\n `Failed to fetch page photos: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_PHOTOS_ERROR',\n error\n );\n }\n }\n\n // ============= Batch/Helper Methods =============\n\n /**\n * Get quick insights summary for a page\n * Combines key metrics in a single call\n * @param pageId - Facebook Page ID\n * @param period - Period for time-based metrics\n * @returns Summary of page insights\n */\n async getPageInsightsSummary(\n pageId: string,\n period: 'day' | 'week' | 'days_28' = 'days_28'\n ): Promise<{\n overview: PageOverview;\n engagement: { views?: number; post_engagements?: number; video_views?: number };\n }> {\n try {\n // Get page overview\n const overview = await this.getPageOverview(pageId);\n\n // Get key metrics\n const insightsResponse = await this.getPageInsights(pageId, {\n metric: [...METRIC_PRESETS.PAGE_OVERVIEW],\n period,\n });\n\n const engagement: { views?: number; post_engagements?: number; video_views?: number } = {};\n\n for (const item of insightsResponse.data) {\n const values = item.values || [];\n const total = values.reduce((sum, v) => sum + (typeof v.value === 'number' ? v.value : 0), 0);\n\n switch (item.name) {\n case 'page_views_total':\n engagement.views = total;\n break;\n case 'page_post_engagements':\n engagement.post_engagements = total;\n break;\n case 'page_video_views':\n engagement.video_views = total;\n break;\n }\n }\n\n return { overview, engagement };\n } catch (error) {\n throw new APIError(\n `Failed to fetch page insights summary: ${error instanceof Error ? error.message : 'Unknown error'}`,\n undefined,\n 'PAGE_SUMMARY_ERROR',\n error\n );\n }\n }\n\n /**\n * Get current API version (read-only)\n */\n getApiVersion(): string {\n return FACEBOOK_GRAPH_API_VERSION;\n }\n}\n\n\n","/**\n * Facebook Auth - Facebook Authentication\n */\n\nimport {\n FACEBOOK_GRAPH_API_BASE_URL,\n FACEBOOK_GRAPH_API_VERSION,\n FACEBOOK_OAUTH_AUTHORIZATION_URL,\n} from '../../../core/constants';\nimport { AuthError } from '../../../core/errors';\nimport { HttpClient } from '../../../core/http';\nimport { AuthProvider, AuthResult, UserProfile } from '../../../core/types';\nimport {\n FacebookConfig,\n FacebookExchangeTokenParams,\n FacebookTokenResponse,\n FacebookUserProfile,\n} from '../types';\n\nexport class FacebookAuth implements AuthProvider {\n private httpClient: HttpClient;\n private config: FacebookConfig;\n\n constructor(config: FacebookConfig) {\n this.config = config;\n\n this.httpClient = new HttpClient({\n baseURL: FACEBOOK_GRAPH_API_BASE_URL,\n });\n }\n\n /**\n * Exchange Facebook token for session\n * In Expo + Supabase, this is handled in the app\n * This function only validates and gets profile info\n */\n async exchangeToken(facebookToken: string): Promise<AuthResult> {\n try {\n const profile = await this.getProfile(facebookToken);\n\n return {\n accessToken: facebookToken,\n user: profile,\n };\n } catch (error) {\n throw new AuthError(\n `Failed to exchange Facebook token: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'TOKEN_EXCHANGE_ERROR',\n error\n );\n }\n }\n\n /**\n * Get Facebook user profile\n */\n async getProfile(accessToken: string): Promise<UserProfile> {\n try {\n const profile = await this.httpClient.get<FacebookUserProfile>('/me', {\n fields: 'id,name,email,picture',\n access_token: accessToken,\n });\n\n return {\n id: profile.id,\n name: profile.name,\n email: profile.email,\n picture: profile.picture?.data?.url,\n };\n } catch (error) {\n throw new AuthError(\n `Failed to fetch Facebook profile: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'PROFILE_FETCH_ERROR',\n error\n );\n }\n }\n\n /**\n * Exchange short-lived token for long-lived token\n */\n async exchangeForLongLivedToken(\n params: FacebookExchangeTokenParams\n ): Promise<string> {\n try {\n const response = await this.httpClient.get<FacebookTokenResponse>(\n '/oauth/access_token',\n {\n grant_type: 'fb_exchange_token',\n client_id: params.appId,\n client_secret: params.appSecret,\n fb_exchange_token: params.shortLivedToken,\n }\n );\n\n return response.access_token;\n } catch (error) {\n throw new AuthError(\n `Failed to exchange for long-lived token: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 'LONG_LIVED_TOKEN_ERROR',\n error\n );\n }\n }\n\n /**\n * Get OAuth configuration for Facebook\n */\n getOAuthConfig(scopes: string[], redirectUri: string) {\n return {\n authorizationEndpoint: FACEBOOK_OAUTH_AUTHORIZATION_URL,\n tokenEndpoint: `${FACEBOOK_GRAPH_API_BASE_URL}/oauth/access_token`,\n clientId: this.config.appId,\n clientSecret: this.config.appSecret,\n redirectUri,\n scopes,\n responseType: 'token' as const,\n extraParams: {\n display: 'popup',\n },\n };\n }\n\n /**\n * Get authorization URL\n */\n getAuthorizationUrl(scopes: string[], redirectUri: string, state?: string) {\n const params = new URLSearchParams({\n client_id: this.config.appId,\n redirect_uri: redirectUri,\n scope: scopes.join(','),\n response_type: 'token',\n display: 'popup',\n ...(state && { state }),\n });\n\n return `${FACEBOOK_OAUTH_AUTHORIZATION_URL}?${params.toString()}`;\n }\n\n /**\n * Get current API version (read-only)\n */\n getApiVersion(): string {\n return FACEBOOK_GRAPH_API_VERSION;\n }\n}\n\n\n","/**\n * Facebook Provider - Main Facebook provider\n */\n\nimport { FacebookAPI } from './api';\nimport { FacebookAuth } from './auth';\nimport { FacebookConfig } from './types';\n\n/**\n * Facebook provider that encapsulates Auth and API\n */\nexport class FacebookProvider {\n public readonly name = 'facebook' as const;\n public auth: FacebookAuth;\n public api: FacebookAPI;\n public config: FacebookConfig;\n\n constructor(config: FacebookConfig) {\n this.config = config;\n this.auth = new FacebookAuth(config);\n this.api = new FacebookAPI(config);\n }\n\n /**\n * Create new API instance with access token\n */\n createAPIClient(accessToken: string): FacebookAPI {\n return new FacebookAPI(this.config, accessToken);\n }\n\n /**\n * Update access token of existing API client\n */\n setAccessToken(accessToken: string) {\n this.api.setAccessToken(accessToken);\n }\n\n /**\n * Get current access token\n */\n getAccessToken(): string | undefined {\n return this.api.getAccessToken();\n }\n}\n\n","/**\n * Facebook Types - Facebook-specific types\n */\n\nimport { UserProfile } from '../../../core/types';\n\n/**\n * Facebook provider configuration\n * Note: apiVersion is fixed to v24.0 to ensure API compatibility\n */\nexport interface FacebookConfig {\n appId: string;\n appSecret?: string;\n redirectUri?: string;\n}\n\n/**\n * Facebook Scopes (Business Permissions)\n */\nexport enum FacebookScopesBusiness {\n PUBLIC_PROFILE = 'public_profile',\n EMAIL = 'email',\n PAGES_SHOW_LIST = 'pages_show_list',\n PAGES_READ_ENGAGEMENT = 'pages_read_engagement',\n PAGES_MANAGE_POSTS = 'pages_manage_posts',\n ADS_MANAGEMENT = 'ads_management',\n ADS_READ = 'ads_read',\n BUSINESS_MANAGEMENT = 'business_management',\n CATALOG_MANAGEMENT = 'catalog_management',\n COMMERCE_ACCOUNT_MANAGE_ORDERS = 'commerce_account_manage_orders',\n COMMERCE_ACCOUNT_READ_ORDERS = 'commerce_account_read_orders',\n COMMERCE_ACCOUNT_READ_REPORTS = 'commerce_account_read_reports',\n COMMERCE_ACCOUNT_READ_SETTINGS = 'commerce_account_read_settings',\n COMMERCE_MANAGE_ACCOUNTS = 'commerce_manage_accounts',\n INSTAGRAM_BASIC = 'instagram_basic',\n INSTAGRAM_CONTENT_PUBLISH = 'instagram_content_publish',\n INSTAGRAM_MANAGE_COMMENTS = 'instagram_manage_comments',\n INSTAGRAM_MANAGE_INSIGHTS = 'instagram_manage_insights',\n INSTAGRAM_MANAGE_MESSAGES = 'instagram_manage_messages',\n INSTAGRAM_SHOPPING_TAG_PRODUCTS = 'instagram_shopping_tag_products',\n LEADS_RETRIEVAL = 'leads_retrieval',\n MANAGE_APP_SOLUTIONS = 'manage_app_solutions',\n MANAGE_FUNDRAISERS = 'manage_fundraisers',\n PAGES_MANAGE_CTA = 'pages_manage_cta',\n PAGE_EVENTS = 'page_events',\n PAGES_MANAGE_ADS = 'pages_manage_ads',\n PAGES_MANAGE_ENGAGEMENT = 'pages_manage_engagement',\n PAGES_MANAGE_INSTANT_ARTICLES = 'pages_manage_instant_articles',\n PAGES_MANAGE_METADATA = 'pages_manage_metadata',\n PAGES_MESSAGING = 'pages_messaging',\n PAGES_READ_USER_CONTENT = 'pages_read_user_content',\n PRIVATE_COMPUTATION_ACCESS = 'private_computation_access',\n PUBLISH_VIDEO = 'publish_video',\n READ_INSIGHTS = 'read_insights',\n READ_AUDIENCE_NETWORK_INSIGHTS = 'read_audience_network_insights',\n WHATSAPP_BUSINESS_MANAGEMENT = 'whatsapp_business_management',\n WHATSAPP_BUSINESS_MESSAGING = 'whatsapp_business_messaging',\n}\n\n/**\n * Facebook Scopes (User Permissions)\n */\nexport enum FacebookScopesUser {\n PUBLIC_PROFILE = 'public_profile',\n EMAIL = 'email',\n USER_FRIENDS = 'user_friends',\n}\n\n/**\n * Facebook Page\n */\nexport interface FacebookPage {\n id: string;\n name: string;\n access_token: string;\n picture?: {\n data: {\n url: string;\n };\n };\n}\n\n/**\n * Facebook user profile\n */\nexport interface FacebookUserProfile extends UserProfile {\n id: string;\n name: string;\n email?: string;\n picture?: {\n data: {\n url: string;\n };\n };\n}\n\n/**\n * Facebook pages response\n */\nexport interface FacebookPagesResponse {\n data: FacebookPage[];\n paging?: {\n cursors: {\n before: string;\n after: string;\n };\n next?: string;\n previous?: string;\n };\n}\n\n/**\n * Facebook post response\n */\nexport interface FacebookPostResponse {\n id: string;\n post_id?: string;\n}\n\n/**\n * Parameters for publishing to Facebook\n */\nexport interface FacebookPublishPostParams {\n pageId: string;\n pageAccessToken: string;\n message?: string;\n imageUrl?: string;\n scheduledPublishTime?: number; // Unix timestamp\n}\n\n/**\n * Parameters for token exchange\n */\nexport interface FacebookExchangeTokenParams {\n shortLivedToken: string;\n appId: string;\n appSecret: string;\n}\n\n/**\n * Token exchange response\n */\nexport interface FacebookTokenResponse {\n access_token: string;\n token_type?: string;\n expires_in?: number;\n}\n\n/**\n * Facebook error\n */\nexport interface FacebookErrorResponse {\n error: {\n message: string;\n type: string;\n code: number;\n fbtrace_id: string;\n };\n}\n\n\n"]}