← Public packages
@kentcdodds/x
X API v2 helpers for tweets, search, legacy DMs, and encrypted X Chat via a Fly XDK sidecar.
src/index.ts
144 lines · 3.6 KB · TypeScript/**
* Re-exports the public helpers for `kody:@kentcdodds/x`.
*
* Thin OpenAPI-scaffolded client (bearer `xBearerToken`) plus domain helpers
* for post shaping, dry-run writes, multi-account OAuth, and token storage notes.
*
* Surface naming uses "post"; X API paths remain `/tweets` and `tweet.fields`.
*/
export {
XApiError,
bookmarkPost,
createPost,
deletePost,
followUser,
getDmConversation,
getMe,
getPost,
getPostThread,
getUserByUsername,
getUserPosts,
likePost,
listDmEvents,
listXAccounts,
mediaUploadGuide,
oauthTokenStorageNotes,
parsePostId,
postDisplayText,
refreshOauthToken,
removeBookmark,
repostPost,
resolveIntegrationName,
resolveOAuthAccount,
searchRecent,
sendDm,
shapeDmEvent,
shapeDmEventsResponse,
shapePost,
shapePostsResponse,
smokeTest,
summarizePostMetrics,
summarizePostMetricsFromPosts,
summarizeUser,
unfollowUser,
unlikePost,
unrepostPost,
xRequest,
} from './client.ts'
export { getChatConversation, listChatConversations, sendChat } from './chat.ts'
export {
createposts,
createusersbookmark,
deleteposts,
deleteusersbookmark,
followuser as followuserOp,
getpostsbyid,
getusersbyusername,
getusersme,
getusersposts,
likepost,
rawXRequest,
repostpost,
searchpostsrecent,
unfollowuser as unfollowuserOp,
unlikepost,
unrepostpost,
} from './openapi-client.ts'
/** Describe the x package exports and import pattern. */
export default async function xOverview() {
return {
package: '@kentcdodds/x',
kodyId: 'x',
description:
'X API v2 helpers: OpenAPI-scaffolded bearer client plus OAuth user-context domain helpers, including legacy DMs and encrypted X Chat. Surface uses "post"; X API resources remain tweets.',
auth: {
bearerSecret: 'xBearerToken',
defaultOauthIntegration: 'x',
accountConvention:
"Omit account for integration `x`; account: '<purpose>' → integration `x-<purpose>`; or pass integration explicitly.",
example: { account: 'kodykoala', resolvesTo: 'x-kodykoala' },
},
safety: 'Write helpers dry-run unless confirm: true is provided after explicit user approval.',
utilities: [
'accounts',
'smoke-test',
'request',
'refresh-oauth-token',
'get-me',
'get-user-by-username',
'search-recent',
'get-post',
'get-post-thread',
'get-user-posts',
'summarize-post-metrics',
'create-post',
'reply-post',
'delete-post',
'like-post',
'unlike-post',
'repost-post',
'unrepost-post',
'bookmark-post',
'remove-bookmark',
'follow-user',
'unfollow-user',
'send-dm',
'list-dm-events',
'get-dm-conversation',
'list-chat-conversations',
'get-chat-conversation',
'send-chat',
'adapt',
'sidecar/source',
'media-upload-guide',
'upload-media',
],
importPattern: "import utility from 'kody:@kentcdodds/x/<utility-name>'",
breakingRename:
'v3: export paths and helpers use post (create-post, get-post, …). Old *-tweet paths removed. X API paths still /tweets.',
migration:
'@kodykoala Activity → jev → Pam wake moved to @kentcdodds/kodykoala-activity (v3.9+). Import kody:@kentcdodds/kodykoala-activity/... for handle-activity-event / subscribe-activity.',
openapiSlugs: [
'getusersme',
'getusersbyusername',
'searchpostsrecent',
'getusersposts',
'getpostsbyid',
'createposts',
'deleteposts',
'likepost',
'unlikepost',
'repostpost',
'unrepostpost',
'createusersbookmark',
'deleteusersbookmark',
'followuser',
'unfollowuser',
],
rateLimitNote:
'X free tier is heavily rate-limited. Prefer one GET smoke; treat HTTP 429 as auth-plumbing-verified. Prefer get-post over raw request loops.',
}
}