This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/483952/1541529/Furaffinity-Request-Helper.js
// ==UserScript==
// @name Furaffinity-Request-Helper
// @namespace Violentmonkey Scripts
// @require https://update.greasyfork.org/scripts/525666/1530872/Furaffinity-Prototype-Extensions.js
// @grant none
// @version 1.4.0
// @author Midori Dragon
// @description Library to simplify requests to Furaffinity
// @icon https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png
// @license MIT
// ==/UserScript==
// jshint esversion: 8
(() => {
"use strict";
class Semaphore {
constructor(maxConcurrency) {
this.maxConcurrency = maxConcurrency;
this.currentConcurrency = 0;
this.waitingQueue = [];
}
acquire() {
return new Promise((resolve => {
if (this.currentConcurrency < this.maxConcurrency) {
this.currentConcurrency++;
resolve();
} else this.waitingQueue.push(resolve);
}));
}
release() {
if (this.waitingQueue.length > 0) {
const nextResolve = this.waitingQueue.shift();
if (null != nextResolve) nextResolve();
} else this.currentConcurrency--;
}
}
class PercentHelper {
constructor() {
throw new Error("The PercentHelper class is static and cannot be instantiated.");
}
static setPercentValue(id, value) {
if (value && PercentHelper._percentAll.hasOwnProperty(id)) {
PercentHelper._percentAll[id] = value;
return true;
}
return false;
}
static getPercentValue(id, decimalPlaces = 2) {
if (null == id) return -1;
const percent = PercentHelper._percentAll[id];
if (!percent) return -1; else return parseFloat(percent.toFixed(decimalPlaces));
}
static createPercentValue(uniqueId) {
PercentHelper._percentAll[uniqueId] = 0;
}
static deletePercentValue(id) {
if (PercentHelper._percentAll.hasOwnProperty(id)) delete PercentHelper._percentAll[id];
}
static updatePercentValue(id, value, totalValue) {
if (null != id && "" !== id && -1 !== id) {
const progress = value / totalValue * 100;
PercentHelper.setPercentValue(id, progress);
}
}
}
PercentHelper._percentAll = {};
var __awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class WaitAndCallAction {
constructor(action, delay) {
this.delay = 10;
this._running = false;
this._action = action;
if (null != delay) this.delay = delay;
}
start() {
if (null != this._action && false === this._running) {
this._running = true;
this._intervalId = setInterval((() => {
var _a;
this._action(PercentHelper.getPercentValue(null === (_a = this._intervalId) || void 0 === _a ? void 0 : _a.toString()));
}), this.delay);
PercentHelper.createPercentValue(this._intervalId.toString());
return this._intervalId;
}
}
stop() {
if (this._running) {
this._running = false;
clearInterval(this._intervalId);
if (null != this._intervalId) PercentHelper.deletePercentValue(this._intervalId.toString());
}
}
static callFunctionAsync(functionToCall_1, params_1, action_1, delay_1) {
return __awaiter(this, arguments, void 0, (function*(functionToCall, params, action, delay, usePercent = false) {
if (null == action) return yield functionToCall(...params);
const waitAndCallAction = new WaitAndCallAction(action, delay), percentId = waitAndCallAction.start();
if (usePercent) params.push(percentId);
const result = yield functionToCall(...params);
waitAndCallAction.stop();
return result;
}));
}
static callFunction(functionToCall, params, action, delay, usePercent = false) {
if (null == action) return functionToCall(...params);
const waitAndCallAction = new WaitAndCallAction(action, delay), percentId = waitAndCallAction.start();
if (usePercent) params.push(percentId);
const result = functionToCall(...params);
waitAndCallAction.stop();
return result;
}
}
class IdArray {
constructor() {
throw new Error("The IdArray class is static and cannot be instantiated.");
}
static getTillId(collection, toId, attributeName = "id") {
const result = [];
toId = toId.toString();
for (const elem of collection) {
result.push(elem);
const attribute = elem.getAttribute(attributeName);
if (null != attribute && attribute.replace("sid-", "") === toId) break;
}
return result;
}
static getSinceId(collection, fromId, attributeName = "id") {
const array = collection;
array.reverse();
const result = [];
fromId = fromId.toString();
for (const elem of array) {
result.push(elem);
const attribute = elem.getAttribute(attributeName);
if (null != attribute && attribute.replace("sid-", "") === fromId) break;
}
result.reverse();
return result;
}
static getBetweenIds(collection, fromId, toId, attributeName = "id") {
const array = collection;
let startIndex = -1, endIndex = -1;
fromId = fromId.toString();
toId = toId.toString();
for (let i = 0; i < array.length; i++) {
const attribute = array[i].getAttribute(attributeName);
if (null != attribute && attribute.replace("sid-", "") === fromId) startIndex = i;
if (null != attribute && attribute.replace("sid-", "") === toId) endIndex = i;
if (-1 !== startIndex && -1 !== endIndex) break;
}
if (-1 === startIndex && -1 === endIndex) return array;
if (-1 === startIndex) startIndex = 0;
if (-1 === endIndex) endIndex = array.length - 1;
const result = [];
for (let i = startIndex; i <= endIndex; i++) result.push(array[i]);
return result;
}
static containsId(collection, id, attributeName = "id") {
id = id.toString();
for (const elem of collection) {
const attribute = elem.getAttribute(attributeName);
if (null != attribute && attribute.replace("sid-", "") === id) return true;
}
return false;
}
}
function convertToNumber(value) {
if (null == value) return;
const number = parseInt(value.toString());
if (!isNaN(number)) return number;
}
var LogLevel, Scraps_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Scraps {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/scraps/";
}
getSubmissionPageNo(username_1, submissionId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Scraps_awaiter(this, arguments, void 0, (function*(username, submissionId, fromPageNumber, toPageNumber, action, delay = 100) {
submissionId = convertToNumber(submissionId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getSubmissionPageNo, [ username, submissionId, void 0, fromPageNumber, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay);
}));
}
getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
return Scraps_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, void 0, GalleryType.SCRAPS, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, void 0, GalleryType.SCRAPS, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, void 0, void 0, GalleryType.SCRAPS, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Scraps_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, fromPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, fromPageNumber, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenPages(username_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Scraps_awaiter(this, arguments, void 0, (function*(username, fromPageNumber, toPageNumber, action, delay = 100) {
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromPageNumber || fromPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillPage, [ username, void 0, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay, true); else if (null == toPageNumber || toPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSincePage, [ username, void 0, fromPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenPages, [ username, void 0, fromPageNumber, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay, true);
}));
}
getFigures(username_1, pageNumber_1, action_1) {
return Scraps_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFigures, [ username, void 0, pageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay);
}));
}
getPage(username_1, pageNumber_1, action_1) {
return Scraps_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(Page.getGalleryPage, [ username, void 0, pageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay);
}));
}
}
!function(LogLevel) {
LogLevel[LogLevel.Error = 1] = "Error";
LogLevel[LogLevel.Warning = 2] = "Warning";
LogLevel[LogLevel.Info = 3] = "Info";
}(LogLevel || (LogLevel = {}));
class Logger {
static log(logLevel = LogLevel.Warning, ...args) {
if (null == window.__FF_GLOBAL_LOG_LEVEL__) window.__FF_GLOBAL_LOG_LEVEL__ = LogLevel.Error;
if (!(logLevel > window.__FF_GLOBAL_LOG_LEVEL__)) switch (logLevel) {
case LogLevel.Error:
console.error(...args);
break;
case LogLevel.Warning:
console.warn(...args);
break;
case LogLevel.Info:
console.log(...args);
}
}
static setLogLevel(logLevel) {
window.__FF_GLOBAL_LOG_LEVEL__ = logLevel;
}
static logError(...args) {
Logger.log(LogLevel.Error, ...args);
}
static logWarning(...args) {
Logger.log(LogLevel.Warning, ...args);
}
static logInfo(...args) {
Logger.log(LogLevel.Info, ...args);
}
}
var Favorites_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Favorites {
constructor(semaphore) {
this.semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/favorites/";
}
getSubmissionDataFavId(username_1, submissionId_1, fromDataFavId_1, toDataFavId_1, action_1) {
return Favorites_awaiter(this, arguments, void 0, (function*(username, submissionId, fromDataFavId, toDataFavId, action, delay = 100) {
submissionId = convertToNumber(submissionId);
fromDataFavId = convertToNumber(fromDataFavId);
toDataFavId = convertToNumber(toDataFavId);
return yield WaitAndCallAction.callFunctionAsync(getSubmissionDataFavId, [ username, submissionId, fromDataFavId, toDataFavId, this.semaphore ], action, delay);
}));
}
getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
return Favorites_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresTillId, [ username, toId, void 0, this.semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresSinceId, [ username, fromId, void 0, this.semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresBetweenIds, [ username, fromId, toId, void 0, void 0, this.semaphore ], action, delay, true);
}));
}
getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromDataFavId_1, toDataFavId_1, action_1) {
return Favorites_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromDataFavId, toDataFavId, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromDataFavId = convertToNumber(fromDataFavId);
toDataFavId = convertToNumber(toDataFavId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresTillId, [ username, toId, fromDataFavId, this.semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresSinceId, [ username, fromId, toDataFavId, this.semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresBetweenIds, [ username, fromId, toId, fromDataFavId, toDataFavId, this.semaphore ], action, delay, true);
}));
}
getFiguresBetweenPages(username_1, fromDataFavId_1, toDataFavId_1, action_1) {
return Favorites_awaiter(this, arguments, void 0, (function*(username, fromDataFavId, toDataFavId, action, delay = 100) {
fromDataFavId = convertToNumber(fromDataFavId);
toDataFavId = convertToNumber(toDataFavId);
if (null == fromDataFavId || fromDataFavId <= 0) return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresTillPage, [ username, toDataFavId, this.semaphore ], action, delay, true); else if (null == toDataFavId || toDataFavId <= 0) return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresSincePage, [ username, fromDataFavId, this.semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresBetweenPages, [ username, fromDataFavId, toDataFavId, this.semaphore ], action, delay, true);
}));
}
getFigures(username_1, fromDataFavId_1, direction_1, action_1) {
return Favorites_awaiter(this, arguments, void 0, (function*(username, fromDataFavId, direction, action, delay = 100) {
fromDataFavId = convertToNumber(fromDataFavId);
direction = convertToNumber(direction);
return yield WaitAndCallAction.callFunctionAsync(getFavoritesFigures, [ username, fromDataFavId, direction, this.semaphore ], action, delay);
}));
}
getPage(username_1, fromDataFavId_1, direction_1, action_1) {
return Favorites_awaiter(this, arguments, void 0, (function*(username, fromDataFavId, direction, action, delay = 100) {
fromDataFavId = convertToNumber(fromDataFavId);
direction = convertToNumber(direction);
return yield WaitAndCallAction.callFunctionAsync(Page.getFavoritesPage, [ username, fromDataFavId, direction, this.semaphore ], action, delay);
}));
}
}
function getSubmissionDataFavId(username, submissionId, fromDataFavId, toDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == submissionId || submissionId <= 0) {
Logger.logError("No submissionId given");
return -1;
}
if (null == fromDataFavId || fromDataFavId <= 0) {
Logger.logWarning("fromDataFavId must be greater than 0. Using default 1 instead.");
fromDataFavId = -1;
}
if (null == toDataFavId || toDataFavId <= 0) {
Logger.logWarning("toDataFavId must be greater than 0. Using default 1 instead.");
toDataFavId = -1;
}
let dataFavId = fromDataFavId, running = true;
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
let currFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
const resultFigure = figures.find((figure => figure.id.trimStart("sid-") === submissionId.toString()));
if (null != resultFigure) return parseInt(resultFigure.getAttribute("data-fav-id"));
}
if (undefined === currFigureId) running = false;
}
return -1;
}));
}
function getFavoritesFiguresTillId(username, toId, fromDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
if (null == fromDataFavId || fromDataFavId <= 0) {
Logger.logWarning("No fromDataFavId given. Using default 1 instead.");
fromDataFavId = -1;
}
let running = true, dataFavId = fromDataFavId;
const allFigures = [];
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
let currFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getTillId(figures, toId));
running = false;
} else allFigures.push(figures);
}
return allFigures;
}));
}
function getFavoritesFiguresSinceId(username, fromId, toDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
if (null == toDataFavId || toDataFavId <= 0) {
Logger.logWarning("No toDataFavId given. Using default 1 instead.");
toDataFavId = -1;
}
let dataFavId = toDataFavId >= 0 ? toDataFavId : -1;
const direction = toDataFavId >= 0 ? -1 : 1;
let running = true;
if (toDataFavId < 0) {
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, fromId)) {
running = false;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
}
running = true;
}
const allFigures = [];
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
let currFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = direction >= 0 ? figures[figures.length - 1].getAttribute("data-fav-id") : figures[0].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (undefined === currFigureId) running = false; else if (direction < 0) if (IdArray.containsId(figures, fromId)) {
allFigures.push(IdArray.getSinceId(figures, fromId).reverse());
running = false;
} else allFigures.push(Array.from(figures).reverse()); else if (IdArray.containsId(figures, toDataFavId, "data-fav-id")) {
allFigures.push(IdArray.getTillId(figures, toDataFavId, "data-fav-id"));
running = false;
} else allFigures.push(figures);
}
if (direction < 0) allFigures.reverse();
return allFigures;
}));
}
function getFavoritesFiguresBetweenIds(username, fromId, toId, fromDataFavId, toDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
if (null == fromDataFavId || fromDataFavId <= 0) {
Logger.logWarning("No fromDataFavId given. Using default 1 instead.");
fromDataFavId = -1;
}
if (null == toDataFavId || toDataFavId <= 0) {
Logger.logWarning("No toDataFavId given. Using default 1 instead.");
toDataFavId = -1;
}
const direction = fromDataFavId >= 0 ? 1 : toDataFavId >= 0 ? -1 : 1;
let lastFigureId, dataFavId = fromDataFavId >= 0 ? fromDataFavId : toDataFavId, running = true;
if (fromDataFavId < 0 && toDataFavId < 0) {
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (currFigureId === lastFigureId) running = false; else if (IdArray.containsId(figures, fromId)) running = false;
}
running = true;
}
const allFigures = [];
lastFigureId = void 0;
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = direction >= 0 ? figures[figures.length - 1].getAttribute("data-fav-id") : figures[0].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (currFigureId === lastFigureId) running = false; else if (direction < 0) if (IdArray.containsId(figures, fromId)) {
allFigures.push(IdArray.getSinceId(figures, fromId).reverse());
running = false;
} else if (IdArray.containsId(figures, toId)) allFigures.push(IdArray.getTillId(figures, toId).reverse()); else allFigures.push(Array.from(figures).reverse()); else if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getTillId(figures, toId));
running = false;
} else if (IdArray.containsId(figures, fromId)) allFigures.push(IdArray.getSinceId(figures, fromId)); else allFigures.push(figures);
}
if (direction < 0) allFigures.reverse();
return allFigures;
}));
}
function getFavoritesFiguresTillPage(username, toDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == toDataFavId || toDataFavId <= 0) {
Logger.logWarning("toDataFavId must be greater than 0. Using default 1 instead.");
toDataFavId = -1;
}
let dataFavId = toDataFavId;
const allFigures = [];
let running = true;
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
let currFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, toDataFavId, "data-fav-id")) {
allFigures.push(IdArray.getTillId(figures, toDataFavId, "data-fav-id"));
running = false;
} else allFigures.push(figures);
}
return allFigures;
}));
}
function getFavoritesFiguresSincePage(username, fromDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == fromDataFavId || fromDataFavId <= 0) {
Logger.logWarning("fromDataFavId must be greater than 0. Using default 1 instead.");
fromDataFavId = -1;
}
let dataFavId = fromDataFavId;
const allFigures = [];
let running = true;
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
let currFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, fromDataFavId, "data-fav-id")) allFigures.push(IdArray.getSinceId(figures, fromDataFavId, "data-fav-id")); else allFigures.push(figures);
}
return allFigures;
}));
}
function getFavoritesFiguresBetweenPages(username, fromDataFavId, toDataFavId, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
if (null == fromDataFavId || fromDataFavId <= 0) {
Logger.logWarning("fromDataFavId must be greater than 0. Using default 1 instead.");
fromDataFavId = -1;
}
if (null == toDataFavId || toDataFavId <= 0) {
Logger.logWarning("toDataFavId must be greater than 0. Using default 1 instead.");
toDataFavId = -1;
}
let dataFavId = fromDataFavId;
const allFigures = [];
let running = true;
for (;running; ) {
const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
let currFigureId;
if (0 !== figures.length) {
currFigureId = figures[0].id;
const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
if (null == dataFavIdString) {
running = false;
break;
}
dataFavId = parseInt(dataFavIdString);
}
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, fromDataFavId, "data-fav-id")) allFigures.push(IdArray.getSinceId(figures, fromDataFavId, "data-fav-id")); else if (IdArray.containsId(figures, toDataFavId, "data-fav-id")) {
allFigures.push(IdArray.getTillId(figures, toDataFavId, "data-fav-id"));
running = false;
} else allFigures.push(figures);
}
return allFigures;
}));
}
function getFavoritesFigures(username, dataFavId, direction, semaphore) {
return Favorites_awaiter(this, void 0, void 0, (function*() {
Logger.logInfo(`Getting Favorites of "${username}" since id "${dataFavId}" and direction "${direction}".`);
const galleryDoc = yield Page.getFavoritesPage(username, dataFavId, direction, semaphore);
if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) {
Logger.logInfo(`No images found at favorites of "${username}" on page "${dataFavId}".`);
return [];
}
const figures = galleryDoc.getElementsByTagName("figure");
if (null == figures || 0 === figures.length) {
Logger.logInfo(`No figures found at favorites of "${username}" on page "${dataFavId}".`);
return [];
}
return Array.from(figures);
}));
}
var Journals_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Journals {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/journals/";
}
getJournalPageNo(username_1, journalId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Journals_awaiter(this, arguments, void 0, (function*(username, journalId, fromPageNumber, toPageNumber, action, delay = 100) {
journalId = convertToNumber(journalId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
return yield WaitAndCallAction.callFunctionAsync(getJournalPageNo, [ username, journalId, fromPageNumber, toPageNumber, this._semaphore ], action, delay);
}));
}
getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
return Journals_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsTillId, [ username, toId, void 0, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsSinceId, [ username, fromId, void 0, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsBetweenIds, [ username, fromId, toId, void 0, void 0, this._semaphore ], action, delay);
}));
}
getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Journals_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsTillId, [ username, toId, fromPageNumber, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsSinceId, [ username, fromId, toPageNumber, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsBetweenIds, [ username, fromId, toId, fromPageNumber, toPageNumber, this._semaphore ], action, delay);
}));
}
getSectionsBetweenPages(username_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Journals_awaiter(this, arguments, void 0, (function*(username, fromPageNumber, toPageNumber, action, delay = 100) {
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromPageNumber || fromPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsTillPage, [ username, toPageNumber, this._semaphore ], action, delay, true); else if (null == toPageNumber || toPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsSincePage, [ username, fromPageNumber, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsBetweenPages, [ username, fromPageNumber, toPageNumber, this._semaphore ], action, delay, true);
}));
}
getSections(username_1, pageNumber_1, action_1) {
return Journals_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(getJournalsSections, [ username, pageNumber, this._semaphore ], action, delay);
}));
}
getPage(username_1, pageNumber_1, action_1) {
return Journals_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(Page.getJournalsPage, [ username, pageNumber, this._semaphore ], action, delay);
}));
}
}
function getJournalPageNo(username, journalId, fromPageNumber, toPageNumber, semaphore, percentId) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == journalId || journalId <= 0) {
Logger.logError("No journalId given");
return -1;
}
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
if (null == toPageNumber || 0 === toPageNumber) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
} else if (toPageNumber < 0) toPageNumber = Number.MAX_SAFE_INTEGER;
const direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
let completedPages = 0;
for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
const figures = yield getJournalsSections(username, i, semaphore);
if (0 === figures.length) i = toPageNumber; else {
if (null != figures.find((figure => figure.id.trimStart("jid-") === journalId.toString()))) return i;
}
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
}
return -1;
}));
}
function getJournalsSectionsTillId(username, toId, fromPage, semaphore) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
const allSections = [];
let running = true, i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
for (;running; ) {
const sections = yield getJournalsSections(username, i, semaphore);
let currSectionId;
if (0 !== sections.length) currSectionId = sections[0].id;
if (undefined === currSectionId) running = false; else if (IdArray.containsId(sections, toId)) {
allSections.push(IdArray.getTillId(sections, toId));
running = false;
} else {
allSections.push(sections);
i++;
}
}
return allSections;
}));
}
function getJournalsSectionsSinceId(username, fromId, toPage, semaphore) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
const direction = null == toPage || toPage <= 0 ? -1 : 1;
let lastSectionId, running = true, i = null == toPage || toPage <= 0 ? 1 : toPage;
if (null == toPage || toPage <= 0) for (;running; ) {
const figures = yield getJournalsSections(username, i, semaphore);
let currSectionId = lastSectionId;
if (0 !== figures.length) currSectionId = figures[0].id;
if (currSectionId === lastSectionId) running = false; else if (IdArray.containsId(figures, fromId)) running = false; else i++;
}
const allSections = [];
lastSectionId = void 0;
running = true;
for (;running; ) {
const figures = yield getJournalsSections(username, i, semaphore);
let currSectionId = lastSectionId;
if (0 !== figures.length) currSectionId = figures[0].id;
if (currSectionId === lastSectionId) running = false; else {
if (IdArray.containsId(figures, fromId)) {
const figuresPush = IdArray.getSinceId(figures, fromId);
if (direction < 0) {
figuresPush.reverse();
running = false;
}
allSections.push(figuresPush);
} else {
if (direction < 0) figures.reverse();
allSections.push(figures);
}
i += direction;
}
}
if (direction < 0) allSections.reverse();
return allSections;
}));
}
function getJournalsSectionsBetweenIds(username, fromId, toId, fromPage, toPage, semaphore, percentId) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
if (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) {
Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated.");
percentId = void 0;
}
let i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
const allSections = [];
let running = true, completedPages = 0;
for (;running; ) {
if (null != toPage && toPage >= 1 && i >= toPage) running = false;
const sections = yield getJournalsSections(username, i, semaphore);
let currSectionId;
if (0 !== sections.length) currSectionId = sections[0].id;
if (undefined === currSectionId) running = false; else {
if (IdArray.containsId(sections, fromId)) allSections.push(IdArray.getSinceId(sections, fromId));
if (IdArray.containsId(sections, toId)) {
allSections.push(IdArray.getBetweenIds(sections, fromId, toId));
running = false;
} else {
allSections.push(sections);
i++;
}
}
completedPages++;
if (null != toPage && toPage >= 1) PercentHelper.updatePercentValue(percentId, completedPages, toPage);
}
return allSections;
}));
}
function getJournalsSectionsTillPage(username, toPageNumber, semaphore, percentId) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == toPageNumber || 0 === toPageNumber) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
} else if (toPageNumber < 0) toPageNumber = Number.MAX_SAFE_INTEGER;
const allSections = [];
let completedPages = 0;
for (let i = 1; i <= toPageNumber; i++) {
const sections = yield getJournalsSections(username, i, semaphore);
if (0 === sections.length) i = toPageNumber; else allSections.push(sections);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
}
return allSections;
}));
}
function getJournalsSectionsSincePage(username, fromPageNumber, semaphore) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
const allSections = [];
let running = true, i = fromPageNumber;
for (;running; ) {
const sections = yield getJournalsSections(username, i, semaphore);
let currSectionId;
if (0 !== sections.length) currSectionId = sections[0].id;
if (undefined === currSectionId) running = false; else {
allSections.push(sections);
i++;
}
}
return allSections;
}));
}
function getJournalsSectionsBetweenPages(username, fromPageNumber, toPageNumber, semaphore, percentId) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
if (null == toPageNumber || 0 === toPageNumber) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
} else if (toPageNumber < 0) toPageNumber = Number.MAX_SAFE_INTEGER;
const allSections = [], direction = fromPageNumber < toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
let completedPages = 0;
for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
const sections = yield getJournalsSections(username, i, semaphore);
if (0 === sections.length) i = toPageNumber; else allSections.push(sections);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
}
return allSections;
}));
}
function getJournalsSections(username, pageNumber, semaphore) {
return Journals_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("pageNumber must be greater than 0. Using default 1 instead.");
pageNumber = 1;
}
Logger.logInfo(`Getting Journals of "${username}" on page "${pageNumber}".`);
const galleryDoc = yield Page.getJournalsPage(username, pageNumber, semaphore);
if (!galleryDoc) {
Logger.logWarning(`No journals found at "${username}" on page "${pageNumber}".`);
return [];
}
const columnPage = galleryDoc.getElementById("columnpage");
if (!columnPage) {
Logger.logWarning(`No column page found at "${username}" on page "${pageNumber}".`);
return [];
}
const sections = columnPage.getElementsByTagName("section");
if (null == sections || 0 === sections.length) {
Logger.logWarning(`No journals found at "${username}" on page "${pageNumber}".`);
return [];
}
return Array.from(sections);
}));
}
var Search_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Search {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/search/";
}
get newSearchOptions() {
return new SearchOptions;
}
static get newSearchOptions() {
return new SearchOptions;
}
get SearchOptions() {
return SearchOptions;
}
static get SearchOptions() {
return SearchOptions;
}
getFiguresBetweenIds(fromId_1, toId_1, searchOptions_1, action_1) {
return Search_awaiter(this, arguments, void 0, (function*(fromId, toId, searchOptions, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresTillId, [ toId, void 0, searchOptions, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresSinceId, [ fromId, void 0, searchOptions, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresBetweenIds, [ fromId, toId, void 0, void 0, searchOptions, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenIdsBetweenPages(fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, searchOptions_1, action_1) {
return Search_awaiter(this, arguments, void 0, (function*(fromId, toId, fromPageNumber, toPageNumber, searchOptions, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresTillId, [ toId, fromPageNumber, searchOptions, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresSinceId, [ fromId, toPageNumber, searchOptions, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresBetweenIds, [ fromId, toId, fromPageNumber, toPageNumber, searchOptions, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenPages(fromPageNumber_1, toPageNumber_1, searchOptions_1, action_1) {
return Search_awaiter(this, arguments, void 0, (function*(fromPageNumber, toPageNumber, searchOptions, action, delay = 100) {
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromPageNumber || fromPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresTillPage, [ toPageNumber, searchOptions, this._semaphore ], action, delay, true); else if (null == toPageNumber || toPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresSincePage, [ fromPageNumber, searchOptions, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresBetweenPages, [ fromPageNumber, toPageNumber, searchOptions, this._semaphore ], action, delay, true);
}));
}
getFigures(pageNumber_1, searchOptions_1, action_1) {
return Search_awaiter(this, arguments, void 0, (function*(pageNumber, searchOptions, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFigures, [ pageNumber, searchOptions, this._semaphore ], action, delay);
}));
}
getPage(pageNumber_1, searchOptions_1, action_1) {
return Search_awaiter(this, arguments, void 0, (function*(pageNumber, searchOptions, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(Page.getSearchPage, [ pageNumber, searchOptions, this._semaphore ], action, delay);
}));
}
}
class SearchOptions {
constructor() {
this.ratingGeneral = true;
this.ratingMature = true;
this.ratingAdult = true;
this.typeArt = true;
this.typeMusic = true;
this.typeFlash = true;
this.typeStory = true;
this.typePhotos = true;
this.typePoetry = true;
this.input = "";
this.orderBy = SearchOptions.orderBy.relevancy;
this.orderDirection = SearchOptions.orderDirection.descending;
this.range = SearchOptions.range.alltime;
this.rangeFrom = void 0;
this.rangeTo = void 0;
this.matching = SearchOptions.matching.all;
}
static get orderBy() {
return {
relevancy: "relevancy",
date: "date",
popularity: "popularity"
};
}
static get orderDirection() {
return {
ascending: "asc",
descending: "desc"
};
}
static get range() {
return {
"1day": "1day",
"3days": "3days",
"7days": "7days",
"30days": "30days",
"90days": "90days",
"1year": "1year",
"3years": "3years",
"5years": "5years",
alltime: "all",
manual: "manual"
};
}
static get matching() {
return {
all: "all",
any: "any",
extended: "extended"
};
}
}
var SearchRequests_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class SearchRequests {
constructor(semaphore) {
this._semaphore = semaphore;
this.Browse = new Browse(this._semaphore);
this.Search = new Search(this._semaphore);
}
static getBrowseFiguresTillId(toId, fromPage, browseOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
let allFigures = [], running = true, i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
for (;running; ) {
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getTillId(figures, toId));
running = false;
} else {
allFigures.push(figures);
i++;
}
}
return allFigures;
}));
}
static getBrowseFiguresSinceId(fromId, toPage, browseOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
const direction = null == toPage || toPage <= 0 ? -1 : 1;
let lastFigureId, running = true, i = null == toPage || toPage <= 0 ? 1 : toPage;
if (null == toPage || toPage <= 0) for (;running; ) {
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (currFigureId === lastFigureId) running = false; else if (IdArray.containsId(figures, fromId)) running = false; else i++;
}
let allFigures = [];
lastFigureId = void 0;
running = true;
for (;running; ) {
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (currFigureId === lastFigureId) running = false; else {
if (IdArray.containsId(figures, fromId)) {
const figuresPush = IdArray.getSinceId(figures, fromId);
if (direction < 0) {
figuresPush.reverse();
running = false;
}
allFigures.push(figuresPush);
} else {
if (direction < 0) figures.reverse();
allFigures.push(figures);
}
i += direction;
}
}
if (direction < 0) allFigures.reverse();
return allFigures;
}));
}
static getBrowseFiguresBetweenIds(fromId, toId, fromPage, toPage, browseOptions, semaphore, percentId) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
if (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) {
Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated.");
percentId = void 0;
}
let i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
const allFigures = [];
let running = true, completedPages = 0;
for (;running; ) {
if (null != toPage && toPage >= 1 && i >= toPage) running = false;
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else {
if (IdArray.containsId(figures, fromId)) allFigures.push(IdArray.getSinceId(figures, fromId));
if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getBetweenIds(figures, fromId, toId));
running = false;
} else {
allFigures.push(figures);
i++;
}
}
completedPages++;
if (null != toPage && toPage >= 1) PercentHelper.updatePercentValue(percentId, completedPages, toPage);
}
return allFigures;
}));
}
static getBrowseFiguresTillPage(toPageNumber, browseOptions, semaphore, percentId) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == toPageNumber || toPageNumber <= 0) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
}
const allFigures = [];
let completedPages = 0;
for (let i = 1; i <= toPageNumber; i++) {
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
if (0 !== figures.length) allFigures.push(figures);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
}
return allFigures;
}));
}
static getBrowseFiguresSincePage(fromPageNumber, browseOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
const allFigures = [];
let running = true, i = fromPageNumber;
for (;running; ) {
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else {
allFigures.push(figures);
i++;
}
}
return allFigures;
}));
}
static getBrowseFiguresBetweenPages(fromPageNumber, toPageNumber, browseOptions, semaphore, percentId) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
if (null == toPageNumber || toPageNumber <= 0) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
}
const allFigures = [], direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
if (0 !== figures.length) allFigures.push(figures);
PercentHelper.updatePercentValue(percentId, 0, totalPages);
}
return allFigures;
}));
}
static getBrowseFigures(pageNumber, browseOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("No pageNumber given. Using default value of 1.");
pageNumber = 1;
}
const galleryDoc = yield Page.getBrowsePage(pageNumber, browseOptions, semaphore);
if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) {
Logger.logInfo(`No images found at browse on page "${pageNumber}".`);
return [];
}
const figures = galleryDoc.getElementsByTagName("figure");
if (null == figures || 0 === figures.length) {
Logger.logInfo(`No figures found at browse on page "${pageNumber}".`);
return [];
}
return Array.from(figures);
}));
}
static getSearchFiguresTillId(toId, fromPage, searchOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
let allFigures = [], running = true, i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
for (;running; ) {
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getTillId(figures, toId));
running = false;
} else {
allFigures.push(figures);
i++;
}
}
return allFigures;
}));
}
static getSearchFiguresSinceId(fromId, toPage, searchOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
const direction = null == toPage || toPage <= 0 ? -1 : 1;
let lastFigureId, running = true, i = null == toPage || toPage <= 0 ? 1 : toPage;
if (null == toPage || toPage <= 0) for (;running; ) {
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (currFigureId === lastFigureId) running = false; else if (IdArray.containsId(figures, fromId)) running = false; else i++;
}
let allFigures = [];
lastFigureId = void 0;
running = true;
for (;running; ) {
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (currFigureId === lastFigureId) running = false; else {
if (IdArray.containsId(figures, fromId)) {
const figuresPush = IdArray.getSinceId(figures, fromId);
if (direction < 0) {
figuresPush.reverse();
running = false;
}
allFigures.push(figuresPush);
} else {
if (direction < 0) figures.reverse();
allFigures.push(figures);
}
i += direction;
}
}
if (direction < 0) allFigures.reverse();
return allFigures;
}));
}
static getSearchFiguresBetweenIds(fromId, toId, fromPage, toPage, searchOptions, semaphore, percentId) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
if (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) {
Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated.");
percentId = void 0;
}
let i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
const allFigures = [];
let running = true, completedPages = 0;
for (;running; ) {
if (null != toPage && toPage >= 1 && i >= toPage) running = false;
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else {
if (IdArray.containsId(figures, fromId)) allFigures.push(IdArray.getSinceId(figures, fromId));
if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getBetweenIds(figures, fromId, toId));
running = false;
} else {
allFigures.push(figures);
i++;
}
}
completedPages++;
if (null != toPage && toPage >= 1) PercentHelper.updatePercentValue(percentId, completedPages, toPage);
}
return allFigures;
}));
}
static getSearchFiguresTillPage(toPageNumber, searchOptions, semaphore, percentId) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == toPageNumber || toPageNumber <= 0) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
}
const allFigures = [];
let completedPages = 0;
for (let i = 1; i <= toPageNumber; i++) {
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
if (0 !== figures.length) allFigures.push(figures);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
}
return allFigures;
}));
}
static getSearchFiguresSincePage(fromPageNumber, searchOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
const allFigures = [];
let running = true, i = fromPageNumber;
for (;running; ) {
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else {
allFigures.push(figures);
i++;
}
}
return allFigures;
}));
}
static getSearchFiguresBetweenPages(fromPageNumber, toPageNumber, searchOptions, semaphore, percentId) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
if (null == toPageNumber || toPageNumber <= 0) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
}
const allFigures = [], direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
let completedPages = 0;
for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
if (0 !== figures.length) allFigures.push(figures);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
}
return allFigures;
}));
}
static getSearchFigures(pageNumber, searchOptions, semaphore) {
return SearchRequests_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("No pageNumber given. Using default value of 1.");
pageNumber = 1;
}
const galleryDoc = yield Page.getSearchPage(pageNumber, searchOptions, semaphore);
if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) {
Logger.logInfo(`No images found at search on page "${pageNumber}".`);
return [];
}
const figures = galleryDoc.getElementsByTagName("figure");
if (null == figures || 0 === figures.length) {
Logger.logInfo(`No figures found at search on page "${pageNumber}".`);
return [];
}
return Array.from(figures);
}));
}
}
var Browse_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Browse {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/browse/";
}
get newBrowseOptions() {
return new BrowseOptions;
}
static get newBrowseOptions() {
return new BrowseOptions;
}
get BrowseOptions() {
return BrowseOptions;
}
static get BrowseOptions() {
return BrowseOptions;
}
getFiguresBetweenIds(fromId_1, toId_1, browseOptions_1, action_1) {
return Browse_awaiter(this, arguments, void 0, (function*(fromId, toId, browseOptions, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresTillId, [ toId, void 0, browseOptions, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresSinceId, [ fromId, void 0, browseOptions, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresBetweenIds, [ fromId, toId, void 0, void 0, browseOptions, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenIdsBetweenPages(fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, browseOptions_1, action_1) {
return Browse_awaiter(this, arguments, void 0, (function*(fromId, toId, fromPageNumber, toPageNumber, browseOptions, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresTillId, [ toId, fromPageNumber, browseOptions, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresSinceId, [ fromId, toPageNumber, browseOptions, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresBetweenIds, [ fromId, toId, fromPageNumber, toPageNumber, browseOptions, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenPages(fromPageNumber_1, toPageNumber_1, browseOptions_1, action_1) {
return Browse_awaiter(this, arguments, void 0, (function*(fromPageNumber, toPageNumber, browseOptions, action, delay = 100) {
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromPageNumber || fromPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresTillPage, [ toPageNumber, browseOptions, this._semaphore ], action, delay, true); else if (null == toPageNumber || toPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresSincePage, [ fromPageNumber, browseOptions, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresBetweenPages, [ fromPageNumber, toPageNumber, browseOptions, this._semaphore ], action, delay, true);
}));
}
getFigures(pageNumber_1, browseOptions_1, action_1) {
return Browse_awaiter(this, arguments, void 0, (function*(pageNumber, browseOptions, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFigures, [ pageNumber, browseOptions, this._semaphore ], action, delay);
}));
}
getPage(pageNumber_1, browseOptions_1, action_1) {
return Browse_awaiter(this, arguments, void 0, (function*(pageNumber, browseOptions, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(Page.getBrowsePage, [ pageNumber, browseOptions, this._semaphore ], action, delay);
}));
}
}
class BrowseOptions {
constructor() {
this.ratingGeneral = true;
this.ratingMature = true;
this.ratingAdult = true;
this.category = BrowseOptions.category.all;
this.type = BrowseOptions.type.all;
this.species = BrowseOptions.species.any;
this.gender = BrowseOptions.gender.any;
this.results = BrowseOptions.results[72];
}
static get category() {
return {
all: 1,
"artwork-digital": 2,
"artwork-traditional": 3,
"cel-shading": 4,
crafting: 5,
designs: 6,
flash: 7,
fursuiting: 8,
icons: 9,
mosaics: 10,
photography: 11,
"food-recipes": 32,
sculpting: 12,
story: 13,
poetry: 14,
prose: 15,
music: 16,
podcasts: 17,
skins: 18,
handhelds: 19,
resources: 20,
adoptables: 21,
auctions: 22,
contests: 23,
"current-events": 24,
desktops: 25,
stockart: 26,
screenshots: 27,
scraps: 28,
wallpaper: 29,
"ych-sale": 30,
other: 31
};
}
static get type() {
return {
all: 1,
abstract: 2,
"animal-related-non-anthro": 3,
anime: 4,
comics: 5,
doodle: 6,
fanart: 7,
fantasy: 8,
human: 9,
portraits: 10,
scenery: 11,
"still-life": 12,
tutorials: 13,
miscellaneous: 14,
"baby-fur": 101,
bondage: 102,
digimon: 103,
"fat-furs": 104,
"fetish-other": 105,
fursuit: 106,
gore: 119,
hyper: 107,
hypnosis: 121,
inflation: 108,
micro: 109,
muscle: 110,
"my-little-pony": 111,
paw: 112,
pokemon: 113,
pregnancy: 114,
sonic: 115,
transformation: 116,
"tf-tg": 120,
vore: 117,
"water-sports": 118,
"general-furry-art": 100,
techno: 201,
trance: 202,
house: 203,
"90s": 204,
"80s": 205,
"70s": 206,
"60s": 207,
"pre-60s": 208,
classical: 209,
"game-music": 210,
rock: 211,
pop: 212,
rap: 213,
industrial: 214,
"other-music": 200
};
}
static get species() {
return {
any: 1,
"airborne-vehicle": 10001,
alien: 5001,
amphibian: 1e3,
aquatic: 2e3,
avian: 3e3,
bear: 6002,
bovine: 6007,
canine: 6017,
cervine: 6018,
dog: 6010,
dragon: 4e3,
equine: 10009,
exotic: 5e3,
feline: 6030,
fox: 6075,
slime: 10007,
"hybrid-species": 10002,
inanimate: 10006,
insect: 8003,
"land-vehicle": 10003,
mammal: 6e3,
marsupial: 6042,
mustelid: 6051,
plant: 10008,
primate: 6058,
reptilian: 7e3,
robot: 10004,
rodent: 6067,
"sea-vehicle": 10005,
taur: 5025,
vulpine: 6015,
"original-species": 11014,
character: 11015,
aeromorph: 11001,
"angel-dragon": 11002,
avali: 11012,
chakat: 5003,
citra: 5005,
crux: 5006,
dracat: 5009,
dutch: 11003,
felkin: 11011,
ferrin: 11004,
jogauni: 11005,
langurhali: 5014,
nevrean: 11006,
protogen: 11007,
rexouium: 11016,
sergal: 5021,
synx: 11010,
wickerbeast: 11013,
yinglet: 11009,
zorgoia: 11008,
angel: 12001,
centaur: 12002,
cerberus: 12003,
"shape-shifter": 12038,
chimera: 12004,
chupacabra: 12005,
cockatrice: 12006,
daemon: 5007,
demon: 12007,
"displacer-beast": 12008,
dragonborn: 12009,
drow: 12010,
dwarf: 12011,
"eastern-dragon": 4001,
elf: 5011,
gargoyle: 5012,
goblin: 12012,
golem: 12013,
gryphon: 3007,
harpy: 12014,
hellhound: 12015,
hippogriff: 12016,
hobbit: 12017,
hydra: 4002,
imp: 12018,
incubus: 12019,
jackalope: 12020,
kirin: 12021,
kitsune: 12022,
kobold: 12023,
lamia: 12024,
manticore: 12025,
minotaur: 12026,
naga: 5016,
nephilim: 12027,
orc: 5018,
pegasus: 12028,
peryton: 12029,
phoenix: 3010,
sasquatch: 12030,
satyr: 5020,
sphinx: 12031,
succubus: 12032,
tiefling: 12033,
troll: 12034,
unicorn: 5023,
"water-dragon": 12035,
werewolf: 12036,
"western-dragon": 4004,
wyvern: 4005,
yokai: 12037,
alicorn: 13001,
argonian: 5002,
asari: 13002,
bangaa: 13003,
"bubble-dragon": 13004,
burmecian: 13005,
charr: 13006,
chiss: 13007,
chocobo: 5004,
deathclaw: 13008,
digimon: 5008,
draenei: 5010,
drell: 13009,
elcor: 13010,
ewok: 13011,
hanar: 13012,
hrothgar: 13013,
iksar: 5013,
kaiju: 5015,
kelpie: 13041,
kemonomimi: 13014,
khajiit: 13015,
koopa: 13016,
krogan: 13017,
lombax: 13018,
mimiga: 13019,
mobian: 13020,
moogle: 5017,
neopet: 13021,
"nu-mou": 13022,
pokemon: 5019,
"pony-mlp": 13023,
protoss: 13024,
quarian: 13025,
ronso: 13026,
salarian: 13027,
sangheili: 13028,
tauntaun: 13029,
tauren: 13030,
trandoshan: 13031,
transformer: 13032,
turian: 13033,
twilek: 13034,
viera: 13035,
wookiee: 13036,
xenomorph: 5024,
yautja: 13037,
yordle: 13038,
yoshi: 13039,
zerg: 13040,
aardvark: 14001,
aardwolf: 14002,
"african-wild-dog": 14003,
akita: 14004,
albatross: 14005,
crocodile: 7001,
alpaca: 14006,
anaconda: 14007,
anteater: 14008,
antelope: 6004,
arachnid: 8e3,
"arctic-fox": 14009,
armadillo: 14010,
axolotl: 14011,
baboon: 14012,
badger: 6045,
bat: 6001,
beaver: 6064,
bee: 14013,
binturong: 14014,
bison: 14015,
"blue-jay": 14016,
"border-collie": 14017,
"brown-bear": 14018,
buffalo: 14019,
"buffalo-bison": 14020,
"bull-terrier": 14021,
butterfly: 14022,
caiman: 14023,
camel: 6074,
capybara: 14024,
caribou: 14025,
caterpillar: 14026,
cephalopod: 2001,
chameleon: 14027,
cheetah: 6021,
chicken: 14028,
chimpanzee: 14029,
chinchilla: 14030,
chipmunk: 14031,
civet: 14032,
"clouded-leopard": 14033,
coatimundi: 14034,
cockatiel: 14035,
corgi: 14036,
corvid: 3001,
cougar: 6022,
cow: 6003,
coyote: 6008,
crab: 14037,
crane: 14038,
crayfish: 14039,
crow: 3002,
crustacean: 14040,
dalmatian: 14041,
deer: 14042,
dhole: 14043,
dingo: 6011,
dinosaur: 8001,
doberman: 6009,
dolphin: 2002,
donkey: 6019,
duck: 3003,
eagle: 3004,
eel: 14044,
elephant: 14045,
falcon: 3005,
fennec: 6072,
ferret: 6046,
finch: 14046,
fish: 2005,
flamingo: 14047,
fossa: 14048,
frog: 1001,
gazelle: 6005,
gecko: 7003,
genet: 14049,
"german-shepherd": 6012,
gibbon: 14050,
giraffe: 6031,
goat: 6006,
goose: 3006,
gorilla: 6054,
"gray-fox": 14051,
"great-dane": 14052,
"grizzly-bear": 14053,
"guinea-pig": 14054,
hamster: 14055,
hawk: 3008,
hedgehog: 6032,
heron: 14056,
hippopotamus: 6033,
honeybee: 14057,
horse: 6034,
housecat: 6020,
human: 6055,
humanoid: 14058,
hummingbird: 14059,
husky: 6014,
hyena: 6035,
iguana: 7004,
impala: 14060,
jackal: 6013,
jaguar: 6023,
kangaroo: 6038,
"kangaroo-mouse": 14061,
"kangaroo-rat": 14062,
kinkajou: 14063,
"kit-fox": 14064,
koala: 6039,
"kodiak-bear": 14065,
"komodo-dragon": 14066,
labrador: 14067,
lemur: 6056,
leopard: 6024,
liger: 14068,
linsang: 14069,
lion: 6025,
lizard: 7005,
llama: 6036,
lobster: 14070,
"longhair-cat": 14071,
lynx: 6026,
magpie: 14072,
"maine-coon": 14073,
malamute: 14074,
"mammal-feline": 14075,
"mammal-herd": 14076,
"mammal-marsupial": 14077,
"mammal-mustelid": 14078,
"mammal-other predator": 14079,
"mammal-prey": 14080,
"mammal-primate": 14081,
"mammal-rodent": 14082,
manatee: 14083,
mandrill: 14084,
"maned-wolf": 14085,
mantid: 8004,
marmoset: 14086,
marten: 14087,
meerkat: 6043,
mink: 6048,
mole: 14088,
mongoose: 6044,
"monitor-lizard": 14089,
monkey: 6057,
moose: 14090,
moth: 14091,
mouse: 6065,
"musk-deer": 14092,
"musk-ox": 14093,
newt: 1002,
ocelot: 6027,
octopus: 14094,
okapi: 14095,
olingo: 14096,
opossum: 6037,
orangutan: 14097,
orca: 14098,
oryx: 14099,
ostrich: 14100,
otter: 6047,
owl: 3009,
panda: 6052,
pangolin: 14101,
panther: 6028,
parakeet: 14102,
parrot: 14103,
peacock: 14104,
penguin: 14105,
"persian-cat": 14106,
pig: 6053,
pigeon: 14107,
pika: 14108,
"pine-marten": 14109,
platypus: 14110,
"polar-bear": 14111,
pony: 6073,
poodle: 14112,
porcupine: 14113,
porpoise: 2004,
procyonid: 14114,
puffin: 14115,
quoll: 6040,
rabbit: 6059,
raccoon: 6060,
rat: 6061,
ray: 14116,
"red-fox": 14117,
"red-panda": 6062,
reindeer: 14118,
reptillian: 14119,
rhinoceros: 6063,
robin: 14120,
rottweiler: 14121,
sabercats: 14122,
sabertooth: 14123,
salamander: 1003,
scorpion: 8005,
seagull: 14124,
seahorse: 14125,
seal: 6068,
"secretary-bird": 14126,
"serpent-dragon": 4003,
serval: 14127,
shark: 2006,
sheep: 14128,
"shiba-inu": 14129,
"shorthair-cat": 14130,
shrew: 14131,
siamese: 14132,
sifaka: 14133,
"silver-fox": 14134,
skunk: 6069,
sloth: 14135,
snail: 14136,
"snake-serpent": 7006,
"snow-leopard": 14137,
sparrow: 14138,
squid: 14139,
squirrel: 6070,
stoat: 14140,
stork: 14141,
"sugar-glider": 14142,
"sun-bear": 14143,
swan: 3011,
"swift-fox": 14144,
tanuki: 5022,
tapir: 14145,
"tasmanian-devil": 14146,
thylacine: 14147,
tiger: 6029,
toucan: 14148,
turtle: 7007,
vulture: 14149,
wallaby: 6041,
walrus: 14150,
wasp: 14151,
weasel: 6049,
whale: 2003,
wolf: 6016,
wolverine: 6050,
zebra: 6071
};
}
static get gender() {
return {
any: 0,
male: 2,
female: 3,
herm: 4,
intersex: 11,
"trans-male": 8,
"trans-female": 9,
"non-binary": 10,
multiple: 6,
other: 7,
"not-specified": 7
};
}
static get results() {
return {
24: 24,
48: 48,
72: 72,
96: 96,
128: 128
};
}
}
function checkTags(element) {
var _a;
if (!("1" === document.body.getAttribute("data-user-logged-in"))) {
setBlockedState(element, false);
return;
}
const tagsHideMissingTags = "1" === document.body.getAttribute("data-tag-blocklist-hide-tagless"), tags = null === (_a = element.getAttribute("data-tags")) || void 0 === _a ? void 0 : _a.trim().split(/\s+/);
let blockReason = "";
if (null != tags && tags.length > 0 && "" !== tags[0]) {
const blockedTags = function getBannedTags(tags) {
var _a;
const tagsBlocklist = null !== (_a = document.body.getAttribute("data-tag-blocklist")) && void 0 !== _a ? _a : [];
let bTags = [];
if (null == tags || 0 === tags.length) return [];
for (const tag of tags) for (const blockedTag of tagsBlocklist) if (tag === blockedTag) bTags.push(blockedTag);
return [ ...new Set(bTags) ];
}(tags);
if (blockedTags.length <= 0) setBlockedState(element, false); else {
setBlockedState(element, true);
blockReason = "Blocked tags:\n";
for (const tag of blockedTags) blockReason += "• " + tag + "\n";
}
} else {
setBlockedState(element, tagsHideMissingTags);
if (tagsHideMissingTags) blockReason = "Content is missing tags.";
}
if ("" !== blockReason && "submissionImg" !== element.id) element.setAttribute("title", blockReason);
}
function setBlockedState(element, isBlocked) {
element.classList[isBlocked ? "add" : "remove"]("blocked-content");
}
function checkTagsAll(doc) {
if (null == doc) return;
doc.querySelectorAll("img[data-tags]").forEach((element => checkTags(element)));
}
var Page_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Page {
static getGalleryPage(username, folderId, pageNumber, galleryType, semaphore) {
return Page_awaiter(this, void 0, void 0, (function*() {
if (galleryType === GalleryType.FAVORITES) {
const dataFavId = null != folderId ? folderId : pageNumber;
return yield Page.getFavoritesPage(username, dataFavId, pageNumber, semaphore);
} else if (galleryType === GalleryType.JOURNALS) return yield Page.getJournalsPage(username, pageNumber, semaphore); else if (galleryType === GalleryType.BROWSE) return yield Page.getBrowsePage(pageNumber, void 0, semaphore); else if (galleryType === GalleryType.SEARCH) return yield Page.getSearchPage(pageNumber, void 0, semaphore);
if (null == username) {
Logger.logError("No username given");
return;
}
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("No page number given. Using default value of 1.");
pageNumber = 1;
}
let url;
if (!username.endsWith("/")) username += "/";
switch (galleryType) {
case GalleryType.GALLERY:
url = Gallery.hardLink + username;
break;
case GalleryType.SCRAPS:
url = Scraps.hardLink + username;
}
if (null != folderId && -1 !== folderId) url += `folder/${folderId}/`;
const page = yield FuraffinityRequests.getHTML(url + pageNumber, semaphore);
checkTagsAll(page);
return page;
}));
}
static getFavoritesPage(username, dataFavId, direction, semaphore) {
return Page_awaiter(this, void 0, void 0, (function*() {
if (null == username) {
Logger.logError("No username given");
return;
}
if (null == direction) {
Logger.logWarning("No direction given. Using default 1 instead.");
direction = 1;
}
if (!username.endsWith("/")) username += "/";
let url = Favorites.hardLink;
if (null != dataFavId && dataFavId >= 0) url += `${username}${dataFavId}/`; else {
Logger.logWarning("No last data fav id given. Using default 1 instead.");
url += username;
}
if (direction >= 0) url += "next/"; else url += "prev/";
const page = yield FuraffinityRequests.getHTML(url, semaphore);
checkTagsAll(page);
return page;
}));
}
static getJournalsPage(username, pageNumber, semaphore) {
return Page_awaiter(this, void 0, void 0, (function*() {
if (null == username) {
Logger.logError("No username given");
return;
}
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("Page number must be greater than 0. Using default 1 instead.");
pageNumber = 1;
}
if (!username.endsWith("/")) username += "/";
const url = Journals.hardLink + username;
return yield FuraffinityRequests.getHTML(url + pageNumber, semaphore);
}));
}
static getBrowsePage(pageNumber, browseOptions, semaphore) {
return Page_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("Page number must be greater than 0. Using default 1 instead.");
pageNumber = 1;
}
if (null == browseOptions) browseOptions = new BrowseOptions;
const payload = {
cat: browseOptions.category,
atype: browseOptions.type,
species: browseOptions.species,
gender: browseOptions.gender,
perpage: browseOptions.results,
page: pageNumber,
rating_general: browseOptions.ratingGeneral ? "on" : "off",
rating_mature: browseOptions.ratingMature ? "on" : "off",
rating_adult: browseOptions.ratingAdult ? "on" : "off"
};
for (const key in payload) if (null == payload[key] || 0 === payload[key] || "off" === payload[key]) delete payload[key];
const payloadArray = Object.entries(payload).map((([key, value]) => {
var _a;
return [ key, null !== (_a = null == value ? void 0 : value.toString()) && void 0 !== _a ? _a : "" ];
})), url = Browse.hardLink, page = yield FuraffinityRequests.postHTML(url, payloadArray, semaphore);
checkTagsAll(page);
return page;
}));
}
static getSearchPage(pageNumber, searchOptions, semaphore) {
return Page_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("Page number must be greater than 0. Using default 1 instead.");
pageNumber = 1;
}
if (null == searchOptions) searchOptions = new SearchOptions;
const payload = {
page: pageNumber,
q: searchOptions.input,
"order-by": searchOptions.orderBy,
"order-direction": searchOptions.orderDirection,
range: searchOptions.range,
range_from: void 0,
range_to: void 0,
"rating-general": searchOptions.ratingGeneral ? 1 : 0,
"rating-mature": searchOptions.ratingMature ? 1 : 0,
"rating-adult": searchOptions.ratingAdult ? 1 : 0,
"type-art": searchOptions.typeArt ? 1 : 0,
"type-music": searchOptions.typeMusic ? 1 : 0,
"type-flash": searchOptions.typeFlash ? 1 : 0,
"type-story": searchOptions.typeStory ? 1 : 0,
"type-photos": searchOptions.typePhotos ? 1 : 0,
"type-poetry": searchOptions.typePoetry ? 1 : 0,
mode: searchOptions.matching
};
if (searchOptions.rangeFrom instanceof Date && null != searchOptions.rangeFrom) {
const formattedDate = `${searchOptions.rangeFrom.getFullYear()}-${(searchOptions.rangeFrom.getMonth() + 1).toString().padStart(2, "0")}-${searchOptions.rangeFrom.getDate().toString().padStart(2, "0")}`;
payload.range_from = formattedDate;
} else if ("string" == typeof searchOptions.rangeFrom && searchOptions.rangeFrom) payload.range_from = searchOptions.rangeFrom;
if (searchOptions.rangeTo instanceof Date && null != searchOptions.rangeTo) {
const formattedDate = `${searchOptions.rangeTo.getFullYear()}-${(searchOptions.rangeTo.getMonth() + 1).toString().padStart(2, "0")}-${searchOptions.rangeTo.getDate().toString().padStart(2, "0")}`;
payload.range_to = formattedDate;
} else if ("string" == typeof searchOptions.rangeTo && searchOptions.rangeTo) payload.range_to = searchOptions.rangeTo;
for (const key in payload) if (null == payload[key] || 0 === payload[key] || "off" === payload[key]) delete payload[key];
const payloadArray = Object.entries(payload).map((([key, value]) => {
var _a;
return [ key, null !== (_a = null == value ? void 0 : value.toString()) && void 0 !== _a ? _a : "" ];
})), url = Search.hardLink, page = yield FuraffinityRequests.postHTML(url, payloadArray, semaphore);
checkTagsAll(page);
return page;
}));
}
}
var Gallery_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Gallery {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/gallery/";
}
getSubmissionPageNo(username_1, submissionId_1, folderId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, submissionId, folderId, fromPageNumber, toPageNumber, action, delay = 100) {
submissionId = convertToNumber(submissionId);
folderId = convertToNumber(folderId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getSubmissionPageNo, [ username, submissionId, folderId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
}));
}
getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, void 0, void 0, GalleryType.GALLERY, this._semaphore ], action, delay, true);
}));
}
getFiguresInFolderBetweenIds(username_1, folderId_1, fromId_1, toId_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, fromId, toId, action, delay = 100) {
folderId = convertToNumber(folderId);
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, folderId, toId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, folderId, fromId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, folderId, fromId, toId, void 0, void 0, GalleryType.GALLERY, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, true);
}));
}
getFiguresInFolderBetweenIdsBetweenPages(username_1, folderId_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
folderId = convertToNumber(folderId);
fromId = convertToNumber(fromId);
toId = convertToNumber(toId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromId || fromId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, folderId, toId, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay); else if (null == toId || toId <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, folderId, fromId, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, folderId, fromId, toId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, true);
}));
}
getFiguresBetweenPages(username_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, fromPageNumber, toPageNumber, action, delay = 100) {
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromPageNumber || fromPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillPage, [ username, void 0, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, true); else if (null == toPageNumber || toPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSincePage, [ username, void 0, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenPages, [ username, void 0, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, true);
}));
}
getFiguresInFolderBetweenPages(username_1, folderId_1, fromPageNumber_1, toPageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, fromPageNumber, toPageNumber, action, delay = 100) {
folderId = convertToNumber(folderId);
fromPageNumber = convertToNumber(fromPageNumber);
toPageNumber = convertToNumber(toPageNumber);
if (null == fromPageNumber || fromPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillPage, [ username, folderId, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, true); else if (null == toPageNumber || toPageNumber <= 0) return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSincePage, [ username, folderId, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay); else return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenPages, [ username, folderId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, true);
}));
}
getFigures(username_1, pageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFigures, [ username, void 0, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
}));
}
getFiguresInFolder(username_1, folderId_1, pageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, pageNumber, action, delay = 100) {
folderId = convertToNumber(folderId);
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFigures, [ username, folderId, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
}));
}
getPage(username_1, pageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(Page.getGalleryPage, [ username, void 0, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
}));
}
getPageInFolder(username_1, folderId_1, pageNumber_1, action_1) {
return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, pageNumber, action, delay = 100) {
folderId = convertToNumber(folderId);
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(Page.getGalleryPage, [ username, folderId, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
}));
}
}
var GalleryType, GalleryRequests_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class GalleryRequests {
constructor(semaphore) {
this._semaphore = semaphore;
this.Gallery = new Gallery(this._semaphore);
this.Scraps = new Scraps(this._semaphore);
this.Favorites = new Favorites(this._semaphore);
this.Journals = new Journals(this._semaphore);
}
static getSubmissionPageNo(username, submissionId, folderId, fromPageNumber, toPageNumber, galleryType, semaphore, percentId) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == submissionId || submissionId <= 0) {
Logger.logError("No submissionId given");
return -1;
}
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
if (null == toPageNumber || 0 === toPageNumber) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
} else if (toPageNumber < 0) toPageNumber = Number.MAX_SAFE_INTEGER;
const direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
let completedPages = 0;
for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
if (0 === figures.length) i = toPageNumber; else {
if (null != figures.find((figure => figure.id.trimStart("sid-") === submissionId.toString()))) return i;
}
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
}
return -1;
}));
}
static getGalleryFiguresTillId(username, folderId, toId, fromPage, galleryType, semaphore) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
const allFigures = [];
let running = true, i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
for (;running; ) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getTillId(figures, toId));
running = false;
} else {
allFigures.push(figures);
i++;
}
}
return allFigures;
}));
}
static getGalleryFiguresSinceId(username, folderId, fromId, toPage, galleryType, semaphore) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
const direction = null == toPage || toPage <= 0 ? -1 : 1;
let lastFigureId, running = true, i = null == toPage || toPage <= 0 ? 1 : toPage;
if (null == toPage || toPage <= 0) for (;running; ) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (currFigureId === lastFigureId) running = false; else if (IdArray.containsId(figures, fromId)) running = false; else i++;
}
const allFigures = [];
lastFigureId = void 0;
running = true;
for (;running; ) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
let currFigureId = lastFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (currFigureId === lastFigureId) running = false; else {
if (IdArray.containsId(figures, fromId)) {
const figuresPush = IdArray.getSinceId(figures, fromId);
if (direction < 0) {
figuresPush.reverse();
running = false;
}
allFigures.push(figuresPush);
} else {
if (direction < 0) figures.reverse();
allFigures.push(figures);
}
i += direction;
}
}
if (direction < 0) allFigures.reverse();
return allFigures;
}));
}
static getGalleryFiguresBetweenIds(username, folderId, fromId, toId, fromPage, toPage, galleryType, semaphore, percentId) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromId || fromId <= 0) {
Logger.logError("No fromId given");
return [];
}
if (null == toId || toId <= 0) {
Logger.logError("No toId given");
return [];
}
if (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) {
Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated.");
percentId = void 0;
}
let i = 1;
if (null != fromPage && fromPage >= 1) i = fromPage;
const allFigures = [];
let running = true, completedPages = 0;
for (;running; ) {
if (null != toPage && toPage >= 1 && i >= toPage) running = false;
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else {
if (IdArray.containsId(figures, fromId)) allFigures.push(IdArray.getSinceId(figures, fromId));
if (IdArray.containsId(figures, toId)) {
allFigures.push(IdArray.getBetweenIds(figures, fromId, toId));
running = false;
} else {
allFigures.push(figures);
i++;
}
}
completedPages++;
if (null != toPage && toPage >= 1) PercentHelper.updatePercentValue(percentId, completedPages, toPage);
}
return allFigures;
}));
}
static getGalleryFiguresTillPage(username, folderId, toPageNumber, galleryType, semaphore, percentId) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == toPageNumber || 0 === toPageNumber) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
} else if (toPageNumber < 0) toPageNumber = Number.MAX_SAFE_INTEGER;
const allFigures = [];
let completedPages = 0;
for (let i = 1; i <= toPageNumber; i++) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
if (0 === figures.length) i = toPageNumber; else allFigures.push(figures);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
}
return allFigures;
}));
}
static getGalleryFiguresSincePage(username, folderId, fromPageNumber, galleryType, semaphore) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
const allFigures = [];
let running = true, i = fromPageNumber;
for (;running; ) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
let currFigureId;
if (0 !== figures.length) currFigureId = figures[0].id;
if (undefined === currFigureId) running = false; else {
allFigures.push(figures);
i++;
}
}
return allFigures;
}));
}
static getGalleryFiguresBetweenPages(username, folderId, fromPageNumber, toPageNumber, galleryType, semaphore, percentId) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == fromPageNumber || fromPageNumber <= 0) {
Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead.");
fromPageNumber = 1;
}
if (null == toPageNumber || 0 === toPageNumber) {
Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead.");
toPageNumber = 1;
} else if (toPageNumber < 0) toPageNumber = Number.MAX_SAFE_INTEGER;
const allFigures = [], direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
let completedPages = 0;
for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
if (0 === figures.length) i = toPageNumber; else allFigures.push(figures);
completedPages++;
PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
}
return allFigures;
}));
}
static getGalleryFigures(username, folderId, pageNumber, galleryType, semaphore) {
return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("No pageNumber given. Using default value of 1.");
pageNumber = 1;
}
if (null == folderId || folderId <= 0) Logger.logInfo(`Getting ${galleryType} of "${username}" on page "${pageNumber}".`); else Logger.logInfo(`Getting ${galleryType} of "${username}" in folder "${folderId}" on page "${pageNumber}".`);
const galleryDoc = yield Page.getGalleryPage(username, folderId, pageNumber, galleryType, semaphore);
if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) {
Logger.logInfo(`No images found at ${galleryType} of "${username}" on page "${pageNumber}".`);
return [];
}
const figures = galleryDoc.getElementsByTagName("figure");
if (null == figures || 0 === figures.length) {
Logger.logInfo(`No figures found at ${galleryType} of "${username}" on page "${pageNumber}".`);
return [];
}
return Array.from(figures);
}));
}
}
!function(GalleryType) {
GalleryType.GALLERY = "gallery";
GalleryType.FAVORITES = "favorites";
GalleryType.SCRAPS = "scraps";
GalleryType.JOURNALS = "journals";
GalleryType.BROWSE = "browse";
GalleryType.SEARCH = "search";
}(GalleryType || (GalleryType = {}));
var UserRequests_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class UserRequests {
constructor(semaphore) {
this._semaphore = semaphore;
this.GalleryRequests = new GalleryRequests(this._semaphore);
this.SearchRequests = new SearchRequests(this._semaphore);
}
static get hardLinks() {
return {
user: FuraffinityRequests.fullUrl + "/user/",
watch: FuraffinityRequests.fullUrl + "/watch/",
unwatch: FuraffinityRequests.fullUrl + "/unwatch/",
block: FuraffinityRequests.fullUrl + "/block/",
unblock: FuraffinityRequests.fullUrl + "/unblock/"
};
}
getUserPage(username_1, action_1) {
return UserRequests_awaiter(this, arguments, void 0, (function*(username, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(getUserPageLocal, [ username, this._semaphore ], action, delay);
}));
}
watchUser(username_1, watchKey_1, action_1) {
return UserRequests_awaiter(this, arguments, void 0, (function*(username, watchKey, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(watchUserLocal, [ username, watchKey, this._semaphore ], action, delay);
}));
}
unwatchUser(username_1, unwatchKey_1, action_1) {
return UserRequests_awaiter(this, arguments, void 0, (function*(username, unwatchKey, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(unwatchUserLocal, [ username, unwatchKey, this._semaphore ], action, delay);
}));
}
blockUser(username_1, blockKey_1, action_1) {
return UserRequests_awaiter(this, arguments, void 0, (function*(username, blockKey, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(blockUserLocal, [ username, blockKey, this._semaphore ], action, delay);
}));
}
unblockUser(username_1, unblockKey_1, action_1) {
return UserRequests_awaiter(this, arguments, void 0, (function*(username, unblockKey, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(unblockUserLocal, [ username, unblockKey, this._semaphore ], action, delay);
}));
}
}
function getUserPageLocal(username, semaphore) {
return UserRequests_awaiter(this, void 0, void 0, (function*() {
if (null == username) {
Logger.logWarning("No username given");
return;
}
const url = UserRequests.hardLinks.user + username;
return yield FuraffinityRequests.getHTML(url, semaphore);
}));
}
function watchUserLocal(username, watchKey, semaphore) {
return UserRequests_awaiter(this, void 0, void 0, (function*() {
if (null == username || "" === username) {
Logger.logError("No username given");
return false;
}
if (null == watchKey || "" === watchKey || -1 === watchKey) {
Logger.logError("No watch key given");
return false;
}
const url = UserRequests.hardLinks.watch + username + "?key=" + watchKey;
return null == (yield FuraffinityRequests.getHTML(url, semaphore));
}));
}
function unwatchUserLocal(username, unwatchKey, semaphore) {
return UserRequests_awaiter(this, void 0, void 0, (function*() {
if (null == username || "" === username) {
Logger.logError("No username given");
return false;
}
if (null == unwatchKey || "" === unwatchKey || -1 === unwatchKey) {
Logger.logError("No unwatch key given");
return false;
}
const url = UserRequests.hardLinks.unwatch + username + "?key=" + unwatchKey;
return null == (yield FuraffinityRequests.getHTML(url, semaphore));
}));
}
function blockUserLocal(username, blockKey, semaphore) {
return UserRequests_awaiter(this, void 0, void 0, (function*() {
if (null == username || "" === username) {
Logger.logError("No username given");
return false;
}
if (null == blockKey || "" === blockKey || -1 === blockKey) {
Logger.logError("No block key given");
return false;
}
const url = UserRequests.hardLinks.block + username + "?key=" + blockKey;
return null == (yield FuraffinityRequests.getHTML(url, semaphore));
}));
}
function unblockUserLocal(username, unblockKey, semaphore) {
return UserRequests_awaiter(this, void 0, void 0, (function*() {
if (null == username || "" === username) {
Logger.logError("No username given");
return false;
}
if (null == unblockKey || "" === unblockKey || -1 === unblockKey) {
Logger.logError("No unblock key given");
return false;
}
const url = UserRequests.hardLinks.unblock + username + "?key=" + unblockKey;
return null == (yield FuraffinityRequests.getHTML(url, semaphore));
}));
}
var NewSubmissions_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewSubmissions {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/submissions/";
}
getSubmissionsPage(firstSubmissionId_1, action_1) {
return NewSubmissions_awaiter(this, arguments, void 0, (function*(firstSubmissionId, action, delay = 100) {
firstSubmissionId = convertToNumber(firstSubmissionId);
return yield WaitAndCallAction.callFunctionAsync(getSubmissionsPageLocal, [ firstSubmissionId, this._semaphore ], action, delay);
}));
}
removeSubmissions(submissionIds_1, action_1) {
return NewSubmissions_awaiter(this, arguments, void 0, (function*(submissionIds, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(removeSubmissionsLocal, [ submissionIds, this._semaphore ], action, delay);
}));
}
nukeSubmissions(action_1) {
return NewSubmissions_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(nukeSubmissionsLocal, [ this._semaphore ], action, delay);
}));
}
}
function getSubmissionsPageLocal(firstSubmissionId, semaphore) {
return NewSubmissions_awaiter(this, void 0, void 0, (function*() {
if (null == firstSubmissionId || firstSubmissionId <= 0) return yield FuraffinityRequests.getHTML(`${NewSubmissions.hardLink}new@72/`, semaphore); else return yield FuraffinityRequests.getHTML(`${NewSubmissions.hardLink}new~${firstSubmissionId}@72/`, semaphore);
}));
}
function removeSubmissionsLocal(submissionIds, semaphore) {
return NewSubmissions_awaiter(this, void 0, void 0, (function*() {
if (null == submissionIds || 0 === submissionIds.length) {
Logger.logError("No submission ids to remove");
return;
}
const payload = [ [ "messagecenter-action", Message.hardActions.remove ] ];
for (const submissionId of submissionIds) payload.push([ "submissions[]", submissionId.toString() ]);
return yield FuraffinityRequests.postHTML(`${NewSubmissions.hardLink}new@72/`, payload, semaphore);
}));
}
function nukeSubmissionsLocal(semaphore) {
return NewSubmissions_awaiter(this, void 0, void 0, (function*() {
const payload = {
"messagecenter-action": Message.hardActions.nuke
}, payloadArray = Object.entries(payload).map((([key, value]) => {
var _a;
return [ key, null !== (_a = null == value ? void 0 : value.toString()) && void 0 !== _a ? _a : "" ];
}));
return yield FuraffinityRequests.postHTML(`${NewSubmissions.hardLink}new@72/`, payloadArray, semaphore);
}));
}
var NewWatches_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewWatches {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/others/";
}
static get hardActions() {
return {
remove: [ "remove-watches", "Remove Selected Watches" ],
nuke: [ "nuke-watches", "Nuke Watches" ]
};
}
removeMessages(userIds_1, action_1) {
return NewWatches_awaiter(this, arguments, void 0, (function*(userIds, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(removeWatchMessagesLocal, [ userIds, this._semaphore ], action, delay);
}));
}
nukeMessages(action_1) {
return NewWatches_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(nukeWatchMessagesLocal, [ this._semaphore ], action, delay);
}));
}
}
function removeWatchMessagesLocal(userIds, semaphore) {
return NewWatches_awaiter(this, void 0, void 0, (function*() {
if (null == userIds || 0 === userIds.length) {
Logger.logError("No submission ids to remove");
return;
}
const payload = [ NewWatches.hardActions.remove ];
for (const submissionId of userIds) payload.push([ "watches[]", submissionId.toString() ]);
return yield FuraffinityRequests.postHTML(NewWatches.hardLink, payload, semaphore);
}));
}
function nukeWatchMessagesLocal(semaphore) {
return NewWatches_awaiter(this, void 0, void 0, (function*() {
const payload = [ NewWatches.hardActions.nuke ];
return yield FuraffinityRequests.postHTML(NewWatches.hardLink, payload, semaphore);
}));
}
var NewJournalComments_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewJournalComments {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/others/";
}
static get hardActions() {
return {
remove: [ "remove-journal-comments", "Remove Selected Comments" ],
nuke: [ "nuke-journal-comments", "Nuke Journal Comments" ]
};
}
removeMessages(commentIds_1, action_1) {
return NewJournalComments_awaiter(this, arguments, void 0, (function*(commentIds, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(removeJournalCommentMessagesLocal, [ commentIds, this._semaphore ], action, delay);
}));
}
nukeMessages(action_1) {
return NewJournalComments_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(nukeJournalCommentMessagesLocal, [ this._semaphore ], action, delay);
}));
}
}
function removeJournalCommentMessagesLocal(commentIds, semaphore) {
return NewJournalComments_awaiter(this, void 0, void 0, (function*() {
if (null == commentIds || 0 === commentIds.length) {
Logger.logError("No submission ids to remove");
return;
}
const payload = [ NewJournalComments.hardActions.remove ];
for (const submissionId of commentIds) payload.push([ "comments-journals[]", submissionId.toString() ]);
return yield FuraffinityRequests.postHTML(NewJournalComments.hardLink, payload, semaphore);
}));
}
function nukeJournalCommentMessagesLocal(semaphore) {
return NewJournalComments_awaiter(this, void 0, void 0, (function*() {
const payload = [ NewJournalComments.hardActions.nuke ];
return yield FuraffinityRequests.postHTML(NewJournalComments.hardLink, payload, semaphore);
}));
}
var NewShouts_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewShouts {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/others/";
}
static get hardActions() {
return {
remove: [ "remove-shouts", "Remove Selected Shouts" ],
nuke: [ "nuke-shouts", "Nuke Shouts" ]
};
}
removeMessages(shoutIds_1, action_1) {
return NewShouts_awaiter(this, arguments, void 0, (function*(shoutIds, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(removeShoutMessagesLocal, [ shoutIds, this._semaphore ], action, delay);
}));
}
nukeMessages(action_1) {
return NewShouts_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(nukeShoutMessagesLocal, [ this._semaphore ], action, delay);
}));
}
}
function removeShoutMessagesLocal(shoutIds, semaphore) {
return NewShouts_awaiter(this, void 0, void 0, (function*() {
if (null == shoutIds || 0 === shoutIds.length) {
Logger.logError("No submission ids to remove");
return;
}
const payload = [ NewShouts.hardActions.remove ];
for (const submissionId of shoutIds) payload.push([ "shouts[]", submissionId.toString() ]);
return yield FuraffinityRequests.postHTML(NewShouts.hardLink, payload, semaphore);
}));
}
function nukeShoutMessagesLocal(semaphore) {
return NewShouts_awaiter(this, void 0, void 0, (function*() {
const payload = [ NewShouts.hardActions.nuke ];
return yield FuraffinityRequests.postHTML(NewShouts.hardLink, payload, semaphore);
}));
}
var NewFavorites_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewFavorites {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/others/";
}
static get hardActions() {
return {
remove: [ "remove-favorites", "Remove Selected Favorites" ],
nuke: [ "nuke-favorites", "Nuke Favorites" ]
};
}
removeMessages(submissionIds_1, action_1) {
return NewFavorites_awaiter(this, arguments, void 0, (function*(submissionIds, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(removeFavoriteMessagesLocal, [ submissionIds, this._semaphore ], action, delay);
}));
}
nukeMessages(action_1) {
return NewFavorites_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(nukeFavoriteMessagesLocal, [ this._semaphore ], action, delay);
}));
}
}
function removeFavoriteMessagesLocal(submissionIds, semaphore) {
return NewFavorites_awaiter(this, void 0, void 0, (function*() {
if (null == submissionIds || 0 === submissionIds.length) {
Logger.logError("No submission ids to remove");
return;
}
const payload = [ NewFavorites.hardActions.remove ];
for (const submissionId of submissionIds) payload.push([ "favorites[]", submissionId.toString() ]);
return yield FuraffinityRequests.postHTML(NewFavorites.hardLink, payload, semaphore);
}));
}
function nukeFavoriteMessagesLocal(semaphore) {
return NewFavorites_awaiter(this, void 0, void 0, (function*() {
const payload = [ NewFavorites.hardActions.nuke ];
return yield FuraffinityRequests.postHTML(NewFavorites.hardLink, payload, semaphore);
}));
}
var NewJournals_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewJournals {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/others/";
}
static get hardActions() {
return {
remove: [ "remove-journals", "Remove Selected Journals" ],
nuke: [ "nuke-journals", "Nuke Journals" ]
};
}
removeMessages(journalIds_1, action_1) {
return NewJournals_awaiter(this, arguments, void 0, (function*(journalIds, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(removeJournalMessagesLocal, [ journalIds, this._semaphore ], action, delay);
}));
}
nukeMessages(action_1) {
return NewJournals_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(nukeJournalMessagesLocal, [ this._semaphore ], action, delay);
}));
}
}
function removeJournalMessagesLocal(journalIds, semaphore) {
return NewJournals_awaiter(this, void 0, void 0, (function*() {
if (null == journalIds || 0 === journalIds.length) {
Logger.logError("No submission ids to remove");
return;
}
const payload = [ NewJournals.hardActions.remove ];
for (const submissionId of journalIds) payload.push([ "journals[]", submissionId.toString() ]);
return yield FuraffinityRequests.postHTML(NewJournals.hardLink, payload, semaphore);
}));
}
function nukeJournalMessagesLocal(semaphore) {
return NewJournals_awaiter(this, void 0, void 0, (function*() {
const payload = [ NewJournals.hardActions.nuke ];
return yield FuraffinityRequests.postHTML(NewJournals.hardLink, payload, semaphore);
}));
}
var NewMessages_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class NewMessages {
constructor(semaphore) {
this._semaphore = semaphore;
this.Watches = new NewWatches(this._semaphore);
this.JournalComments = new NewJournalComments(this._semaphore);
this.Shouts = new NewShouts(this._semaphore);
this.Favorites = new NewFavorites(this._semaphore);
this.Journals = new NewJournals(this._semaphore);
}
static get hardLink() {
return FuraffinityRequests.fullUrl + "/msg/others/";
}
static get hardActions() {
return {
remove: [ "remove-all", "Remove Selected" ],
nuke: [ "nuke-all", "Nuke Selected" ]
};
}
getMessagesPage(action_1) {
return NewMessages_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(getMessagesPageLocal, [ this._semaphore ], action, delay);
}));
}
removeMessages(userIds_1, journalCommentIds_1, shoutIds_1, favoriteIds_1, journalIds_1, action_1) {
return NewMessages_awaiter(this, arguments, void 0, (function*(userIds, journalCommentIds, shoutIds, favoriteIds, journalIds, action, delay = 100) {
null != userIds || (userIds = []);
null != journalCommentIds || (journalCommentIds = []);
null != shoutIds || (shoutIds = []);
null != favoriteIds || (favoriteIds = []);
null != journalIds || (journalIds = []);
return yield WaitAndCallAction.callFunctionAsync(removeMessagesLocal, [ userIds, journalCommentIds, shoutIds, favoriteIds, journalIds, this._semaphore ], action, delay);
}));
}
}
function getMessagesPageLocal(semaphore) {
return NewMessages_awaiter(this, void 0, void 0, (function*() {
return yield FuraffinityRequests.getHTML(NewMessages.hardLink, semaphore);
}));
}
function removeMessagesLocal(userIds, journalCommentIds, shoutIds, favoriteIds, journalIds, semaphore) {
return NewMessages_awaiter(this, void 0, void 0, (function*() {
const payload = [ NewMessages.hardActions.remove ];
if (null != userIds && 0 !== userIds.length) for (const submissionId of userIds) payload.push([ "watches[]", submissionId.toString() ]);
if (null != journalCommentIds && 0 !== journalCommentIds.length) for (const submissionId of journalCommentIds) payload.push([ "journalcomments[]", submissionId.toString() ]);
if (null != shoutIds && 0 !== shoutIds.length) for (const submissionId of shoutIds) payload.push([ "shouts[]", submissionId.toString() ]);
if (null != favoriteIds && 0 !== favoriteIds.length) for (const submissionId of favoriteIds) payload.push([ "favorites[]", submissionId.toString() ]);
if (null != journalIds && 0 !== journalIds.length) for (const submissionId of journalIds) payload.push([ "journals[]", submissionId.toString() ]);
if (0 !== payload.length) return yield FuraffinityRequests.postHTML(NewMessages.hardLink, payload, semaphore); else Logger.logError("No messages to remove");
}));
}
class Message {
constructor(semaphore) {
this._semaphore = semaphore;
this.NewSubmissions = new NewSubmissions(this._semaphore);
this.NewMessages = new NewMessages(this._semaphore);
}
static get hardActions() {
return {
remove: "remove_checked",
nuke: "nuke_notifications"
};
}
}
var AccountInformation_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class AccountInformation {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLinks() {
return {
settings: FuraffinityRequests.fullUrl + "/controls/settings/",
siteSettings: FuraffinityRequests.fullUrl + "/controls/site-settings/",
userSettings: FuraffinityRequests.fullUrl + "/controls/user-settings/"
};
}
getSettingsPage(action_1) {
return AccountInformation_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ AccountInformation.hardLinks.settings, this._semaphore ], action, delay);
}));
}
getSiteSettingsPage(action_1) {
return AccountInformation_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ AccountInformation.hardLinks.siteSettings, this._semaphore ], action, delay);
}));
}
getUserSettingsPage(action_1) {
return AccountInformation_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ AccountInformation.hardLinks.userSettings, this._semaphore ], action, delay);
}));
}
}
var UserProfile_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class UserProfile {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLinks() {
return {
profile: FuraffinityRequests.fullUrl + "/controls/profile/",
profilebanner: FuraffinityRequests.fullUrl + "/controls/profilebanner/",
contacts: FuraffinityRequests.fullUrl + "/controls/contacts/",
avatar: FuraffinityRequests.fullUrl + "/controls/avatar/"
};
}
getProfilePage(action_1) {
return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.profile, this._semaphore ], action, delay);
}));
}
getProfilebannerPage(action_1) {
return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.profilebanner, this._semaphore ], action, delay);
}));
}
getContactsPage(action_1) {
return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.contacts, this._semaphore ], action, delay);
}));
}
getAvatarPage(action_1) {
return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.avatar, this._semaphore ], action, delay);
}));
}
}
var ManageContent_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class ManageContent {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLinks() {
return {
submissions: FuraffinityRequests.fullUrl + "/controls/submissions/",
folders: FuraffinityRequests.fullUrl + "/controls/folders/submissions/",
journals: FuraffinityRequests.fullUrl + "/controls/journal/",
favorites: FuraffinityRequests.fullUrl + "/controls/favorites/",
buddylist: FuraffinityRequests.fullUrl + "/controls/buddylist/",
shouts: FuraffinityRequests.fullUrl + "/controls/shouts/",
badges: FuraffinityRequests.fullUrl + "/controls/badges/"
};
}
getFoldersPages(action_1) {
return ManageContent_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ ManageContent.hardLinks.folders, this._semaphore ], action, delay);
}));
}
getAllWatchesPages(action_1) {
return ManageContent_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(getContentAllWatchesPagesLocal, [ this._semaphore ], action, delay);
}));
}
getWatchesPage(pageNumber_1, action_1) {
return ManageContent_awaiter(this, arguments, void 0, (function*(pageNumber, action, delay = 100) {
pageNumber = convertToNumber(pageNumber);
return yield WaitAndCallAction.callFunctionAsync(getWatchesPageLocal, [ pageNumber, this._semaphore ], action, delay);
}));
}
}
function getContentAllWatchesPagesLocal(semaphore) {
return ManageContent_awaiter(this, void 0, void 0, (function*() {
let usersDoc = yield FuraffinityRequests.getHTML(ManageContent.hardLinks.buddylist + "x", semaphore);
const columnPage = null == usersDoc ? void 0 : usersDoc.getElementById("columnpage"), sectionBody = null == columnPage ? void 0 : columnPage.querySelector('div[class="section-body"'), pages = null == sectionBody ? void 0 : sectionBody.querySelectorAll(":scope > a"), userPageDocs = [];
if (null != pages) for (let i = 1; i <= pages.length; i++) {
usersDoc = yield getWatchesPageLocal(i, semaphore);
if (usersDoc) userPageDocs.push(usersDoc);
}
return userPageDocs;
}));
}
function getWatchesPageLocal(pageNumber, semaphore) {
return ManageContent_awaiter(this, void 0, void 0, (function*() {
if (null == pageNumber || pageNumber <= 0) {
Logger.logWarning("No page number given. Using default 1 instead.");
pageNumber = 1;
}
return yield FuraffinityRequests.getHTML(ManageContent.hardLinks.buddylist + pageNumber, semaphore);
}));
}
var Security_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class Security {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLinks() {
return {
sessions: FuraffinityRequests.fullUrl + "/controls/sessions/logins/",
logs: FuraffinityRequests.fullUrl + "/controls/logs/",
labels: FuraffinityRequests.fullUrl + "/controls/labels/"
};
}
getSessionsPage(action_1) {
return Security_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ Security.hardLinks.sessions, this._semaphore ], action, delay);
}));
}
getLogsPage(action_1) {
return Security_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ Security.hardLinks.logs, this._semaphore ], action, delay);
}));
}
getLabelsPage(action_1) {
return Security_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ Security.hardLinks.labels, this._semaphore ], action, delay);
}));
}
}
class PersonalUserRequests {
constructor(semaphore) {
this._semaphore = semaphore;
this.MessageRequests = new Message(this._semaphore);
this.AccountInformation = new AccountInformation(this._semaphore);
this.UserProfile = new UserProfile(this._semaphore);
this.ManageContent = new ManageContent(this._semaphore);
this.Security = new Security(this._semaphore);
}
}
var SubmissionRequests_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class SubmissionRequests {
constructor(semaphore) {
this._semaphore = semaphore;
}
static get hardLinks() {
return {
view: FuraffinityRequests.fullUrl + "/view/",
fav: FuraffinityRequests.fullUrl + "/fav/",
unfav: FuraffinityRequests.fullUrl + "/unfav/",
journal: FuraffinityRequests.fullUrl + "/journal/"
};
}
getSubmissionPage(submissionId_1, action_1) {
return SubmissionRequests_awaiter(this, arguments, void 0, (function*(submissionId, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(getSubmissionPageLocal, [ submissionId, this._semaphore ], action, delay);
}));
}
favSubmission(submissionId_1, favKey_1, action_1) {
return SubmissionRequests_awaiter(this, arguments, void 0, (function*(submissionId, favKey, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(favSubmissionLocal, [ submissionId, favKey, this._semaphore ], action, delay);
}));
}
unfavSubmission(submissionId_1, unfavKey_1, action_1) {
return SubmissionRequests_awaiter(this, arguments, void 0, (function*(submissionId, unfavKey, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(unfavSubmissionLocal, [ submissionId, unfavKey, this._semaphore ], action, delay);
}));
}
getJournalPage(journalId_1, action_1) {
return SubmissionRequests_awaiter(this, arguments, void 0, (function*(journalId, action, delay = 100) {
return yield WaitAndCallAction.callFunctionAsync(getJournalPageLocal, [ journalId, this._semaphore ], action, delay);
}));
}
}
function getSubmissionPageLocal(submissionId, semaphore) {
return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
if (null == submissionId || "" === submissionId || -1 === submissionId) {
Logger.logError("No submissionId given");
return;
}
const url = SubmissionRequests.hardLinks.view + submissionId;
return yield FuraffinityRequests.getHTML(url, semaphore);
}));
}
function favSubmissionLocal(submissionId, favKey, semaphore) {
return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
var _a, _b;
if (null == submissionId || "" === submissionId || -1 === submissionId) {
Logger.logError("No submissionId given");
return;
}
if (null == favKey || "" === favKey || -1 === favKey) {
Logger.logError("No favKey given");
return;
}
const url = SubmissionRequests.hardLinks.fav + submissionId + "?key=" + favKey, resultDoc = yield FuraffinityRequests.getHTML(url, semaphore);
if (null != resultDoc) try {
const standardpage = resultDoc.getElementById("standardpage");
if (standardpage) {
const blocked = standardpage.querySelector('div[class="redirect-message"]');
if (null !== (_b = null === (_a = null == blocked ? void 0 : blocked.textContent) || void 0 === _a ? void 0 : _a.includes("blocked")) && void 0 !== _b ? _b : false) return;
}
return getFavKeyLocal(resultDoc);
} catch (_c) {}
}));
}
function unfavSubmissionLocal(submissionId, unfavKey, semaphore) {
return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
if (null == submissionId || "" === submissionId || -1 === submissionId) {
Logger.logError("No submissionId given");
return;
}
if (null == unfavKey || "" === unfavKey || -1 === unfavKey) {
Logger.logError("No unfavKey given");
return;
}
const url = SubmissionRequests.hardLinks.unfav + submissionId + "?key=" + unfavKey, resultDoc = yield FuraffinityRequests.getHTML(url, semaphore);
if (resultDoc) {
return getFavKeyLocal(resultDoc);
}
}));
}
function getJournalPageLocal(journalId, semaphore) {
return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
if (null == journalId || "" === journalId || -1 === journalId) {
Logger.logError("No journalId given");
return;
}
const url = SubmissionRequests.hardLinks.journal + journalId;
return yield FuraffinityRequests.getHTML(url, semaphore);
}));
}
function getFavKeyLocal(doc) {
var _a, _b, _c;
const columnPage = doc.getElementById("columnpage"), navbar = null == columnPage ? void 0 : columnPage.querySelector('div[class*="favorite-nav"'), buttons = null == navbar ? void 0 : navbar.querySelectorAll('a[class*="button"][href]');
if (!buttons || 0 === buttons.length) return;
let favButton;
for (const button of Array.from(buttons)) if (null !== (_b = null === (_a = null == button ? void 0 : button.textContent) || void 0 === _a ? void 0 : _a.toLowerCase().includes("fav")) && void 0 !== _b ? _b : false) favButton = button;
if (null != favButton) {
return null === (_c = favButton.getAttribute("href")) || void 0 === _c ? void 0 : _c.split("?key=")[1];
}
}
var FuraffinityRequests_awaiter = function(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
};
class FuraffinityRequests {
constructor(maxAmountRequests = 2) {
this._semaphore = new Semaphore(maxAmountRequests);
this.UserRequests = new UserRequests(this._semaphore);
this.PersonalUserRequests = new PersonalUserRequests(this._semaphore);
this.SubmissionRequests = new SubmissionRequests(this._semaphore);
}
set maxAmountRequests(value) {
if (this._semaphore.maxConcurrency !== value) this._semaphore.maxConcurrency = value;
}
get maxAmountRequests() {
return this._semaphore.maxConcurrency;
}
static set useHttps(value) {
if (FuraffinityRequests._useHttps !== value) {
FuraffinityRequests._useHttps = value;
if (value) FuraffinityRequests._httpsString = "https://"; else FuraffinityRequests._httpsString = "http://";
}
}
static get useHttps() {
return FuraffinityRequests._useHttps;
}
static get fullUrl() {
return FuraffinityRequests._httpsString + FuraffinityRequests._domain;
}
static getHTML(url_1, semaphore_1, action_1) {
return FuraffinityRequests_awaiter(this, arguments, void 0, (function*(url, semaphore, action, delay = 100) {
if (null != url && "" !== url) return yield WaitAndCallAction.callFunctionAsync(getHTMLLocal, [ url, semaphore ], action, delay); else Logger.logError("No url given");
}));
}
static postHTML(url_1, payload_1, semaphore_1, action_1) {
return FuraffinityRequests_awaiter(this, arguments, void 0, (function*(url, payload, semaphore, action, delay = 100) {
if (null != url && "" !== url) return yield WaitAndCallAction.callFunctionAsync(postHTMLLocal, [ url, payload, semaphore ], action, delay); else Logger.logError("No url given");
}));
}
}
FuraffinityRequests.logLevel = 1;
FuraffinityRequests.Types = {
BrowseOptions,
SearchOptions
};
FuraffinityRequests._useHttps = true;
FuraffinityRequests._httpsString = "https://";
FuraffinityRequests._domain = "www.furaffinity.net";
function getHTMLLocal(url, semaphore) {
return FuraffinityRequests_awaiter(this, void 0, void 0, (function*() {
Logger.logInfo(`Requesting '${url}'`);
const semaphoreActive = null != semaphore && semaphore.maxConcurrency > 0;
if (semaphoreActive) yield semaphore.acquire();
try {
const response = yield fetch(url), html = yield response.text(), parser = new DOMParser;
return parser.parseFromString(html, "text/html");
} catch (error) {
Logger.logError(error);
} finally {
if (semaphoreActive) semaphore.release();
}
}));
}
function postHTMLLocal(url, payload, semaphore) {
return FuraffinityRequests_awaiter(this, void 0, void 0, (function*() {
const semaphoreActive = null != semaphore && semaphore.maxConcurrency > 0;
if (semaphoreActive) yield semaphore.acquire();
try {
const response = yield fetch(url, {
method: "POST",
body: new URLSearchParams(payload).toString(),
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
});
if (!response.ok) {
Logger.logError(`HTTP error! Status: ${response.status}`);
return;
}
const responseData = yield response.text();
try {
const parser = new DOMParser;
return parser.parseFromString(responseData, "text/html");
} catch (_a) {
Logger.logError(`Failed to parse response data as HTML: ${responseData}`);
}
} catch (error) {
Logger.logError(error);
} finally {
if (semaphoreActive) semaphore.release();
}
}));
}
Object.defineProperties(window, {
FARequestHelper: {
get: () => FuraffinityRequests
}
});
})();