UNPKG

twitter-api-v2

Version:

Strongly typed, full-featured, light, versatile yet powerful Twitter API v1.1 and v2 client for Node.js.

114 lines (113 loc) 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UserFollowingV2Paginator = exports.UserFollowersV2Paginator = exports.UserMutingUsersV2Paginator = exports.UserBlockingUsersV2Paginator = void 0; const TwitterPaginator_1 = require("./TwitterPaginator"); /** A generic PreviousableTwitterPaginator able to consume UserV2 timelines. */ class UserTimelineV2Paginator extends TwitterPaginator_1.PreviousableTwitterPaginator { refreshInstanceFromResult(response, isNextPage) { var _a; const result = response.data; const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : []; this._rateLimit = response.rateLimit; if (!this._realData.data) { this._realData.data = []; } if (isNextPage) { this._realData.meta.result_count += result.meta.result_count; this._realData.meta.next_token = result.meta.next_token; this._realData.data.push(...resultData); } else { this._realData.meta.result_count += result.meta.result_count; this._realData.meta.previous_token = result.meta.previous_token; this._realData.data.unshift(...resultData); } this.updateIncludes(result); } updateIncludes(data) { if (!data.includes) { return; } if (!this._realData.includes) { this._realData.includes = {}; } const includesRealData = this._realData.includes; for (const [includeKey, includeArray] of Object.entries(data.includes)) { if (!includesRealData[includeKey]) { includesRealData[includeKey] = []; } includesRealData[includeKey] = [ ...includesRealData[includeKey], ...includeArray, ]; } } getNextQueryParams(maxResults) { return { ...this.injectQueryParams(maxResults), pagination_token: this._realData.meta.next_token, }; } getPreviousQueryParams(maxResults) { return { ...this.injectQueryParams(maxResults), pagination_token: this._realData.meta.previous_token, }; } getPageLengthFromRequest(result) { var _a, _b; return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; } isFetchLastOver(result) { var _a; return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data); } canFetchNextPage(result) { return !!result.meta.next_token; } getItemArray() { return this.users; } /** * Users returned by paginator. */ get users() { var _a; return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; } get meta() { return this._realData.meta; } get includes() { var _a; return (_a = this._realData.includes) !== null && _a !== void 0 ? _a : {}; } } class UserBlockingUsersV2Paginator extends UserTimelineV2Paginator { constructor() { super(...arguments); this._endpoint = 'users/:id/blocking'; } } exports.UserBlockingUsersV2Paginator = UserBlockingUsersV2Paginator; class UserMutingUsersV2Paginator extends UserTimelineV2Paginator { constructor() { super(...arguments); this._endpoint = 'users/:id/muting'; } } exports.UserMutingUsersV2Paginator = UserMutingUsersV2Paginator; class UserFollowersV2Paginator extends UserTimelineV2Paginator { constructor() { super(...arguments); this._endpoint = 'users/:id/followers'; } } exports.UserFollowersV2Paginator = UserFollowersV2Paginator; class UserFollowingV2Paginator extends UserTimelineV2Paginator { constructor() { super(...arguments); this._endpoint = 'users/:id/following'; } } exports.UserFollowingV2Paginator = UserFollowingV2Paginator;