rettiwt-api 1.0.6 → 1.0.7

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 (177) hide show
  1. package/dist/{queries → graphql/queries}/RootQuery.d.ts +0 -0
  2. package/dist/{queries → graphql/queries}/RootQuery.js +4 -3
  3. package/dist/graphql/queries/RootQuery.js.map +1 -0
  4. package/dist/{resolvers → graphql/resolvers}/AccountResolver.d.ts +1 -1
  5. package/dist/{resolvers → graphql/resolvers}/AccountResolver.js +0 -0
  6. package/dist/graphql/resolvers/AccountResolver.js.map +1 -0
  7. package/dist/{resolvers → graphql/resolvers}/ResolverBase.d.ts +1 -1
  8. package/dist/{resolvers → graphql/resolvers}/ResolverBase.js +0 -0
  9. package/dist/graphql/resolvers/ResolverBase.js.map +1 -0
  10. package/dist/{resolvers → graphql/resolvers}/TweetResolver.d.ts +10 -9
  11. package/dist/{resolvers → graphql/resolvers}/TweetResolver.js +51 -35
  12. package/dist/graphql/resolvers/TweetResolver.js.map +1 -0
  13. package/dist/{resolvers → graphql/resolvers}/UserResolver.d.ts +5 -4
  14. package/dist/{resolvers → graphql/resolvers}/UserResolver.js +51 -35
  15. package/dist/graphql/resolvers/UserResolver.js.map +1 -0
  16. package/dist/{models/graphql → graphql/types}/Global.d.ts +0 -0
  17. package/dist/{models/graphql → graphql/types}/Global.js +0 -0
  18. package/dist/graphql/types/Global.js.map +1 -0
  19. package/dist/graphql/types/TweetTypes.d.ts +4 -0
  20. package/dist/{models/graphql → graphql/types}/TweetTypes.js +5 -7
  21. package/dist/graphql/types/TweetTypes.js.map +1 -0
  22. package/dist/graphql/types/UserTypes.d.ts +3 -0
  23. package/dist/{models/graphql → graphql/types}/UserTypes.js +9 -11
  24. package/dist/graphql/types/UserTypes.js.map +1 -0
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +2 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/server.js +3 -3
  29. package/dist/server.js.map +1 -1
  30. package/dist/services/AuthService.js +2 -2
  31. package/dist/services/AuthService.js.map +1 -1
  32. package/dist/services/CacheService.d.ts +3 -3
  33. package/dist/services/CacheService.js +22 -75
  34. package/dist/services/CacheService.js.map +1 -1
  35. package/dist/services/FetcherService.d.ts +3 -2
  36. package/dist/services/FetcherService.js +11 -29
  37. package/dist/services/FetcherService.js.map +1 -1
  38. package/dist/services/data/TweetService.d.ts +6 -6
  39. package/dist/services/data/TweetService.js +44 -27
  40. package/dist/services/data/TweetService.js.map +1 -1
  41. package/dist/services/data/UserAccountService.d.ts +3 -3
  42. package/dist/services/data/UserAccountService.js +22 -8
  43. package/dist/services/data/UserAccountService.js.map +1 -1
  44. package/dist/services/data/UserService.d.ts +42 -0
  45. package/dist/services/data/UserService.js +255 -0
  46. package/dist/services/data/UserService.js.map +1 -0
  47. package/dist/services/helper/Extractors.js +1 -1
  48. package/dist/services/helper/Extractors.js.map +1 -1
  49. package/dist/services/helper/Parser.d.ts +1 -1
  50. package/dist/services/helper/Parser.js +4 -3
  51. package/dist/services/helper/Parser.js.map +1 -1
  52. package/dist/services/helper/Urls.d.ts +2 -2
  53. package/dist/services/helper/Urls.js +19 -3
  54. package/dist/services/helper/Urls.js.map +1 -1
  55. package/dist/services/helper/deserializers/Tweets.d.ts +12 -0
  56. package/dist/services/helper/deserializers/Tweets.js +92 -0
  57. package/dist/services/helper/deserializers/Tweets.js.map +1 -0
  58. package/dist/services/{accounting/Flows.d.ts → helper/deserializers/User.d.ts} +0 -0
  59. package/dist/services/helper/deserializers/User.js +2 -0
  60. package/dist/services/helper/deserializers/User.js.map +1 -0
  61. package/dist/services/helper/deserializers/Users.d.ts +7 -0
  62. package/dist/services/helper/deserializers/Users.js +27 -0
  63. package/dist/services/helper/deserializers/Users.js.map +1 -0
  64. package/dist/services/helper/extractors/TweetExtractors.d.ts +0 -0
  65. package/dist/services/helper/extractors/TweetExtractors.js +2 -0
  66. package/dist/services/helper/extractors/TweetExtractors.js.map +1 -0
  67. package/dist/services/helper/extractors/Tweets.d.ts +32 -0
  68. package/dist/services/helper/extractors/Tweets.js +264 -0
  69. package/dist/services/helper/extractors/Tweets.js.map +1 -0
  70. package/dist/services/helper/extractors/UserExtractors.d.ts +45 -0
  71. package/dist/services/helper/extractors/UserExtractors.js +176 -0
  72. package/dist/services/helper/extractors/UserExtractors.js.map +1 -0
  73. package/dist/services/helper/extractors/Users.d.ts +20 -0
  74. package/dist/services/helper/extractors/Users.js +151 -0
  75. package/dist/services/helper/extractors/Users.js.map +1 -0
  76. package/dist/services/helper/urls/Authentication.d.ts +4 -0
  77. package/dist/services/helper/urls/Authentication.js +11 -0
  78. package/dist/services/helper/urls/Authentication.js.map +1 -0
  79. package/dist/services/helper/urls/Tweets.d.ts +32 -0
  80. package/dist/services/helper/urls/Tweets.js +51 -0
  81. package/dist/services/helper/urls/Tweets.js.map +1 -0
  82. package/dist/services/helper/urls/Urls.d.ts +4 -0
  83. package/dist/services/helper/urls/Urls.js +11 -0
  84. package/dist/services/helper/urls/Urls.js.map +1 -0
  85. package/dist/services/helper/urls/Users.d.ts +31 -0
  86. package/dist/services/helper/urls/Users.js +66 -0
  87. package/dist/services/helper/urls/Users.js.map +1 -0
  88. package/dist/types/{graphql/Errors.d.ts → Errors.d.ts} +0 -0
  89. package/dist/types/{graphql/Errors.js → Errors.js} +0 -0
  90. package/dist/types/Errors.js.map +1 -0
  91. package/dist/types/Resolvers.d.ts +9 -0
  92. package/dist/types/Resolvers.js +3 -0
  93. package/dist/types/Resolvers.js.map +1 -0
  94. package/dist/types/Tweet.d.ts +1 -0
  95. package/dist/types/Tweet.js.map +1 -1
  96. package/dist/types/User.d.ts +19 -0
  97. package/dist/types/User.js +4 -0
  98. package/dist/types/User.js.map +1 -0
  99. package/dist/types/data/Errors.d.ts +26 -0
  100. package/dist/types/data/Errors.js +36 -0
  101. package/dist/types/data/Errors.js.map +1 -0
  102. package/dist/types/data/Service.d.ts +29 -0
  103. package/dist/types/data/Service.js +19 -0
  104. package/dist/types/data/Service.js.map +1 -0
  105. package/dist/types/data/Tweet.d.ts +41 -0
  106. package/dist/types/data/Tweet.js +5 -0
  107. package/dist/types/data/Tweet.js.map +1 -0
  108. package/dist/types/data/User.d.ts +19 -0
  109. package/dist/types/data/User.js +4 -0
  110. package/dist/types/data/User.js.map +1 -0
  111. package/dist/types/raw/http/Error.d.ts +34 -0
  112. package/dist/types/raw/{user/Users.js → http/Error.js} +1 -1
  113. package/dist/types/raw/http/Error.js.map +1 -0
  114. package/dist/types/raw/http/Response.d.ts +34 -0
  115. package/dist/types/raw/http/Response.js +3 -0
  116. package/dist/types/raw/http/Response.js.map +1 -0
  117. package/package.json +1 -1
  118. package/src/{queries → graphql/queries}/RootQuery.ts +5 -4
  119. package/src/{resolvers → graphql/resolvers}/AccountResolver.ts +21 -21
  120. package/src/{resolvers → graphql/resolvers}/ResolverBase.ts +1 -1
  121. package/src/{resolvers → graphql/resolvers}/TweetResolver.ts +43 -30
  122. package/src/{resolvers → graphql/resolvers}/UserResolver.ts +41 -27
  123. package/src/{models/graphql → graphql/types}/Global.ts +0 -0
  124. package/src/{models/graphql → graphql/types}/TweetTypes.ts +9 -11
  125. package/src/{models/graphql → graphql/types}/UserTypes.ts +13 -15
  126. package/src/index.ts +2 -2
  127. package/src/server.ts +3 -3
  128. package/src/services/AuthService.ts +1 -1
  129. package/src/services/CacheService.ts +6 -8
  130. package/src/services/FetcherService.ts +11 -14
  131. package/src/services/data/TweetService.ts +53 -37
  132. package/src/services/data/UserService.ts +187 -0
  133. package/src/services/helper/Parser.ts +6 -4
  134. package/src/services/helper/{Deserializers.ts → deserializers/Tweets.ts} +3 -28
  135. package/src/services/helper/deserializers/Users.ts +26 -0
  136. package/src/services/helper/extractors/Tweets.ts +252 -0
  137. package/src/services/helper/extractors/Users.ts +137 -0
  138. package/src/services/helper/urls/Authentication.ts +6 -0
  139. package/src/services/helper/urls/Tweets.ts +46 -0
  140. package/src/services/helper/urls/Users.ts +62 -0
  141. package/src/types/Resolvers.ts +9 -0
  142. package/src/types/data/Errors.ts +28 -0
  143. package/src/types/{Service.ts → data/Service.ts} +4 -5
  144. package/src/types/{Tweet.ts → data/Tweet.ts} +1 -0
  145. package/src/types/{UserAccount.ts → data/User.ts} +0 -0
  146. package/tsconfig.json +2 -2
  147. package/dist/models/graphql/Global.js.map +0 -1
  148. package/dist/models/graphql/TweetTypes.d.ts +0 -6
  149. package/dist/models/graphql/TweetTypes.js.map +0 -1
  150. package/dist/models/graphql/UserTypes.d.ts +0 -3
  151. package/dist/models/graphql/UserTypes.js.map +0 -1
  152. package/dist/queries/RootQuery.js.map +0 -1
  153. package/dist/resolvers/AccountResolver.js.map +0 -1
  154. package/dist/resolvers/ResolverBase.js.map +0 -1
  155. package/dist/resolvers/TweetResolver.js.map +0 -1
  156. package/dist/resolvers/UserResolver.js.map +0 -1
  157. package/dist/services/AccountsService.d.ts +0 -17
  158. package/dist/services/AccountsService.js +0 -171
  159. package/dist/services/AccountsService.js.map +0 -1
  160. package/dist/services/accounting/AccountsService.d.ts +0 -20
  161. package/dist/services/accounting/AccountsService.js +0 -147
  162. package/dist/services/accounting/AccountsService.js.map +0 -1
  163. package/dist/services/accounting/Flows.js +0 -2
  164. package/dist/services/accounting/Flows.js.map +0 -1
  165. package/dist/services/accounting/LoginFlows.d.ts +0 -20
  166. package/dist/services/accounting/LoginFlows.js +0 -70
  167. package/dist/services/accounting/LoginFlows.js.map +0 -1
  168. package/dist/test/Test.js +0 -2
  169. package/dist/test/Test.js.map +0 -1
  170. package/dist/types/graphql/Errors.js.map +0 -1
  171. package/dist/types/raw/user/Users.d.ts +0 -120
  172. package/dist/types/raw/user/Users.js.map +0 -1
  173. package/src/services/data/UserAccountService.ts +0 -176
  174. package/src/services/helper/Extractors.ts +0 -455
  175. package/src/services/helper/Urls.ts +0 -109
  176. package/src/types/graphql/Errors.ts +0 -16
  177. package/src/types/raw/user/Tweets.ts +0 -2847
@@ -1,147 +0,0 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (_) try {
33
- 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;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- exports.__esModule = true;
54
- exports.AccountsService = void 0;
55
- // CUSTOM LIBS
56
- // SERVICES
57
- var AuthService_1 = require("../AuthService");
58
- var FetcherService_1 = require("../FetcherService");
59
- var HTTP_1 = require("../../types/HTTP");
60
- // HELPERS
61
- var LoginFlows_1 = require("./LoginFlows");
62
- /**
63
- * The service that handles all operations related to accounting
64
- */
65
- var AccountsService = /** @class */ (function (_super) {
66
- __extends(AccountsService, _super);
67
- function AccountsService() {
68
- return _super !== null && _super.apply(this, arguments) || this;
69
- }
70
- // MEMBER METHODS
71
- /**
72
- * @returns The response from Twitter after execution of the given flow
73
- * @param flow The flow to be executed against Twitter API
74
- * @param guestCredentials The guest credentials to use for making HTTP request
75
- */
76
- AccountsService.prototype.executeFlow = function (flow, guestCredentials) {
77
- return __awaiter(this, void 0, void 0, function () {
78
- var res, data;
79
- return __generator(this, function (_a) {
80
- switch (_a.label) {
81
- case 0: return [4 /*yield*/, this.request(flow.url, HTTP_1.HttpMethods.POST, flow.body, HTTP_1.AuthType.GUEST, guestCredentials)["catch"](function (err) {
82
- // Getting the list of errors
83
- var errors = err.response.data.errors;
84
- throw new Error(errors[0].message);
85
- })];
86
- case 1:
87
- res = _a.sent();
88
- data = res.data;
89
- // Returning the response body as well as data of the flow
90
- return [2 /*return*/, {
91
- headers: res.headers,
92
- nextFlowName: LoginFlows_1.LoginFlows[data['subtasks'][0]['subtask_id']],
93
- nextFlowToken: data['flow_token']
94
- }];
95
- }
96
- });
97
- });
98
- };
99
- /**
100
- * @summary Logins into the given account and stores the cookies and store logged in credentials to database
101
- * @returns The logged in account's cookies and other credentials
102
- * @param cred The login credentials of the Twitter account to be logged into
103
- */
104
- AccountsService.prototype.login = function (cred) {
105
- return __awaiter(this, void 0, void 0, function () {
106
- var currentFlowName, currentFlow, guestCredentials, res;
107
- return __generator(this, function (_a) {
108
- switch (_a.label) {
109
- case 0:
110
- currentFlowName = LoginFlows_1.LoginFlows.Login;
111
- currentFlow = (0, LoginFlows_1.generateLoginFlow)(cred, '', LoginFlows_1.LoginFlows.Login);
112
- return [4 /*yield*/, AuthService_1.AuthService.getInstance()];
113
- case 1: return [4 /*yield*/, (_a.sent()).getGuestCredentials(true)];
114
- case 2:
115
- guestCredentials = _a.sent();
116
- _a.label = 3;
117
- case 3:
118
- if (!true) return [3 /*break*/, 9];
119
- return [4 /*yield*/, this.executeFlow(currentFlow, guestCredentials)];
120
- case 4:
121
- res = _a.sent();
122
- if (!(currentFlowName == LoginFlows_1.LoginFlows.AccountDuplicationCheck)) return [3 /*break*/, 7];
123
- return [4 /*yield*/, AuthService_1.AuthService.getInstance()];
124
- case 5:
125
- // Storing credentials in database
126
- return [4 /*yield*/, (_a.sent()).storeCredentials(res.headers)];
127
- case 6:
128
- // Storing credentials in database
129
- _a.sent();
130
- // Returning the headers
131
- return [2 /*return*/, res.headers];
132
- case 7:
133
- // Changing flow name
134
- currentFlowName = LoginFlows_1.LoginFlows[res.nextFlowName];
135
- // Changing current flow data
136
- currentFlow = (0, LoginFlows_1.generateLoginFlow)(cred, res.nextFlowToken, currentFlowName);
137
- _a.label = 8;
138
- case 8: return [3 /*break*/, 3];
139
- case 9: return [2 /*return*/];
140
- }
141
- });
142
- });
143
- };
144
- return AccountsService;
145
- }(FetcherService_1.FetcherService));
146
- exports.AccountsService = AccountsService;
147
- //# sourceMappingURL=AccountsService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccountsService.js","sourceRoot":"","sources":["../../../src/services/accounting/AccountsService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,cAAc;AAEd,WAAW;AACX,8CAA6C;AAC7C,oDAAmD;AAInD,yCAAyD;AAEzD,UAAU;AACV,2CAA6D;AAE7D;;GAEG;AACH;IAAqC,mCAAc;IAAnD;;IAqEA,CAAC;IApEG,iBAAiB;IAEjB;;;;OAIG;IACW,qCAAW,GAAzB,UAA0B,IAAe,EAAE,gBAAkC;;;;;4BAE/D,qBAAM,IAAI,CAAC,OAAO,CAAM,IAAI,CAAC,GAAG,EAAE,kBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAErG,OAAK,CAAA,CAAC,UAAA,GAAG;4BACN,6BAA6B;4BAC7B,IAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;4BAExC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;wBACvC,CAAC,CAAC,EAAA;;wBAPF,GAAG,GAAG,SAOJ;wBAGF,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBAEpB,0DAA0D;wBAC1D,sBAAO;gCACH,OAAO,EAAE,GAAG,CAAC,OAAO;gCACpB,YAAY,EAAE,uBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAe,CAAC;gCACzE,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC;6BACpC,EAAC;;;;KACL;IAED;;;;OAIG;IACG,+BAAK,GAAX,UAAY,IAAsB;;;;;;wBAC1B,eAAe,GAAe,uBAAU,CAAC,KAAK,CAAC;wBAG/C,WAAW,GAAG,IAAA,8BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,uBAAU,CAAC,KAAK,CAAC,CAAC;wBAGlC,qBAAM,yBAAW,CAAC,WAAW,EAAE,EAAA;4BAAtC,qBAAM,CAAC,SAA+B,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAA;;wBAApF,gBAAgB,GAAG,SAAiE;;;6BAGjF,IAAI;wBACG,qBAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAA;;wBAA3D,GAAG,GAAG,SAAqD;6BAO3D,CAAA,eAAe,IAAI,uBAAU,CAAC,uBAAuB,CAAA,EAArD,wBAAqD;wBAE9C,qBAAM,yBAAW,CAAC,WAAW,EAAE,EAAA;;oBADtC,kCAAkC;oBAClC,qBAAM,CAAC,SAA+B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAA;;wBADrE,kCAAkC;wBAClC,SAAqE,CAAC;wBAEtE,wBAAwB;wBACxB,sBAAO,GAAG,CAAC,OAAO,EAAC;;wBAGnB,qBAAqB;wBACrB,eAAe,GAAG,uBAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBAE/C,6BAA6B;wBAC7B,WAAW,GAAG,IAAA,8BAAiB,EAAC,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;;;;;;;KAGrF;IACL,sBAAC;AAAD,CAAC,AArED,CAAqC,+BAAc,GAqElD;AArEY,0CAAe"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=Flows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Flows.js","sourceRoot":"","sources":["../../../src/services/accounting/Flows.ts"],"names":[],"mappings":""}
@@ -1,20 +0,0 @@
1
- import { LoginCredentials, LoginFlow } from '../../types/Authentication';
2
- /**
3
- * @summary Stores the different flows involved in login process
4
- */
5
- export declare enum LoginFlows {
6
- Login = "Login",
7
- LoginJsInstrumentationSubtask = "LoginJsInstrumentationSubtask",
8
- LoginEnterUserIdentifierSSO = "LoginEnterUserIdentifierSSO",
9
- LoginEnterAlternateIdentifierSubtask = "LoginEnterAlternateIdentifierSubtask",
10
- LoginEnterPassword = "LoginEnterPassword",
11
- AccountDuplicationCheck = "AccountDuplicationCheck",
12
- LoginSuccessSubtask = "LoginSuccessSubtask"
13
- }
14
- /**
15
- * @returns The login flow body content for the required login flow
16
- * @param cred The login credentials of the account to be logged into
17
- * @param flowToken The flow token from the previous flow
18
- * @param flowName The required flow name
19
- */
20
- export declare function generateLoginFlow(cred: LoginCredentials, flowToken: string, flowName: LoginFlows): LoginFlow;
@@ -1,70 +0,0 @@
1
- "use strict";
2
- // CUSTOM LIBS
3
- exports.__esModule = true;
4
- exports.generateLoginFlow = exports.LoginFlows = void 0;
5
- /**
6
- * @summary Stores the different flows involved in login process
7
- */
8
- var LoginFlows;
9
- (function (LoginFlows) {
10
- LoginFlows["Login"] = "Login";
11
- LoginFlows["LoginJsInstrumentationSubtask"] = "LoginJsInstrumentationSubtask";
12
- LoginFlows["LoginEnterUserIdentifierSSO"] = "LoginEnterUserIdentifierSSO";
13
- LoginFlows["LoginEnterAlternateIdentifierSubtask"] = "LoginEnterAlternateIdentifierSubtask";
14
- LoginFlows["LoginEnterPassword"] = "LoginEnterPassword";
15
- LoginFlows["AccountDuplicationCheck"] = "AccountDuplicationCheck";
16
- LoginFlows["LoginSuccessSubtask"] = "LoginSuccessSubtask";
17
- })(LoginFlows = exports.LoginFlows || (exports.LoginFlows = {}));
18
- ;
19
- /**
20
- * @summary Store the body content of the different HTTP request for each flow in login process
21
- */
22
- var LoginFlowsContent = {
23
- "Login": {
24
- "url": 'https://twitter.com/i/api/1.1/onboarding/task.json?flow_name=login',
25
- "body": '{"input_flow_data":{"flow_context":{"debug_overrides":{},"start_location":{"location":"splash_screen"}}},"subtask_versions":{"contacts_live_sync_permission_prompt":0,"email_verification":1,"topics_selector":1,"wait_spinner":1,"cta":4}}'
26
- },
27
- "LoginJsInstrumentationSubtask": {
28
- "url": 'https://twitter.com/i/api/1.1/onboarding/task.json',
29
- "body": '{"flow_token":"<flow_token>","subtask_inputs":[{"subtask_id":"LoginJsInstrumentationSubtask","js_instrumentation":{"response":"{\\"rf\\":{\\"f3d0013d2401a9e86a63dac052aeec19524813e572f0b446241b550bc1e653e8\\":-146,\\"abef77ded0018c5ef4a2146465e76811c8ee7a377ff84c2181e58ac7e5bb8b97\\":-17,\\"a6d95f40b2cc05ac2baa2ce64ce976d3558cd9ca79a3e1ae797d3bda62847470\\":112,\\"ae30e4310433b0ae4e670acd918eebd0056daee600fa9db57082e8ace2c2fb1c\\":14},\\"s\\":\\"AR1nIiYWWtrhpM2n5cu-WDC77syV8L_zqLIHxmAePc0nhZAnrh3WdNig2MMFoIk-k1TjxWijXgVtjbLaYB-gTFA9KigwnaVsno0o6deCU1b_uH3XxKCRwaE-KN3c65PXRKNJP08YB1nQENeFXgM9MsrywIO0C60zGlPWj8XlB9sAICGoJ26OJ7IgvMZP_5VgIJZwMDpJx3gN4xhI44n32TiLxerU59vDbwltkf0rgsIL34PODWWDOt9m07jrFaPFkt40T_G0sWJhuy9xfEWetgOmMLnQCpn4Ut6kl_W9Yi6wNDH1vtnRMbgeKgaJJRv2cTIvOa9DBvYV63cp_3G9WQAAAYBLmqMB\\"}","link":"next_link"}}]}'
30
- },
31
- "LoginEnterUserIdentifierSSO": {
32
- "url": 'https://twitter.com/i/api/1.1/onboarding/task.json',
33
- "body": '{"flow_token":"<flow_token>","subtask_inputs":[{"subtask_id":"LoginEnterUserIdentifierSSO","settings_list":{"setting_responses":[{"key":"user_identifier","response_data":{"text_data":{"result":"<email>"}}}],"link":"next_link"}}]}'
34
- },
35
- "LoginEnterAlternateIdentifierSubtask": {
36
- "url": 'https://twitter.com/i/api/1.1/onboarding/task.json',
37
- "body": '{"flow_token":"<flow_token>","subtask_inputs":[{"subtask_id":"LoginEnterAlternateIdentifierSubtask","enter_text":{"text":"<user_name>","link":"next_link"}}]}'
38
- },
39
- "LoginEnterPassword": {
40
- "url": 'https://twitter.com/i/api/1.1/onboarding/task.json',
41
- "body": '{"flow_token":"<flow_token>","subtask_inputs":[{"subtask_id":"LoginEnterPassword","enter_password":{"password":"<password>","link":"next_link"}}]}'
42
- },
43
- "AccountDuplicationCheck": {
44
- "url": 'https://twitter.com/i/api/1.1/onboarding/task.json',
45
- "body": '{"flow_token":"<flow_token>","subtask_inputs":[{"subtask_id":"AccountDuplicationCheck","check_logged_in_account":{"link":"AccountDuplicationCheck_false"}}]}'
46
- },
47
- "LoginSuccessSubtask": {
48
- "url": '',
49
- "body": ''
50
- }
51
- };
52
- /**
53
- * @returns The login flow body content for the required login flow
54
- * @param cred The login credentials of the account to be logged into
55
- * @param flowToken The flow token from the previous flow
56
- * @param flowName The required flow name
57
- */
58
- function generateLoginFlow(cred, flowToken, flowName) {
59
- // Getting the requested flow
60
- var flow = LoginFlowsContent[flowName];
61
- // Replacing the provided values into the flow body
62
- flow['body'] = flow['body'].replace("<flow_token>", flowToken);
63
- flow['body'] = flow['body'].replace("<email>", cred.email);
64
- flow['body'] = flow['body'].replace("<user_name>", cred.userName);
65
- flow['body'] = flow['body'].replace("<password>", cred.password);
66
- flow['body'] = flow['body'];
67
- return flow;
68
- }
69
- exports.generateLoginFlow = generateLoginFlow;
70
- //# sourceMappingURL=LoginFlows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoginFlows.js","sourceRoot":"","sources":["../../../src/services/accounting/LoginFlows.ts"],"names":[],"mappings":";AAAA,cAAc;;;AAKd;;GAEG;AACH,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,6BAAe,CAAA;IACf,6EAA+D,CAAA;IAC/D,yEAA2D,CAAA;IAC3D,2FAA6E,CAAA;IAC7E,uDAAyC,CAAA;IACzC,iEAAmD,CAAA;IACnD,yDAA2C,CAAA;AAC/C,CAAC,EARW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQrB;AAAA,CAAC;AAEF;;GAEG;AACH,IAAM,iBAAiB,GAAG;IACtB,OAAO,EAAE;QACL,KAAK,EAAE,oEAAoE;QAC3E,MAAM,EAAE,6OAA6O;KACxP;IACD,+BAA+B,EAAE;QAC7B,KAAK,EAAE,oDAAoD;QAC3D,MAAM,EAAE,g0BAAg0B;KAC30B;IACD,6BAA6B,EAAE;QAC3B,KAAK,EAAE,oDAAoD;QAC3D,MAAM,EAAE,uOAAuO;KAClP;IACD,sCAAsC,EAAE;QACpC,KAAK,EAAE,oDAAoD;QAC3D,MAAM,EAAE,+JAA+J;KAC1K;IACD,oBAAoB,EAAE;QAClB,KAAK,EAAE,oDAAoD;QAC3D,MAAM,EAAE,oJAAoJ;KAC/J;IACD,yBAAyB,EAAE;QACvB,KAAK,EAAE,oDAAoD;QAC3D,MAAM,EAAE,8JAA8J;KACzK;IACD,qBAAqB,EAAE;QACnB,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACb;CACJ,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAAsB,EAAE,SAAiB,EAAE,QAAoB;IAC7F,6BAA6B;IAC7B,IAAI,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEvC,mDAAmD;IACnD,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEjE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5B,OAAO,IAAI,CAAC;AAChB,CAAC;AAbD,8CAaC"}
package/dist/test/Test.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=Test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Test.js","sourceRoot":"","sources":["../../src/test/Test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Errors.js","sourceRoot":"","sources":["../../../src/types/graphql/Errors.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,wHAAoG,CAAA;IACpG,gFAA4D,CAAA;AAChE,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B;AAAA,CAAC;AAEF;;GAEG;AACH,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,8EAAgE,CAAA;IAChE,uEAAyD,CAAA;IACzD,2EAA6D,CAAA;AACjE,CAAC,EAJW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAIrB;AAAA,CAAC"}
@@ -1,120 +0,0 @@
1
- export default interface Root {
2
- data: Data;
3
- }
4
- export interface Data {
5
- users: User[];
6
- }
7
- export interface User {
8
- result: Result;
9
- }
10
- export interface Result {
11
- __typename: string;
12
- id: string;
13
- rest_id: string;
14
- affiliates_highlighted_label: AffiliatesHighlightedLabel;
15
- has_graduated_access: boolean;
16
- has_nft_avatar: boolean;
17
- is_blue_verified: boolean;
18
- legacy: Legacy;
19
- smart_blocked_by: boolean;
20
- smart_blocking: boolean;
21
- super_follow_eligible: boolean;
22
- super_followed_by: boolean;
23
- super_following: boolean;
24
- verified_phone_status: boolean;
25
- legacy_extended_profile: LegacyExtendedProfile;
26
- is_profile_translatable: boolean;
27
- }
28
- export interface AffiliatesHighlightedLabel {
29
- }
30
- export interface Legacy {
31
- blocked_by: boolean;
32
- blocking: boolean;
33
- can_dm: boolean;
34
- can_media_tag: boolean;
35
- created_at: string;
36
- default_profile: boolean;
37
- default_profile_image: boolean;
38
- description: string;
39
- entities: Entities;
40
- fast_followers_count: number;
41
- favourites_count: number;
42
- follow_request_sent: boolean;
43
- followed_by: boolean;
44
- followers_count: number;
45
- following: boolean;
46
- friends_count: number;
47
- has_custom_timelines: boolean;
48
- is_translator: boolean;
49
- listed_count: number;
50
- location: string;
51
- media_count: number;
52
- muting: boolean;
53
- name: string;
54
- normal_followers_count: number;
55
- notifications: boolean;
56
- pinned_tweet_ids_str: string[];
57
- possibly_sensitive: boolean;
58
- profile_banner_extensions: ProfileBannerExtensions;
59
- profile_banner_url: string;
60
- profile_image_extensions: ProfileImageExtensions;
61
- profile_image_url_https: string;
62
- profile_interstitial_type: string;
63
- protected: boolean;
64
- screen_name: string;
65
- statuses_count: number;
66
- translator_type: string;
67
- verified: boolean;
68
- want_retweets: boolean;
69
- withheld_in_countries: any[];
70
- }
71
- export interface Entities {
72
- description: Description;
73
- }
74
- export interface Description {
75
- urls: any[];
76
- }
77
- export interface ProfileBannerExtensions {
78
- mediaColor: MediaColor;
79
- }
80
- export interface MediaColor {
81
- r: R;
82
- }
83
- export interface R {
84
- ok: Ok;
85
- }
86
- export interface Ok {
87
- palette: Palette[];
88
- }
89
- export interface Palette {
90
- percentage: number;
91
- rgb: Rgb;
92
- }
93
- export interface Rgb {
94
- blue: number;
95
- green: number;
96
- red: number;
97
- }
98
- export interface ProfileImageExtensions {
99
- mediaColor: MediaColor2;
100
- }
101
- export interface MediaColor2 {
102
- r: R2;
103
- }
104
- export interface R2 {
105
- ok: Ok2;
106
- }
107
- export interface Ok2 {
108
- palette: Palette2[];
109
- }
110
- export interface Palette2 {
111
- percentage: number;
112
- rgb: Rgb2;
113
- }
114
- export interface Rgb2 {
115
- blue: number;
116
- green: number;
117
- red: number;
118
- }
119
- export interface LegacyExtendedProfile {
120
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/types/raw/user/Users.ts"],"names":[],"mappings":""}
@@ -1,176 +0,0 @@
1
- // SERVICES
2
- import { FetcherService } from '../FetcherService';
3
- import { AuthService } from '../AuthService';
4
-
5
- // TYPES
6
- import { User } from '../../types/UserAccount';
7
- import { Tweet } from '../../types/Tweet';
8
- import { CursoredData } from '../../types/Service';
9
- import RawUser from '../../types/raw/user/User';
10
- import RawUserFollowers from '../../types/raw/user/Followers';
11
- import RawUserFollowing from '../../types/raw/user/Following';
12
- import RawUserLikes from '../../types/raw/user/Likes';
13
-
14
- // URLS
15
- import * as Urls from '../helper/Urls';
16
-
17
- // EXTRACTORS
18
- import * as Extractors from '../helper/Extractors';
19
-
20
- // DESERIALIZERS
21
- import * as Deserializers from '../helper/Deserializers';
22
-
23
- /**
24
- * A service that deals with fetching of data related to user account
25
- */
26
- export class UserAccountService extends FetcherService {
27
- // MEMBER METHODS
28
- constructor(auth: AuthService) {
29
- super(auth);
30
- }
31
-
32
- /**
33
- * @returns The user account details of the given user
34
- * @param screenName The screen name of the target user.
35
- */
36
- async getUserAccountDetails(screenName: string): Promise<User> {
37
- // Fetching the raw data
38
- let res: RawUser = await this.request<RawUser>(Urls.userAccountUrl(screenName), false).then(res => res.data);
39
-
40
- // Extracting data
41
- let data = Extractors.extractUserAccountDetails(res);
42
-
43
- // Caching data
44
- this.cacheData(data);
45
-
46
- // Parsing data
47
- let user = Deserializers.toUser(data.required[0]);
48
-
49
- return user;
50
- }
51
-
52
- /**
53
- * @returns The user account details of the user with given rest id
54
- * @param restId The screen name of the target user.
55
- */
56
- async getUserAccountDetailsById(restId: string): Promise<User> {
57
- // Getting data from cache
58
- let cachedData = await this.readData(restId);
59
-
60
- // If data exists in cache
61
- if(cachedData) {
62
- return cachedData;
63
- }
64
- // If data does not exist in cache
65
- else {
66
- // Fetchin the raw data
67
- let res = await this.request<RawUser>(Urls.userAccountByIdUrl(restId), false).then(res => res.data);
68
-
69
- // Extracting data
70
- let data = Extractors.extractUserAccountDetails(res);
71
-
72
- // Caching data
73
- this.cacheData(data);
74
-
75
- // Parsing data
76
- let user = Deserializers.toUser(data.required[0]);
77
-
78
- return user;
79
- }
80
- }
81
-
82
- /**
83
- * @returns The list of users followed by the target user
84
- * @param userId The rest id of the target user
85
- * @param count The batch size of the list
86
- * @param cursor The cursor to next batch. If blank, first batch is fetched
87
- */
88
- async getUserFollowing(userId: string, count: number, cursor: string): Promise<CursoredData<User>> {
89
- // If user is not authenticated, abort
90
- if(!this.isAuthenticated) {
91
- return { error: new Error('Cannot fetch user following without authentication!') };
92
- }
93
-
94
- // Fetchin the raw data
95
- let res = await this.request<RawUserFollowing>(Urls.userFollowingUrl(userId, count, cursor)).then(res => res.data);
96
-
97
- // Extracting data
98
- let data = Extractors.extractUserFollow(res);
99
-
100
- // Caching data
101
- this.cacheData(data);
102
-
103
- // Parsing data
104
- let users = data.required.map(item => Deserializers.toUser(item));
105
-
106
- return {
107
- list: users,
108
- next: { value: data.cursor }
109
- };
110
- }
111
-
112
- /**
113
- * @returns The list of users following the target user
114
- * @param userId The rest id of the target user
115
- * @param count The batch size of the list
116
- * @param cursor The cursor to next batch. If blank, first batch is fetched
117
- */
118
- async getUserFollowers(userId: string, count: number, cursor: string): Promise<CursoredData<User>> {
119
- // If user is not authenticated, abort
120
- if(!this.isAuthenticated) {
121
- return { error: new Error('Cannot fetch user followers without authentication!') };
122
- }
123
-
124
- /**
125
- * When fetching list of followers, the official Twitter API seems to be fetching n + 20 followers,
126
- * where n is the actual required number of followers.
127
- * So changing count to count - 20, fixes fetching more than required number of follower
128
- */
129
- // Fetching the raw data
130
- let res = await this.request<RawUserFollowers>(Urls.userFollowersUrl(userId, (count > 20) ? (count - 20) : count, cursor)).then(res => res.data);
131
-
132
- // Extracting data
133
- let data = Extractors.extractUserFollow(res);
134
-
135
- // Caching data
136
- this.cacheData(data);
137
-
138
- // Parsing data
139
- let users = data.required.map(item => Deserializers.toUser(item));
140
-
141
- return {
142
- list: users,
143
- next: { value: data.cursor }
144
- };
145
- }
146
-
147
- /**
148
- * @returns The list of tweets liked by the target user
149
- * @param userId The rest id of the target user
150
- * @param count The batch size of the list
151
- * @param cursor The cursor to next batch. If blank, first batch is fetched
152
- */
153
- async getUserLikes(userId: string, count: number, cursor: string): Promise<CursoredData<Tweet>> {
154
- // If user is not authenticated, abort
155
- if(!this.isAuthenticated) {
156
- return { error: new Error('Cannot fetch user likes without authentication!') };
157
- }
158
-
159
- // Fetching the raw data
160
- let res = await this.request<RawUserLikes>(Urls.userLikesUrl(userId, count, cursor)).then(res => res.data);
161
-
162
- // Extracting data
163
- let data = Extractors.extractUserLikes(res);
164
-
165
- // Caching data
166
- this.cacheData(data);
167
-
168
- // Parsing data
169
- let tweets = data.required.map(item => Deserializers.toTweet(item));
170
-
171
- return {
172
- list: tweets,
173
- next: { value: data.cursor }
174
- };
175
- }
176
- };