scavio 0.5.0 → 0.7.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.
package/dist/index.d.ts CHANGED
@@ -410,6 +410,10 @@ declare class GoogleNamespace {
410
410
  trending(options: GoogleTrendingOptions): Promise<Record<string, unknown>>;
411
411
  }
412
412
 
413
+ /** Comment / feed sort orders. */
414
+ type RedditSort = "HOT" | "NEW" | "TOP" | "BEST" | "CONTROVERSIAL";
415
+ /** Subreddit feed sort orders. */
416
+ type RedditFeedSort = "BEST" | "HOT" | "NEW" | "TOP" | "CONTROVERSIAL" | "RISING";
413
417
  interface RedditSearchOptions {
414
418
  /** Search query (1-500 characters). */
415
419
  query: string;
@@ -421,16 +425,84 @@ interface RedditSearchOptions {
421
425
  cursor?: string;
422
426
  [key: string]: unknown;
423
427
  }
428
+ interface RedditSearchSuggestionsOptions {
429
+ /** Search query (1-500 characters). */
430
+ query: string;
431
+ [key: string]: unknown;
432
+ }
424
433
  interface RedditPostOptions {
434
+ /** Post fullname (t3_...) or bare id. */
435
+ post_id?: string;
425
436
  /** Full Reddit post URL. */
426
- url: string;
437
+ url?: string;
438
+ [key: string]: unknown;
439
+ }
440
+ interface RedditPostCommentsOptions {
441
+ /** Post fullname (t3_...). */
442
+ post_id: string;
443
+ /** Comment sort order (default 'TOP'). */
444
+ sort?: RedditSort;
445
+ /** Pagination cursor from a prior response. */
446
+ cursor?: string;
447
+ [key: string]: unknown;
448
+ }
449
+ interface RedditCommentRepliesOptions {
450
+ /** Post fullname (t3_...). */
451
+ post_id: string;
452
+ /** reply_cursor from a comment in the comments endpoint. */
453
+ cursor: string;
454
+ /** Comment sort order (default 'TOP'). */
455
+ sort?: RedditSort;
456
+ [key: string]: unknown;
457
+ }
458
+ interface RedditSubredditOptions {
459
+ /** Subreddit name (without r/). */
460
+ subreddit: string;
461
+ [key: string]: unknown;
462
+ }
463
+ interface RedditSubredditPostsOptions {
464
+ /** Subreddit name (without r/). */
465
+ subreddit: string;
466
+ /** Feed sort order (default 'HOT'). */
467
+ sort?: RedditFeedSort;
468
+ /** Pagination cursor from a prior response. */
469
+ cursor?: string;
470
+ [key: string]: unknown;
471
+ }
472
+ interface RedditUserOptions {
473
+ /** Redditor username (without u/). */
474
+ username: string;
475
+ [key: string]: unknown;
476
+ }
477
+ interface RedditUserFeedOptions {
478
+ /** Redditor username (without u/). */
479
+ username: string;
480
+ /** Sort order (default 'NEW'). */
481
+ sort?: RedditSort;
482
+ /** Pagination cursor from a prior response. */
483
+ cursor?: string;
484
+ [key: string]: unknown;
485
+ }
486
+ interface RedditPopularOptions {
487
+ /** Pagination cursor from a prior response. */
488
+ cursor?: string;
427
489
  [key: string]: unknown;
428
490
  }
429
491
  declare class RedditNamespace {
430
492
  private client;
431
493
  constructor(client: Scavio);
432
494
  search(options: RedditSearchOptions): Promise<Record<string, unknown>>;
495
+ searchSuggestions(options: RedditSearchSuggestionsOptions): Promise<Record<string, unknown>>;
433
496
  post(options: RedditPostOptions): Promise<Record<string, unknown>>;
497
+ postComments(options: RedditPostCommentsOptions): Promise<Record<string, unknown>>;
498
+ commentReplies(options: RedditCommentRepliesOptions): Promise<Record<string, unknown>>;
499
+ subreddit(options: RedditSubredditOptions): Promise<Record<string, unknown>>;
500
+ subredditPosts(options: RedditSubredditPostsOptions): Promise<Record<string, unknown>>;
501
+ user(options: RedditUserOptions): Promise<Record<string, unknown>>;
502
+ userPosts(options: RedditUserFeedOptions): Promise<Record<string, unknown>>;
503
+ userComments(options: RedditUserFeedOptions): Promise<Record<string, unknown>>;
504
+ popular(options?: RedditPopularOptions): Promise<Record<string, unknown>>;
505
+ trending(): Promise<Record<string, unknown>>;
434
506
  }
435
507
 
436
508
  interface TikTokProfileOptions {
@@ -692,11 +764,18 @@ interface YouTubeSearchOptions {
692
764
  /** Filter by upload date. */
693
765
  upload_date?: "last_hour" | "today" | "this_week" | "this_month" | "this_year";
694
766
  /** Filter by result type. */
695
- type?: "video" | "channel" | "playlist";
767
+ type?: "video" | "channel" | "playlist" | "movie";
696
768
  /** short (<4 min), medium (4-20 min), long (>20 min). */
697
769
  duration?: "short" | "medium" | "long";
698
770
  /** Sort order. */
699
771
  sort_by?: "relevance" | "date" | "view_count" | "rating";
772
+ /**
773
+ * Feature filters, e.g. ["hd", "4k", "subtitles", "creative_commons",
774
+ * "live", "360", "3d", "hdr", "vr180"].
775
+ */
776
+ features?: string[];
777
+ /** Pagination cursor from a prior response. */
778
+ cursor?: string;
700
779
  /** HD videos only. */
701
780
  hd?: boolean;
702
781
  /** Videos with subtitles/CC only. */
@@ -719,8 +798,107 @@ interface YouTubeSearchOptions {
719
798
  video_3d?: boolean;
720
799
  [key: string]: unknown;
721
800
  }
801
+ interface YouTubeShortsOptions {
802
+ /** Search query (1-500 characters). Sent to the API as 'search'. */
803
+ query: string;
804
+ /** Sort order. */
805
+ sort_by?: "relevance" | "date" | "view_count" | "rating";
806
+ /** Pagination cursor from a prior response. */
807
+ cursor?: string;
808
+ [key: string]: unknown;
809
+ }
810
+ interface YouTubeSuggestionsOptions {
811
+ /** Search query (1-500 characters). Sent to the API as 'search'. */
812
+ query: string;
813
+ /** Language code for suggestions (default 'en'). */
814
+ language?: string;
815
+ /** Region code for suggestions (default 'US'). */
816
+ region?: string;
817
+ [key: string]: unknown;
818
+ }
819
+ interface YouTubeVideoOptions {
820
+ /** YouTube video id (e.g. 'dQw4w9WgXcQ') or a full watch URL. */
821
+ video_id: string;
822
+ [key: string]: unknown;
823
+ }
824
+ /** @deprecated Use YouTubeVideoOptions with youtube.video(). */
722
825
  interface YouTubeMetadataOptions {
723
- /** YouTube video id (e.g. 'dQw4w9WgXcQ'). */
826
+ /** YouTube video id (e.g. 'dQw4w9WgXcQ') or a full watch URL. */
827
+ video_id: string;
828
+ [key: string]: unknown;
829
+ }
830
+ interface YouTubeCommentsOptions {
831
+ /** YouTube video id or a full watch URL. */
832
+ video_id: string;
833
+ /** Pagination cursor from a prior response. */
834
+ cursor?: string;
835
+ [key: string]: unknown;
836
+ }
837
+ interface YouTubeCommentRepliesOptions {
838
+ /** YouTube video id or a full watch URL. */
839
+ video_id: string;
840
+ /** Reply cursor from a parent comment's 'reply_cursor'. */
841
+ reply_cursor: string;
842
+ /** Pagination cursor from a prior response. */
843
+ cursor?: string;
844
+ [key: string]: unknown;
845
+ }
846
+ interface YouTubeTranscriptOptions {
847
+ /** YouTube video id or a full watch URL. */
848
+ video_id: string;
849
+ /** Caption language code (default 'en'). */
850
+ language?: string;
851
+ /** 'text' for plain transcript, 'srt' for timed subtitles (default 'text'). */
852
+ format?: "text" | "srt";
853
+ [key: string]: unknown;
854
+ }
855
+ interface YouTubeRelatedOptions {
856
+ /** YouTube video id or a full watch URL. */
857
+ video_id: string;
858
+ /** Pagination cursor from a prior response. */
859
+ cursor?: string;
860
+ [key: string]: unknown;
861
+ }
862
+ interface YouTubeChannelSearchOptions {
863
+ /** Search query (1-500 characters). Sent to the API as 'search'. */
864
+ query: string;
865
+ /** Pagination cursor from a prior response. */
866
+ cursor?: string;
867
+ [key: string]: unknown;
868
+ }
869
+ interface YouTubeChannelOptions {
870
+ /** YouTube channel id, @handle, or channel URL. */
871
+ channel_id: string;
872
+ [key: string]: unknown;
873
+ }
874
+ interface YouTubeChannelVideosOptions {
875
+ /** YouTube channel id. */
876
+ channel_id: string;
877
+ /** Pagination cursor from a prior response. */
878
+ cursor?: string;
879
+ [key: string]: unknown;
880
+ }
881
+ interface YouTubeChannelShortsOptions {
882
+ /** YouTube channel id. */
883
+ channel_id: string;
884
+ /** Pagination cursor from a prior response. */
885
+ cursor?: string;
886
+ [key: string]: unknown;
887
+ }
888
+ interface YouTubeChannelCommunityOptions {
889
+ /** YouTube channel id. */
890
+ channel_id: string;
891
+ /** Pagination cursor from a prior response. */
892
+ cursor?: string;
893
+ [key: string]: unknown;
894
+ }
895
+ interface YouTubeChannelResolveOptions {
896
+ /** A channel @handle or channel URL to resolve to a channel id. */
897
+ channel: string;
898
+ [key: string]: unknown;
899
+ }
900
+ interface YouTubeStreamsOptions {
901
+ /** YouTube video id or a full watch URL. */
724
902
  video_id: string;
725
903
  [key: string]: unknown;
726
904
  }
@@ -728,7 +906,231 @@ declare class YouTubeNamespace {
728
906
  private client;
729
907
  constructor(client: Scavio);
730
908
  search(options: YouTubeSearchOptions): Promise<Record<string, unknown>>;
909
+ shorts(options: YouTubeShortsOptions): Promise<Record<string, unknown>>;
910
+ suggestions(options: YouTubeSuggestionsOptions): Promise<Record<string, unknown>>;
911
+ video(options: YouTubeVideoOptions): Promise<Record<string, unknown>>;
912
+ /** @deprecated Use youtube.video(). Alias kept for backward compatibility. */
731
913
  metadata(options: YouTubeMetadataOptions): Promise<Record<string, unknown>>;
914
+ comments(options: YouTubeCommentsOptions): Promise<Record<string, unknown>>;
915
+ commentReplies(options: YouTubeCommentRepliesOptions): Promise<Record<string, unknown>>;
916
+ transcript(options: YouTubeTranscriptOptions): Promise<Record<string, unknown>>;
917
+ related(options: YouTubeRelatedOptions): Promise<Record<string, unknown>>;
918
+ channelSearch(options: YouTubeChannelSearchOptions): Promise<Record<string, unknown>>;
919
+ channel(options: YouTubeChannelOptions): Promise<Record<string, unknown>>;
920
+ channelVideos(options: YouTubeChannelVideosOptions): Promise<Record<string, unknown>>;
921
+ channelShorts(options: YouTubeChannelShortsOptions): Promise<Record<string, unknown>>;
922
+ channelCommunity(options: YouTubeChannelCommunityOptions): Promise<Record<string, unknown>>;
923
+ channelResolve(options: YouTubeChannelResolveOptions): Promise<Record<string, unknown>>;
924
+ streams(options: YouTubeStreamsOptions): Promise<Record<string, unknown>>;
925
+ }
926
+
927
+ interface TwitterSearchOptions {
928
+ /** Search query (1-500 characters). */
929
+ search: string;
930
+ /** Result category (default 'Top'). */
931
+ search_type?: "Top" | "Latest" | "People" | "Photos" | "Videos";
932
+ /** Pagination cursor from a prior response. */
933
+ cursor?: string;
934
+ [key: string]: unknown;
935
+ }
936
+ interface TwitterTweetOptions {
937
+ /** Tweet id. */
938
+ tweet_id: string;
939
+ [key: string]: unknown;
940
+ }
941
+ interface TwitterTweetCommentsOptions {
942
+ /** Tweet id. */
943
+ tweet_id: string;
944
+ /** 'top' (ranked) or 'latest' (chronological); default 'top'. */
945
+ rank?: "top" | "latest";
946
+ /** Pagination cursor from a prior response. */
947
+ cursor?: string;
948
+ [key: string]: unknown;
949
+ }
950
+ interface TwitterTweetRetweetersOptions {
951
+ /** Tweet id. */
952
+ tweet_id: string;
953
+ /** Pagination cursor from a prior response. */
954
+ cursor?: string;
955
+ [key: string]: unknown;
956
+ }
957
+ interface TwitterUserOptions {
958
+ /** A Twitter handle (without the @). */
959
+ screen_name: string;
960
+ [key: string]: unknown;
961
+ }
962
+ interface TwitterUserFeedOptions {
963
+ /** A Twitter handle (without the @). */
964
+ screen_name: string;
965
+ /** Pagination cursor from a prior response. */
966
+ cursor?: string;
967
+ [key: string]: unknown;
968
+ }
969
+ interface TwitterTrendingOptions {
970
+ /** Country name (default 'UnitedStates'). */
971
+ country?: string;
972
+ [key: string]: unknown;
973
+ }
974
+ declare class TwitterNamespace {
975
+ private client;
976
+ constructor(client: Scavio);
977
+ search(options: TwitterSearchOptions): Promise<Record<string, unknown>>;
978
+ tweet(options: TwitterTweetOptions): Promise<Record<string, unknown>>;
979
+ tweetComments(options: TwitterTweetCommentsOptions): Promise<Record<string, unknown>>;
980
+ tweetRetweeters(options: TwitterTweetRetweetersOptions): Promise<Record<string, unknown>>;
981
+ user(options: TwitterUserOptions): Promise<Record<string, unknown>>;
982
+ userTweets(options: TwitterUserFeedOptions): Promise<Record<string, unknown>>;
983
+ userReplies(options: TwitterUserFeedOptions): Promise<Record<string, unknown>>;
984
+ userMedia(options: TwitterUserFeedOptions): Promise<Record<string, unknown>>;
985
+ userFollowers(options: TwitterUserFeedOptions): Promise<Record<string, unknown>>;
986
+ userFollowings(options: TwitterUserFeedOptions): Promise<Record<string, unknown>>;
987
+ trending(options?: TwitterTrendingOptions): Promise<Record<string, unknown>>;
988
+ }
989
+
990
+ interface LinkedInPersonOptions {
991
+ /** Public identifier (vanity handle). */
992
+ username: string;
993
+ /** Include the experiences section (default true server-side). */
994
+ include_experiences?: boolean;
995
+ /** Include the educations section (default true server-side). */
996
+ include_educations?: boolean;
997
+ /** Include the skills section (default true server-side). */
998
+ include_skills?: boolean;
999
+ /** Include the certifications section (default true server-side). */
1000
+ include_certifications?: boolean;
1001
+ /** Include follower and connection counts (default true server-side). */
1002
+ include_follower_and_connection?: boolean;
1003
+ [key: string]: unknown;
1004
+ }
1005
+ interface LinkedInPersonRefOptions {
1006
+ /** Member urn. */
1007
+ urn?: string;
1008
+ /** Public identifier; resolved to a urn if urn is omitted. */
1009
+ username?: string;
1010
+ [key: string]: unknown;
1011
+ }
1012
+ interface LinkedInPersonPostsOptions {
1013
+ /** Member urn. */
1014
+ urn?: string;
1015
+ /** Public identifier; resolved to a urn if urn is omitted. */
1016
+ username?: string;
1017
+ /** Pagination cursor from a prior response. */
1018
+ cursor?: string;
1019
+ [key: string]: unknown;
1020
+ }
1021
+ interface LinkedInPersonContactOptions {
1022
+ /** Public identifier (vanity handle). */
1023
+ username: string;
1024
+ [key: string]: unknown;
1025
+ }
1026
+ interface LinkedInCompanyOptions {
1027
+ /** Company universal name (slug) or LinkedIn company URL. */
1028
+ company: string;
1029
+ [key: string]: unknown;
1030
+ }
1031
+ interface LinkedInCompanyPostsOptions {
1032
+ /** Company universal name (slug) or LinkedIn company URL. */
1033
+ company: string;
1034
+ /** Pagination cursor from a prior response. */
1035
+ cursor?: string;
1036
+ /** Results per page (1-100). */
1037
+ count?: number;
1038
+ [key: string]: unknown;
1039
+ }
1040
+ interface LinkedInCompanyRefOptions {
1041
+ /** Numeric company id. */
1042
+ company_id?: string;
1043
+ /** Company slug/url; resolved to a company_id if company_id is omitted. */
1044
+ company?: string;
1045
+ /** Pagination cursor from a prior response. */
1046
+ cursor?: string;
1047
+ [key: string]: unknown;
1048
+ }
1049
+ interface LinkedInSearchPeopleOptions {
1050
+ /** Name to search for. */
1051
+ search?: string;
1052
+ /** Job title filter. */
1053
+ title?: string;
1054
+ /** Company filter. */
1055
+ company?: string;
1056
+ /** School filter. */
1057
+ school?: string;
1058
+ /** A geo name or id to filter by. */
1059
+ location?: string;
1060
+ /** Page cursor (page number). */
1061
+ cursor?: string;
1062
+ [key: string]: unknown;
1063
+ }
1064
+ interface LinkedInSearchJobsOptions {
1065
+ /** Search query (1-500 characters). */
1066
+ search: string;
1067
+ /** Page cursor (page number). */
1068
+ cursor?: string;
1069
+ /** Date-posted filter. */
1070
+ date_posted?: string;
1071
+ /** Geo code to filter by. */
1072
+ geocode?: string;
1073
+ /** Experience level filter. */
1074
+ experience_level?: string;
1075
+ /** Remote filter. */
1076
+ remote?: string;
1077
+ /** Job type filter. */
1078
+ job_type?: string;
1079
+ [key: string]: unknown;
1080
+ }
1081
+ interface LinkedInSearchPostsOptions {
1082
+ /** Search query (1-500 characters). */
1083
+ search: string;
1084
+ /** Page cursor (page number). */
1085
+ cursor?: string;
1086
+ /** Date-posted filter. */
1087
+ date_posted?: string;
1088
+ /** Sort order. */
1089
+ sort_by?: string;
1090
+ /** Content type filter. */
1091
+ content_type?: string;
1092
+ [key: string]: unknown;
1093
+ }
1094
+ interface LinkedInJobOptions {
1095
+ /** Job listing id. */
1096
+ job_id: string;
1097
+ /** Include the required-skills section. */
1098
+ include_skills?: boolean;
1099
+ [key: string]: unknown;
1100
+ }
1101
+ interface LinkedInPostOptions {
1102
+ /** Post id or activity urn. */
1103
+ post_id: string;
1104
+ [key: string]: unknown;
1105
+ }
1106
+ interface LinkedInPostCommentsOptions {
1107
+ /** Post id or activity urn. */
1108
+ post_id: string;
1109
+ /** Pagination cursor from a prior response. */
1110
+ cursor?: string;
1111
+ /** Comment sort order. */
1112
+ sort_order?: "relevance" | "recent";
1113
+ /** Post type. */
1114
+ post_type?: "activity" | "ugc";
1115
+ [key: string]: unknown;
1116
+ }
1117
+ declare class LinkedInNamespace {
1118
+ private client;
1119
+ constructor(client: Scavio);
1120
+ person(options: LinkedInPersonOptions): Promise<Record<string, unknown>>;
1121
+ personAbout(options: LinkedInPersonRefOptions): Promise<Record<string, unknown>>;
1122
+ personPosts(options: LinkedInPersonPostsOptions): Promise<Record<string, unknown>>;
1123
+ personContact(options: LinkedInPersonContactOptions): Promise<Record<string, unknown>>;
1124
+ company(options: LinkedInCompanyOptions): Promise<Record<string, unknown>>;
1125
+ companyPosts(options: LinkedInCompanyPostsOptions): Promise<Record<string, unknown>>;
1126
+ companyPeople(options: LinkedInCompanyRefOptions): Promise<Record<string, unknown>>;
1127
+ companyJobs(options: LinkedInCompanyRefOptions): Promise<Record<string, unknown>>;
1128
+ searchPeople(options: LinkedInSearchPeopleOptions): Promise<Record<string, unknown>>;
1129
+ searchJobs(options: LinkedInSearchJobsOptions): Promise<Record<string, unknown>>;
1130
+ searchPosts(options: LinkedInSearchPostsOptions): Promise<Record<string, unknown>>;
1131
+ job(options: LinkedInJobOptions): Promise<Record<string, unknown>>;
1132
+ post(options: LinkedInPostOptions): Promise<Record<string, unknown>>;
1133
+ postComments(options: LinkedInPostCommentsOptions): Promise<Record<string, unknown>>;
732
1134
  }
733
1135
 
734
1136
  interface ScavioConfig {
@@ -751,6 +1153,8 @@ declare class Scavio {
751
1153
  readonly reddit: RedditNamespace;
752
1154
  readonly tiktok: TikTokNamespace;
753
1155
  readonly instagram: InstagramNamespace;
1156
+ readonly twitter: TwitterNamespace;
1157
+ readonly linkedin: LinkedInNamespace;
754
1158
  private readonly apiKey;
755
1159
  private readonly baseUrl;
756
1160
  private readonly timeout;
@@ -810,4 +1214,4 @@ declare class ScavioAPIError extends ScavioError {
810
1214
  constructor(statusCode: number, message: string, responseBody?: Record<string, unknown>);
811
1215
  }
812
1216
 
813
- export { type AmazonProductOptions, type AmazonSearchOptions, BadRequestError, type GoogleAiModeOptions, type GoogleFlightsOptions, type GoogleHotelsDetailOptions, type GoogleHotelsOptions, type GoogleMapsPlaceOptions, type GoogleMapsReviewsOptions, type GoogleMapsSearchOptions, type GoogleNewsOptions, type GoogleSearchOptions, type GoogleShoppingOptions, type GoogleShoppingProductOptions, type GoogleShoppingStoresOptions, type GoogleTrendingOptions, type GoogleTrendsOptions, type InstagramCommentRepliesOptions, type InstagramFollowOptions, type InstagramPostCommentsOptions, type InstagramPostOptions, type InstagramProfileOptions, type InstagramSearchOptions, type InstagramStoriesOptions, type InstagramUserFeedOptions, InsufficientCreditsError, InvalidAPIKeyError, MissingAPIKeyError, NotFoundError, RateLimitError, type RedditPostOptions, type RedditSearchOptions, Scavio, ScavioAPIError, type ScavioConfig, ScavioConnectionError, ScavioError, ScavioTimeoutError, type TikTokCommentRepliesOptions, type TikTokHashtagOptions, type TikTokHashtagVideosOptions, type TikTokProfileOptions, type TikTokSearchUsersOptions, type TikTokSearchVideosOptions, type TikTokUserFollowersOptions, type TikTokUserFollowingsOptions, type TikTokUserPostsOptions, type TikTokVideoCommentsOptions, type TikTokVideoOptions, type WalmartProductOptions, type WalmartSearchOptions, type YouTubeMetadataOptions, type YouTubeSearchOptions };
1217
+ export { type AmazonProductOptions, type AmazonSearchOptions, BadRequestError, type GoogleAiModeOptions, type GoogleFlightsOptions, type GoogleHotelsDetailOptions, type GoogleHotelsOptions, type GoogleMapsPlaceOptions, type GoogleMapsReviewsOptions, type GoogleMapsSearchOptions, type GoogleNewsOptions, type GoogleSearchOptions, type GoogleShoppingOptions, type GoogleShoppingProductOptions, type GoogleShoppingStoresOptions, type GoogleTrendingOptions, type GoogleTrendsOptions, type InstagramCommentRepliesOptions, type InstagramFollowOptions, type InstagramPostCommentsOptions, type InstagramPostOptions, type InstagramProfileOptions, type InstagramSearchOptions, type InstagramStoriesOptions, type InstagramUserFeedOptions, InsufficientCreditsError, InvalidAPIKeyError, type LinkedInCompanyOptions, type LinkedInCompanyPostsOptions, type LinkedInCompanyRefOptions, type LinkedInJobOptions, type LinkedInPersonContactOptions, type LinkedInPersonOptions, type LinkedInPersonPostsOptions, type LinkedInPersonRefOptions, type LinkedInPostCommentsOptions, type LinkedInPostOptions, type LinkedInSearchJobsOptions, type LinkedInSearchPeopleOptions, type LinkedInSearchPostsOptions, MissingAPIKeyError, NotFoundError, RateLimitError, type RedditCommentRepliesOptions, type RedditFeedSort, type RedditPopularOptions, type RedditPostCommentsOptions, type RedditPostOptions, type RedditSearchOptions, type RedditSearchSuggestionsOptions, type RedditSort, type RedditSubredditOptions, type RedditSubredditPostsOptions, type RedditUserFeedOptions, type RedditUserOptions, Scavio, ScavioAPIError, type ScavioConfig, ScavioConnectionError, ScavioError, ScavioTimeoutError, type TikTokCommentRepliesOptions, type TikTokHashtagOptions, type TikTokHashtagVideosOptions, type TikTokProfileOptions, type TikTokSearchUsersOptions, type TikTokSearchVideosOptions, type TikTokUserFollowersOptions, type TikTokUserFollowingsOptions, type TikTokUserPostsOptions, type TikTokVideoCommentsOptions, type TikTokVideoOptions, type TwitterSearchOptions, type TwitterTrendingOptions, type TwitterTweetCommentsOptions, type TwitterTweetOptions, type TwitterTweetRetweetersOptions, type TwitterUserFeedOptions, type TwitterUserOptions, type WalmartProductOptions, type WalmartSearchOptions, type YouTubeChannelCommunityOptions, type YouTubeChannelOptions, type YouTubeChannelResolveOptions, type YouTubeChannelSearchOptions, type YouTubeChannelShortsOptions, type YouTubeChannelVideosOptions, type YouTubeCommentRepliesOptions, type YouTubeCommentsOptions, type YouTubeMetadataOptions, type YouTubeRelatedOptions, type YouTubeSearchOptions, type YouTubeShortsOptions, type YouTubeStreamsOptions, type YouTubeSuggestionsOptions, type YouTubeTranscriptOptions, type YouTubeVideoOptions };
package/dist/index.js CHANGED
@@ -354,9 +354,39 @@ var RedditNamespace = class {
354
354
  async search(options) {
355
355
  return this.client._post("/api/v1/reddit/search", options);
356
356
  }
357
+ async searchSuggestions(options) {
358
+ return this.client._post("/api/v1/reddit/search/suggestions", options);
359
+ }
357
360
  async post(options) {
358
361
  return this.client._post("/api/v1/reddit/post", options);
359
362
  }
363
+ async postComments(options) {
364
+ return this.client._post("/api/v1/reddit/post/comments", options);
365
+ }
366
+ async commentReplies(options) {
367
+ return this.client._post("/api/v1/reddit/post/comments/replies", options);
368
+ }
369
+ async subreddit(options) {
370
+ return this.client._post("/api/v1/reddit/subreddit", options);
371
+ }
372
+ async subredditPosts(options) {
373
+ return this.client._post("/api/v1/reddit/subreddit/posts", options);
374
+ }
375
+ async user(options) {
376
+ return this.client._post("/api/v1/reddit/user", options);
377
+ }
378
+ async userPosts(options) {
379
+ return this.client._post("/api/v1/reddit/user/posts", options);
380
+ }
381
+ async userComments(options) {
382
+ return this.client._post("/api/v1/reddit/user/comments", options);
383
+ }
384
+ async popular(options = {}) {
385
+ return this.client._post("/api/v1/reddit/popular", options);
386
+ }
387
+ async trending() {
388
+ return this.client._post("/api/v1/reddit/trending", {});
389
+ }
360
390
  };
361
391
 
362
392
  // src/namespaces/tiktok.ts
@@ -475,8 +505,154 @@ var YouTubeNamespace = class {
475
505
  if (video_3d !== void 0) body["3d"] = video_3d;
476
506
  return this.client._post("/api/v1/youtube/search", body);
477
507
  }
508
+ async shorts(options) {
509
+ const { query, ...rest } = options;
510
+ return this.client._post("/api/v1/youtube/shorts", {
511
+ search: query,
512
+ ...rest
513
+ });
514
+ }
515
+ async suggestions(options) {
516
+ const { query, ...rest } = options;
517
+ return this.client._post("/api/v1/youtube/suggestions", {
518
+ search: query,
519
+ ...rest
520
+ });
521
+ }
522
+ async video(options) {
523
+ return this.client._post("/api/v1/youtube/video", options);
524
+ }
525
+ /** @deprecated Use youtube.video(). Alias kept for backward compatibility. */
478
526
  async metadata(options) {
479
- return this.client._post("/api/v1/youtube/metadata", options);
527
+ return this.video(options);
528
+ }
529
+ async comments(options) {
530
+ return this.client._post("/api/v1/youtube/comments", options);
531
+ }
532
+ async commentReplies(options) {
533
+ return this.client._post("/api/v1/youtube/comments/replies", options);
534
+ }
535
+ async transcript(options) {
536
+ return this.client._post("/api/v1/youtube/transcript", options);
537
+ }
538
+ async related(options) {
539
+ return this.client._post("/api/v1/youtube/related", options);
540
+ }
541
+ async channelSearch(options) {
542
+ const { query, ...rest } = options;
543
+ return this.client._post("/api/v1/youtube/channel/search", {
544
+ search: query,
545
+ ...rest
546
+ });
547
+ }
548
+ async channel(options) {
549
+ return this.client._post("/api/v1/youtube/channel", options);
550
+ }
551
+ async channelVideos(options) {
552
+ return this.client._post("/api/v1/youtube/channel/videos", options);
553
+ }
554
+ async channelShorts(options) {
555
+ return this.client._post("/api/v1/youtube/channel/shorts", options);
556
+ }
557
+ async channelCommunity(options) {
558
+ return this.client._post("/api/v1/youtube/channel/community", options);
559
+ }
560
+ async channelResolve(options) {
561
+ return this.client._post("/api/v1/youtube/channel/resolve", options);
562
+ }
563
+ async streams(options) {
564
+ return this.client._post("/api/v1/youtube/streams", options);
565
+ }
566
+ };
567
+
568
+ // src/namespaces/twitter.ts
569
+ var TwitterNamespace = class {
570
+ constructor(client) {
571
+ this.client = client;
572
+ }
573
+ client;
574
+ async search(options) {
575
+ return this.client._post("/api/v1/twitter/search", options);
576
+ }
577
+ async tweet(options) {
578
+ return this.client._post("/api/v1/twitter/tweet", options);
579
+ }
580
+ async tweetComments(options) {
581
+ return this.client._post("/api/v1/twitter/tweet/comments", options);
582
+ }
583
+ async tweetRetweeters(options) {
584
+ return this.client._post("/api/v1/twitter/tweet/retweeters", options);
585
+ }
586
+ async user(options) {
587
+ return this.client._post("/api/v1/twitter/user", options);
588
+ }
589
+ async userTweets(options) {
590
+ return this.client._post("/api/v1/twitter/user/tweets", options);
591
+ }
592
+ async userReplies(options) {
593
+ return this.client._post("/api/v1/twitter/user/replies", options);
594
+ }
595
+ async userMedia(options) {
596
+ return this.client._post("/api/v1/twitter/user/media", options);
597
+ }
598
+ async userFollowers(options) {
599
+ return this.client._post("/api/v1/twitter/user/followers", options);
600
+ }
601
+ async userFollowings(options) {
602
+ return this.client._post("/api/v1/twitter/user/followings", options);
603
+ }
604
+ async trending(options = {}) {
605
+ return this.client._post("/api/v1/twitter/trending", options);
606
+ }
607
+ };
608
+
609
+ // src/namespaces/linkedin.ts
610
+ var LinkedInNamespace = class {
611
+ constructor(client) {
612
+ this.client = client;
613
+ }
614
+ client;
615
+ async person(options) {
616
+ return this.client._post("/api/v1/linkedin/person", options);
617
+ }
618
+ async personAbout(options) {
619
+ return this.client._post("/api/v1/linkedin/person/about", options);
620
+ }
621
+ async personPosts(options) {
622
+ return this.client._post("/api/v1/linkedin/person/posts", options);
623
+ }
624
+ async personContact(options) {
625
+ return this.client._post("/api/v1/linkedin/person/contact", options);
626
+ }
627
+ async company(options) {
628
+ return this.client._post("/api/v1/linkedin/company", options);
629
+ }
630
+ async companyPosts(options) {
631
+ return this.client._post("/api/v1/linkedin/company/posts", options);
632
+ }
633
+ async companyPeople(options) {
634
+ return this.client._post("/api/v1/linkedin/company/people", options);
635
+ }
636
+ async companyJobs(options) {
637
+ return this.client._post("/api/v1/linkedin/company/jobs", options);
638
+ }
639
+ async searchPeople(options) {
640
+ return this.client._post("/api/v1/linkedin/search/people", options);
641
+ }
642
+ async searchJobs(options) {
643
+ return this.client._post("/api/v1/linkedin/search/jobs", options);
644
+ }
645
+ async searchPosts(options) {
646
+ return this.client._post("/api/v1/linkedin/search/posts", options);
647
+ }
648
+ async job(options) {
649
+ return this.client._post("/api/v1/linkedin/job", options);
650
+ }
651
+ async post(options) {
652
+ return this.client._post("/api/v1/linkedin/post", options);
653
+ }
654
+ async postComments(options) {
655
+ return this.client._post("/api/v1/linkedin/post/comments", options);
480
656
  }
481
657
  };
482
658
 
@@ -489,6 +665,8 @@ var Scavio = class {
489
665
  reddit;
490
666
  tiktok;
491
667
  instagram;
668
+ twitter;
669
+ linkedin;
492
670
  apiKey;
493
671
  baseUrl;
494
672
  timeout;
@@ -514,6 +692,8 @@ var Scavio = class {
514
692
  this.reddit = new RedditNamespace(this);
515
693
  this.tiktok = new TikTokNamespace(this);
516
694
  this.instagram = new InstagramNamespace(this);
695
+ this.twitter = new TwitterNamespace(this);
696
+ this.linkedin = new LinkedInNamespace(this);
517
697
  }
518
698
  /** @internal */
519
699
  async _post(path, body) {