diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 1e74fcc..0000000 --- a/index.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { IBasic } from "./scripts/interfaces.js"; -import LoginResult from "./scripts/classes/login-result.js"; -import UserProfile from "./scripts/classes/mapping/user-profile.js"; -import LatestSearchQuery from "./scripts/classes/query/latest-search-query.js"; -import HandiworkSearchQuery from "./scripts/classes/query/handiwork-search-query.js"; -import HandiWork from "./scripts/classes/handiwork/handiwork.js"; -export { default as Animation } from "./scripts/classes/handiwork/animation.js"; -export { default as Asset } from "./scripts/classes/handiwork/asset.js"; -export { default as Comic } from "./scripts/classes/handiwork/comic.js"; -export { default as Game } from "./scripts/classes/handiwork/game.js"; -export { default as Handiwork } from "./scripts/classes/handiwork/handiwork.js"; -export { default as PlatformUser } from "./scripts/classes/mapping/platform-user.js"; -export { default as Post } from "./scripts/classes/mapping/post.js"; -export { default as Thread } from "./scripts/classes/mapping/thread.js"; -export { default as UserProfile } from "./scripts/classes/mapping/user-profile.js"; -export { default as HandiworkSearchQuery } from "./scripts/classes/query/handiwork-search-query.js"; -export { default as LatestSearchQuery } from "./scripts/classes/query/latest-search-query.js"; -export { default as ThreadSearchQuery } from "./scripts/classes/query/thread-search-query.js"; -/** - * Set the logger level for module debugging. - */ -export declare let loggerLevel: string; -/** - * Indicates whether a user is logged in to the F95Zone platform or not. - */ -export declare function isLogged(): boolean; -/** - * Log in to the F95Zone platform. - * - * This **must** be the first operation performed before accessing any other script functions. - * - * @param cb2fa - * Callback used if two-factor authentication is required for the profile. - * It must return he OTP code to use for the login. - */ -export declare function login( - username: string, - password: string, - cb2fa?: () => Promise -): Promise; -/** - * Chek if exists a new version of the handiwork. - * - * You **must** be logged in to the portal before calling this method. - */ -export declare function checkIfHandiworkHasUpdate(hw: HandiWork): Promise; -/** - * Search for one or more handiworks identified by a specific query. - * - * You **must** be logged in to the portal before calling this method. - * - * @param {HandiworkSearchQuery} query Parameters used for the search. - * @param {Number} limit Maximum number of results. Default: 10 - */ -export declare function searchHandiwork( - query: HandiworkSearchQuery, - limit?: number -): Promise; -/** - * Given the url, it gets all the information about the handiwork requested. - * - * You **must** be logged in to the portal before calling this method. - */ -export declare function getHandiworkFromURL(url: string): Promise; -/** - * Gets the data of the currently logged in user. - * - * You **must** be logged in to the portal before calling this method. - * - * @returns {Promise} Data of the user currently logged in - */ -export declare function getUserData(): Promise; -/** - * Gets the latest updated games that match the specified parameters. - * - * You **must** be logged in to the portal before calling this method. - * - * @param {LatestSearchQuery} query Parameters used for the search. - * @param {Number} limit Maximum number of results. Default: 10 - */ -export declare function getLatestUpdates( - query: LatestSearchQuery, - limit?: number -): Promise; diff --git a/scripts/classes/credentials.d.ts b/scripts/classes/credentials.d.ts deleted file mode 100644 index 5c8ecce..0000000 --- a/scripts/classes/credentials.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Represents the credentials used to access the platform. - */ -export default class Credentials { - /** - * Username - */ - username: string; - /** - * Password of the user. - */ - password: string; - /** - * One time token used during login. - */ - token: string; - constructor(username: string, password: string); - /** - * Fetch and save the token used to log in to F95Zone. - */ - fetchToken(): Promise; -} diff --git a/scripts/classes/errors.d.ts b/scripts/classes/errors.d.ts deleted file mode 100644 index 953c608..0000000 --- a/scripts/classes/errors.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -interface IBaseError { - /** - * Unique identifier of the error. - */ - id: number; - /** - * Error message. - */ - message: string; - /** - * Error to report. - */ - error: Error; -} -export declare class GenericAxiosError extends Error implements IBaseError { - id: number; - message: string; - error: Error; - constructor(args: IBaseError); -} -export declare class UnexpectedResponseContentType extends Error implements IBaseError { - id: number; - message: string; - error: Error; - constructor(args: IBaseError); -} -export declare class InvalidF95Token extends Error {} -export declare class UserNotLogged extends Error {} -export declare class ParameterError extends Error {} -export {}; diff --git a/scripts/classes/handiwork/animation.d.ts b/scripts/classes/handiwork/animation.d.ts deleted file mode 100644 index ce8cc81..0000000 --- a/scripts/classes/handiwork/animation.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TAuthor, IAnimation, TRating, TCategory } from "../../interfaces"; -export default class Animation implements IAnimation { - censored: boolean; - genre: string[]; - installation: string; - language: string[]; - lenght: string; - pages: string; - resolution: string[]; - authors: TAuthor[]; - category: TCategory; - changelog: string[]; - cover: string; - id: number; - lastThreadUpdate: Date; - name: string; - overview: string; - prefixes: string[]; - rating: TRating; - tags: string[]; - threadPublishingDate: Date; - url: string; -} diff --git a/scripts/classes/handiwork/asset.d.ts b/scripts/classes/handiwork/asset.d.ts deleted file mode 100644 index e7c18be..0000000 --- a/scripts/classes/handiwork/asset.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TAuthor, IAsset, TRating, TCategory } from "../../interfaces"; -export default class Asset implements IAsset { - assetLink: string; - associatedAssets: string[]; - compatibleSoftware: string; - includedAssets: string[]; - officialLinks: string[]; - sku: string; - authors: TAuthor[]; - category: TCategory; - changelog: string[]; - cover: string; - id: number; - lastThreadUpdate: Date; - name: string; - overview: string; - prefixes: string[]; - rating: TRating; - tags: string[]; - threadPublishingDate: Date; - url: string; -} diff --git a/scripts/classes/handiwork/comic.d.ts b/scripts/classes/handiwork/comic.d.ts deleted file mode 100644 index 2ffd8dc..0000000 --- a/scripts/classes/handiwork/comic.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { TAuthor, IComic, TRating, TCategory } from "../../interfaces"; -export default class Comic implements IComic { - genre: string[]; - pages: string; - resolution: string[]; - authors: TAuthor[]; - category: TCategory; - changelog: string[]; - cover: string; - id: number; - lastThreadUpdate: Date; - name: string; - overview: string; - prefixes: string[]; - rating: TRating; - tags: string[]; - threadPublishingDate: Date; - url: string; -} diff --git a/scripts/classes/handiwork/game.d.ts b/scripts/classes/handiwork/game.d.ts deleted file mode 100644 index 1767352..0000000 --- a/scripts/classes/handiwork/game.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { TAuthor, TEngine, IGame, TRating, TStatus, TCategory } from "../../interfaces"; -export default class Game implements IGame { - censored: boolean; - engine: TEngine; - genre: string[]; - installation: string; - language: string[]; - lastRelease: Date; - mod: boolean; - os: string[]; - status: TStatus; - version: string; - authors: TAuthor[]; - category: TCategory; - changelog: string[]; - cover: string; - id: number; - lastThreadUpdate: Date; - name: string; - overview: string; - prefixes: string[]; - rating: TRating; - tags: string[]; - threadPublishingDate: Date; - url: string; -} diff --git a/scripts/classes/handiwork/handiwork.d.ts b/scripts/classes/handiwork/handiwork.d.ts deleted file mode 100644 index b59bbff..0000000 --- a/scripts/classes/handiwork/handiwork.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { - TAuthor, - TRating, - IHandiwork, - TEngine, - TCategory, - TStatus -} from "../../interfaces"; -/** - * It represents a generic work, be it a game, a comic, an animation or an asset. - */ -export default class HandiWork implements IHandiwork { - censored: boolean; - engine: TEngine; - genre: string[]; - installation: string; - language: string[]; - lastRelease: Date; - mod: boolean; - os: string[]; - status: TStatus; - version: string; - authors: TAuthor[]; - category: TCategory; - changelog: string[]; - cover: string; - id: number; - lastThreadUpdate: Date; - name: string; - overview: string; - prefixes: string[]; - rating: TRating; - tags: string[]; - threadPublishingDate: Date; - url: string; - pages: string; - resolution: string[]; - lenght: string; - assetLink: string; - associatedAssets: string[]; - compatibleSoftware: string; - includedAssets: string[]; - officialLinks: string[]; - sku: string; -} diff --git a/scripts/classes/login-result.d.ts b/scripts/classes/login-result.d.ts deleted file mode 100644 index e115023..0000000 --- a/scripts/classes/login-result.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Object obtained in response to an attempt to login to the portal. - */ -export default class LoginResult { - static REQUIRE_2FA: number; - static AUTH_SUCCESSFUL: number; - static AUTH_SUCCESSFUL_2FA: number; - static ALREADY_AUTHENTICATED: number; - static UNKNOWN_ERROR: number; - static INCORRECT_CREDENTIALS: number; - static INCORRECT_2FA_CODE: number; - /** - * Result of the login operation - */ - readonly success: boolean; - /** - * Code associated with the result of the login operation. - */ - readonly code: number; - /** - * Login response message - */ - readonly message: string; - constructor(success: boolean, code: number, message?: string); -} diff --git a/scripts/classes/mapping/platform-user.d.ts b/scripts/classes/mapping/platform-user.d.ts deleted file mode 100644 index f9827df..0000000 --- a/scripts/classes/mapping/platform-user.d.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Represents a generic user registered on the platform. - */ -export default class PlatformUser { - private _id; - private _name; - private _title; - private _banners; - private _messages; - private _reactionScore; - private _points; - private _ratingsReceived; - private _joined; - private _lastSeen; - private _followed; - private _ignored; - private _private; - private _avatar; - private _amountDonated; - /** - * Unique user ID. - */ - get id(): number; - /** - * Username. - */ - get name(): string; - /** - * Title assigned to the user by the platform. - */ - get title(): string; - /** - * List of banners assigned by the platform. - */ - get banners(): string[]; - /** - * Number of messages written by the user. - */ - get messages(): number; - /** - * @todo Reaction score. - */ - get reactionScore(): number; - /** - * @todo Points. - */ - get points(): number; - /** - * Number of ratings received. - */ - get ratingsReceived(): number; - /** - * Date of joining the platform. - */ - get joined(): Date; - /** - * Date of the last connection to the platform. - */ - get lastSeen(): Date; - /** - * Indicates whether the user is followed by the currently logged in user. - */ - get followed(): boolean; - /** - * Indicates whether the user is ignored by the currently logged on user. - */ - get ignored(): boolean; - /** - * Indicates that the profile is private and not viewable by the user. - */ - get private(): boolean; - /** - * URL of the image used as the user's avatar. - */ - get avatar(): string; - /** - * Value of donations made. - */ - get donation(): number; - constructor(id?: number); - setID(id: number): void; - fetch(): Promise; -} diff --git a/scripts/classes/mapping/post.d.ts b/scripts/classes/mapping/post.d.ts deleted file mode 100644 index 7ef6037..0000000 --- a/scripts/classes/mapping/post.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -import PlatformUser from "./platform-user.js"; -import { IPostElement } from "../../scrape-data/post-parse.js"; -/** - * Represents a post published by a user on the F95Zone platform. - */ -export default class Post { - private _id; - private _number; - private _published; - private _lastEdit; - private _owner; - private _bookmarked; - private _message; - private _body; - /** - * Represents a post published by a user on the F95Zone platform. - */ - get id(): number; - /** - * Unique ID of the post within the thread in which it is present. - */ - get number(): number; - /** - * Date the post was first published. - */ - get published(): Date; - /** - * Date the post was last modified. - */ - get lastEdit(): Date; - /** - * User who owns the post. - */ - get owner(): PlatformUser; - /** - * Indicates whether the post has been bookmarked. - */ - get bookmarked(): boolean; - /** - * Post message text. - */ - get message(): string; - /** - * Set of the elements that make up the body of the post. - */ - get body(): IPostElement[]; - constructor(id: number); - /** - * Gets the post data starting from its unique ID for the entire platform. - */ - fetch(): Promise; - private parsePost; -} diff --git a/scripts/classes/mapping/thread.d.ts b/scripts/classes/mapping/thread.d.ts deleted file mode 100644 index a092289..0000000 --- a/scripts/classes/mapping/thread.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import Post from "./post.js"; -import PlatformUser from "./platform-user.js"; -import { TCategory, TRating } from "../../interfaces.js"; -/** - * Represents a generic F95Zone platform thread. - */ -export default class Thread { - private POST_FOR_PAGE; - private _id; - private _url; - private _title; - private _tags; - private _prefixes; - private _rating; - private _owner; - private _publication; - private _modified; - private _category; - /** - * Unique ID of the thread on the platform. - */ - get id(): number; - /** - * URL of the thread. - * - * It may vary depending on any versions of the contained product. - */ - get url(): string; - /** - * Thread title. - */ - get title(): string; - /** - * Tags associated with the thread. - */ - get tags(): string[]; - /** - * Prefixes associated with the thread - */ - get prefixes(): string[]; - /** - * Rating assigned to the thread. - */ - get rating(): TRating; - /** - * Owner of the thread. - */ - get owner(): PlatformUser; - /** - * Date the thread was first published. - */ - get publication(): Date; - /** - * Date the thread was last modified. - */ - get modified(): Date; - /** - * Category to which the content of the thread belongs. - */ - get category(): TCategory; - /** - * Initializes an object for mapping a thread. - * - * The unique ID of the thread must be specified. - */ - constructor(id: number); - /** - * Set the number of posts to display for the current thread. - */ - private setMaximumPostsForPage; - /** - * Gets all posts on a page. - */ - private parsePostsInPage; - /** - * Gets all posts in the thread. - */ - private fetchPosts; - /** - * It processes the rating of the thread - * starting from the data contained in the JSON+LD tag. - */ - private parseRating; - /** - * Clean the title of a thread, removing prefixes - * and generic elements between square brackets, and - * returns the clean title of the work. - */ - private cleanHeadline; - /** - * Gets information about this thread. - */ - fetch(): Promise; - /** - * Gets the post in the `index` position with respect to the posts in the thread. - * - * `index` must be greater or equal to 1. - * If the post is not found, `null` is returned. - */ - getPost(index: number): Promise; -} diff --git a/scripts/classes/mapping/user-profile.d.ts b/scripts/classes/mapping/user-profile.d.ts deleted file mode 100644 index f6b955d..0000000 --- a/scripts/classes/mapping/user-profile.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import Post from "./post.js"; -import PlatformUser from "./platform-user.js"; -interface IWatchedThread { - /** - * URL of the thread - */ - url: string; - /** - * Indicates whether the thread has any unread posts. - */ - unread: boolean; - /** - * Specifies the forum to which the thread belongs. - */ - forum: string; -} -/** - * Class containing the data of the user currently connected to the F95Zone platform. - */ -export default class UserProfile extends PlatformUser { - private _watched; - private _bookmarks; - private _alerts; - private _conversations; - /** - * List of followed thread data. - */ - get watched(): IWatchedThread[]; - /** - * List of bookmarked posts. - * @todo - */ - get bookmarks(): Post[]; - /** - * List of alerts. - * @todo - */ - get alerts(): string[]; - /** - * List of conversations. - * @todo - */ - get conversation(): string[]; - constructor(); - fetch(): Promise; - private fetchUserID; - private fetchWatchedThread; - /** - * Gets the pages containing the thread data. - * @param url Base URL to use for scraping a page - * @param n Total number of pages - * @param s Page to start from - */ - private fetchPages; - /** - * Gets thread data starting from the source code of the page passed by parameter. - */ - private fetchPageThreadElements; -} -export {}; diff --git a/scripts/classes/prefix-parser.d.ts b/scripts/classes/prefix-parser.d.ts deleted file mode 100644 index cbda629..0000000 --- a/scripts/classes/prefix-parser.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Convert prefixes and platform tags from string to ID and vice versa. - */ -export default class PrefixParser { - /** - * Gets the key associated with a given value from a dictionary. - * @param {Object} object Dictionary to search - * @param {Any} value Value associated with the key - * @returns {String|undefined} Key found or undefined - */ - private getKeyByValue; - /** - * Makes an array of strings uppercase. - */ - private toUpperCaseArray; - /** - * Check if `dict` contains `value` as a value. - */ - private valueInDict; - /** - * Search within the platform prefixes for the - * desired element and return the dictionary that contains it. - * @param element Element to search in the prefixes as a key or as a value - */ - private searchElementInPrefixes; - /** - * Convert a list of prefixes to their respective IDs. - */ - prefixesToIDs(prefixes: string[]): number[]; - /** - * It converts a list of IDs into their respective prefixes. - */ - idsToPrefixes(ids: number[]): string[]; -} diff --git a/scripts/classes/query/handiwork-search-query.d.ts b/scripts/classes/query/handiwork-search-query.d.ts deleted file mode 100644 index d89aa60..0000000 --- a/scripts/classes/query/handiwork-search-query.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { AxiosResponse } from "axios"; -import { IQuery, TCategory, TQueryInterface } from "../../interfaces.js"; -import { GenericAxiosError } from "../errors.js"; -import { Result } from "../result.js"; -/** - * Method of sorting results. Try to unify the two types of - * sorts in the "Latest" section and in the "Thread search" - * section. Being dynamic research, if a sorting type is not - * available, the replacement sort is chosen. - * - * `date`: Order based on the latest update - * - * `likes`: Order based on the number of likes received. Replacement: `replies`. - * - * `relevance`: Order based on the relevance of the result (or rating). - * - * `replies`: Order based on the number of answers to the thread. Replacement: `views`. - * - * `title`: Order based on the growing alphabetical order of the titles. - * - * `views`: Order based on the number of visits. Replacement: `replies`. - */ -declare type THandiworkOrder = - | "date" - | "likes" - | "relevance" - | "replies" - | "title" - | "views"; -declare type TExecuteResult = Result>; -export default class HandiworkSearchQuery implements IQuery { - static MIN_PAGE: number; - /** - * Keywords to use in the search. - */ - keywords: string; - /** - * The results must be more recent than the date indicated. - */ - newerThan: Date; - /** - * The results must be older than the date indicated. - */ - olderThan: Date; - includedTags: string[]; - /** - * Tags to exclude from the search. - */ - excludedTags: string[]; - includedPrefixes: string[]; - category: TCategory; - /** - * Results presentation order. - */ - order: THandiworkOrder; - page: number; - itype: TQueryInterface; - /** - * Select what kind of search should be - * performed based on the properties of - * the query. - */ - selectSearchType(): "latest" | "thread"; - validate(): boolean; - execute(): Promise; - cast(type: TQueryInterface): T; - private castToLatest; - private castToThread; -} -export {}; diff --git a/scripts/classes/query/latest-search-query.d.ts b/scripts/classes/query/latest-search-query.d.ts deleted file mode 100644 index 702dbd2..0000000 --- a/scripts/classes/query/latest-search-query.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { IQuery, TCategory, TQueryInterface } from "../../interfaces.js"; -import { AxiosResponse } from "axios"; -import { GenericAxiosError } from "../errors.js"; -import { Result } from "../result.js"; -export declare type TLatestOrder = "date" | "likes" | "views" | "title" | "rating"; -declare type TDate = 365 | 180 | 90 | 30 | 14 | 7 | 3 | 1; -/** - * Query used to search handiwork in the "Latest" tab. - */ -export default class LatestSearchQuery implements IQuery { - private static MAX_TAGS; - private static MIN_PAGE; - category: TCategory; - /** - * Ordering type. - * - * Default: `date`. - */ - order: TLatestOrder; - /** - * Date limit in days, to be understood as "less than". - * Use `1` to indicate "today" or `null` to indicate "anytime". - * - * Default: `null` - */ - date: TDate; - includedTags: string[]; - includedPrefixes: string[]; - page: number; - itype: TQueryInterface; - validate(): boolean; - execute(): Promise>>; - /** - * Gets the value (in days) acceptable in the query starting from a generic date. - */ - findNearestDate(d: Date): TDate; - /** - * Prepare the URL by filling out the GET parameters with the data in the query. - */ - private prepareGETurl; - /** - * - */ - private dateDiffInDays; -} -export {}; diff --git a/scripts/classes/query/thread-search-query.d.ts b/scripts/classes/query/thread-search-query.d.ts deleted file mode 100644 index fd107e4..0000000 --- a/scripts/classes/query/thread-search-query.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { IQuery, TCategory, TQueryInterface } from "../../interfaces.js"; -import { AxiosResponse } from "axios"; -import { GenericAxiosError } from "../errors.js"; -import { Result } from "../result.js"; -export declare type TThreadOrder = "relevance" | "date" | "last_update" | "replies"; -export default class ThreadSearchQuery implements IQuery { - static MIN_PAGE: number; - /** - * Keywords to use in the search. - */ - keywords: string; - /** - * Indicates to search by checking only the thread titles and not the content. - */ - onlyTitles: boolean; - /** - * The results must be more recent than the date indicated. - */ - newerThan: Date; - /** - * The results must be older than the date indicated. - */ - olderThan: Date; - includedTags: string[]; - /** - * Tags to exclude from the search. - */ - excludedTags: string[]; - /** - * Minimum number of answers that the thread must possess. - */ - minimumReplies: number; - includedPrefixes: string[]; - category: TCategory; - /** - * Results presentation order. - */ - order: TThreadOrder; - page: number; - itype: TQueryInterface; - validate(): boolean; - execute(): Promise>>; - /** - * Prepare the parameters for post request with the data in the query. - */ - private preparePOSTParameters; - /** - * Convert a date in the YYYY-MM-DD format taking into account the time zone. - */ - private convertShortDate; - /** - * Gets the unique ID of the selected category. - */ - private categoryToID; -} diff --git a/scripts/classes/result.d.ts b/scripts/classes/result.d.ts deleted file mode 100644 index 2de48f6..0000000 --- a/scripts/classes/result.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export declare type Result = Failure | Success; -export declare class Failure { - readonly value: L; - constructor(value: L); - isFailure(): this is Failure; - isSuccess(): this is Success; - applyOnSuccess(_: (a: A) => B): Result; -} -export declare class Success { - readonly value: A; - constructor(value: A); - isFailure(): this is Failure; - isSuccess(): this is Success; - applyOnSuccess(func: (a: A) => B): Result; -} -export declare const failure: (l: L) => Result; -export declare const success: (a: A) => Result; diff --git a/scripts/classes/session.d.ts b/scripts/classes/session.d.ts deleted file mode 100644 index 0240ccd..0000000 --- a/scripts/classes/session.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -import tough from "tough-cookie"; -export default class Session { - /** - * Max number of days the session is valid. - */ - private readonly SESSION_TIME; - private readonly COOKIEJAR_FILENAME; - private _path; - private _isMapped; - private _created; - private _hash; - private _token; - private _cookieJar; - private _cookieJarPath; - /** - * Path of the session map file on disk. - */ - get path(): string; - /** - * Indicates if the session is mapped on disk. - */ - get isMapped(): boolean; - /** - * Date of creation of the session. - */ - get created(): Date; - /** - * MD5 hash of the username and the password. - */ - get hash(): string; - /** - * Token used to login to F95Zone. - */ - get token(): string; - /** - * Cookie holder. - */ - get cookieJar(): tough.CookieJar; - /** - * Initializes the session by setting the path for saving information to disk. - */ - constructor(p: string); - /** - * Get the difference in days between two dates. - */ - private dateDiffInDays; - /** - * Convert the object to a dictionary serializable in JSON. - */ - private toJSON; - /** - * Create a new session. - */ - create(username: string, password: string, token: string): void; - /** - * Save the session to disk. - */ - save(): Promise; - /** - * Load the session from disk. - */ - load(): Promise; - /** - * Delete the session from disk. - */ - delete(): Promise; - /** - * Check if the session is valid. - */ - isValid(username: string, password: string): boolean; -} diff --git a/scripts/constants/css-selector.d.ts b/scripts/constants/css-selector.d.ts deleted file mode 100644 index 76bcfcd..0000000 --- a/scripts/constants/css-selector.d.ts +++ /dev/null @@ -1,201 +0,0 @@ -export declare const GENERIC: { - /** - * The ID of the user currently logged into - * the platform in the attribute `data-user-id`. - */ - CURRENT_USER_ID: string; - /** - * Banner containing any error messages as text. - */ - ERROR_BANNER: string; - /** - * Locate the token used for the session. - */ - GET_REQUEST_TOKEN: string; - /** - * Block containing the text of any errors that occurred during the login. - */ - LOGIN_MESSAGE_ERROR: string; - /** - * Locate the script containing the tags and prefixes of the platform content in JSON format. - */ - LATEST_UPDATES_TAGS_SCRIPT: string; -}; -export declare const WATCHED_THREAD: { - /** - * List of elements containing the data of the watched threads. - */ - BODIES: string; - /** - * Link element containing the partial URL - * of the thread in the `href` attribute. - * - * It may be followed by the `/unread` segment. - * - * For use within a `WATCHED_THREAD.BODIES` selector. - */ - URL: string; - /** - * Name of the forum to which the thread belongs as text. - * - * For use within a `WATCHED_THREAD.BODIES` selector. - */ - FORUM: string; - /** - * Index of the last page available as text. - */ - LAST_PAGE: string; -}; -export declare const THREAD: { - /** - * Number of pages in the thread (as text of the element). - * - * Two identical elements are identified. - */ - LAST_PAGE: string; - /** - * Identify the creator of the thread. - * - * The ID is contained in the `data-user-id` attribute. - */ - OWNER_ID: string; - /** - * Contains the creation date of the thread. - * - * The date is contained in the `datetime` attribute as an ISO string. - */ - CREATION: string; - /** - * List of tags assigned to the thread. - */ - TAGS: string; - /** - * List of prefixes assigned to the thread. - */ - PREFIXES: string; - /** - * Thread title. - */ - TITLE: string; - /** - * JSON containing thread information. - * - * Two different elements are found. - */ - JSONLD: string; - /** - * Posts on the current page. - */ - POSTS_IN_PAGE: string; -}; -export declare const THREAD_SEARCH: { - /** - * Thread title resulting from research. - */ - THREAD_TITLE: string; - /** - *Thread body resulting from research. - */ - BODY: string; -}; -export declare const POST: { - /** - * Unique post number for the current thread. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - NUMBER: string; - /** - * Unique ID of the post in the F95Zone platform in the `id` attribute. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - ID: string; - /** - * Unique ID of the post author in the `data-user-id` attribute. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - OWNER_ID: string; - /** - * Main body of the post where the message written by the user is contained. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - BODY: string; - /** - * Publication date of the post contained in the `datetime` attribute as an ISO date. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - PUBLISH_DATE: string; - /** - * Last modified date of the post contained in the `datetime` attribute as the ISO date. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - LAST_EDIT: string; - /** - * Gets the element only if the post has been bookmarked. - * - * For use within a `THREAD.POSTS_IN_PAGE` selector. - */ - BOOKMARKED: string; -}; -export declare const MEMBER: { - /** - * Name of the user. - * - * It also contains the unique ID of the user in the `data-user-id` attribute. - */ - NAME: string; - /** - * Title of the user in the platform. - * - * i.e.: Member - */ - TITLE: string; - /** - * Avatar used by the user. - * - * Source in the attribute `src`. - */ - AVATAR: string; - /** - * User assigned banners. - * - * The last element is always empty and can be ignored. - */ - BANNERS: string; - /** - * Date the user joined the platform. - * - * The date is contained in the `datetime` attribute as an ISO string. - */ - JOINED: string; - /** - * Last time the user connected to the platform. - * - * The date is contained in the `datetime` attribute as an ISO string. - */ - LAST_SEEN: string; - MESSAGES: string; - REACTION_SCORE: string; - POINTS: string; - RATINGS_RECEIVED: string; - AMOUNT_DONATED: string; - /** - * Button used to follow/unfollow the user. - * - * If the text is `Unfollow` then the user is followed. - * If the text is `Follow` then the user is not followed. - */ - FOLLOWED: string; - /** - * Button used to ignore/unignore the user. - * - * If the text is `Unignore` then the user is ignored. - * If the text is `Ignore` then the user is not ignored. - */ - IGNORED: string; -}; diff --git a/scripts/constants/url.d.ts b/scripts/constants/url.d.ts deleted file mode 100644 index ec8b0f5..0000000 --- a/scripts/constants/url.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -export declare const urls: { - /** - * Page with the list of alerts for the user currently logged. - */ - ALERTS: string; - /** - * Basic URL of the platform. - */ - BASE: string; - /** - * Page with the list of favorite posts of the user currently logged. - */ - BOOKMARKS: string; - /** - * Page with the list of conversations of the currently logged user. - */ - CONVERSATIONS: string; - /** - * URL of the script used for searching for content - * in the "Latest Updates" section of the platform. - */ - LATEST_PHP: string; - /** - * Page with the latest updated platform content. - */ - LATEST_UPDATES: string; - /** - * Page used for user login. - */ - LOGIN: string; - /** - * Page used for entering the OTP code in the case of two-factor authentication. - */ - LOGIN_2FA: string; - /** - * Summary page of users registered on the platform. - * Used for the search for a specific member through ID. - */ - MEMBERS: string; - /** - * Add the unique ID of the post to - * get the thread page where the post - * is present. - */ - POSTS: string; - /** - * URL used to send a POST request and change - * the number of posts that can be viewed per - * page of a specific thread. - */ - POSTS_NUMBER: string; - /** - * URL used to search the platform by POST request. - */ - SEARCH: string; - /** - * Add the unique ID of the thread to get it's page. - */ - THREADS: string; - /** - * Page with the list of watched threads of the currently logged user. - */ - WATCHED_THREADS: string; -}; diff --git a/scripts/fetch-data/fetch-handiwork.d.ts b/scripts/fetch-data/fetch-handiwork.d.ts deleted file mode 100644 index a27f80c..0000000 --- a/scripts/fetch-data/fetch-handiwork.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import HandiworkSearchQuery from "../classes/query/handiwork-search-query"; -/** - * Gets the URLs of the handiworks that match the passed parameters. - * You *must* be logged. - * @param {LatestSearchQuery} query - * Query used for the search - * @param {Number} limit - * Maximum number of items to get. Default: 30 - * @returns {Promise} URLs of the handiworks - */ -export default function fetchHandiworkURLs( - query: HandiworkSearchQuery, - limit?: number -): Promise; diff --git a/scripts/fetch-data/fetch-latest.d.ts b/scripts/fetch-data/fetch-latest.d.ts deleted file mode 100644 index 6ff68d0..0000000 --- a/scripts/fetch-data/fetch-latest.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import LatestSearchQuery from "../classes/query/latest-search-query.js"; -/** - * Gets the URLs of the latest handiworks that match the passed parameters. - * - * You *must* be logged. - * @param {LatestSearchQuery} query - * Query used for the search - * @param {Number} limit - * Maximum number of items to get. Default: 30 - * @returns {Promise} URLs of the handiworks - */ -export default function fetchLatestHandiworkURLs( - query: LatestSearchQuery, - limit?: number -): Promise; diff --git a/scripts/fetch-data/fetch-platform-data.d.ts b/scripts/fetch-data/fetch-platform-data.d.ts deleted file mode 100644 index 6feea77..0000000 --- a/scripts/fetch-data/fetch-platform-data.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Gets the basic data used for game data processing - * (such as graphics engines and progress statuses) - */ -export default function fetchPlatformData(): Promise; diff --git a/scripts/fetch-data/fetch-query.d.ts b/scripts/fetch-data/fetch-query.d.ts deleted file mode 100644 index ef3fa7f..0000000 --- a/scripts/fetch-data/fetch-query.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IQuery } from "../interfaces.js"; -/** - * @param query Query used for the search - * @param limit Maximum number of items to get. Default: 30 - * @returns URLs of the fetched games - */ -export default function getURLsFromQuery( - query: IQuery, - limit?: number -): Promise; diff --git a/scripts/fetch-data/fetch-thread.d.ts b/scripts/fetch-data/fetch-thread.d.ts deleted file mode 100644 index fb32af7..0000000 --- a/scripts/fetch-data/fetch-thread.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import ThreadSearchQuery from "../classes/query/thread-search-query.js"; -/** - * Gets the URLs of the handiwork' threads that match the passed parameters. - * - * You *must* be logged. - * @param {ThreadSearchQuery} query - * Query used for the search - * @param {number} limit - * Maximum number of items to get. Default: 30 - * @returns {Promise} URLs of the handiworks - */ -export default function fetchThreadHandiworkURLs( - query: ThreadSearchQuery, - limit?: number -): Promise; diff --git a/scripts/interfaces.d.ts b/scripts/interfaces.d.ts deleted file mode 100644 index e2870db..0000000 --- a/scripts/interfaces.d.ts +++ /dev/null @@ -1,300 +0,0 @@ -/** - * Data relating to an external platform (i.e. Patreon). - */ -export declare type TExternalPlatform = { - /** - * name of the platform. - */ - name: string; - /** - * link to the platform. - */ - link: string; -}; -/** - * Information about the author of a work. - */ -export declare type TAuthor = { - /** - * Plain name or username of the author. - */ - name: string; - /** - * - */ - platforms: TExternalPlatform[]; -}; -/** - * Information on the evaluation of a work. - */ -export declare type TRating = { - /** - * average value of evaluations. - */ - average: number; - /** - * Best rating received. - */ - best: number; - /** - * Number of ratings made by users. - */ - count: number; -}; -/** - * List of possible graphics engines used for game development. - */ -export declare type TEngine = - | "QSP" - | "RPGM" - | "Unity" - | "HTML" - | "RAGS" - | "Java" - | "Ren'Py" - | "Flash" - | "ADRIFT" - | "Others" - | "Tads" - | "Wolf RPG" - | "Unreal Engine" - | "WebGL"; -/** - * List of possible progress states associated with a game. - */ -export declare type TStatus = "Completed" | "Ongoing" | "Abandoned" | "Onhold"; -/** - * List of possible categories of a particular work. - */ -export declare type TCategory = "games" | "mods" | "comics" | "animations" | "assets"; -/** - * Valid names of classes that implement the IQuery interface. - */ -export declare type TQueryInterface = - | "LatestSearchQuery" - | "ThreadSearchQuery" - | "HandiworkSearchQuery"; -/** - * Collection of values defined for each - * handiwork on the F95Zone platform. - */ -export interface IBasic { - /** - * Authors of the work. - */ - authors: TAuthor[]; - /** - * Category of the work.. - */ - category: TCategory; - /** - * List of changes of the work for each version. - */ - changelog: string[]; - /** - * link to the cover image of the work. - */ - cover: string; - /** - * Unique ID of the work on the platform. - */ - id: number; - /** - * Last update of the opera thread. - */ - lastThreadUpdate: Date; - /** - * Plain name of the work (without tags and/or prefixes) - */ - name: string; - /** - * Work description - */ - overview: string; - /** - * List of prefixes associated with the work. - */ - prefixes: string[]; - /** - * Evaluation of the work by the users of the platform. - */ - rating: TRating; - /** - * List of tags associated with the work. - */ - tags: string[]; - /** - * Date of publication of the thread associated with the work. - */ - threadPublishingDate: Date; - /** - * URL to the work's official conversation on the F95Zone portal. - */ - url: string; -} -/** - * Collection of values representing a game present on the F95Zone platform. - */ -export interface IGame extends IBasic { - /** - * Specify whether the work has censorship - * measures regarding NSFW scenes - */ - censored: boolean; - /** - * Graphics engine used for game development. - */ - engine: TEngine; - /** - * List of genres associated with the work. - */ - genre: string[]; - /** - * Author's Guide to Installation. - */ - installation: string; - /** - * List of available languages. - */ - language: string[]; - /** - * Last time the work underwent updates. - */ - lastRelease: Date; - /** - * Indicates that this item represents a mod. - */ - mod: boolean; - /** - * List of OS for which the work is compatible. - */ - os: string[]; - /** - * Indicates the progress of a game. - */ - status: TStatus; - /** - * Version of the work. - */ - version: string; -} -/** - * Collection of values representing a comic present on the F95Zone platform. - */ -export interface IComic extends IBasic { - /** - * List of genres associated with the work. - */ - genre: string[]; - /** - * Number of pages or elements that make up the work. - */ - pages: string; - /** - * List of resolutions available for the work. - */ - resolution: string[]; -} -/** - * Collection of values representing an animation present on the F95Zone platform. - */ -export interface IAnimation extends IBasic { - /** - * Specify whether the work has censorship - * measures regarding NSFW scenes - */ - censored: boolean; - /** - * List of genres associated with the work. - */ - genre: string[]; - /** - * Author's Guide to Installation. - */ - installation: string; - /** - * List of available languages. - */ - language: string[]; - /** - * Length of the animation. - */ - lenght: string; - /** - * Number of pages or elements that make up the work. - */ - pages: string; - /** - * List of resolutions available for the work. - */ - resolution: string[]; -} -/** - * Collection of values representing an asset present on the F95Zone platform. - */ -export interface IAsset extends IBasic { - /** - * External URL of the asset. - */ - assetLink: string; - /** - * List of URLs of assets associated with the work - * (for example same collection). - */ - associatedAssets: string[]; - /** - * Software compatible with the work. - */ - compatibleSoftware: string; - /** - * List of assets url included in the work or used to develop it. - */ - includedAssets: string[]; - /** - * List of official links of the work, external to the platform. - */ - officialLinks: string[]; - /** - * Unique SKU value of the work. - */ - sku: string; -} -/** - * Collection of values extrapolated from the - * F95 platform representing a particular work. - */ -export interface IHandiwork extends IGame, IComic, IAnimation, IAsset {} -export interface IQuery { - /** - * Name of the implemented interface. - */ - itype: TQueryInterface; - /** - * Category of items to search among. - */ - category: TCategory; - /** - * Tags to be include in the search. - * Max. 5 tags - */ - includedTags: string[]; - /** - * Prefixes to include in the search. - */ - includedPrefixes: string[]; - /** - * Index of the page to be obtained. - * Between 1 and infinity. - */ - page: number; - /** - * Verify that the query values are valid. - */ - validate(): boolean; - /** - * Search with the data in the query and returns the result. - * - * If the query is invalid it throws an exception. - */ - execute(): any; -} diff --git a/scripts/network-helper.d.ts b/scripts/network-helper.d.ts deleted file mode 100644 index 7b35f33..0000000 --- a/scripts/network-helper.d.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { AxiosResponse } from "axios"; -import LoginResult from "./classes/login-result.js"; -import { Result } from "./classes/result.js"; -import { GenericAxiosError, UnexpectedResponseContentType } from "./classes/errors.js"; -import Credentials from "./classes/credentials.js"; -/** - * Gets the HTML code of a page. - */ -export declare function fetchHTML( - url: string -): Promise>; -/** - * It authenticates to the platform using the credentials - * and token obtained previously. Save cookies on your - * device after authentication. - * @param {Credentials} credentials Platform access credentials - * @param {Boolean} force Specifies whether the request should be forced, ignoring any saved cookies - * @returns {Promise} Result of the operation - */ -export declare function authenticate( - credentials: Credentials, - force?: boolean -): Promise; -/** - * Send an OTP code if the login procedure requires it. - * @param code OTP code. - * @param token Unique token for the session associated with the credentials in use. - * @param trustedDevice If the device in use is trusted, 2FA authentication is not required for 30 days. - */ -export declare function send2faCode( - code: number, - token: string, - trustedDevice?: boolean -): Promise>; -/** - * Obtain the token used to authenticate the user to the platform. - */ -export declare function getF95Token(): Promise; -/** - * Performs a GET request to a specific URL and returns the response. - */ -export declare function fetchGETResponse( - url: string -): Promise>>; -/** - * Performs a POST request through axios. - * @param url URL to request - * @param params List of value pairs to send with the request - * @param force If `true`, the request ignores the sending of cookies already present on the device. - */ -export declare function fetchPOSTResponse( - url: string, - params: { - [s: string]: string; - }, - force?: boolean -): Promise>>; -/** - * Enforces the scheme of the URL is https and returns the new URL. - */ -export declare function enforceHttpsUrl(url: string): string; -/** - * Check if the url belongs to the domain of the F95 platform. - */ -export declare function isF95URL(url: string): boolean; -/** - * Checks if the string passed by parameter has a - * properly formatted and valid path to a URL (HTTP/HTTPS). - */ -export declare function isStringAValidURL(url: string): boolean; -/** - * Check if a particular URL is valid and reachable on the web. - * @param {string} url URL to check - * @param {boolean} [checkRedirect] - * If true, the function will consider redirects a violation and return false. - * Default: false - * @returns {Promise} true if the URL exists, false otherwise - */ -export declare function urlExists(url: string, checkRedirect?: boolean): Promise; -/** - * Check if the URL has a redirect to another page. - * @param {String} url URL to check for redirect - * @returns {Promise} Redirect URL or the passed URL - */ -export declare function getUrlRedirect(url: string): Promise; diff --git a/scripts/scrape-data/handiwork-parse.d.ts b/scripts/scrape-data/handiwork-parse.d.ts deleted file mode 100644 index 94f98ac..0000000 --- a/scripts/scrape-data/handiwork-parse.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import Thread from "../classes/mapping/thread.js"; -import { IBasic } from "../interfaces.js"; -export declare function getHandiworkInformation( - url: string -): Promise; -export declare function getHandiworkInformation( - url: string -): Promise; -/** - * Gets information of a particular handiwork from its thread. - * - * If you don't want to specify the object type, use `HandiWork`. - * - * @todo It does not currently support assets. - */ -export default function getHandiworkInformation( - arg: string | Thread -): Promise; diff --git a/scripts/scrape-data/json-ld.d.ts b/scripts/scrape-data/json-ld.d.ts deleted file mode 100644 index c065f18..0000000 --- a/scripts/scrape-data/json-ld.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/// -/** - * Represents information contained in a JSON+LD tag. - */ -export declare type TJsonLD = { - [s: string]: string | TJsonLD; -}; -/** - * Extracts and processes the JSON-LD values of the page. - * @param {cheerio.Cheerio} body Page `body` selector - * @returns {TJsonLD[]} List of data obtained from the page - */ -export declare function getJSONLD(body: cheerio.Cheerio): TJsonLD; diff --git a/scripts/scrape-data/post-parse.d.ts b/scripts/scrape-data/post-parse.d.ts deleted file mode 100644 index c91cb9f..0000000 --- a/scripts/scrape-data/post-parse.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// -export interface IPostElement { - type: "Empty" | "Text" | "Link" | "Image" | "Spoiler"; - name: string; - text: string; - content: IPostElement[]; -} -export interface ILink extends IPostElement { - type: "Image" | "Link"; - href: string; -} -/** - * Given a post of a thread page it extracts the information contained in the body. - */ -export declare function parseF95ThreadPost( - $: cheerio.Root, - post: cheerio.Cheerio -): IPostElement[]; diff --git a/scripts/search.d.ts b/scripts/search.d.ts deleted file mode 100644 index b215815..0000000 --- a/scripts/search.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IBasic, IQuery } from "./interfaces.js"; -/** - * Gets the handiworks that match the passed parameters. - * You *must* be logged. - * @param {Number} limit - * Maximum number of items to get. Default: 30 - */ -export default function search( - query: IQuery, - limit?: number -): Promise; diff --git a/scripts/shared.d.ts b/scripts/shared.d.ts deleted file mode 100644 index c74adb8..0000000 --- a/scripts/shared.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import log4js from "log4js"; -import Session from "./classes/session.js"; -export declare type TPrefixDict = { - [n: number]: string; -}; -declare type TPrefixKey = "engines" | "statuses" | "tags" | "others"; -/** - * Class containing variables shared between modules. - */ -export default abstract class Shared { - private static _isLogged; - private static _prefixes; - private static _logger; - private static _session; - /** - * Indicates whether a user is logged in to the F95Zone platform or not. - */ - static get isLogged(): boolean; - /** - * List of platform prefixes and tags. - */ - static get prefixes(): { - [s: string]: TPrefixDict; - }; - /** - * Logger object used to write to both file and console. - */ - static get logger(): log4js.Logger; - /** - * Path to the cache used by this module wich contains engines, statuses, tags... - */ - static get cachePath(): string; - /** - * Session on the F95Zone platform. - */ - static get session(): Session; - static setPrefixPair(key: TPrefixKey, val: TPrefixDict): void; - static setIsLogged(val: boolean): void; -} -export {};