@classytic/social 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.
- package/CHANGELOG.md +65 -0
- package/LICENSE +21 -0
- package/README.md +368 -0
- package/dist/base-Bw7e52V8.mjs +246 -0
- package/dist/base-Bw7e52V8.mjs.map +1 -0
- package/dist/base-DBtKFiSX.d.mts +226 -0
- package/dist/base-DBtKFiSX.d.mts.map +1 -0
- package/dist/chunk-DQk6qfdC.mjs +18 -0
- package/dist/client/index.d.mts +44 -0
- package/dist/client/index.d.mts.map +1 -0
- package/dist/client/index.mjs +154 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/common/index.d.mts +3 -0
- package/dist/common/index.mjs +7 -0
- package/dist/contracts-Cdwa4zlg.d.mts +121 -0
- package/dist/contracts-Cdwa4zlg.d.mts.map +1 -0
- package/dist/contracts-lCa069IK.mjs +221 -0
- package/dist/contracts-lCa069IK.mjs.map +1 -0
- package/dist/env-Bl0cwwjC.mjs +955 -0
- package/dist/env-Bl0cwwjC.mjs.map +1 -0
- package/dist/env-DxOZHf0p.d.mts +394 -0
- package/dist/env-DxOZHf0p.d.mts.map +1 -0
- package/dist/errors-Cm6LeKf7.mjs +32 -0
- package/dist/errors-Cm6LeKf7.mjs.map +1 -0
- package/dist/facebook-l_4CghaA.mjs +95 -0
- package/dist/facebook-l_4CghaA.mjs.map +1 -0
- package/dist/http-DpcLSR1M.mjs +197 -0
- package/dist/http-DpcLSR1M.mjs.map +1 -0
- package/dist/index.d.mts +42 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +71 -0
- package/dist/index.mjs.map +1 -0
- package/dist/instagram-BGaeUFU2.mjs +90 -0
- package/dist/instagram-BGaeUFU2.mjs.map +1 -0
- package/dist/linkedin-70whtVKa.mjs +101 -0
- package/dist/linkedin-70whtVKa.mjs.map +1 -0
- package/dist/meta-D3vcJU1c.mjs +126 -0
- package/dist/meta-D3vcJU1c.mjs.map +1 -0
- package/dist/pkce-jq5II68b.mjs +72 -0
- package/dist/pkce-jq5II68b.mjs.map +1 -0
- package/dist/polling-DZ1apXtA.mjs +25 -0
- package/dist/polling-DZ1apXtA.mjs.map +1 -0
- package/dist/providers/facebook.d.mts +135 -0
- package/dist/providers/facebook.d.mts.map +1 -0
- package/dist/providers/facebook.mjs +450 -0
- package/dist/providers/facebook.mjs.map +1 -0
- package/dist/providers/instagram.d.mts +122 -0
- package/dist/providers/instagram.d.mts.map +1 -0
- package/dist/providers/instagram.mjs +496 -0
- package/dist/providers/instagram.mjs.map +1 -0
- package/dist/providers/linkedin.d.mts +145 -0
- package/dist/providers/linkedin.d.mts.map +1 -0
- package/dist/providers/linkedin.mjs +574 -0
- package/dist/providers/linkedin.mjs.map +1 -0
- package/dist/providers/reddit.d.mts +102 -0
- package/dist/providers/reddit.d.mts.map +1 -0
- package/dist/providers/reddit.mjs +657 -0
- package/dist/providers/reddit.mjs.map +1 -0
- package/dist/providers/telegram.d.mts +139 -0
- package/dist/providers/telegram.d.mts.map +1 -0
- package/dist/providers/telegram.mjs +517 -0
- package/dist/providers/telegram.mjs.map +1 -0
- package/dist/providers/tiktok.d.mts +116 -0
- package/dist/providers/tiktok.d.mts.map +1 -0
- package/dist/providers/tiktok.mjs +676 -0
- package/dist/providers/tiktok.mjs.map +1 -0
- package/dist/providers/twitter.d.mts +150 -0
- package/dist/providers/twitter.d.mts.map +1 -0
- package/dist/providers/twitter.mjs +628 -0
- package/dist/providers/twitter.mjs.map +1 -0
- package/dist/providers/whatsapp.d.mts +79 -0
- package/dist/providers/whatsapp.d.mts.map +1 -0
- package/dist/providers/whatsapp.mjs +376 -0
- package/dist/providers/whatsapp.mjs.map +1 -0
- package/dist/providers/youtube.d.mts +153 -0
- package/dist/providers/youtube.d.mts.map +1 -0
- package/dist/providers/youtube.mjs +902 -0
- package/dist/providers/youtube.mjs.map +1 -0
- package/dist/reddit-B10kS4Se.mjs +126 -0
- package/dist/reddit-B10kS4Se.mjs.map +1 -0
- package/dist/schemas/index.d.mts +819 -0
- package/dist/schemas/index.d.mts.map +1 -0
- package/dist/schemas/index.mjs +31 -0
- package/dist/schemas/index.mjs.map +1 -0
- package/dist/security-BXhfebWm.d.mts +338 -0
- package/dist/security-BXhfebWm.d.mts.map +1 -0
- package/dist/shared-Fvc6xQku.mjs +100 -0
- package/dist/shared-Fvc6xQku.mjs.map +1 -0
- package/dist/telegram-FaUHpZgB.mjs +107 -0
- package/dist/telegram-FaUHpZgB.mjs.map +1 -0
- package/dist/tiktok-B_bMk4G-.mjs +94 -0
- package/dist/tiktok-B_bMk4G-.mjs.map +1 -0
- package/dist/twitter-BC22zfuc.mjs +98 -0
- package/dist/twitter-BC22zfuc.mjs.map +1 -0
- package/dist/types-BFE4psYI.d.mts +102 -0
- package/dist/types-BFE4psYI.d.mts.map +1 -0
- package/dist/types-Bv27tcT0.d.mts +230 -0
- package/dist/types-Bv27tcT0.d.mts.map +1 -0
- package/dist/types-BwkKyqpi.d.mts +253 -0
- package/dist/types-BwkKyqpi.d.mts.map +1 -0
- package/dist/types-CJrHMDV9.mjs +27 -0
- package/dist/types-CJrHMDV9.mjs.map +1 -0
- package/dist/types-ClbVc2rc.d.mts +117 -0
- package/dist/types-ClbVc2rc.d.mts.map +1 -0
- package/dist/types-D91N16Ym.d.mts +242 -0
- package/dist/types-D91N16Ym.d.mts.map +1 -0
- package/dist/types-DfLp_ibQ.d.mts +178 -0
- package/dist/types-DfLp_ibQ.d.mts.map +1 -0
- package/dist/types-DfjDgEoJ.d.mts +88 -0
- package/dist/types-DfjDgEoJ.d.mts.map +1 -0
- package/dist/types-Dp5Z9VBr.mjs +23 -0
- package/dist/types-Dp5Z9VBr.mjs.map +1 -0
- package/dist/types-hriBJTsU.d.mts +129 -0
- package/dist/types-hriBJTsU.d.mts.map +1 -0
- package/dist/types-rn6UuLL8.d.mts +184 -0
- package/dist/types-rn6UuLL8.d.mts.map +1 -0
- package/dist/whatsapp-CFp7ryR4.mjs +101 -0
- package/dist/whatsapp-CFp7ryR4.mjs.map +1 -0
- package/dist/youtube-Bs0fdY7H.mjs +98 -0
- package/dist/youtube-Bs0fdY7H.mjs.map +1 -0
- package/package.json +148 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { d as ProviderMetadata, g as UploadResult, h as UploadParams, i as CredentialField, l as ProviderConfig, o as OAuthTokens, p as TestResult, r as AuthUrlOptions, s as PlatformProvider, t as AccountInfo } from "../base-DBtKFiSX.mjs";
|
|
2
|
+
import { C as YouTubeSearchOrder, D as YouTubeVideoRating, E as YouTubeVideo, O as YouTubeVideoType, S as YouTubeSafeSearch, T as YouTubeUploadOptions, _ as YouTubeCategory, a as ListPlaylistItemsOptions, b as YouTubeLicense, c as ListPlaylistsResult, d as PlaylistItem, f as SearchVideosOptions, g as YouTubeAccountInfo, h as UpdateVideoParams, i as InitUploadSessionResult, l as ListVideosOptions, m as UpdatePlaylistParams, n as CreatePlaylistParams, o as ListPlaylistItemsResult, p as SearchVideosResult, r as InitUploadSessionParams, s as ListPlaylistsOptions, t as AddToPlaylistOptions, u as ListVideosResult, v as YouTubeCredentialData, w as YouTubeUploadMetadata, x as YouTubePlaylist, y as YouTubeCredentials } from "../types-D91N16Ym.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { OAuth2Client } from "google-auth-library";
|
|
5
|
+
|
|
6
|
+
//#region src/providers/youtube/index.d.ts
|
|
7
|
+
declare class YouTubeProvider extends PlatformProvider {
|
|
8
|
+
defaultRedirectUri: string;
|
|
9
|
+
scopes: string[];
|
|
10
|
+
constructor(config?: ProviderConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Create OAuth2 client with dynamic credentials
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
15
|
+
_createOAuthClient(clientId: string, clientSecret: string, redirectUri?: string): OAuth2Client;
|
|
16
|
+
/**
|
|
17
|
+
* Get OAuth authorization URL
|
|
18
|
+
* @param state - State parameter for CSRF protection
|
|
19
|
+
* @param credentials - OAuth credentials {clientId, clientSecret}
|
|
20
|
+
*/
|
|
21
|
+
getAuthUrl(state: string, credentials?: YouTubeCredentials, _options?: AuthUrlOptions): string;
|
|
22
|
+
/**
|
|
23
|
+
* Exchange authorization code for tokens
|
|
24
|
+
* @param code - Authorization code
|
|
25
|
+
* @param credentials - OAuth credentials {clientId, clientSecret}
|
|
26
|
+
*/
|
|
27
|
+
exchangeCode(code: string, credentials?: YouTubeCredentials): Promise<OAuthTokens>;
|
|
28
|
+
/**
|
|
29
|
+
* Refresh access token
|
|
30
|
+
* @param refreshToken - Refresh token
|
|
31
|
+
* @param credentials - OAuth credentials {clientId, clientSecret}
|
|
32
|
+
*/
|
|
33
|
+
refreshToken(refreshToken: string, credentials?: YouTubeCredentials): Promise<OAuthTokens>;
|
|
34
|
+
/**
|
|
35
|
+
* Get account information
|
|
36
|
+
* @param accessToken - Access token
|
|
37
|
+
* @param credentials - OAuth credentials {clientId, clientSecret}
|
|
38
|
+
*/
|
|
39
|
+
getAccountInfo(accessToken: string, credentials?: YouTubeCredentials): Promise<AccountInfo>;
|
|
40
|
+
/**
|
|
41
|
+
* Test credential validity
|
|
42
|
+
*/
|
|
43
|
+
testCredential(credentialData: YouTubeCredentialData): Promise<TestResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Build video metadata for YouTube uploads.
|
|
46
|
+
* Shared between initUploadSession() and uploadVideo().
|
|
47
|
+
*
|
|
48
|
+
* Supports all YouTube Data API v3 fields:
|
|
49
|
+
* - snippet: title, description, tags, categoryId, defaultLanguage
|
|
50
|
+
* - status: privacyStatus, publishAt, license, embeddable, publicStatsViewable, selfDeclaredMadeForKids
|
|
51
|
+
* - recordingDetails: recordingDate
|
|
52
|
+
*/
|
|
53
|
+
private _buildVideoMetadata;
|
|
54
|
+
/**
|
|
55
|
+
* Initialize a resumable upload session (metadata only, no file).
|
|
56
|
+
* Returns a self-authenticating upload URI that the frontend can PUT to directly.
|
|
57
|
+
*
|
|
58
|
+
* Flow: Server calls this → returns uploadUri → Frontend PUTs file to uploadUri
|
|
59
|
+
* The upload URI is valid for ~24 hours and requires no additional auth.
|
|
60
|
+
*/
|
|
61
|
+
initUploadSession(params: InitUploadSessionParams): Promise<InitUploadSessionResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Upload video to YouTube (server-side).
|
|
64
|
+
*
|
|
65
|
+
* Supports two modes:
|
|
66
|
+
* - filePath: Read from local file (original behavior)
|
|
67
|
+
* - videoUrl: Stream-through from URL (no disk IO, for GCS-stored media)
|
|
68
|
+
*/
|
|
69
|
+
uploadVideo(params: UploadParams): Promise<UploadResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Parse a YouTube API video item into a normalized YouTubeVideo.
|
|
72
|
+
*/
|
|
73
|
+
private _parseVideoItem;
|
|
74
|
+
/**
|
|
75
|
+
* Get a single video by ID.
|
|
76
|
+
*
|
|
77
|
+
* @param accessToken - OAuth access token
|
|
78
|
+
* @param videoId - YouTube video ID
|
|
79
|
+
* @param credentials - OAuth credentials { clientId, clientSecret }
|
|
80
|
+
* @returns Normalized video data with snippet, stats, and content details
|
|
81
|
+
*/
|
|
82
|
+
getVideo(accessToken: string, videoId: string, credentials?: YouTubeCredentials): Promise<YouTubeVideo>;
|
|
83
|
+
/**
|
|
84
|
+
* List videos from the authenticated channel.
|
|
85
|
+
*
|
|
86
|
+
* Uses playlistItems.list on the channel's uploads playlist (1 quota unit per call)
|
|
87
|
+
* instead of search.list (100 quota units per call — avoid).
|
|
88
|
+
*
|
|
89
|
+
* For text search within videos use videos.list with a separate search flow.
|
|
90
|
+
*/
|
|
91
|
+
listVideos(accessToken: string, credentials?: YouTubeCredentials, options?: ListVideosOptions): Promise<ListVideosResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Update video metadata (title, description, tags, category, privacy).
|
|
94
|
+
*
|
|
95
|
+
* Only the fields provided in `params` are updated. Omitted fields are left unchanged.
|
|
96
|
+
* Note: You must have ownership of the video.
|
|
97
|
+
*
|
|
98
|
+
* @param accessToken - OAuth access token
|
|
99
|
+
* @param videoId - YouTube video ID to update
|
|
100
|
+
* @param params - Fields to update
|
|
101
|
+
* @param credentials - OAuth credentials { clientId, clientSecret }
|
|
102
|
+
*/
|
|
103
|
+
updateVideo(accessToken: string, videoId: string, params: UpdateVideoParams, credentials?: YouTubeCredentials): Promise<YouTubeVideo>;
|
|
104
|
+
/**
|
|
105
|
+
* Delete a video by ID.
|
|
106
|
+
*
|
|
107
|
+
* @param accessToken - OAuth access token
|
|
108
|
+
* @param videoId - YouTube video ID to delete
|
|
109
|
+
* @param credentials - OAuth credentials { clientId, clientSecret }
|
|
110
|
+
*/
|
|
111
|
+
deleteVideo(accessToken: string, videoId: string, credentials?: YouTubeCredentials): Promise<void>;
|
|
112
|
+
private _parsePlaylist;
|
|
113
|
+
private _parsePlaylistItem;
|
|
114
|
+
createPlaylist(accessToken: string, params: CreatePlaylistParams, credentials?: YouTubeCredentials): Promise<YouTubePlaylist>;
|
|
115
|
+
getPlaylist(accessToken: string, playlistId: string, credentials?: YouTubeCredentials): Promise<YouTubePlaylist>;
|
|
116
|
+
listPlaylists(accessToken: string, credentials?: YouTubeCredentials, options?: ListPlaylistsOptions): Promise<ListPlaylistsResult>;
|
|
117
|
+
updatePlaylist(accessToken: string, playlistId: string, params: UpdatePlaylistParams, credentials?: YouTubeCredentials): Promise<YouTubePlaylist>;
|
|
118
|
+
deletePlaylist(accessToken: string, playlistId: string, credentials?: YouTubeCredentials): Promise<void>;
|
|
119
|
+
addToPlaylist(accessToken: string, playlistId: string, videoId: string, credentials?: YouTubeCredentials, options?: AddToPlaylistOptions): Promise<PlaylistItem>;
|
|
120
|
+
removeFromPlaylist(accessToken: string, playlistItemId: string, credentials?: YouTubeCredentials): Promise<void>;
|
|
121
|
+
listPlaylistItems(accessToken: string, playlistId: string, credentials?: YouTubeCredentials, options?: ListPlaylistItemsOptions): Promise<ListPlaylistItemsResult>;
|
|
122
|
+
/**
|
|
123
|
+
* Search YouTube videos with comprehensive filters.
|
|
124
|
+
* Uses a 2-step approach: search.list → videos.list for full details.
|
|
125
|
+
*/
|
|
126
|
+
searchVideos(accessToken: string, credentials?: YouTubeCredentials, options?: SearchVideosOptions): Promise<SearchVideosResult>;
|
|
127
|
+
/**
|
|
128
|
+
* Get available video categories for a region.
|
|
129
|
+
* @param regionCode - ISO 3166-1 alpha-2 country code (e.g. 'US', 'BD')
|
|
130
|
+
*/
|
|
131
|
+
getVideoCategories(accessToken: string, regionCode: string, credentials?: YouTubeCredentials): Promise<YouTubeCategory[]>;
|
|
132
|
+
/**
|
|
133
|
+
* Rate a video (like, dislike, or remove rating).
|
|
134
|
+
*/
|
|
135
|
+
rateVideo(accessToken: string, videoId: string, rating: YouTubeVideoRating, credentials?: YouTubeCredentials): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Return the zod schema for runtime validation. Consumers can call
|
|
138
|
+
* `z.toJSONSchema(provider.getCredentialZodSchema())` to render UI forms
|
|
139
|
+
* or generate OpenAPI specs.
|
|
140
|
+
*/
|
|
141
|
+
getCredentialZodSchema(): z.ZodType;
|
|
142
|
+
/**
|
|
143
|
+
* Get credential schema for UI (legacy CredentialField[] shape).
|
|
144
|
+
*/
|
|
145
|
+
getCredentialSchema(): CredentialField[];
|
|
146
|
+
/**
|
|
147
|
+
* Get provider metadata for frontend display
|
|
148
|
+
*/
|
|
149
|
+
getMetadata(): ProviderMetadata;
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
export { type AddToPlaylistOptions, type CreatePlaylistParams, type InitUploadSessionParams, type InitUploadSessionResult, type ListPlaylistItemsOptions, type ListPlaylistItemsResult, type ListPlaylistsOptions, type ListPlaylistsResult, type ListVideosOptions, type ListVideosResult, type PlaylistItem, type SearchVideosOptions, type SearchVideosResult, type UpdatePlaylistParams, type UpdateVideoParams, type YouTubeAccountInfo, type YouTubeCategory, type YouTubeCredentialData, type YouTubeCredentials, type YouTubeLicense, type YouTubePlaylist, YouTubeProvider, type YouTubeSafeSearch, type YouTubeSearchOrder, type YouTubeUploadMetadata, type YouTubeUploadOptions, type YouTubeVideo, type YouTubeVideoRating, type YouTubeVideoType };
|
|
153
|
+
//# sourceMappingURL=youtube.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtube.d.mts","names":[],"sources":["../../src/providers/youtube/index.ts"],"mappings":"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"}
|