@pipedream/twitter 2.1.2 → 2.2.1

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.
Files changed (71) hide show
  1. package/dist/actions/add-user-to-list/add-user-to-list.d.ts +2 -199
  2. package/dist/actions/add-user-to-list/add-user-to-list.mjs +21 -24
  3. package/dist/actions/create-tweet/create-tweet.d.ts +17 -16
  4. package/dist/actions/create-tweet/create-tweet.mjs +29 -34
  5. package/dist/actions/delete-tweet/delete-tweet.d.ts +3 -133
  6. package/dist/actions/delete-tweet/delete-tweet.mjs +14 -18
  7. package/dist/actions/follow-user/follow-user.d.ts +2 -133
  8. package/dist/actions/follow-user/follow-user.mjs +19 -22
  9. package/dist/actions/get-tweet/get-tweet.d.ts +2 -134
  10. package/dist/actions/get-tweet/get-tweet.mjs +16 -19
  11. package/dist/actions/get-user/get-user.d.ts +2 -134
  12. package/dist/actions/get-user/get-user.mjs +19 -22
  13. package/dist/actions/like-tweet/like-tweet.d.ts +3 -133
  14. package/dist/actions/like-tweet/like-tweet.mjs +16 -20
  15. package/dist/actions/list-favorites/list-favorites.d.ts +2 -203
  16. package/dist/actions/list-favorites/list-favorites.mjs +19 -22
  17. package/dist/actions/list-followers/list-followers.d.ts +2 -203
  18. package/dist/actions/list-followers/list-followers.mjs +19 -22
  19. package/dist/actions/list-lists/list-lists.d.ts +2 -203
  20. package/dist/actions/list-lists/list-lists.mjs +19 -22
  21. package/dist/actions/list-mentions/list-mentions.d.ts +4 -203
  22. package/dist/actions/list-mentions/list-mentions.mjs +21 -24
  23. package/dist/actions/list-user-tweets/list-user-tweets.d.ts +2 -203
  24. package/dist/actions/list-user-tweets/list-user-tweets.mjs +19 -22
  25. package/dist/actions/retweet/retweet.d.ts +3 -133
  26. package/dist/actions/retweet/retweet.mjs +18 -22
  27. package/dist/actions/send-dm/send-dm.d.ts +2 -140
  28. package/dist/actions/send-dm/send-dm.mjs +18 -21
  29. package/dist/actions/simple-search/simple-search.d.ts +2 -203
  30. package/dist/actions/simple-search/simple-search.mjs +20 -23
  31. package/dist/actions/simple-search-in-list/simple-search-in-list.d.ts +2 -208
  32. package/dist/actions/simple-search-in-list/simple-search-in-list.mjs +23 -26
  33. package/dist/actions/unfollow-user/unfollow-user.d.ts +2 -133
  34. package/dist/actions/unfollow-user/unfollow-user.mjs +15 -18
  35. package/dist/actions/unlike-tweet/unlike-tweet.d.ts +3 -133
  36. package/dist/actions/unlike-tweet/unlike-tweet.mjs +14 -18
  37. package/dist/actions/upload-media/upload-media.d.ts +3 -82
  38. package/dist/actions/upload-media/upload-media.mjs +24 -21
  39. package/dist/app/twitter.app.d.ts +2 -1
  40. package/dist/app/twitter.app.mjs +40 -29
  41. package/dist/common/appValidation.d.ts +144 -0
  42. package/dist/common/appValidation.mjs +24 -0
  43. package/dist/common/errorMessage.d.ts +24 -2
  44. package/dist/common/errorMessage.mjs +25 -1
  45. package/dist/common/types/requestParams.d.ts +26 -22
  46. package/dist/sources/common/base.d.ts +137 -64
  47. package/dist/sources/common/base.mjs +8 -2
  48. package/dist/sources/new-follower-of-user/new-follower-of-user.d.ts +2 -140
  49. package/dist/sources/new-follower-of-user/new-follower-of-user.mjs +2 -3
  50. package/dist/sources/new-list-followed/new-list-followed.d.ts +2 -140
  51. package/dist/sources/new-list-followed/new-list-followed.mjs +2 -3
  52. package/dist/sources/new-mention-received-by-user/new-mention-received-by-user.d.ts +17 -0
  53. package/dist/sources/new-mention-received-by-user/new-mention-received-by-user.mjs +44 -0
  54. package/dist/sources/new-message/new-message.d.ts +2 -74
  55. package/dist/sources/new-message/new-message.mjs +1 -1
  56. package/dist/sources/new-tweet-in-list/new-tweet-in-list.d.ts +2 -140
  57. package/dist/sources/new-tweet-in-list/new-tweet-in-list.mjs +2 -3
  58. package/dist/sources/new-tweet-liked-by-user/new-tweet-liked-by-user.d.ts +2 -140
  59. package/dist/sources/new-tweet-liked-by-user/new-tweet-liked-by-user.mjs +2 -3
  60. package/dist/sources/new-tweet-metrics/new-tweet-metrics.d.ts +3 -148
  61. package/dist/sources/new-tweet-metrics/new-tweet-metrics.mjs +2 -3
  62. package/dist/sources/new-tweet-posted-by-user/new-tweet-posted-by-user.d.ts +2 -140
  63. package/dist/sources/new-tweet-posted-by-user/new-tweet-posted-by-user.mjs +2 -3
  64. package/dist/sources/new-tweet-posted-matching-query/new-tweet-posted-matching-query.d.ts +2 -140
  65. package/dist/sources/new-tweet-posted-matching-query/new-tweet-posted-matching-query.mjs +2 -3
  66. package/dist/sources/new-unfollower-of-user/new-unfollower-of-user.d.ts +2 -140
  67. package/dist/sources/new-unfollower-of-user/new-unfollower-of-user.mjs +2 -3
  68. package/dist/sources/new-user-followed/new-user-followed.d.ts +2 -139
  69. package/dist/sources/new-user-followed/new-user-followed.mjs +2 -3
  70. package/dist/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import OAuth from "oauth-1.0a";
2
2
  import crypto from "crypto";
3
3
  import { defineApp } from "@pipedream/types";
4
- import { axios, transformConfigForOauth, } from "@pipedream/platform";
5
- import { ERROR_MESSAGE } from "../common/errorMessage.mjs";
4
+ import { axios, transformConfigForOauth, ConfigurationError, } from "@pipedream/platform";
5
+ import { ERROR_BY_TYPE } from "../common/errorMessage.mjs";
6
6
  export default defineApp({
7
7
  type: "app",
8
8
  app: "twitter",
@@ -18,19 +18,14 @@ export default defineApp({
18
18
  label: "List ID",
19
19
  description: "Select a **List** owned by the authenticated user, or use a custom *List ID*.",
20
20
  async options() {
21
- try {
22
- const userId = await this.getAuthenticatedUserId();
23
- const lists = await this.getUserOwnedLists({
24
- userId,
25
- });
26
- return (lists.data?.map(({ id, name, }) => ({
27
- label: name,
28
- value: id,
29
- })) ?? []);
30
- }
31
- catch (error) {
32
- throw new Error(ERROR_MESSAGE);
33
- }
21
+ const userId = await this.getAuthenticatedUserId();
22
+ const lists = await this.getUserOwnedLists({
23
+ userId,
24
+ });
25
+ return lists.data?.map(({ id, name, }) => ({
26
+ label: name,
27
+ value: id,
28
+ })) ?? [];
34
29
  },
35
30
  },
36
31
  userNameOrId: {
@@ -63,6 +58,14 @@ export default defineApp({
63
58
  },
64
59
  },
65
60
  methods: {
61
+ throwError(data) {
62
+ const errorMessage = ERROR_BY_TYPE[data?.type];
63
+ if (!errorMessage) {
64
+ return;
65
+ }
66
+ const stringifiedData = JSON.stringify(data);
67
+ throw new ConfigurationError(`${errorMessage} \`${stringifiedData}\``);
68
+ },
66
69
  _getAuthHeader(config) {
67
70
  const { developer_consumer_key: devKey, developer_consumer_secret: devSecret, oauth_access_token: key, oauth_refresh_token: secret, } = this.$auth;
68
71
  const consumer = {
@@ -89,7 +92,10 @@ export default defineApp({
89
92
  _getBaseUrl() {
90
93
  return "https://api.twitter.com/2";
91
94
  },
92
- async _httpRequest({ $ = this, specialAuth, ...args }) {
95
+ async _httpRequest({ $ = this, headers, specialAuth = false, throwError = true, fallbackError, ...args }) {
96
+ const maxRetries = 3;
97
+ let response;
98
+ let counter = 1;
93
99
  const config = {
94
100
  baseURL: this._getBaseUrl(),
95
101
  ...args,
@@ -101,27 +107,31 @@ export default defineApp({
101
107
  data: {},
102
108
  }
103
109
  : config;
104
- const request = async () => {
105
- const headers = {
106
- ...config.headers,
110
+ const axiosConfig = {
111
+ debug: true,
112
+ ...config,
113
+ headers: {
114
+ ...headers,
107
115
  ...this._getAuthHeader(authConfig),
108
- };
109
- return axios($, {
110
- ...config,
111
- headers,
112
- });
116
+ },
113
117
  };
114
- let response, counter = 1;
115
118
  do {
116
119
  try {
117
- response = await request();
120
+ response = await axios($, axiosConfig);
118
121
  }
119
122
  catch (err) {
120
123
  console.log(`Request error on attempt #${counter}: `, err);
124
+ if (counter === maxRetries) {
125
+ if (throwError && err.response?.data) {
126
+ this.throwError(err.response.data);
127
+ }
128
+ if (fallbackError) {
129
+ throw new ConfigurationError(fallbackError);
130
+ }
131
+ throw err;
132
+ }
121
133
  }
122
- } while (!response && ++counter < 3);
123
- if (!response)
124
- response = await request();
134
+ } while (!response && ++counter <= maxRetries);
125
135
  return response;
126
136
  },
127
137
  async _paginatedRequest({ maxResults = 100, maxPerPage = 100, params, ...args }) {
@@ -177,6 +187,7 @@ export default defineApp({
177
187
  },
178
188
  async createTweet(args) {
179
189
  return this._httpRequest({
190
+ throwError: false,
180
191
  method: "POST",
181
192
  url: "/tweets",
182
193
  ...args,
@@ -0,0 +1,144 @@
1
+ declare const _default: {
2
+ props: {
3
+ app: {
4
+ reloadProps: boolean;
5
+ type: "app";
6
+ app: string;
7
+ propDefinitions?: {
8
+ maxResults: {
9
+ type: string;
10
+ label: string;
11
+ description: string;
12
+ optional: boolean;
13
+ };
14
+ listId: {
15
+ type: string;
16
+ label: string;
17
+ description: string;
18
+ options(): Promise<{
19
+ label: string;
20
+ value: string;
21
+ }[]>;
22
+ };
23
+ userNameOrId: {
24
+ type: string;
25
+ label: string;
26
+ description: string;
27
+ optional: boolean;
28
+ default: string;
29
+ };
30
+ tweetId: {
31
+ type: string;
32
+ label: string;
33
+ description: string;
34
+ };
35
+ query: {
36
+ type: string;
37
+ label: string;
38
+ description: string;
39
+ };
40
+ };
41
+ methods?: {
42
+ throwError(data: any): void;
43
+ _getAuthHeader(config: import("./types/requestParams.js").HttpRequestParams): import("oauth-1.0a").Header;
44
+ _getBaseUrl(): "https://api.twitter.com/2";
45
+ _httpRequest({ $, headers, specialAuth, throwError, fallbackError, ...args }: import("./types/requestParams.js").HttpRequestParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").TwitterEntity>>;
46
+ _paginatedRequest({ maxResults, maxPerPage, params, ...args }: import("./types/requestParams.js").PaginatedRequestParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").TwitterEntity>>;
47
+ addUserToList({ listId, ...args }: import("./types/requestParams.js").AddUserToListParams): Promise<object>;
48
+ createTweet(args: import("./types/requestParams.js").CreateTweetParams): Promise<object>;
49
+ deleteTweet({ tweetId, ...args }: import("./types/requestParams.js").DeleteTweetParams): Promise<object>;
50
+ followUser(args: import("./types/requestParams.js").FollowUserParams): Promise<object>;
51
+ getListTweets({ listId, ...args }: import("./types/requestParams.js").GetListTweetsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
52
+ getTweet({ tweetId, ...args }: import("./types/requestParams.js").GetTweetParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").Tweet>>;
53
+ getAuthenticatedUser(args: import("./types/requestParams.js").GetAuthenticatedUserParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").User>>;
54
+ getAuthenticatedUserId(): Promise<string>;
55
+ getDirectMessages(args: import("./types/requestParams.js").GetDirectMessagesParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").DirectMessage>>;
56
+ getUserLikedTweets({ userId, ...args }: import("./types/requestParams.js").GetUserLikedTweetParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
57
+ getUserOwnedLists({ userId, ...args }: import("./types/requestParams.js").GetUserOwnedListsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").List>>;
58
+ getUserFollowedLists({ userId, ...args }: import("./types/requestParams.js").GetUserFollowedListsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").List>>;
59
+ getUserMentions({ userId, ...args }: import("./types/requestParams.js").GetUserMentionsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
60
+ getUserTweets({ userId, ...args }: import("./types/requestParams.js").GetUserTweetsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
61
+ getUserByUsername(username: string): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").User>>;
62
+ getUser({ userId, ...args }: import("./types/requestParams.js").GetUserParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").User>>;
63
+ likeTweet(args: import("./types/requestParams.js").LikeTweetParams): Promise<object>;
64
+ getUserFollowers({ userId, ...args }: import("./types/requestParams.js").GetUserFollowersParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").User>>;
65
+ getUserFollowing({ userId, ...args }: import("./types/requestParams.js").GetUserFollowersParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").User>>;
66
+ retweet(args: import("./types/requestParams.js").LikeTweetParams): Promise<object>;
67
+ searchTweets(args: import("./types/requestParams.js").SearchTweetsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
68
+ sendMessage({ userId, ...args }: import("./types/requestParams.js").SendMessageParams): Promise<object>;
69
+ unfollowUser({ userId, ...args }: import("./types/requestParams.js").UnfollowUserParams): Promise<object>;
70
+ unlikeTweet({ tweetId, ...args }: import("./types/requestParams.js").UnlikeTweetParams): Promise<object>;
71
+ uploadMedia(args: import("./types/requestParams.js").UploadMediaParams): Promise<object>;
72
+ } & ThisType<{
73
+ throwError(data: any): void;
74
+ _getAuthHeader(config: import("./types/requestParams.js").HttpRequestParams): import("oauth-1.0a").Header;
75
+ _getBaseUrl(): "https://api.twitter.com/2";
76
+ _httpRequest({ $, headers, specialAuth, throwError, fallbackError, ...args }: import("./types/requestParams.js").HttpRequestParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").TwitterEntity>>;
77
+ _paginatedRequest({ maxResults, maxPerPage, params, ...args }: import("./types/requestParams.js").PaginatedRequestParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").TwitterEntity>>;
78
+ addUserToList({ listId, ...args }: import("./types/requestParams.js").AddUserToListParams): Promise<object>;
79
+ createTweet(args: import("./types/requestParams.js").CreateTweetParams): Promise<object>;
80
+ deleteTweet({ tweetId, ...args }: import("./types/requestParams.js").DeleteTweetParams): Promise<object>;
81
+ followUser(args: import("./types/requestParams.js").FollowUserParams): Promise<object>;
82
+ getListTweets({ listId, ...args }: import("./types/requestParams.js").GetListTweetsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
83
+ getTweet({ tweetId, ...args }: import("./types/requestParams.js").GetTweetParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").Tweet>>;
84
+ getAuthenticatedUser(args: import("./types/requestParams.js").GetAuthenticatedUserParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").User>>;
85
+ getAuthenticatedUserId(): Promise<string>;
86
+ getDirectMessages(args: import("./types/requestParams.js").GetDirectMessagesParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").DirectMessage>>;
87
+ getUserLikedTweets({ userId, ...args }: import("./types/requestParams.js").GetUserLikedTweetParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
88
+ getUserOwnedLists({ userId, ...args }: import("./types/requestParams.js").GetUserOwnedListsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").List>>;
89
+ getUserFollowedLists({ userId, ...args }: import("./types/requestParams.js").GetUserFollowedListsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").List>>;
90
+ getUserMentions({ userId, ...args }: import("./types/requestParams.js").GetUserMentionsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
91
+ getUserTweets({ userId, ...args }: import("./types/requestParams.js").GetUserTweetsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
92
+ getUserByUsername(username: string): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").User>>;
93
+ getUser({ userId, ...args }: import("./types/requestParams.js").GetUserParams): Promise<import("./types/responseSchemas.js").ResponseObject<import("./types/responseSchemas.js").User>>;
94
+ likeTweet(args: import("./types/requestParams.js").LikeTweetParams): Promise<object>;
95
+ getUserFollowers({ userId, ...args }: import("./types/requestParams.js").GetUserFollowersParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").User>>;
96
+ getUserFollowing({ userId, ...args }: import("./types/requestParams.js").GetUserFollowersParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").User>>;
97
+ retweet(args: import("./types/requestParams.js").LikeTweetParams): Promise<object>;
98
+ searchTweets(args: import("./types/requestParams.js").SearchTweetsParams): Promise<import("./types/responseSchemas.js").PaginatedResponseObject<import("./types/responseSchemas.js").Tweet>>;
99
+ sendMessage({ userId, ...args }: import("./types/requestParams.js").SendMessageParams): Promise<object>;
100
+ unfollowUser({ userId, ...args }: import("./types/requestParams.js").UnfollowUserParams): Promise<object>;
101
+ unlikeTweet({ tweetId, ...args }: import("./types/requestParams.js").UnlikeTweetParams): Promise<object>;
102
+ uploadMedia(args: import("./types/requestParams.js").UploadMediaParams): Promise<object>;
103
+ } & {
104
+ maxResults: {
105
+ type: string;
106
+ label: string;
107
+ description: string;
108
+ optional: boolean;
109
+ };
110
+ listId: {
111
+ type: string;
112
+ label: string;
113
+ description: string;
114
+ options(): Promise<{
115
+ label: string;
116
+ value: string;
117
+ }[]>;
118
+ };
119
+ userNameOrId: {
120
+ type: string;
121
+ label: string;
122
+ description: string;
123
+ optional: boolean;
124
+ default: string;
125
+ };
126
+ tweetId: {
127
+ type: string;
128
+ label: string;
129
+ description: string;
130
+ };
131
+ query: {
132
+ type: string;
133
+ label: string;
134
+ description: string;
135
+ };
136
+ }>;
137
+ };
138
+ };
139
+ additionalProps(): Promise<any>;
140
+ methods: {
141
+ getTweets(args?: {}): any;
142
+ };
143
+ };
144
+ export default _default;
@@ -0,0 +1,24 @@
1
+ import app from "../app/twitter.app.mjs";
2
+ export default {
3
+ props: {
4
+ app: {
5
+ ...app,
6
+ reloadProps: true,
7
+ },
8
+ },
9
+ async additionalProps() {
10
+ const data = await this.getTweets({
11
+ validateStatus: () => true,
12
+ });
13
+ this.app.throwError(data);
14
+ return {};
15
+ },
16
+ methods: {
17
+ getTweets(args = {}) {
18
+ return this.app._httpRequest({
19
+ url: "/tweets",
20
+ ...args,
21
+ });
22
+ },
23
+ },
24
+ };
@@ -1,3 +1,25 @@
1
1
  export declare const ERROR_URL = "https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#item0";
2
- export declare const ERROR_MESSAGE: string;
3
- export declare const ACTION_ERROR_MESSAGE: string;
2
+ export declare const ERROR_MESSAGE = "Check if your app is properly configured on the [Twitter Developer Portal](https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#item0), and if your plan has access to the endpoint used by this component.";
3
+ export declare const ACTION_ERROR_MESSAGE = "Check if your app is properly configured on the [Twitter Developer Portal](https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#item0), and if your plan has access to the endpoint used by this component. Additional debugging information has been exported from the step.";
4
+ export declare const ERROR_BY_TYPE: {
5
+ "https://api.twitter.com/2/problems/client-forbidden": string;
6
+ "about:blank": string;
7
+ "https://api.twitter.com/2/problems/invalid-request": string;
8
+ "https://api.twitter.com/2/problems/resource-not-found": string;
9
+ "https://api.twitter.com/2/problems/not-authorized-for-resource": string;
10
+ "https://api.twitter.com/2/problems/disallowed-resource": string;
11
+ "https://api.twitter.com/2/problems/unsupported-authentication": string;
12
+ "https://api.twitter.com/2/problems/usage-capped": string;
13
+ "https://api.twitter.com/2/problems/streaming-connection": string;
14
+ "https://api.twitter.com/2/problems/client-disconnected": string;
15
+ "https://api.twitter.com/2/problems/operational-disconnect": string;
16
+ "https://api.twitter.com/2/problems/rule-cap": string;
17
+ "https://api.twitter.com/2/problems/rule-length": string;
18
+ "https://api.twitter.com/2/problems/invalid-rules": string;
19
+ "https://api.twitter.com/2/problems/duplicate-rules": string;
20
+ "https://api.twitter.com/2/problems/conflict": string;
21
+ "https://api.twitter.com/2/problems/noncompliant-rules": string;
22
+ "https://api.twitter.com/2/problems/not-authorized-for-field": string;
23
+ "https://api.twitter.com/2/problems/oauth1-permissions": string;
24
+ "https://api.twitter.com/2/problems/resource-unavailable": string;
25
+ };
@@ -1,3 +1,27 @@
1
1
  export const ERROR_URL = "https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#item0";
2
- export const ERROR_MESSAGE = `Check if your app is properly configured on the Twitter Developer Portal (${ERROR_URL}), and if your plan has access to the endpoint used by this component.`;
2
+ export const ERROR_MESSAGE = `Check if your app is properly configured on the [Twitter Developer Portal](${ERROR_URL}), and if your plan has access to the endpoint used by this component.`;
3
3
  export const ACTION_ERROR_MESSAGE = `${ERROR_MESSAGE} Additional debugging information has been exported from the step.`;
4
+ // Taken from https://developer.twitter.com/en/support/x-api/error-troubleshooting#error-information and https://api.twitter.com/2/openapi.json
5
+ const PROBLEM_BASE_URL = "https://api.twitter.com/2/problems";
6
+ export const ERROR_BY_TYPE = {
7
+ [`${PROBLEM_BASE_URL}/client-forbidden`]: "This X (Twitter) account appears to be on the Free plan, which only has access to **Create Tweets**. [Refer to Twitter's developer docs](https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve) for the latest info on API access.",
8
+ ["about:blank"]: "A generic problem with no additional information beyond that provided by the HTTP status code.",
9
+ [`${PROBLEM_BASE_URL}/invalid-request`]: "A problem that indicates this request is invalid. If your request takes a POST body, ensure the contents is valid JSON and matches the [OpenAPI spec](https://api.twitter.com/2/openapi.json).",
10
+ [`${PROBLEM_BASE_URL}/resource-not-found`]: "A problem that indicates that a given Post, User, etc. does not exist.",
11
+ [`${PROBLEM_BASE_URL}/not-authorized-for-resource`]: "A problem that indicates you are not allowed to see a particular Post, User, etc.",
12
+ [`${PROBLEM_BASE_URL}/disallowed-resource`]: "A problem that indicates that the resource requested violates the precepts of this API.",
13
+ [`${PROBLEM_BASE_URL}/unsupported-authentication`]: "A problem that indicates that the authentication used is not supported.",
14
+ [`${PROBLEM_BASE_URL}/usage-capped`]: "A problem that indicates that a usage cap has been exceeded.",
15
+ [`${PROBLEM_BASE_URL}/streaming-connection`]: "A problem that indicates something is wrong with the connection.",
16
+ [`${PROBLEM_BASE_URL}/client-disconnected`]: "Your client has gone away.",
17
+ [`${PROBLEM_BASE_URL}/operational-disconnect`]: "You have been disconnected for operational reasons.",
18
+ [`${PROBLEM_BASE_URL}/rule-cap`]: "You have exceeded the maximum number of rules.",
19
+ [`${PROBLEM_BASE_URL}/rule-length`]: "You have exceeded the maximum number of characters allowed on your query or rule based on your access level. See [access levels](https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api.html#Access).",
20
+ [`${PROBLEM_BASE_URL}/invalid-rules`]: "The rule you have submitted is invalid.",
21
+ [`${PROBLEM_BASE_URL}/duplicate-rules`]: "The rule you have submitted is a duplicate.",
22
+ [`${PROBLEM_BASE_URL}/conflict`]: "The rule you have submitted is in conflict with another rule.",
23
+ [`${PROBLEM_BASE_URL}/noncompliant-rules`]: "The rule you have submitted is not compliant with Twitter's Automation Rules",
24
+ [`${PROBLEM_BASE_URL}/not-authorized-for-field`]: "A problem that indicates you are not allowed to see a particular field.",
25
+ [`${PROBLEM_BASE_URL}/oauth1-permissions`]: "A problem that indicates you are not allowed to see a particular field.",
26
+ [`${PROBLEM_BASE_URL}/resource-unavailable`]: "A problem that indicates that a given Post, User, etc. is temporarily unavailable.",
27
+ };
@@ -1,6 +1,9 @@
1
1
  import { Pipedream } from "@pipedream/types";
2
2
  import { ListFields, MessageFields, TweetFields, UserFields } from "./fields.js";
3
3
  import FormData from "form-data";
4
+ interface FallbackError {
5
+ fallbackError?: string;
6
+ }
4
7
  interface PdAxiosRequest {
5
8
  $: Pipedream;
6
9
  }
@@ -10,7 +13,7 @@ interface PaginationParams {
10
13
  }
11
14
  interface PaginatedRequest extends PdAxiosRequest, PaginationParams {
12
15
  }
13
- export interface HttpRequestParams extends PdAxiosRequest {
16
+ export interface HttpRequestParams extends PdAxiosRequest, FallbackError {
14
17
  url: string;
15
18
  method: string;
16
19
  headers?: object;
@@ -18,16 +21,17 @@ export interface HttpRequestParams extends PdAxiosRequest {
18
21
  params?: object;
19
22
  baseURL?: string;
20
23
  specialAuth?: boolean;
24
+ throwError?: boolean;
21
25
  }
22
26
  export interface PaginatedRequestParams extends HttpRequestParams, PaginationParams {
23
27
  }
24
- export interface AddUserToListParams extends PdAxiosRequest {
28
+ export interface AddUserToListParams extends PdAxiosRequest, FallbackError {
25
29
  listId: string;
26
30
  data: {
27
31
  user_id: string;
28
32
  };
29
33
  }
30
- export interface CreateTweetParams extends PdAxiosRequest {
34
+ export interface CreateTweetParams extends PdAxiosRequest, FallbackError {
31
35
  data: {
32
36
  text: string;
33
37
  geo?: {
@@ -52,71 +56,71 @@ interface UserId {
52
56
  interface TweetId {
53
57
  tweetId: string;
54
58
  }
55
- export interface DeleteTweetParams extends PdAxiosRequest, TweetId {
59
+ export interface DeleteTweetParams extends PdAxiosRequest, TweetId, FallbackError {
56
60
  }
57
- export interface FollowUserParams extends PdAxiosRequest {
61
+ export interface FollowUserParams extends PdAxiosRequest, FallbackError {
58
62
  data: {
59
63
  target_user_id: string;
60
64
  };
61
65
  }
62
- export interface GetDirectMessagesParams extends PaginatedRequest {
66
+ export interface GetDirectMessagesParams extends PaginatedRequest, FallbackError {
63
67
  params?: MessageFields & {
64
68
  event_types: "MessageCreate";
65
69
  };
66
70
  }
67
- export interface GetUserLikedTweetParams extends PaginatedRequest, UserId {
71
+ export interface GetUserLikedTweetParams extends PaginatedRequest, UserId, FallbackError {
68
72
  params?: TweetFields;
69
73
  }
70
- export interface GetListTweetsParams extends PaginatedRequest, ListId {
74
+ export interface GetListTweetsParams extends PaginatedRequest, ListId, FallbackError {
71
75
  params?: TweetFields;
72
76
  }
73
- export interface GetUserOwnedListsParams extends PaginatedRequest, UserId {
77
+ export interface GetUserOwnedListsParams extends PaginatedRequest, UserId, FallbackError {
74
78
  params?: ListFields;
75
79
  }
76
- export interface GetUserMentionsParams extends PaginatedRequest, UserId {
80
+ export interface GetUserMentionsParams extends PaginatedRequest, UserId, FallbackError {
77
81
  params?: TweetFields;
78
82
  }
79
- export interface GetUserTweetsParams extends PaginatedRequest, UserId {
83
+ export interface GetUserTweetsParams extends PaginatedRequest, UserId, FallbackError {
80
84
  params?: TweetFields & {
81
85
  since_id?: string;
82
86
  };
83
87
  }
84
- export interface GetUserFollowedListsParams extends PaginatedRequest, UserId {
88
+ export interface GetUserFollowedListsParams extends PaginatedRequest, UserId, FallbackError {
85
89
  params?: ListFields;
86
90
  }
87
- export interface GetAuthenticatedUserParams extends PdAxiosRequest {
91
+ export interface GetAuthenticatedUserParams extends PdAxiosRequest, FallbackError {
88
92
  params?: UserFields;
89
93
  }
90
- export interface GetUserParams extends GetAuthenticatedUserParams, UserId {
94
+ export interface GetUserParams extends GetAuthenticatedUserParams, UserId, FallbackError {
91
95
  }
92
- export interface GetTweetParams extends PdAxiosRequest, TweetId {
96
+ export interface GetTweetParams extends PdAxiosRequest, TweetId, FallbackError {
93
97
  params?: TweetFields;
94
98
  }
95
- export interface GetUserFollowersParams extends PaginatedRequest, UserId {
99
+ export interface GetUserFollowersParams extends PaginatedRequest, UserId, FallbackError {
96
100
  params?: UserFields;
97
101
  }
98
102
  export type GetUserFollowingParams = GetUserFollowersParams;
99
- export interface LikeTweetParams extends PdAxiosRequest {
103
+ export interface LikeTweetParams extends PdAxiosRequest, FallbackError {
100
104
  data: {
101
105
  tweet_id: string;
102
106
  };
103
107
  }
104
108
  export type RetweetParams = LikeTweetParams;
105
- export interface SearchTweetsParams extends PaginatedRequest {
109
+ export interface SearchTweetsParams extends PaginatedRequest, FallbackError {
106
110
  params: {
107
111
  query: string;
108
112
  };
109
113
  }
110
- export interface SendMessageParams extends PdAxiosRequest, UserId {
114
+ export interface SendMessageParams extends PdAxiosRequest, UserId, FallbackError {
111
115
  data: {
112
116
  text: string;
113
117
  };
114
118
  }
115
- export interface UnfollowUserParams extends PdAxiosRequest, UserId {
119
+ export interface UnfollowUserParams extends PdAxiosRequest, UserId, FallbackError {
116
120
  }
117
- export interface UnlikeTweetParams extends PdAxiosRequest, TweetId {
121
+ export interface UnlikeTweetParams extends PdAxiosRequest, TweetId, FallbackError {
118
122
  }
119
- export interface UploadMediaParams extends PdAxiosRequest {
123
+ export interface UploadMediaParams extends PdAxiosRequest, FallbackError {
120
124
  data: FormData;
121
125
  }
122
126
  export {};