rettiwt-api 1.0.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 (156) hide show
  1. package/.dockerignore +2 -0
  2. package/.gitattributes +3 -0
  3. package/Dockerfile +9 -0
  4. package/README.md +38 -0
  5. package/dist/config/env.d.ts +5 -0
  6. package/dist/config/env.js +9 -0
  7. package/dist/config/env.js.map +1 -0
  8. package/dist/index.d.ts +10 -0
  9. package/dist/index.js +23 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/models/graphql/Global.d.ts +4 -0
  12. package/dist/models/graphql/Global.js +13 -0
  13. package/dist/models/graphql/Global.js.map +1 -0
  14. package/dist/models/graphql/TweetTypes.d.ts +6 -0
  15. package/dist/models/graphql/TweetTypes.js +156 -0
  16. package/dist/models/graphql/TweetTypes.js.map +1 -0
  17. package/dist/models/graphql/UserTypes.d.ts +3 -0
  18. package/dist/models/graphql/UserTypes.js +139 -0
  19. package/dist/models/graphql/UserTypes.js.map +1 -0
  20. package/dist/queries/RootQuery.d.ts +4 -0
  21. package/dist/queries/RootQuery.js +59 -0
  22. package/dist/queries/RootQuery.js.map +1 -0
  23. package/dist/resolvers/ResolverBase.d.ts +5 -0
  24. package/dist/resolvers/ResolverBase.js +11 -0
  25. package/dist/resolvers/ResolverBase.js.map +1 -0
  26. package/dist/resolvers/TweetResolver.d.ts +54 -0
  27. package/dist/resolvers/TweetResolver.js +328 -0
  28. package/dist/resolvers/TweetResolver.js.map +1 -0
  29. package/dist/resolvers/UserResolver.d.ts +47 -0
  30. package/dist/resolvers/UserResolver.js +302 -0
  31. package/dist/resolvers/UserResolver.js.map +1 -0
  32. package/dist/server.d.ts +1 -0
  33. package/dist/server.js +75 -0
  34. package/dist/server.js.map +1 -0
  35. package/dist/services/AuthService.d.ts +17 -0
  36. package/dist/services/AuthService.js +103 -0
  37. package/dist/services/AuthService.js.map +1 -0
  38. package/dist/services/CacheService.d.ts +25 -0
  39. package/dist/services/CacheService.js +141 -0
  40. package/dist/services/CacheService.js.map +1 -0
  41. package/dist/services/FetcherService.d.ts +30 -0
  42. package/dist/services/FetcherService.js +171 -0
  43. package/dist/services/FetcherService.js.map +1 -0
  44. package/dist/services/data/TweetService.d.ts +43 -0
  45. package/dist/services/data/TweetService.js +229 -0
  46. package/dist/services/data/TweetService.js.map +1 -0
  47. package/dist/services/data/UserAccountService.d.ts +49 -0
  48. package/dist/services/data/UserAccountService.js +250 -0
  49. package/dist/services/data/UserAccountService.js.map +1 -0
  50. package/dist/services/helper/Deserializers.d.ts +19 -0
  51. package/dist/services/helper/Deserializers.js +115 -0
  52. package/dist/services/helper/Deserializers.js.map +1 -0
  53. package/dist/services/helper/Extractors.d.ts +101 -0
  54. package/dist/services/helper/Extractors.js +409 -0
  55. package/dist/services/helper/Extractors.js.map +1 -0
  56. package/dist/services/helper/Headers.d.ts +9 -0
  57. package/dist/services/helper/Headers.js +47 -0
  58. package/dist/services/helper/Headers.js.map +1 -0
  59. package/dist/services/helper/Parser.d.ts +28 -0
  60. package/dist/services/helper/Parser.js +104 -0
  61. package/dist/services/helper/Parser.js.map +1 -0
  62. package/dist/services/helper/Urls.d.ts +74 -0
  63. package/dist/services/helper/Urls.js +114 -0
  64. package/dist/services/helper/Urls.js.map +1 -0
  65. package/dist/test/Test.js +2 -0
  66. package/dist/test/Test.js.map +1 -0
  67. package/dist/types/Authentication.d.ts +15 -0
  68. package/dist/types/Authentication.js +5 -0
  69. package/dist/types/Authentication.js.map +1 -0
  70. package/dist/types/HTTP.d.ts +22 -0
  71. package/dist/types/HTTP.js +30 -0
  72. package/dist/types/HTTP.js.map +1 -0
  73. package/dist/types/Service.d.ts +27 -0
  74. package/dist/types/Service.js +19 -0
  75. package/dist/types/Service.js.map +1 -0
  76. package/dist/types/Tweet.d.ts +40 -0
  77. package/dist/types/Tweet.js +5 -0
  78. package/dist/types/Tweet.js.map +1 -0
  79. package/dist/types/UserAccount.d.ts +19 -0
  80. package/dist/types/UserAccount.js +4 -0
  81. package/dist/types/UserAccount.js.map +1 -0
  82. package/dist/types/graphql/Errors.d.ts +15 -0
  83. package/dist/types/graphql/Errors.js +23 -0
  84. package/dist/types/graphql/Errors.js.map +1 -0
  85. package/dist/types/raw/auth/Cookie.d.ts +16 -0
  86. package/dist/types/raw/auth/Cookie.js +3 -0
  87. package/dist/types/raw/auth/Cookie.js.map +1 -0
  88. package/dist/types/raw/tweet/Favouriters.d.ts +164 -0
  89. package/dist/types/raw/tweet/Favouriters.js +3 -0
  90. package/dist/types/raw/tweet/Favouriters.js.map +1 -0
  91. package/dist/types/raw/tweet/Retweeters.d.ts +171 -0
  92. package/dist/types/raw/tweet/Retweeters.js +3 -0
  93. package/dist/types/raw/tweet/Retweeters.js.map +1 -0
  94. package/dist/types/raw/tweet/Tweet.d.ts +746 -0
  95. package/dist/types/raw/tweet/Tweet.js +3 -0
  96. package/dist/types/raw/tweet/Tweet.js.map +1 -0
  97. package/dist/types/raw/tweet/Tweets.d.ts +386 -0
  98. package/dist/types/raw/tweet/Tweets.js +3 -0
  99. package/dist/types/raw/tweet/Tweets.js.map +1 -0
  100. package/dist/types/raw/user/Followers.d.ts +176 -0
  101. package/dist/types/raw/user/Followers.js +3 -0
  102. package/dist/types/raw/user/Followers.js.map +1 -0
  103. package/dist/types/raw/user/Following.d.ts +176 -0
  104. package/dist/types/raw/user/Following.js +3 -0
  105. package/dist/types/raw/user/Following.js.map +1 -0
  106. package/dist/types/raw/user/Likes.d.ts +1059 -0
  107. package/dist/types/raw/user/Likes.js +3 -0
  108. package/dist/types/raw/user/Likes.js.map +1 -0
  109. package/dist/types/raw/user/Tweets.d.ts +2428 -0
  110. package/dist/types/raw/user/Tweets.js +3 -0
  111. package/dist/types/raw/user/Tweets.js.map +1 -0
  112. package/dist/types/raw/user/User.d.ts +117 -0
  113. package/dist/types/raw/user/User.js +3 -0
  114. package/dist/types/raw/user/User.js.map +1 -0
  115. package/dist/types/raw/user/Users.d.ts +120 -0
  116. package/dist/types/raw/user/Users.js +3 -0
  117. package/dist/types/raw/user/Users.js.map +1 -0
  118. package/environment.d.ts +11 -0
  119. package/package.json +40 -0
  120. package/src/config/env.ts +5 -0
  121. package/src/index.ts +19 -0
  122. package/src/models/graphql/Global.ts +10 -0
  123. package/src/models/graphql/TweetTypes.ts +154 -0
  124. package/src/models/graphql/UserTypes.ts +137 -0
  125. package/src/queries/RootQuery.ts +56 -0
  126. package/src/resolvers/ResolverBase.ts +12 -0
  127. package/src/resolvers/TweetResolver.ts +257 -0
  128. package/src/resolvers/UserResolver.ts +239 -0
  129. package/src/server.ts +36 -0
  130. package/src/services/AuthService.ts +58 -0
  131. package/src/services/CacheService.ts +70 -0
  132. package/src/services/FetcherService.ts +84 -0
  133. package/src/services/data/TweetService.ts +163 -0
  134. package/src/services/data/UserAccountService.ts +187 -0
  135. package/src/services/helper/Deserializers.ts +95 -0
  136. package/src/services/helper/Extractors.ts +455 -0
  137. package/src/services/helper/Headers.ts +45 -0
  138. package/src/services/helper/Parser.ts +108 -0
  139. package/src/services/helper/Urls.ts +109 -0
  140. package/src/types/Authentication.ts +16 -0
  141. package/src/types/HTTP.ts +23 -0
  142. package/src/types/Service.ts +36 -0
  143. package/src/types/Tweet.ts +44 -0
  144. package/src/types/UserAccount.ts +21 -0
  145. package/src/types/graphql/Errors.ts +16 -0
  146. package/src/types/raw/auth/Cookie.ts +16 -0
  147. package/src/types/raw/tweet/Favouriters.ts +193 -0
  148. package/src/types/raw/tweet/Retweeters.ts +201 -0
  149. package/src/types/raw/tweet/Tweet.ts +882 -0
  150. package/src/types/raw/tweet/Tweets.ts +444 -0
  151. package/src/types/raw/user/Followers.ts +208 -0
  152. package/src/types/raw/user/Following.ts +208 -0
  153. package/src/types/raw/user/Likes.ts +1247 -0
  154. package/src/types/raw/user/Tweets.ts +2847 -0
  155. package/src/types/raw/user/User.ts +135 -0
  156. package/tsconfig.json +95 -0
@@ -0,0 +1,49 @@
1
+ import { FetcherService } from '../FetcherService';
2
+ import { AuthService } from '../AuthService';
3
+ import { User } from '../../types/UserAccount';
4
+ import { Tweet } from '../../types/Tweet';
5
+ import { CursoredData } from '../../types/Service';
6
+ /**
7
+ * A service that deals with fetching of data related to user account
8
+ */
9
+ export declare class UserAccountService extends FetcherService {
10
+ constructor(auth: AuthService);
11
+ /**
12
+ * @returns The user account details of the given user
13
+ * @param screenName The screen name of the target user.
14
+ */
15
+ getUserAccountDetails(screenName: string): Promise<User>;
16
+ /**
17
+ * @returns The user account details of the user with given rest id
18
+ * @param restId The screen name of the target user.
19
+ */
20
+ getUserAccountDetailsById(restId: string): Promise<User>;
21
+ /**
22
+ * @returns The list of users followed by the target user
23
+ * @param userId The rest id of the target user
24
+ * @param count The batch size of the list
25
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
26
+ */
27
+ getUserFollowing(userId: string, count: number, cursor: string): Promise<CursoredData<User>>;
28
+ /**
29
+ * @returns The list of users following the target user
30
+ * @param userId The rest id of the target user
31
+ * @param count The batch size of the list
32
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
33
+ */
34
+ getUserFollowers(userId: string, count: number, cursor: string): Promise<CursoredData<User>>;
35
+ /**
36
+ * @returns The list of tweets liked by the target user
37
+ * @param userId The rest id of the target user
38
+ * @param count The batch size of the list
39
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
40
+ */
41
+ getUserLikes(userId: string, count: number, cursor: string): Promise<CursoredData<Tweet>>;
42
+ /**
43
+ * @returns The list of tweets made by the target user
44
+ * @param userId The rest id of the target user
45
+ * @param count The batch size of the list
46
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
47
+ */
48
+ getUserTweets(userId: string, count: number, cursor: string): Promise<CursoredData<Tweet>>;
49
+ }
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
41
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
42
+ return new (P || (P = Promise))(function (resolve, reject) {
43
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
44
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
45
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
46
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
47
+ });
48
+ };
49
+ var __generator = (this && this.__generator) || function (thisArg, body) {
50
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
51
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
52
+ function verb(n) { return function (v) { return step([n, v]); }; }
53
+ function step(op) {
54
+ if (f) throw new TypeError("Generator is already executing.");
55
+ while (_) try {
56
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
57
+ if (y = 0, t) op = [op[0] & 2, t.value];
58
+ switch (op[0]) {
59
+ case 0: case 1: t = op; break;
60
+ case 4: _.label++; return { value: op[1], done: false };
61
+ case 5: _.label++; y = op[1]; op = [0]; continue;
62
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
63
+ default:
64
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
65
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
66
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
67
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
68
+ if (t[2]) _.ops.pop();
69
+ _.trys.pop(); continue;
70
+ }
71
+ op = body.call(thisArg, _);
72
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
73
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
74
+ }
75
+ };
76
+ exports.__esModule = true;
77
+ exports.UserAccountService = void 0;
78
+ // SERVICES
79
+ var FetcherService_1 = require("../FetcherService");
80
+ // URLS
81
+ var Urls = __importStar(require("../helper/Urls"));
82
+ // EXTRACTORS
83
+ var Extractors = __importStar(require("../helper/Extractors"));
84
+ // DESERIALIZERS
85
+ var Deserializers = __importStar(require("../helper/Deserializers"));
86
+ /**
87
+ * A service that deals with fetching of data related to user account
88
+ */
89
+ var UserAccountService = /** @class */ (function (_super) {
90
+ __extends(UserAccountService, _super);
91
+ // MEMBER METHODS
92
+ function UserAccountService(auth) {
93
+ return _super.call(this, auth) || this;
94
+ }
95
+ /**
96
+ * @returns The user account details of the given user
97
+ * @param screenName The screen name of the target user.
98
+ */
99
+ UserAccountService.prototype.getUserAccountDetails = function (screenName) {
100
+ return __awaiter(this, void 0, void 0, function () {
101
+ var res, data, user;
102
+ return __generator(this, function (_a) {
103
+ switch (_a.label) {
104
+ case 0: return [4 /*yield*/, this.request(Urls.userAccountUrl(screenName), false).then(function (res) { return res.data; })];
105
+ case 1:
106
+ res = _a.sent();
107
+ data = Extractors.extractUserAccountDetails(res);
108
+ // Caching data
109
+ this.cacheData(data);
110
+ user = Deserializers.toUser(data.required[0]);
111
+ return [2 /*return*/, user];
112
+ }
113
+ });
114
+ });
115
+ };
116
+ /**
117
+ * @returns The user account details of the user with given rest id
118
+ * @param restId The screen name of the target user.
119
+ */
120
+ UserAccountService.prototype.getUserAccountDetailsById = function (restId) {
121
+ return __awaiter(this, void 0, void 0, function () {
122
+ var cachedData, res, data, user;
123
+ return __generator(this, function (_a) {
124
+ switch (_a.label) {
125
+ case 0: return [4 /*yield*/, this.readData(restId)];
126
+ case 1:
127
+ cachedData = _a.sent();
128
+ if (!cachedData) return [3 /*break*/, 2];
129
+ return [2 /*return*/, cachedData];
130
+ case 2: return [4 /*yield*/, this.request(Urls.userAccountByIdUrl(restId), false).then(function (res) { return res.data; })];
131
+ case 3:
132
+ res = _a.sent();
133
+ data = Extractors.extractUserAccountDetails(res);
134
+ // Caching data
135
+ this.cacheData(data);
136
+ user = Deserializers.toUser(data.required[0]);
137
+ return [2 /*return*/, user];
138
+ }
139
+ });
140
+ });
141
+ };
142
+ /**
143
+ * @returns The list of users followed by the target user
144
+ * @param userId The rest id of the target user
145
+ * @param count The batch size of the list
146
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
147
+ */
148
+ UserAccountService.prototype.getUserFollowing = function (userId, count, cursor) {
149
+ return __awaiter(this, void 0, void 0, function () {
150
+ var res, data, users;
151
+ return __generator(this, function (_a) {
152
+ switch (_a.label) {
153
+ case 0: return [4 /*yield*/, this.request(Urls.userFollowingUrl(userId, count, cursor)).then(function (res) { return res.data; })];
154
+ case 1:
155
+ res = _a.sent();
156
+ data = Extractors.extractUserFollow(res);
157
+ // Caching data
158
+ this.cacheData(data);
159
+ users = data.required.map(function (item) { return Deserializers.toUser(item); });
160
+ return [2 /*return*/, {
161
+ list: users,
162
+ next: { value: data.cursor }
163
+ }];
164
+ }
165
+ });
166
+ });
167
+ };
168
+ /**
169
+ * @returns The list of users following the target user
170
+ * @param userId The rest id of the target user
171
+ * @param count The batch size of the list
172
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
173
+ */
174
+ UserAccountService.prototype.getUserFollowers = function (userId, count, cursor) {
175
+ return __awaiter(this, void 0, void 0, function () {
176
+ var res, data, users;
177
+ return __generator(this, function (_a) {
178
+ switch (_a.label) {
179
+ case 0: return [4 /*yield*/, this.request(Urls.userFollowersUrl(userId, (count > 20) ? (count - 20) : count, cursor)).then(function (res) { return res.data; })];
180
+ case 1:
181
+ res = _a.sent();
182
+ data = Extractors.extractUserFollow(res);
183
+ // Caching data
184
+ this.cacheData(data);
185
+ users = data.required.map(function (item) { return Deserializers.toUser(item); });
186
+ return [2 /*return*/, {
187
+ list: users,
188
+ next: { value: data.cursor }
189
+ }];
190
+ }
191
+ });
192
+ });
193
+ };
194
+ /**
195
+ * @returns The list of tweets liked by the target user
196
+ * @param userId The rest id of the target user
197
+ * @param count The batch size of the list
198
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
199
+ */
200
+ UserAccountService.prototype.getUserLikes = function (userId, count, cursor) {
201
+ return __awaiter(this, void 0, void 0, function () {
202
+ var res, data, tweets;
203
+ return __generator(this, function (_a) {
204
+ switch (_a.label) {
205
+ case 0: return [4 /*yield*/, this.request(Urls.userLikesUrl(userId, count, cursor)).then(function (res) { return res.data; })];
206
+ case 1:
207
+ res = _a.sent();
208
+ data = Extractors.extractUserLikes(res);
209
+ // Caching data
210
+ this.cacheData(data);
211
+ tweets = data.required.map(function (item) { return Deserializers.toTweet(item); });
212
+ return [2 /*return*/, {
213
+ list: tweets,
214
+ next: { value: data.cursor }
215
+ }];
216
+ }
217
+ });
218
+ });
219
+ };
220
+ /**
221
+ * @returns The list of tweets made by the target user
222
+ * @param userId The rest id of the target user
223
+ * @param count The batch size of the list
224
+ * @param cursor The cursor to next batch. If blank, first batch is fetched
225
+ */
226
+ UserAccountService.prototype.getUserTweets = function (userId, count, cursor) {
227
+ return __awaiter(this, void 0, void 0, function () {
228
+ var res, data, tweets;
229
+ return __generator(this, function (_a) {
230
+ switch (_a.label) {
231
+ case 0: return [4 /*yield*/, this.request(Urls.userTweetsUrl(userId, count, cursor)).then(function (res) { return res.data; })];
232
+ case 1:
233
+ res = _a.sent();
234
+ data = Extractors.extractUserTweets(res);
235
+ // Caching data
236
+ this.cacheData(data);
237
+ tweets = data.required.map(function (item) { return Deserializers.toTweet(item); });
238
+ return [2 /*return*/, {
239
+ list: tweets,
240
+ next: { value: data.cursor }
241
+ }];
242
+ }
243
+ });
244
+ });
245
+ };
246
+ return UserAccountService;
247
+ }(FetcherService_1.FetcherService));
248
+ exports.UserAccountService = UserAccountService;
249
+ ;
250
+ //# sourceMappingURL=UserAccountService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserAccountService.js","sourceRoot":"","sources":["../../../src/services/data/UserAccountService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { User } from '../../types/UserAccount';
2
+ import { Tweet, TweetEntities } from '../../types/Tweet';
3
+ import { Result as RawUser } from '../../types/raw/user/User';
4
+ import { Result as RawTweet, Entities2 as RawTweetEntities } from '../../types/raw/tweet/Tweet';
5
+ /**
6
+ * @returns A User object containing the user details
7
+ * @param data The raw user data from Twitter API
8
+ */
9
+ export declare function toUser(data: RawUser): User;
10
+ /**
11
+ * @returns A TweetEntities object containing the various tweet entities
12
+ * @param data The raw tweet entities data from the response received from TwitterAPI
13
+ */
14
+ export declare function toTweetEntities(data: RawTweetEntities): TweetEntities;
15
+ /**
16
+ * @returns A Tweet object containing the tweet data
17
+ * @param data The raw tweet data from the response received from TwitterAPI
18
+ */
19
+ export declare function toTweet(data: RawTweet): Tweet;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ exports.__esModule = true;
26
+ exports.toTweet = exports.toTweetEntities = exports.toUser = void 0;
27
+ // PARSERS
28
+ var Parsers = __importStar(require("./Parser"));
29
+ /**
30
+ * @returns A User object containing the user details
31
+ * @param data The raw user data from Twitter API
32
+ */
33
+ function toUser(data) {
34
+ return {
35
+ id: data.rest_id,
36
+ userName: data.legacy.screen_name,
37
+ fullName: data.legacy.name,
38
+ createdAt: data.legacy.created_at,
39
+ description: data.legacy.description,
40
+ isVerified: data.legacy.verified,
41
+ favouritesCount: data.legacy.favourites_count,
42
+ followersCount: data.legacy.followers_count,
43
+ followingsCount: data.legacy.friends_count,
44
+ statusesCount: data.legacy.statuses_count,
45
+ location: data.legacy.location,
46
+ pinnedTweet: data.legacy.pinned_tweet_ids_str[0],
47
+ profileBanner: data.legacy.profile_banner_url,
48
+ profileImage: data.legacy.profile_image_url_https
49
+ };
50
+ }
51
+ exports.toUser = toUser;
52
+ /**
53
+ * @returns A TweetEntities object containing the various tweet entities
54
+ * @param data The raw tweet entities data from the response received from TwitterAPI
55
+ */
56
+ function toTweetEntities(data) {
57
+ var entities = {
58
+ mentionedUsers: [],
59
+ urls: [],
60
+ media: [],
61
+ hashtags: []
62
+ };
63
+ // Extracting user mentions
64
+ if (data.user_mentions) {
65
+ for (var _i = 0, _a = data.user_mentions; _i < _a.length; _i++) {
66
+ var user = _a[_i];
67
+ entities.mentionedUsers.push(user.id_str);
68
+ }
69
+ }
70
+ // Extracting urls
71
+ if (data.urls) {
72
+ for (var _b = 0, _c = data.urls; _b < _c.length; _b++) {
73
+ var url = _c[_b];
74
+ entities.urls.push(url.expanded_url);
75
+ }
76
+ }
77
+ // Extracting hashtags
78
+ if (data.hashtags) {
79
+ for (var _d = 0, _e = data.hashtags; _d < _e.length; _d++) {
80
+ var hashtag = _e[_d];
81
+ entities.hashtags.push(hashtag.text);
82
+ }
83
+ }
84
+ // Extracting media urls (if any)
85
+ if (data.media) {
86
+ for (var _f = 0, _g = data.media; _f < _g.length; _f++) {
87
+ var media = _g[_f];
88
+ entities.media.push(media.media_url_https);
89
+ }
90
+ }
91
+ return entities;
92
+ }
93
+ exports.toTweetEntities = toTweetEntities;
94
+ /**
95
+ * @returns A Tweet object containing the tweet data
96
+ * @param data The raw tweet data from the response received from TwitterAPI
97
+ */
98
+ function toTweet(data) {
99
+ return {
100
+ id: data.rest_id,
101
+ createdAt: data.legacy.created_at,
102
+ tweetBy: data.legacy.user_id_str,
103
+ entities: toTweetEntities(data.legacy.entities),
104
+ quoted: data.legacy.quoted_status_id_str,
105
+ fullText: Parsers.normalizeText(data.legacy.full_text),
106
+ replyTo: data.legacy.in_reply_to_status_id_str,
107
+ lang: data.legacy.lang,
108
+ quoteCount: data.legacy.quote_count,
109
+ replyCount: data.legacy.reply_count,
110
+ retweetCount: data.legacy.retweet_count,
111
+ likeCount: data.legacy.favorite_count
112
+ };
113
+ }
114
+ exports.toTweet = toTweet;
115
+ //# sourceMappingURL=Deserializers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deserializers.js","sourceRoot":"","sources":["../../../src/services/helper/Deserializers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import RawUser from '../../types/raw/user/User';
2
+ import RawUserFollowers from '../../types/raw/user/Followers';
3
+ import RawUserFollowing from '../../types/raw/user/Following';
4
+ import RawUserLikes from '../../types/raw/user/Likes';
5
+ import RawUserTweets from '../../types/raw/user/Tweets';
6
+ import RawTweet from '../../types/raw/tweet/Tweet';
7
+ import RawTweets from '../../types/raw/tweet/Tweets';
8
+ import RawLikers from '../../types/raw/tweet/Favouriters';
9
+ import RawRetweeters from '../../types/raw/tweet/Retweeters';
10
+ /**
11
+ * @returns The raw user account data formatted and sorted into required and additional data
12
+ * @param res The raw response received from Twitter
13
+ */
14
+ export declare function extractUserAccountDetails(res: RawUser): {
15
+ required: any[];
16
+ cursor: string;
17
+ users: any[];
18
+ tweets: any[];
19
+ };
20
+ /**
21
+ * @returns The raw user following/followers data formatted and sorted into required and additional data
22
+ * @param res The raw response received from TwitterAPI
23
+ */
24
+ export declare function extractUserFollow(res: RawUserFollowers | RawUserFollowing): {
25
+ required: any[];
26
+ cursor: string;
27
+ users: any[];
28
+ tweets: any[];
29
+ };
30
+ /**
31
+ * @returns The raw user likes data formatted and sorted into required and additional data
32
+ * @param res The raw response received from TwitterAPI
33
+ */
34
+ export declare function extractUserLikes(res: RawUserLikes): {
35
+ required: any[];
36
+ cursor: string;
37
+ users: any[];
38
+ tweets: any[];
39
+ };
40
+ /**
41
+ * @returns The raw tweets data formatted and sorted into required and additional data
42
+ * @param res The raw response received from TwitterAPI
43
+ */
44
+ export declare function extractUserTweets(res: RawUserTweets): {
45
+ required: any[];
46
+ cursor: string;
47
+ users: any[];
48
+ tweets: any[];
49
+ };
50
+ /**
51
+ * @returns The raw tweets data formatted and sorted into required and additional data
52
+ * @param res The raw response received from TwitterAPI
53
+ */
54
+ export declare function extractTweets(res: RawTweets): {
55
+ required: any[];
56
+ cursor: string;
57
+ users: any[];
58
+ tweets: any[];
59
+ };
60
+ /**
61
+ * @returns The raw tweet data formatted and sorted into required and additional data
62
+ * @param res The raw response received from TwitterAPI
63
+ * @param tweetId The rest id of the tweet to fetch
64
+ */
65
+ export declare function extractTweet(res: RawTweet, tweetId: string): {
66
+ required: any[];
67
+ cursor: string;
68
+ users: any[];
69
+ tweets: any[];
70
+ };
71
+ /**
72
+ * @returns The raw tweet likers data formatted and sorted into required and additional data
73
+ * @param res The raw response received from TwitterAPI
74
+ */
75
+ export declare function extractTweetLikers(res: RawLikers): {
76
+ required: any[];
77
+ cursor: string;
78
+ users: any[];
79
+ tweets: any[];
80
+ };
81
+ /**
82
+ * @returns The raw tweet retweeters data formatted and sorted into required and additional data
83
+ * @param res The raw response received from TwitterAPI
84
+ */
85
+ export declare function extractTweetRetweeters(res: RawRetweeters): {
86
+ required: any[];
87
+ cursor: string;
88
+ users: any[];
89
+ tweets: any[];
90
+ };
91
+ /**
92
+ * @returns The raw tweet replies data formatted and sorted into required and additional data
93
+ * @param res The raw response received from TwitterAPI
94
+ * @param tweetId The id of the tweet whose replies must be extracted
95
+ */
96
+ export declare function extractTweetReplies(res: RawTweet, tweetId: string): {
97
+ required: any[];
98
+ cursor: string;
99
+ users: any[];
100
+ tweets: any[];
101
+ };