@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,253 @@
|
|
|
1
|
+
//#region src/providers/whatsapp/types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* WhatsApp Provider Types
|
|
4
|
+
* =======================
|
|
5
|
+
* Type definitions for the WhatsApp Cloud API (Meta Graph API).
|
|
6
|
+
* Fields sourced from: WhatsApp Cloud API reference, n8n WhatsApp node.
|
|
7
|
+
*
|
|
8
|
+
* @see https://developers.facebook.com/docs/whatsapp/cloud-api
|
|
9
|
+
*/
|
|
10
|
+
interface WhatsAppCredentialData {
|
|
11
|
+
accessToken: string;
|
|
12
|
+
/** WhatsApp Business Account ID (NOT Meta Business ID) */
|
|
13
|
+
businessAccountId: string;
|
|
14
|
+
}
|
|
15
|
+
type QualityRating = 'GREEN' | 'YELLOW' | 'RED' | 'UNKNOWN';
|
|
16
|
+
interface PhoneNumber {
|
|
17
|
+
id: string;
|
|
18
|
+
display_phone_number: string;
|
|
19
|
+
verified_name: string;
|
|
20
|
+
quality_rating: QualityRating;
|
|
21
|
+
code_verification_status?: string;
|
|
22
|
+
platform_type?: string;
|
|
23
|
+
throughput?: {
|
|
24
|
+
level: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
type TemplateStatus = 'APPROVED' | 'PENDING' | 'REJECTED' | 'PAUSED' | 'DISABLED';
|
|
28
|
+
type TemplateCategory = 'AUTHENTICATION' | 'MARKETING' | 'UTILITY';
|
|
29
|
+
interface TemplateComponent {
|
|
30
|
+
type: 'HEADER' | 'BODY' | 'FOOTER' | 'BUTTONS';
|
|
31
|
+
format?: 'TEXT' | 'IMAGE' | 'VIDEO' | 'DOCUMENT';
|
|
32
|
+
text?: string;
|
|
33
|
+
example?: {
|
|
34
|
+
body_text?: string[][];
|
|
35
|
+
header_text?: string[];
|
|
36
|
+
};
|
|
37
|
+
buttons?: TemplateButton[];
|
|
38
|
+
}
|
|
39
|
+
interface TemplateButton {
|
|
40
|
+
type: 'PHONE_NUMBER' | 'URL' | 'QUICK_REPLY';
|
|
41
|
+
text: string;
|
|
42
|
+
phone_number?: string;
|
|
43
|
+
url?: string;
|
|
44
|
+
}
|
|
45
|
+
interface MessageTemplate {
|
|
46
|
+
id: string;
|
|
47
|
+
name: string;
|
|
48
|
+
language: string;
|
|
49
|
+
status: TemplateStatus;
|
|
50
|
+
category: TemplateCategory;
|
|
51
|
+
components: TemplateComponent[];
|
|
52
|
+
quality_score?: {
|
|
53
|
+
score: string;
|
|
54
|
+
date: number;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
interface CreateTemplateParams {
|
|
58
|
+
name: string;
|
|
59
|
+
language: string;
|
|
60
|
+
category: string;
|
|
61
|
+
components: TemplateComponent[];
|
|
62
|
+
}
|
|
63
|
+
type WhatsAppMessageType = 'text' | 'image' | 'video' | 'audio' | 'document' | 'location' | 'contacts' | 'template' | 'interactive' | 'reaction' | 'sticker';
|
|
64
|
+
interface MessagePayload {
|
|
65
|
+
to: string;
|
|
66
|
+
type: WhatsAppMessageType;
|
|
67
|
+
text?: {
|
|
68
|
+
body: string;
|
|
69
|
+
preview_url?: boolean;
|
|
70
|
+
};
|
|
71
|
+
image?: MediaMessage;
|
|
72
|
+
video?: MediaMessage;
|
|
73
|
+
audio?: {
|
|
74
|
+
id?: string;
|
|
75
|
+
link?: string;
|
|
76
|
+
};
|
|
77
|
+
document?: MediaMessage & {
|
|
78
|
+
filename?: string;
|
|
79
|
+
};
|
|
80
|
+
location?: LocationMessage;
|
|
81
|
+
contacts?: ContactMessage[];
|
|
82
|
+
template?: TemplateMessage;
|
|
83
|
+
interactive?: InteractiveMessage;
|
|
84
|
+
reaction?: ReactionMessage;
|
|
85
|
+
sticker?: {
|
|
86
|
+
id?: string;
|
|
87
|
+
link?: string;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
interface MediaMessage {
|
|
91
|
+
id?: string;
|
|
92
|
+
link?: string;
|
|
93
|
+
caption?: string;
|
|
94
|
+
}
|
|
95
|
+
interface LocationMessage {
|
|
96
|
+
latitude: number;
|
|
97
|
+
longitude: number;
|
|
98
|
+
name?: string;
|
|
99
|
+
address?: string;
|
|
100
|
+
}
|
|
101
|
+
interface ContactMessage {
|
|
102
|
+
name: {
|
|
103
|
+
formatted_name: string;
|
|
104
|
+
first_name?: string;
|
|
105
|
+
last_name?: string;
|
|
106
|
+
middle_name?: string;
|
|
107
|
+
suffix?: string;
|
|
108
|
+
prefix?: string;
|
|
109
|
+
};
|
|
110
|
+
addresses?: {
|
|
111
|
+
type?: 'HOME' | 'WORK';
|
|
112
|
+
street?: string;
|
|
113
|
+
city?: string;
|
|
114
|
+
state?: string;
|
|
115
|
+
zip?: string;
|
|
116
|
+
country?: string;
|
|
117
|
+
country_code?: string;
|
|
118
|
+
}[];
|
|
119
|
+
phones?: {
|
|
120
|
+
type?: 'CELL' | 'MAIN' | 'IPHONE' | 'HOME' | 'WORK';
|
|
121
|
+
phone: string;
|
|
122
|
+
wa_id?: string;
|
|
123
|
+
}[];
|
|
124
|
+
emails?: {
|
|
125
|
+
type?: 'HOME' | 'WORK';
|
|
126
|
+
email: string;
|
|
127
|
+
}[];
|
|
128
|
+
org?: {
|
|
129
|
+
company?: string;
|
|
130
|
+
department?: string;
|
|
131
|
+
title?: string;
|
|
132
|
+
};
|
|
133
|
+
birthday?: string;
|
|
134
|
+
urls?: {
|
|
135
|
+
type?: 'HOME' | 'WORK';
|
|
136
|
+
url: string;
|
|
137
|
+
}[];
|
|
138
|
+
}
|
|
139
|
+
interface TemplateMessage {
|
|
140
|
+
name: string;
|
|
141
|
+
language: {
|
|
142
|
+
code: string;
|
|
143
|
+
};
|
|
144
|
+
components?: TemplateMessageComponent[];
|
|
145
|
+
}
|
|
146
|
+
interface TemplateMessageComponent {
|
|
147
|
+
type: 'header' | 'body' | 'button';
|
|
148
|
+
parameters?: TemplateParameter[];
|
|
149
|
+
sub_type?: 'quick_reply' | 'url';
|
|
150
|
+
index?: number;
|
|
151
|
+
}
|
|
152
|
+
interface TemplateParameter {
|
|
153
|
+
type: 'text' | 'currency' | 'date_time' | 'image' | 'video' | 'document';
|
|
154
|
+
text?: string;
|
|
155
|
+
currency?: {
|
|
156
|
+
fallback_value: string;
|
|
157
|
+
code: string;
|
|
158
|
+
amount_1000: number;
|
|
159
|
+
};
|
|
160
|
+
date_time?: {
|
|
161
|
+
fallback_value: string;
|
|
162
|
+
};
|
|
163
|
+
image?: {
|
|
164
|
+
link: string;
|
|
165
|
+
};
|
|
166
|
+
video?: {
|
|
167
|
+
link: string;
|
|
168
|
+
};
|
|
169
|
+
document?: {
|
|
170
|
+
link: string;
|
|
171
|
+
filename?: string;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
interface InteractiveMessage {
|
|
175
|
+
type: 'button' | 'list' | 'product' | 'product_list';
|
|
176
|
+
header?: {
|
|
177
|
+
type: 'text' | 'image' | 'video' | 'document';
|
|
178
|
+
text?: string;
|
|
179
|
+
};
|
|
180
|
+
body: {
|
|
181
|
+
text: string;
|
|
182
|
+
};
|
|
183
|
+
footer?: {
|
|
184
|
+
text: string;
|
|
185
|
+
};
|
|
186
|
+
action: Record<string, unknown>;
|
|
187
|
+
}
|
|
188
|
+
interface ReactionMessage {
|
|
189
|
+
message_id: string;
|
|
190
|
+
emoji: string;
|
|
191
|
+
}
|
|
192
|
+
interface WhatsAppSendResult {
|
|
193
|
+
messaging_product: 'whatsapp';
|
|
194
|
+
contacts: {
|
|
195
|
+
input: string;
|
|
196
|
+
wa_id: string;
|
|
197
|
+
}[];
|
|
198
|
+
messages: {
|
|
199
|
+
id: string;
|
|
200
|
+
}[];
|
|
201
|
+
}
|
|
202
|
+
interface UploadMediaResult {
|
|
203
|
+
id: string;
|
|
204
|
+
}
|
|
205
|
+
interface MediaUrlResult {
|
|
206
|
+
url: string;
|
|
207
|
+
mime_type: string;
|
|
208
|
+
sha256: string;
|
|
209
|
+
file_size: number;
|
|
210
|
+
id: string;
|
|
211
|
+
}
|
|
212
|
+
interface SendImageParams {
|
|
213
|
+
to: string;
|
|
214
|
+
imageUrl?: string;
|
|
215
|
+
imageId?: string;
|
|
216
|
+
caption?: string;
|
|
217
|
+
}
|
|
218
|
+
interface SendVideoParams {
|
|
219
|
+
to: string;
|
|
220
|
+
videoUrl?: string;
|
|
221
|
+
videoId?: string;
|
|
222
|
+
caption?: string;
|
|
223
|
+
}
|
|
224
|
+
interface SendDocumentParams {
|
|
225
|
+
to: string;
|
|
226
|
+
documentUrl?: string;
|
|
227
|
+
documentId?: string;
|
|
228
|
+
caption?: string;
|
|
229
|
+
filename?: string;
|
|
230
|
+
}
|
|
231
|
+
interface SendLocationParams {
|
|
232
|
+
to: string;
|
|
233
|
+
latitude: number;
|
|
234
|
+
longitude: number;
|
|
235
|
+
name?: string;
|
|
236
|
+
address?: string;
|
|
237
|
+
}
|
|
238
|
+
interface SendContactParams {
|
|
239
|
+
to: string;
|
|
240
|
+
contacts: ContactMessage[];
|
|
241
|
+
}
|
|
242
|
+
interface SendInteractiveParams {
|
|
243
|
+
to: string;
|
|
244
|
+
interactive: InteractiveMessage;
|
|
245
|
+
}
|
|
246
|
+
interface SendReactionParams {
|
|
247
|
+
to: string;
|
|
248
|
+
messageId: string;
|
|
249
|
+
emoji: string;
|
|
250
|
+
}
|
|
251
|
+
//#endregion
|
|
252
|
+
export { UploadMediaResult as C, WhatsAppSendResult as E, TemplateStatus as S, WhatsAppMessageType as T, SendVideoParams as _, MediaMessage as a, TemplateComponent as b, MessageTemplate as c, SendContactParams as d, SendDocumentParams as f, SendReactionParams as g, SendLocationParams as h, LocationMessage as i, PhoneNumber as l, SendInteractiveParams as m, CreateTemplateParams as n, MediaUrlResult as o, SendImageParams as p, InteractiveMessage as r, MessagePayload as s, ContactMessage as t, ReactionMessage as u, TemplateButton as v, WhatsAppCredentialData as w, TemplateMessage as x, TemplateCategory as y };
|
|
253
|
+
//# sourceMappingURL=types-BwkKyqpi.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-BwkKyqpi.d.mts","names":[],"sources":["../src/providers/whatsapp/types.ts"],"mappings":";;AAaA;;;;;AAUA;;UAViB,sBAAA;EACf,WAAA;EASuB;EAPvB,iBAAA;AAAA;AAAA,KAOU,aAAA;AAAA,UAEK,WAAA;EACf,EAAA;EACA,oBAAA;EACA,aAAA;EACA,cAAA,EAAgB,aAAA;EAChB,wBAAA;EACA,aAAA;EACA,UAAA;IAAe,KAAA;EAAA;AAAA;AAAA,KAOL,cAAA;AAAA,KAEA,gBAAA;AAAA,UAEK,iBAAA;EACf,IAAA;EACA,MAAA;EACA,IAAA;EACA,OAAA;IAAY,SAAA;IAAwB,WAAA;EAAA;EACpC,OAAA,GAAU,cAAA;AAAA;AAAA,UAGK,cAAA;EACf,IAAA;EACA,IAAA;EACA,YAAA;EACA,GAAA;AAAA;AAAA,UAGe,eAAA;EACf,EAAA;EACA,IAAA;EACA,QAAA;EACA,MAAA,EAAQ,cAAA;EACR,QAAA,EAAU,gBAAA;EACV,UAAA,EAAY,iBAAA;EACZ,aAAA;IAAkB,KAAA;IAAe,IAAA;EAAA;AAAA;AAAA,UAGlB,oBAAA;EACf,IAAA;EACA,QAAA;EACA,QAAA;EACA,UAAA,EAAY,iBAAA;AAAA;AAAA,KAOF,mBAAA;AAAA,UAaK,cAAA;EACf,EAAA;EACA,IAAA,EAAM,mBAAA;EACN,IAAA;IAAS,IAAA;IAAc,WAAA;EAAA;EACvB,KAAA,GAAQ,YAAA;EACR,KAAA,GAAQ,YAAA;EACR,KAAA;IAAU,EAAA;IAAa,IAAA;EAAA;EACvB,QAAA,GAAW,YAAA;IAAiB,QAAA;EAAA;EAC5B,QAAA,GAAW,eAAA;EACX,QAAA,GAAW,cAAA;EACX,QAAA,GAAW,eAAA;EACX,WAAA,GAAc,kBAAA;EACd,QAAA,GAAW,eAAA;EACX,OAAA;IAAY,EAAA;IAAa,IAAA;EAAA;AAAA;AAAA,UAGV,YAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,eAAA;EACf,QAAA;EACA,SAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,cAAA;EACf,IAAA;IAAQ,cAAA;IAAwB,UAAA;IAAqB,SAAA;IAAoB,WAAA;IAAsB,MAAA;IAAiB,MAAA;EAAA;EAChH,SAAA;IAAc,IAAA;IAAwB,MAAA;IAAiB,IAAA;IAAe,KAAA;IAAgB,GAAA;IAAc,OAAA;IAAkB,YAAA;EAAA;EACtH,MAAA;IAAW,IAAA;IAAqD,KAAA;IAAe,KAAA;EAAA;EAC/E,MAAA;IAAW,IAAA;IAAwB,KAAA;EAAA;EACnC,GAAA;IAAQ,OAAA;IAAkB,UAAA;IAAqB,KAAA;EAAA;EAC/C,QAAA;EACA,IAAA;IAAS,IAAA;IAAwB,GAAA;EAAA;AAAA;AAAA,UAGlB,eAAA;EACf,IAAA;EACA,QAAA;IAAY,IAAA;EAAA;EACZ,UAAA,GAAa,wBAAA;AAAA;AAAA,UAGE,wBAAA;EACf,IAAA;EACA,UAAA,GAAa,iBAAA;EACb,QAAA;EACA,KAAA;AAAA;AAAA,UAGe,iBAAA;EACf,IAAA;EACA,IAAA;EACA,QAAA;IAAa,cAAA;IAAwB,IAAA;IAAc,WAAA;EAAA;EACnD,SAAA;IAAc,cAAA;EAAA;EACd,KAAA;IAAU,IAAA;EAAA;EACV,KAAA;IAAU,IAAA;EAAA;EACV,QAAA;IAAa,IAAA;IAAc,QAAA;EAAA;AAAA;AAAA,UAGZ,kBAAA;EACf,IAAA;EACA,MAAA;IAAW,IAAA;IAA+C,IAAA;EAAA;EAC1D,IAAA;IAAQ,IAAA;EAAA;EACR,MAAA;IAAW,IAAA;EAAA;EACX,MAAA,EAAQ,MAAA;AAAA;AAAA,UAGO,eAAA;EACf,UAAA;EACA,KAAA;AAAA;AAAA,UAOe,kBAAA;EACf,iBAAA;EACA,QAAA;IAAY,KAAA;IAAe,KAAA;EAAA;EAC3B,QAAA;IAAY,EAAA;EAAA;AAAA;AAAA,UAiBG,iBAAA;EACf,EAAA;AAAA;AAAA,UAGe,cAAA;EACf,GAAA;EACA,SAAA;EACA,MAAA;EACA,SAAA;EACA,EAAA;AAAA;AAAA,UAOe,eAAA;EACf,EAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,UAGe,eAAA;EACf,EAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,UAGe,kBAAA;EACf,EAAA;EACA,WAAA;EACA,UAAA;EACA,OAAA;EACA,QAAA;AAAA;AAAA,UAGe,kBAAA;EACf,EAAA;EACA,QAAA;EACA,SAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,iBAAA;EACf,EAAA;EACA,QAAA,EAAU,cAAA;AAAA;AAAA,UAGK,qBAAA;EACf,EAAA;EACA,WAAA,EAAa,kBAAA;AAAA;AAAA,UAGE,kBAAA;EACf,EAAA;EACA,SAAA;EACA,KAAA;AAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/providers/reddit/types.ts
|
|
2
|
+
const REDDIT_ERROR_HINTS = {
|
|
3
|
+
"401": "Access token expired or invalid. Use the refresh token to get a new access token.",
|
|
4
|
+
"403": "You do not have permission to perform this action. Check your OAuth scopes and ensure the account has the required privileges.",
|
|
5
|
+
"INVALID_GRANT": "The authorization code or refresh token is invalid or has expired. Re-authenticate.",
|
|
6
|
+
"429": "Rate limit exceeded. Reddit allows 100 requests per minute for OAuth. Wait before retrying.",
|
|
7
|
+
"RATELIMIT": "Too many requests. Reddit rate limits are 100 QPM for authenticated requests, averaged over 10 minutes.",
|
|
8
|
+
"SUBREDDIT_NOTALLOWED": "You are not allowed to post in this subreddit. You may be banned or the subreddit may be restricted.",
|
|
9
|
+
"ALREADY_SUB": "This URL has already been submitted to this subreddit. Use resubmit=true to allow duplicates.",
|
|
10
|
+
"NO_SELFS": "This subreddit does not allow text/self posts.",
|
|
11
|
+
"NO_LINKS": "This subreddit does not allow link posts.",
|
|
12
|
+
"TOO_SHORT": "Your post title or body is too short.",
|
|
13
|
+
"TOO_LONG": "Your post title or body exceeds the maximum length.",
|
|
14
|
+
"BAD_SR_NAME": "Invalid subreddit name. Subreddit names must be 3-21 characters, alphanumeric and underscores only.",
|
|
15
|
+
"THREAD_LOCKED": "This thread is locked. New comments cannot be posted.",
|
|
16
|
+
"DELETED_COMMENT": "This comment has been deleted and cannot be replied to.",
|
|
17
|
+
"USER_REQUIRED": "You must be logged in to perform this action.",
|
|
18
|
+
"NO_TEXT": "Self posts require body text.",
|
|
19
|
+
"QUOTA_FILLED": "You have exceeded your daily post quota. Wait before posting again.",
|
|
20
|
+
"404": "The requested resource was not found. Check the subreddit name, post ID, or username.",
|
|
21
|
+
"NOT_FOUND": "The requested resource does not exist.",
|
|
22
|
+
"USER_AGENT": "Reddit requires a descriptive User-Agent header. The current one may be blocked."
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { REDDIT_ERROR_HINTS as t };
|
|
27
|
+
//# sourceMappingURL=types-CJrHMDV9.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-CJrHMDV9.mjs","names":[],"sources":["../src/providers/reddit/types.ts"],"sourcesContent":["/**\n * Reddit Provider Types\n * =====================\n * Type definitions for the Reddit API (OAuth2).\n *\n * @see https://www.reddit.com/dev/api/\n * @see https://github.com/reddit-archive/reddit/wiki/OAuth2\n */\n\n// ---------------------------------------------------------------------------\n// Auth / Credentials\n// ---------------------------------------------------------------------------\n\nexport interface RedditCredentials {\n clientId: string;\n clientSecret: string;\n redirectUri?: string;\n}\n\nexport interface RedditTokenData {\n access_token: string;\n refresh_token?: string;\n expires_in?: number;\n token_type?: string;\n scope?: string;\n}\n\nexport interface RedditCredentialData {\n clientId?: string;\n clientSecret?: string;\n oauthTokenData?: string | RedditTokenData;\n}\n\n// ---------------------------------------------------------------------------\n// Post (Submission)\n// ---------------------------------------------------------------------------\n\nexport type RedditPostKind = 'self' | 'link' | 'image' | 'video' | 'crosspost';\nexport type RedditSortOrder = 'hot' | 'new' | 'rising' | 'top' | 'controversial' | 'best';\nexport type RedditTimeFilter = 'hour' | 'day' | 'week' | 'month' | 'year' | 'all';\n\nexport interface RedditPost {\n id: string;\n /** Fullname (t3_<id>) */\n name: string;\n title: string;\n author: string;\n subreddit: string;\n subredditId: string;\n selftext: string;\n selftextHtml?: string;\n url: string;\n permalink: string;\n domain: string;\n score: number;\n ups: number;\n downs: number;\n numComments: number;\n createdUtc: number;\n isSelf: boolean;\n isVideo: boolean;\n over18: boolean;\n spoiler: boolean;\n stickied: boolean;\n locked: boolean;\n archived: boolean;\n thumbnail?: string;\n linkFlairText?: string;\n authorFlairText?: string;\n /** Direct media URL (images) */\n mediaUrl?: string;\n}\n\nexport interface CreatePostParams {\n /** Target subreddit name (without r/ prefix) */\n subreddit: string;\n title: string;\n /** Post kind: 'self' (text), 'link' (URL), 'image' (image URL) */\n kind: RedditPostKind;\n /** Text content for self posts (Markdown supported) */\n text?: string;\n /** URL for link/image posts */\n url?: string;\n /** Send inbox replies (default true) */\n sendReplies?: boolean;\n /** Mark as NSFW */\n nsfw?: boolean;\n /** Mark as spoiler */\n spoiler?: boolean;\n /** Flair ID */\n flairId?: string;\n /** Flair text */\n flairText?: string;\n /** Allow resubmission of duplicate URLs */\n resubmit?: boolean;\n}\n\nexport interface CreatePostResult {\n id: string;\n name: string;\n url: string;\n}\n\n// ---------------------------------------------------------------------------\n// Comment\n// ---------------------------------------------------------------------------\n\nexport interface RedditComment {\n id: string;\n /** Fullname (t1_<id>) */\n name: string;\n author: string;\n body: string;\n bodyHtml?: string;\n score: number;\n ups: number;\n downs: number;\n createdUtc: number;\n parentId: string;\n linkId: string;\n subreddit: string;\n depth: number;\n isSubmitter: boolean;\n stickied: boolean;\n edited: boolean | number;\n permalink: string;\n}\n\nexport interface CreateCommentParams {\n /** Fullname of parent (t3_ for post, t1_ for comment reply) */\n parentFullname: string;\n /** Comment text (Markdown supported) */\n text: string;\n}\n\n// ---------------------------------------------------------------------------\n// Subreddit\n// ---------------------------------------------------------------------------\n\nexport interface RedditSubreddit {\n id: string;\n name: string;\n displayName: string;\n displayNamePrefixed: string;\n title: string;\n publicDescription: string;\n description?: string;\n subscribers: number;\n activeUserCount?: number;\n createdUtc: number;\n over18: boolean;\n subredditType: 'public' | 'private' | 'restricted' | 'archived';\n iconImg?: string;\n bannerImg?: string;\n communityIcon?: string;\n url: string;\n}\n\nexport interface SubredditRule {\n kind: string;\n shortName: string;\n description: string;\n violationReason: string;\n priority: number;\n createdUtc: number;\n}\n\n// ---------------------------------------------------------------------------\n// User Profile\n// ---------------------------------------------------------------------------\n\nexport type RedditProfileDetail =\n | 'identity' | 'blocked' | 'friends' | 'karma' | 'prefs' | 'saved' | 'trophies';\n\nexport interface RedditUserProfile {\n id: string;\n name: string;\n /** Full account icon URL */\n iconImg?: string;\n createdUtc: number;\n linkKarma: number;\n commentKarma: number;\n totalKarma: number;\n isGold: boolean;\n isMod: boolean;\n hasVerifiedEmail: boolean;\n /** Subreddit-specific karma breakdown */\n subredditKarma?: { subreddit: string; linkKarma: number; commentKarma: number }[];\n}\n\n// ---------------------------------------------------------------------------\n// User (Public)\n// ---------------------------------------------------------------------------\n\nexport type RedditUserDetail = 'about' | 'comments' | 'gilded' | 'overview' | 'submitted';\n\nexport interface RedditUser {\n id: string;\n name: string;\n createdUtc: number;\n linkKarma: number;\n commentKarma: number;\n iconImg?: string;\n isSuspended?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Voting\n// ---------------------------------------------------------------------------\n\nexport type VoteDirection = 1 | 0 | -1;\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\n\nexport interface RedditListingParams {\n /** Number of items (max 100) */\n limit?: number;\n /** Fullname of item to fetch items after */\n after?: string;\n /** Fullname of item to fetch items before */\n before?: string;\n /** Sort order (for subreddit posts) */\n sort?: RedditSortOrder;\n /** Time filter (for top/controversial) */\n time?: RedditTimeFilter;\n}\n\nexport interface RedditListing<T> {\n items: T[];\n after: string | null;\n before: string | null;\n}\n\n// ---------------------------------------------------------------------------\n// Search\n// ---------------------------------------------------------------------------\n\nexport interface RedditSearchParams {\n query: string;\n /** Restrict to a subreddit (omit for site-wide) */\n subreddit?: string;\n /** Sort: relevance, hot, top, new, comments */\n sort?: 'relevance' | 'hot' | 'top' | 'new' | 'comments';\n /** Time filter */\n time?: RedditTimeFilter;\n /** Max results per page (max 100) */\n limit?: number;\n /** Pagination cursor */\n after?: string;\n /** Restrict to self posts or links */\n type?: 'link' | 'sr' | 'user';\n}\n\n// ---------------------------------------------------------------------------\n// API Response Shapes\n// ---------------------------------------------------------------------------\n\nexport interface RedditApiResponse<T = unknown> {\n kind: string;\n data: T & { after?: string; before?: string; children?: Array<{ kind: string; data: T }> };\n}\n\nexport interface RedditApiError {\n error: number;\n message: string;\n reason?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Error Hints\n// ---------------------------------------------------------------------------\n\nexport const REDDIT_ERROR_HINTS: Record<string, string> = {\n // Auth\n '401': 'Access token expired or invalid. Use the refresh token to get a new access token.',\n '403': 'You do not have permission to perform this action. Check your OAuth scopes and ensure the account has the required privileges.',\n 'INVALID_GRANT': 'The authorization code or refresh token is invalid or has expired. Re-authenticate.',\n\n // Rate limits\n '429': 'Rate limit exceeded. Reddit allows 100 requests per minute for OAuth. Wait before retrying.',\n 'RATELIMIT': 'Too many requests. Reddit rate limits are 100 QPM for authenticated requests, averaged over 10 minutes.',\n\n // Content\n 'SUBREDDIT_NOTALLOWED': 'You are not allowed to post in this subreddit. You may be banned or the subreddit may be restricted.',\n 'ALREADY_SUB': 'This URL has already been submitted to this subreddit. Use resubmit=true to allow duplicates.',\n 'NO_SELFS': 'This subreddit does not allow text/self posts.',\n 'NO_LINKS': 'This subreddit does not allow link posts.',\n 'TOO_SHORT': 'Your post title or body is too short.',\n 'TOO_LONG': 'Your post title or body exceeds the maximum length.',\n 'BAD_SR_NAME': 'Invalid subreddit name. Subreddit names must be 3-21 characters, alphanumeric and underscores only.',\n 'THREAD_LOCKED': 'This thread is locked. New comments cannot be posted.',\n 'DELETED_COMMENT': 'This comment has been deleted and cannot be replied to.',\n 'USER_REQUIRED': 'You must be logged in to perform this action.',\n 'NO_TEXT': 'Self posts require body text.',\n 'QUOTA_FILLED': 'You have exceeded your daily post quota. Wait before posting again.',\n\n // Not found\n '404': 'The requested resource was not found. Check the subreddit name, post ID, or username.',\n 'NOT_FOUND': 'The requested resource does not exist.',\n\n // User-Agent\n 'USER_AGENT': 'Reddit requires a descriptive User-Agent header. The current one may be blocked.',\n};\n"],"mappings":";AAkRA,MAAa,qBAA6C;CAExD,OAAO;CACP,OAAO;CACP,iBAAiB;CAGjB,OAAO;CACP,aAAa;CAGb,wBAAwB;CACxB,eAAe;CACf,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,YAAY;CACZ,eAAe;CACf,iBAAiB;CACjB,mBAAmB;CACnB,iBAAiB;CACjB,WAAW;CACX,gBAAgB;CAGhB,OAAO;CACP,aAAa;CAGb,cAAc;CACf"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { o as OAuthTokens, t as AccountInfo } from "./base-DBtKFiSX.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/facebook/types.d.ts
|
|
4
|
+
interface FacebookCredentials {
|
|
5
|
+
appId: string;
|
|
6
|
+
appSecret: string;
|
|
7
|
+
redirectUri?: string;
|
|
8
|
+
}
|
|
9
|
+
interface FacebookCredentialData {
|
|
10
|
+
appId?: string;
|
|
11
|
+
appSecret?: string;
|
|
12
|
+
oauthTokenData?: string | OAuthTokens;
|
|
13
|
+
}
|
|
14
|
+
interface FacebookPage {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
access_token: string;
|
|
18
|
+
category?: string;
|
|
19
|
+
picture?: {
|
|
20
|
+
data?: {
|
|
21
|
+
url?: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
fan_count?: number;
|
|
25
|
+
followers_count?: number;
|
|
26
|
+
}
|
|
27
|
+
interface CreatePostOptions {
|
|
28
|
+
scheduledAt?: Date | string;
|
|
29
|
+
}
|
|
30
|
+
interface CreateLinkPostOptions {
|
|
31
|
+
message?: string;
|
|
32
|
+
scheduledAt?: Date | string;
|
|
33
|
+
}
|
|
34
|
+
interface CreatePhotoPostOptions {
|
|
35
|
+
caption?: string;
|
|
36
|
+
scheduledAt?: Date | string;
|
|
37
|
+
}
|
|
38
|
+
interface CreatePostResult {
|
|
39
|
+
postId: string;
|
|
40
|
+
status: 'scheduled' | 'published';
|
|
41
|
+
scheduledAt?: Date | null;
|
|
42
|
+
}
|
|
43
|
+
interface CreateLinkPostResult {
|
|
44
|
+
postId: string;
|
|
45
|
+
status: 'scheduled' | 'published';
|
|
46
|
+
}
|
|
47
|
+
interface CreatePhotoPostResult {
|
|
48
|
+
postId: string;
|
|
49
|
+
photoId: string;
|
|
50
|
+
status: 'scheduled' | 'published';
|
|
51
|
+
}
|
|
52
|
+
interface FacebookUploadParams {
|
|
53
|
+
videoUrl: string;
|
|
54
|
+
title?: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
tokens: OAuthTokens & {
|
|
57
|
+
pageId?: string;
|
|
58
|
+
pageAccessToken?: string;
|
|
59
|
+
};
|
|
60
|
+
scheduledAt?: Date | string;
|
|
61
|
+
onProgress?: (progress: number) => void;
|
|
62
|
+
}
|
|
63
|
+
interface FacebookAccountInfo extends AccountInfo {
|
|
64
|
+
category?: string;
|
|
65
|
+
fanCount?: number;
|
|
66
|
+
pageAccessToken?: string;
|
|
67
|
+
pageId?: string;
|
|
68
|
+
pages: {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
category?: string;
|
|
72
|
+
profileImage: string | null;
|
|
73
|
+
}[];
|
|
74
|
+
}
|
|
75
|
+
interface FacebookTestResult {
|
|
76
|
+
status: 'OK' | 'Error' | 'Pending';
|
|
77
|
+
message: string;
|
|
78
|
+
data?: {
|
|
79
|
+
channelId: string;
|
|
80
|
+
channelTitle: string;
|
|
81
|
+
profileImage: string | null | undefined;
|
|
82
|
+
pages: FacebookAccountInfo['pages'];
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
interface FacebookPost {
|
|
86
|
+
id: string;
|
|
87
|
+
message?: string;
|
|
88
|
+
created_time: string;
|
|
89
|
+
permalink_url?: string;
|
|
90
|
+
type?: string;
|
|
91
|
+
shares?: {
|
|
92
|
+
count: number;
|
|
93
|
+
};
|
|
94
|
+
likes?: {
|
|
95
|
+
summary: {
|
|
96
|
+
total_count: number;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
comments?: {
|
|
100
|
+
summary: {
|
|
101
|
+
total_count: number;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
type FacebookInsightsPeriod = 'day' | 'week' | 'days_28';
|
|
106
|
+
interface GraphApiErrorResponse {
|
|
107
|
+
error?: {
|
|
108
|
+
message?: string;
|
|
109
|
+
code?: number;
|
|
110
|
+
error_subcode?: number;
|
|
111
|
+
type?: string;
|
|
112
|
+
fbtrace_id?: string;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { CreatePostOptions as a, FacebookCredentialData as c, FacebookPage as d, FacebookPost as f, GraphApiErrorResponse as h, CreatePhotoPostResult as i, FacebookCredentials as l, FacebookUploadParams as m, CreateLinkPostResult as n, CreatePostResult as o, FacebookTestResult as p, CreatePhotoPostOptions as r, FacebookAccountInfo as s, CreateLinkPostOptions as t, FacebookInsightsPeriod as u };
|
|
117
|
+
//# sourceMappingURL=types-ClbVc2rc.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-ClbVc2rc.d.mts","names":[],"sources":["../src/providers/facebook/types.ts"],"mappings":";;;UAaiB,mBAAA;EACf,KAAA;EACA,SAAA;EACA,WAAA;AAAA;AAAA,UAGe,sBAAA;EACf,KAAA;EACA,SAAA;EACA,cAAA,YAA0B,WAAA;AAAA;AAAA,UAOX,YAAA;EACf,EAAA;EACA,IAAA;EACA,YAAA;EACA,QAAA;EACA,OAAA;IAAY,IAAA;MAAS,GAAA;IAAA;EAAA;EACrB,SAAA;EACA,eAAA;AAAA;AAAA,UAOe,iBAAA;EACf,WAAA,GAAc,IAAA;AAAA;AAAA,UAGC,qBAAA;EACf,OAAA;EACA,WAAA,GAAc,IAAA;AAAA;AAAA,UAGC,sBAAA;EACf,OAAA;EACA,WAAA,GAAc,IAAA;AAAA;AAAA,UAGC,gBAAA;EACf,MAAA;EACA,MAAA;EACA,WAAA,GAAc,IAAA;AAAA;AAAA,UAGC,oBAAA;EACf,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,qBAAA;EACf,MAAA;EACA,OAAA;EACA,MAAA;AAAA;AAAA,UAGe,oBAAA;EACf,QAAA;EACA,KAAA;EACA,WAAA;EACA,MAAA,EAAQ,WAAA;IAAgB,MAAA;IAAiB,eAAA;EAAA;EACzC,WAAA,GAAc,IAAA;EACd,UAAA,IAAc,QAAA;AAAA;AAAA,UAOC,mBAAA,SAA4B,WAAA;EAC3C,QAAA;EACA,QAAA;EACA,eAAA;EACA,MAAA;EACA,KAAA;IACE,EAAA;IACA,IAAA;IACA,QAAA;IACA,YAAA;EAAA;AAAA;AAAA,UAQa,kBAAA;EACf,MAAA;EACA,OAAA;EACA,IAAA;IACE,SAAA;IACA,YAAA;IACA,YAAA;IACA,KAAA,EAAO,mBAAA;EAAA;AAAA;AAAA,UAQM,YAAA;EACf,EAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,IAAA;EACA,MAAA;IAAW,KAAA;EAAA;EACX,KAAA;IAAU,OAAA;MAAW,WAAA;IAAA;EAAA;EACrB,QAAA;IAAa,OAAA;MAAW,WAAA;IAAA;EAAA;AAAA;AAAA,KAWd,sBAAA;AAAA,UAcK,qBAAA;EACf,KAAA;IACE,OAAA;IACA,IAAA;IACA,aAAA;IACA,IAAA;IACA,UAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { c as PrivacyLevel, o as OAuthTokens } from "./base-DBtKFiSX.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/youtube/types.d.ts
|
|
4
|
+
interface YouTubeCredentials {
|
|
5
|
+
clientId: string;
|
|
6
|
+
clientSecret: string;
|
|
7
|
+
redirectUri?: string;
|
|
8
|
+
}
|
|
9
|
+
interface YouTubeCredentialData {
|
|
10
|
+
oauthTokenData?: string;
|
|
11
|
+
}
|
|
12
|
+
type YouTubeLicense = 'youtube' | 'creativeCommon';
|
|
13
|
+
interface YouTubeUploadOptions {
|
|
14
|
+
/** Default language for the video's metadata (ISO 639-1 code, e.g. 'en', 'bn') */
|
|
15
|
+
defaultLanguage?: string;
|
|
16
|
+
/** Whether the video can be embedded on other websites */
|
|
17
|
+
embeddable?: boolean;
|
|
18
|
+
/** Video license type */
|
|
19
|
+
license?: YouTubeLicense;
|
|
20
|
+
/** Whether to send a notification to channel subscribers */
|
|
21
|
+
notifySubscribers?: boolean;
|
|
22
|
+
/** Whether extended video statistics are publicly viewable */
|
|
23
|
+
publicStatsViewable?: boolean;
|
|
24
|
+
/** Date and time when the video was recorded (ISO 8601) */
|
|
25
|
+
recordingDate?: string;
|
|
26
|
+
/** Whether the video is designated as child-directed (COPPA compliance) */
|
|
27
|
+
selfDeclaredMadeForKids?: boolean;
|
|
28
|
+
/** Custom thumbnail URL (requires verified account) */
|
|
29
|
+
thumbnailUrl?: string;
|
|
30
|
+
}
|
|
31
|
+
interface InitUploadSessionParams {
|
|
32
|
+
title: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
tags?: string[];
|
|
35
|
+
privacy?: PrivacyLevel;
|
|
36
|
+
categoryId?: string;
|
|
37
|
+
scheduledAt?: string | Date;
|
|
38
|
+
credentials: Record<string, string>;
|
|
39
|
+
tokens: OAuthTokens;
|
|
40
|
+
/** Additional YouTube-specific options */
|
|
41
|
+
options?: YouTubeUploadOptions;
|
|
42
|
+
}
|
|
43
|
+
interface InitUploadSessionResult {
|
|
44
|
+
/** Self-authenticating resumable upload URI (valid ~24 hours, no additional auth needed) */
|
|
45
|
+
uploadUri: string;
|
|
46
|
+
}
|
|
47
|
+
interface YouTubeUploadMetadata {
|
|
48
|
+
snippet: {
|
|
49
|
+
title: string;
|
|
50
|
+
description: string;
|
|
51
|
+
tags: string[];
|
|
52
|
+
categoryId: string;
|
|
53
|
+
defaultLanguage?: string;
|
|
54
|
+
};
|
|
55
|
+
status: {
|
|
56
|
+
privacyStatus: string;
|
|
57
|
+
publishAt?: string;
|
|
58
|
+
license?: YouTubeLicense;
|
|
59
|
+
embeddable?: boolean;
|
|
60
|
+
publicStatsViewable?: boolean;
|
|
61
|
+
selfDeclaredMadeForKids?: boolean;
|
|
62
|
+
};
|
|
63
|
+
recordingDetails?: {
|
|
64
|
+
recordingDate?: string;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
interface YouTubeVideo {
|
|
68
|
+
id: string;
|
|
69
|
+
title: string;
|
|
70
|
+
description: string;
|
|
71
|
+
publishedAt: string;
|
|
72
|
+
thumbnailUrl: string | null;
|
|
73
|
+
channelId: string;
|
|
74
|
+
channelTitle: string;
|
|
75
|
+
tags: string[];
|
|
76
|
+
categoryId: string;
|
|
77
|
+
privacyStatus: string;
|
|
78
|
+
duration: string | null;
|
|
79
|
+
viewCount: string | null;
|
|
80
|
+
likeCount: string | null;
|
|
81
|
+
commentCount: string | null;
|
|
82
|
+
/** ISO 639-1 language code */
|
|
83
|
+
defaultLanguage?: string;
|
|
84
|
+
/** Whether the video can be embedded on other sites */
|
|
85
|
+
embeddable?: boolean;
|
|
86
|
+
/** 'youtube' or 'creativeCommon' */
|
|
87
|
+
license?: string;
|
|
88
|
+
/** Whether the video is designated as child-directed */
|
|
89
|
+
madeForKids?: boolean;
|
|
90
|
+
/** ISO 8601 scheduled publish time (if scheduled) */
|
|
91
|
+
publishAt?: string | null;
|
|
92
|
+
/** Favorite count (deprecated but still returned by API) */
|
|
93
|
+
favoriteCount?: string | null;
|
|
94
|
+
}
|
|
95
|
+
interface ListVideosOptions {
|
|
96
|
+
/** Max results per page (1-50, default 10) */
|
|
97
|
+
maxResults?: number;
|
|
98
|
+
/** Page token for pagination */
|
|
99
|
+
pageToken?: string;
|
|
100
|
+
/** Order: date, rating, relevance, title, viewCount (default: date) */
|
|
101
|
+
order?: 'date' | 'rating' | 'relevance' | 'title' | 'viewCount';
|
|
102
|
+
/** Search query within the channel's videos */
|
|
103
|
+
query?: string;
|
|
104
|
+
}
|
|
105
|
+
interface ListVideosResult {
|
|
106
|
+
videos: YouTubeVideo[];
|
|
107
|
+
nextPageToken: string | null;
|
|
108
|
+
prevPageToken: string | null;
|
|
109
|
+
totalResults: number;
|
|
110
|
+
}
|
|
111
|
+
interface UpdateVideoParams {
|
|
112
|
+
title?: string;
|
|
113
|
+
description?: string;
|
|
114
|
+
tags?: string[];
|
|
115
|
+
categoryId?: string;
|
|
116
|
+
privacy?: PrivacyLevel;
|
|
117
|
+
/** Default language for the video's metadata (ISO 639-1) */
|
|
118
|
+
defaultLanguage?: string;
|
|
119
|
+
/** Whether the video can be embedded on other websites */
|
|
120
|
+
embeddable?: boolean;
|
|
121
|
+
/** Video license type */
|
|
122
|
+
license?: YouTubeLicense;
|
|
123
|
+
/** Whether extended video statistics are publicly viewable */
|
|
124
|
+
publicStatsViewable?: boolean;
|
|
125
|
+
/** Whether the video is designated as child-directed */
|
|
126
|
+
selfDeclaredMadeForKids?: boolean;
|
|
127
|
+
}
|
|
128
|
+
interface YouTubeAccountInfo {
|
|
129
|
+
id: string;
|
|
130
|
+
name: string;
|
|
131
|
+
description: string;
|
|
132
|
+
customUrl: string;
|
|
133
|
+
profileImage?: string;
|
|
134
|
+
subscriberCount?: string;
|
|
135
|
+
videoCount?: string;
|
|
136
|
+
viewCount?: string;
|
|
137
|
+
}
|
|
138
|
+
interface YouTubeCategory {
|
|
139
|
+
id: string;
|
|
140
|
+
title: string;
|
|
141
|
+
assignable: boolean;
|
|
142
|
+
}
|
|
143
|
+
interface YouTubePlaylist {
|
|
144
|
+
id: string;
|
|
145
|
+
title: string;
|
|
146
|
+
description: string;
|
|
147
|
+
publishedAt: string;
|
|
148
|
+
channelId: string;
|
|
149
|
+
thumbnailUrl: string | null;
|
|
150
|
+
itemCount: number;
|
|
151
|
+
privacyStatus: string;
|
|
152
|
+
defaultLanguage?: string;
|
|
153
|
+
}
|
|
154
|
+
interface CreatePlaylistParams {
|
|
155
|
+
title: string;
|
|
156
|
+
description?: string;
|
|
157
|
+
tags?: string[];
|
|
158
|
+
privacy?: PrivacyLevel;
|
|
159
|
+
defaultLanguage?: string;
|
|
160
|
+
}
|
|
161
|
+
interface UpdatePlaylistParams {
|
|
162
|
+
title?: string;
|
|
163
|
+
description?: string;
|
|
164
|
+
tags?: string[];
|
|
165
|
+
privacy?: PrivacyLevel;
|
|
166
|
+
defaultLanguage?: string;
|
|
167
|
+
}
|
|
168
|
+
interface ListPlaylistsOptions {
|
|
169
|
+
maxResults?: number;
|
|
170
|
+
pageToken?: string;
|
|
171
|
+
/** If false, lists all playlists for the channel (default: true) */
|
|
172
|
+
mine?: boolean;
|
|
173
|
+
channelId?: string;
|
|
174
|
+
}
|
|
175
|
+
interface ListPlaylistsResult {
|
|
176
|
+
playlists: YouTubePlaylist[];
|
|
177
|
+
nextPageToken: string | null;
|
|
178
|
+
prevPageToken: string | null;
|
|
179
|
+
totalResults: number;
|
|
180
|
+
}
|
|
181
|
+
interface PlaylistItem {
|
|
182
|
+
id: string;
|
|
183
|
+
playlistId: string;
|
|
184
|
+
videoId: string;
|
|
185
|
+
title: string;
|
|
186
|
+
description: string;
|
|
187
|
+
thumbnailUrl: string | null;
|
|
188
|
+
position: number;
|
|
189
|
+
}
|
|
190
|
+
interface AddToPlaylistOptions {
|
|
191
|
+
/** Position in the playlist (0-based) */
|
|
192
|
+
position?: number;
|
|
193
|
+
/** Note about the playlist item */
|
|
194
|
+
note?: string;
|
|
195
|
+
}
|
|
196
|
+
interface ListPlaylistItemsOptions {
|
|
197
|
+
maxResults?: number;
|
|
198
|
+
pageToken?: string;
|
|
199
|
+
}
|
|
200
|
+
interface ListPlaylistItemsResult {
|
|
201
|
+
items: PlaylistItem[];
|
|
202
|
+
nextPageToken: string | null;
|
|
203
|
+
prevPageToken: string | null;
|
|
204
|
+
totalResults: number;
|
|
205
|
+
}
|
|
206
|
+
type YouTubeSearchOrder = 'date' | 'rating' | 'relevance' | 'title' | 'viewCount';
|
|
207
|
+
type YouTubeSafeSearch = 'moderate' | 'none' | 'strict';
|
|
208
|
+
type YouTubeVideoType = 'any' | 'episode' | 'movie';
|
|
209
|
+
interface SearchVideosOptions {
|
|
210
|
+
/** Search query term */
|
|
211
|
+
q?: string;
|
|
212
|
+
/** Only return videos published after this ISO 8601 datetime */
|
|
213
|
+
publishedAfter?: string;
|
|
214
|
+
/** Only return videos published before this ISO 8601 datetime */
|
|
215
|
+
publishedBefore?: string;
|
|
216
|
+
/** Filter by video category ID */
|
|
217
|
+
videoCategoryId?: string;
|
|
218
|
+
/** Filter by channel ID */
|
|
219
|
+
channelId?: string;
|
|
220
|
+
/** Sort order (default: relevance) */
|
|
221
|
+
order?: YouTubeSearchOrder;
|
|
222
|
+
/** Safe search filtering */
|
|
223
|
+
safeSearch?: YouTubeSafeSearch;
|
|
224
|
+
/** Filter by video type */
|
|
225
|
+
videoType?: YouTubeVideoType;
|
|
226
|
+
/** ISO 3166-1 alpha-2 country code for regional results */
|
|
227
|
+
regionCode?: string;
|
|
228
|
+
/** Max results per page (1-50, default 25) */
|
|
229
|
+
maxResults?: number;
|
|
230
|
+
/** Page token for pagination */
|
|
231
|
+
pageToken?: string;
|
|
232
|
+
}
|
|
233
|
+
interface SearchVideosResult {
|
|
234
|
+
videos: YouTubeVideo[];
|
|
235
|
+
nextPageToken: string | null;
|
|
236
|
+
prevPageToken: string | null;
|
|
237
|
+
totalResults: number;
|
|
238
|
+
}
|
|
239
|
+
type YouTubeVideoRating = 'like' | 'dislike' | 'none';
|
|
240
|
+
//#endregion
|
|
241
|
+
export { YouTubeSearchOrder as C, YouTubeVideoRating as D, YouTubeVideo as E, YouTubeVideoType as O, YouTubeSafeSearch as S, YouTubeUploadOptions as T, YouTubeCategory as _, ListPlaylistItemsOptions as a, YouTubeLicense as b, ListPlaylistsResult as c, PlaylistItem as d, SearchVideosOptions as f, YouTubeAccountInfo as g, UpdateVideoParams as h, InitUploadSessionResult as i, ListVideosOptions as l, UpdatePlaylistParams as m, CreatePlaylistParams as n, ListPlaylistItemsResult as o, SearchVideosResult as p, InitUploadSessionParams as r, ListPlaylistsOptions as s, AddToPlaylistOptions as t, ListVideosResult as u, YouTubeCredentialData as v, YouTubeUploadMetadata as w, YouTubePlaylist as x, YouTubeCredentials as y };
|
|
242
|
+
//# sourceMappingURL=types-D91N16Ym.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-D91N16Ym.d.mts","names":[],"sources":["../src/providers/youtube/types.ts"],"mappings":"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"}
|