@corsair-dev/xquik 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/LICENSE +191 -0
- package/dist/api.test.d.ts +2 -0
- package/dist/api.test.d.ts.map +1 -0
- package/dist/client.d.ts +22 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/endpoints/helpers.d.ts +8 -0
- package/dist/endpoints/helpers.d.ts.map +1 -0
- package/dist/endpoints/index.d.ts +9 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/media.d.ts +4 -0
- package/dist/endpoints/media.d.ts.map +1 -0
- package/dist/endpoints/trends.d.ts +3 -0
- package/dist/endpoints/trends.d.ts.map +1 -0
- package/dist/endpoints/tweets.d.ts +10 -0
- package/dist/endpoints/tweets.d.ts.map +1 -0
- package/dist/endpoints/types.d.ts +1293 -0
- package/dist/endpoints/types.d.ts.map +1 -0
- package/dist/endpoints/users.d.ts +10 -0
- package/dist/endpoints/users.d.ts.map +1 -0
- package/dist/endpoints/webhooks.d.ts +8 -0
- package/dist/endpoints/webhooks.d.ts.map +1 -0
- package/dist/endpoints/write-actions.d.ts +3 -0
- package/dist/endpoints/write-actions.d.ts.map +1 -0
- package/dist/error-handlers.d.ts +47 -0
- package/dist/error-handlers.d.ts.map +1 -0
- package/dist/index.d.ts +805 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/schema/database.d.ts +125 -0
- package/dist/schema/database.d.ts.map +1 -0
- package/dist/schema/index.d.ts +130 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/tsup.config.d.ts +3 -0
- package/dist/tsup.config.d.ts.map +1 -0
- package/dist/webhooks/events.d.ts +4 -0
- package/dist/webhooks/events.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +56 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/types.d.ts +15 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var Xe=Object.defineProperty;var q=(t,o)=>{for(var s in o)Xe(t,s,{get:o[s],enumerable:!0})};var T={};q(T,{download:()=>Re,uploadFromUrl:()=>ve});import{logEventFromContext as V}from"corsair/core";import{ApiError as K,request as Se}from"corsair/http";var Ue="https://xquik.com/api/v1",Ie="2026-04-29",k=class extends Error{constructor(s,p,u){super(s,u);this.code=p;this.name="XquikAPIError",u?.cause instanceof K&&(this.body=u.cause.body,this.rateLimitLimit=u.cause.rateLimitLimit,this.rateLimitRemaining=u.cause.rateLimitRemaining,this.rateLimitReset=u.cause.rateLimitReset,this.retryAfter=u.cause.retryAfter,this.status=u.cause.status,this.statusText=u.cause.statusText)}body;rateLimitLimit;rateLimitRemaining;rateLimitReset;retryAfter;status;statusText};async function n(t,o,s={}){let{baseUrl:p=Ue,body:u,method:g="GET",query:I}=s,Ee={BASE:p,CREDENTIALS:"omit",HEADERS:{"Content-Type":"application/json","x-api-key":o,"xquik-api-contract":Ie},TOKEN:void 0,VERSION:"1.0.0",WITH_CREDENTIALS:!1},Te={body:g==="GET"?void 0:u,mediaType:"application/json; charset=utf-8",method:g,query:g==="GET"?I:void 0,url:t};try{return await Se(Ee,Te)}catch(y){throw y instanceof K?new k(y.message,y.status,{cause:y}):y instanceof Error?new k(y.message,void 0,{cause:y}):new k("Unknown Xquik API error")}}function i(t){return t.baseUrl}function v(t){return t.join(",")}function R(t){return{anyWords:t.anyWords,cashtags:t.cashtags,conversationId:t.conversationId,exactPhrase:t.exactPhrase,excludeWords:t.excludeWords,fromUser:t.fromUser,hashtags:t.hashtags,inReplyToTweetId:t.inReplyToTweetId,language:t.language,mediaType:t.mediaType,mentioning:t.mentioning,minFaves:t.minFaves,minQuotes:t.minQuotes,minReplies:t.minReplies,minRetweets:t.minRetweets,quotes:t.quotes,quotesOfTweetId:t.quotesOfTweetId,replies:t.replies,retweets:t.retweets,retweetsOfTweetId:t.retweetsOfTweetId,sinceDate:t.sinceDate,toUser:t.toUser,untilDate:t.untilDate,url:t.url,verifiedOnly:t.verifiedOnly}}var ve=async(t,o)=>{let s=await n("/x/media",t.key,{baseUrl:i(t.options),body:o,method:"POST"});return await V(t,"xquik.media.uploadFromUrl",{account:o.account},"completed"),s},Re=async(t,o)=>{let s=await n("/x/media/download",t.key,{baseUrl:i(t.options),body:o,method:"POST"});return await V(t,"xquik.media.download",{bulk:o.tweetIds!==void 0},"completed"),s};var A={};q(A,{get:()=>Pe});import{logEventFromContext as Ae}from"corsair/core";var Pe=async(t,o)=>{let s=await n("/x/trends",t.key,{baseUrl:i(t.options),query:{count:o.count,woeid:o.woeid}});return await Ae(t,"xquik.trends.get",{woeid:o.woeid??1},"completed"),s};var c={};q(c,{batch:()=>Ce,create:()=>Oe,deleteTweet:()=>De,get:()=>We,like:()=>Fe,retweet:()=>Me,search:()=>Le,unlike:()=>Ge});import{logEventFromContext as m}from"corsair/core";var Ce=async(t,o)=>{let s=await n("/x/tweets",t.key,{baseUrl:i(t.options),query:{ids:v(o.ids)}});return await m(t,"xquik.tweets.batch",{count:o.ids.length},"completed"),s},We=async(t,o)=>{let s=await n(`/x/tweets/${o.id}`,t.key,{baseUrl:i(t.options)});return await m(t,"xquik.tweets.get",{id:o.id},"completed"),s},Le=async(t,o)=>{let s=await n("/x/tweets/search",t.key,{baseUrl:i(t.options),query:{...R(o),cursor:o.cursor,limit:o.limit,q:o.q,queryType:o.queryType,sinceTime:o.sinceTime,untilTime:o.untilTime}});return await m(t,"xquik.tweets.search",{q:o.q},"completed"),s},Oe=async(t,o)=>{let s=await n("/x/tweets",t.key,{baseUrl:i(t.options),body:o,method:"POST"});return await m(t,"xquik.tweets.create",{account:o.account,pending:"status"in s&&s.status==="pending_confirmation"},"completed"),s},De=async(t,o)=>{let s=await n(`/x/tweets/${o.id}`,t.key,{baseUrl:i(t.options),body:{account:o.account},method:"DELETE"});return await m(t,"xquik.tweets.delete",{id:o.id},"completed"),s},Fe=async(t,o)=>{let s=await n(`/x/tweets/${o.id}/like`,t.key,{baseUrl:i(t.options),body:{account:o.account},method:"POST"});return await m(t,"xquik.tweets.like",{id:o.id},"completed"),s},Ge=async(t,o)=>{let s=await n(`/x/tweets/${o.id}/like`,t.key,{baseUrl:i(t.options),body:{account:o.account},method:"DELETE"});return await m(t,"xquik.tweets.unlike",{id:o.id},"completed"),s},Me=async(t,o)=>{let s=await n(`/x/tweets/${o.id}/retweet`,t.key,{baseUrl:i(t.options),body:{account:o.account},method:"POST"});return await m(t,"xquik.tweets.retweet",{id:o.id},"completed"),s};var d={};q(d,{batch:()=>Be,follow:()=>$e,followers:()=>Ne,following:()=>He,get:()=>_e,search:()=>ze,tweets:()=>je,unfollow:()=>Qe});import{logEventFromContext as h}from"corsair/core";var Be=async(t,o)=>{let s=await n("/x/users/batch",t.key,{baseUrl:i(t.options),query:{ids:v(o.ids)}});return await h(t,"xquik.users.batch",{count:o.ids.length},"completed"),s},_e=async(t,o)=>{let s=await n(`/x/users/${o.id}`,t.key,{baseUrl:i(t.options)});return await h(t,"xquik.users.get",{id:o.id},"completed"),s},ze=async(t,o)=>{let s=await n("/x/users/search",t.key,{baseUrl:i(t.options),query:{cursor:o.cursor,q:o.q}});return await h(t,"xquik.users.search",{q:o.q},"completed"),s},je=async(t,o)=>{let s=await n(`/x/users/${o.id}/tweets`,t.key,{baseUrl:i(t.options),query:{...R(o),cursor:o.cursor,includeParentTweet:o.includeParentTweet,includeReplies:o.includeReplies,pageSize:o.pageSize}});return await h(t,"xquik.users.tweets",{id:o.id},"completed"),s},Ne=async(t,o)=>{let s=await n(`/x/users/${o.id}/followers`,t.key,{baseUrl:i(t.options),query:{cursor:o.cursor,pageSize:o.pageSize}});return await h(t,"xquik.users.followers",{id:o.id},"completed"),s},He=async(t,o)=>{let s=await n(`/x/users/${o.id}/following`,t.key,{baseUrl:i(t.options),query:{cursor:o.cursor,pageSize:o.pageSize}});return await h(t,"xquik.users.following",{id:o.id},"completed"),s},$e=async(t,o)=>{let s=await n(`/x/users/${o.id}/follow`,t.key,{baseUrl:i(t.options),body:{account:o.account},method:"POST"});return await h(t,"xquik.users.follow",{id:o.id},"completed"),s},Qe=async(t,o)=>{let s=await n(`/x/users/${o.id}/follow`,t.key,{baseUrl:i(t.options),body:{account:o.account},method:"DELETE"});return await h(t,"xquik.users.unfollow",{id:o.id},"completed"),s};var w={};q(w,{create:()=>Ve,deactivate:()=>Ye,deliveries:()=>Ze,list:()=>Ke,test:()=>et,update:()=>Je});import{logEventFromContext as x}from"corsair/core";var Ke=async t=>{let o=await n("/webhooks",t.key,{baseUrl:i(t.options)});return await x(t,"xquik.webhooks.list",{count:o.webhooks.length},"completed"),o},Ve=async(t,o)=>{let s=await n("/webhooks",t.key,{baseUrl:i(t.options),body:o,method:"POST"});return await x(t,"xquik.webhooks.create",{eventTypes:o.eventTypes},"completed"),s},Je=async(t,o)=>{let{id:s,...p}=o,u=await n(`/webhooks/${s}`,t.key,{baseUrl:i(t.options),body:p,method:"PATCH"});return await x(t,"xquik.webhooks.update",{id:s},"completed"),u},Ye=async(t,o)=>{let s=await n(`/webhooks/${o.id}`,t.key,{baseUrl:i(t.options),method:"DELETE"});return await x(t,"xquik.webhooks.deactivate",{id:o.id},"completed"),s},Ze=async(t,o)=>{let s=await n(`/webhooks/${o.id}/deliveries`,t.key,{baseUrl:i(t.options)});return await x(t,"xquik.webhooks.deliveries",{id:o.id},"completed"),s},et=async(t,o)=>{let s=await n(`/webhooks/${o.id}/test`,t.key,{baseUrl:i(t.options),method:"POST"});return await x(t,"xquik.webhooks.test",{id:o.id,success:s.success},"completed"),s};var P={};q(P,{get:()=>ot});import{logEventFromContext as tt}from"corsair/core";var ot=async(t,o)=>{let s=await n(`/x/write-actions/${o.id}`,t.key,{baseUrl:i(t.options)});return await tt(t,"xquik.writeActions.get",{id:o.id},"completed"),s};import{z as e}from"zod";var ee=e.enum(["tweet.new","tweet.quote","tweet.reply","tweet.retweet"]),G=e.array(ee).min(1),J=e.string().regex(/^\d{4}-\d{2}-\d{2}$/),f=e.string(),S=e.string().min(1),M=e.string().min(1),B=e.string().min(1),st=e.enum(["gifs","images","links","media","none","videos"]),O=e.enum(["exclude","include","only"]),te=e.object({anyWords:e.string().optional(),cashtags:e.string().optional(),conversationId:e.string().optional(),exactPhrase:e.string().optional(),excludeWords:e.string().optional(),fromUser:e.string().optional(),hashtags:e.string().optional(),inReplyToTweetId:e.string().optional(),language:e.string().optional(),mediaType:st.optional(),mentioning:e.string().optional(),minFaves:e.number().int().min(0).optional(),minQuotes:e.number().int().min(0).optional(),minReplies:e.number().int().min(0).optional(),minRetweets:e.number().int().min(0).optional(),quotes:O.optional(),quotesOfTweetId:e.string().optional(),replies:O.optional(),retweets:O.optional(),retweetsOfTweetId:e.string().optional(),sinceDate:J.optional(),toUser:e.string().optional(),untilDate:J.optional(),url:e.string().optional(),verifiedOnly:e.boolean().optional()}),_=e.object({cursor:e.string().optional()}),oe=e.object({account:B}),se=e.object({mediaUrl:e.string().optional(),type:e.enum(["animated_gif","photo","video"]).optional(),url:e.string().optional()}).passthrough(),U=e.object({coverPicture:e.string().optional(),createdAt:e.string().optional(),description:e.string().optional(),followers:e.number().int().optional(),following:e.number().int().optional(),id:e.string(),location:e.string().optional(),name:e.string(),profilePicture:e.string().optional(),statusesCount:e.number().int().optional(),username:e.string(),verified:e.boolean().optional()}).passthrough(),nt=e.object({followers:e.number().int(),id:e.string(),profilePicture:e.string().optional(),username:e.string(),verified:e.boolean()}).passthrough(),z=e.object({author:U.optional(),bookmarkCount:e.number().int().optional(),conversationId:e.string().optional(),createdAt:e.string().optional(),entities:e.record(e.string(),e.unknown()).optional(),id:e.string(),inReplyToId:e.string().optional(),inReplyToUserId:e.string().optional(),inReplyToUsername:e.string().optional(),isLimitedReply:e.boolean().optional(),isNoteTweet:e.boolean().optional(),isQuoteStatus:e.boolean().optional(),isReply:e.boolean().optional(),lang:e.string().optional(),likeCount:e.number().int().optional(),media:e.array(se).optional(),quoteCount:e.number().int().optional(),replyCount:e.number().int().optional(),retweetCount:e.number().int().optional(),source:e.string().optional(),text:e.string(),type:e.string().optional(),url:e.string().optional(),viewCount:e.number().int().optional()}).passthrough(),j=e.object({bookmarkCount:e.number().int(),conversationId:e.string().optional(),createdAt:e.string().optional(),entities:e.record(e.string(),e.unknown()).optional(),id:e.string(),isNoteTweet:e.boolean().optional(),isQuoteStatus:e.boolean().optional(),isReply:e.boolean().optional(),likeCount:e.number().int(),media:e.array(se).optional(),quoteCount:e.number().int(),replyCount:e.number().int(),retweetCount:e.number().int(),source:e.string().optional(),text:e.string(),viewCount:e.number().int()}).passthrough(),D=e.object({has_next_page:e.boolean(),next_cursor:e.string().nullable().optional(),tweets:e.array(z)}),C=e.object({has_next_page:e.boolean(),next_cursor:e.string().nullable().optional(),users:e.array(U)}),it=e.object({author:nt.optional(),tweet:j}),b=e.object({success:e.literal(!0)}).passthrough(),rt=e.object({charged:e.boolean(),error:e.literal("x_write_unconfirmed"),message:e.string().optional(),retryable:e.literal(!1),status:e.literal("pending_confirmation"),writeActionId:e.string()}),at=e.union([e.object({success:e.literal(!0),tweetId:e.string()}),rt]),ut=e.object({action:e.string(),charged:e.boolean(),confirmationAttempts:e.number().int().optional(),confirmationCheckedAt:e.string().optional(),confirmationSource:e.string().nullable().optional(),confirmedAt:e.string().optional(),createdAt:e.string(),message:e.string().optional(),messageId:e.string().optional(),retryable:e.boolean(),sendDispatched:e.boolean(),sendDispatchedAt:e.string().optional(),status:e.enum(["failed","pending_confirmation","success"]),targetId:e.string().nullable().optional(),tweetId:e.string().optional(),writeActionId:e.string()}).passthrough(),pt=e.object({description:e.string().optional(),name:e.string(),query:e.string().optional(),rank:e.number().int().optional()}).passthrough(),ct=e.object({count:e.number().int(),trends:e.array(pt),woeid:e.number().int()}),dt=e.object({mediaId:e.string(),mediaUrl:e.string().url(),success:e.literal(!0)}),lt=e.object({cacheHit:e.boolean().optional(),galleryUrl:e.string().optional(),totalMedia:e.number().int().optional(),totalTweets:e.number().int().optional(),tweetId:e.string().optional()}).passthrough(),X=e.object({createdAt:f,eventTypes:G,id:e.string(),isActive:e.boolean(),url:e.string().url()}),N=e.object({attempts:e.number().int(),createdAt:f,deliveredAt:f.optional(),id:e.string(),lastError:e.string().optional(),lastStatusCode:e.number().int().optional(),status:e.string(),streamEventId:e.string()}),l=e.object({data:e.record(e.string(),e.unknown()),deliveryId:e.string().optional(),eventType:e.union([ee,e.literal("webhook.test")]),occurredAt:f.optional(),query:e.string().optional(),schemaVersion:e.string().optional(),streamEventId:e.string().optional(),timestamp:f.optional(),username:e.string().optional()}).passthrough(),wt=e.object({error:e.string().optional(),statusCode:e.number().int(),success:e.boolean()}),kt=e.object({ids:e.array(S).min(1).max(100)}),mt=e.object({id:S}),ht=te.merge(_).extend({limit:e.number().int().min(1).max(200).optional(),q:e.string().min(1),queryType:e.enum(["Latest","Top"]).optional(),sinceTime:f.optional(),untilTime:f.optional()}),yt=e.object({account:B,attachment_url:e.string().url().optional(),community_id:e.string().optional(),is_note_tweet:e.boolean().optional(),media:e.array(e.string().url()).max(4).optional(),reply_to_tweet_id:e.string().optional(),text:e.string().optional()}).refine(t=>t.text!==void 0&&t.text.length>0||t.media!==void 0&&t.media.length>0,{message:"Provide text, media, or both."}),W=oe.extend({id:S}),bt=e.object({ids:e.array(M).min(1).max(100)}),H=e.object({id:M}),ft=_.extend({q:e.string().min(1)}),ne=_.extend({pageSize:e.number().int().min(20).max(200).optional()}),gt=H.merge(ne).merge(te).extend({includeParentTweet:e.boolean().optional(),includeReplies:e.boolean().optional()}),Y=H.merge(ne),Z=oe.extend({id:M}),qt=e.object({count:e.number().int().min(1).max(50).optional(),woeid:e.number().int().optional()}),xt=e.object({account:B,url:e.string().url()}),Et=e.object({tweetId:S.optional(),tweetIds:e.array(S).max(50).optional(),tweetInput:e.string().optional(),tweetUrl:e.string().url().optional()}).refine(t=>t.tweetInput!==void 0||t.tweetId!==void 0||t.tweetUrl!==void 0||t.tweetIds!==void 0&&t.tweetIds.length>0,{message:"Provide tweetInput, tweetId, tweetUrl, or tweetIds."}),Tt=e.object({id:e.string().min(1)}),Xt=e.object({}),St=e.object({eventTypes:G,url:e.string().url()}),Ut=e.object({eventTypes:G.optional(),id:e.string().min(1),isActive:e.boolean().optional(),url:e.string().url().optional()}).refine(t=>t.eventTypes!==void 0||t.isActive!==void 0||t.url!==void 0,{message:"Provide at least one webhook field to update."}),F=e.object({id:e.string().min(1)}),r={mediaDownload:Et,mediaUploadFromUrl:xt,trendsGet:qt,tweetsBatch:kt,tweetsCreate:yt,tweetsDelete:W,tweetsGet:mt,tweetsLike:W,tweetsRetweet:W,tweetsSearch:ht,tweetsUnlike:W,usersBatch:bt,usersFollow:Z,usersFollowers:Y,usersFollowing:Y,usersGet:H,usersSearch:ft,usersTweets:gt,usersUnfollow:Z,webhooksCreate:St,webhooksDeactivate:F,webhooksDeliveries:F,webhooksList:Xt,webhooksTest:F,webhooksUpdate:Ut,writeActionsGet:Tt},a={mediaDownload:lt,mediaUploadFromUrl:dt,trendsGet:ct,tweetsBatch:D,tweetsCreate:at,tweetsDelete:b,tweetsGet:it,tweetsLike:b,tweetsRetweet:b,tweetsSearch:D,tweetsUnlike:b,usersBatch:C,usersFollow:b,usersFollowers:C,usersFollowing:C,usersGet:U,usersSearch:C,usersTweets:D,usersUnfollow:b,webhooksCreate:X.extend({secret:e.string()}),webhooksDeactivate:b,webhooksDeliveries:e.object({deliveries:e.array(N)}),webhooksList:e.object({webhooks:e.array(X)}),webhooksTest:wt,webhooksUpdate:X,writeActionsGet:ut};import{ApiError as re}from"corsair/http";function E(t){if(t instanceof re||t instanceof k)return t.status}function ie(t){if(t instanceof re||t instanceof k)return t.retryAfter}var ae={AUTH_ERROR:{match:t=>{let o=E(t),s=t.message.toLowerCase();return o===401||s.includes("unauthorized")||s.includes("invalid api key")},handler:async()=>({maxRetries:0})},PAYMENT_REQUIRED:{match:t=>{let o=E(t),s=t.message.toLowerCase();return o===402||s.includes("insufficient_credits")},handler:async()=>({maxRetries:0})},PERMISSION_ERROR:{match:t=>{let o=E(t),s=t.message.toLowerCase();return o===403||s.includes("account_needs_reauth")||s.includes("account_restricted")},handler:async()=>({maxRetries:0})},RATE_LIMIT_ERROR:{match:t=>{let o=E(t),s=t.message.toLowerCase();return o===429||s.includes("rate_limited")||s.includes("too many requests")},handler:async t=>({headersRetryAfterMs:ie(t),maxRetries:5})},SERVER_ERROR:{match:t=>{let o=E(t);return o===424||o===502||o===503},handler:async t=>({headersRetryAfterMs:ie(t),maxRetries:3})},VALIDATION_ERROR:{match:t=>{let o=E(t);return o===400||o===422},handler:async()=>({maxRetries:0})},DEFAULT:{match:()=>!0,handler:async()=>({maxRetries:0})}};var ue=z.or(j),pe=U,ce=X,de=N,le=l;var we={entities:{deliveries:de,events:le,tweets:ue,users:pe,webhooks:ce},version:"1.0.0"};import{logEventFromContext as ge}from"corsair/core";import{createHmac as It,timingSafeEqual as vt}from"crypto";var me="x-xquik-signature",Rt="x-xquik-timestamp",At="x-xquik-nonce",Pt="sha256=",Ct=300*1e3;function ke(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function he(t){if(typeof t=="string")try{let o=JSON.parse(t);return ke(o)?o:{}}catch{return{}}return ke(t)?t:{}}function L(t,o){let s=t[o]??t[o.toLowerCase()];if(Array.isArray(s))return s[0];if(typeof s=="string")return s;for(let[p,u]of Object.entries(t))if(p.toLowerCase()===o){if(Array.isArray(u))return u[0];if(typeof u=="string")return u}}function Wt(t){let o=Number.parseInt(t,10);return Number.isFinite(o)?Math.abs(Date.now()-o)<=Ct:!1}function Lt(t,o,s){return`${t}.${o}.${s}`}function Ot(t,o,s,p){let u=It("sha256",p).update(Lt(t,o,s)).digest("hex");return`${Pt}${u}`}function ye(t){return L(t.headers,me)!==void 0}function be(t){return o=>{let s=l.safeParse(he(o.body));return s.success&&s.data.eventType===t}}function fe(){return t=>{let o=l.safeParse(he(t.body));return o.success&&o.data.eventType!=="webhook.test"}}function $(t,o){if(o.trim().length===0)return{error:"Missing Xquik webhook secret",valid:!1};let s=L(t.headers,me),p=L(t.headers,Rt),u=L(t.headers,At);if(s===void 0)return{error:"Missing X-Xquik-Signature header",valid:!1};if(p===void 0)return{error:"Missing X-Xquik-Timestamp header",valid:!1};if(u===void 0)return{error:"Missing X-Xquik-Nonce header",valid:!1};if(!Wt(p))return{error:"Stale Xquik webhook timestamp",valid:!1};if(t.rawBody===void 0)return{error:"Missing raw body for signature verification",valid:!1};let g=Ot(p,u,t.rawBody,o);if(g.length!==s.length)return{error:"Invalid Xquik webhook signature",valid:!1};let I=vt(Buffer.from(g),Buffer.from(s));return I?{valid:I}:{error:"Invalid Xquik webhook signature",valid:!1}}var qe={match:fe(),handler:async(t,o)=>{let s=$(o,t.key);if(!s.valid)return{error:s.error??"Xquik webhook signature failed",statusCode:401,success:!1};let p=o.payload;return await ge(t,"xquik.webhook.monitorEvent",{eventType:p.eventType},"completed"),{data:p,success:!0}}},xe={match:be("webhook.test"),handler:async(t,o)=>{let s=$(o,t.key);if(!s.valid)return{error:s.error??"Xquik webhook signature failed",statusCode:401,success:!1};let p=o.payload;return await ge(t,"xquik.webhook.test",{eventType:p.eventType},"completed"),{data:p,success:!0}}};var Q={monitorEvent:qe,test:xe};var Dt={media:{download:T.download,uploadFromUrl:T.uploadFromUrl},trends:{get:A.get},tweets:{batch:c.batch,create:c.create,delete:c.deleteTweet,get:c.get,like:c.like,retweet:c.retweet,search:c.search,unlike:c.unlike},users:{batch:d.batch,follow:d.follow,followers:d.followers,following:d.following,get:d.get,search:d.search,tweets:d.tweets,unfollow:d.unfollow},webhooks:{create:w.create,deactivate:w.deactivate,deliveries:w.deliveries,list:w.list,test:w.test,update:w.update},writeActions:{get:P.get}},Ft={events:{monitor:Q.monitorEvent,test:Q.test}},Gt={"media.download":{input:r.mediaDownload,output:a.mediaDownload},"media.uploadFromUrl":{input:r.mediaUploadFromUrl,output:a.mediaUploadFromUrl},"trends.get":{input:r.trendsGet,output:a.trendsGet},"tweets.batch":{input:r.tweetsBatch,output:a.tweetsBatch},"tweets.create":{input:r.tweetsCreate,output:a.tweetsCreate},"tweets.delete":{input:r.tweetsDelete,output:a.tweetsDelete},"tweets.get":{input:r.tweetsGet,output:a.tweetsGet},"tweets.like":{input:r.tweetsLike,output:a.tweetsLike},"tweets.retweet":{input:r.tweetsRetweet,output:a.tweetsRetweet},"tweets.search":{input:r.tweetsSearch,output:a.tweetsSearch},"tweets.unlike":{input:r.tweetsUnlike,output:a.tweetsUnlike},"users.batch":{input:r.usersBatch,output:a.usersBatch},"users.follow":{input:r.usersFollow,output:a.usersFollow},"users.followers":{input:r.usersFollowers,output:a.usersFollowers},"users.following":{input:r.usersFollowing,output:a.usersFollowing},"users.get":{input:r.usersGet,output:a.usersGet},"users.search":{input:r.usersSearch,output:a.usersSearch},"users.tweets":{input:r.usersTweets,output:a.usersTweets},"users.unfollow":{input:r.usersUnfollow,output:a.usersUnfollow},"webhooks.create":{input:r.webhooksCreate,output:a.webhooksCreate},"webhooks.deactivate":{input:r.webhooksDeactivate,output:a.webhooksDeactivate},"webhooks.deliveries":{input:r.webhooksDeliveries,output:a.webhooksDeliveries},"webhooks.list":{input:r.webhooksList,output:a.webhooksList},"webhooks.test":{input:r.webhooksTest,output:a.webhooksTest},"webhooks.update":{input:r.webhooksUpdate,output:a.webhooksUpdate},"writeActions.get":{input:r.writeActionsGet,output:a.writeActionsGet}},Mt={"events.monitor":{description:"Handle a signed Xquik monitor event delivery",payload:l,response:l},"events.test":{description:"Handle a signed Xquik test webhook delivery",payload:l,response:l}},Bt="api_key",_t={"media.download":{description:"Download images and videos from one or more tweets",riskLevel:"read"},"media.uploadFromUrl":{description:"Upload public media URLs for use in Xquik tweet creation",riskLevel:"write"},"trends.get":{description:"Get trending X topics by WOEID region",riskLevel:"read"},"tweets.batch":{description:"Fetch up to 100 tweets by ID",riskLevel:"read"},"tweets.create":{description:"Create a tweet or reply from a connected X account",riskLevel:"write"},"tweets.delete":{description:"Delete a tweet from a connected X account",irreversible:!0,riskLevel:"destructive"},"tweets.get":{description:"Get a tweet with full text, author, metrics, and media",riskLevel:"read"},"tweets.like":{description:"Like a tweet from a connected X account",riskLevel:"write"},"tweets.retweet":{description:"Retweet a tweet from a connected X account",riskLevel:"write"},"tweets.search":{description:"Search tweets with X query operators and pagination",riskLevel:"read"},"tweets.unlike":{description:"Remove a like from a connected X account",riskLevel:"write"},"users.batch":{description:"Look up up to 100 X users by ID",riskLevel:"read"},"users.follow":{description:"Follow an X user from a connected account",riskLevel:"write"},"users.followers":{description:"List followers of an X user",riskLevel:"read"},"users.following":{description:"List accounts an X user follows",riskLevel:"read"},"users.get":{description:"Get an X user profile by username or user ID",riskLevel:"read"},"users.search":{description:"Search X users by name or username",riskLevel:"read"},"users.tweets":{description:"List recent tweets posted by an X user",riskLevel:"read"},"users.unfollow":{description:"Unfollow an X user from a connected account",riskLevel:"write"},"webhooks.create":{description:"Create an Xquik webhook endpoint subscription",riskLevel:"write"},"webhooks.deactivate":{description:"Deactivate an Xquik webhook endpoint",riskLevel:"write"},"webhooks.deliveries":{description:"List delivery attempts for an Xquik webhook endpoint",riskLevel:"read"},"webhooks.list":{description:"List configured Xquik webhook endpoints",riskLevel:"read"},"webhooks.test":{description:"Send a test delivery to an Xquik webhook endpoint",riskLevel:"write"},"webhooks.update":{description:"Update a Xquik webhook URL, event types, or active state",riskLevel:"write"},"writeActions.get":{description:"Check the status of a pending Xquik write action",riskLevel:"read"}},zt={api_key:{account:["one","webhook_signature"]}};function Go(t={}){let o={...t,authType:t.authType??Bt};return{authConfig:zt,endpointMeta:_t,endpointSchemas:Gt,endpoints:Dt,errorHandlers:{...ae,...o.errorHandlers},hooks:o.hooks,id:"xquik",keyBuilder:async(s,p)=>{if(p==="webhook"&&o.webhookSecret)return o.webhookSecret;if(p==="webhook")return await s.keys.get_webhook_signature()??"";if(p==="endpoint"&&o.key)return o.key;if(p==="endpoint"&&s.authType==="api_key")return await s.keys.get_api_key()??"";throw new Error(`[auth-missing:xquik:${s.authType}]: Xquik key is missing`)},options:o,pluginWebhookMatcher:ye,schema:we,webhookHooks:o.webhookHooks,webhookSchemas:Mt,webhooks:Ft}}export{Go as xquik,zt as xquikAuthConfig,Gt as xquikEndpointSchemas};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export declare const XquikTweet: import("zod").ZodUnion<[import("zod").ZodObject<{
|
|
2
|
+
author: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
3
|
+
coverPicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
4
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
5
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
6
|
+
followers: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
7
|
+
following: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
8
|
+
id: import("zod").ZodString;
|
|
9
|
+
location: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
|
+
name: import("zod").ZodString;
|
|
11
|
+
profilePicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12
|
+
statusesCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
13
|
+
username: import("zod").ZodString;
|
|
14
|
+
verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
15
|
+
}, import("zod/v4/core").$loose>>;
|
|
16
|
+
bookmarkCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
17
|
+
conversationId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
18
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
19
|
+
entities: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
20
|
+
id: import("zod").ZodString;
|
|
21
|
+
inReplyToId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
22
|
+
inReplyToUserId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
23
|
+
inReplyToUsername: import("zod").ZodOptional<import("zod").ZodString>;
|
|
24
|
+
isLimitedReply: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
25
|
+
isNoteTweet: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
26
|
+
isQuoteStatus: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
27
|
+
isReply: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
28
|
+
lang: import("zod").ZodOptional<import("zod").ZodString>;
|
|
29
|
+
likeCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
30
|
+
media: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
31
|
+
mediaUrl: import("zod").ZodOptional<import("zod").ZodString>;
|
|
32
|
+
type: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
33
|
+
animated_gif: "animated_gif";
|
|
34
|
+
photo: "photo";
|
|
35
|
+
video: "video";
|
|
36
|
+
}>>;
|
|
37
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
38
|
+
}, import("zod/v4/core").$loose>>>;
|
|
39
|
+
quoteCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
40
|
+
replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
41
|
+
retweetCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
42
|
+
source: import("zod").ZodOptional<import("zod").ZodString>;
|
|
43
|
+
text: import("zod").ZodString;
|
|
44
|
+
type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
45
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
46
|
+
viewCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
47
|
+
}, import("zod/v4/core").$loose>, import("zod").ZodObject<{
|
|
48
|
+
bookmarkCount: import("zod").ZodNumber;
|
|
49
|
+
conversationId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
50
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
51
|
+
entities: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
52
|
+
id: import("zod").ZodString;
|
|
53
|
+
isNoteTweet: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
54
|
+
isQuoteStatus: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
55
|
+
isReply: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
56
|
+
likeCount: import("zod").ZodNumber;
|
|
57
|
+
media: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
58
|
+
mediaUrl: import("zod").ZodOptional<import("zod").ZodString>;
|
|
59
|
+
type: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
60
|
+
animated_gif: "animated_gif";
|
|
61
|
+
photo: "photo";
|
|
62
|
+
video: "video";
|
|
63
|
+
}>>;
|
|
64
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
65
|
+
}, import("zod/v4/core").$loose>>>;
|
|
66
|
+
quoteCount: import("zod").ZodNumber;
|
|
67
|
+
replyCount: import("zod").ZodNumber;
|
|
68
|
+
retweetCount: import("zod").ZodNumber;
|
|
69
|
+
source: import("zod").ZodOptional<import("zod").ZodString>;
|
|
70
|
+
text: import("zod").ZodString;
|
|
71
|
+
viewCount: import("zod").ZodNumber;
|
|
72
|
+
}, import("zod/v4/core").$loose>]>;
|
|
73
|
+
export declare const XquikUser: import("zod").ZodObject<{
|
|
74
|
+
coverPicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
75
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
76
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
77
|
+
followers: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
78
|
+
following: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
79
|
+
id: import("zod").ZodString;
|
|
80
|
+
location: import("zod").ZodOptional<import("zod").ZodString>;
|
|
81
|
+
name: import("zod").ZodString;
|
|
82
|
+
profilePicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
83
|
+
statusesCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
84
|
+
username: import("zod").ZodString;
|
|
85
|
+
verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
86
|
+
}, import("zod/v4/core").$loose>;
|
|
87
|
+
export declare const XquikWebhookEndpoint: import("zod").ZodObject<{
|
|
88
|
+
createdAt: import("zod").ZodString;
|
|
89
|
+
eventTypes: import("zod").ZodArray<import("zod").ZodEnum<{
|
|
90
|
+
"tweet.new": "tweet.new";
|
|
91
|
+
"tweet.quote": "tweet.quote";
|
|
92
|
+
"tweet.reply": "tweet.reply";
|
|
93
|
+
"tweet.retweet": "tweet.retweet";
|
|
94
|
+
}>>;
|
|
95
|
+
id: import("zod").ZodString;
|
|
96
|
+
isActive: import("zod").ZodBoolean;
|
|
97
|
+
url: import("zod").ZodString;
|
|
98
|
+
}, import("zod/v4/core").$strip>;
|
|
99
|
+
export declare const XquikWebhookDelivery: import("zod").ZodObject<{
|
|
100
|
+
attempts: import("zod").ZodNumber;
|
|
101
|
+
createdAt: import("zod").ZodString;
|
|
102
|
+
deliveredAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
103
|
+
id: import("zod").ZodString;
|
|
104
|
+
lastError: import("zod").ZodOptional<import("zod").ZodString>;
|
|
105
|
+
lastStatusCode: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
106
|
+
status: import("zod").ZodString;
|
|
107
|
+
streamEventId: import("zod").ZodString;
|
|
108
|
+
}, import("zod/v4/core").$strip>;
|
|
109
|
+
export declare const XquikEvent: import("zod").ZodObject<{
|
|
110
|
+
data: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
111
|
+
deliveryId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
112
|
+
eventType: import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
|
|
113
|
+
"tweet.new": "tweet.new";
|
|
114
|
+
"tweet.quote": "tweet.quote";
|
|
115
|
+
"tweet.reply": "tweet.reply";
|
|
116
|
+
"tweet.retweet": "tweet.retweet";
|
|
117
|
+
}>, import("zod").ZodLiteral<"webhook.test">]>;
|
|
118
|
+
occurredAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
119
|
+
query: import("zod").ZodOptional<import("zod").ZodString>;
|
|
120
|
+
schemaVersion: import("zod").ZodOptional<import("zod").ZodString>;
|
|
121
|
+
streamEventId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
122
|
+
timestamp: import("zod").ZodOptional<import("zod").ZodString>;
|
|
123
|
+
username: import("zod").ZodOptional<import("zod").ZodString>;
|
|
124
|
+
}, import("zod/v4/core").$loose>;
|
|
125
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAA0C,CAAC;AAClE,eAAO,MAAM,SAAS;;;;;;;;;;;;;gCAAoB,CAAC;AAC3C,eAAO,MAAM,oBAAoB;;;;;;;;;;;gCAAgB,CAAC;AAClD,eAAO,MAAM,oBAAoB;;;;;;;;;gCAAiB,CAAC;AACnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;gCAAqB,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export declare const XquikSchema: {
|
|
2
|
+
readonly entities: {
|
|
3
|
+
readonly deliveries: import("zod").ZodObject<{
|
|
4
|
+
attempts: import("zod").ZodNumber;
|
|
5
|
+
createdAt: import("zod").ZodString;
|
|
6
|
+
deliveredAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
7
|
+
id: import("zod").ZodString;
|
|
8
|
+
lastError: import("zod").ZodOptional<import("zod").ZodString>;
|
|
9
|
+
lastStatusCode: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
10
|
+
status: import("zod").ZodString;
|
|
11
|
+
streamEventId: import("zod").ZodString;
|
|
12
|
+
}, import("zod/v4/core").$strip>;
|
|
13
|
+
readonly events: import("zod").ZodObject<{
|
|
14
|
+
data: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
15
|
+
deliveryId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
16
|
+
eventType: import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
|
|
17
|
+
"tweet.new": "tweet.new";
|
|
18
|
+
"tweet.quote": "tweet.quote";
|
|
19
|
+
"tweet.reply": "tweet.reply";
|
|
20
|
+
"tweet.retweet": "tweet.retweet";
|
|
21
|
+
}>, import("zod").ZodLiteral<"webhook.test">]>;
|
|
22
|
+
occurredAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
23
|
+
query: import("zod").ZodOptional<import("zod").ZodString>;
|
|
24
|
+
schemaVersion: import("zod").ZodOptional<import("zod").ZodString>;
|
|
25
|
+
streamEventId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
26
|
+
timestamp: import("zod").ZodOptional<import("zod").ZodString>;
|
|
27
|
+
username: import("zod").ZodOptional<import("zod").ZodString>;
|
|
28
|
+
}, import("zod/v4/core").$loose>;
|
|
29
|
+
readonly tweets: import("zod").ZodUnion<[import("zod").ZodObject<{
|
|
30
|
+
author: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
31
|
+
coverPicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
32
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
33
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
34
|
+
followers: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
35
|
+
following: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
36
|
+
id: import("zod").ZodString;
|
|
37
|
+
location: import("zod").ZodOptional<import("zod").ZodString>;
|
|
38
|
+
name: import("zod").ZodString;
|
|
39
|
+
profilePicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
40
|
+
statusesCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
41
|
+
username: import("zod").ZodString;
|
|
42
|
+
verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
43
|
+
}, import("zod/v4/core").$loose>>;
|
|
44
|
+
bookmarkCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
45
|
+
conversationId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
46
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
47
|
+
entities: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
48
|
+
id: import("zod").ZodString;
|
|
49
|
+
inReplyToId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
50
|
+
inReplyToUserId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
51
|
+
inReplyToUsername: import("zod").ZodOptional<import("zod").ZodString>;
|
|
52
|
+
isLimitedReply: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
53
|
+
isNoteTweet: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
54
|
+
isQuoteStatus: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
55
|
+
isReply: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
56
|
+
lang: import("zod").ZodOptional<import("zod").ZodString>;
|
|
57
|
+
likeCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
58
|
+
media: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
59
|
+
mediaUrl: import("zod").ZodOptional<import("zod").ZodString>;
|
|
60
|
+
type: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
61
|
+
animated_gif: "animated_gif";
|
|
62
|
+
photo: "photo";
|
|
63
|
+
video: "video";
|
|
64
|
+
}>>;
|
|
65
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
66
|
+
}, import("zod/v4/core").$loose>>>;
|
|
67
|
+
quoteCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
68
|
+
replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
69
|
+
retweetCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
70
|
+
source: import("zod").ZodOptional<import("zod").ZodString>;
|
|
71
|
+
text: import("zod").ZodString;
|
|
72
|
+
type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
73
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
74
|
+
viewCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
75
|
+
}, import("zod/v4/core").$loose>, import("zod").ZodObject<{
|
|
76
|
+
bookmarkCount: import("zod").ZodNumber;
|
|
77
|
+
conversationId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
78
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
79
|
+
entities: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
80
|
+
id: import("zod").ZodString;
|
|
81
|
+
isNoteTweet: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
82
|
+
isQuoteStatus: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
83
|
+
isReply: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
84
|
+
likeCount: import("zod").ZodNumber;
|
|
85
|
+
media: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
86
|
+
mediaUrl: import("zod").ZodOptional<import("zod").ZodString>;
|
|
87
|
+
type: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
88
|
+
animated_gif: "animated_gif";
|
|
89
|
+
photo: "photo";
|
|
90
|
+
video: "video";
|
|
91
|
+
}>>;
|
|
92
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
93
|
+
}, import("zod/v4/core").$loose>>>;
|
|
94
|
+
quoteCount: import("zod").ZodNumber;
|
|
95
|
+
replyCount: import("zod").ZodNumber;
|
|
96
|
+
retweetCount: import("zod").ZodNumber;
|
|
97
|
+
source: import("zod").ZodOptional<import("zod").ZodString>;
|
|
98
|
+
text: import("zod").ZodString;
|
|
99
|
+
viewCount: import("zod").ZodNumber;
|
|
100
|
+
}, import("zod/v4/core").$loose>]>;
|
|
101
|
+
readonly users: import("zod").ZodObject<{
|
|
102
|
+
coverPicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
103
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodString>;
|
|
104
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
105
|
+
followers: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
106
|
+
following: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
107
|
+
id: import("zod").ZodString;
|
|
108
|
+
location: import("zod").ZodOptional<import("zod").ZodString>;
|
|
109
|
+
name: import("zod").ZodString;
|
|
110
|
+
profilePicture: import("zod").ZodOptional<import("zod").ZodString>;
|
|
111
|
+
statusesCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
112
|
+
username: import("zod").ZodString;
|
|
113
|
+
verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
114
|
+
}, import("zod/v4/core").$loose>;
|
|
115
|
+
readonly webhooks: import("zod").ZodObject<{
|
|
116
|
+
createdAt: import("zod").ZodString;
|
|
117
|
+
eventTypes: import("zod").ZodArray<import("zod").ZodEnum<{
|
|
118
|
+
"tweet.new": "tweet.new";
|
|
119
|
+
"tweet.quote": "tweet.quote";
|
|
120
|
+
"tweet.reply": "tweet.reply";
|
|
121
|
+
"tweet.retweet": "tweet.retweet";
|
|
122
|
+
}>>;
|
|
123
|
+
id: import("zod").ZodString;
|
|
124
|
+
isActive: import("zod").ZodBoolean;
|
|
125
|
+
url: import("zod").ZodString;
|
|
126
|
+
}, import("zod/v4/core").$strip>;
|
|
127
|
+
};
|
|
128
|
+
readonly version: "1.0.0";
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASd,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: import("tsup").Options | import("tsup").Options[] | ((overrideOptions: import("tsup").Options) => import("tsup").Options | import("tsup").Options[] | Promise<import("tsup").Options | import("tsup").Options[]>);
|
|
2
|
+
export default _default;
|
|
3
|
+
//# sourceMappingURL=tsup.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsup.config.d.ts","sourceRoot":"","sources":["../tsup.config.ts"],"names":[],"mappings":";AAEA,wBAYG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../webhooks/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO9C,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,cAAc,CAwBtD,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,aAAa,CAAC,MAAM,CAwBtC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare const EventWebhooks: {
|
|
2
|
+
monitorEvent: {
|
|
3
|
+
match: import("corsair/core").CorsairWebhookMatcher;
|
|
4
|
+
handler: import("corsair/core").CorsairWebhookHandler<import("..").XquikContext, {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
data: Record<string, unknown>;
|
|
7
|
+
eventType: "tweet.new" | "tweet.quote" | "tweet.reply" | "tweet.retweet" | "webhook.test";
|
|
8
|
+
deliveryId?: string | undefined;
|
|
9
|
+
occurredAt?: string | undefined;
|
|
10
|
+
query?: string | undefined;
|
|
11
|
+
schemaVersion?: string | undefined;
|
|
12
|
+
streamEventId?: string | undefined;
|
|
13
|
+
timestamp?: string | undefined;
|
|
14
|
+
username?: string | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
[x: string]: unknown;
|
|
17
|
+
data: Record<string, unknown>;
|
|
18
|
+
eventType: "tweet.new" | "tweet.quote" | "tweet.reply" | "tweet.retweet" | "webhook.test";
|
|
19
|
+
deliveryId?: string | undefined;
|
|
20
|
+
occurredAt?: string | undefined;
|
|
21
|
+
query?: string | undefined;
|
|
22
|
+
schemaVersion?: string | undefined;
|
|
23
|
+
streamEventId?: string | undefined;
|
|
24
|
+
timestamp?: string | undefined;
|
|
25
|
+
username?: string | undefined;
|
|
26
|
+
}>;
|
|
27
|
+
};
|
|
28
|
+
test: {
|
|
29
|
+
match: import("corsair/core").CorsairWebhookMatcher;
|
|
30
|
+
handler: import("corsair/core").CorsairWebhookHandler<import("..").XquikContext, {
|
|
31
|
+
[x: string]: unknown;
|
|
32
|
+
data: Record<string, unknown>;
|
|
33
|
+
eventType: "tweet.new" | "tweet.quote" | "tweet.reply" | "tweet.retweet" | "webhook.test";
|
|
34
|
+
deliveryId?: string | undefined;
|
|
35
|
+
occurredAt?: string | undefined;
|
|
36
|
+
query?: string | undefined;
|
|
37
|
+
schemaVersion?: string | undefined;
|
|
38
|
+
streamEventId?: string | undefined;
|
|
39
|
+
timestamp?: string | undefined;
|
|
40
|
+
username?: string | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
[x: string]: unknown;
|
|
43
|
+
data: Record<string, unknown>;
|
|
44
|
+
eventType: "tweet.new" | "tweet.quote" | "tweet.reply" | "tweet.retweet" | "webhook.test";
|
|
45
|
+
deliveryId?: string | undefined;
|
|
46
|
+
occurredAt?: string | undefined;
|
|
47
|
+
query?: string | undefined;
|
|
48
|
+
schemaVersion?: string | undefined;
|
|
49
|
+
streamEventId?: string | undefined;
|
|
50
|
+
timestamp?: string | undefined;
|
|
51
|
+
username?: string | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export * from './types';
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../webhooks/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGzB,CAAC;AAEF,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CorsairWebhookMatcher, RawWebhookRequest, WebhookRequest } from 'corsair/core';
|
|
2
|
+
import type { EventPayload } from '../endpoints/types';
|
|
3
|
+
export type XquikWebhookPayload = EventPayload;
|
|
4
|
+
export type XquikWebhookOutputs = {
|
|
5
|
+
monitorEvent: XquikWebhookPayload;
|
|
6
|
+
test: XquikWebhookPayload;
|
|
7
|
+
};
|
|
8
|
+
export declare function hasXquikSignature(request: RawWebhookRequest): boolean;
|
|
9
|
+
export declare function createXquikMatch(eventType: XquikWebhookPayload['eventType']): CorsairWebhookMatcher;
|
|
10
|
+
export declare function createXquikMonitorEventMatch(): CorsairWebhookMatcher;
|
|
11
|
+
export declare function verifyXquikWebhookSignature(request: WebhookRequest<XquikWebhookPayload>, secret: string): {
|
|
12
|
+
error?: string;
|
|
13
|
+
valid: boolean;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../webhooks/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASvD,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,mBAAmB,CAAC;IAClC,IAAI,EAAE,mBAAmB,CAAC;CAC1B,CAAC;AA8DF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAErE;AAED,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,GACzC,qBAAqB,CAKvB;AAED,wBAAgB,4BAA4B,IAAI,qBAAqB,CAKpE;AAED,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC5C,MAAM,EAAE,MAAM,GACZ;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAsCpC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@corsair-dev/xquik",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Search tweets, inspect users, manage Xquik webhooks, upload media, and run X actions from Corsair",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"dev-source": "./index.ts",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"corsair": ">=0.1.0",
|
|
18
|
+
"zod": "^4.1.13"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/jest": "^29.5.14",
|
|
22
|
+
"ts-jest": "^29.4.9",
|
|
23
|
+
"tsup": "^8.0.1",
|
|
24
|
+
"typescript": "^5.9.3",
|
|
25
|
+
"zod": "^4.1.13",
|
|
26
|
+
"corsair": "0.1.69"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"corsair",
|
|
30
|
+
"xquik",
|
|
31
|
+
"plugin"
|
|
32
|
+
],
|
|
33
|
+
"author": "",
|
|
34
|
+
"license": "Apache-2.0",
|
|
35
|
+
"files": [
|
|
36
|
+
"dist"
|
|
37
|
+
],
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"jest": "^29.7.0"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "rm -rf dist && tsc --build --force && tsup",
|
|
43
|
+
"typecheck": "tsc --noEmit",
|
|
44
|
+
"test": "jest"
|
|
45
|
+
}
|
|
46
|
+
}
|